System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及一种基于链表结构进行请求队列填充读取方法,属于集成电路芯片。
技术介绍
1、目前,行业内对于芯片设计领域中队列管理的传统做法如图1、2所示。例子所采用的是一个8条目的请求队列,实际设计中可根据需求扩展到2^n个条目。白色的方框表示该请求条目为空。带斜线的方框表示该请求条目已无效但仍然占用请求队列。
2、不同的请求按照顺序依次按拍进入队列,头指针所指的条目是最先进入队列的条目,即最老的条目。尾指针所指的条目是新请求在下一拍进入队列时所对应的条目。头指针对应的条目发射出队列,头指针+1,队列每进一个新请求,尾指针+1.
3、当队列满时,新请求无法进入队列,直到头指针所对应条目无效,下一拍头指针+1,留出一个空闲条目位,可以继续进新条目。
4、由于头尾指针的更新逻辑,在插入一个请求后,尾指针只能往后走。从而造成队列中存在气泡的情况。如图2中间的队列满所示,指令c、b、d为有效指令,其余都为无效指令,但是由于头尾指针的更新逻辑造成无效指令无法空出插入新的指令,从而造成队列的处理效率低下。
技术实现思路
1、本专利技术的目的在于提供一种基于链表结构进行请求队列填充读取方法及系统,以解决现有技术由于头尾指针的更新逻辑,从而造成队列中实际存在空余条目但无法插入新请求的缺陷。
2、第一方面:
3、一种基于链表结构进行请求队列填充读取方法,所述方法包括:
4、发送插入总请求队列的指令;
5、基于当前总请
6、需要更新队列的尾指针以及根据链表队列更新逻辑,将写入的指令位置串入链表,供后续的读取步骤查找,若无,则
7、增加一个新类型请求的链表队列,并且创建对应类型队列的头尾指针;
8、根据请求队列读取条目方法,判断对应类型请求队列中是否有请求,若是,则根据头指针指示的队列条目号读取请求,接着将链表中的下一条请求索引号写入头指针,该下一条请求的位置是从链表队列中读出的;
9、更新对应种类请求队列的头指针;
10、若否,则报错。
11、进一步地,所述操作为写入新请求进入总队列时,请求队列填充方法包括:
12、判断总请求队列是否有空位,若有,则判断新插入的请求是否为该类型队列中的第一个请求,若是,则
13、增加一个新类型请求的链表队列,并且创建对应类型队列的头尾指针。
14、进一步地,所述更新对应队列的头尾指针的方法包括:
15、头尾指针更新为当前填充条目的索引号
16、进一步地,所述判断是否为该类请求在总请求队列中的第一条请求,若否,则
17、更新对应队列的尾指针以及链表队列。
18、进一步地,所述更新对应队列的尾指针以及链表队列的方法包括:
19、对应的指令队列写入新请求;
20、尾指针更新为当前填充条目的索引号,更新链表队列。
21、进一步地,所述操作为从总队列中读出某类的请求,请求队列读取条目方法包括:
22、判断对应类型请求队列中是否有请求,若是,则根据头指针指示的队列条目号读取请求,接着将链表中的下一条请求索引号写入头指针,该下一条请求的位置是从链表队列中读出的;
23、更新对应种类请求队列的头指针;
24、若否,则报错。
25、进一步地,所述更新对应队列的头指针的方法包括:
26、该类请求队列的头指针更新为当前链表队列中读出的索引号。
27、进一步地,所述寻找空闲条目算法包括:
28、第一步,将目前总队列的使用向量取反。总队列的使用向量即为各个条目有效位的合集,条目被占用则为1,否则为0;
29、第二步,从总队列的低索引号往高索引号寻找,遇到第一个条目有效位为1的条目,则停止寻找过程;并且将剩余的使用向量都置1;
30、第三步,将当前的使用向量结果左移一比特位;
31、第四步,再将当前的使用向量结果取反;
32、完成上述操作后,向量为1的条目号则为当前时刻的空闲索引号。
33、进一步地,所述链表队列更新逻辑包括:
34、单个链表队列条目的结构为链表名[索引号]=新条目号;
35、在总队列中已经存在某类的有效请求一条,且下一个同类请求写入总队列时,链表队列条目的索引号等于当前尾指针指向的总队列条目号,链表队列条目的新条目号等于当前寻找空闲条目算法返回的索引号。
36、第二方面:
37、一种基于链表结构进行请求队列填充读取系统,所述系统包括:
38、请求模块,用于发送插入请求队列指令;
39、插入模块,基于请求队列指令根据空闲条目算法查看队列是否有空闲,若有空闲,则根据请求自身种类先判断当前请求队列中是否已经有同类请求在里面,若有,则
40、需要更新队列的尾指针以及根据链表队列更新逻辑,将写入的指令位于总请求队列的位置串入链表,供后续的读取步骤查找,若无,则
41、增加一个新类型请求的链表队列,并且创建对应类型队列的头尾指针;
42、读取模块,用于根据请求队列读取条目方法,判断对应类型请求队列中是否有请求,若是,则根据头指针指示的队列条目号读取请求,接着将链表中的下一条请求索引号写入头指针,该下一条请求的位置是从链表队列中读出的;
43、更新对应种类请求队列的头指针;
44、若否,则报错。
45、与现有技术相比,本专利技术所达到的有益效果:
46、1、本专利技术以“链表”的形式将相同类的请求在队列中相互关联,即使在队列中是乱序存放的,由于有链表队列的存在保存了互相之间的关系,可以正确识别出请求的顺序;
47、2、本专利技术空闲算法的使用使得请求队列中,只需要有空条目,就可以进新的请求。对比传统的做法而言,消除了指令列表条目之间的气泡;
48、3、本专利技术由于添加了队列属性,使得不同类型的请求可以共享一个完整的请求队列空间,而不需要一类请求分配一个请求队列空间;
49、4、本专利技术对于需要根据进入队列的先后顺序,按序发射的指令而言比较友好,本方法做到了在队列中乱序保存,但是发射时可以按序发射。
本文档来自技高网...【技术保护点】
1.一种基于链表结构进行请求队列填充读取方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述操作为写入新请求进入总队列时,请求队列填充方法包括:
3.根据权利要求2所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述更新对应队列的头尾指针的方法包括:
4.根据权利要求2所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述判断是否为该类请求在总请求队列中的第一条请求,若否,则
5.根据权利要求4所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述更新对应队列的尾指针以及链表队列的方法包括:
6.根据权利要求1所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述操作为从总队列中读出某类的请求,请求队列读取条目方法包括:
7.根据权利要求6所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述更新对应队列的头指针的方法包括:
8.根据权利要求1所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述寻找
9.根据权利要求6所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述链表队列更新逻辑包括:
10.一种基于链表结构进行请求队列填充读取系统,其特征在于,所述系统包括:
...【技术特征摘要】
1.一种基于链表结构进行请求队列填充读取方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述操作为写入新请求进入总队列时,请求队列填充方法包括:
3.根据权利要求2所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述更新对应队列的头尾指针的方法包括:
4.根据权利要求2所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述判断是否为该类请求在总请求队列中的第一条请求,若否,则
5.根据权利要求4所述的基于链表结构进行请求队列填充读取方法,其特征在于,所述更新对应队列的尾指针以及链表...
【专利技术属性】
技术研发人员:黄颢彦,汪争,张琦滨,刘奔,严大卫,曹世威,乌绮,张鼎,
申请(专利权)人:无锡先进技术研究院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。