CN117472447A - 寄存器重命名恢复方法、装置和设备 - Google Patents
寄存器重命名恢复方法、装置和设备 Download PDFInfo
- Publication number
- CN117472447A CN117472447A CN202311828932.0A CN202311828932A CN117472447A CN 117472447 A CN117472447 A CN 117472447A CN 202311828932 A CN202311828932 A CN 202311828932A CN 117472447 A CN117472447 A CN 117472447A
- Authority
- CN
- China
- Prior art keywords
- rob
- instruction
- prediction error
- renaming
- checkpoint
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000011084 recovery Methods 0.000 title claims abstract description 59
- 238000013507 mapping Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 8
- 241000700159 Rattus Species 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 3
- 238000013479 data entry Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
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)
- Retry When Errors Occur (AREA)
Abstract
本发明提供一种寄存器重命名恢复方法、装置和设备,属于处理器技术领域,该方法应用于处理器,处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,ROB中指令按照固定的数量进行分组,ROB中的指令具有唯一的ROB标识ID,每一组设置一个检查点,所述方法包括:在存在预测错误指令的情况下,确定离预测错误指令的ROB ID最近的有效检查点;若存在最近的有效检查点,则将有效检查点保存的信息进行恢复;若不存在最近的有效检查点,则将预测错误指令至ROB中的出队指针之间的寄存器重命名之前的信息进行恢复。上述方案中可以减少指令的恢复时间,在下一次取指令和重命名的时间内进行重命名恢复,不会造成指令的阻塞。
Description
技术领域
本发明涉及处理器技术领域,尤其涉及一种寄存器重命名恢复方法、装置和设备。
背景技术
在处理器中,除了缓存(Cache)之外,另一个重要的内容就是分支预测,它和Cache一起左右着处理器的性能。对于超标量处理器来说,准确度高的分支预测更为重要,在取指令阶段,除了需要从指令缓存(I-Cache)中取出多条指令,同时还需要决定下个周期的取指令的地址,如果这个阶段只是简单的顺序取指令,也就是预测所有的分支指令都是不跳转的,那么等到在流水线的后续阶段,例如执行阶段,发现了一条跳转的分支指令时,就需要将流水线中,执行阶段之前的全部指令都从流水线中清除,并重新从分支的目的地址开始取指令。这些从流水线中抹掉的指令都做了无用功,浪费了处理器的功耗,并且降低了执行效率。如果能在取指令阶段,就可以预测本周期所取出的指令中是否存在分支指令,并且可以知道它的方向(跳转或者不跳转),以及目标地址的话,那么就可以在下个周期从分支指令的目标地址开始取指令,这样就不会对流水线产生影响,也避免了做无用功,提高了处理器的执行效率。
任何预测技术都有可能出错,分支预测也不例外,当发现分支预测失败时,在这条分支指令后面进入到流水线的所有指令都处在错误的路径上,这些指令都应该从流水线中被抹掉,这些处在错误路径上的指令有可能已经将处理器中的某些内容进行了更改,例如寄存器重命名阶段的寄存器重命名表,这个更改显然是不应该的,需要对这些操作进行撤销,这称为分支预测失败时的恢复。
发明内容
针对现有技术存在的问题,本发明实施例提供一种寄存器重命名恢复方法、装置和设备。
本发明提供一种寄存器重命名恢复方法,应用于处理器,所述处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,所述ROB中指令按照固定的数量进行分组,所述ROB中的指令具有唯一的ROB 标识ID,每一组设置一个检查点,所述方法包括:
在存在预测错误指令的情况下,确定离所述预测错误指令的ROB ID最近的有效检查点;
若存在最近的有效检查点,则将所述有效检查点保存的信息进行恢复;
若不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复。
根据本发明提供的一种寄存器重命名恢复方法,所述确定离所述预测错误指令的ROB ID最近的有效检查点,包括:
若所述ROB中的出队指针、所述ROB中的入队指针和所述预测错误指令的ROB ID均不在同一组,确定离所述预测错误指令的ROB ID最近的有效检查点;
若所述ROB中的入队指针和所述预测错误指令的ROB ID在同一组,确定ROB ID比所述预测错误指令的ROB ID旧,且ROB ID与所述预测错误指令的ROB ID位于不同组的最近的检查点,并确定所述最近的检查点是否为有效检查点。
根据本发明提供的一种寄存器重命名恢复方法,所述确定所述最近的检查点是否为有效检查点,包括:
若所述入队指针和所述预测错误指令的ROB ID在同一组,且所述最近的检查点的ROB ID比所述出队指针的ROB ID新,则确定所述最近的检查点为有效检查点;
若所述入队指针和所述预测错误指令的ROB ID在同一组,且所述最近的检查点的ROB ID比所述出队指针的ROB ID旧,则确定所述最近的检查点为无效检查点。
根据本发明提供的一种寄存器重命名恢复方法,所述将所述有效检查点保存的信息进行恢复,包括:
将所述有效检查点保存的信息恢复到重命名映射表和空闲寄存器列表中;
将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复,包括:
将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息恢复到重命名映射表和空闲寄存器列表中。
根据本发明提供的一种寄存器重命名恢复方法,所述将所述有效检查点保存的信息进行恢复之后,还包括:
将所述检查点的ROB ID之后的ROB信息和检查点取消;
所述将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复之后,还包括:
将所述预测错误指令的ROB ID之后的ROB信息和检查点取消。
根据本发明提供的一种寄存器重命名恢复方法,所述方法还包括:
在寄存器重命名恢复之后,将所述ROB中的入队指针指向所述预测错误指令的ROBID。
根据本发明提供的一种寄存器重命名恢复方法,每一组中所述检查点的ROB ID的范围为第一值到第二值,所述第一值为下一组中最小的ROB ID减去所述处理器的带宽,所述第二值为下一组中最大的ROB ID减去所述处理器的带宽。
根据本发明提供的一种寄存器重命名恢复方法,所述方法还用于通过取指目标队列FTQ实现。
本发明还提供一种寄存器重命名恢复装置,应用于处理器,所述处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,所述ROB中指令按照固定的数量进行分组,所述ROB中的指令具有唯一的ROB标识 ID,每一组设置一个检查点,所述装置包括:
确定模块,用于在存在预测错误指令的情况下,确定离所述预测错误指令的ROBID最近的有效检查点;
处理模块,用于若存在最近的有效检查点,则将所述有效检查点保存的信息进行恢复;
所述处理模块,还用于若不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述寄存器重命名恢复方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述寄存器重命名恢复方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述寄存器重命名恢复方法。
本发明提供的寄存器重命名恢复方法、装置和设备,该方法应用于处理器,所述处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,所述ROB中指令按照固定的数量进行分组,所述ROB中的指令具有唯一的ROB ID,每一组设置一个检查点,设置的检查点的数量合理,能够避免在指令较多时造成阻塞,在存在预测错误指令的情况下,确定离所述预测错误指令的ROB ID最近的有效检查点;若存在最近的有效检查点,则将所述有效检查点保存的信息进行恢复,由于直接将有效检查点保存的信息进行恢复,因此效率较高,恢复时间较短;若不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复,即若不存在有效检查点,同样可以重命名恢复,保证了重命名恢复的可靠性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的寄存器重命名恢复方法的流程示意图;
图2是本发明提供的寄存器重命名恢复方法的原理示意图之一;
图3是本发明提供的寄存器重命名恢复方法的原理示意图之二;
图4是本发明提供的寄存器重命名恢复方法的原理示意图之三;
图5是本发明提供的寄存器重命名恢复方法的原理示意图之四;
图6是本发明提供的寄存器重命名恢复装置的结构示意图;
图7是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,对本发明实施例涉及的名词和应用场景进行介绍:
重命名映射表(Register Renaming Table,或mapping table,也称为RAT)用来保存已经存在的映射关系,例如一个逻辑寄存器映射到了哪个物理寄存器。
空闲寄存器列表(Free Register List)用来记录哪些物理寄存器是空闲的,通过这个表格来获得空闲的物理寄存器的编号。
通常,指令之间的顺序在流水线的重排序缓存(Reorder Buffer,ROB)中可以进行记录,因此可以利用重排序缓存对分支预测失败时的处理器进行状态恢复。当在执行阶段发现一条分支指令预测失败时,将这个信息记录在这条分支指令在ROB对应的表项中,并暂停流水线的取指令,但是让流水线继续执行,当这条分支指令变为流水线中最旧的指令时,表明在这条分支指令之前到流水线中的所有指令都已经离开了流水线,此时在流水线中的所有指令都处于分支预测失败的路径上了,可以将整个流水线中的指令全部抹掉,从正确的地址重新开始取指令来执行。这个方法最大的缺点就是要分支指令在流水线中等待一段时间才能进行处理,并且在分支指令之前存在数据缓存(D-Cache)缺失的加载(load)指令时,这个等待时间就会很长,在这段时间内流水线都无法取新的指令来执行,这样就会大大降低了处理器的性能。
除了采用以上方案和基于ROB回滚的方法进行分支预测错误时的寄存器重命名状态恢复,很多现代的处理器都采用基于检查点(Checkpoint)的方法进行寄存器重命名状态恢复,当在重命名阶段发现分支指令,并且在分支指令之后的指令更改处理器的状态之前,将处理器重命名的状态保存起来,即只有在发现分支指令时,才会设置一个Checkpoint。如果ROB项数越来越多,需要设置Checkpoint的数量也会越多,而且当Checkpoint的数量太多时,会造成阻塞;而且,理论上,对于经常预测正确的分支指令,是不太需要设置Checkpoint的;而且现有技术只能用于分支指令预测错误情况下的寄存器重命名恢复,而对于当检测到在推测执行过程中,其它的推测错误或者预测错误(例如访存指令相关性的预测)的时候则不适用。
由于分支预测错误,会引起寄存器重命名表的恢复。流水线中的指令数量越大,预测错误引起的寄存器重命名表的恢复时间也会越多。那么分支预测错误引起的代价也会越大,对性能损失也会越大。
因此,为了提高恢复效率,减少恢复时间,本发明实施例的寄存器重命名恢复方法中,ROB中指令按照固定的数量进行分组,每一组设置一个检查点,即设置合理数量的检查点,在存在预测错误指令的情况下,确定离所述预测错误指令的ROB ID最近的有效检查点;若存在最近的有效检查点,则将所述有效检查点保存的信息进行恢复,效率较高,可以减少恢复时间。
下面结合图1-图7以具体的实施例对本发明实施例的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1是本发明提供的寄存器重命名恢复方法的流程示意图。如图1所示,本实施例提供的方法,应用于处理器,所述处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,所述ROB中指令按照固定的数量进行分组,所述ROB中的指令具有唯一的ROB 标识(IDentity,ID),每一组设置一个检查点,该方法包括:
步骤101、在存在预测错误指令的情况下,确定离预测错误指令的ROB ID最近的有效检查点;
具体的,寄存器重命名Rename之后,Rename的信息就写入ROB了,一条指令对应一个ROB项编号(可以记为ROB ID),在ROB中把指令做固定的分组,将ROB中指令平均分为N组,每一组做一个检查点(Checkpoint),Rename的时候已经分配ROB ID了,当ROB ID有区间跳变的时候写入Checkpoint。有区间跳变的时候,即当ROB 的入队指针从ROB中的一组进入下一组的时候,把寄存器重命名之前的状态写入Checkpoint,此时该Checkpoint有效;当出队指针跳过Checkpoint的时候,该Checkpoint变为无效,即该Checkpoint的ROB ID比出队指针对应的ROB ID旧。
其中,入队指针为指向入队(进入ROB)的指令对应的ROB ID,出队指针为指向出队的指令对应的ROB ID,在提交时指令出队。已入队指令的ROB ID越靠近入队指针越新,越靠近出队指针越旧。
需要说明的是,一次重命名的指令项数与处理器带宽相关,一次重命名并不一定是一条指令,也可以对应多条指令。
由于寄存器重命名之前的状态写入了Checkpoint,因此,在存在预测错误指令的情况下,确定离预测错误指令的ROB ID最近的有效检查点。
可选地,固定的数量小于ROB中存储的数据条目的数量,例如ROB中存储的数据条目的数量可以参考处理器带宽,以及处理器的流水线长度。
步骤102、若存在最近的有效检查点,则将有效检查点保存的信息进行恢复;
具体的,若存在最近的有效检查点,则将寄存器重命名之前的信息进行恢复,即Checkpoint保存的信息,恢复效率较高;
示例性地,如图2所示,存在最近的有效Checkpoint,该有效Checkpoint对应的ROBID比预测错误指令的ROB ID新,从预测错误指令的ROB ID向Checkpoint方向进行恢复,即将寄存器重命名之前的信息(即Checkpoint保存的信息)进行恢复,即从预测错误指令向Checkpoint所在位置进行回滚,直到恢复完成。
如图3所示,存在最近的有效Checkpoint,该有效Checkpoint对应的ROB ID与预测错误指令的ROB ID相同,将寄存器重命名之前的信息(即Checkpoint保存的信息)进行恢复。
如图4所示,存在最近的有效Checkpoint,该有效Checkpoint对应的ROB ID比预测错误指令的ROB ID旧,从预测错误指令的ROB ID向Checkpoint方向进行恢复,即将寄存器重命名之前的信息(即Checkpoint保存的信息)进行恢复,即从预测错误指令向Checkpoint所在位置进行回滚,直到恢复完成。
可选地,将Checkpoint保存的信息恢复到重命名映射表(Register RenamingTable,或mapping table,也称为RAT)以及空闲寄存器列表(Free Register List)中。
步骤103、若不存在最近的有效检查点,则将预测错误指令至ROB中的出队指针之间的寄存器重命名之前的信息进行恢复。
具体的,若不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复。
可选地,将预测错误指令至ROB中的出队指针之间的寄存器重命名之前的信息恢复到重命名映射表RAT以及空闲寄存器列表中。
示例性地,如图5所示,出队指针越过比预测错误指令的ROB ID旧的且最近的Checkpoint,该最近的Checkpoint无效,即不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复,即从预测错误指令的ROB ID向出队指针的方向进行恢复,即直接用回滚的方式,从预测错误指令向出队指针的位置进行回滚。
本实施例的方法,应用于处理器,所述处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,所述ROB中指令按照固定的数量进行分组,所述ROB中的指令具有唯一的ROB ID,每一组设置一个检查点,设置的检查点的数量合理,能够避免在指令较多时造成阻塞,在存在预测错误指令的情况下,确定离所述预测错误指令的ROB ID最近的有效检查点;若存在最近的有效检查点,则将所述有效检查点保存的信息进行恢复,由于直接将有效检查点保存的信息进行恢复,因此效率较高,恢复时间较短;若不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复,即若不存在有效检查点,同样可以重命名恢复,保证了重命名恢复的可靠性。
可选地,为了提高取指部件的性能,通常将分支预测和取指令解耦,两者通过取指目标队列(Fetch Target Queue,FTQ)连接。本发明的方法可以基于ROB实现,也可以基于FTQ实现,基于FTQ实现的实现原理与技术效果与基于ROB相同,本发明实施例不再赘述。
可选地,每一组中所述检查点的ROB ID的范围为第一值到第二值,所述第一值为下一组中最小的ROB ID减去所述处理器的带宽,所述第二值为下一组中最大的ROB ID减去所述处理器的带宽。
例如,假设每个Checkpoint是8条指令,每一组8条指令,处理器带宽是6,假设第一组ROB ID是0-7,第二组是8-15,第三组是16-23,那么每个Checkpoint的ROB ID范围就是(8-带宽)到(15-带宽)、(16-带宽)-(23-带宽)之间,以此类推。
具体的,对于每组设置的Checkpoint,当拍增加几条指令后,入队的指令跨越了ROB的分组,就需要记录,即需要设置Checkpoint。可选地,当拍增加的指令数是不固定的(小于或等于处理器带宽)。例如:ROB的入队指针指向的ROB ID为6,当前拍进入3条指令,那么指令进入后,ROB的入队指针指向的ROB ID为9,此时入队的指令从ROB的第一组(0-7)跨越到了第二组(8-15),那么就需要设置Checkpoint,Checkpoint的ROB ID为6。
在其它实施例中,Checkpoint的ROB ID范围可以根据处理器的具体行为决定,本发明实施例对此并不限定。
可选地,步骤101可以通过如下方式实现:
若所述ROB中的出队指针、所述ROB中的入队指针和所述预测错误指令的ROB ID均不在同一组,确定离所述预测错误指令的ROB ID最近的有效检查点;
若所述ROB中的入队指针和所述预测错误指令的ROB ID在同一组,确定ROB ID比所述预测错误指令的ROB ID旧,且ROB ID与所述预测错误指令的ROB ID位于不同组的最近的检查点,并确定所述最近的检查点是否为有效检查点。
具体的,如果出队指针、入队指针和预测错误指令的ROB ID均不在同一组中,已入队指令的ROB ID越靠近入队指针越新,越靠近出队指针越旧。
判断离预测错误指令的ROB ID最近的有效检查点Checkpoint,如图2所示,存在离预测错误指令的ROB ID最近的有效检查点Checkpoint,该有效Checkpoint对应的ROB ID比预测错误指令的ROB ID新,从预测错误指令的ROB ID向Checkpoint方向进行恢复,即将寄存器重命名之前的信息(即Checkpoint保存的信息)进行恢复。即从预测错误指令向Checkpoint所在位置进行回滚,直到恢复完成。
如图3所示,如果预测错误指令的ROB ID正好对应Checkpoint,将Checkpoint保存的信息进行恢复,即恢复到RAT和空闲寄存器列表中。
可选地,将Checkpoint之后的ROB信息和Checkpoint信息取消掉。
可选地,入队指针指向预测错误指令的ROB ID。
可选地,若所述入队指针和所述预测错误指令的ROB ID在同一组,且所述最近的检查点的ROB ID比所述出队指针的ROB ID新,则确定所述最近的检查点为有效检查点;
若所述入队指针和所述预测错误指令的ROB ID在同一组,且所述最近的检查点的ROB ID比所述出队指针的ROB ID旧,则确定所述最近的检查点为无效检查点。
具体的,如果入队指针和预测错误指令的ROB ID在同一组,即入队指针还没有跳转到下一组,那么入队指针和预测错误指令的ROB ID所在组的Checkpoint为无效状态。
分如下两种情况:
情况1:如图4所示,出队指针没有越过ROB ID比预测错误指令的ROB ID旧的且最近的Checkpoint,即出队指针对应的ROB ID比该最近的Checkpoint对应的ROB ID旧,那么此最近的Checkpoint有效,只需按照步骤102的方法执行,即将该有效检查点的信息恢复到重命名映射表和空闲寄存器列表中。
可选地,将Checkpoint之后的ROB信息和Checkpoint信息取消掉。
可选地,入队指针指向预测错误指令的ROB ID。
情况2:出队指针、ROB ID和入队指针在同一份,或,如图5所示,出队指针越过ROBID比预测错误指令的ROB ID旧的且最近的Checkpoint(如图5中检查点A),即出队指针对应的ROB ID比该最近的Checkpoint对应的ROB ID新,那么此最近的Checkpoint无效,即出队指针和入队指针之间没有有效的Checkpoint。
直接用回滚的方式对RAT和空闲寄存器列表进行恢复,即从预测错误指令的位置向出队指针的位置进行回滚,将预测错误指令与出队指针之间的寄存器重命名之前的信息恢复到重命名映射表和空闲寄存器列表中。
可选地,将预测错误指令的ROB ID之后的ROB信息和Checkpoint信息取消掉。
可选地,入队指针指向预测错误指令的ROB ID。
示例性地,该方法包括如下步骤:
若出队指针、入队指针和预测错误指令的重排序缓存ROB ID均不在同一组,确定离预测错误指令的ROB ID最近的有效检查点Checkpoint;
将该有效检查点保存的信息恢复到重命名映射表和空闲寄存器列表中,即将寄存器重命名之前的信息恢复到重命名映射表和空闲寄存器列表中;
若入队指针和预测错误指令的ROB ID在同一组,确定比预测错误指令的ROB ID旧,且最近的Checkpoint;
若Checkpoint的ROB ID比出队指针对应的ROB ID新,则确定最近的Checkpoint有效,将该有效检查点保存的信息恢复到重命名映射表和空闲寄存器列表中;
若Checkpoint的ROB ID比出队指针对应的ROB ID旧,则从预测错误指令的位置向出队指针的位置进行回滚,将预测错误指令与出队指针之间的寄存器重命名之前的信息恢复到重命名映射表和空闲寄存器列表中。
综上所述,本发明实施例的方法,可以减少寄存器重命名的恢复时间。在下一次取指令和重命名的时间内进行重命名恢复,不会造成指令的阻塞。如果ROB项数越来越大,且取指效率越来越高的时候,需要被取消的指令越来越多,以现有技术来解决的话会需要很长时间,本发明实施例的方法会更加有效果。
进一步,本发明实施例的方法不仅用于分支指令预测错误情况下的寄存器重命名恢复,而对于检测到在推测执行过程中,其它的推测错误或者预测错误(例如访存指令相关性的预测错误)情况下的寄存器重命名恢复同样适用。
下面对本发明提供的寄存器重命名恢复装置进行描述,下文描述的寄存器重命名恢复装置与上文描述的寄存器重命名恢复方法可相互对应参照。
图6是本发明提供的寄存器重命名恢复装置的结构示意图。如图6所示,本实施例提供的寄存器重命名恢复装置,应用于处理器,所述处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,所述ROB中指令按照固定的数量进行分组,所述ROB中的指令具有唯一的ROB 标识ID,每一组设置一个检查点,所述寄存器重命名恢复装置包括:
确定模块610,用于在存在预测错误指令的情况下,确定离所述预测错误指令的ROB ID最近的有效检查点;
处理模块620,用于若存在最近的有效检查点,则将所述有效检查点保存的信息进行恢复;
所述处理模块620,还用于若不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复。
可选地,所述确定模块610具体用于:
若所述ROB中的出队指针、所述ROB中的入队指针和所述预测错误指令的ROB ID均不在同一组,确定离所述预测错误指令的ROB ID最近的有效检查点;
若所述ROB中的入队指针和所述预测错误指令的ROB ID在同一组,确定ROB ID比所述预测错误指令的ROB ID旧,且ROB ID与所述预测错误指令的ROB ID位于不同组的最近的检查点,并确定所述最近的检查点是否为有效检查点。
可选地,所述确定模块610具体用于:
若所述入队指针和所述预测错误指令的ROB ID在同一组,且所述最近的检查点的ROB ID比所述出队指针的ROB ID新,则确定所述最近的检查点为有效检查点;
若所述入队指针和所述预测错误指令的ROB ID在同一组,且所述最近的检查点的ROB ID比所述出队指针的ROB ID旧,则确定所述最近的检查点为无效检查点。
可选地,所述处理模块620具体用于:
将所述有效检查点保存的信息恢复到重命名映射表和空闲寄存器列表中;
将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复,包括:
将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息恢复到重命名映射表和空闲寄存器列表中。
可选地,所述处理模块620还用于:
在将所述有效检查点保存的信息进行恢复之后,将所述检查点的ROB ID之后的ROB信息和检查点取消;
在将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复之后,将所述预测错误指令的ROB ID之后的ROB信息和检查点取消。
可选地,所述处理模块620还用于:
在寄存器重命名恢复之后,将所述ROB中的入队指针指向所述预测错误指令的ROBID。
可选地,每一组中所述检查点的ROB ID的范围为第一值到第二值,所述第一值为下一组中最小的ROB ID减去所述处理器的带宽,所述第二值为下一组中最大的ROB ID减去所述处理器的带宽。
本发明实施例的装置,其用于执行前述任一方法实施例中的方法,其实现原理和技术效果类似,此次不再赘述。
图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行寄存器重命名恢复方法,所述处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,所述ROB中指令按照固定的数量进行分组,所述ROB中的指令具有唯一的ROB ID,每一组设置一个检查点,该方法包括:应用于处理器,所述方法包括:
在存在预测错误指令的情况下,确定离所述预测错误指令的ROB ID最近的有效检查点;
若存在最近的有效检查点,则将所述有效检查点保存的信息进行恢复;
若不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的寄存器重命名恢复方法,该方法应用于处理器,所述处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,所述ROB中指令按照固定的数量进行分组,所述ROB中的指令具有唯一的ROB ID,每一组设置一个检查点,所述方法包括:
在存在预测错误指令的情况下,确定离所述预测错误指令的ROB ID最近的有效检查点;
若存在最近的有效检查点,则将所述有效检查点保存的信息进行恢复;
若不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的寄存器重命名恢复方法,该方法应用于处理器,所述处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,所述ROB中指令按照固定的数量进行分组,所述ROB中的指令具有唯一的ROB ID,每一组设置一个检查点,所述方法包括:
在存在预测错误指令的情况下,确定离所述预测错误指令的ROB ID最近的有效检查点;
若存在最近的有效检查点,则将所述有效检查点保存的信息进行恢复;
若不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1.一种寄存器重命名恢复方法,其特征在于,应用于处理器,所述处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,所述ROB中指令按照固定的数量进行分组,所述ROB中的指令具有唯一的ROB 标识ID,每一组设置一个检查点,所述方法包括:
在存在预测错误指令的情况下,确定离所述预测错误指令的ROB ID最近的有效检查点;
若存在最近的有效检查点,则将所述有效检查点保存的信息进行恢复;
若不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复。
2.根据权利要求1所述的寄存器重命名恢复方法,其特征在于,所述确定离所述预测错误指令的ROB ID最近的有效检查点,包括:
若所述ROB中的出队指针、所述ROB中的入队指针和所述预测错误指令的ROB ID均不在同一组,确定离所述预测错误指令的ROB ID最近的有效检查点;
若所述ROB中的入队指针和所述预测错误指令的ROB ID在同一组,确定ROB ID比所述预测错误指令的ROB ID旧,且ROB ID与所述预测错误指令的ROB ID位于不同组的最近的检查点,并确定所述最近的检查点是否为有效检查点。
3.根据权利要求2所述的寄存器重命名恢复方法,其特征在于,所述确定所述最近的检查点是否为有效检查点,包括:
若所述入队指针和所述预测错误指令的ROB ID在同一组,且所述最近的检查点的ROBID比所述出队指针的ROB ID新,则确定所述最近的检查点为有效检查点;
若所述入队指针和所述预测错误指令的ROB ID在同一组,且所述最近的检查点的ROBID比所述出队指针的ROB ID旧,则确定所述最近的检查点为无效检查点。
4.根据权利要求1-3任一项所述的寄存器重命名恢复方法,其特征在于,所述将所述有效检查点保存的信息进行恢复,包括:
将所述有效检查点保存的信息恢复到重命名映射表和空闲寄存器列表中;
将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复,包括:
将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息恢复到重命名映射表和空闲寄存器列表中。
5.根据权利要求1-3任一项所述的寄存器重命名恢复方法,其特征在于,所述将所述有效检查点保存的信息进行恢复之后,还包括:
将所述检查点的ROB ID之后的ROB信息和检查点取消;
所述将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复之后,还包括:
将所述预测错误指令的ROB ID之后的ROB信息和检查点取消。
6.根据权利要求1-3任一项所述的寄存器重命名恢复方法,其特征在于,所述方法还包括:
在寄存器重命名恢复之后,将所述ROB中的入队指针指向所述预测错误指令的ROB ID。
7.根据权利要求1-3任一项所述的寄存器重命名恢复方法,其特征在于,
每一组中所述检查点的ROB ID的范围为第一值到第二值,所述第一值为下一组中最小的ROB ID减去所述处理器的带宽,所述第二值为下一组中最大的ROB ID减去所述处理器的带宽。
8.根据权利要求1-3任一项所述的寄存器重命名恢复方法,其特征在于,所述方法还用于通过取指目标队列FTQ实现。
9.一种寄存器重命名恢复装置,其特征在于,应用于处理器,所述处理器中指令对应的寄存器重命名信息缓存在重排序缓存ROB中,所述ROB中指令按照固定的数量进行分组,所述ROB中的指令具有唯一的ROB 标识ID,每一组设置一个检查点,所述装置包括:
确定模块,用于在存在预测错误指令的情况下,确定离所述预测错误指令的ROB ID最近的有效检查点;
处理模块,用于若存在最近的有效检查点,则将所述有效检查点保存的信息进行恢复;
所述处理模块,还用于若不存在最近的有效检查点,则将所述预测错误指令至所述ROB中的出队指针之间的寄存器重命名之前的信息进行恢复。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8任一项所述寄存器重命名恢复方法。
11.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述寄存器重命名恢复方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311828932.0A CN117472447B (zh) | 2023-12-28 | 2023-12-28 | 寄存器重命名恢复方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311828932.0A CN117472447B (zh) | 2023-12-28 | 2023-12-28 | 寄存器重命名恢复方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117472447A true CN117472447A (zh) | 2024-01-30 |
CN117472447B CN117472447B (zh) | 2024-03-12 |
Family
ID=89624226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311828932.0A Active CN117472447B (zh) | 2023-12-28 | 2023-12-28 | 寄存器重命名恢复方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117472447B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5961636A (en) * | 1997-09-22 | 1999-10-05 | International Business Machines Corporation | Checkpoint table for selective instruction flushing in a speculative execution unit |
CN1885269A (zh) * | 2005-06-23 | 2006-12-27 | 国际商业机器公司 | 在微处理器恢复单元中进行写队列读数据的方法和装置 |
US20070043934A1 (en) * | 2005-08-22 | 2007-02-22 | Intel Corporation | Early misprediction recovery through periodic checkpoints |
CN102089746A (zh) * | 2008-05-13 | 2011-06-08 | 微软公司 | 采用事务日志的闪存恢复 |
CN102567137A (zh) * | 2010-12-27 | 2012-07-11 | 北京国睿中数科技股份有限公司 | 在分支预测失败时使用rob恢复rat内容的系统和方法 |
CN110597556A (zh) * | 2019-09-09 | 2019-12-20 | 中国人民解放军国防科技大学 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
US20200401408A1 (en) * | 2019-06-19 | 2020-12-24 | Arm Limited | Checkpointing speculative register mappings |
CN114692829A (zh) * | 2022-03-24 | 2022-07-01 | 西安交通大学 | 基于dnn模型的检查点选择方法、设备和存储介质 |
-
2023
- 2023-12-28 CN CN202311828932.0A patent/CN117472447B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5961636A (en) * | 1997-09-22 | 1999-10-05 | International Business Machines Corporation | Checkpoint table for selective instruction flushing in a speculative execution unit |
CN1885269A (zh) * | 2005-06-23 | 2006-12-27 | 国际商业机器公司 | 在微处理器恢复单元中进行写队列读数据的方法和装置 |
US20070043934A1 (en) * | 2005-08-22 | 2007-02-22 | Intel Corporation | Early misprediction recovery through periodic checkpoints |
CN102089746A (zh) * | 2008-05-13 | 2011-06-08 | 微软公司 | 采用事务日志的闪存恢复 |
CN102567137A (zh) * | 2010-12-27 | 2012-07-11 | 北京国睿中数科技股份有限公司 | 在分支预测失败时使用rob恢复rat内容的系统和方法 |
US20200401408A1 (en) * | 2019-06-19 | 2020-12-24 | Arm Limited | Checkpointing speculative register mappings |
CN110597556A (zh) * | 2019-09-09 | 2019-12-20 | 中国人民解放军国防科技大学 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
CN114692829A (zh) * | 2022-03-24 | 2022-07-01 | 西安交通大学 | 基于dnn模型的检查点选择方法、设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
JUNYA NAKAMURA等: "A cooperative partial snapshot algorithm for checkpoint-rollback recovery of large-scale and dynamic distributed systems and experimental evaluations", CONCURRENCY AND COMPUTATION PRACTICE AND EXPERIENCE, 25 June 2021 (2021-06-25), pages 1 - 18 * |
王晓桐: "分布式并行流处理系统容错", 中国博士学位论文全文数据库 信息科技辑, 15 March 2022 (2022-03-15), pages 2 - 4 * |
Also Published As
Publication number | Publication date |
---|---|
CN117472447B (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100234648B1 (ko) | 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템 | |
US7747841B2 (en) | Method and apparatus for early load retirement in a processor system | |
US8327188B2 (en) | Hardware transactional memory acceleration through multiple failure recovery | |
US6708288B1 (en) | Compiler-based checkpointing for support of error recovery | |
US7870369B1 (en) | Abort prioritization in a trace-based processor | |
US7930695B2 (en) | Method and apparatus for synchronizing threads on a processor that supports transactional memory | |
US10198267B2 (en) | Register renaming using snapshot buffers | |
US6415380B1 (en) | Speculative execution of a load instruction by associating the load instruction with a previously executed store instruction | |
US8316366B2 (en) | Facilitating transactional execution in a processor that supports simultaneous speculative threading | |
JP5313253B2 (ja) | 誤りの投機的更新のリンクスタック修復 | |
US20160350115A1 (en) | Register renaming | |
US20110264898A1 (en) | Checkpoint allocation in a speculative processor | |
US10289415B2 (en) | Method and apparatus for execution of threads on processing slices using a history buffer for recording architected register data | |
US20040078559A1 (en) | Speculative execution control device for computer instructions and method for the same | |
US8601240B2 (en) | Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution | |
US7836290B2 (en) | Return address stack recovery in a speculative execution computing apparatus | |
KR20030019451A (ko) | 추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘 | |
WO2013101144A1 (en) | Overlapping atomic regions in a processor | |
CN108694094B (zh) | 用于处理存储器访问操作的装置和方法 | |
US10977038B2 (en) | Checkpointing speculative register mappings | |
US7934080B2 (en) | Aggressive store merging in a processor that supports checkpointing | |
CN107688544B (zh) | 一种对寄存器别名表恢复方法 | |
US20080244244A1 (en) | Parallel instruction processing and operand integrity verification | |
US7610474B2 (en) | Mechanism for hardware tracking of return address after tail call elimination of return-type instruction | |
JP3683439B2 (ja) | 分岐予測を抑止する情報処理装置および方法 |
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 |