Hardware Reference
In-Depth Information
7.1.4
Gathering Grants and Moving to the Output
Each input VC receives a vector of wires from the switch allocator called
inputGrantSA .When inputGrantSA Œi D 1 it means that the i th input VC has
been granted to move in this cycle to the output port. The flit from the selected input
VC is dequeued and transferred to the data output of the input controller and from
there to the output multiplexers.
In the most generic configuration, the input VCs are allowed to change VC in
flight, i.e., when moving from input to output. Thus, the id of the input VC buffer
that currently holds the outgoing flit may be different from the id of the output
VC buffer that has been allocated to this packet. In this case, the departing flit,
while moving to the output, should also change accordingly the VCid field that
carries with it. The new VCid is needed at the output of the switching module for
consuming the credit from the appropriate credit counter as well as at the output VC
buffers for ensuring that the flit will be written to the correct buffer. The new VCid
of the outgoing flit is equal to outVC Πsel where sel is the input VC that won switch
allocation, i.e., inputGrantSA Πsel D 1. Finally, keep in mind that when a tail flit
is leaving the i th input VC, it de-allocates all resources reserved per packet at the
input controller, by resetting both outVCLock Œi and outVC Œi variables.
The per-input and the output multiplexer of the switching module are driven by
the switch allocator and manage to carry the winning flit from the selected input VC
to the output. When the flit passes the output of the switching module it decrements
the credit counter of the new VC and in the next cycle it is forwarded to the link.
Since credit availability has been checked before switch allocation, the flit that
arrives at the output will always leave in the next cycle and cannot stop there. In the
case that the outgoing flit is a tail one, the output should also reset the corresponding
outVCAvailable .
In the place of the output pipeline register one could have used complete VC
buffers. In that case, the credits and the status of the output VCs would refer to these
local output VC buffers and not to the VC buffers at other side of the output link.
This configuration does not change the design of the VC-based switching module;
the only changes involve the credit-based flow control mechanism and to which
buffers it refers to.
7.1.5
The Internal Organization of the VC Allocator
for a Many-to-One Connection
The VC allocator receives the output VC requests of all input VCs and tries to find
a one-to-one matching between requesting input VCs and available output VCs. In
the most general case, each input VC may have many candidate output VCs, some
of which may refer to already allocated ones. Therefore, masking the requests with
Search WWH ::




Custom Search