Iterative Round-Robin with SLIP i SLIP

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