Page 1 of 1

NOC buffer size

PostPosted: Fri Aug 21, 2015 9:57 am
by m_labbaf
As I know each eMesh node has 5 connection(south, north, east, west and eCore) and router uses round-robin method to handle it.
I want to know how buffer size implemented in router, in order to handle traffic congestion? Is it probable that transferred data doesn't receive in receiver node, because as I know write procedure is based on fire and forget. How this problem solved in chip? How much buffer size used in each router?

thanks

Re: NOC buffer size

PostPosted: Mon Aug 24, 2015 3:41 pm
by sebraa
Writing itself is fire-and-forget, but if the channel is busy, then the writing will stall. So there is no loss.
I think the router buffers one token.

Re: NOC buffer size

PostPosted: Tue Sep 01, 2015 4:58 pm
by m_labbaf
As you say write action is fire and forget, so in order to synchronize core I use a flag which set after sending datas. It means:
Sender core:
1-send data
2-set the flag
receiver core:
1-wait for flag to set
2-reset flag
3-read data

But in my code which use 4 core, the process locked.
how I can fix this problem?

Re: NOC buffer size

PostPosted: Tue Sep 01, 2015 8:46 pm
by sebraa
How do you know that the process is blocking?

Re: NOC buffer size

PostPosted: Wed Sep 02, 2015 5:30 am
by m_labbaf
Because the process is halted (I use barrier) and I have a done flag that read from host(ARM) that doesn't set in device.

Re: NOC buffer size

PostPosted: Wed Sep 02, 2015 1:44 pm
by sebraa
Your description looks good. If it locks up, that sounds like a bug in your implementation, which I can't comment on.
Usually, "blocking" means that something waits until it finishes (so that e.g. the write may be delayed), which is not the same thing as something getting stuck (e.g. the write never finishes). This was confusing me a bit.

Re: NOC buffer size

PostPosted: Wed Sep 02, 2015 5:09 pm
by m_labbaf
I change the communication buffer from pointer with address that I set (e.g. 0x6000) to array and everything is good now, but I don't know why problem exist(with pointer)!
also when I using memcpy function problem appeared!
and I don't know why!