基于动态优先级的总线仲裁器和动态改变优先级的方法

文档序号:6381659阅读:637来源:国知局
专利名称:基于动态优先级的总线仲裁器和动态改变优先级的方法
技术领域
本发明涉及SOC芯片设计,特别涉及芯片的实时性响应处理和调度管理的总线仲裁器。
背景技术
在多主处理系统中,总线仲裁器起着比较关键的作用,一个良好的仲裁器对总线的传输效率提高有着直接的关系,在SOC设计领域同样存在总线调度策略问题。
然而SOC的应用对象是多种多样的,针对不同处理会有不同的调度策略,需要动态配置优先级,能根据任务做动态处置,提高实时响应性。
常规的做法是事先分配好优先级,用户开发者往往较难改变仲裁效果,不利于用户做进一步灵活开发。在SOC芯片设计中,势必由硬件连线决定,一旦流片后,就不能改变优先级分配了。
为了改变这种情况,需要引入动态改优先级的机制,此外,要避免失衡问题,每一个主设备能根据自身响应时间提升优先级,使系统动态均衡。

发明内容
本发明的目的在于提供一种可动态改变优先级的总线仲裁器;本发明的另一目的是提供一种可通过程序指令动态改变优先级的总线仲裁器;本发明的再一个目的是提供一种总线仲裁器,该仲裁器可接受设备的请求而提升该设备的优先级。
为了实现上述目的,本发明提供一种基于动态优先级的总线仲裁器,包括总线仲裁判优电路,该总线仲裁判优电路与多个主设备连接,接收来自于所述主设备的总线请求信号,并根据主设备的优先级对发起总线请求的主设备进行优先级排序;还包括优先级寄存器,用于存储二进制表示的各主设备的优先级,所述优先级寄存器可接收外部指令来更新其内存储的各主设备的优先级;译码器,分别与所述总线仲裁判优电路和所述优先级寄存器连接,用于对优先级寄存器中存储的优先级进行译码。
所述优先级寄存器还与所述多个主设备连接,以接受来自所述主设备的优先级升级请求信号。
本发明还提供一种动态改变优先级的方法,用于动态改变多个主设备总线请求的优先级,包括1)提供一总线仲裁判优电路,该总线仲裁判优电路与多个主设备连接,接收来自于所述主设备的总线请求信号,并根据主设备的优先级对发起总线请求的主设备进行优先级排序;2)提供一优先级寄存器,用于二进制表示的各主设备的优先级;3)提供一译码器,用于用于对优先级寄存器中存储的优先级进行译码;4)所述优先级寄存器接收来自于程序的指令或者来自主设备的升级请求信号,更新所述优先级寄存器中的所述主设备的优先级。
采用本发明后,用户可以动态调整设备的优先级分配,防止总线上主设备有些“撑死”(总得到服务)、有些“饿死”(老得不到服务)现象,而且设备本身可以在负载发生变化时主动申请调整优先级,获取较好的总线仲裁机制。


图1是本发明的基于动态优先级的总线仲裁器的示意图。
具体实施例方式
下面结合附图和具体实施方式
对本发明作进一步详细描述。
如图1所示的总线仲裁器10,包括设备优先级寄存器11、译码器12和总线仲裁判优电路13。多个主设备1~n和总线仲裁器10中的总线仲裁判优电路13相连接,以便向总线仲裁器10发送总线占有请求信号。总线仲裁判优电路13根据设备优先级寄存器11中存储的设备优先级对发起总线请求的主设备进行优先级排序,最后总线仲裁器10根据优先级排序将总线切换给相应的主设备。
在图1中,优先级寄存器11存储有各个主设备的优先级,在一个实施例中,该寄存器允许每个设备有四种优先级,分别用存储在寄存器11内的二进制数00、01、10和11来表示,其优先级顺序为11>10>01>00。在一个实施例中,寄存器11存储的优先级如表1所示。
表1

其中,表1的第二行就是优先级寄存器11存储的优先级。寄存器11中的优先级可以通过BIOS或系统调度程序的指令来设置。例如在图1中,寄存器11接收来自于程序的指令,在寄存器11内写入设备优先级。当系统运行时,可以接收程序的指令来更新寄存器11中的数据,而动态改变设备的优先级,然后通过译码器12直传到总线仲裁判优电路13,随下次请求总线而有效。
在优先级寄存器11和总线仲裁判优电路13之间设置一个译码器12,该译码器将在寄存器11中的二进制表示的优先级转化成总线仲裁判优电路13可使用的硬件信号。例如,对于表1中用两位二进制数描述的一个主设备的优先级,可以使用一个2-4译码器来实现译码,以便由总线仲裁判优电路13判断该主设备归到哪个优先级上。
总线仲裁判优电路13是总线仲裁器的常规部件,它根据主设备的优先级采用一定的仲裁算法对提出总线请求的主设备进行排序,并按排序结果顺序将总线使用权切换给相应的主设备,这是本领域的技术人员所熟知的。例如现对优先级进行排队,对于同一优先级,仲裁时按设备号进行排序,这样任一设备首先归到相应优先级,然后在同一优先级进行排队。在实际应用中,还要考虑阻塞(BLOCK)、独占(LOCK)、取消(ABORT)、重排序(REARBITER)等情况,首先没有较高优先级申请者,其次同级申请没有排在前面,才能获得仲裁权,控制总线。
虽然上述技术方案可以通过程序指令动态改变寄存器11中各主设备的优先级,但是在实际应用时,各个主设备对总线的占用需求经常发生变化,因此,就需要能够在主设备有饥饿感时提升该设备的优先级。
作为本发明的一个改进,如图1所示,各主设备1~n还分别与优先级寄存器11,以便向优先级寄存器11发送优先级升级请求信号。当一个主设备有饥饿感时,可向仲裁器10发出优先级升级请求,优先级寄存器11内存储的该设备的优先级随之做相应修改,并通过译码器12直接影响总线仲裁判优电路13,获取总线服务。例如在一个实施例中,各主设备1~n在优先级寄存器11的优先级如表1所示,当主设备3对总线的需要有饥饿感时,它向优先级寄存器11发出一升级请求信号,优先级寄存器11中存储的优先级随之发生改变,如表2所示。
表2

当优先级寄存器11的优先级更新后,通过译码器12直传到总线仲裁判优电路13,随下次请求总线而有效。
权利要求
1.一种基于动态优先级的总线仲裁器,包括总线仲裁判优电路,该总线仲裁判优电路与多个主设备连接,接收来自于所述主设备的总线请求信号,并根据主设备的优先级对发起总线请求的主设备进行优先级排序;其特征在于,还包括优先级寄存器,用于存储二进制表示的各主设备的优先级,所述优先级寄存器可接收外部指令来更新其内存储的各主设备的优先级;译码器,分别与所述总线仲裁判优电路和所述优先级寄存器连接,用于对优先级寄存器中存储的优先级进行译码。
2.根据权利要求1所述的基于动态优先级的总线仲裁器,其特征在于,所述优先级寄存器还与所述多个主设备连接,以接受来自所述主设备的优先级升级请求信号。
3.一种动态改变优先级的方法,用于动态改变多个主设备总线请求的优先级,包括1)提供一总线仲裁判优电路,该总线仲裁判优电路与多个主设备连接,接收来自于所述主设备的总线请求信号,并根据主设备的优先级对发起总线请求的主设备进行优先级排序;2)提供一优先级寄存器,用于二进制表示的各主设备的优先级;3)提供一译码器,用于用于对优先级寄存器中存储的优先级进行译码;4)所述优先级寄存器接收来自于程序的指令或者来自主设备的升级请求信号,更新所述优先级寄存器中的所述主设备的优先级。
全文摘要
本发明公开了一种基于动态优先级的总线仲裁器和动态改变优先级的方法。该总线仲裁器,包括与多个主设备连接总线仲裁判优电路,用于存储二进制表示的各主设备优先级的优先级寄存器,该优先级寄存器可接收外部指令来更新其内存储的各主设备的优先级,译码器分别与所述总线仲裁判优电路和所述优先级寄存器连接,用于对优先级寄存器中存储的优先级进行译码。进行优先级动态改变时,所述优先级寄存器接收来自于程序的指令或者来自主设备的升级请求信号,更新所述优先级寄存器中的所述主设备的优先级。采用本发明后,用户可以动态调整设备的优先级分配,而且设备本身可以在负载发生时主动申请调整优先级,获取较好的总线仲裁机制。
文档编号G06F13/14GK1661579SQ20041000341
公开日2005年8月31日 申请日期2004年2月25日 优先权日2004年2月25日
发明者张志敏 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1