Hardware Reference
In-Depth Information
3.3
Multiple Inputs Connecting to Multiple Outputs
Using a Reduced Switching Datapath
The generalization of link sharing involves multiple outputs at the other side of the
link as shown in the upper left corner of Fig. 3.7 . In this case, each packet should
know in its head flit to which destination it is heading to. The link can host flits
from different sources provided that they move to a different output. Each output
independently from the rest should see the flits of a packet arriving atomically one
after the other from the same input. This limitation can be removed by adopting
virtual channels as it will be shown in later chapters.
Since the switching module serves multiple outputs it holds a different
outAvailable state bit for each output. When outAvailable Œj D 1 it means
that the j th output is free and has not been allocated by any packet. Also, the
switching module receives multiple ready bits; one from each output declaring
buffer availability of the corresponding output. As in the baseline case, we assume
that there is one arbiter and one multiplexer that should switch in a time-multiplexed
manner multiple inputs to multiple outputs.
Each source receives the outAvailable flags from each output and selects the one
that corresponds to the destination stored at the head flit of the packet. The selected
outAvailable flag is masked as in the baseline case of a single output with the valid
signal (not empty) of the buffer of the source. This is only done for the head flits in
order to check if the destined output is available. In parallel each input receives the
ready signals from all outputs and selects the one that corresponds to the selected
output port. Masking the qualified valid signal with the selected ready bit guarantees
Many to Many connection
1 switching module
Inputs
Outputs
outAvailable[0...N-1]
arb
outAvailable[0...N-1]
outPort
ready output[0...N-1]
dst
Switching
module
en
1
head
outAvailable[0..N-1]
1
req
en
arb
MUX
sel
grant
outLock
ready
valid
data
dequeue
from/to other
inputs
Input #0
Fig. 3.7 The organization of a many-to-many connection using only one switching module
including the request generation, the output and input state variables and the distribution of the
necessary flow control signals for supporting N different output ports
Search WWH ::




Custom Search