Hardware Reference
In-Depth Information
credit counter. The credit counters are incremented depending on the update signals
they receive from the output VC buffers.
In wormhole routers, the output of the switching module in a many-to-one
connection, kept an outAvailable variable that denoted if the output has been
allocated to a certain input. The variable was set by the head flits and was locked
for the rest flits of the packet; the tail flit released the availability of the output.
In VC-based routers, each flit fights on its own for gaining access to the output port.
Output locking is avoided and different kinds of flits can be interleaved at the output,
provided that they belong to different output VCs and thus stored in different buffers
at the other end. Such flit interleaving reduces effectively head-of-line blocking and
increases the observed throughput per output.
In the case of VC-based routers, the output lock mechanism used in wormhole
connections is maintained, but at the output VC level. Each packet has to choose a
VC at the output before leaving an input VC. Matching input VCs to output VCs is
done once per packet via the head flit by the VC allocator (VA), while the rest flits
(body and tail) of the same packet inherit the allocated output VC. To support this
ownership mechanism V outVCAvailable flags are maintained at the output of the
switching module, each one corresponding to a different VC of the output. When
outVCAvailable Œi D 1,itmeansthatthei th output VC is available to be allocated
to any input VC (N V input VCs are eligible to connect to this output VC; V VCs
per input). When outVCAvailable Œi D 0, it means that the i th output VC has been
allocated to a packet of a certain input VC and it will be released when the tail flit of
the packet passes through the output of the switching module. Allowing packets to
change VC in-flight can be employed when the routing algorithm and/or the upper-
layer protocol (e.g., cache coherence) do not place any specific restrictions on the
use of VCs. In the presence of VC restrictions, the VC allocator will enforce all
rules during VC allocation to ensure deadlock freedom.
Equivalently, the implementation of this input-output VC ownership mechanism,
requires each input VC to hold two state variables per input VC: outVCLock Œi and
outVC Œi . When the single-bit outVCLock Œi is asserted, the i th input VC has been
matched to an output VC, while the id of the output VC assigned to this input VC
isspecifiedbythevalueof outVC Œi . In the opposite case ( outVCLock Œi D 0), the
i th input VC has not been assigned yet to an output VC and the value of outVC Œi is
irrelevant.
7.1.2
Request Generation for the VC Allocator
Each input is equipped with an input controller that is responsible for the orchestra-
tion of all the intermediate steps needed before a flit from an input VC is transferred
to a certain output VC. The part of the input controller that is responsible for
preparing the requests to the VC allocator and gathering the corresponding grants
is shown in Fig. 7.2 . Once the input controller detects the presence of a head flit
of an input VC with un-assigned output VC ( outVCLock Œi D 0), it should form
Search WWH ::




Custom Search