Hardware Reference
In-Depth Information
3.2
The Reverse Connection: Splitting One Source
to Many Receivers
The opposite connection of one-to-many (splitting), i.e., distributing a result from
the output to the appropriate input is simpler than the many to one connection
(merging) described in the previous paragraphs. Once a new flit arrives at the
output it should know the input to which it should be distributed. Then transferring
the incoming flit is just a matter of flow control; to guarantee that the receiving
input buffer has at least one position available. From all ready signals of the input
receiving buffers only one is selected based on the destination id of the incoming flit.
Once the selected signal is asserted a transfer occurs between the transmitting buffer
at the output and the receiving buffer at the corresponding input. The organization
of this split connection is shown in Fig. 3.6 .
Please note that the receiving buffers at the input shown in Fig. 3.6 and the
transmitting buffer at the output are different from the buffers shown in Fig. 3.2 ,
which play the opposite role, e.g., the input buffers transmit new flits while the
output buffer receives new flits.
In this splitting connection there is no obligation to send complete packets un-
interrupted and flits from different packets can be interleaved at the output of the
transmitting buffer, provided that they return to a different input. Additionally, when
an input is not ready to receive new returning flits, there is no need for the rest inputs
to remain idle. Allowing the output to distribute flits to the available inputs requires
splitting the transmitting buffers to multiple ones; one per destination and adding
the appropriate arbitration and multiplexing logic. In this case, the flits that move to
different inputs cannot block each other, thus allowing maximum freedom in terms
of distributing incoming flits to their destined inputs.
a
b
Inputs
Output
Inputs
Output
#
#
dst ID
dst ID
ready
ready
ready
#1
#1
data/valid
data/valid
data/valid
#2
#2
Fig. 3.6 ( a ) Splitting flits to multiple receivers requires only checking the buffer availability at the
receiver's side. ( b ) Per-destination buffers remove any flow-control dependency across different
receivers
 
Search WWH ::




Custom Search