动态分配带宽的总线仲裁器的实现方法与流程

文档序号:11918356阅读:353来源:国知局
动态分配带宽的总线仲裁器的实现方法与流程

本发明涉及集成电路设计中仲裁器的设计方法领域,具体涉及一种动态分配带宽的总线仲裁器的实现方法。



背景技术:

集成电路设计中,数据总线大多采用共享或集中式设计,多个数据处理模块(或设备,以下统称为模块)连接到同一条共享数据总线上,并分时获得总线控制权以完成自己的数据传输需求。所以,该共享总线的总体带宽就要在这些模块间做相应的分配,以保证每个模块都可以获得足够的总线使用权,并顺利完成相应的数据传输操作。而分配总线带宽的任务就由总线仲裁器来完成,能否提供精确的控制以匹配各个模块的带宽需求就是总线仲裁器的一个主要的性能指标,另外,仲裁器是否可以做到最低或固定的延时也是影响系统总体性能的一个重要因素。

目前总线仲裁器的实现方法主要有:固定的TDM(时分复用)调度法、SP(严格优先级)调度法、RR(循环)或WRR(带权重的循环)调度法。TDM调度法,就是将一个时间周期分成多个固定的时隙,根据实际需求给每个模块分配一个到多个时隙,所有模块都分配一遍称为一个周期,然后每个周期按同样的时隙分配方式进行分配。SP调度法,即给每个模块分配一个优先级,仲裁器简单地根据优先级的高低选择哪个模块可以获得总线的控制权。WRR调度法,就是给各个模块分配一个固定的权重,然后根据权重的多少,仲裁器分配一定比例的令牌给相应的模块,仲裁器在有令牌的各个模块中循环调度选择一个模块来控制总线,每被选择一次,相应的令牌数减1,直到为0,当所有模块都没有令牌或者没有数据传输请求时,仲裁器就再一次重新分配令牌给各个模块。

TDM调度法的时隙固定的缺点很明显,即使当前模块没有数据传输需求,相应的模块也会占用时隙,导致了带宽的浪费。特别不适应于所有模块总需求带超出总线总带宽,而实际上同时工作的模块的带宽是小于总线总带宽的情况。

SP调度法的缺点则是低优先级模块的带宽没有保证,甚至可能出现高优先级模块长期霸占总线,导致出现低优先级模块数据“饿死”的情况。这种现象对于短时间总带宽需求超过总线总带宽时最为明显。

WRR调度法的缺点则是无法精确控制调度选择时哪个模块被选中,在所有模块都有令牌时,实际上它是依次选择模块的,当权重低的模块都没有令牌后,才会大量地选中权重高的模块,从而导致权重高的模块的数据传输会出现突发的情况,非常不利于后续的数据处理(因为后续的处理模块可能需要较大的数据存储器来缓冲这种突发数据传输的情况,导致了不必要的设计浪费和集成电路成本的上升)。如上面的例子中所示,D模块在仲裁后期,因为其他模块都已经没有了令牌,会出现连续被选中的情况,它的数据也就会出现一个突发传输。

RR调度法实际上WRR调度法中权重都为1的特例。它无法设置权重,所以,不适应于权重不同的应用场景。

已公开的一项发明专利“一种动态调整带宽分配的总线仲裁方法及仲裁器(公开号CN101676890B)”中提出了一种动态调整带宽分配的仲裁器的实现方法,它的原理是设定一个滑动的时间窗,并在该时间窗内记录某个模块的实际带宽占用量。同时每隔固定的时间,计算模块的实际带宽占用量与其预设带宽(类似于WRR调度中的权重)的偏离量,用这个偏离量的大小决定下一次仲裁的优先级。偏离量越大,优先级越高。然后根据这个优先级来选择相应的模块。

该技术可以处理某些模块突发的大流量数据传输的请求。因为发生这种情况后,以上计算出的带宽偏离量会逐渐变大,该模块的优先级也就会越来越大,从而该模块会被更优先地选择到,逐渐占用更多的总线控制权。但其存在以下缺点:

1.这个调整过程是发生在时间窗计算之后,也就是说它是后知后觉才调整的,带宽的补偿调整会有一段不确定的延时。对于某些带宽要求严格的场景并不适用,因为以上的延时很可能导致数据断流。

2.如果某些模块的数据流多为突发传输时,会导致突发传输过程中,该模块会大量占用总线,导致其他模块带宽占用不足,导致这些模块的数据传输会出现较大延时。

3.该方法会根据实际需求动态调整模块带宽,所以,在总线上连接有多个模块时,可能因为某个模块长期占用总线而导致其他模块数据流短暂中断的情况。这种短暂时间的数据流中断可能导致错误的发生。特别是对于有最低带宽要求的模块,如果在该模块最长的容忍时间内没有数据流传输,则会导致该模块输出的下溢错误。如对于传输报文的以太网接口模块,这种下溢就会导致报文传输错误的发生。



技术实现要素:

针对现有技术的不足,本发明的主要目的在于:提出一种可以动态分配总线上各个请求模块带宽的仲裁器的实现方法。该仲裁器可以按照给定的权重均匀地分配各个接口的数据传输带宽,保证各个模块严格按照各自权重占用总线。保证低带宽模块的数据请求,平滑模块的突发数据处理请求,不浪费总线带宽,并能实现极低的仲裁延时。

为实现前述目的,本发明公开了一种动态分配带宽的总线仲裁器的实现方法,具体包括:

设置一定长度的仲裁周期以及总线上各个模块的权重,在每个仲裁周期内平滑设置各个模块的时隙分配;

为各个模块分别定义一寄存器,用于存储对应模块错过相应时隙的个数,初始值为0,其数值越大,仲裁时优先级越高;

若所有模块均产生数据传输请求,则按照时隙分配的设置执行仲裁;

若某个模块未产生数据传输请求,则后续模块依次提前一个时隙,同时更新该模块的寄存器数值;

若有高优先级的模块产生数据传输请求,则优先响应该模块请求,同时更新该模块寄存器数值,当前时隙对应的模块及后续模块依次延时一个时隙;

其中,当所述寄存器的值达到阈值时,在相应仲裁周期结束时对其清零。

优选地,一个时隙设置为一个时钟周期。

优选地,若某个模块未产生数据传输请求时,所述更新该模块的寄存器数值为该寄存器数值加1。

优选地,若有高优先级的模块产生数据传输请求时,所述更新该模块寄存器数值为该寄存器数值减1。

优选地,所述寄存器的值达到阈值包括寄存器数值达到N轮仲裁时隙占用个数之和,N为整数且NI2。

优选地,对于总线总带宽不满足所有模块同时传输数据的带宽时,按照时隙分配的比例来仲裁。

优选地,如果总线总带宽不满足所有模块同时传输数据的带宽,且各个模块非同时有数据待传输时,分时复用时隙分配。

与现有技术相比,本发明的优点在于:本发明公开的一种动态分配带宽的总线仲裁器的实现方法,可以按照预设的权重均匀地分配各个模块的数据传输带宽,保证各个模块严格按各自权重占用总线,并平滑各个模块的数据处理请求,保证不会产生突发数据传输的情况。在某些模块突发大量数据传输请求时,保证了部分模块对最低带宽和延时的要求。本方案处理逻辑简单,从而也提高了数字逻辑处理的速度,更适用于高速数据处理的场景。

附图说明

图1是本发明一实施例提出的总线上各模块的数据传输正常均匀进行的示意图;

图2a是B模块数据首轮无效至有效仲裁示意图;

图2b是B模块连续两轮数据无效仲裁示意图;

图2c是B模块数据首轮无效、次轮有效仲裁示意图;

图3a是C模块数据首轮无效至有效仲裁示意图;

图3b是C模块连续两轮数据无效仲裁示意图;

图3c是C模块数据首轮无效、次轮有效仲裁示意图;

图4是A、B模块分时复用总线的仲裁示意图。

具体实施方式

鉴于现有技术中的不足,本案发明人经长期研究和大量实践,得以提出本发明的技术方案。如下将对该技术方案、其实施过程及原理等作进一步的解释说明。

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

本发明实施例假设数据总线上连接有A、B、C、D四个数据请求模块,将这四个模块的权重依次设置为1、1、2、4,每8个时隙作为一个仲裁周期,每个周期内的时隙设置如下:模块A占用时隙1,模块B占用时隙5,模块C占用时隙3和时隙7,模块D占用时隙2、时隙4、时隙6和时隙8。

因为集成电路的数字逻辑设计中都是按时钟周期来执行操作,所以本发明实施例中的一个时隙可以设置为一个时钟周期。

给模块A、B、C、D分别定义一个寄存器P,分别用A_P、B_P、C_P、D_P表示对应寄存器中的数值。该寄存器中的数据表示当前模块错过的相应时隙的个数,0表示正常,1表示错过一个时隙,2表示错过两个时隙,依此类推。该数值是后续仲裁时的优先权标志,数值越大表示该模块被选择的优先级越高。系统初始化后,A_P、B_P、C_P、D_P均设置为0。

基于以上设置,本发明第一实施例中假设各模块的数据均匀传输,如图1的示意图所示:

在仲裁周期1内,模块A、B、C、D在各占用的时隙上均有数据传输请求,严格按照时隙分配的设置来选择模块占用总线,此时仲裁结果为:固定以每8个时钟周期作为一个仲裁周期循环选择,且每个仲裁周期内依次按如下顺序选择模块:A、D、C、D、B、D、C、D,保证了每个模块的带宽权重,给每个模块均匀分配了占用时隙,且每个模块的数据传输都是均匀进行,没有突发数据传输的情况。

图2a~2c为本发明第二实施例中模块B在不同仲裁周期占用总线的示意图,模块B在一个仲裁周期内只占用一个时隙。

图2a是B模块数据首轮无效至有效仲裁示意图,如图2a所示:

仲裁周期1正常分配,在仲裁周期2内,当设置的时隙5到来时,模块B未产生数据传输请求,则时隙5被分配给后续的模块D占用,后续模块D、C、D依次提前一个时隙,同时将模块B的寄存器的数值加1,即B_P=1。此时仲裁周期2的模块时隙仲裁结果为:A、D、C、D、D、C、D。相应的,仲裁周期2的时隙个数减1,变为7个。

在仲裁周期2的时隙7到来时模块B产生了数据传输请求,由于此时B_P=1,模块B被选择的优先权大于其它模块,故直接响应模块B的请求,模块B占用时隙7,最后一个模块D往后延时一个时隙同时将模块B的寄存器的数值减1,即B_P=1–1=0。仲裁周期2最终的模块时隙仲裁结果为:A、D、C、D、D、C、B、D。

图2b是B模块连续两轮数据无效仲裁示意图,如图2b所示:

仲裁周期1正常分配,在仲裁周期2内,当设置的时隙5到来时,模块B未产生数据传输请求,则时隙5被分配给后续的模块D占用,后续模块D、C、D依次提前一个时隙,同时将模块B的寄存器的数值加1,即B_P=1。此时仲裁周期2的模块时隙仲裁结果为:A、D、C、D、D、C、D。相应的,仲裁周期2的时隙个数减1,变为7个。

在仲裁周期2的时隙7到来时模块B仍未产生数据传输请求,则在处理完时隙7对应的模块D的数据传输请求后结束仲裁周期2,此时模块B的寄存器的数值保持不变,即B_P=1,并开启下一轮的仲裁,仲裁周期2最终的模块时隙仲裁结果为A、D、C、D、D、C、D。

在仲裁周期3内,模块B仍未产生数据传输请求,则模块B的寄存器的数值再加1,即

B_P=1+1=2。最终的模块仲裁结果与仲裁周期2相同,即为A、D、C、D、D、C、D。相应的,仲裁周期3的时隙个数也为7个。在仲裁周期3结束时,由于模块B在仲裁周期2与3连续两个周期内均未产生数据传输请求,需将模块B的寄存器清零,即B_P=0。

其中,将模块B的寄存器执行清零操作,是因为其连续两轮仲裁周期内均未产生数据传输请求,模块B本身的数据处理已经暂停,为避免某个模块长期处于空闲状态,占用优先级寄存器,需要删除空闲状态的优先级寄存器内的记录信息,无需再为其保留高优先级的权限,本实施例以两轮仲裁无数据请求为清零条件。

图2c是B模块数据首轮无效、次轮有效仲裁示意图,如图2c所示:

仲裁周期2最终的模块时隙仲裁结果与图2b中的仲裁周期2相同。

在仲裁周期3的时隙2到来时模块B产生了数据传输请求,由于此时B_P=1,模块B被选择的优先权大于其它模块,故直接响应模块B的请求,模块B占用时隙2,后续的模块D、C、D、B、D、C、D依次往后延时一个时隙,同时将模块B的寄存器的数值减1,即B_P=1–1=0。此时仲裁周期3的模块时隙仲裁结果为:A、B、D、C、D、B、D、C、D。相应的,仲裁周期3的时隙个数变为9个。若后续时隙到来时对应模块都有数据传输请求,则按时隙分配的设置来选择占用总线。仲裁周期3最终的模块时隙仲裁结果为:A、B、D、C、D、B、D、C、D。相应的,仲裁周期3的时隙个数为9个。

图3a~3c是本发明第三实施例中模块C在不同仲裁周期占用总线的示意图,模块C在一个仲裁周期内只占用两个时隙。

图3a是C模块数据首轮无效至有效仲裁示意图,如图3a所示:

仲裁周期1正常分配,在仲裁周期2内,设置的时隙3到来时,模块C未产生数据传输请求,则时隙3被分配给后续的模块D占用,后续模块B、D、C、D依次提前一个时隙,同时将模块C的寄存器的数值加1,即C_P=1,此时仲裁周期2的模块时隙仲裁结果为:A、D、D、B、D、C、D,仲裁周期2的时隙个数减1,变为7个;

在仲裁周期2的时隙6到来时,模块C产生了数据传输请求,由于此时C_P=1,模块C被选择的优先权大于其它模块,故直接响应模块C的请求,模块C占用时隙6,时隙6对应的原来模块(模块C)及后续模块D依次往后延时一个时隙,同时将模块C的寄存器的数值减1,即B_P=1-1=0,此时仲裁周期2的模块时隙仲裁结果为:A、D、D、B、D、C、C、D,仲裁周期2的时隙个数加1,变为8个。

图3b是C模块连续两轮数据无效仲裁示意图,如图3b所示:

仲裁周期1正常分配,在仲裁周期2内,设置的时隙3到来时,模块C未产生数据传输请求,则时隙3被分配给后续的模块D占用,后续模块B、D、C、D依次提前一个时隙,同时将模块C的寄存器的数值加1,即C_P=1,此时仲裁周期2的模块时隙仲裁结果为:A、D、D、B、D、C、D,仲裁周期2的时隙个数减1,变为7个;

在仲裁周期2的时隙6到来时,模块C仍未产生数据传输请求,则时隙6被分配给后续的模块D占用,同时将模块C的寄存器的数值再加1,即C_P=1+1=2,此时仲裁周期2的模块时隙仲裁结果为:A、D、D、B、D、D,仲裁周期2的时隙个数再相应减少1个,变为6个。

在处理完时隙6对应的模块D的数据传输请求后模块C仍无数据传输请求,结束仲裁周期2,此时模块C的寄存器的数值保持不变,即B_P=2,并开启下一轮的仲裁,仲裁周期2最终的模块时隙仲裁结果为A、D、D、B、D、D,相应的,仲裁周期2的时隙个数为6个;

在仲裁周期3内,模块C仍未产生数据传输请求,与仲裁周期2中的仲裁结果相同,则模块C的寄存器的数值需再进行两次加1,即C_P=2+1+1=4。仲裁周期3最终的模块仲裁结果与仲裁周期2相同,即为A、D、D、B、D、D。相应的,仲裁周期3的时隙个数也为6个。以第二实施例的优先级寄存器清零条件设置相同,在仲裁周期3结束时,将模块C的寄存器清零,即C_P=0。

图3c是C模块数据首轮无效、次轮有效仲裁示意图,如图3c所示:

仲裁周期2最终的模块时隙仲裁结果与图3b中的仲裁周期2相同。

在仲裁周期3的时隙2到来时,模块C产生了数据传输请求,则直接响应模块C的请求,由于此时模块C的寄存器数值为2,故模块C将占用时隙2与时隙3,后续的模块D、D、B、D、D依次往后延时两个时隙,同时将模块C的寄存器的数值进行两次减1,即B_P=2-1-1=0。此时仲裁周期3的模块时隙仲裁结果为:A、C、C、D、C、D、B、D、C、D。相应的,仲裁周期3的时隙个数变为10个。若后续时隙到来时对应模块都有数据传输请求,则按时隙分配的设置来选择占用总线。仲裁周期3最终的模块时隙仲裁结果为:A、C、C、D、C、D、B、D、C、D。相应的,仲裁周期3的时隙个数为10个。p

上述实施例中寄存器清零的条件是相应寄存器数值达到两轮仲裁时隙占用个数之和时的仲裁周期结束的时刻,清零操作的时刻可以根据实际情况来选择设置。如果某个模块经过三轮仲裁的时间仍无数据传输请求才表示其数据处理已经暂停,那就要求在该模块连续三轮都没有数据传输请求时再清零该寄存器。

对于总线总带宽不满足所有模块同时传输数据的带宽的情况,该仲裁器能够严格按照时隙分配的比例来仲裁。因为此时各个模块的数据传输请求会来不及处理,它们会积存在各自模块的输出端。而仲裁器看到的是各个模块总是有数据传输请求,那相应的仲裁周期就总是严格按配置的行为进行。如前述实施例中,A、B、C、D四个模块的仲裁结果就总是图1中所示周期1的情况。

如果总线总带宽不满足所有模块同时传输的带宽,但各个模块又不是同时有数据待传输的情况,则可以分时复用总线带宽。如图4所示,假设总线总带宽为7,而相应的A模块和B模块不会同时有数据传输,则A、B模块可分时复用总线,不会产生数据冲突,实际的仲裁结果如图4中所示,仍能保证各个模块的数据传输需求。

采用本发明技术方案实现的总线仲裁器可以按照预设的权重均匀地分配各个模块的数据传输带宽,保证各个模块严格按各自权重占用总线,并平滑各个模块的数据处理请求,保证不会产生突发数据传输的情况。在某些模块突发大量数据传输请求时,也只允许它在不影响其他模块正常数据传输的情况下才可以大量占用总线控制权,保证的部分模块对最低带宽和延时的要求。

本发明不用计算带宽偏离量,直接使用时隙分配的结果来决定相应的优先级设置情况,从而避免了现有技术中所产生的总线调整后知后觉的现象。另外,优先级寄存器清零的设置可以清除长期无数据请求产生的优先级设置,避免了该模块有突发数据传输时因为优先级设置较高产生长期占总线的情况。相应地,本发明技术方案的处理逻辑也变得更为简单,从而也提高了数字逻辑处理的速度,更适用于高速数据处理的场景。

应当理解,上述实施例仅为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

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