一种可配置的动态时间片轮转调度算法

文档序号:10471063阅读:488来源:国知局
一种可配置的动态时间片轮转调度算法
【专利摘要】本发明公开了一种可配置的动态时间片轮转调度算法,该调度算法适用于在线跟踪系统中多个在线跟踪单元需要通过单一传输接口进行数据输出的情况。该算法通过配置相应的门限值、时间片长度以及优先级,结合对在线跟踪单元的活动态判断,采用两种查询方式对各在线跟踪单元的数据输出请求进行仲裁。本发明能够在低资源消耗、低数据溢出率以及高可扩展性的前提下实现对多路跟踪数据的合成,从而解决在线跟踪系统中的多数据缓存队列的调度问题。
【专利说明】
一种可配置的动态时间片轮转调度算法
技术领域
[0001]本发明属于总线仲裁技术领域,具体地说是一种结合门限和活动态判断的可配置动态时间片轮转调度算法。
【背景技术】
[0002]当异构多核SoC逐渐成为集成电路的主流时,快速有效的调试技术已经成为降低SoC设计成本的关键。在线调试技术能够在完全不干扰多核系统运行下实时获取想要的调试信息,是调试设计的重要研究方向。在线调试必然涉及到在线跟踪系统的设计,为减少对芯片管脚资源的占用,在线跟踪系统通常只设置一个输出端口,故输出端口成为在线跟踪系统的带宽瓶颈。对于多核系统的在线跟踪而言,多资源节点的跟踪数据需要汇合至单一跟踪传输接口,用于多数据缓存队列的合成调度算法是多核系统的在线跟踪设计的关键技术之一,也是决定数据传输效率和缓存利用率的关键因素。其设计常需要考虑数据溢出率、队列优先级、队列切换开销、面积约束和时间约束等等。
[0003]常见的解决在线跟踪数据合成的调度方法有:ARM的CoreSight架构中的TraceFunnel模块。该模块通过为每个队列设置互不相同的优先级和各队列相同的最小响应粒度HTC(H0ld Time Cycle),采用非抢占式穷尽优先响应方式,每次响应至少为HTC。这种调度方式的硬件开销小,但穷尽优先响应方式往往造成高优先级队列的缓冲空间尚未充分利用而低优先级队列溢出严重;再如LBF(Local Binary Fitting)算法优先响应归一化缓冲区长度(对长与缓冲容量之比)最大的缓冲队列,但归一化需要除法操作,使得该算法实现复杂,并且缓冲区长度间的相互比较使得扩展性差;缓冲队列没有优先级差别,也未考虑减少队列切换次数;也有提出依照不同概率对各优先级队列进行响应的方法,但产生随机数及相关运算的硬件代价过高。

【发明内容】

[0004]本发明是为了克服现有技术存在的不足之处,提供一种可配置的动态时间片轮转调度算法,以期能在低资源消耗、低数据溢出率以及高可扩展性的前提下实现对多路跟踪数据的合成,从而能够解决在线跟踪系统中的多数据缓存队列的调度问题。
[0005]本发明为解决技术问题采用如下技术方案:
[0006]本发明一种可配置的动态时间片轮转调度算法,是应用于在线跟踪系统中,所述在线跟踪系统包括:η个在线跟踪单元、一个总线仲裁单元和一个跟踪传输接口;所述η个在线跟踪单元分别对应于η个资源节点,用于采集相应资源节点中的数据,并在请求得到响应后将数据传输至所述总线仲裁单元;所述总线仲裁单元通过所述跟踪传输接口进行数据输出;其特点是,所述总线仲裁单元是按如下步骤对请求进行动态时间片轮转调度:
[0007]步骤1、设置门限
[0008]根据所述η个在线跟踪单元中各自缓存FIFO容量设置相应的门限值,记为(A1,A2,...,Ai,...,An},Ai表示第i个在线跟踪单元的门限值;I < i <n;
[0009]当所述第i个在线跟踪单元中存储的数据所形成的缓冲队列长队2仏时,则所述总线仲裁单元将所述第i个在线跟踪单元所发送的请求设置为紧急态请求;
[0010]当所述第i个在线跟踪单元中存储的数据所形成的缓冲队列长(XAifB1时,则所述总线仲裁单元将所述第i个在线跟踪单元所发送的请求设置为增长态请求;
[0011]当所述第i个在线跟踪单元中存储的数据所形成的缓冲队列长队=0时,则所述总线仲裁单元将所述第i个在线跟踪单元所发送的请求设置为空态请求;
[0012]步骤2、所述总线仲裁单元对所述第i个在线跟踪单元的缓存FIFO写使能进行检测,若缓存FIFO写使能为高电平,则判定所述第i个在线跟踪单元为活动态;若缓存FIFO写使能为低电平,则判定所述第i个在线跟踪单元为非活动态;
[0013]步骤3、所述总线仲裁单元根据第i个在线跟踪单元的缓存FIFO容量设置相应的时间片长度,记为(SiS2r^S1,…,SnKS1表示第i个在线跟踪单元的时间片长度;
[0014]步骤4、所述总线仲裁单元设置η个在线跟踪单元的响应优先级;
[0015]步骤5、所述总线仲裁单元中设置一紧急态寄存器U,所述第i个在线跟踪单元对应于所述紧急态寄存器U中的第i位;
[0016]当第i个在线跟踪单元处于紧急态时,则将紧急态寄存器U中的第i位设置为“I”;
[0017]当第i个在线跟踪单元处于增长态或空态时,则将紧急态寄存器U中的第i位设置为 “O”;
[0018]步骤6、所述总线仲裁单元设置一活动态寄存器V,所述第i个在线跟踪单元对应于所述活动寄存器V中的第i位;
[0019]当第i个在线跟踪单元处于活动态时,则将活动态寄存器V中的第i位设置为“I”;
[0020]当第i个在线跟踪单元处于非活动态时,则将活动态寄存器V中的第i位设置为“O” ;
[0021]步骤7、所述总线仲裁单元设置一请求寄存器R,所述第i个在线跟踪单元对应于所述请求寄存器R中的第i位;
[0022]当第i个在线跟踪单元的缓存FIFO为非空时,则将所述请求寄存器R中的第i位设置为“I”;
[0023]当第i个在线跟踪单元的缓存FIFO为空时,则将所述请求寄存器R中的第i位设置为 “O”;
[0024]步骤8、所述总线仲裁单元对所述紧急态寄存器U进行按位“或”操作,得到操作结果u ;
[0025]步骤9、所述总线仲裁单元对所述活动寄存器V进行按位“或”操作,得到操作结果
V;
[0026]步骤10、所述总线仲裁单元对所述请求寄存器R进行按位“或”操作,得到操作结果r;
[0027]步骤11、假设第i个在线跟踪单元最先接收到数据,则将所述第i个在线跟踪单元作为当前响应跟踪单元;此时,所述操作结果r为“I”,并启动计数器进行计数;
[0028]步骤12、当计数器的值小于当前响应跟踪单元的时间片长度且请求寄存器R中当前响应跟踪单元所对应的位为“I”时,所述总线仲裁单元获取所述当前响应跟踪单元的数据,并传输至跟踪传输接口进行输出,同时执行步骤13;
[0029]步骤13、判断操作结果r是否为“O”,若为“O”,则停止计数器并清零;并返回步骤11;若不为“O”,则同时执行步骤14、步骤16、步骤18和步骤20后,再执行步骤22;
[0030]步骤14;所述总线仲裁单元获取其余在线跟踪单元中处于紧急态且活动态的在线跟踪单元;判断处于紧急态且活动态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤15;否则按照响应优先级从高到低的顺序进行查询,获得优先级最高且处于紧急态和活动态的在线跟踪单元,作为第一响应跟踪单元;
[0031]步骤15、所述总线仲裁单元从所述紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于紧急态和活动态的在线跟踪单元,作为第一响应跟踪单元;
[0032]步骤16、所述总线仲裁单元获取其余在线跟踪单元中处于紧急态的在线跟踪单元;判断处于紧急态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤17;否则按照响应优先级从高到低的顺序进行查询,获得到优先级最高且处于紧急态的在线跟踪单元,作为第二响应跟踪单元;
[0033]步骤17、所述总线仲裁单元从所述紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于紧急态的在线跟踪单元,作为第二响应跟踪单元;
[0034]步骤18、所述总线仲裁单元获取其余在线跟踪单元中处于增长态和活动态的在线跟踪单元;判断处于增长态和活动态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤19;否则按照响应优先级从高到低的顺序进行查询,获得到优先级最高且处于增长态和活动态的在线跟踪单元,作为第三响应跟踪单元;
[0035]步骤19、所述总线仲裁单元从所述紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于增长态和活动态的在线跟踪单元,作为第三响应跟踪单元;
[0036]步骤20、所述总线仲裁单元获取其余在线跟踪单元中处于增长态的在线跟踪单元;判断处于增长态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤21;否则按照响应优先级从高到低的顺序进行查询,获得到优先级最高且处于增长态的在线跟踪单元,作为第四响应跟踪单元;
[0037]步骤21、所述总线仲裁单元从所述紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于增长态的在线跟踪单元,作为第四响应跟踪单元;
[0038]步骤22、当操作结果U= I且V= I时;以所述第一响应跟踪单元作为下个响应跟踪单元;
[0039]当操作结果U = I且V = O时;以所述第二响应跟踪单元作为下个响应跟踪单元;
[0040]当操作结果U = O且V = I时;以所述第三响应跟踪单元作为下个响应跟踪单元;
[0041]当操作结果U = O且V = O时;以所述第四响应跟踪单元作为下个响应跟踪单元;
[0042]步骤23、当计数器的值等于当前响应跟踪单元的时间片长度或请求寄存器R中当前响应跟踪单元所对应的位为“O”时,计数器清零;并将所述下个响应跟踪单元作为当前响应跟踪单元后,返回步骤12执行。
[0043]与已有技术相比,本发明有益效果体现在:
[0044]1、本发明的通过为各个在线跟踪单元提供可配置的门限值、优先级以及时间片,并结合活动态的判断,根据优先级的不同,采用两种不同的查询方式,克服了现有技术中高数据溢出率、高资源消耗以及可扩展性差等问题,从而使总线仲裁响应各个在线跟踪单元的时间更加合理,减少了队列切换和硬件开销,提高了缓冲利用率。
[0045]2、本发明使得各个在线跟踪单元能够根据各自对应的缓存容量设置相应的门限值,并通过紧急态判断,使总线仲裁优先响应紧急态的在线跟踪单元;解决了Trace Funnel技术中高优先级的缓冲空间尚未充分利用而低优先级的溢出严重问题,降低了数据溢出率。
[0046]3、本发明中总线仲裁单元通过对各在线跟踪单元的活动态进行判断,结合紧急态的判断,对在线跟踪单元进行分类,在每一类中,根据配置的优先级是否相同,采用两种查询方式判断出下一响应跟踪单元;这种多方面的考虑使得总线仲裁单元响应各在线跟踪单元的时间分配更加合理,提高了缓冲利用率。
[0047]4、本发明使得各个在线跟踪单元能够根据各自对应的缓存容量设置相应的时间片,充分考虑各在线跟踪单元所需响应时间,有效减少队列切换代价。
[0048]5、本发明通过设置紧急态寄存器、活动态寄存器以及请求寄存器来分别存储各个在线跟踪单元的状态;当需要增加在线跟踪单元时,只需要增加寄存器位宽即可,故该算法的可扩展性很好。
[0049]6、本发明的硬件实现中主要的逻辑运算是“或”运算,无需算术运算,资源消耗小;该模块在Xilinx公司Virtex 7系列的XC7V2000T FPGA芯片上进行原型验证,资源消耗为33个静态寄存器和529个静态LUT。
【具体实施方式】
[0050]本实施例中,一种可配置的动态时间片轮转调度算法,是应用于在线跟踪系统中,在线跟踪系统包括:η个在线跟踪单元、一个总线仲裁单元和一个跟踪传输接口;η个在线跟踪单元分别对应于η个资源节点,用于采集相应资源节点中的数据,并在请求得到响应后将数据传输至总线仲裁单元;总线仲裁单元通过跟踪传输接口进行数据输出;
[0051]总线仲裁单元是按如下步骤对请求进行动态时间片轮转调度:
[0052]步骤1、设置门限
[0053]根据η个在线跟踪单元中各自缓存FIFO容量设置相应的门限值,记为…,A1,…,AnKA1表示第i个在线跟踪单元的门限值;I Si Sn;由于资源节点中的数据特性不同,在线跟踪单元采集到的数据量也不同,为了节约硬件资源,在线跟踪单元中的缓存FIFO容量也是各不相同的。为了后续紧急态判断的合理性,门限值也需作不同设置。首先根据一个在线跟踪单元中FIFO容量设置合适的门限值,再根据该在线跟踪单元中门限值与容量的比例,设置其余在线跟踪单元的门限值,如:当FIFO容量为512的在线跟踪单元的门限值设置为400时;则FIFO容量为256的在线跟踪单元的门限值需设置为200。
[0054]当第i个在线跟踪单元中存储的数据所形成的缓冲队列长队2仏时,则总线仲裁单元将第i个在线跟踪单元所发送的请求设置为紧急态请求;
[0055]当第i个在线跟踪单元中存储的数据所形成的缓冲队列长OfA^B1时,则总线仲裁单元将第i个在线跟踪单元所发送的请求设置为增长态请求;
[0056]当第i个在线跟踪单元中存储的数据所形成的缓冲队列长队=0时,则总线仲裁单元将第i个在线跟踪单元所发送的请求设置为空态请求;
[0057]步骤2、总线仲裁单元对第i个在线跟踪单元的缓存FIFO写使能进行检测,若缓存FIFO写使能为高电平,则判定第i个在线跟踪单元为活动态;若缓存FIFO写使能为低电平,则判定第i个在线跟踪单元为非活动态;
[0058]步骤3、总线仲裁单元根据第i个在线跟踪单元的缓存FIFO容量设置相应的时间片长度,记为{&,&,…,S1,…,SnKS1表示第i个在线跟踪单元的时间片长度;时间片长度的设置也应同门限的设置规律相同,如:当FIFO容量为512的在线跟踪单元的时间片长度值设置为64时;则FIFO容量为256的的在线跟踪单元的时间片长度值需设置为32。此外时间片长度太大会增加缓存溢出风险,太小则会导致队列频繁切换,增加时间浪费和带宽浪费。
[0059]步骤4、总线仲裁单元设置η个在线跟踪单元的响应优先级;优先级可以全部相同,可以全部不同,可以局部相同。该算法的硬件实现中,每个在线跟踪单元的优先级用一个寄存器的值来表示,该值越大则优先级越高。
[0060]步骤5、总线仲裁单元中设置一紧急态寄存器U,第i个在线跟踪单元对应于紧急态寄存器U中的第i位;
[0061]当第i个在线跟踪单元处于紧急态时,则将紧急态寄存器U中的第i位设置为“I”;
[0062]当第i个在线跟踪单元处于增长态或空态时,则将紧急态寄存器U中的第i位设置为 “O”;
[0063]步骤6、总线仲裁单元设置一活动态寄存器V,第i个在线跟踪单元对应于活动寄存器V中的第i位;
[0064]当第i个在线跟踪单元处于活动态时,则将活动态寄存器V中的第i位设置为“I”;
[0065]当第i个在线跟踪单元处于非活动态时,则将活动态寄存器V中的第i位设置为“O” ;
[0066]步骤7、总线仲裁单元设置一请求寄存器R,第i个在线跟踪单元对应于请求寄存器R中的第i位;
[0067]当第i个在线跟踪单元的缓存FIFO为非空时,则将请求寄存器R中的第i位设置为丄;
[0068]当第i个在线跟踪单元的缓存FIFO为空时,则将请求寄存器R中的第i位设置为“O” ;
[0069]R与U相同位的值只可能出现“I”与T、“I”与“O”以及“O”与“O”三种不同情况,当R与U相同位的值不同时,可知该位对应的在线跟踪单元处于增长态。
[0070]步骤8、总线仲裁单元对紧急态寄存器U进行按位“或”操作,得到操作结果U。当u等于I时,则表示存在处于紧急态的在线跟踪单元;当u等于O时,则表示不存在处于紧急态的在线跟踪单元;
[0071]步骤9、总线仲裁单元对活动寄存器V进行按位“或”操作,得到操作结果V。当V等于I时,则表示存在处于活动态的在线跟踪单元;当V等于O时,则表示不存在处于活动态的在线跟踪单元;
[0072]步骤10、总线仲裁单元对请求寄存器R进行按位“或”操作,得到操作结果r。当r等于I时,则表示存在在线跟踪单元正在请求仲裁单元的响应;当r等于O时,则表示所有在线跟踪单元的缓冲FIFO均不存在数据需要输出;
[0073]步骤11、假设第i个在线跟踪单元最先接收到数据,则将第i个在线跟踪单元作为当前响应跟踪单元;此时,操作结果r为“I”,并启动计数器进行计数;
[0074]步骤12、当计数器的值小于当前响应跟踪单元的时间片长度且请求寄存器R中当前响应跟踪单元所对应的位为“I”时,总线仲裁单元获取当前响应跟踪单元的数据,并传输至跟踪传输接口进行输出,同时执行步骤13;
[0075]步骤13、判断操作结果r是否为“O”,若为“O”,则停止计数器并清零;并返回步骤11;若不为“O”,则同时执行步骤14、步骤16、步骤18和步骤20后,再执行步骤22;
[0076]步骤14;总线仲裁单元获取其余在线跟踪单元中处于紧急态且活动态的在线跟踪单元;判断处于紧急态且活动态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤15;否则按照响应优先级从高到低的顺序进行查询,获得优先级最高且处于紧急态和活动态的在线跟踪单元,作为第一响应跟踪单元;
[0077]步骤15、总线仲裁单元从紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于紧急态和活动态的在线跟踪单元,作为第一响应跟踪单元;这里顺时针查询方式是指,假设紧急态寄存器U中当前响应跟踪单元所对应的位是第i位,则判断i+Ι所对应的在线跟踪单元是否满足既是紧急态又是活动态的条件,若满足则将其作为第一响应跟踪单元,若不满足,则继续判断i+2位,直至轮转到第i位。
[0078]步骤16、总线仲裁单元获取其余在线跟踪单元中处于紧急态的在线跟踪单元;判断处于紧急态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤17;否则按照响应优先级从高到低的顺序进行查询,获得到优先级最高且处于紧急态的在线跟踪单元,作为第二响应跟踪单元;
[0079 ]步骤17、总线仲裁单元从紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于紧急态的在线跟踪单元,作为第二响应跟踪单元;
[0080]步骤18、总线仲裁单元获取其余在线跟踪单元中处于增长态和活动态的在线跟踪单元;判断处于增长态和活动态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤19;否则按照响应优先级从高到低的顺序进行查询,获得到优先级最高且处于增长态和活动态的在线跟踪单元,作为第三响应跟踪单元;
[0081 ]步骤19、总线仲裁单元从紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于增长态和活动态的在线跟踪单元,作为第三响应跟踪单元;
[0082]步骤20、总线仲裁单元获取其余在线跟踪单元中处于增长态的在线跟踪单元;判断处于增长态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤21;否则按照响应优先级从高到低的顺序进行查询,获得到优先级最高且处于增长态的在线跟踪单元,作为第四响应跟踪单元;
[0083]步骤21、总线仲裁单元从紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于增长态的在线跟踪单元,作为第四响应跟踪单元;
[0084]步骤22、当操作结果U = I且V = I时;以第一响应跟踪单元作为下个响应跟踪单元;
[0085]当操作结果u = I且v = 0时;以第二响应跟踪单元作为下个响应跟踪单元;
[0086]当操作结果U = O且V = I时;以第三响应跟踪单元作为下个响应跟踪单元;
[0087]当操作结果U = O且V = O时;以第四响应跟踪单元作为下个响应跟踪单元;
[0088]步骤23、当计数器的值等于当前响应跟踪单元的时间片长度或请求寄存器R中当前响应跟踪单元所对应的位为“O”时,计数器清零;并将下个响应跟踪单元作为当前响应跟踪单元后,返回步骤12执行。
【主权项】
1.一种可配置的动态时间片轮转调度算法,是应用于在线跟踪系统中,所述在线跟踪系统包括:η个在线跟踪单元、一个总线仲裁单元和一个跟踪传输接口;所述η个在线跟踪单元分别对应于η个资源节点,用于采集相应资源节点中的数据,并在请求得到响应后将数据传输至所述总线仲裁单元;所述总线仲裁单元通过所述跟踪传输接口进行数据输出;其特征是,所述总线仲裁单元是按如下步骤对请求进行动态时间片轮转调度: 步骤1、设置门限 根据所述η个在线跟踪单元中各自缓存FIFO容量设置相应的门限值,记为…,A1,…,An} ,A1表示第i个在线跟踪单元的门限值;I < i < η; 当所述第i个在线跟踪单元中存储的数据所形成的缓冲队列长队2仏时,则所述总线仲裁单元将所述第i个在线跟踪单元所发送的请求设置为紧急态请求; 当所述第i个在线跟踪单元中存储的数据所形成的缓冲队列长(XAifB1时,则所述总线仲裁单元将所述第i个在线跟踪单元所发送的请求设置为增长态请求; 当所述第i个在线跟踪单元中存储的数据所形成的缓冲队列长队=0时,则所述总线仲裁单元将所述第i个在线跟踪单元所发送的请求设置为空态请求; 步骤2、所述总线仲裁单元对所述第i个在线跟踪单元的缓存FIFO写使能进行检测,若缓存FIFO写使能为高电平,则判定所述第i个在线跟踪单元为活动态;若缓存FIFO写使能为低电平,则判定所述第i个在线跟踪单元为非活动态; 步骤3、所述总线仲裁单元根据第i个在线跟踪单元的缓存FIFO容量设置相应的时间片长度,记为故,&,...,S1,…,SnKS1表示第i个在线跟踪单元的时间片长度; 步骤4、所述总线仲裁单元设置η个在线跟踪单元的响应优先级; 步骤5、所述总线仲裁单元中设置一紧急态寄存器U,所述第i个在线跟踪单元对应于所述紧急态寄存器U中的第i位; 当第i个在线跟踪单元处于紧急态时,则将紧急态寄存器U中的第i位设置为“I” ; 当第i个在线跟踪单元处于增长态或空态时,则将紧急态寄存器U中的第i位设置为“O” ; 步骤6、所述总线仲裁单元设置一活动态寄存器V,所述第i个在线跟踪单元对应于所述活动寄存器V中的第i位; 当第i个在线跟踪单元处于活动态时,则将活动态寄存器V中的第i位设置为“I” ; 当第i个在线跟踪单元处于非活动态时,则将活动态寄存器V中的第i位设置为“O” ; 步骤7、所述总线仲裁单元设置一请求寄存器R,所述第i个在线跟踪单元对应于所述请求寄存器R中的第i位; 当第i个在线跟踪单元的缓存FIFO为非空时,则将所述请求寄存器R中的第i位设置为丄; 当第i个在线跟踪单元的缓存FIFO为空时,则将所述请求寄存器R中的第i位设置为“O” ; 步骤8、所述总线仲裁单元对所述紧急态寄存器U进行按位“或”操作,得到操作结果u; 步骤9、所述总线仲裁单元对所述活动寄存器V进行按位“或”操作,得到操作结果V; 步骤10、所述总线仲裁单元对所述请求寄存器R进行按位“或”操作,得到操作结果r; 步骤11、假设第i个在线跟踪单元最先接收到数据,则将所述第i个在线跟踪单元作为当前响应跟踪单元;此时,所述操作结果r为“I”,并启动计数器进行计数; 步骤12、当计数器的值小于当前响应跟踪单元的时间片长度且请求寄存器R中当前响应跟踪单元所对应的位为“I”时,所述总线仲裁单元获取所述当前响应跟踪单元的数据,并传输至跟踪传输接口进行输出,同时执行步骤13; 步骤13、判断操作结果r是否为“O”,若为“O”,则停止计数器并清零;并返回步骤11;若不为“O”,则同时执行步骤14、步骤16、步骤18和步骤20后,再执行步骤22; 步骤14;所述总线仲裁单元获取其余在线跟踪单元中处于紧急态且活动态的在线跟踪单元;判断处于紧急态且活动态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤15;否则按照响应优先级从高到低的顺序进行查询,获得优先级最高且处于紧急态和活动态的在线跟踪单元,作为第一响应跟踪单元; 步骤15、所述总线仲裁单元从所述紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于紧急态和活动态的在线跟踪单元,作为第一响应跟踪单元; 步骤16、所述总线仲裁单元获取其余在线跟踪单元中处于紧急态的在线跟踪单元;判断处于紧急态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤17;否则按照响应优先级从高到低的顺序进行查询,获得到优先级最高且处于紧急态的在线跟踪单元,作为第二响应跟踪单元; 步骤17、所述总线仲裁单元从所述紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于紧急态的在线跟踪单元,作为第二响应跟踪单元; 步骤18、所述总线仲裁单元获取其余在线跟踪单元中处于增长态和活动态的在线跟踪单元;判断处于增长态和活动态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤19;否则按照响应优先级从高到低的顺序进行查询,获得到优先级最高且处于增长态和活动态的在线跟踪单元,作为第三响应跟踪单元; 步骤19、所述总线仲裁单元从所述紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于增长态和活动态的在线跟踪单元,作为第三响应跟踪单元; 步骤20、所述总线仲裁单元获取其余在线跟踪单元中处于增长态的在线跟踪单元;判断处于增长态的在线跟踪单元的响应优先级是否相同,若相同,则执行步骤21;否则按照响应优先级从高到低的顺序进行查询,获得到优先级最高且处于增长态的在线跟踪单元,作为第四响应跟踪单元; 步骤21、所述总线仲裁单元从所述紧急态寄存器U中当前响应跟踪单元所对应的位开始,按照顺时针轮转查询相应的在线跟踪单元;获得处于增长态的在线跟踪单元,作为第四响应跟踪单元; 步骤22、当操作结果U= I且V= I时;以所述第一响应跟踪单元作为下个响应跟踪单元; 当操作结果U= I且v = 0时;以所述第二响应跟踪单元作为下个响应跟踪单元; 当操作结果u = 0且V= I时;以所述第三响应跟踪单元作为下个响应跟踪单元; 当操作结果u = 0且v = 0时;以所述第四响应跟踪单元作为下个响应跟踪单元;步骤23、当计数器的值等于当前响应跟踪单元的时间片长度或请求寄存器R中当前响应跟踪单元所对应的位为“O”时,计数器清零;并将所述下个响应跟踪单元作为当前响应跟踪单元后,返回步骤12执行。
【文档编号】G06F13/366GK105824769SQ201610147991
【公开日】2016年8月3日
【申请日】2016年3月14日
【发明人】宋宇鲲, 焦瑞, 张多利, 王存
【申请人】合肥工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1