乱序处理器中乱序执行队列多指令的分配执行方法和装置制造方法及图纸

技术编号:31499040 阅读:24 留言:0更新日期:2021-12-18 12:46
本发明专利技术公开了一种乱序处理器中乱序执行队列多指令的分配执行方法和装置,包括:构建顺序维护队列为进入乱序执行队列的指令和数据分配空项,乱序执行队列包括func域,顺序维护队列包括标识id域和尾指针tail;将乱序执行队列编号,通过顺序维护队列id域记录乱序执行队列id号;将指令进入顺序维护队列tail对应id号所指的乱序执行队列项;按照顺序维护队列的id号信息,从乱序执行队列选取准备好的项;根据func域和FU的指令名称和项数,按照分配规则将指令分配到FU。本发明专利技术既满足oldest

【技术实现步骤摘要】
乱序处理器中乱序执行队列多指令的分配执行方法和装置


[0001]本专利技术涉及微处理器
,特别涉及一种乱序处理器中乱序执行队列多指令的分配执行方法和装置。

技术介绍

[0002]乱序处理器中的乱序队列用来缓存一定数量的指令(指令可以是程序的指令,也可以是处理器内部译码成的内部操作,一条指令可能翻译成一个操作也可能翻译成多个操作)和数据,负责为进入队列的指令和数据分配空项,将符合一定条件的指令和数据从队列中选择出来执行。乱序处理器的指令到了乱序队列中,就不会按照程序中指定的顺序在处理器中流动,只要满足执行的条件,后面的指令可以越过前面的指令先执行,以提高指令的执行速度。
[0003]对于进入队列的指令,当有多个空项时,需要分配可以进入的空项。对于选择队列中的指令执行,当队列中有多项准备好,一般选择最先进入队列的指令执行,即oldest

first策略。这是因为考虑到越是旧的指令,和它存在相关性的指令也就越多,因此优先执行最旧的指令,能够有效地提高处理器执行指令的并行度,而且最旧的指令还占据着处理器中的硬件资源,包括其他的乱序队列、重排序缓存、Store Buffer等部件,越早地执行这些旧的指令,就可以越早地释放这些硬件资源,供后面的指令使用。要识别出乱序队列中哪些指令是最旧的,就需要知道指令进入流水线的先后顺序。现有技术采用计数器、重排序缓存或者用指针维护乱序队列的顺序的方法识别最旧指令,这些方法会造成乱序处理器延迟大、功耗高、占用面积大等缺点。
[0004]现有技术的处理器一般是几个FU(功能部件)共用一个发射队列(执行队列),如果这个发射队列每次发射一条指令到FU,就需要一个1

of

M的仲裁电路(M为发射队列的容量),如果同时发送多条指令到N个FU,则需要一个N

of

M的仲裁电路,以每周期从发射队列选择两条指令为例,则需要两级仲裁电路,第一级仲裁电路选择一条指令后,会将这条指令进行标记,这样在第二级仲裁电路中就可以排除掉上一级的影响,但是这样实现的2

of

M的仲裁电路,它产生的延迟是1

of

M的仲裁电路的两倍,当使用这种方式扩展到N

of

M的仲裁电路,它产生的延迟会很大。还有一种方式,为每个FU设置一个专属的1

of

M仲裁电路,当指令被写到发射队列中的某项时,根据这条指令的类型,这条指令会被轮流或者随机分配给一个对应的FU,不能进行选择,当有多条指令同时发射时,由于每个FU只能执行一条指令,就会造成有些指令不能执行,有些FU空闲的状态,使处理器并不能发挥最优的性能。

技术实现思路

[0005]为解决现有技术问题,本专利技术提出了一种乱序执行队列多指令执行的分配方法和装置,既能满足oldest

first策略,又满足多指令同时分配执行时,可以合理分配多条指令到不同的功能部件FU中执行,使所有功能部件FU可以充分利用,以提高调度及分配执行的效率,从而提高处理器性能,提高主频,降低功耗,降低成本。
[0006]为达到上述目的,本专利技术提供一种乱序处理器中乱序执行队列多指令执行的分配方法,包括以下步骤:构建与乱序执行队列相对应的顺序维护队列,为进入乱序执行队列的指令和数据分配空项,其中,乱序执行队列包括可执行功能部件func域,顺序维护队列包括标识id域和尾指针tail。
[0007]将多项的乱序执行队列各项依次编号,并通过顺序维护队列的id域记录乱序执行队列的id号。
[0008]将多指令分别进入顺序维护队列的尾指针tail所指的项及其向下的项对应的id号所指的乱序执行队列项。
[0009]按照顺序维护队列给出的id号信息,从乱序执行队列选取准备好的项做执行指令。
[0010]统计出所有的功能部件FU的可执行指令名称和指令项数。
[0011]根据指令的可执行功能部件func域的值和统计出的指令名称和指令项数,按照预设的指令分配规则将多条执行指令分别分配到功能部件FU内执行。
[0012]优选的,顺序维护队列的项数大于等于乱序维护队列的项数。
[0013]乱序执行队列包括有效valid域和准备好rdy域,其中,valid域用于记录乱序执行队列的项是否有效,rdy域用于记录乱序执行队列的项的指令和数据是否已经准备好,顺序维护队列包括tail项,tail项是顺序维护队列尾指针tail所指的项。
[0014]在本专利技术中,当处理器为初始化的情况时,还包括:将顺序维护队列的id域从上到下依次编号,tail置为0,并将乱序执行队列中各项的valid域置为0,其中,valid域为0表示记录的项无效。
[0015]在本专利技术中,当处理器中乱序执行队列为仅多指令进入的情况时,还包括:k条指令进入的情况,k条指令进入顺序维护队列的tail所指的项及其向下的项对应的id号所指的乱序执行队列项,并将顺序维护队列的tail向下移动k项,其中,下一拍tail=当前拍tail+k。
[0016]在本专利技术中,当处理器中乱序执行队列为仅多指令执行的情况时,还包括:q条指令执行的情况,按照所述顺序维护队列从上往下到tail的顺序,选取id号对应的乱序执行队列中q条valid域为1且rdy域为1的可执行项;该项执行后为空项,所述tail项即顺序维护队列尾指针tail所指的项之前可移动的项的内容向上移动,下一拍tail=当前拍tail

q,并将所述空项对应的id号存到顺序维护队列的下一拍tail所指的项及其向下的项对应的id域,其中,valid域为1表示记录的项有效,rdy域为1表示记录的项的指令和数据准备好。
[0017]在本专利技术中,当队列满时,还包括:在准备好的q条可执行指令执行后,将尾指针tail所指的项之前可移动的项的内容向上移动,下一拍尾指针tail指向顺序维护队列的tail

q项,下一拍tail=当前拍tail

q,并将乱序执行队列中指令执行后的空项的id号存到下一拍尾指针tail所指的项及其向下的项对应的id域。
[0018]在本专利技术中,当处理器中乱序执行队列为同时多指令进入和执行的情况时,还包括:
k条新指令进入且q条指令执行的情况,按照顺序维护队列从上往下到tail的顺序,选取id号对应的乱序执行队列中q个valid域为1且rdy域为1的可执行项执行,tail+k项之前可移动的项的内容向上移动,将k条新指令进入顺序维护队列tail

q项及其向下的项对应id号所指的乱序执行队列项,下一拍tail=当前拍tail

q+k,将执行后的空项的id号存到下一拍tail所指的项及其向下的项对应的id域。
[0019]优选的,k小于等于乱序维护队列的空项数。<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种乱序处理器中乱序执行队列多指令的分配执行方法,其特征在于,包括以下步骤:构建与乱序执行队列相对应的顺序维护队列,为进入所述乱序执行队列的指令和数据分配空项,其中,所述乱序执行队列包括可执行功能部件func域,所述顺序维护队列包括标识id域和尾指针tail;将多项的所述乱序执行队列各项依次编号,并通过所述顺序维护队列的id域记录所述乱序执行队列的id号;将多指令分别进入顺序维护队列的尾指针tail所指的项及其向下的项对应的id号所指的乱序执行队列项;按照所述顺序维护队列给出的id号信息,从所述乱序执行队列选取准备好的项做执行指令;统计出所有的功能部件FU的可执行指令名称和指令项数;根据所述指令的可执行功能部件func域的值和所述统计出的指令名称和指令项数,按照预设的指令分配规则将多条所述的执行指令分别分配到所述的功能部件FU内执行。2.根据权利要求1所述的乱序处理器中乱序执行队列多指令的分配执行方法,其特征在于,所述顺序维护队列的项数大于等于所述乱序维护队列的项数。3.根据权利要求1所述的乱序处理器中乱序执行队列多指令的分配执行方法,其特征在于,所述乱序执行队列包括有效valid域和准备好rdy域,其中,所述valid域用于记录所述乱序执行队列的项是否有效,所述rdy域用于记录所述乱序执行队列的项的指令和数据是否已经准备好,所述顺序维护队列包括tail项,tail项是顺序维护队列尾指针tail所指的项。4.根据权利要求3所述的乱序处理器中乱序执行队列多指令的分配执行方法,其特征在于,当处理器为初始化的情况时,还包括:将所述顺序维护队列的id域从上到下依次编号,tail置为0,并将所述乱序执行队列中各项的valid域置为0,其中,所述valid域为0表示记录的项无效。5.根据权利要求1所述的乱序处理器中乱序执行队列多指令的分配执行方法,其特征在于,当处理器中乱序执行队列为仅多指令进入的情况时,还包括:k条指令进入的情况,k条指令进入顺序维护队列的tail所指的项及其向下的项对应的id号所指的乱序执行队列项,并将所述顺序维护队列的tail向下移动k项,其中,下一拍tail=当前拍tail+k。6.根据权利要求3所述的乱序处理器中乱序执行队列多指令的分配执行方法,其特征在于,当处理器中乱序执行队列为仅多指令执行的情况时,还包括:q条指令执行的情况,按照所述顺序维护队列从上往下到tail的顺序,选取id号对应的乱序执行队列中q条valid域为1且rdy域为1的可执行项;该项执行后为空项,所述tail项即顺序维护队列尾指针tail所指的项之前可移动的项的内容向上移动,下一拍tail=当前拍tail

q,并将所述空项对应的id号存到所述顺序维护队列的下一拍tail所指的项及其向下的项对应的id域,其中,所述valid域为1表示记录的项有效,所述rdy域为1表示记录的项的指令和数据准备好。7.根据权利要求6所述的乱序处理器中乱序执行队列多指令的分配执行方法,其特征
在于,当所述队列满时,还包括:在准备好的q条可执行指令执行后,将所述尾指针tail所指的项之前可移动的项的内容向上移动,下一拍尾指针tail指向顺序维护队列的tail

q项,下一拍tail=当前拍tail

q,并将所述乱序执行队列中指令执行后的空项的id号存到下一拍tail所指的项及其向下的项对应的id域。8.根据权利要求3所述的乱序处理器中乱序执行队列多指令的分配执行方法,其特征在于,当处理器中乱序执行队列为同时多指令进入和执行的情况时,还包括:k条新指令进入且q条指令执行的情况,按照所述顺序维护队列从上往下到tail的顺序,选取id号对应的乱序执行队列中q条valid域为1且rdy域为1的可执行项执行,...

【专利技术属性】
技术研发人员:李祖松郇丹丹
申请(专利权)人:北京微核芯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1