掌桥专利:专业的专利平台
掌桥专利
首页

适用于比较器的加权轮询仲裁方法、装置、仲裁器和芯片

文献发布时间:2024-01-17 01:27:33


适用于比较器的加权轮询仲裁方法、装置、仲裁器和芯片

技术领域

本申请涉及集成电路技术领域,特别是涉及一种适用于比较器的加权轮询仲裁方法、装置、仲裁器和芯片。

背景技术

在集成电路设计中,常用比较器作为一个触发装置唤醒CPU,或是触发某个事件的发生。如图1,比较器N端接入DAC的基准电压,P端通过一个选择器外接N个通道(N>=2个),每个通道连接一个触发源,当被选择的触发源电压大于DAC电压时,比较器输出一个高电平,从而生成一个触发事件,将CPU唤醒。

由此涉及到多个源端通过多路选择器(AMUX)连接到目的端,因此需要一套仲裁机制辅助工作,以保证多个源端能分时与目的端交互。

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

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

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

1)第一个轮询时钟周期时,因为A对应于0,所以A获得授权。当A获到授权完毕后,A对应于2,B对应于0,C对应于1.

2)第二个轮询时钟周期时,因为B对应于0,所以B获得授权。当B获到授权完毕后,B对应于2,C对应于0,A对应于1.

3)第三个轮询时钟周期时,因为C对应于0,所以C获得授权。当C获到授权完毕后,C对应于2,A对应于0,B对应于1.

A、B、C优先级顺序由上面的规律不断往复。该算法与时分复用结合,可以演化为基于时间片的轮询仲裁算器。轮询优先级仲裁器的主要缺点在于该算法下每个主设备的获得授权的概率是等同的,这样无法满足优先级要求高的主设备的性能,从而影响整个系统的性能指标。

由于以上的仲裁算法还存在比较多的不足,无法实现在轮询过程中,使不同的主机获得授权的概率不同。

发明内容

基于此,有必要针对上述技术问题,提供一种适用于比较器的加权轮询仲裁方法、装置、仲裁器和芯片。

一种适用于比较器的加权轮询仲裁方法,所述方法包括:

在轮询仲裁方法的基础上给每个源端增加源端权重;所述源端权重是根据每个源端的重要性设置的;所述源端的权重代表所述源端连接到比较器的正向输入端的时钟周期长度。

设置循环指针的始值设置为0,设置每个源端被授权周期的初始值为1。

当req更新或有申请时,则开始新一轮循环仲裁。

根据req、每个源端的源端权重、每个源端被授权周期以及所述循环指针,对多个源端进行轮询仲裁,每仲裁一次则所述循环指针增加1,当所述循环指针比源端数量小1时,则当前轮的循环仲裁结束,将所述循环指针更新为0,等待进入下一轮循环仲裁。

在其中一个实施例中,根据req、每个源端的源端权重、每个源端被授权周期以及所述循环指针,对多个源端进行轮询仲裁,每仲裁一次则所述循环指针增加1,当所述循环指针比源端数量小1时,则当前轮的循环仲裁结束,将所述循环指针更新为0,等待进入下一轮循环仲裁,包括

将req循环右移所述循环指针个bit位,得到请求右移值req_shifted。

当请求右移值req_shifted第0bit位的值为0时,则没有源端获得授权,将源端被授权周期设置为1,将所述循环指针加1。

当请求右移值req_shifted第0bit位的值为1时,则有源端x获得授权,将源端被授权周期加1,当所述源端被授权周期不等于源端x的源端权重时,则源端x继续获得授权,继续进行源端x的仲裁,直到所述源端被授权周期等于源端x的源端权重时,则源端x授权结束。

当源端x的授权结束后,将所述源端被授权周期设置为1,将所述循环指针加1,判断所述循环指针是否等于源端的总数量减1,得到判断结果。

当所述判断结果为不相等,则将请求右移值req_shifted更新为req循环右移所述循环指针个bit位,继续进行当前轮循环。

当所述判断结果为相等,则将所述循环指针置0,进入新一轮的轮询仲裁。

在其中一个实施例中,所述循环指针的位宽=log

在其中一个实施例中,每个源端占据一个bit位,req的位宽是[NUM-1:0],其中NUM指的是源端的总数量。

在其中一个实施例中,所述方法还包括:

将NUM个通道通过模拟输入通道选择器将被选中通道接入比较器;每个通道连接一个源端。

将DAC的基准电压接入到所述比较器的负向输入端。

当被授权的源端电压大于DAC的基准电压时,所述比较器输出一个高电平。

一种适用于比较器的加权轮询仲裁装置,所述装置包括:

源端权重设置模块,用于在轮询仲裁方法的基础上给每个源端增加源端权重;所述源端权重是根据每个源端的重要性设置的;所述源端的权重代表所述源端连接到比较器的正向输入端的时钟周期长度。

轮询仲裁参数设置,用于设置循环指针的始值设置为0,设置每个源端被授权周期的初始值为1。

轮询仲裁模块,用于当req更新或有申请时,则开始新一轮循环仲裁;根据req、每个源端的源端权重、每个源端被授权周期以及所述循环指针,对多个源端进行轮询仲裁,每仲裁一次则所述循环指针增加1,当所述循环指针比源端数量小1时,则当前轮的循环仲裁结束,将所述循环指针更新为0,等待进入下一轮循环仲裁。

在其中一个实施例中,轮询仲裁模块,还用于将req循环右移所述循环指针个bit位,得到请求右移值req_shifted;当请求右移值req_shifted第0bit位的值为0时,则没有源端获得授权,将源端被授权周期设置为1,将所述循环指针加1;当请求右移值req_shifted第0bit位的值为1时,则有源端x获得授权,将源端被授权周期加1,当所述源端被授权周期不等于源端x的源端权重时,则源端x继续获得授权,继续进行源端x的仲裁,直到所述源端被授权周期等于源端x的源端权重时,则源端x授权结束;当源端x的授权结束后,将所述源端被授权周期设置为1,将所述循环指针加1,判断所述循环指针是否等于源端的总数量减1,得到判断结果;当所述判断结果为不相等,则将请求右移值req_shifted更新为req循环右移所述循环指针个bit位,继续进行当前轮循环;当所述判断结果为相等,则将所述循环指针置0,进入新一轮的轮询仲裁。

在其中一个实施例中,所述循环指针的位宽=log

一种适用于比较器的加权轮询仲裁器,所述仲裁器包括:轮询调度模块和选择器。

所述轮询调度模块用于执行上述任一所述适用于比较器的加权轮询仲裁方法,输出被授权源端信号至所述选择器的控制端。

所述选择器是一个多选一选择器,多个源端分别与所述选择器的每个输入端连接;所述选择器的输出端与比较器的正向输入端连接。

一种比较器芯片,所述比较器芯片包括上述适用于比较器的加权轮询仲裁器。

上述适用于比较器的加权轮询仲裁方法、装置、仲裁器和芯片,所述方法包括:每个源端可根据自身的重要性设置不同的权重值,从而决定其在接入比较器的正向输入端时的时间值,克服了现有轮询中每个源端获得授权概率相同的不足;本方法仅在现有的固定优先级仲裁算法的基础上,通过加入一个循环指针实现了轮询仲裁,又在此基础上,通过加入每个源端对应的权重值,实现了加权轮询仲裁算法,实现方式简单,操作方便;该方法易于扩展,每增加一个源端,每轮循环指针只需要再增一个1即可,多增加一个源端,则每轮轮询中多耗费的时钟周期数与该源端的权重值相等。

附图说明

图1为现有技术中包括轮询仲裁机制的比较器;

图2为一个实施例中适用于比较器的加权轮询仲裁方法的流程示意图;

图3为另一个实施例中加权轮询仲裁方法的流程示意图;

图4为一个实施例中适用于比较器的加权轮询仲裁装置的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在一个实施例中,如图2所示,提供了一种适用于比较器的加权轮询仲裁方法,该方法包括以下步骤:

步骤200:在轮询仲裁方法的基础上给每个源端增加源端权重;源端权重是根据每个源端的重要性设置的;源端的权重代表源端连接到比较器的正向输入端的时钟周期长度。

具体的,在一轮轮询过程中,能够根据主机重要性的不同,获得不同的授权概率。具体到本应用中,假定有NUM个通道通过选择器AMUX连接到比较器的P端,且NUM个唤醒源对应于NUM个通道。可以根据源端重要性的不同,规定不同的权重。不同的权重,代表每个源端连接到比较器P端的时间长短不同,权重越大,则连接P端的时间越长,权重越小,则连接到P端的时间越短。例如,第0号源端权重是2,当0号源端发出申请时,被授权后连接到P端的时间是2个轮询时钟周期;第1号源端的权重是5,当5号源端发出申请,且被授权后连接到P端的时间是5个轮询时钟周期。这就是加权轮询仲裁算法,在一轮轮询过程中,能够根据源端的不同权重来决定连接到比较器P端的时间长短,从而表现为在一轮轮询过程中,各源端获得授权的概率不同。

每个源端相当于一个唤醒源,但因其重要性不同,从而接入比较器的时间长短不同,当CPU处于低功耗模式时,权重值的大唤醒源,更有可能将CPU从低功耗模式下唤醒。

步骤202:设置循环指针的始值设置为0,设置每个源端被授权周期的初始值为1。

步骤204:当req更新或有申请时,则开始新一轮循环仲裁。

步骤206:根据req、每个源端的源端权重、每个源端被授权周期以及循环指针,对多个源端进行轮询仲裁,每仲裁一次则循环指针增加1,当循环指针比源端数量小1时,则当前轮的循环仲裁结束,将循环指针更新为0,等待进入下一轮循环仲裁。

上述适用于比较器的加权轮询仲裁方法中,所述方法包括:每个源端可根据自身的重要性设置不同的权重值,从而决定其在接入比较器的正向输入端时的时间值,克服了现有轮询中每个源端获得授权概率相同的不足;本方法仅在现有的固定优先级仲裁算法的基础上,通过加入一个循环指针实现了轮询仲裁,又在此基础上,通过加入每个源端对应的权重值,实现了加权轮询仲裁算法,实现方式简单,操作方便;该方法易于扩展,每增加一个源端,每轮循环指针只需要再增一个1即可,多增加一个源端,则每轮轮询中多耗费的时钟周期数与该源端的权重值相等。

在其中一个实施例中,步骤206包括将req循环右移循环指针个bit位,得到请求右移值req_shifted;当请求右移值req_shifted第0bit位的值为0时,则没有源端获得授权,将源端被授权周期设置为1,将循环指针加1;当请求右移值req_shifted第0bit位的值为1时,则有源端x获得授权,将源端被授权周期加1,当源端被授权周期不等于源端x的源端权重时,则源端x继续获得授权,继续进行源端x的仲裁,直到源端被授权周期等于源端x的源端权重时,则源端x授权结束;当源端x的授权结束后,将源端被授权周期设置为1,将循环指针加1,判断循环指针是否等于源端的总数量减1,得到判断结果;当判断结果为不相等,则将请求右移值req_shifted更新为req循环右移循环指针个bit位,继续进行当前轮循环;当判断结果为相等,则将循环指针置0,进入新一轮的轮询仲裁;在其中一个实施例中,循环指针的位宽=log

具体的,加权轮询仲裁方法的流程图如图3所示,图3中循环指针pointer的位宽=log2(NUM),即pointer的位宽是[log2(NUM)-1:0],循环指针复位的初值为0;NUM指的是源端的总数量,且每个源端占据一个bit位,即req的位宽是[NUM-1:0],每个源端有一个权重值weight,第x个源端权重值大小为weight_x;req_shifted同req位宽相同,req_shifted等于req循环右移pointer个bit位;cnt为源端被授权周期,其复位初始值为1。

加权轮询仲裁方法的步聚如下:

1)当req更新或是有申请时,重新开始新一轮仲裁,且cnt归1。

2)req_shifted等于req循环右移pointer个bit位。

3)运用固定优先级算法,即判断req_shifted[0]是否为1?

4)req_shifted[0]若是为0,则没有源端获得授权,直接将cnt归1,pointer加1。

5)req_shifted[0]若是为1,则有源端x获得授权,且cnt加1,并通过被授权的源端x找到其对应的权重值weight_x。判定cnt是否等于weight_x,若是不相等,表示源端x继续获得授权;直到cnt等于weight_x时,对源端x的授权才结束。

6)对源端x的授权结束后,cnt归1,pointer自加1,并判断pointer是否等于(NUM-1)。

7)若pointer不等于(NUM-1),则req_shifted等于req循环右移pointer个bit位,继续当前轮的循环。

8)若pointer等于(NUM-1),则表示当前轮的循环仲裁已结束,pointer置0,又可重新开始新一轮的轮询仲裁。

在其中一个实施例中,每个源端占据一个bit位,req的位宽是[NUM-1:0],其中NUM指的是源端的总数量。

在其中一个实施例中,所述方法还包括:将NUM个通道通过模拟输入通道选择器将被选中通道接入比较器,每个通道连接一个源端;将DAC的基准电压接入到比较器的负向输入端;当被授权的源端电压大于DAC的基准电压时,比较器输出一个高电平。

应该理解的是,虽然图2、图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图4所示,提供了一种适用于比较器的加权轮询仲裁装置,包括:源端权重设置模块、轮询仲裁参数设置和轮询仲裁模块,其中:

源端权重设置模块,用于在轮询仲裁方法的基础上给每个源端增加源端权重;源端权重是根据每个源端的重要性设置的;源端的权重代表源端连接到比较器的正向输入端的时钟周期长度。

轮询仲裁参数设置,用于设置循环指针的始值设置为0,设置每个源端被授权周期的初始值为1。

轮询仲裁模块,用于当req更新或有申请时,则开始新一轮循环仲裁;根据req、每个源端的源端权重、每个源端被授权周期以及循环指针,对多个源端进行轮询仲裁,每仲裁一次则循环指针增加1,当循环指针比源端数量小1时,则当前轮的循环仲裁结束,将循环指针更新为0,等待进入下一轮循环仲裁。

在其中一个实施例中,轮询仲裁模块,还用于将req循环右移循环指针个bit位,得到请求右移值req_shifted;当请求右移值req_shifted第0bit位的值为0时,则没有源端获得授权,将源端被授权周期设置为1,将循环指针加1;当请求右移值req_shifted第0bit位的值为1时,则有源端x获得授权,将源端被授权周期加1,当源端被授权周期不等于源端x的源端权重时,则源端x继续获得授权,继续进行源端x的仲裁,直到源端被授权周期等于源端x的源端权重时,则源端x授权结束;当源端x的授权结束后,将源端被授权周期设置为1,将循环指针加1,判断循环指针是否等于源端的总数量减1,得到判断结果;当判断结果为不相等,则将请求右移值req_shifted更新为req循环右移循环指针个bit位,继续进行当前轮循环;当判断结果为相等,则将循环指针置0,进入新一轮的轮询仲裁。

在其中一个实施例中,循环指针的位宽=log

在其中一个实施例中,轮询仲裁模块后还包括源端选择器连接模块,用于将NUM个通道通过模拟输入通道选择器将被选中通道接入比较器,每个通道连接一个源端;将DAC的基准电压接入到比较器的负向输入端;当被授权的源端电压大于DAC的基准电压时,比较器输出一个高电平。

关于适用于比较器的加权轮询仲裁装置的具体限定可以参见上文中对于适用于比较器的加权轮询仲裁方法的限定,在此不再赘述。上述适用于比较器的加权轮询仲裁装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种适用于比较器的加权轮询仲裁器,仲裁器包括:轮询调度模块和选择器。

轮询调度模块用于上述任一所述的适用于比较器的加权轮询仲裁方法,输出被授权源端信号至选择器的控制端。

选择器是一个多选一选择器,多个源端分别与选择器的每个输入端连接;选择器的输出端与比较器的正向输入端连接。

在一个实施例中,提供了一种比较器芯片,比较器芯片包括上述适用于比较器的加权轮询仲裁器。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 加权轮询仲裁器及其轮询仲裁方法和芯片
  • 加权轮询仲裁器及其轮询仲裁方法和芯片
技术分类

06120116228978