优先级动态调整的差额加权轮询仲裁方法和仲裁器技术

技术编号:39297831 阅读:7 留言:0更新日期:2023-11-07 11:05
本申请涉及一种优先级动态调整的差额加权轮询仲裁方法和仲裁器。所述方法根据每个主机的固定优先级编码经主机进行分组,通过编码分组器和第一级的固定优先级仲裁器,能够动态地调整主机的优先级顺序。通过第二级的差额加权轮询,能够控制授权主机每次发送数据的长度,即控制了该主机占用总线的时间片大小。采用本方法解决了常规轮询仲裁器因某一主机长时间发送数据而导致的其他主机的长时间等待问题。问题。问题。

【技术实现步骤摘要】
优先级动态调整的差额加权轮询仲裁方法和仲裁器


[0001]本申请涉及分布式存储
,特别是涉及一种优先级动态调整的差额加权轮询仲裁方法和仲裁器。

技术介绍

[0002]现有层次化存储中,常使用AHB总线对存储器进行访问。AHB是一种总线协议,该协议是高级微控制器总线架构中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线,满足高性能和复杂的SoC(System on Chip)设计的需求。
[0003]AHB总线一般采用多主多从的拓扑结构。即同一个主机能分时向不同的从机发送数据;或是同一个从机能分时接收来自不同主机的数据。然而,如图1所示,当多个主机申请向同一个从机发送数据时,就会涉及总线对主机的授权仲裁问题,对于相同或不同优先级的多个主机,若不能合理分配权限,易造成某路主机堵塞、降低系统传输效率等问题。因此,保证对各主机请求权限的合理分配,是突破SoC性能瓶颈的重要组成部分。
[0004]仲裁机制的基本原理是根据各个主机的请求信号,按照某种仲裁原则,产生选通信号,使得对应的主机能分时与从机进行数据交互。仲裁算法通常有:固定优先级仲裁器,轮询优先级仲裁器。
[0005](1)固定优先级仲裁器,在该仲裁方法中每个处理器访问共享资源的优先级是固定的,传输任务较重的主设备优先级相对较高,如果几个主设备同时申请总线使用权,优先级最高的设备将得到授权。这种仲裁算法的优点是设计简单,面积消耗小。但因为最高优先级的主设备发出申请后,总是能获得授权,而其他优先级较低的设备,一直不能获得授权。如果高优先级的主设备频繁发出请求,低优先级的主设备等待时间过长而未能获得授权造成“饥饿”现象。
[0006](2)轮询仲裁器中,各主设备的优先级并不是固定的,而是按顺序轮换的。该算法与时分复用结合,可以演化为基于时间片的轮询仲裁算法。比如有A、B、C三个主机,刚开始时,A对应于0优先级,B对应于1优先级,C对应于2优先级。0表优先级最高,2表优先级最低。
[0007]1)第一个轮询时钟周期时,因为A对应于0,所以A获得授权。当A获到授权完毕后,A对应于2,B对应于0,C对应于1.
[0008]2)第二个轮询时钟周期时,因为B对应于0,所以B获得授权。当B获到授权完毕后,B对应于2,C对应于0,A对应于1.
[0009]3)第三个轮询时钟周期时,因为C对应于0,所以C获得授权。当C获到授权完毕后,C对应于2,A对应于0,B对应于1.
[0010]A、B、C优先级顺序由上面的规律不断往复。该算法与时分复用结合,可以演化为基于时间片的轮询仲裁算器。轮询仲裁器的主要缺点在于该算法下每个主设备的获得授权的概率是等同的,但未规定获得授权后,主机能发送的字节数量。比如,一旦A主机获得授权后,若其发送的字节数量很大,同样会使其他主机处于长时间的等待的“饥饿”状态。
[0011](3)在一般的固定优先级仲裁器中,主机的优先级编码一旦固定,就不能再更改。
在一般的差额轮询仲裁器中,每个主机都是顺次获得授权后,再发送一定大小的字节数,无法更改主机授权的顺序。
[0012]综上,现有的仲裁算法还存在比较多的不足,在轮询过程中,无法实现对主机的优先级进行动态的更改,对想要提前进行仲裁,并授权的主机无法进行操作,而使该主机处于长时间的等待状态。

技术实现思路

[0013]基于此,有必要针对上述技术问题,提供一种优先级动态调整的差额加权轮询仲裁方法和仲裁器。
[0014]一种优先级动态调整的差额加权轮询仲裁方法,所述方法包括:
[0015]接收若干个主机的请求,所述请求包括轮询仲裁申请位和固定优先级编码;
[0016]将具有相同的所述固定优先级编码的主机分为一组,得到若干个主机组;所述主机组的优先级编码由组内主机的所述固定优先级编码确定。
[0017]根据每个主机组中所有主机的轮询仲裁申请位,确定每个主机组的仲裁申请变量;设置仲裁申请变量掩码初始值的每位都为1。
[0018]根据每个主机组的所述仲裁申请变量和所述仲裁申请变量掩码,确定授权分组。
[0019]如果有授权分组时,同时接收授权分组中每个主机的配额和发送额,并根据每个主机的所述发送额和所述配额确定每个主机的余额;所述配额是主机可以发送的长期平均字节数;所述发送额是指每次授权后主机可发送的字节数量;所述余额用于表示所述配额的积累和消耗情况。
[0020]根据所述授权分组中每个主机的所述轮询仲裁申请位、所述配额、所述发送额以及所述余额进行差额加权轮询仲裁,直到当前轮差额加权轮询仲裁结束为止,将所述仲裁申请变量掩码的每位都置为0,在一个时钟周期以后所述仲裁申请变量掩码所有位自动置为1,继续确定下一个授权分组,并对下一个授权分组的主机进行差额加权轮询仲裁。
[0021]在其中一个实施例中,所述方法还包括:主机组中的主机通过发送请求来改变其固定优先级编码的步骤;该步骤具体包括:
[0022]同时判断请求改变固定优先级编码的m主机所在X1主机组和变化后的固定优先级编码对应的X2主机组是否处于空闲状态。
[0023]若X1主机组和X2主机组至少有1个不处于空闲状态时,则等待不处于空闲状态的X1主机组和/或X2主机组为空闲状态。
[0024]当X1主机组和X2主机组同时处于空闲状态时,则更改m主机的固定优先级的命令生效,将m主机重新分组到X2主机组。
[0025]在其中一个实施例中,根据每个主机组的所述仲裁申请变量和所述仲裁申请变量掩码,确定授权分组,包括:
[0026]将第一个主机组的所述仲裁申请变量和所述仲裁申请变量掩码进行按位与,如果得到的结果不为0,则将第一个主机组作为授权分组。
[0027]如果得到的结果为0,则继续根据第二个主机组的所述仲裁申请变量和所述仲裁申请变量掩码按位与的结果进行判断,直到最后一个主机组,如果最后一个主机组的所述仲裁申请变量和所述仲裁申请变量掩码按位与后结果仍为0,则第一级固定优先级仲裁器,
第二级差额加权轮询仲裁器处于空闲状态。
[0028]在其中一个实施例中,主机的所述请求由3个bit位构成,第0bit位是轮询仲裁申请位,第1bit位和第2bit位是固定优先级编码。
[0029]根据每个主机组中所有主机的轮询仲裁申请位,确定每个主机组的仲裁申请变量,包括:
[0030]将每个主机组中所有主机的所述请求的第0bit位进行拼接,得到每个主机组的仲裁申请变量。
[0031]在其中一个实施例中,根据所述授权分组中每个主机的所述轮询仲裁申请位、所述配额、所述发送额以及所述余额进行差额加权轮询仲裁,包括:
[0032]判断所述授权分组的第一个主机的所述轮询仲裁申请位等于1,第一个主机对应的余额大于发送额是否同时成立。
[0033]如果同时成立,则所述授权分组的第一个主机获得授权,所述授权分组的第一个主机发送数据,直到所述授权分组的第一个主机发送完数据为止,将所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种优先级动态调整的差额加权轮询仲裁方法,其特征在于,所述方法包括:接收若干个主机的请求,所述请求包括轮询仲裁申请位和固定优先级编码;将具有相同的所述固定优先级编码的主机分为一组,得到若干个主机组;所述主机组的优先级编码由组内主机的所述固定优先级编码确定;根据每个主机组中所有主机的轮询仲裁申请位,确定每个主机组的仲裁申请变量;设置仲裁申请变量掩码初始值的每位都为1;根据每个主机组的所述仲裁申请变量和所述仲裁申请变量掩码,确定授权分组;如果有授权分组时,同时接收授权分组中每个主机的配额和发送额,并根据每个主机的所述发送额和所述配额确定每个主机的余额;所述配额是主机可以发送的长期平均字节数;所述发送额是指每次授权后主机可发送的字节数量;所述余额用于表示所述配额的积累和消耗情况;根据所述授权分组中每个主机的所述轮询仲裁申请位、所述配额、所述发送额以及所述余额进行差额加权轮询仲裁,直到当前授权分组的差额加权轮询仲裁结束为止,将所述仲裁申请变量掩码的每位都置为0,在一个时钟周期以后所述仲裁申请变量掩码所有位自动置为1,继续确定下一个授权分组,并对下一个授权分组的主机进行差额加权轮询仲裁。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:主机组中的主机通过发送请求来改变其固定优先级编码的步骤;该步骤具体包括:同时判断请求改变固定优先级编码的m主机所在X1主机组和变化后的固定优先级编码对应的X2主机组是否处于空闲状态;若X1主机组和X2主机组至少有1个不处于空闲状态时,则等待不处于空闲状态的X1主机组和/或X2主机组为空闲状态;当X1主机组和X2主机组同时处于空闲状态时,则更改m主机的固定优先级的命令生效,将m主机重新分组到X2主机组。3.根据权利要求1所述的方法,其特征在于,根据每个主机组的所述仲裁申请变量和所述仲裁申请变量掩码,确定授权分组,包括:将第一个主机组的所述仲裁申请变量和所述仲裁申请变量掩码进行按位与,如果得到的结果不为0,则将第一个主机组作为授权分组;如果得到的结果为0,则继续根据第二个主机组的所述仲裁申请变量和所述仲裁申请变量掩码按位与的结果进行判断,直到最后一个主机组,如果最后一个主机组的所述仲裁申请变量和所述仲裁申请变量掩码按位与后结果仍为0,则第一级固定优先级仲裁器,第二级差额加权轮询仲裁器处于空闲状态。4.根据权利要求1所述的方法,其特征在于,主机的所述请求由3个bit位构成,第0bit位是轮询仲裁申请位,第1bit位和第2bit位是固定优先级编码;根据每个主机组中所有主机的轮询仲裁申请位,确定每个主机组的仲裁申请变量,包括:将每个主机组中所有主机的所述请求的第0bit位进行拼接,得到每个主机组的仲裁申请变量。5.根据权利要求1所述的方法,其特征在于,根据所述授权分组中每个主机的所述轮询仲裁申请位、所述配额、所述发送额以及所述余额进行差额加权轮询仲裁,包括:
判断所述授权分组的第一个主机的所述轮询仲裁申请位等于1,第一个主机对应的余额大于发送额是否同时成立;如果同时成立,则所述授权分组的第一个主机获得授权,所述授权分组的第一个主机发送数据,直到所述授权分组的第一个主机发送完数据为止,将所述授权分组的第一个主机的余额更新为所述授权分组的第一个主机的余额减去所述授权分组的第一个主机的发送额得到的值;对所述授权分组的下一个主机进行授权判断,并根据判断结果进行数据发送处理,直到遍历完所述授权分组的中的所有主机为止,将主机的余额更新为:cre_cnt[i]=cre_cnt[i]+quantum[i],其中,cre_cnt[i]为第i个主机的余额,quantum[i]为第i个主机的配额;将所述仲裁申请变量掩码的各位置0;如果不同时成立,则对所述授权分组的下一个主机进行授权判断,并根据判断结果进行数据发送处理;遍历判断所述授权分组的所有主机的余额等于0是否均成立,或所述授权分组的所有主机的余额小于对应发送额是否均成立,如果有一个成立,则将主机的余额更新为:cre_cnt[i]=cre_cnt[i]+quantum[i]。6...

【专利技术属性】
技术研发人员:詹贵阳刘功哲冯华熊民权马华李焱明
申请(专利权)人:上海芯钛信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1