一种优先级实时调整装置及方法与流程

文档序号:16247406发布日期:2018-12-11 23:42阅读:1455来源:国知局
一种优先级实时调整装置及方法与流程

本发明涉及数字电路设计技术领域,更具体地说,涉及一种优先级实时调整装置及方法。

背景技术

随着数字电路集成度越来越高,数字电路系统中模块变得越来越多,导致多个设备竞争同一总线的情况更加频繁且复杂。为合理处理总线竞争,使数字电路系统运行更加稳定高效,仲裁机制的设计要求也越来越复杂。

在数字电路系统中,经常会出现多个主模块申请通过同一个总线操作或访问其他从模块的情况,例如不同数据源模块对存储介质的访问。需要设计一个仲裁机制,来分配总线的使用权。如果仲裁机制设计不合理,导致某个模块的请求得不到及时的响应,会影响总线通信效率,进而降低系统运行性能,严重的情况下还可能导致数字电路系统产生死锁等问题。

在现有数字电路系统中,应用较多的仲裁机制有轮询仲裁机制和固定优先级仲裁机制。

轮询仲裁机制的规则是当1~n个主模块同时向仲裁器发出命令请求时,默认主模块1的优先级最高,仲裁器先响应主模块1,模块1的响应结束后,模块2的优先级变为最高,仲裁器开始响应主模块2,以此类推。

轮询仲裁机制的缺点是如果某个主模块有连续的命令请求,在第一次响应后该主模块的优先级降低,必须等待轮询遍历所有模块之后才能再次得到响应,造成局部拥塞,导致整个系统中命令请求处理效率降低。

固定优先级仲裁机制的规则是当1~n个主模块同时向仲裁器发出命令请求时,固定主模块1的优先级最高,其他主模块的优先级依次递减。仲裁器先响应主模块1,当模块1的响应结束时,各个模块的优先级保持不变,如果主模块1仍然有命令请求,则仲裁器继续响应主模块1。主模块1没有命令请求时才会响应其他模块。

固定优先级仲裁机制的缺点是如果主模块1和主模块2都有若干数量的命令请求,仲裁器只会根据优先级高低来选择响应主模块1,因为主模块1的优先级始终最高。只要主模块1的命令请求没有被全部处理完,主模块2的命令请求会一直得不到响应,这种情况会造成系统局部拥塞,可能会影响整个系统的运行。

总而言之,轮询仲裁机制和固定优先级仲裁机制的实现方式比较简单,但是这两种仲裁机制对各个请求端口的优先级分配方式过于简单,导致在某些情况下对总线使用全的仲裁处理方式不合理,并且不能做出针对性的调整,会影响整个系统的效率。



技术实现要素:

为了解决在轮询仲裁机制和固定仲裁机制不能根据实时业务情况对仲裁优先级进行针对性调整的问题,本发明提出了一种优先级实时调整装置及方法,实时地对仲裁器各命令请求端口的请求到达速率与响应速率进行评估,然后根据评估结果对各命令请求端口进行优先级调整。

本发明实施例提供了一种优先级实时调整装置,所述的装置包括:

主模块a,用于向仲裁电路发送端口a的命令请求;

主模块b,用于向仲裁电路发送端口b的命令请求;

仲裁电路,包括优先级仲裁模块,用于根据端口a和端口b的实时优先级,判断将总线使用权分配给哪一个端口,并允许此端口将命令请求送往从模块;

从模块,用于处理命令请求。

进一步的,所述的仲裁电路还包括:

优先级实时调整模块a,用于根据命令请求产生速率和命令请求完成速率来评估如何对当前主模块a对应仲裁端口的优先级做出调整;

优先级实时调整模块b,用于根据命令请求产生速率和命令请求完成速率来评估如何对当前主模块b对应仲裁端口的优先级做出调整。

进一步的,命令请求产生速率和命令请求完成速率的计算原理为:主模块每产生一个命令请求,都会发出一个标记送达优先级实时调整模块,优先级实时调整模块会循环统计一段时间内主模块产生的命令请求个数,从而计算出主模块的命令请求产生速率;从模块每处理完一个主模块的命令请求,都会发出一个标记送达优先级实时调整模块,优先级实时调整模块也会循环统计一段时间内从模块完成主模块命令请求的个数,计算出主模块a的命令请求完成速率。

进一步的,所述的仲裁电路还包括:

命令请求缓存a,用于缓存主模块a的命令请求,并在检测到内部有命令请求时,将命令请求转发给优先级仲裁模块;

命令请求缓存b,用于缓存主模块b的命令请求,并在检测到内部有命令请求时,将命令请求转发给优先级仲裁模块。

本发明实施例还提供了一种优先级实时调整方法,所述的方法包括:

s1:设置端口的初始优先级;

s2:初始化统计时间计时器和优先级调整系数;

s3:统计命令请求产生个数和命令请求完成个数;

s4:判断统计时间是否溢出,若是进入步骤s5,若否,返回步骤s3;

s5:记录命令请求产生个数和命令请求完成个数;

s6:计算命令请求产生速率和命令请求完成速率;

s7:根据优先级转换函数计算出此次统计后需要调整的优先级系数,更新此端口对应的优先级。

进一步的,所述的方法还包括:

s8:重复步骤s2-s7,直至所有命令执行完成。

进一步的,步骤s3中,统计命令请求产生个数和命令请求完成个数的具体方法为:

主模块每产生一个命令请求,都会发出一个标记送达优先级实时调整模块,优先级实时调整模块会循环统计一段时间内主模块产生的命令请求个数;从模块每处理完一个主模块的命令请求,都会发出一个标记送达优先级实时调整模块,优先级实时调整模块也会循环统计一段时间内从模块完成主模块命令请求的个数。

进一步的,步骤s6中,命令请求产生速率的计算公式为:

其中,rcomm_gen是此端口的命令请求产生速率,numcomm_gen是统计的命令产生数量,t是统计时间。

进一步的,步骤s6中,命令请求完成速率的计算公式为:

其中,rcomm_fin是此端口的命令请求完成速率,numcomm_fin是统计的命令请求完成数量,t是统计时间。

进一步的,步骤s7中,优先级转换函数为:

p=pcurrent+f(rcomm_gen-rcomm_fin),其中,p是调整后的端口优先级,pcurrent是当前端口优先级,f(rcomm_gen-rcomm_fin)是将命令请求产生速率与命令请求完成速率的差值转换为优先级调整系数的转换函数。

发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:

在复杂系统环境下,仲裁器各个端口的命令请求情况随时会出现变化。而轮询仲裁机制和固定优先级仲裁机制无法实时针对端口的具体情况进行调整,导致系统某些端口产生拥塞,影响系统整体运行情况。

本发明能实时地对仲裁器各命令请求端口的请求到达速率与响应速率进行评估,然后根据评估结果对各命令请求端口进行优先级调整,可以在复杂系统环境中实时优化仲裁机制,避免局部命令拥塞,有效解决轮询仲裁机制或固定优先级仲裁机制带来的问题,提高了仲裁电路的工作灵活性和适应性,以及电路系统运行整体效率。

附图说明

图1是本发明实施例的装置原理图;

图2是本发明实施例的方法流程图。

具体实施方式

为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。

实施例

如图1所示,本发明实施例提供了一种优先级实时调整装置,所述的装置包括两个主模块和一个从模块,以及负责总线分配的仲裁电路。所述仲裁电路含有两个请求命令缓存模块、两个优先级实时调整模块、一个优先级仲裁模块。所述相同功能的两个模块分别用a和b来标记,两个主模块分别命名为主模块a和主模块b,两个命令缓存模块分别命名为命令缓存模块a和命令缓存模块b,两个优先级实时调整模块分别命名为优先级实时调整模块a和优先级实时调整模块b。

两个主模块的命令请求分别通过与他们连接的命令缓存模块进行缓存。命令缓存模块检测内部有命令请求时,将命令请求转发给优先级仲裁模块。在所述系统中,有两个命令缓存模块通过两个端口连接到优先级仲裁模块,优先级仲裁模块根据当前两个端口的的实时优先级来判断将总线使用权分配给哪一个端口,从而允许从此端口对应的命令缓存中取出命令请求送往从模块,让从模块对此端口的命令请求进行响应。经过仲裁未获得总线使用权的另一个端口则继续缓存命令请求。

主模块a每产生一个命令请求,都会发出一个标记送达优先级实时调整模块a。优先级实时调整模块a会循环统计一段时间内主模块a的产生的命令请求个数,从而计算出主模块a的命令请求产生速率。从模块每处理完一个主模块a的命令请求,都会发出一个标记送达优先级实时调整模块a。优先级实时调整模块a也会循环统计一段时间内从模块完成主模块a的命令请求的个数,从而计算出主模块a的命令请求完成速率。优先级实时调整模块a根据命令请求产生速率和命令请求完成速率来评估如何对当前主模块a对应仲裁端口的优先级做出调整。

主模块b对应优先级调整过程与上述主模块a的调整过程类似,只是处理过程由优先级实时调整模块b来完成。

优先级实时调整模块调整优先级的大致策略为:系统上电开始工作时,为端口设置一个初始优先级,然后开始实时监测端口对应的命令请求产生速率和命令请求完成速率。如果命令请求产生速率大于命令请求完成速率,说明当前情况下命令请求会因为得不到及时处理而产生累积,则应提高该端口对应的优先级,使此端口在仲裁时提高竞争能力,更多地获取总线,以便及时完成命令请求,避免累积情况继续恶化。如果命令请求产生速率小于命令请求完成速率,说明当前情况下此端口的命令请求缓存中的缓存数量会越来越小,累积情况会得到改善,可以适当降低该端口对应的优先级,将总线资源释放出来供优先级更高的端口使用。

本发明实施例还提供了一种优先级实时调整方法,如图2所示,所述的方法包括以下步骤:

s1:设置端口的初始优先级,一般是将每个端口的优先级有一个排序,例如第一优先级、第二优先级、第三优先级。也可以是设置一个优先级的评价,比如高优先级、低优先级。

s2:初始化统计时间计时器和优先级调整系数,初始系数可以统一设置为0,也可以根据经验进行设置。

s3:统计命令请求产生个数和命令请求完成个数。具体方法为:

主模块每产生一个命令请求,都会发出一个标记送达优先级实时调整模块,优先级实时调整模块会循环统计一段时间内主模块产生的命令请求个数;从模块每处理完一个主模块的命令请求,都会发出一个标记送达优先级实时调整模块,优先级实时调整模块也会循环统计一段时间内从模块完成主模块命令请求的个数。

s4:判断统计时间是否溢出,若是,则进入步骤s5,若否,返回步骤s3。

需要注意的是,循环统计命令请求产生个数和统计命令完成个数的时间长度可根据具体系统场景进行调整,如果大部分命令请求需要消耗较长时间来完成时,可增大统计的时间长度t,降低优先级调整操作的频率,提高系统运行稳定性;而如果大部分命令请求操作需要消耗较短时间完成,可以缩短统计的时间长度t,提高优先级调整操作的频率,加快优先级调整对系统运行情况变化的响应速度。

s5:记录命令请求产生个数和命令请求完成个数。

s6:计算命令请求产生速率和命令请求完成速率。

其中,命令请求产生速率的计算公式为:

其中,rcomm_gen是此端口的命令请求产生速率,numcomm_gen是统计的命令产生数量,t是统计时间。

命令请求完成速率的计算公式为:

其中,rcomm_fin是此端口的命令请求完成速率,numcomm_fin是统计的命令请求完成数量,t是统计时间。

s7:根据优先级转换函数计算出此次统计后需要调整的优先级系数,更新此端口对应的优先级。

其中,优先级转换函数为:

p=pcurrent+f(rcomm_gen-rcomm_fin),其中,p是调整后的端口优先级,pcurrent是当前端口优先级,f(rcomm_gen-rcomm_fin)是将命令请求产生速率与命令请求完成速率的差值转换为优先级调整系数的转换函数。

s8:重复步骤s2-s7,直至所有命令执行完成。

尽管说明书及附图和实施例对本发明创造已进行了详细的说明,但是,本领域技术人员应当理解,仍然可以对本发明创造进行修改或者等同替换;而一切不脱离本发明创造的精神和范围的技术方案及其改进,其均涵盖在本发明创造专利的保护范围当中。

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