Networks on Chips: Technology and Tools

The flow control mechanism in an NoC prevents buffers from overflowing and is an essential part of the NI back-end. In general, buffer overflow can occur both at the network switches and at the destination NIs. Therefore, in buffered switching, link-level flow control determines the way the downstream switch communicates buffer availability to the upstream switch. In turn, end-to-end flow control mechanisms ensure that a message producer node does not produce more messages than the consumer node can handle. Traditional flow control techniques are on off, ACK/NACK, and credit-based [52].
Link-level flow control can be used to automatically prevent buffer overflow also at the destination node. In fact, the last switch in the routing path exchanges with the destination NI just those flits (or packets, depending on the switching technique) that can be stored in the downstream buffer. The NI is viewed just as another flow control stage in the packet delivery path. This technique ensures that even when the destination buffer is full, the remaining flits can be propagated across the network so to fill up the switch buffers. This distributed buffering strategy can significantly reduce flit delivery latency, since flits are stored as close to the destination as possible. Unfortunately, when the destination node is slow in absorbing flits, a macro-pipeline of outstanding flits ends up being stalled across the network, causing congestion and deadlock concerns. Virtual channels can be used as a workaround for this problem.
However, the latest NoC design experiences suggest that...