Hardware Reference
In-Depth Information
Fig. 7.2 The request
generation and grant handling
logic regarding the process of
VC allocation. Each input VC
is responsible for sending
new requests to the VC
allocator that matches input
to output VCs according to
output VC availability and the
state of the requesting input
VCs
outVCAvailable
VA
"0...00"
0
candidateOutVC
1
en
outVC[i]
head
outVCLock[i]
ready
valid
data
the appropriate requests to the VC allocator. Each input VC i sends to the VC
allocator a set of candidate output VCs candidateOutVC Œi (V bits). If the packet is
not allowed to change VC while traversing the network from source to destination,
then candidateOutVC Œi D i . If there is no restriction on the selection of the output
VC then candidateOutVC Œi vector may have several bits asserted, even all V of
them, meaning that it is requesting any available output VC.
The VC allocator should find a match between requesting input VCs ( reqVC Œi )
and the available output VCs. By merging the reqVC vectors produced by all input
VCs, we can represent the requests given to the VC allocator in a matrix of N
V rows and V columns. When reqVC Œi Œj D 1 means that the i th input VC is
requesting output VC j .Thei th input VC belongs to the kth input where k D
i V . The example of Fig. 7.3 shows the output VC requests for a 2-input switching
module that hosts three VCs per physical channel. A valid match to the request
matrix should contain at most 1 bit asserted per row and per column, meaning that
an input VC cannot be assigned to more than one available output VC. Likewise,
an available output VC cannot be assigned to more than one input VC. The match
shown in Fig. 7.3 satisfies all required conditions. Please notice that the requests that
correspond to unavailable output VCs are filtered from the allocation process.
The VC allocator returns its decision to all input controllers, where the infor-
mation is organized per input VC, as shown in Fig. 7.2 . Each input VC gets the
selOutVC Œi (V bits in onehot form) which is a subset of the candidateOutVC Œi
and indexes the output VC that the VC allocator selected for the i th input VC.
It also receives a single-bit flag VCgranted Œi , that when asserted informs the i th
input VC that the match with output VC selOutVC Œi was indeed successful. In
this case, outVC Œi
selOutVC Œi for use by the rest flits of the packet, while
outVCLock Œi variable is set to 1. Both variables will be reset once a tail flit is
dequeued. If VCgranted Œi D 0,thei th input VC has not received an output VC
 
Search WWH ::




Custom Search