总线仲裁方法

文档序号:6555360阅读:901来源:国知局
专利名称:总线仲裁方法
技术领域
本发明涉及一种总线仲裁方法。
背景技术
多媒体应用的普及对计算机系统内部数据传输的带宽(Bandwidth)以及实时性(Real-Time)有着越来越高的要求,这迫使设计者不断提升总线频率,同时提高总线效率。
计算机系统包括多个单元(Unit),这些单元被分为主单元(Master)与从单元(Slave,一般为存储器,如SDRAM)两组,它们之间的数据交换通过总线(BUS)完成。当一个主单元要对一个从单元进行访问时,先向总线发出请求,总线仲裁器对收到的请求进行仲裁,选出优先权最高的请求,对应的主单元才能控制总线访问相应的从单元。
传统的总线架构为一级仲裁,即所有主单元连接至一个总线仲裁器。从硬件实现的角度看,构成仲裁器的基本单元是二选一的多路选择器(MUX),当然还包括计算和控制电路。主单元的数量越多就意味着仲裁器所需的多路选择器越多,一个请求从仲裁器的输入端到输出端需要经过的多路选择器就越多,这个数据传输过程所需的时间也就越长;再者,主单元数量越多,仲裁器进行一次仲裁的计算量就越大,计算所需的时间也就越长,这两个因素尤其是前者严重抑制了总线频率的提升,影响了总线带宽的提高。另外,所有主单元都连接到一个仲裁器会导致芯片上该仲裁器周围的资源严重缺乏,为增强其驱动力就需要额外增加一些元件,例如在连线中增加两个倒相器(Inverter),但这样又进一步增加了电路的延时,成为另一个限制总线频率提升的原因;所有主单元都连接到一个仲裁器还会使芯片内部的连线过于复杂。最后,若采用传统的一级仲裁,要增加主单元数量就需要重新设计整个仲裁系统,其通用性不佳。
为了解决上述问题,业界采用了分级总线仲裁架构(Hierarchical BUSArbitration)技术。分级仲裁是把主单元按一定数量N(N为大于1的整数)进行分组,每组N个主单元共享一个底层仲裁器,再把底层仲裁器按N分组,每组N个底层仲裁器共享一个次底层仲裁器,以此类推直到顶层仲裁器。在分级总线仲裁架构中,对于上一级仲裁器而言,所有非顶层仲裁器都被视为一个主单元参与竞争,根据需要也可以让主单元与非顶层仲裁器一起参加上一级仲裁。如此,整个仲裁被打断成为多级的树状仲裁架构,这样做有以下优点第一,仲裁架构成为流水线结构,一次完整的仲裁(一个请求从被主单元发出到被顶层仲裁器输出)平均花费的时间比传统的一级仲裁大幅减少;第二,每个仲裁器负责仲裁的主单元数量减少,其一次仲裁所需的计算时间得以缩短;第三,可根据主单元在芯片内的位置布置仲裁器,使芯片内的连线得以简化;第四,具有可插拔的特性,若主单元数量增加,只要相应增加仲裁器即可,无需重新设计仲裁架构,通用性好。总而言之,分级仲裁可有效提升频率、简化芯片内部连线以及提高总线仲裁架构的通用性。请参美国专利第6385678号图9,展示了一种多级仲裁的架构。
众所周知,现今DRAM的读写大都采用突发(Burst)方式,为进一步提高数据传输效率,业界采用了串突发(Stream Burst)传输协议。这种协议规定,一个主单元与一个从单元之间多个特定的连续突发在通过一个仲裁器的过程中不被打断,且只需要对第一个突发进行仲裁即可,这些连续的突发就是一个串突发。串突发传输协议的采用大幅节省了总线仲裁的时间,对多级仲裁架构和数据吞吐量较大的系统而言效果尤为明显。
为便于说明,假设系统处于理想状态(无堵塞),一次仲裁需要一个时钟周期,一个突发的输出需要一个时钟周期(一般而言仲裁计算和输出采样无法在一个时钟周期内完成)。
在现有的串突发传输协议中,当存在两个连续的串突发时,总线要等前一个串突发传输完毕后才能进行新的仲裁以决定接下来选通哪一路输入,因为在前一串突发最后一个突发被输出之前,仲裁电路无法得到紧接着所述的最后一个突发的另一突发的仲裁所需的信息,因此,对于每一串突发而言,其第一个突发从开始仲裁到突发被采样输出需要两个时钟周期,其中,一个时钟周期用于仲裁,一个时钟周期用于第一个突发的传输,详述如后。
为实现串突发传输,需要为每个突发设置一个突发标志,在现有的串突发传输机制中有两种突发标志,LAST表示串突发最后一个突发,SAME表示除最后一个突发外的其余突发(特别地,若一个串突发只包含一个突发,那该突发的突发标志为LAST),总线仲裁器正是根据突发标志来判断是否需要改变仲裁器的选通状态。
下面对现有的串突发传输方式的一个实施例进行说明。参见图11,仲裁器200包括多路选择器MUX 201、多路选择器MUX 202、仲裁计算模块203以及寄存器204。多路选择器201的输入端口供请求输入;寄存器204控制多路选择器201的选通状态;多路选择器202有两个输入端口,其中,第一输入端口与多路选择器201的输出端耦合,第二输入端口为无效输入;仲裁计算模块203进行仲裁计算,寄存器204的值与使能信号以及多路选择器202的选通信号均由其提供。
仲裁计算模块203是组合逻辑,每个时钟周期都会自动进行仲裁运算并且给出运算结果,但只有当寄存器204的使能信号为有效时,该运算结果才能在遇到一个时钟上升沿时被载入寄存器204,从而改变多路选择器201当前的选通状态。当一个串突发的第一个突发被一个仲裁器输出后,该仲裁器就会一直保持当前的选通状态,也就是说寄存器202的使能信号一直保持无效;当突发标志为LAST的突发被输出的同时,仲裁计算模块203控制多路选择器202选通其第二输入端口。如果存在另一个串突发紧接着所述突发标志为LAST的突发,那么,在所述突发标志为LAST的突发被输出后的第一个时钟周期,仲裁计算模块203发出有效的使能信号并控制多路选择器202选通第一输入端口,紧接着的一个时钟周期,多路选择器201将根据寄存器204的值改变选通状态。这样,在理想状态下,第二个串突发的第一个突发的输出就需要两个时钟周期。
但是,对于现有技术多级仲裁架构而言,一个串突发从底层仲裁器到顶层仲裁器,其第一个突发每经过一个仲裁器所需的时间比其他突发多一个时钟周期,总线架构分级越多,串突发第一个突发由底层仲裁器到顶层仲裁器所需的额外时间就越多,这不利于总线效率的提高。为进一步提高总线效率,需要设计一种新的总线仲裁方法。
在一个计算系统中,大致可将主单元分为两类,对延时要求高的主单元和对带宽要求高的主单元。对延时要求高的主单元发出的请求需要总线及时响应,否则可能导致系统出错,以数字电视解码芯片为例,中央处理器(CPU)、解复用模块(DEMUX)就是对延时要求高的主单元;对带宽要求高的主单元的数据吞吐量大,以数字电视解码芯片为例,视频解码模块就是对带宽要求高的主单元。为便于说明,以下称对延时要求高的主单元为第一类主单元,其请求为第一类请求,其突发为第一类突发,其串突发为第一类串突发,而对带宽要求高的主单元为第二类主单元,其请求为第二类请求,其突发为第二类突发,其串突发为第二类串突发。
美国专利第6804738号,揭示了一种分配总线带宽的总线仲裁方法,该方法为请求设置了高与低两个优先级,请求默认以高优先级参与竞争,其中,时间轴按时间段T进行分段,对应时间段T对主单元设置一个限制响应次数N,当该主单元在某个时间段T内获得响应的次数等于N时,该时间段内,该主单元以后发出的请求的优先级将被降为低,以此限制该主单元对总线带宽的占用。
如果在多级总线仲裁架构中采用美国专利第6804738号所述的总线带宽分配方法,有可能出现低优先级请求无法在较短时间内获得响应,而把位于其后的高优先级请求堵塞的情况。高优先级请求往往要求系统给予及时响应,否则很可能导致系统错误,因此,现有技术虽然可进行带宽分配,但仍存在上述缺陷。鉴于这个问题,我们亟需设计一种新的总线仲裁方法,以避免因上述原因造成的系统错误。

发明内容
现有的带宽分配方法可能导致低优先级请求堵塞高优先级请求,致使系统发生错误,鉴于这个问题,我们亟需设计一种新的总线仲裁方法,以避免因上述原因造成的系统错误。
本发明提供一种总线仲裁方法,用于总线仲裁系统,该总线仲裁系统设置有第一优先级与第二优先级,其中,第一优先级高于第二优先级,当系统检测到一个第二优先级请求后紧跟着一个第一优先级请求时,系统把该第二优先级请求的优先级提升为第一优先级。
如上所述的总线仲裁方法,其特征在于,优先级提升是在仲裁器中进行的。
如上所述的总线仲裁方法,其特征在于,若仲裁器两个输入端口之一输入的请求的优先级为第一优先级,那么,输出结果的优先级就为第一优先级。
如上所述的总线仲裁方法,其特征在于,优先级的提升是在缓存中进行的。
如上所述的总线仲裁方法,其特征在于,所述缓存深度为2,具有第一和第二存储模块。
如上所述的总线仲裁方法,其特征在于,若第一存储模块是当前被选通的存储模块,且存储了第一优先级的请求,而第二存储模块中存储了第二优先级的请求时,当检测到输入一个第一优先级的请求时,则把第二存储模块中的请求的优先级提升为第一优先级。
如上所述的总线仲裁方法,其特征在于,若第一存储模块是当前被选通的存储模块,且存储了第二优先级的请求,而第二存储模块为空,当检测到输入第一优先级的请求时,则把第一存储模块中的第二优先级请求提升为第一优先级。
如上所述的总线仲裁方法,其特征在于,若在当前时钟周期第一存储模块中的请求将被读出,那么就不进行优先级提升。
如上所述的总线仲裁方法,其特征在于,若第一存储模块和第二存储模块都存储了第二优先级的请求,且第一存储模块为当前被选通的存储模块,当检测到输入第一优先级的请求时,则至少把第二存储模块中的请求的优先级提升为第一优先级。
如上所述的总线仲裁方法,其特征在于,若在当前时钟周期第一存储模块中的请求将被读出,那么就只提升第二存储模块中的请求的优先级。
通过利用本发明的总线仲裁方法,可防止高优先级请求被低优先级请求堵塞的情况


图1为本发明总线仲裁装置的结构简图。
图2为本发明第一仲裁器的功能模块图。
图3为本发明缓存的功能模块图。
图4至图6示出本发明的优先级提升机制的几种情形。
图7为图2中进行优先级提升的处理的多路选择器的内部功能模块图。
图8为本发明的缓存中的缓存控制器进行优先级提升部分的功能模块图。
图9和图10示出有关本发明的优先级提升机制的时序图;图11为仲裁器的选通功能模块图。
具体实施例方式
请参图1,为本发明的一种多级分组总线仲裁架构,每一仲裁器的输入端都设有一缓存(FIFO),把多级仲裁打断成为流水线结构,以提高总线仲裁的效率。仲裁级数取决于主单元的数量、仲裁器的仲裁接口数量以及耦接方式,为便于进行说明,本实施例的所有非顶层仲裁器的仲裁接口数量均为2,当然这个数量可根据具体需求而改变,比如设置4个仲裁接口。参见图1,图1例示出本发明的总线仲裁架构的实施例。本实施例中共有7个主单元,其中,主单元130、主单元131及主单元132是第一类主单元(即对延时要求高的主单元),而主单元133、主单元134、主单元135以及主单元136是第二类主单元(即对带宽要求高的主单元)。本实施例的仲裁装置包括顶层仲裁器100;分别耦接于该顶层仲裁器100的缓存102和缓存104;耦接于缓存102的第一仲裁器101;分别耦接于第一仲裁器101的缓存106和缓存108;耦接于缓存106的另一第一仲裁器105;分别耦接于该另一第一仲裁器105的缓存114和缓存116,其中,主单元130耦接于缓存114,主单元131耦接于缓存116,主单元132耦接于缓存108;耦接于缓存104的第二仲裁器103;分别耦接于第二仲裁器103的缓存110和缓存112;耦接于缓存110的另一第二仲裁器107;分别耦接于该另一第二仲裁器107的缓存118和缓存120;耦接于缓存112的又一第二仲裁器109;耦接于该又一第二仲裁器109的缓存122和缓存124,其中,主单元133耦接于缓存118,主单元134耦接于缓存120,主单元135耦接于缓存122,主单元136耦接于缓存124。因此,该实施例的总线仲裁装置是一种包括顶层仲裁器、第一仲裁器和第二仲裁器的总线仲裁装置,其中第一仲裁器用于对第一类主单元的请求进行仲裁,第二仲裁器用于对第二类主单元的请求进行仲裁,并且,第一仲裁器和第二仲裁器分别自所述顶层仲裁器向下形成分级仲裁结构。因此,本实施例的总线仲裁装置采用了一种分组分级的总线总裁架构。本实施例中的缓存例如为先进先出缓存(FIFO),其深度为2,可存储两个请求。
本发明设计了一套优先级提升机制来克服现有技术存在的缺陷。
为了提高数据传输的效率,很多系统都采用了串突发(Stream Burst)传输方式,在这种传输方式中,一个主单元可能连续发出多个请求。在本实施例中,如上所述,把第一类主单元和第二类主单元进行分组分级仲裁,以便较为精确地控制两种主单元占用总线的时间。在SDRAM中,第一类主单元和第二类主单元的访问空间被分配在不同的逻辑存储库,这样,可以尽量使两个连续的串突发对SDRAM的操作在不同的逻辑存储库之间进行切换,以避免效率降低。为简化设计,提高数据传输效率,本实施例还规定了以下仲裁原则组内串突发不得相互打断;在顶层仲裁器中第一类串突发可打断第二类串突发,第二类串突发不得打断第一类串突发。
本实施例采用了类似现有的带宽分配方法,为第一类请求分配两种优先级,分别为HCREQ和LCREQ,第一类请求默认以HCREQ的优先级参与竞争,为第二类请求分配一种优先级,为HREQ。其中,这三种优先级的优先级秩序为HCREQ>HREQ>LCREQ。显然,在顶层仲裁器100中,只有当没有第二类请求参与竞争时,优先级为LCREQ的第一类请求才能获得顶层仲裁器100的响应。因为第二类主单元对带宽要求较高,也就是说,第二类串突发占用总线的时间比较长,所以,优先级为LCREQ的第一类请求很有可能在一段较长的时间内的不到顶层仲裁器100的响应,如此的话,位于其后的优先级为HCREQ的第一类请求也将被堵塞,从而导致系统错误。
在本实施例的系统中可能出现两种优先级为HCREQ的请求被优先级为LCREQ的请求堵塞的情况。其一,优先级为HCREQ的请求在缓存内被在前的优先级为LCREQ的请求堵塞;其二,第一仲裁器当前选通的请求的优先级为LCREQ,该第一仲裁器的另一输入端有优先级为HCREQ的请求输入,因为系统采用串突发的传输方式,且组内串突发不得相互打断,即使当前被选通的请求(串突发)的优先级为LCREQ,另一输入端输入的优先级为HCREQ的请求也不能打断该当前正被传输的串突发,而优先级为LCREQ的请求因优先级较低长时间得不到响应,致使该优先级为HCREQ的请求被堵塞。
为了解决高优先级请求被低优先级请求堵塞的问题,本发明设计了一套优先级提升机制,简言之,就是当系统检测到低优先级请求后存在高优先级请求时,系统将把该低优先级请求的优先级提升为高优先级,如此使位于低优先级请求后的高优先级请求尽早获得系统响应。
以下结合硬件对这种优先级提升机制进行说明。请参图2,为第一仲裁器101的功能模块图,包括状态机1011、寄存器组1012、计算模块1013、第一多路选择器1014、第二多路选择器1015、第三多路选择器1016、第四多路选择器1017。状态机1011控制第一仲裁器101的工作状态;寄存器组1012存储系统对仲裁器的配置,这些配置包括采用固定优先级算法还是加权循环算法,是否采用优先级提升机制等;计算模块1013进行仲裁计算,决定选通哪一路输入信号;第四多路选择器1017对下级缓存输入的请求类别信号进行多路选择,请求类别信号包括三种,分别为IDLE(表示无请求)、REQ(表示第二类请求)、CREQ(表示第一类请求),因为本实施例中第一主单元和第二类主单元被分组仲裁,所以请求类别信号只需要一位即可,即表示有请求输入与无请求输入两种情况,顶层仲裁器100则根据输入端口来判断是第一类请求还是第二类请求;第三多路选择器1016对下级缓存输入的优先级信号进行多路选择,该优先级信号包括高和低两种,第三多路选择器1016也进行优先级提升的处理;第二多路选择器1015对下级缓存输入的突发标志信号进行多路选择(系统采用串突发传输方式,故每一请求都携带有突发标志);第一多路选择器1014对下级缓存输入的其他输入信号进行多路选择。
计算模块1013的仲裁计算步骤如下一,根据请求类别信号过滤出参与竞争的请求;二,根据优先级信号进一步过滤出最终参与固定优先级算法或加权循环算法的请求,若参与竞争的请求中同时存在高优先级(HCREQ)的请求和低优先级(LCREQ)的请求,则把低优先级的请求过滤掉,不参与本次竞争;三,以固定优先级算法或加权循环算法进行计算,决定选通哪一个请求。整个仲裁计算过程只需要一个时钟周期。
若当前被选通的输入端口输入的请求的优先级为LCREQ,且另一输入端口输入的请求的优先级为HCREQ,那么,当前被选通的请求被输出之前,其优先级将被第三多路选择器1016提升为HCREQ。
本实施例中,优先级信号为一位的二进制数,1表示高优先级(Mprio_1),0表示低优先级(Mprio_0);请求类别信号也是一位的二进制数,1表示有请求输入(Mreq_1),0表示无请求输入(Mreq_0)。参见图7,所示为第三多路选择器1016的内部功能模块图,以下将结合图7对在第一仲裁器中的优先级提升进行说明。第三多路选择器1016包括“与”逻辑模块10161、“与”逻辑模块10162、“或”逻辑模块10163以及多路选择器10164。“与”逻辑模块10161的两个输入分别为第一输入端口的优先级信号(Mprio_0)以及第一输入端口的请求类别信号(Mreq_0)“与”逻辑模块10162的两个输入分别为第二输入端口的优先级信号(Mprio_1)以及第二输入端口的请求类别信号(Mreq_1);“与”逻辑模块10161和“与”逻辑模块10162输出至“或”逻辑模块10163进行“或”运算;多路选择器10164的两个输入分别为“或”逻辑模块10163的输出与默认优先级信号,多路选择器10164由第一仲裁器101的仲裁运算结果控制,只有当第一仲裁器101的两个输入端口都没有请求输入时,多路选择器10164才选择默认优先级信号为输出,在此,默认优先级信号为1。请参下表,为各种情况下第三多路选择器1016的输出结果。

若当前被选通的输入端口输入的请求的优先级为低,而另一输入端口输入的请求的优先级为高,那么,当前被选通的输入端口的请求的优先级将被提升为高;若当前被选通的输入端口的请求的优先级为高,而另一输入端口输入的请求的优先级为低,第三多路选择器1016输出的结果仍然为高;若当前被选通的输入端口的请求的优先级为高,而另一输入端口无请求输入,那么,第三多路选择器1016输出的结果还是为高。也就是说,只要两个输入端口之一输入的请求的优先级为高,那么,第三多路选择器1016输出的结果就是高,图7所示的第三多路选择器1016的功能结构实现了前述的优先级提升功能。
参见图3,所示为本发明缓存的功能模块图,因本实施例所有缓存结构相同,故在此仅以缓存102为例进行说明。缓存102包括缓存控制器1021、突发标志转换模块1022、优先级提升模块1023、第一存储模块1024、第二存储模块1025及多路选择器1026。第一存储模块1024和第二存储模块1025分别用于存储两个请求;多路选择器1026对第一存储模块1024和第二存储模块1025的输出进行选择;缓存控制器1021用于控制两个存储模块的先进先出顺序;突发标志转换模块1022在特定的条件下进行突发标志转换;优先级提升模块1023进行优先级提升处理。以下,将给出本发明的突发标志转换机制的实施例。本发明的突发标志转换机制相对于现有的串突发传输方式增加了一种突发标志,以JOIN表示。当系统发现一个突发标志为LAST的突发后还跟着另一个突发,即发现两个连续的串突发时,就把该突发标志由LAST转换为JOIN(突发标志的转换有两种情况,具体请参后述对缓存和仲裁器的描述,主单元也可直接发出JOIN的突发标志)。当仲裁器200(参见图10)(本实施例中有三种仲裁器,包括第一仲裁器、第二仲裁器以及顶层仲裁器,为便于对突发标志转换机制进行阐述,根据选通功能把第一仲裁器和第二仲裁器统称为仲裁器200进行说明)检测到突发标志为JOIN的突发时,仲裁计算模块203发出有效的使能信号,在下一个时钟上升沿,寄存器204将载入新的仲裁结果,这个仲裁结果是基于所述的突发标志为JOIN的突发(若该突发对应的输入端口紧接着有另一突发)的对应信息(如优先级信息等仲裁所需的信息)和另一输入端口输入的突发(如果存在)的对应信息计算所得,多路选择器201根据寄存器204的值改变选通状态。因此,在理想状态下(无堵塞),第二个串突发的第一个突发的输出就只需要一个时钟周期。与现有技术未采用突发标志转换机制的方案相比,本实施例的突发标志转换机制节省了1个时钟周期。显然,对于分级仲裁而言,突发标志转换机制带来的效率提升是十分显著的,而且仲裁级数越多效率的提升就越显著。
突发标志转换机制是一种预仲裁机制,有两种预仲裁方案可供选择。第一种方案,仲裁时以突发标志为JOIN的突发所携带的对应信息(如优先级信息等)代替同一路紧接着的突发(如果有的话,如果没有则所述的突发标志为JOIN的突发被过滤为无效突发,不参加新的仲裁)所携带的相关信息进行仲裁,这种方案在硬件上比较容易实现,但如果这两个突发的对应信号不一致的话,就可能使这一次仲裁的结果不符合标准。第二种方案,仲裁器的仲裁电路的输入设计成可选择,假设下级缓存深度为二,突发标志为JOIN的突发位于该缓存的第一存储体,而且第二存储体存在另一突发,此时的仲裁电路选择第二存储体中的突发所携带的相关信号进行仲裁,这种设计的仲裁结果符合标准,但硬件实现较为复杂。本实施例所采用的是第一方案。
突发标志转换机制并非是实现本发明的目的所必须的。因此,在缓存中可以省略与突发标志转换相关的模块和信号连线,这里就不详述了。
下级第一仲裁器输出的优先级信号同时被送至优先级提升模块1023,用以判断是否进行优先级提升。
缓存102进行优先级提升需要满足一个前提,就是在当前时钟周期对应的请求不会被读出,否则缓存102将不对该请求进行优先级提升。缓存102是根据第一仲裁器送出的GRANT信号来判断当前时钟周期是否会有请求被读出的。只有当上级缓存至少有一个存储单元为空,下级缓存有请求,且仲裁器完成仲裁时,GRANT信号才被拉高,表示在下一个时钟上升沿下级缓存的一个请求将被上级缓存锁存。
请参图9,当GRANT信号为高时,那么在下一个时钟上升沿,缓存102中对应的请求将被读出。请参图10,当GRANT信号为低时,若缓存102中有请求需要被提升优先级,那么在下一个时钟上升沿,缓存102将进行优先级提升。
缓存102进行优先级提升有以下几种情形参见图4,若第一存储模块1024是当前被选通的存储模块,且存储了一个优先级为HCREQ的第一类请求,而第二存储模块1025中存储了一个优先级为LCREQ的第一类请求,当检测到下级第一仲裁器输入一个优先级为HCREQ的第一类请求,那么优先级提升模块1023将通过缓存控制器1021把第二存储模块1025中的请求的优先级提升为高。
参见图5,若第一存储模块1024是当前被选通的存储模块,且存储了一个优先级为LCREQ的第一类请求,而第二存储模块1025为空,当检测到下级第一仲裁器输入一个优先级为HCREQ的第一类请求,那么优先级提升模块1023将通过缓存控制器1021把第一存储模块1024中的请求的优先级提升为高。但若在当前时钟周期第一存储模块1024中的请求将被读出,即当前GRANT信号为高时,那么缓存就不进行优先级提升。
参见图6,若第一存储模块1024和第二存储模块1025都存储了一个优先级为LCREQ的第一类请求,且第一存储模块1024为当前被选通的存储模块,当检测到下级第一仲裁器输入一个优先级为HCREQ的第一类请求,那么优先级提升模块1023将通过缓存控制器1021把第一存储模块1024和第二存储模块1025中的请求的优先级提升为高。但若在当前时钟周期第一存储模块1024中的请求将被读出,那么缓存就只提升第二存储模块1025中的请求的优先级。
参见图8,为缓存控制器1021进行优先级提升部分的功能模块图。寄存器10241是第一存储模块1024用以存储优先级信号的寄存器,寄存器10251是第二存储模块1025用以存储优先级信号的寄存器。缓存控制器1021包括计算控制模块10211、多路选择器10212以及多路选择器10213,计算控制模块10211控制多路选择器10212以及多路选择器10213的选择输出。多路选择器10212和多路选择器10213分别有三个输入供选择1(表示高优先级)、0(表示低优先级)以及对应寄存器的输出(保持寄存器值不变),其输出端连接至对应寄存器的输入端口。下表为各种状况下优先级提升模块1023和缓存控制器1021对寄存器10241和寄存器10251的操作,其中,GRANT信号指示在当前时钟周期,缓存102中的请求(如果有的话)是否将被读出(“1”表示当前被选通的请求将被读出,“0”表示不会被读出);R1(当前被选通的存储模块的优先级信号寄存器)和R2(除当前被选通的存储模块外的另一存储模块的优先级信号寄存器)分别表示寄存器10241和寄存器10251当前的值(“/”为没有请求时寄存器的默认值,“1”为高优先级,“0”为低优先级);Input表示当前输入缓存的请求的优先级(“/”表示无请求输入,“1”表示输入的请求的优先级为高,“0”表示输入的请求的优先级为低);R1n和R2n表示优先级提升模块1023和缓存控制器1021对多路选择器10212和多路选择器10213输入的选择(“keep”表示选择保持寄存器的值不变,“1”表示选择1为输出,“0”表示选择0为输出)。


需要说明的是,一旦当某个请求被读出,存储该请求的存储单元的优先级位自动恢复为默认值,对于第一类请求而言,该默认值为“1”,上表中以“DEF”标出的就是恢复默认值的动作。
本发明可以用其它具体形式来实施,而不背离其精神或基本特征。所述的实施例在所有方面都被认为仅是说明性的而非限制性的。
权利要求
1.一种总线仲裁方法,用于总线仲裁系统,该总线仲裁系统设置有第一优先级与第二优先级,其中,第一优先级高于第二优先级,当系统检测到一个第二优先级请求后紧跟着一个第一优先级请求时,系统把该第二优先级请求的优先级提升为第一优先级。
2.如权利要求1所述的总线仲裁方法,其特征在于,该总线仲裁方法用于多级总线仲裁系统,该多级总线仲裁系统包括一个以上仲裁器和一个以上缓存,仲裁器与主单元之间以及仲裁器之间以缓存耦合,优先级提升是在仲裁器中进行的。
3.如权利要求2所述的总线仲裁方法,其特征在于,若仲裁器输入端口之一输入的请求的优先级为第一优先级,那么,输出结果的优先级就为第一优先级。
4.如权利要求1所述的总线仲裁方法,其特征在于,该总线仲裁方法用于多级总线仲裁系统,该多级总线仲裁系统包括一个以上仲裁器和一个以上缓存,仲裁器与主单元之间以及仲裁器之间以缓存耦合,优先级的提升是在缓存中进行的。
5.如权利要求4所述的总线仲裁方法,其特征在于,所述缓存包括第一和第二存储模块。
6.如权利要求5所述的总线仲裁方法,其特征在于,若第一存储模块是当前被选通的存储模块,且存储了第一优先级的请求,而第二存储模块中存储了第二优先级的请求时,当检测到输入一个第一优先级的请求时,则把第二存储模块中的请求的优先级提升为第一优先级。
7.如权利要求5所述的总线仲裁方法,其特征在于,若第一存储模块是当前被选通的存储模块,且存储了第二优先级的请求,而第二存储模块为空,当检测到输入第一优先级的请求时,则把第一存储模块中的第二优先级请求提升为第一优先级。
8.如权利要求7所述的总线仲裁方法,其特征在于,若在当前时钟周期第一存储模块中的请求将被读出,那么就不进行优先级提升。
9.如权利要求5所述的总线仲裁方法,其特征在于,若第一存储模块和第二存储模块都存储了第二优先级的请求,且第一存储模块为当前被选通的存储模块,当检测到输入第一优先级的请求时,则至少把第二存储模块中的请求的优先级提升为第一优先级。
10.如权利要求9所述的总线仲裁方法,其特征在于,若在当前时钟周期第一存储模块中的请求将被读出,那么就只提升第二存储模块中的请求的优先级。
全文摘要
提供了一种总线仲裁方法,用于总线仲裁系统,该总线仲裁系统设置有第一优先级与第二优先级,其中,第一优先级高于第二优先级,当系统检测到一个第二优先级请求后紧跟着一个第一优先级请求时,系统把该第二优先级请求的优先级提升为第一优先级。通过利用本发明的总线仲裁方法,可防止高优先级请求被低优先级请求堵塞的情况。
文档编号G06F13/362GK101046788SQ200610025338
公开日2007年10月3日 申请日期2006年3月31日 优先权日2006年3月31日
发明者张亚林, 邓良策 申请人:上海奇码数字信息有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1