2022-08-22 15:59:00
轮询调度(Round Robin)是一种保证所有请求者(requestor)获得平等优先级的调度算法。
一、定义与原理轮询调度在实际优先级仲裁模块中应用广泛。与固定优先级的仲裁算法不同,轮询仲裁考虑到了公平性,确保所有的请求者可以获得平等的访问机会。其原理是,当一个请求者得到了许可(grant)之后,它的优先级在接下来的仲裁周期中就会变为最低。这样,每个请求者的优先级不是固定的,而是会根据其是否被许可而动态调整。当一个请求者获得许可后,它的优先级会降至最低,而其他请求者的优先级会相应提升,从而确保在下一个仲裁周期中,其他请求者有机会获得许可。
二、工作机制优先级动态调整:
在轮询调度中,每个请求者的优先级会根据其是否被许可而动态变化。
当一个请求者获得许可后,它的优先级会降至最低,以确保其他请求者有机会获得许可。
许可分配:
在每个仲裁周期中,根据当前的优先级和请求情况,轮询调度算法会依次给每个请求者分配许可。
即使之前高优先级的请求者再次有新的请求,也会等待前面的请求者都获得许可之后再轮到它。
公平性保证:
轮询调度算法通过动态调整优先级和依次分配许可,确保了所有请求者都能获得平等的访问机会。
这样,当有多个请求者同时访问时,不会出现某个请求者被连续许可的情况,而是这些请求者在后续几个仲裁周期中都会依次获得许可。
以4个请求者(req[3:0])为例,假设初始状态下req[0]的优先级最高,req[1]其次,req[3]最低。下面通过表格来展示轮询调度的工作过程:
| Cycle | Req[3:0] | RR Priority | RR Grant[3:0] | Fixed Grant || --- | --- | --- | --- | --- || 0 | 0101 | 3210 | 0001 | 0001 || 1 | 0100 | 2103 | 0010 | 0001 || 2 | 0011 | 0321 | 0100 | 0010 || 3 | 0010 | 2103 | 0010 | 0100 || 4 | 1000 | 1032 | 1000 | 0001 |
轮询调度算法通过动态调整优先级和依次分配许可,确保了所有请求者都能获得平等的访问机会。这种算法在实际应用中具有广泛的适用性,特别是在需要保证公平性的场景中。通过轮询调度算法,可以避免某个请求者被连续许可的情况,从而提高了系统的整体性能和公平性。