芯片设计中常用到的调度算法总结

1 SP(Strict Priority, 严格优先级)

SP调度会给各个输入队列分配优先级,当高优先级的队列非空时,优先调度高优先级队列。只有当高优先级队列为空时,才有可能调度低优先级的队列。

2 RR(Round Robin, 轮询)

如何理解轮询?所谓‘轮’,是指RR调度中有一个RR指针,每次调度成功后,RR指针就会移动一下,指向下一个队列,而且这个指针是依次循环的,比如从0,1...一直到N,最后又循环到0。所谓'询',就是指每次调度时去看RR指针指向的队列是否可用,如果可用的话,就调度RR指针指向的队列,如果不可用的话,就看下一个队列是否可用。RR调度在芯片设计中比较常见到,它是一种比较公平的调度算法。举个例子:

如上图所示,有4个队列,假设在第T拍以后都没有新的packet进入队列了。RR调度的过程如下:

第T拍:此时RR指针指向queue_0, queue_0里有packet, 因此queue_0赢得仲裁,p0被调度出来,同时RR指针更新,指向下一个queue,也就是queue_1;

T+1拍:RR指针指向queue_1,但queue_1为空,指针+1后指向queue_2,queue_2有packet,queue_2赢得仲裁,p2被调度出来,指针+1指向queue_3;

T+2拍:queue_3赢得仲裁,p4被调度出来,指针+1指向queue_0;

T+3拍:queue_0赢得仲裁,p1被调度出来,指针+1指向queue_1;

T+4拍:queue_2赢得仲裁,p3被调度出来,指针+1指向queue_3。

3 WRR(Weight Rounf Robin, 带权重的轮询)

WRR是在RR调度的基础上,为各个调度源加入了权重(weight)。各个队列的weight一般都是可配置的,也就是说软件可以较为灵活的分配各个队列的权重。可以认为RR调度是各个队列权重都为1的WRR。WRR中的每个队列都对应有一个weight counter, weight counter在复位以后都被赋予初始值,这个初始值就是软件分配的权重值。一旦某个队列赢得一次仲裁后,其对应的weight counter就减一,当所有队列的weight counter都为0后,所有的weight counter又被赋予初始值。调度流程与RR原理类似,都是基于RR指针的轮询,当RR指针指向某一个队列时,队列赢得仲裁的条件是队列可用(非空)且其对应的weight counter不为0。

 


未完待续……

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值