INPUT-BUFFERED SWITCHES
60
Figure 3.7 shows how PIM works. Under uniform traffic, PIM achieves 63 and 100 throughput for 1 and N iterations, respectively.
3.3.2 Iterative Round-Robin Matching iRRM
w x
The iRRM scheme 23 works similarly to PIM, but uses the round-robin schedulers instead of random selection at both inputs and outputs. Each
arbiter maintains a pointer pointing at the port that has the highest priority. Such a pointer is called the accept pointer a at input i or the grant pointer g
i j
at output j. The algorithm is run as follows: 1. Each unmatched input
3
sends a request to every output for which it has a queued cell.
2. If an unmatched output receives any requests, it chooses the one that appears next in a round-robin schedule, starting from the highest-prior-
ity element. The output notifies each input whether or not its request Ž
. was granted. The pointer g is incremented modulo N to one location
i
beyond the granted input. 3. If an input receives a multiple grant, it accepts the one that appears
next in its round-robin schedule, starting from the highest-priority Ž
. element. Similarly, the pointer a is incremented modulo N to one
j
location beyond the accepted output. An example is shown in Figure 3.8. In this example, we assume that the
Ž .
initial value of each grant pointer is input 1 e.g., g s 1 . Similarly, each
i
Ž .
accept pointer is initially pointing to output 1 e.g., a s 1 . During step 1,
j
the inputs request transmission to all outputs that they have a cell destined for. In step 2, among all received requests, each grant arbiter selects the
requesting input that is nearest to the one currently pointed to. Output 1 chooses input 1, output 2 chooses input 1, output 3 has no requests, and
output 4 chooses input 3. Then, each grant pointer moves one position beyond the selected one. In this case, g s 2, g s 2, g s 1, and g s 4. In
1 2
3 4
step 3, each accept pointer decides which grant is accepted, as the grant pointers did. In this example, input 1 accepts output 1, and input 3 accepts
output 4, then a s 2, a s 1, a s 1, and a s 1. Notice that the pointer a
1 2
3 4
3
accepted the grant issued by output 4, so the pointer returns to position 1.
3.3.3 Iterative Round-Robin with SLIP i SLIP
Ž .
w x
An enhanced scheme iSLIP was presented in 24, 25 . The difference is that in this scheme, the grant pointers update their positions only if their grants
are accepted. In this scheme, starvation is avoided because a recently matched pair gets the lowest priority. The steps for this scheme are as
3
At the beginning each input is unmatched.
SCHEDULING ALGORITHMS
61
Fig. 3.9 iSLIP example.
INPUT-BUFFERED SWITCHES
62
follows: 1. Each unmatched input sends a request to every output for which it has
a queued cell. 2. If an unmatched output receives multiple requests, it chooses the one
that appears next in a fixed, round-robin schedule starting from the highest-priority element. The output notifies each input whether or not
its request was granted. 3. If an input receives multiple grants, it accepts the one that appears
next in a fixed round-robin schedule starting from the highest-priority Ž
. element. The pointer a is incremented modulo N to one location
j
beyond the accepted output. The accept pointers a are updated only in
i
the first iteration. Ž
. 4. The grant pointer g is incremented modulo N
to one location
i
beyond the granted input if and only if the grant is accepted in step 3 of the first iteration. Like the accept pointers, the pointers g are updated
i
only in the first iteration. Because of the round-robin moving of the pointers, we expect the algo-
rithm to provide a fair allocation of bandwidth among all flows. This scheme contains 2 N arbiters, each of which is implementable with low complexity.
The throughput offered with this algorithm is 100 for any number of Ž
. iterations, due to the desynchronization effect see Section 3.3.4 . A matching
example of this scheme is shown in Figure 3.9. Considering the example from the iRRM discussion, initially all pointers a and g are set to 1. In step 2 of
j i
iSLIP, the output accepts the request that is closer to the pointed input in a clockwise direction; however, in a manner different from iRRM, the pointers
g are not updated in this step. They wait for the acceptance result. In step 3,
i
the inputs accept the grant that is closer to the one pointed to by a . The
i
accept pointers change to one position beyond the accepted one, a s 2,
1
a s 1, a s 1, and a s 1. Then, after the accept pointers decide which
2 3
4
grant is accepted, the grant pointers change to one position beyond the Ž
accepted grant i.e., a nonaccepted grant produces no change in a grant .
pointer position . The new values for these pointers are g s 2, g s 1,
1 2
g s 4 and g s 1. In the following iterations, only the unmatched input and
3 4
Ž outputs are considered and the pointers are not modified i.e., updating
. occurs in the first iteration only .
3.3.4 Dual Round-Robin Matching DRRM