CN112099854B - 调度乱序队列和判断队列取消项的方法和装置 - Google Patents
调度乱序队列和判断队列取消项的方法和装置 Download PDFInfo
- Publication number
- CN112099854B CN112099854B CN202011243930.1A CN202011243930A CN112099854B CN 112099854 B CN112099854 B CN 112099854B CN 202011243930 A CN202011243930 A CN 202011243930A CN 112099854 B CN112099854 B CN 112099854B
- Authority
- CN
- China
- Prior art keywords
- instruction
- pointer
- read pointer
- cache
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000012163 sequencing technique Methods 0.000 claims abstract description 36
- 239000000872 buffer Substances 0.000 claims description 90
- 230000003247 decreasing effect Effects 0.000 claims description 14
- 230000007423 decrease Effects 0.000 claims description 8
- 230000008030 elimination Effects 0.000 claims description 8
- 238000003379 elimination reaction Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 4
- 238000005096 rolling process Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种调度乱序队列和判断队列取消项的方法和装置,其中,方法包括以下步骤:在重定序缓存或转移重定序缓存地址前面增加最高位;用重定序缓存或转移重定序缓存的读指针增加的最高位,异或两个需要比较的重定序缓存或转移重定序缓存地址增加的最高位,将异或后得到的地址作为两条指令的年龄信息进行大小比较,以判断得到指令年龄的新老。本发明实施例可以有效表达出指令年龄的真实信息,在判断时由于异或门的使用减少了比较器的使用数量,从而有效降低了指令年龄判断的复杂度,减小指令年龄判断的延时,有效提高乱序处理器的性能、降低功耗、节约面积。
Description
技术领域
本发明涉及乱序处理器技术领域,特别涉及一种调度乱序队列和判断队列取消项的方法和装置。
背景技术
乱序处理器的指令到了乱序队列中,就不会按照程序中指定的顺序在处理器中流动,只要满足执行的条件,后面的指令可以越过前面的指令先执行,以提高指令的执行速度。
在乱序处理器的乱序队列调度上,当乱序队列中有多条指令准备好,一般优先选择程序上最早的指令执行,即采用oldest-first策略进行调度仲裁,因此需要判断指令的先后顺序。这是考虑到越是旧的指令,和它存在相关的指令也就越多,因此优先执行最旧的指令,能够有效地提高处理器执行指令的并行度,而且最旧的指令还占据着处理器中的硬件资源,包括其他的乱序队列、重定序缓存、写缓冲区(StoreBuffer)等部件,越早地执行这些旧的指令,就可以越早地释放这些硬件资源,供后面的指令使用。乱序处理器中的乱序队列包括发射队列、各级缓存的访问队列、缓存访问失效队列,一致性请求队列等。
当乱序处理器因为转移预测错、访存相关等引起的重新执行,或因为例外引发的异常等发生取消等情况时,需要判断在流水线中还没有提交的指令中有哪些指令是处于转移预测错的指令、访存相关引起重新执行的指令或例外引发异常的指令的后面,属于需要同引发取消的指令一起被取消的指令,在流水线各个阶段来取消这些指令,让这些指令重新执行,或回滚到流水线的特定阶段再开始执行。
要识别出乱序队列中哪些指令是最旧的,就需要知道这些指令的年龄信息,年龄信息表示指令进入流水线的先后顺序。在普通的顺序执行的处理器中,指令的年龄信息很容易被追踪,而到了乱序处理器的乱序队列中之后,这些年龄信息就被打乱了,但是在处理器中还有一个地方,按照进入流水线的顺序记录着处理器中的所有指令,这个部件就是ROB(ReorderBuffer,重定序缓存),指令被重命名之后,会按照程序中指定的顺序写到ROB中,因此可以使用每条指令在ROB中的位置(也就是寻址ROB的地址值)作为这条指令的年龄信息。
对于处理器发生取消的情况,判断在流水线中还没有提交的指令中哪些是处于引发取消的指令后面的属于需要同引发取消的指令一起被取消的指令,可以通过重定缓存ROB中的位置信息来比较哪些指令是处于引发取消指令后面的指令。
另外,对于转移预测错取消的情况,判断在流水线中还没有提交的指令哪些是处于发生转移预测错的转移指令后面的需要同转移预测错的指令一起被取消的指令,除ROB中记录的位置信息外还可以通过B-ROB(BranchReorderBuffer,转移重定序缓存)中的位置信息来比较哪些指令是处于发生转移预测错指令后面的需要取消的指令。
然而,由于ROB和B-ROB本质上都是一个FIFO(First Input First Output,先进先出)队列,因此直接使用它的地址是无法表达出指令年龄的真实信息的,从而亟需设计一种机制来解决上述问题。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一目的在于提出一种调度乱序队列和判断队列取消项的方法,可以有效表达出指令年龄的真实信息,在判断时由于异或门的使用减少了比较器的使用数量,有效降低了指令年龄判断的复杂度,减小指令年龄判断的延时,有效提高乱序处理器的性能、降低功耗、节约面积。
本发明的第二个目的在于提出一种调度乱序队列和判断队列取消项的装置。
本发明的第三个目的在于提出一种电子设备。
本发明的第四个目的在于提出一种非临时性计算机可读存储介质。
为达到上述目的,本发明第一方面提供一种调度乱序队列和判断队列取消项的方法,包括以下步骤:在重定序缓存或转移重定序缓存地址前面增加最高位;用重定序缓存或转移重定序缓存的读指针增加的最高位,异或两个需要比较的重定序缓存或转移重定序缓存地址增加的最高位,将异或后得到的地址作为两条指令的年龄信息进行大小比较,以判断得到指令年龄的新老。
根据本发明的调度乱序队列和判断队列取消项的方法,通过异或重定序缓存或转移重定序缓存的读指针增加的最高位与其缓存地址增加的最高位得到指令的年龄信息,并比较指令的年龄信息得到指令年龄的新老,以有效表达出指令年龄的真实信息,在判断时由于异或门的使用减少了比较器的使用数量,从而有效降低了指令年龄判断的复杂度,减小指令年龄判断的延时,有效提高乱序处理器的性能、降低功耗、节约面积。解决了由于写指针的翻转引起的根据重定序缓存或转移重定序缓存的地址进行年龄判断时,出现的指令年龄大小的混乱问题。
另外,根据本发明上述的调度乱序队列和判断队列取消项的方法还可以具有以下附加的技术特征:
进一步地,还包括:在调度乱序队列时,选择队列中有效且年龄最老的指令进行执行。
进一步地,在判断队列取消项时,选择队列中引起取消的指令及比引起取消的指令的年龄新的指令进行取消。
进一步地,所述重定序缓存或转移重定序缓存的读取由读指针控制,其中,当队列非空时,所述读指针指向下一次将要读取的第一项,所述重定序缓存或转移重定序缓存是有序的先进先出队列,且所述读指针指向的项是重定序缓存或转移重定序缓存中年龄最老的项,所述年龄最老的项为年龄最老的指令对应的项;当队列空时,读指针和写指针指向同一个空项,读指针和写指针增加的最高位的值相同。
进一步地,所述重定序缓存或转移重定序缓存的写入由写指针控制,每条指令在所述重定序缓存或转移重定序缓存中的位置由所述写指针分配,其中,在队列未全满时,所述写指针指向下一次将要写入的第一个空项;在队列满时,写指针和读指针指向同一项,写指针和读指针增加的最高位的值相反。
进一步地,所述重定序缓存或转移重定序缓存的写指针和读指针在复位状态时均指向复位项,当新指令写入到重定序缓存或转移重定序缓存中时,所述写指针指向下一个将要写入的项,当指令退出后,所述读指针指向下一个将要读出的项。
进一步地,所述复位项是指复位时写指针和读指针指向的同一项,复位项为队列的任一项,在复位时读指针和写指针增加的地址最高位相同。
进一步地,所述读指针指向的下一个将要读出的项或写指针指向的下一个将要写入的项,按地址增加的方向或按地址减小的方向进行指向。
进一步地,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址增加的方向指向下一项时,包括:当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针指向的下一项低位从0开始编码,其中,所述第一预设项数由最大项数确定;当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针增加的最高位的值翻转。
进一步地,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址增加的方向指向下一项时,包括:当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针指向的下一项继续编码,直到到达2的幂次项再低位从0重新编码;当写指针或读指针低位到达第二预设项数时,写指针或读指针增加的最高位翻转,其中,所述第二预设项数由2的幂次确定。
进一步地,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址减小的方向指向下一项时,包括:当写指针或读指针低位减小到0时,写指针或读指针指向的下一项低位从队列的第一预设项数开始编码;当写指针或读指针低位减小到0时,写指针或读指针增加的最高位的值翻转。
进一步地,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址减小的方向指向下一项时,包括:当写指针或读指针低位减小到0时,写指针或读指针指向的下一项低位从最接近队列项数且比队列项数大的第二预设项数重新进行编码;当写指针或读指针低位减小到0时,写指针或读指针增加的最高位翻转。
进一步地,当所述读指针和写指针按地址增加的方向指向下一项时,地址增加的方向上年龄值小,其中,年龄值越小,则年龄越老,年龄值越大,则年龄越新。
进一步地,当所述读指针和写指针按地址减小的方向指向下一项时,地址减小的方向上年龄值大,其中,年龄值越大,则年龄越老,年龄值越小,则年龄越新。
进一步地,在重定序缓存和转移重定序缓存地址前面增加的最高位为值A或值B,其中,值A和值B均为1位的二进制值,且值A和值B的值相反。
进一步地,当所述重定序缓存或转移定序缓存中写入和退出指令后,写指针和读指针均未翻转时,包括:从读指针到写指针上一项之间的指令有效;在写指针未翻转时,写指针分配的指令的地址增加的最高位均为值A;在读指针未翻转时,读指针增加的最高位均为值A。
进一步地,当所述重定序缓存或转移定序缓存中写入和退出指令后,写指针和读指针均未翻转时,包括:从读指针到写指针上一项之间的指令有效;在写指针未翻转时,写指针分配的指令的地址增加的最高位均为值A;在读指针未翻转时,读指针增加的最高位均为值A。
进一步地,当所述重定序缓存或转移重定序缓存中写入和退出指令后,写指针和读指针均翻转时,包括:写入指令的地址最高位为值B,读指针增加的最高位为值B。
进一步地,当所述重定序缓存或转移重定序缓存中写入和退出指令后,写指针再次翻转、读指针未再次翻转时,包括:写入指令的地址增加的最高位为值A,读指针增加的最高位为值B。
进一步地,当所述重定序缓存或转移重定序缓存中写入和退出指令后,写指针和读指针均再次翻转时,包括:写指针与读指针增加的最高位均恢复到值A。
进一步地,还包括:在满足发生例外引发异常取消条件时,在流水线中的指令获取对应的年龄信息,以与发生例外引起异常的指令的年龄信息进行比较,如果流水线中的指令年龄新,则进行取消。
进一步地,还包括:在满足发生转移预测错引起取消条件时,则流水线中的每一条指令都带有指令的重定序缓存地址或转移重定序缓存地址,将所述流水线中的指令增加的最高位异或重定序缓存或转移重定序缓存的读指针增加的最高位后得到的年龄信息,与发生转移预测错引起取消指令增加的最高位,异或重定序缓存或转移重定序缓存的读指针增加的最高位后得到的年龄信息进行比较,如果流水线中的指令年龄新,则进行取消。
进一步地,还包括:在发生访存相关引起的重新执行时,将取数指令及比所述取数指令年龄新的指令均进行回滚,回滚的指令均重新执行。
为达到上述目的,本发明第二方面提供一种调度乱序队列和判断队列取消项的装置,包括:增位模块,用于在重定序缓存和转移重定序缓存地址前面增加最高位;比较模块,用于用重定序缓存或转移重定序缓存的读指针增加的最高位,异或两个需要比较的重定序缓存或转移重定序缓存地址增加的最高位,将异或后得到的地址作为两条指令的年龄信息进行大小比较,以判断得到指令年龄的新老。
根据本发明的调度乱序队列和判断队列取消项的装置,通过异或重定序缓存或转移重定序缓存的读指针增加的最高位与其缓存地址增加的最高位得到指令的年龄信息,并比较指令的年龄信息得到指令年龄的新老,以有效表达出指令年龄的真实信息,在判断时由于异或门的使用减少了比较器的使用数量,从而有效降低了指令年龄判断的复杂度,减小指令年龄判断的延时,有效提高乱序处理器的性能、降低功耗、节约面积。解决了由于写指针的翻转引起的根据重定序缓存或转移重定序缓存的地址进行年龄判断时,出现的指令年龄大小的混乱问题。
另外,根据本发明上述的调度乱序队列和判断队列取消项的装置还可以具有以下附加的技术特征:
进一步地,还包括:调度模块,在调度乱序队列时,选择队列中有效且年龄最老的指令进行执行。
进一步地,还包括:取消模块,用于判断队列取消项时,选择队列中引起取消的指令及比引起取消的指令的年龄新的指令进行取消。
为达到上述目的,本发明第三方面提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行如上述实施例所述的调度乱序队列和判断队列取消项的方法。
为达到上述目的,本发明第四方面提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上述实施例所述的调度乱序队列和判断队列取消项的方法。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为重定序缓存的读指针、写指针和地址变化示意图;
图2为根据本发明实施例提供的调度乱序队列和判断队列取消项的方法的流程示意图;
图3为根据本发明实施例提供的用于指令年龄比较的装置结构示意图;
图4为根据本发明实施例提供的复位时的重定序缓存示意图;
图5为根据本发明实施例提供的读写指针都未翻转的重定序缓存示意图;
图6为根据本发明实施例提供的写指针翻转、读指针未翻转的重定序缓存示意图;
图7为根据本发明实施例提供的读写指针都翻转后的重定序缓存示意图;
图8为根据本发明实施例提供的写指针再次发生翻转、读指针还未再次翻转的重定序缓存示意图;
图9为根据本发明实施例提供的复位时的重定序缓存示意图;
图10为根据本发明示例提供的读写指针都未翻转的重定序缓存示意图;
图11为根据本发明示例提供的写指针翻转、读指针未翻转的重定序缓存示意图;
图12为根据本发明示例提供的读写指针都翻转后的重定序缓存示意图;
图13为根据本发明示例提供的写指针再次发生翻转、读指针还未再次翻转的重定序缓存示意图;
图14为根据本发明实施例提供的乱序队列选择指令执行的仲裁电路示意图;
图15为根据本发明实施例提供的乱序队列仲裁的指令用重定序缓存中的地址生成年龄(age)值示意图;
图16为根据本发明实施例提供的指令例外取消判断示意图;
图17为根据本发明实施例提供的指令转移取消判断示意图;
图18为根据本发明实施例提供的定点派遣队列因回滚引起取消项的判断示意图;
图19为根据本发明实施例的调度乱序队列和判断队列取消项的装置的方框示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
由于ROB或B-ROB本质上都是一个FIFO队列,因此直接使用ROB或B-ROB的地址往往无法表达出指令年龄的真实信息,以ROB中包括八个表项(entry)为例,如图1所示。直接使用指令在ROB中的地址,无法表达指令的真实年龄信息。
在图1中,初始状态时,位于ROB底端的地址最小,为0,而位于ROB顶端的地址最大,为7。指令从地址0开始写入到ROB中,因此ROB中地址较小的表项中的指令更老。ROB的写入由尾指针也称写指针控制,读取受到头指针也称读指针的控制,因此每条指令在ROB中的位置由写指针分配,写指针会重复地出现0、1、2、3、4、5、6、7,每次写指针翻转时(也就是7到0),新的写指针值和旧的写指针值就出现了大小混乱的情况,从而无法仅通过ROB的地址号的大小来判断指令年龄的新旧。
具体的,ROB的写指针和读指针在复位状态时都是指向地址0,这是最初始的状态,当有新的指令写入到ROB中时,写指针会增加,图1的(a)表示了ROB中被写入七条指令后的样子,此时写指针和读指针都出于同一个“面”上,谁也没有翻转过,此时的ROB中,地址较小的指令会更老。
随着时间的推移,又有两条指令进入了ROB,同时ROB中也有两条指令离开了,此时写指针发生了翻转,变为了1,而读指针没有翻转,变为了2。如图1的(b)所示,此时ROB 中地址较小的指令不再是旧的了。
随着时间再次推移,ROB中写入了六条指令,又有七条指令离开了,如图1的(c)所示,现在的写指针变为了7,而读指针变为了1,读指针发生了翻转,此时写指针和读指针又都到了一个“面”上,此时可以看出,ROB中地址较小的指令会更老。可见不能直接通过ROB的地址号的大小来判断指令年龄的新旧,因此,需要设计一种机制来解决上述问题。
下面参照附图描述根据本发明实施例提出的调度乱序队列和判断队列取消项的方法和装置,首先将参照附图描述根据本发明实施例提出的调度乱序队列和判断队列取消项的方法。
具体而言,图2为本发明实施例所提供的一种调度乱序队列和判断队列取消项的方法的流程示意图。
如图2所示,该调度乱序队列和判断队列取消项的方法包括以下步骤:
在步骤S101中,在重定序缓存或转移重定序缓存地址前面增加最高位。
在本发明的一个实施例中,在重定序缓存和转移重定序缓存地址前面增加的最高位为值A或值B,其中,值A和值B均为1位的二进制值,且值A和值B的值相反。
例如,值A和值B可以为0也可以为1,即若A为0,则B为1;若A为1,则B为0。
在步骤S102中,用重定序缓存或转移重定序缓存的读指针增加的最高位,异或两个需要比较的重定序缓存或转移重定序缓存地址增加的最高位,将异或后得到的地址作为两条指令的年龄信息进行大小比较,以判断得到指令年龄的新老。
需要说明的是,本发明实施例可以通过如图3所示的比较装置实现指令年龄的比较,即通过增加异或门实现指令年龄的比较,由于异或门的使用减少了比较器的使用数量,从而有效降低了指令年龄判断的复杂度,减小指令年龄判断的延时,有效提高乱序处理器的性能、降低功耗、节约面积。
如图3所示,在重定序缓存或转移重定序缓存地址前面再增加一位最高位,用重定序缓存或转移重定序缓存的读指针增加的最高位,异或两个需要比较的重定序缓存或转移重定序缓存地址增加的最高位,将异或后得到的地址作为指令的年龄信息,即,
roqid0_cmp={roqid0[highestbit] ^roqhead[highestbit],roqid0[highestbit-1:0]};
roqid1_cmp={roqid1[highestbit]^ roqhead[highestbit],roqid1[highestbit-1:0]}。
再使用roqid0_cmp与roqid1_cmp进行地址大小的比较,得到两条指令年龄的新老。其中,roqid0[highestbit]和roqid1[highestbit]表示两个需要比较的重定序缓存或转移重定序缓存地址增加的最高位,roqhead[highestbit]表示重定序缓存或转移重定序缓存的读指针增加的最高位,roqid0[highestbit-1:0]和roqid1[highestbit-1:0]表示两个需要比较的重定序缓存或转移重定序缓存地址0至最高位-1,roqid0_cmp和roqid1_cmp表示将异或后得到的地址,图3中,roqid0_cmp[highestbit]和roqid1_cmp[highestbit]表示最高位异或后得到的地址,roqid0_cmp[highestbit-1:0]和roqid1_cmp[highestbit-1:0]与roqid0[highestbit-1:0]和roqid1[highestbit-1:0]的地址一样。
以重定序缓存为例,将要进行指令年龄大小比较的两条指令对应的重定序缓存的地址即重定序缓存号分别记为roqid0和roqid1,将重定序缓存地址增加的最高位的位号记为highestbit,初始化时写指针分配的地址增加的最高位为0,当写指针发生翻转后再分配的地址增加的最高位变为1,当写指针再次翻转分配的地址增加的最高位再次为0。用指令在重定序缓存中的地址增加的最高位异或重定序缓存读指针增加的最高位后得到的地址,作为指令的年龄信息进行大小比较。用来进行大小比较的地址分别记为roqid0_cmp、roqid1_cmp,计算公式如下:
roqid0_cmp={roqid0[highestbit]^ roqhead[highestbit],roqid0[highestbit-1:0]};
roqid1_cmp={roqid1[highestbit]^ roqhead[highestbit], roqid1[highestbit-1:0]}。
在本发明的一个实施例中,重定序缓存或转移重定序缓存的读取由读指针控制,其中,当队列非空时,读指针指向下一次将要读取的第一项,重定序缓存或转移重定序缓存是有序的先进先出队列,且读指针指向的项是重定序缓存或转移重定序缓存中年龄最老的项,年龄最老的项为年龄最老的指令对应的项;当队列空时,读指针和写指针指向同一个空项,读指针和写指针增加的最高位的值相同。其中,在本实施例中,将重定序缓存或转移重定序缓存的读指针记为roqhead。读指针也称为头指针。
在本发明的一个实施例中,重定序缓存或转移重定序缓存的写入由写指针控制,每条指令在重定序缓存或转移重定序缓存中的位置由写指针分配,其中,在队列未全满时,写指针指向下一次将要写入的第一个空项;在队列满时,写指针和读指针指向同一项,写指针和读指针增加的最高位的值相反。其中,在本实施例中,将重定序缓存的写指针记为roqtail,在重定序队列中从roqhead到roqtail上一项之间的队列项是有效的项。写指针也称为尾指针。
进一步地,在本发明的一个实施例中,重定序缓存或转移重定序缓存的写指针和读指针在复位状态时均指向复位项,当新指令写入到重定序缓存或转移重定序缓存中时,写指针指向下一个将要写入的项,当指令退出后,读指针指向下一个将要读出的项。
其中,复位项是指复位时写指针和读指针指向的同一项,复位项为队列的任一项,在复位时读指针和写指针增加的地址最高位相同。读指针指向的下一个将要读出的项或写指针指向的下一个将要写入的项,按地址增加的方向或按地址减小的方向进行指向。
需要说明的是,当读指针和写指针按地址增加的方向指向下一项时,地址增加的方向上年龄值小,其中,年龄值越小,则年龄越老,年龄值越大,则年龄越新。当读指针和写指针按地址减小的方向指向下一项时,地址减小的方向上年龄值大,其中,年龄值越大,则年龄越老,年龄值越小,则年龄越新。
举例而言,如图4所示,重定序缓存的写指针和读指针在复位状态时均指向地址0,即最初始的状态。当有新的指令写入到重定序缓存中时,写指针会增加,有指令退出后,读指针会增加。
进一步地,在本发明的一个实施例中,当重定序缓存或转移定序缓存中写入和退出指令后,写指针和读指针均未翻转时,包括:从读指针到写指针上一项之间的指令有效;在写指针未翻转时,写指针分配的指令的地址增加的最高位均为值A;在读指针未翻转时,读指针增加的最高位均为值A。
以ROB为例,图5表示了ROB中被写入和退出指令后,写指针和读指针都没有翻转过的情况,如图5虚线框部分所示,从roqhead到roqtail上一项之间的指令是有效的。写指针未发生翻转,写指针分派的指令的地址增加的最高位都是0;读指针未发生翻转,roqhead增加的最高位为0。因此,用roqhead增加的最高位异或指令在ROB中的增加的地址最高位后,地址不变,即增加最高位后地址较小的指令会更老。
进一步地,在本发明的一个实施例中,当重定序缓存或转移重定序缓存中写入和退出指令后,写指针翻转、读指针未翻转时,包括:写入指令的地址最高位为值B,读指针增加的最高位为值A。
以ROB为例,图6表示了ROB中被写入和退出指令后,写指针发生了翻转,读指针没有翻转的情况。写指针发生了翻转,写指针翻转后写入指令的地址最高位为1;读指针还未发生翻转,roqhead增加的最高位为0。因此,用roqhead增加的最高位异或指令在ROB中的增加的地址最高位后,地址不变。如图6虚线框部分所示,从roqhead到roqtail之间为有效的指令,增加最高位后地址较小的指令会更老。
进一步地,在本发明的一个实施例中,当重定序缓存或转移重定序缓存中写入和退出指令后,写指针和读指针均翻转时,包括:写入指令的地址最高位为值B,读指针增加的最高位为值B。
以ROB为例,图7表示了ROB中被写入和退出指令后,写指针发生了翻转,读指针也发生了翻转的情况。写指针发生了翻转,写指针翻转后写入指令的地址最高位为1;读指针发生了翻转,roqhead增加的最高位为1。因此,用roqhead增加的最高位异或指令在ROB中增加的地址最高位后,地址的高位等于原来高位取反。如图7虚线框部分所示,从roqhead到roqtail之间为有效的指令,增加的地址最高位异或roqhead的最高位1后,地址小的指令会更老。
进一步地,在本发明的一个实施例中,当重定序缓存或转移重定序缓存中写入和退出指令后,写指针再次翻转、读指针未再次翻转时,包括:写入指令的地址增加的最高位为值A,读指针增加的最高位为值B。
以ROB为例,图8表示了ROB中被写入和退出指令后,写指针再次发生了翻转,读指针还未再次发生翻转的情况。写指针再次发生了翻转,写指针翻转后写入指令的地址增加的最高位为0;读指针还未再次发生翻转,roqhead增加的最高位为1。因此,用roqhead增加的最高位异或指令在ROB中的增加的地址最高位后,地址的高位等于原来高位取反。如图8虚线框部分所示,从roqhead到roqtail之间为有效的指令,增加的地址最高位异或roqhead的最高位1后,地址小的指令更老。
进一步地,在本发明的一个实施例中,当重定序缓存或转移重定序缓存中写入和退出指令后,写指针和读指针均再次翻转时,包括:写指针与读指针增加的最高位均恢复到值A。
以ROB为例,当ROB中被写入和退出指令后,写指针再次发生了翻转,读指针也再次发生翻转后的情况,读写指针增加的最高位都恢复到了0,与图5所示的读写指针都未发生翻转一样。
在一些实施例中,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址增加的方向指向下一项时,其中,
作为一种可能实现的方式,当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针指向的下一项低位从0开始编码;当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针增加的最高位的值翻转。其中,第一预设项数由最大项数确定;比如,第一预设项数可以为最大项数-1。
作为另一种可能实现的方式,当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针指向的下一项继续编码,直到到达2的幂次项再低位从0重新编码;当写指针或读指针低位到达第二预设项数时,写指针或读指针增加的最高位翻转。其中,第二预设项数由2的幂次确定;比如,第二预设项数可以为2的幂次-1。
在一些实施例中,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址减小的方向指向下一项时,其中,
作为一种可能实现的方式,当写指针或读指针低位减小到0时,写指针或读指针指向的下一项低位从队列的第一预设项数开始编码;当写指针或读指针低位减小到0时,写指针或读指针增加的最高位的值翻转。
作为另一种可能实现的方式,当写指针或读指针低位减小到0时,写指针或读指针指向的下一项低位从最接近队列项数且比队列项数大的第二预设项数重新进行编码;当写指针或读指针低位减小到0时,写指针或读指针增加的最高位翻转。
举例而言,对于队列项数不是2的幂次的情况,重定序缓存的写指针分配写入项的处理方法有如下两种:
方法1
对于队列项数不是2的幂次的情况,当写指针到达队列的最大项数时,再进入的指令编码从0开始,即写指针翻转。同样,读指针到达队列的最大项数时,也进行翻转。翻转后,增加的最高位从0翻转为1,或从1翻转为0。例如队列为6项,读写指针均从0记到5后进行翻转,处理过程如下:
(1)如图9所示,重定序缓存的写指针和读指针在复位状态时都是指向地址0,这是最初始的状态。
(2)当有新的指令写入到重定序缓存中时,写指针会增加,有指令退出后,读指针会增加,图10表示了ROB中被写入和退出指令后,写指针和读指针都没有翻转过的情况。从roqhead到roqtail上一项之间的指令是有效的,如图10虚线框部分所示。写指针未发生翻转,写指针分派的指令的地址增加的最高位都是0。读指针未发生翻转,roqhead增加的最高位为0,可见,用roqhead增加的最高位异或指令在ROB中的增加的地址最高位后,地址不变,即增加最高位后地址较小的指令会更老。
(3)图11表示了ROB中被写入和退出指令后,写指针发生了翻转,读指针没有翻转的情况。写指针发生了翻转,写指针翻转后写入指令的地址最高位为1。读指针还未发生翻转,roqhead增加的最高位为0,可见,用roqhead增加的最高位异或指令在ROB中的增加的地址最高位后,地址不变。从roqhead到roqtail之间为有效的指令,如图11虚线框部分所示,增加最高位后地址较小的指令会更老。
(4)图12表示了ROB中被写入和退出指令后,写指针发生了翻转,读指针也发生了翻转的情况。写指针发生了翻转,写指针翻转后写入指令的地址最高位为1。读指针发生了翻转,roqhead增加的最高位为1,可见,用roqhead增加的最高位异或指令在ROB中增加的地址最高位后,地址的高位等于原来高位取反。从roqhead到roqtail之间为有效的指令,如图12虚线框部分所示,增加的地址最高位异或roqhead的最高位1后,地址小的指令会更老。
(5)图13表示了ROB中被写入和退出指令后,写指针再次发生了翻转,读指针还未再次发生翻转的情况。写指针再次发生了翻转,写指针翻转后写入指令的地址增加的最高位为0。读指针还未再次发生翻转,roqhead增加的最高位为1,可见,用roqhead增加的最高位异或指令在ROB中的增加的地址最高位后,地址的高位等于原来高位取反。从roqhead到roqtail之间为有效的指令,如图13虚线框部分所示,增加的地址最高位异或roqhead的最高位1后,地址小的指令更老。
(6)当ROB中被写入和退出指令后,写指针再次发生了翻转,读指针也再次发生翻转后的情况,读写指针增加的最高位都恢复到了0,与图9读写指针都未发生翻转是一样的。
方法2
对于队列项数不是2的幂次的情况,与上述最接近的2的幂次的队列项处理过程相同。当写指针到达队列的最大项数时,再进入的指令继续编码,直到到达2的幂次项再重新编码,即写指针翻转。读指针与写指针同样处理。例如队列为6项,读写指针均从0记到7后再进行翻转,再从8记到15,然后翻转到0;因此6项的队列的处理过程同8项的队列处理过程。
在判断得到指令年龄的新老之后,在一些实施例中,在调度乱序队列时,选择队列中有效且年龄最老的指令进行执行。在另一些实施例中,在判断队列取消项时,选择队列中引起取消的指令及比引起取消的指令的年龄新的指令进行取消。
进一步地,下面将通过一些具体实施例对调度乱序队列和判断队列取消项的方法进行阐述,具体如下:
在本发明实施例1中,对于乱序队列的指令调度的情况,以8项的乱序队列为例,队列每一项包括valid域、rdy域、roqid域和data域等指令用到的信息域。valid域记录该项是否有效(例如定义valid为1表示有效,valid为0表示无效);rdy域记录该项指令和数据是否已准备好(例如定义rdy为1表示已准备好,即达到可执行的状态;rdy为0表示未准备好);roqid域记录该指令的重定序缓存地址,用来生成指令的年龄信息;data域记录该项的指令用到的命令、数据等信息。Roqhead表示重定序缓存的读指针(头指针)地址。
乱序队列在执行的时候,选择队列中有效且年龄最老的准备好的项的指令执行。指令年龄的判断用每项对应的roqid增加的最高位异或roqhead的最高位得到对应的指令年龄信息,age小的指令年龄最老。选出age最小的第一项作为乱序队列执行项。
如图14所示,对于8项的乱序队列,队列中的指令A、B、C、D、E、F、G均处于有效状态,即valid位均为1。rdy位为1的指令表示已准备好,即指令B、C、D、F、H处于已准备好,可执行状态。Roqid为指令在重定序缓存中的地址,指令在重定序缓存中的状态如图15所示,roqhead增加的最高位为1,用roqhead增加的最高位异或指令roqid增加的最高位得到指令的年龄信息age。图14中的roqid为包括增加的最高位后的值。通过指令age大小的比较,仲裁得到指令有效、已经准备好、且年龄值最小为4的指令B来执行。
在本发明实施例2中,在满足发生例外引发异常取消条件时,在流水线中的指令获取对应的年龄信息,以与发生例外引起异常的指令的年龄信息进行比较,如果流水线中的指令年龄新,则进行取消。
如图16所示,对于发生例外(Exception)引发异常取消的情况,流水线中的每一条指令都带有指令的重定序缓存地址,即roqid号,在流水线中的指令比较自己的roqid号增加的最高位异或重定序缓存读指针(头指针)roqhead最高位后得到的年龄值,与发生例外引起异常的指令的roqid号最高位异或roqhead最高位后得到的年龄值进行比较,如果自己的年龄比发生例外的指令新,则进行取消。
在本发明实施例3中,在满足发生转移预测错引起取消条件时,则流水线中的每一条指令都带有指令的重定序缓存地址或转移重定序缓存地址,将流水线中的指令增加的最高位异或重定序缓存或转移重定序缓存的读指针增加的最高位后得到的年龄信息,与发生转移预测错引起取消指令增加的最高位,异或重定序缓存或转移重定序缓存的读指针增加的最高位后得到的年龄信息进行比较,如果流水线中的指令年龄新,则进行取消。
如图17所示,对于发生转移预测错引起取消的情况,流水线中的每一条指令都带有指令的转移重定序缓存地址,即brqid号,在流水线中的指令比较自己的brqid号增加的最高位异或转移重定序缓存读指针(头指针)brqhead增加的最高位后得到的年龄值,与发生转移预测错引起取消指令的brqid号增加的最高位异或brqhead增加的最高位后得到的年龄值进行比较,如果自己的年龄比转移预测错引起取消的指令新,则进行取消。
在本发明实施例4中,在发生访存相关引起的重新执行时,将取数指令及比取数指令年龄新的指令均进行回滚,回滚的指令均重新执行。
对于回滚的情况,如发生访存相关引起的重新执行,即发现存数指令(Store)后面到下一条相关的存数指令(Store)之间有地址相关的取数指令(Load)已经写回,则将该取数指令(Load)及后面年龄比该取数指令新的都进行回滚,回滚的取数指令及后面的所有指令在派遣队列重新执行。回滚指令的判断也是根据指令的roqid号增加的最高位异或重定序缓存读指针(头指针)roqhead增加的最高位后得到的年龄值,判断哪些指令比这条引起回滚的取数指令新,则需要重新执行。如图18所示,在定点派遣队列中,根据roqid号增加的最高位异或roqhead增加的最高位作为比较的年龄信息,计算所得的取消项的信息,可见定点派遣队列从第3项开始需要被取消重新执行。
根据本发明实施例提出的调度乱序队列和判断队列取消项的方法,通过异或重定序缓存或转移重定序缓存的读指针增加的最高位与其缓存地址增加的最高位得到指令的年龄信息,并比较指令的年龄信息得到指令年龄的新老,以有效表达出指令年龄的真实信息,在判断时由于异或门的使用减少了比较器的使用数量,从而有效降低了指令年龄判断的复杂度,减小指令年龄判断的延时,有效提高乱序处理器的性能、降低功耗、节约面积,并可以提高乱序队列调度和队列取消的判断效率。解决了由于写指针的翻转引起的根据重定序缓存或转移重定序缓存的地址进行年龄判断时,出现的指令年龄大小的混乱问题。
其次参照附图描述根据本发明实施例提出的调度乱序队列和判断队列取消项的装置。
图19是本发明实施例的调度乱序队列和判断队列取消项的装置的方框示意图。
如图19所示,该调度乱序队列和判断队列取消项的装置10包括:增位模块100和比较模块200。
其中,增位模块100用于在重定序缓存和转移重定序缓存地址前面增加最高位;比较模块200用于用重定序缓存或转移重定序缓存的读指针增加的最高位,异或两个需要比较的重定序缓存或转移重定序缓存地址增加的最高位,将异或后得到的地址作为两条指令的年龄信息进行大小比较,以判断得到指令年龄的新老。
在一些实施例中,本发明实施例的装置10还包括:调度模块,其中,调度模块在调度乱序队列时,选择队列中有效且年龄最老的指令进行执行。
在一些实施例中,本发明实施例的装置10还包括:取消模块。其中,取消模块用于判断队列取消项时,选择队列中引起取消的指令及比引起取消的指令的年龄新的指令进行取消。
需要说明的是,前述对调度乱序队列和判断队列取消项的方法实施例的解释说明也适用于该实施例的调度乱序队列和判断队列取消项的装置,此处不再赘述。
根据本发明实施例提出的调度乱序队列和判断队列取消项的装置,通过异或重定序缓存或转移重定序缓存的读指针增加的最高位与其缓存地址增加的最高位得到指令的年龄信息,并比较指令的年龄信息得到指令年龄的新老,以有效表达出指令年龄的真实信息,在判断时由于异或门的使用减少了比较器的使用数量,从而有效降低了指令年龄判断的复杂度,减小指令年龄判断的延时,有效提高乱序处理器的性能、降低功耗、节约面积,并可以提高乱序队列调度和队列取消的判断效率。解决了由于写指针的翻转引起的根据重定序缓存或转移重定序缓存的地址进行年龄判断时,出现的指令年龄大小的混乱问题。
本发明实施例还提供一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被设置为用于执行如上述实施例的调度乱序队列和判断队列取消项的方法。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上述实施例的调度乱序队列和判断队列取消项的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或N个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (23)
1.一种调度乱序队列和判断队列取消项的方法,其特征在于,包括以下步骤:
在每个重定序缓存地址或每个转移重定序缓存地址前面增加最高位;其中,在重定序缓存和转移重定序缓存地址前面增加的最高位为值A或值B,值A和值B均为1位的二进制值,且值A和值B的值相反;
用重定序缓存的读指针所指的地址所增加的最高位分别异或两个需要比较的重定序缓存地址所增加的最高位,将异或后得到的地址作为两条需要比较的重定序缓存指令的年龄信息进行大小比较,以判断得到两个需要比较的重定序缓存指令年龄的新老;和/或,用转移重定序缓存的读指针所指的地址所增加的最高位分别异或两个需要比较的转移重定序缓存地址所增加的最高位,将异或后得到的地址作为两条需要比较的转移重定序缓存指令的年龄信息进行大小比较,以判断得到两个需要比较的转移重定序缓存指令年龄的新老;
以及,在调度乱序队列时,选择队列中有效且年龄最老的指令进行执行,和/或,在判断队列取消项时,选择队列中引起取消的指令及比引起取消的指令的年龄新的指令进行取消。
2.根据权利要求1所述的方法,其特征在于,所述重定序缓存或转移重定序缓存的读取由读指针控制,其中,当队列非空时,所述读指针指向下一次将要读取的第一项,所述重定序缓存或转移重定序缓存是有序的先进先出队列,且所述读指针指向的项是重定序缓存或转移重定序缓存中年龄最老的项,所述年龄最老的项为年龄最老的指令对应的项;当队列空时,读指针和写指针指向同一个空项,读指针和写指针增加的最高位的值相同。
3.根据权利要求1所述的方法,其特征在于,所述重定序缓存或转移重定序缓存的写入由写指针控制,每条指令在所述重定序缓存或转移重定序缓存中的位置由所述写指针分配,其中,在队列未全满时,所述写指针指向下一次将要写入的第一个空项;在队列满时,写指针和读指针指向同一项,写指针和读指针增加的最高位的值相反。
4.根据权利要求1所述的方法,其特征在于,所述重定序缓存或转移重定序缓存的写指针和读指针在复位状态时均指向复位项,当新指令写入到重定序缓存或转移重定序缓存中时,所述写指针指向下一个将要写入的项,当指令退出后,所述读指针指向下一个将要读出的项。
5.根据权利要求4所述的方法,其特征在于,所述复位项是指复位时写指针和读指针指向的同一项,复位项为队列的任一项,在复位时读指针和写指针增加的地址最高位相同。
6.根据权利要求4所述的方法,其特征在于,所述读指针指向的下一个将要读出的项或写指针指向的下一个将要写入的项,按地址增加的方向或按地址减小的方向进行指向。
7.根据权利要求6所述的方法,其特征在于,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址增加的方向指向下一项时,包括:
当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针指向的下一项低位从0开始编码,其中,所述第一预设项数由最大项数确定;
当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针增加的最高位的值翻转。
8.根据权利要求6所述的方法,其特征在于,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址增加的方向指向下一项时,包括:
当写指针或读指针低位到达队列的第一预设项数时,写指针或读指针指向的下一项继续编码,直到到达2的幂次项再低位从0重新编码;
当写指针或读指针低位到达第二预设项数时,写指针或读指针增加的最高位翻转,其中,所述第二预设项数由2的幂次确定。
9.根据权利要求6所述的方法,其特征在于,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址减小的方向指向下一项时,包括:
当写指针或读指针低位减小到0时,写指针或读指针指向的下一项低位从队列的第一预设项数开始编码;
当写指针或读指针低位减小到0时,写指针或读指针增加的最高位的值翻转。
10.根据权利要求6所述的方法,其特征在于,当重定序缓存或转移重定序缓存的队列项数不是2的幂次,且读指针和写指针按照地址减小的方向指向下一项时,包括:
当写指针或读指针低位减小到0时,写指针或读指针指向的下一项低位从最接近队列项数且比队列项数大的第二预设项数重新进行编码;
当写指针或读指针低位减小到0时,写指针或读指针增加的最高位翻转。
11.根据权利要求6所述的方法,其特征在于,当所述读指针和写指针按地址增加的方向指向下一项时,地址增加的方向上年龄值小,其中,年龄值越小,则年龄越老,年龄值越大,则年龄越新。
12.根据权利要求6所述的方法,其特征在于,当所述读指针和写指针按地址减小的方向指向下一项时,地址减小的方向上年龄值大,其中,年龄值越大,则年龄越老,年龄值越小,则年龄越新。
13.根据权利要求1所述的方法,其特征在于,当所述重定序缓存或转移定序缓存中写入和退出指令后,写指针和读指针均未翻转时,包括:
从读指针到写指针上一项之间的指令有效;
在写指针未翻转时,写指针分配的指令的地址增加的最高位均为值A;
在读指针未翻转时,读指针增加的最高位均为值A。
14.根据权利要求1所述的方法,其特征在于,当所述重定序缓存或转移重定序缓存中写入和退出指令后,写指针翻转、读指针未翻转时,包括:
写入指令的地址最高位为值B,读指针增加的最高位为值A。
15.根据权利要求1所述的方法,其特征在于,当所述重定序缓存或转移重定序缓存中写入和退出指令后,写指针和读指针均翻转时,包括:
写入指令的地址最高位为值B,读指针增加的最高位为值B。
16.根据权利要求1所述的方法,其特征在于,当所述重定序缓存或转移重定序缓存中写入和退出指令后,写指针再次翻转、读指针未再次翻转时,包括:
写入指令的地址增加的最高位为值A,读指针增加的最高位为值B。
17.根据权利要求1所述的方法,其特征在于,当所述重定序缓存或转移重定序缓存中写入和退出指令后,写指针和读指针均再次翻转时,包括:
写指针与读指针增加的最高位均恢复到值A。
18.根据权利要求1所述的方法,其特征在于,还包括:
在满足发生例外引发异常取消条件时,在流水线中的指令获取对应的年龄信息,以与发生例外引起异常的指令的年龄信息进行比较,如果流水线中的指令年龄新,则进行取消,同时还取消所述发生例外引起异常的指令。
19.根据权利要求1所述的方法,其特征在于,还包括:
在满足发生转移预测错引起取消条件时,则流水线中的每一条指令都带有指令的重定序缓存地址或转移重定序缓存地址,将所述流水线中的指令增加的最高位异或重定序缓存的读指针所指的地址所增加的最高位后得到的年龄信息,与发生转移预测错引起取消指令所增加的最高位,异或重定序缓存的读指针所指的地址所增加的最高位后得到的年龄信息进行比较,如果流水线中的指令年龄新,则进行取消;和/或,将所述流水线中的指令增加的最高位异或转移重定序缓存的读指针所指的地址所增加的最高位后得到的年龄信息,与发生转移预测错引起取消指令增加的最高位,异或转移重定序缓存的读指针所指的地址所增加的最高位后得到的年龄信息进行比较,如果流水线中的指令年龄新,则进行取消;同时还取消所述发生转移预测错引起取消指令。
20.根据权利要求1所述的方法,其特征在于,还包括:
在发生访存相关引起的重新执行时,将取数指令及比所述取数指令年龄新的指令均进行回滚,回滚的指令均重新执行。
21.一种调度乱序队列和判断队列取消项的装置,其特征在于,包括:
增位模块,用于在每个重定序缓存地址和每个转移重定序缓存地址前面增加最高位;其中,在重定序缓存和转移重定序缓存地址前面增加的最高位为值A或值B,值A和值B均为1位的二进制值,且值A和值B的值相反;
比较模块,用于用重定序缓存的读指针所指的地址所增加的最高位分别异或两个需要比较的重定序缓存地址所增加的最高位,将异或后得到的地址作为两条需要比较的重定序缓存指令的年龄信息进行大小比较,以判断得到两个需要比较的重定序缓存指令年龄的新老;和/或,用转移重定序缓存的读指针所指的地址所增加的最高位分别异或两个需要比较的转移重定序缓存地址所增加的最高位,将异或后得到的地址作为两条需要比较的转移重定序缓存指令的年龄信息进行大小比较,以判断得到两个需要比较的转移重定序缓存指令年龄的新老;
以及,还包括:
调度模块,在调度乱序队列时,选择队列中有效且年龄最老的指令进行执行,和/或,取消模块,用于判断队列取消项时,选择队列中引起取消的指令及比引起取消的指令的年龄新的指令进行取消。
22.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-20任一项所述的调度乱序队列和判断队列取消项的方法。
23.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以用于实现如权利要求1-20任一项所述的调度乱序队列和判断队列取消项的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011243930.1A CN112099854B (zh) | 2020-11-10 | 2020-11-10 | 调度乱序队列和判断队列取消项的方法和装置 |
EP21810884.3A EP4027236A4 (en) | 2020-11-10 | 2021-05-21 | METHOD AND APPARATUS FOR SCHEDULING OUT-OF-ORDER QUEUES AND DETERMINING QUEUE ERASING ELEMENTS |
PCT/CN2021/095138 WO2022100054A1 (zh) | 2020-11-10 | 2021-05-21 | 调度乱序队列和判断队列取消项的方法和装置 |
US17/530,192 US11829768B2 (en) | 2020-11-10 | 2021-11-18 | Method for scheduling out-of-order queue and electronic device items |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011243930.1A CN112099854B (zh) | 2020-11-10 | 2020-11-10 | 调度乱序队列和判断队列取消项的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099854A CN112099854A (zh) | 2020-12-18 |
CN112099854B true CN112099854B (zh) | 2021-04-23 |
Family
ID=73785061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011243930.1A Active CN112099854B (zh) | 2020-11-10 | 2020-11-10 | 调度乱序队列和判断队列取消项的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112099854B (zh) |
WO (1) | WO2022100054A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112099854B (zh) * | 2020-11-10 | 2021-04-23 | 北京微核芯科技有限公司 | 调度乱序队列和判断队列取消项的方法和装置 |
EP4027236A4 (en) | 2020-11-10 | 2023-07-26 | Beijing Vcore Technology Co.,Ltd. | METHOD AND APPARATUS FOR SCHEDULING OUT-OF-ORDER QUEUES AND DETERMINING QUEUE ERASING ELEMENTS |
CN112527239B (zh) * | 2021-02-10 | 2021-05-07 | 北京微核芯科技有限公司 | 一种浮点数据处理方法及装置 |
CN113312278B (zh) * | 2021-07-29 | 2021-11-05 | 常州楠菲微电子有限公司 | 一种静态可分配共享多队列缓存的装置及方法 |
CN114546497B (zh) * | 2022-04-26 | 2022-07-19 | 北京微核芯科技有限公司 | 乱序处理器中队列的访问方法及装置 |
CN115563027B (zh) * | 2022-11-22 | 2023-05-12 | 北京微核芯科技有限公司 | 存数指令的执行方法、系统及装置 |
CN116483741B (zh) * | 2023-06-21 | 2023-09-01 | 睿思芯科(深圳)技术有限公司 | 处理器多组访存队列的保序方法、系统及相关设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7350056B2 (en) * | 2005-09-27 | 2008-03-25 | International Business Machines Corporation | Method and apparatus for issuing instructions from an issue queue in an information handling system |
US7882335B2 (en) * | 2008-02-19 | 2011-02-01 | International Business Machines Corporation | System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline |
WO2013188701A1 (en) * | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | A method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
GB2538237B (en) * | 2015-05-11 | 2018-01-10 | Advanced Risc Mach Ltd | Available register control for register renaming |
CN107729135B (zh) * | 2016-08-11 | 2021-03-16 | 创新先进技术有限公司 | 按序进行并行数据处理的方法和装置 |
CN108628759B (zh) * | 2017-12-29 | 2020-09-01 | 贵阳忆芯科技有限公司 | 乱序执行nvm命令的方法与装置 |
CN111198715A (zh) * | 2019-12-26 | 2020-05-26 | 核芯互联科技(青岛)有限公司 | 一种面向乱序高性能核的内存控制器命令调度方法及装置 |
CN111538534B (zh) * | 2020-04-07 | 2023-08-08 | 江南大学 | 一种基于指令凋零的多指令乱序发射方法及处理器 |
CN112099854B (zh) * | 2020-11-10 | 2021-04-23 | 北京微核芯科技有限公司 | 调度乱序队列和判断队列取消项的方法和装置 |
-
2020
- 2020-11-10 CN CN202011243930.1A patent/CN112099854B/zh active Active
-
2021
- 2021-05-21 WO PCT/CN2021/095138 patent/WO2022100054A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN112099854A (zh) | 2020-12-18 |
WO2022100054A1 (zh) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099854B (zh) | 调度乱序队列和判断队列取消项的方法和装置 | |
US7200737B1 (en) | Processor with a replay system that includes a replay queue for improved throughput | |
US5519841A (en) | Multi instruction register mapper | |
US6385715B1 (en) | Multi-threading for a processor utilizing a replay queue | |
KR100626858B1 (ko) | 단일 적재 워드를 형성하기 위해서 별개의 저장 버퍼 엔트리들로부터의 개별 바이트들의 전송을 적재하는 저장 시스템 | |
US6122727A (en) | Symmetrical instructions queue for high clock frequency scheduling | |
US7877559B2 (en) | Mechanism to accelerate removal of store operations from a queue | |
US9436464B2 (en) | Instruction-issuance controlling device and instruction-issuance controlling method | |
JP3919802B2 (ja) | プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法 | |
US20090063735A1 (en) | Method and Apparatus for Operating an Age Queue for Memory Request Operations in a Processor of an Information Handling System | |
JP5209933B2 (ja) | データ処理装置 | |
US9052910B2 (en) | Efficiency of short loop instruction fetch | |
CN103620555A (zh) | 抑制不正确的推测性执行路径上的控制转移指令 | |
WO2006039201A2 (en) | Continuel flow processor pipeline | |
US6671196B2 (en) | Register stack in cache memory | |
CN110297662B (zh) | 指令乱序执行的方法、处理器及电子设备 | |
CN105242963A (zh) | 执行机构间的切换控制 | |
US7966477B1 (en) | Power optimized replay of blocked operations in a pipilined architecture | |
US5581719A (en) | Multiple block line prediction | |
US10977045B2 (en) | Priority instruction handling with optimized issue queue design | |
CN213482862U (zh) | 用于调度乱序队列和判断队列取消项的乱序处理器 | |
US20170139708A1 (en) | Data processing | |
US11829768B2 (en) | Method for scheduling out-of-order queue and electronic device items | |
US20080022072A1 (en) | System, method and medium processing data according to merged multi-threading and out-of-order scheme | |
CN213482861U (zh) | 用于判断队列项是否取消的裁决电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |