差额加权轮询仲裁方法和仲裁装置与流程

文档序号:35918591发布日期:2023-11-03 22:35阅读:53来源:国知局
差额加权轮询仲裁方法和仲裁装置与流程

本技术涉及层次化存储,特别是涉及一种差额加权轮询仲裁方法和仲裁装置。


背景技术:

1、现有层次化存储中,常使用ahb总线对存储器进行访问。ahb是一种总线协议,该协议是高级微控制器总线架构中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线,满足高性能和复杂的soc(system-on-chip)设计的需求。

2、ahb总线一般采用多主多从的拓扑结构。即同一个主机能分时向不同的从机发送数据;或是同一个从机能分时接收来自不同主机的数据。然而,当多个主机申请向同一个从机发送数据时,就会涉及到ahb总线对主机的授权仲裁问题,对于相同或不同优先级的多个主机,ahb总线若不能合理分配权限,易造成某路主机堵塞、降低系统传输效率等问题。因此,保证对各主机请求权限的合理分配,是突破soc性能瓶颈的重要组成部分。

3、仲裁机制的基本原理是根据各个主机的请求信号,按照某种仲裁原则,产生选通信号,使得对应的主机能分时与从机进行数据交互。仲裁算法通常有:固定优先级仲裁器,轮询优先级仲裁器。

4、(1)固定优先级仲裁器,在该仲裁方法中每个处理器访问共享资源的优先级是固定的,传输任务较重的主设备优先级相对较高,如果几个主设备同时申请总线使用权,优先级最高的设备将得到授权。这种仲裁算法的优点是设计简单,面积消耗小。但因为最高优先级的主设备发出申请后,总是能获得授权,而其他优先级较低的设备,一直不能获得授权。如果高优先级的主设备频繁发出请求,低优先级的主设备等待时间过长而未能获得授权造成“饥饿”现象。

5、(2)轮询仲裁器中,各主设备的优先级并不是固定的,而是按顺序轮换的。该算法与时分复用结合,可以演化为基于时间片的轮询仲裁算法。比如有a、b、c三个主机,刚开始时,a对应于0优先级,b对应于1优先级,c对应于2优先级。0表优先级最高,2表优先级最低。

6、1)第一个轮询时钟周期时,因为a对应于0,所以a获得授权。当a获到授权完毕后,a对应于2,b对应于0,c对应于1。

7、2)第二个轮询时钟周期时,因为b对应于0,所以b获得授权。当b获到授权完毕后,b对应于2,c对应于0,a对应于1。

8、3)第三个轮询时钟周期时,因为c对应于0,所以c获得授权。当c获到授权完毕后,c对应于2,a对应于0,b对应于1。

9、a、b、c优先级顺序由上面的规律不断往复。该算法与时分复用结合,可以演化为基于时间片的轮询仲裁算器。轮询仲裁器的主要缺点在于该算法下每个主设备的获得授权的概率是等同的,但未规定获得授权后,主机能发送的字节数量。比如,一旦a主机获得授权后,若其发送的字节数量很大,同样会使其他主机处于长时间的等待的“饥饿”状态。


技术实现思路

1、基于此,有必要针对上述技术问题,提供一种差额加权轮询仲裁方法和仲裁装置。

2、一种差额加权轮询仲裁方法,所述方法包括:

3、根据总线授权申请量req0向差额加权仲裁器发出仲裁申请,被所述差额加权仲裁器时钟采样一拍缓存得到总线授权申请量req1;所述总线授权申请量req0是由多个主机的总线授权申请位拼接得到的。

4、将所述总线授权申请量req0和所述总线授权申请量req1进行异或,得到授权申请变化量。

5、根据所述授权申请变化量每位的值、对应主机的总线授权申请位以及对应主机的配额,调整对应主机下一次的余额;所述配额是指主机可以发送的长期平均字节数;所述余额用于表示配额的累积和消耗情况。

6、根据所述总线授权申请量req1、循环指针以及每个主机的余额、发送额和配额,对所有主机进行轮询仲裁,并对主机下一次的余额进行调整。

7、在其中一个实施例中,根据所述授权申请变化量每位的值、对应主机的总线授权申请位以及对应主机的配额,调整对应主机下一次的余额,包括:

8、判断所述授权申请变化量第i位的值等于1是否成立;其中i为大于等于0,小于主机数量的整数。

9、如果成立时,则判断总线授权申请量req0的第i位的值是否等于1,如果不等于1,则将该主机下一次的余额归0;如果等于1,则将该主机下一次的余额更新为当前余额和对应配额之和。

10、如果不成立,则判断总线授权申请量req0的第i位的值是否等于1,如果不等于1,则将该主机的余额继续保持为0;如果等于1,则在完成一轮仲裁、或所有主机的余额为0,或所有主机的余额小于对应的发送额时,将主机下一次的余额更新为该主机的当前余额和对应配额之和。

11、在其中一个实施例中,根据所述总线授权申请量req1、循环指针以及每个主机的余额、发送额和配额,对所有主机进行轮询仲裁,并对主机下一次的余额进行调整,包括:

12、设置循环指针初始置为0。

13、将所述总线授权申请量req1右移循环指针个bit位,得到右移后的授权申请量。

14、判断右移后的授权申请量的第0位是否为1,且同时判断该主机此时的余额大于其对应的发送额是否成立,如果同时成立,则该主机获得总线授权;否则,该主机没有获得总线授权,将循环指针加1,遍历所有主机的余额等于0是否均成立,或是所有主机的当前余额小于对应发送额是否均成立,如果两者有一个成立,并且在该主机的总线授权申请位没有发生变化,同时该主机的总线授权申请位为1时,将主机下一次的余额更新为该主机的当前余额和对应配额之和。

15、当该主机获得授权时,则发送与发送额对应的数据量后,反馈并使总线授权申请量req0的更新有效,同时将该主机下一次的余额更新为当前余额与发送额之差;继续对下一个主机进行差额加权轮询仲裁,直到遍历完所有的主机为止,完成一轮仲裁,当该主机的总线授权申请位没有发生变化,并且该主机的总线授权申请位为1时,将主机下一次的余额更新为该主机的当前余额和对应配额之和;完成一轮仲裁时,将循环指针置0。

16、一种差额加权轮询仲裁装置,所述仲裁装置包括:

17、仲裁申请模块,用于根据总线授权申请量req0向差额加权仲裁器发出仲裁申请,被所述差额加权仲裁器时钟采样一拍缓存得到总线授权申请量req1;所述总线授权申请量req0是由多个主机的总线授权申请位拼接得到的。

18、差额加权轮询仲裁模块,用于将所述总线授权申请量req0和所述总线授权申请量req1进行异或,得到授权申请变化量;根据所述授权申请变化量每位的值、对应主机的总线授权申请位以及对应主机的配额,调整对应主机下一次的余额;所述配额是指主机可以发送的长期平均字节数;所述余额用于表示配额的累积和消耗情况;根据所述总线授权申请量req1、循环指针以及每个主机的余额、发送额和配额,对所有主机进行轮询仲裁,并对主机下一次的余额进行调整。

19、在其中一个实施例中,差额加权轮询仲裁模块,还用于判断所述授权申请变化量第i位的值等于1是否成立;其中i为大于等于0,且小于主机数量的整数;如果成立时,则判断总线授权申请量req0的第i位的值是否等于1,如果不等于1,则将该主机下一次的余额归0;如果等于1,则将该主机下一次的余额更新为当前余额和对应配额之和;如果不成立,则判断总线授权申请量req0的第i位的值是否等于1,如果不等于1,则将该主机的余额继续保持为0;如果等于1,则在完成一轮仲裁、或所有主机的余额为0,或所有主机的余额小于对应的发送额时,将主机下一次的余额更新为该主机的当前余额和对应配额之和。

20、在其中一个实施例中,差额加权轮询仲裁模块,还用于设置循环指针初始置为0;将所述总线授权申请量req1右移循环指针个bit位,得到右移后的授权申请量;判断右移后的授权申请量的第0位是否为1,且同时判断该主机此时的余额大于其对应的发送额是否成立,如果同时成立,则该主机获得总线授权;否则,该主机没有获得总线授权,将循环指针加1,遍历所有主机的余额等于0是否均成立,或是所有主机的当前余额小于对应发送额是否均成立,如果两者有一个成立,并且在该主机的总线授权申请位没有发生变化,同时该主机的总线授权申请位为1时,将主机下一次的余额更新为该主机的当前余额和对应配额之和;当该主机获得授权时,则发送与发送额对应的数据量后,反馈并使总线授权申请量req0的更新有效,同时将该主机下一次的余额更新为当前余额与发送额之差;继续对下一个主机进行差额加权轮询仲裁,直到遍历完所有的主机为止,完成一轮仲裁,当该主机的总线授权申请位没有发生变化,并且该主机的总线授权申请位为1时,将主机下一次的余额更新为该主机的当前余额和对应配额之和。完成一轮仲裁时,将循环指针置0。

21、上述差额加权轮询仲裁方法和仲裁装置,所述方法中每个主机可根据自身数据量的大小,实时调整自身配额的大小,以及每次获得总线授权的可发送数据量的大小,能够控制授权主机每次发送数据的长度,从而调整每个主机可占用总线的时间片大小,以求达到最优分配。采用本方法解决了常规轮询仲裁器因某一主机长时间发送数据而导致的其他主机的长时间等待问题,克服了其它主机长期处于“阻塞”或是“饥饿”的情况。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1