CN116339830B - 一种寄存器管理方法、装置、电子设备及可读存储介质 - Google Patents

一种寄存器管理方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN116339830B
CN116339830B CN202310611584.5A CN202310611584A CN116339830B CN 116339830 B CN116339830 B CN 116339830B CN 202310611584 A CN202310611584 A CN 202310611584A CN 116339830 B CN116339830 B CN 116339830B
Authority
CN
China
Prior art keywords
physical register
instruction
register
target
renaming
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
Application number
CN202310611584.5A
Other languages
English (en)
Other versions
CN116339830A (zh
Inventor
唐浩晋
张紫飞
王凯帆
陈键
唐丹
包云岗
郭新贺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Open Source Chip Research Institute
Original Assignee
Beijing Open Source Chip Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Open Source Chip Research Institute filed Critical Beijing Open Source Chip Research Institute
Priority to CN202310611584.5A priority Critical patent/CN116339830B/zh
Publication of CN116339830A publication Critical patent/CN116339830A/zh
Application granted granted Critical
Publication of CN116339830B publication Critical patent/CN116339830B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明实施例提供一种寄存器管理方法、装置、电子设备及可读存储介质,该方法包括:确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组;所述第一物理寄存器组中包括所述指令序列中所有指令的目的逻辑寄存器被重命名的物理寄存器编号;所述第二物理寄存器组中包括所述指令序列中各条指令的目的逻辑寄存器在重命名之前对应的物理寄存器编号;若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中。本发明实施例能够有效确定出需要释放的物理寄存器,且无需维护任何引用计数器或类似的结构,节省了设计成本。

Description

一种寄存器管理方法、装置、电子设备及可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种寄存器管理方法、装置、电子设备及可读存储介质。
背景技术
数据传送指令(Move指令)是一种常见的指令,这种指令并不需要实际计算,但却会造成数据依赖,从而导致至少一拍的延迟。Move 指令消除便是希望通过一些方法,消除Move 指令与后续指令的数据依赖,从而达到提高处理器性能的目的。在相关技术中,实现Move 指令消除的技术路线可以分为两大类:“指令融合”和“寄存器重命名”,而目前的主流技术路线为后者。
Move 指令消除依赖于寄存器重命名技术,在对 Move 指令进行重命名时,处理器不再为 Move 指令的目的操作数分配一个新的物理寄存器,而是将源操作数对应的物理寄存器重命名给目的操作数。Move 消除带来了一个新的问题,即何时能将物理寄存器释放。在没有 Move 指令消除的情况下,只需要在指令提交时,释放旧的物理寄存器即可,但在有Move 消除的情况下,一个物理寄存器可能会被多条指令或多个逻辑寄存器所使用。因此,处理器将不再能够无条件地在指令提交时释放旧的物理寄存器。
发明内容
本发明实施例提供一种寄存器管理方法、装置、电子设备及可读存储介质,可以解决在有Move 消除的情况下,处理器无法确定物理寄存器释放时机的问题。
为了解决上述问题,本发明实施例公开了一种寄存器管理方法,所述方法包括:
确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组;所述第一物理寄存器组中包括所述指令序列中所有指令的目的逻辑寄存器被重命名的物理寄存器编号;所述第二物理寄存器组中包括所述指令序列中各条指令的目的逻辑寄存器在重命名之前对应的物理寄存器编号;
若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中。
可选地,所述确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
在指令提交阶段,从重命名缓存中获取待提交的指令序列中各条指令的指令信息,所述指令信息包括第一指示、写逻辑寄存器编号和第一物理寄存器编号;所述第一指示用于指示所述指令是否写逻辑寄存器;所述第一物理寄存器编号为所述指令的写逻辑寄存器被重命名的物理寄存器编号;
根据所述重命名缓存中记录的指令信息,确定所述指令序列对应的第一物理寄存器组和第二物理寄存器组;
其中,所述第一物理寄存器组中包括所述指令序列中需要写逻辑寄存器的第一指令对应的第一物理寄存器编号;所述第二物理寄存器组包括所述第一指令对应的第二物理寄存器编号;所述第二物理寄存器编号为所述第一指令的写逻辑寄存器在重命名之前对应的物理寄存器编号。
可选地,所述根据所述重命名缓存中记录的指令信息,确定所述指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
根据所述第一指示确定所述指令序列中是否存在需要写逻辑寄存器的第一指令;
若所述指令序列中存在需要写逻辑寄存器的第一指令,则根据所述第一指令对应的第一物理寄存器编号更新非推测重命名表中所述第一指令的写逻辑寄存器编号对应的表项;
将所述第一指令的写逻辑寄存器对应的第二物理寄存器编号记录在所述第一指令对应的临时寄存器中,并将所述临时寄存器的标志位设置为第一标志位;
所述若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中,包括:
在所述指令序列中各条第一指令的写逻辑寄存器编号对应的非推测重命名表项均被更新的情况下,将所述指令序列对应的目标寄存器中记录的物理寄存器编号与更新后的非推测重命名表进行比对;所述目标寄存器的标志位为第一标志位;
若所述目标寄存器存在目标物理寄存器编号,且更新后的非推测重命名表中不存在所述目标物理寄存器编号,则将所述目标物理寄存器号写入空闲物理寄存器列表中。
可选地,所述方法还包括:
在指令提交阶段,若所述指令序列中存在不需要写逻辑寄存器的第二指令,则将所述第二指令对应的临时寄存器的标志位设置为第二标志位,或者,将所述第二指令对应的临时寄存器设置为零寄存器;所述非推测重命名表中始终包含所述零寄存器的编号。
可选地,在指令提交阶段,从重命名缓存中获取待提交的指令序列中各条指令的指令信息之前,所述方法还包括:
在重命名阶段,按照指令执行顺序在重命名缓存中记录所述指令序列中各条指令的指令信息。
可选地,所述确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
在重命名阶段,按照指令执行顺序对待处理的指令序列中的各条指令进行重命名处理,并根据所述指令的目的逻辑寄存器对应的第一物理寄存器编号更新重命名表;
在重命名缓存中记录所述目的逻辑寄存器对应的第二物理寄存器编号;
所述若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中,包括:
在指令提交阶段,从重命名缓存中获取待提交的指令序列对应的第二物理寄存器编号,并将所述第二物理寄存器编号与当前时刻的重命名表进行比对;
若所述重命名表中不存在所述第二物理寄存器编号,则将所述第二物理寄存器编号写入空闲物理寄存器列表中;
其中,所述第一物理寄存器编号为所述指令的目的逻辑寄存器被重命名的物理寄存器编号;所述第二物理寄存器编号为所述指令的目的逻辑寄存器在重命名之前对应的物理寄存器编号。
可选地,所述确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
在指令提交阶段,获取当前时刻的第一重命名表,以及从预设存储空间中获取目标时刻对应的第二重命名表;所述预设存储空间中存储有不同时刻对应的重命名表,所述目标时刻为当前时刻之前的任一时刻;
所述若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中,包括:
将所述第一重命名表与所述第二重命名表进行比对;
若所述第二重命名表中存在目标寄存器编号,且所述第一重命名表中不存在所述目标寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中。
可选地,所述方法还包括:
在满足重定向恢复条件的情况下,从预设的快照空间中获取目标快照点对应的目标重命名表和目标空闲物理寄存器列表;
根据所述目标重命名表更新当前时刻的重命名表,并基于更新后的重命名表对待处理的指令序列进行重命名处理;
利用所述目标空闲物理寄存器列表对当前时刻的空间物理寄存器列表进行覆盖恢复。
另一方面,本发明实施例公开了一种寄存器管理装置,所述装置包括:
确定模块,用于确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组;所述第一物理寄存器组中包括所述指令序列中所有指令的目的逻辑寄存器被重命名的物理寄存器编号;所述第二物理寄存器组中包括所述指令序列中各条指令的目的逻辑寄存器在重命名之前对应的物理寄存器编号;
释放模块,用于若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中。
再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的寄存器管理方法。
本发明实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的寄存器管理方法。
本发明实施例包括以下优点:
本发明实施例提供了一种寄存器管理方法,通过确定指令的目的逻辑寄存器在重命名前后分别对应的第一物理寄存器组和第二物理寄存器组,并对两个寄存器组进行比较,就可以确定出需要释放的物理寄存器,无需维护任何引用计数器或类似的结构,节省了设计成本;并且,本发明实施例不需要进行加法或减法操作,也无需在一个周期内进行多次读写操作,只需要对第一物理寄存器组和第二物理寄存器组包含的寄存器编号进行比较即可,串行运算部分仅在去重和操作数旁路处存在,因此具有良好的时序表现和可扩展性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种寄存器管理方法实施例的步骤流程图;
图2是本发明的一种指令处理的流程示意图;
图3是本发明的一种寄存器管理装置的结构示意图;
图4是本发明示例提供的一种用于寄存器管理的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
方法实施例
Move 指令是一种常见的指令,这种指令并不需要实际计算,但却会造成数据依赖,从而导致至少一拍的延迟。例如,对于指令序列:
MOV R2,R1
ADD R4,R3,R2
由于 MOV 指令的目的操作数 R2 会被 ADD 指令作为源操作数,因此在 MOV 指令实际执行前,ADD 指令会因为 R2 的数据依赖而被阻塞。然而,以上指令序列的效果等价于:
MOV R2,R1
ADD R4,R3,R1
在这一指令序列中,ADD 指令与 MOV 指令之间便不再存在数据依赖,MOV 指令和ADD 指令可以被并行执行。Move 指令消除便是希望通过一些方法,消除 Move 指令与后续指令的数据依赖,从而达到提高处理器性能的目的。
总体而言,实现 Move 指令消除的技术路线可以分为两大类:“指令融合”和“寄存器重命名”,而目前的主流技术路线为后者。因此,为了简洁起见,本文后续提到的“Move 指令消除”或“Move 消除”均指“通过寄存器重命名的方式实现的 Move 指令消除”。
Move 指令消除依赖于寄存器重命名技术,在对 Move 指令进行重命名时,处理器不再为 Move 指令的目的操作数分配一个新的物理寄存器,而是将源操作数对应的物理寄存器重命名给目的操作数。以指令“MOV R2,R1”为例,假设初始状态的重命名表为:
R1 -> P11
R2 -> P12
那么在 Move 指令消除技术下,R2 逻辑寄存器将也被映射到 P11 寄存器。重命名后,重命名表将变为:
R1 -> P11
R2 -> P11
而 MOV 指令后续将不再被实际执行。
Move 消除带来了一个新的问题,即何时能将物理寄存器释放。在没有 Move 指令消除的情况下,只需要在指令提交时,释放旧的物理寄存器即可,但在有 Move 消除的情况下,一个物理寄存器可能会被多条指令或多个逻辑寄存器所使用。因此,处理器将不再能够无条件地在指令提交时释放旧的物理寄存器。
相关技术中的 Move 消除都依赖着“引用计数”或类似方法来决定或与其他方法共同决定物理寄存器释放的时机。一种最直接的方法是,为每一个物理寄存器维护一个计数器。在重命名阶段,每将一个物理寄存器映射给逻辑寄存器,就将该物理寄存器所对应的计数器加一;在提交阶段,将旧的物理寄存器所对应的计数器减一。那么,如果某个计数器从非零变为了零,则说明这个计数器所对应的物理寄存器不再被任何逻辑寄存器或指令所使用,因而便可以释放该物理寄存器。
上述实现方式的一个问题是会占用较多的存储空间,从而导致面积过大。一方面,每一个物理寄存器都需要对应一个计数器,另一方面,计数器的计数上限必须能够保证正确处理指令窗口中的指令全是 Move 指令的极限情况。
由于在绝大多数情况下,以某一个逻辑寄存器作为源操作数的 Move 指令不会连续发生很多次,因此一些方法对计数器的计数上限进行了更严格的限制,或是使用单个或多个比特作为标志位来指示该物理寄存器能否进一步被分配给其他逻辑寄存器。这种限制虽然在一定程度上缓解了面积过大的问题,但却会使重命名阶段的控制逻辑更加复杂,从而可能造成时序劣化等问题,而且这种限制也会不可避免地导致性能出现下降。
还有一些方法不再对物理寄存器进行引用计数,转而通过存储矩阵等方式记录逻辑寄存器之间的引用关系。如果逻辑处理器之间没有引用关系,那么便可以释放对应的物理寄存器。这种方法在不影响性能的情况下,一定程度上缓解了面积消耗过大的问题,但在时序表现上却不甚理想。在一些逻辑寄存器数量较少的指令集架构,如 x86 架构上,存储矩阵的项数较少,因而可以满足时序要求;但对于大多数 RISC 架构而言,逻辑寄存器的数量要多许多,再加之超标量处理器在一个周期内会串行对存储矩阵进行多次读写,因此时序会成为瓶颈。尽管可以通过限制单个周期内提交的 Move 指令数量的方式来减轻时序压力,但效果有限,且会不可避免地导致处理器性能的下降。
本发明实施例提供了一种寄存器管理方法,能够在有效确定出物理寄存器的释放时机的同时,避免上述相关技术中出现的问题,提升了处理器性能。
参照图1,示出了本发明的一种寄存器管理方法实施例的步骤流程图,所述方法具体可以包括如下步骤:
步骤101、确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组;
步骤102、若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中。
其中,所述第一物理寄存器组中包括所述指令序列中所有指令的目的逻辑寄存器被重命名的物理寄存器编号;所述第二物理寄存器组中包括所述指令序列中各条指令的目的逻辑寄存器在重命名之前对应的物理寄存器编号。
需要说明的是,逻辑寄存器是指被编码在指令中的寄存器编号,一般数量较少。物理寄存器是处理器中实际的寄存器堆,一般数量较多。空闲物理寄存器列表用于记录空闲的物理寄存器,如果指令需要新的物理寄存器,就可以从空闲物理寄存器列表中获取空闲的物理寄存器的编号。
本发明实施例提供的寄存器管理方法,可以应用于处理器。在乱序处理器架构中,指令会依次经过译码、重命名、分派、发射、执行、写回、提交等阶段。在重命名阶段,一条指令中的逻辑寄存器被重命名为物理寄存器。具体地,处理器会对指令的源逻辑寄存器编号(源操作数),获取对应的物理寄存器编号,并根据指令的目的逻辑寄存器编号和物理寄存器编号,更新重命名表中目的逻辑寄存器对应的表项。其中,重命名表用于记录逻辑寄存器编号和物理寄存器编号质检的映射关系。指令的源逻辑寄存器(源操作数)对应的物理寄存器可以通过读取重命名表来获取。
如果一条指令需要写逻辑寄存器,那么在重命名阶段,处理器会从空间物理寄存器列表中获取一个空闲物理寄存器的编号,并利用这个空闲物理寄存器的编号去更新重命名表中目的逻辑寄存器(目的操作数)对应的表项。
可选地,所述确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组之前,所述方法还包括:在重命名阶段,若待处理的指令序列中存在数据传送指令,则确定所述数据传送指令的源逻辑寄存器对应的第一物理寄存器;根据所述第一物理寄存器的编号更新重命名表中所述数据传送指令的目的逻辑寄存器对应的表项。
特别地,如果一条指令是数据传送指令(Move指令),那么在重命名阶段,处理器不会为其分配一个空闲物理寄存器,而是直接将Move指令的源逻辑寄存器对应的物理寄存器更新至重命名表中目的逻辑寄存器对应的表项。
在本发明实施例中,可以在重命名阶段,按照指令执行顺序确定指令序列中各条指令的目的逻辑寄存器被重命名的物理寄存器编号,和各条指令的目的逻辑寄存器在重命名之前对应的物理寄存器编号,从而在指令序列中各条指令的目的逻辑寄存器均被重命名之后,确定出该指令序列对应的第一物理寄存器组和第二物理寄存器组。或者,也可以在重命名阶段,按照指令顺序在重命名缓存中记录各条指令的目的逻辑寄存器在重命名之前对应的物理寄存器编号,然后,在指令提交阶段,通过读取重命名缓存确定出指令序列对应的第二物理寄存器组,通过读取当前时刻的重命名表,确定出指令序列对应的第一物理寄存器组,等等。
需要说明的是,一个周期内可能会有多条指令被重命名,因此对于不是第一条被重命名的指令,其源逻辑寄存器对应的物理寄存器,需要结合该周期内先于该指令的目的逻辑寄存器被重命名的物理寄存器编号确定。
确定出指令序列对应的第一物理寄存器组和第二物理寄存器组之后,将这两个寄存器组中包含的物理寄存器进行比对,如果第二物理寄存器组中包含目标物理寄存器编号,例如Pm,且第一物理寄存器组中不存在该目标物理寄存器编号Pm,那么就可以释放该目标物理寄存器,也即将目标物理寄存器编号写入空闲物理寄存器列表中。
例如,对于指令序列:
MOV R2,R1
ADD R4,R3,R2
假设对该指令序列进行重命名处理之前的重命名表为:
R1 -> P11
R2 -> P12
R3 -> P13
R4 -> P14
在重命名阶段,处理器不会对MOV指令的目的逻辑寄存器R2分配新的物理寄存器,而是直接将重命名表中R2对应的物理寄存器更新为P11。
对于ADD指令,处理器从空闲物理寄存器列表中为其目的逻辑寄存器R4分配一个新物理寄存器P15,并将其写入重命名表中。
针对该指令序列而言,其对应的第一物理寄存器组包括P11和P15,第二物理寄存器组包括P12和P14。
在指令提交阶段,由于第二物理寄存器组中的P12和P14均不存在于第一物理寄存器组中,因此可以将P12和P14释放,也即将P12和P14写入空闲物理寄存器列表中。
相比于相关技术中采用计数器对物理寄存器进行引用计数,或通过存储矩阵等方式记录逻辑寄存器之间的引用关系,本发明实施例提供的寄存器管理方法,无需维护任何引用计数器或类似的结构,节省了设计成本;并且,本发明实施例不需要进行加法或减法操作,也无需在一个周期内进行多次读写操作,只需要对第一物理寄存器组和第二物理寄存器组包含的寄存器编号进行比较即可,串行运算部分仅在去重和操作数旁路处存在,因此具有良好的时序表现和可扩展性。
此外,本发明实施例提供的寄存器管理方法,无需在重命名阶段或指令提交阶段对Move指令进行额外的限制,避免了处理器潜在的性能下降。
在本发明的一种可选实施例中,步骤101所述确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
步骤S11、在指令提交阶段,从重命名缓存中获取待提交的指令序列中各条指令的指令信息,所述指令信息包括第一指示、写逻辑寄存器编号和第一物理寄存器编号;所述第一指示用于指示所述指令是否写逻辑寄存器;所述第一物理寄存器编号为所述指令的写逻辑寄存器被重命名的物理寄存器编号;
步骤S12、根据所述重命名缓存中记录的指令信息,确定所述指令序列对应的第一物理寄存器组和第二物理寄存器组;
其中,所述第一物理寄存器组中包括所述指令序列中需要写逻辑寄存器的第一指令对应的第一物理寄存器编号;所述第二物理寄存器组包括所述第一指令对应的第二物理寄存器编号;所述第二物理寄存器编号为所述第一指令的写逻辑寄存器在重命名之前对应的物理寄存器编号。
在本发明实施例中,可以按照指令执行顺序,将指令的第一指示、写逻辑寄存器编号和第一物理寄存器编号等信息存储在重命名缓存中。其中,第一指示用于指示指令是否为写逻辑寄存器。示例性地,重命名缓存中记录的指令信息还可以包括第二指示,所述第二指示用于指示指令是否为数据传送指令(Move指令)。
在指令提交阶段,处理器可以从重命名缓存中获取待提交的指令序列中各条指令的指令信息,并根据指令信息确定该指令序列对应的第一物理寄存器组和第二物理寄存器组。
示例性地,对于指令序列中的任意一条指令,如果该指令的第一指示指示其需要写逻辑寄存器,那么,将该指令的第一物理寄存器编号添加到该指令序列的第一物理寄存器组中,将该指令的写逻辑寄存器在重命名之前对应的第二物理寄存器编号添加到第二物理寄存器组中。可以理解的是,一个周期内可能会有多条指令被重命名,因此对于不是第一条被重命名的指令,其写逻辑寄存器对应的第二物理寄存器编号,需要结合该周期内先于该指令的写逻辑寄存器被重命名的物理寄存器编号确定。
可选地,步骤S12所述根据所述重命名缓存中记录的指令信息,确定所述指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
步骤S121、根据所述第一指示确定所述指令序列中是否存在需要写逻辑寄存器的第一指令;
步骤S122、若所述指令序列中存在需要写逻辑寄存器的第一指令,则根据所述第一指令对应的第一物理寄存器编号更新非推测重命名表中所述第一指令的写逻辑寄存器编号对应的表项;
步骤S123、将所述第一指令的写逻辑寄存器对应的第二物理寄存器编号记录在所述第一指令对应的临时寄存器中,并将所述临时寄存器的标志位设置为第一标志位;
步骤102所述若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中,包括:
步骤S124、在所述指令序列中各条第一指令的写逻辑寄存器编号对应的非推测重命名表项均被更新的情况下,将所述指令序列对应的目标寄存器中记录的物理寄存器编号与更新后的非推测重命名表进行比对;所述目标寄存器的标志位为第一标志位;
步骤S125、若所述目标寄存器存在目标物理寄存器编号,且更新后的非推测重命名表中不存在所述目标物理寄存器编号,则将所述目标物理寄存器号写入空闲物理寄存器列表中。
参照图2,示出了本发明实施例提供的一种指令处理的流程示意图。如图2所示,在本发明实施例中,可以将重命名表分为两部分:推测重命名表和非推测重命名表。这两部分均用于记录逻辑寄存器和物理寄存器之间的对应关系,其中,推测重命名表在重命名阶段被修改,非推测重命名表在指令提交阶段被修改。
在重命名阶段,一条指令中的逻辑寄存器被重命名为物理寄存器。对于源逻辑寄存器(源操作数)而言,其对应的物理寄存器可以通过读推测重命名表来获取;如果一条指令要写逻辑寄存器,那么重命名阶段,处理器会从空闲物理寄存器列表中获取一个空闲物理寄存器,并用这个物理寄存器去更新“推测重命名表”中目的逻辑寄存器(目的操作数)所对应的表项。特别的,如果一条指令是 Move 指令,那么重命名阶段不会为其分配一个空闲物理寄存器,而是直接将源逻辑寄存器对应的物理寄存器更新至“推测重命名表”中目的逻辑寄存器所对应的表项。
可选地,在指令提交阶段,从重命名缓存中获取待提交的指令序列中各条指令的指令信息之前,所述方法还包括:
在重命名阶段,按照指令执行顺序在重命名缓存中记录所述指令序列中各条指令的指令信息。
在指令提交阶段,重命名缓存将要提交的指令序列的指令信息送往非推测重命名表。如果第一指示表明指令序列中的第一指令需要写逻辑寄存器,则将第一物理寄存器编号,也即写逻辑寄存器被重命名的新物理寄存器编号,写入非推测重命名表中写逻辑寄存器编号对应的表项。同时,将写逻辑寄存器编号对应的第二物理寄存器编号,也即写逻辑寄存器被重命名之前的旧物理寄存器编号,记录在该第一指令对应的临时寄存器中,并将该临时寄存器的标志位设置为第一标志位。可以理解的是,所述第一指令可以是待提交的指令序列中的任意一条需要写逻辑寄存器的指令。
可选地,所述方法还包括:在指令提交阶段,若所述指令序列中存在不需要写逻辑寄存器的第二指令,则将所述第二指令对应的临时寄存器的标志位设置为第二标志位,或者,将所述第二指令对应的临时寄存器设置为零寄存器;所述非推测重命名表中始终包含所述零寄存器的编号。
如果第一指示表明指令序列中的第二指令不需要写逻辑寄存器,那么可以将该第二指令的临时寄存器的标志位设置为第二标志位,或者,将第二指令的临时寄存器设置为零寄存器。零寄存器始终存在于非推测重命名表中,因此,不会释放这些被设置为零寄存器的临时寄存器。
在所述指令序列中各条第一指令的写逻辑寄存器编号对应的非推测重命名表项均被更新的情况下,可以将指令序列对应的每一个标志位为第一标志位的目标寄存器中记录的物理寄存器编号与更新后的非推测重命名表进行比对。如果目标寄存器中的某一个目标物理寄存器编号与非推测重命名表中的每一项均不相同,也即更新后的非推测重命名表中不存在该目标物理寄存器编号,则可以将该目标物理寄存器释放,也即将目标物理寄存器编号写入到空闲物理寄存器列表中。特别的,单个周期内,指令序列对应的各个临时寄存器中暂存的物理寄存器编号可能会有重复,对于重复的物理寄存器编号,其释放信号需要去重,即针对目标物理寄存器编号仅释放一次。
作为一种示例,某一个架构中共有四个逻辑寄存器,即推测重命名表(sRAT)和非推测重命名表(aRAT)均有 4 项;物理寄存器一共有 8 个。重命名阶段,每周期最多重命名四条指令;提交阶段,每周期最多提交四条指令。如表1所示,设初始状态下,sRAT 和 aRAT中的映射关系为 sRAT(Rx)=P0,aRAT(Rx)=P0,x=0,1,2,3。
参照表2,示出了初始状态下的重命名缓存(Reorder Buffer,ROB)。
其中,“index”为待提交的指令序列中各条指令的索引值;“valid”用于指示指令的有效性,当指令未被重命名处理时,其对应的“valid”的值为“false”,当指令被重命名处理之后,其对应的“valid”的值为“true”;“writerRF”为本发明实施例中的第一指示,用于指示指令是否需要写逻辑寄存器;“ldset”为指令的写逻辑寄存器编号;“pdest”为指令的第一物理寄存器编号,也即指令的写逻辑寄存器被重命名的物理寄存器编号;“isMove”为本发明实施例中的第二指示,用于指示指令是否为Move指令。
处理器共有如下四条指令需要执行:
ADD R1,R1,R2
MOV R2,R1
LI R2,2
LI R1,1
重命名阶段,假设处理器在同一周期内重命名以上四条指令。
第一条指令,重命名阶段查询 sRAT(R1)=P0,sRAT(R2)=P0,由于该指令不是 Move指令,因此重命名阶段从空闲物理寄存器列表中为 R1 分配一个“新物理寄存器”P1,并将其写入 sRAT 中,即 sRAT(R1).next<-P1。此时的推测重命名表如表3所示,重命名缓存如表4所示。
/>
第二条指令,重命名阶段查询 sRAT(R1)=P0,但由于第一条指令写了第二条指令的源操作数 R1 寄存器,因此 R1 对应的物理寄存器应为 P1。由于该指令是 Move 指令,因此重命名阶段不会为其分配新物理寄存器,而是直接将 sRAT(R2).next<- P1。此时的推测重命名表如表5所示,重命名缓存如表6所示。
第三条指令,由于该指令不是 Move 指令,因此重命名阶段从“空闲物理寄存器列表”中为 R2 分配一个“新物理寄存器”P2,并将其写入 sRAT 中,即 sRAT(R2).next<-P2。此时的推测重命名表如表7所示,重命名缓存如表8所示。
/>
第四条指令,由于该指令不是 Move 指令,因此重命名阶段从“空闲物理寄存器列表”中为 R1 分配一个“新物理寄存器”P3,并将其写入 sRAT 中,即 sRAT(R1).next<-P3。此时的推测重命名表如表9所示,重命名缓存如表10所示。
重命名阶段结束后,sRAT 的内容为:sRAT(R0)=P0,sRAT(R1)=P3,sRAT(R2)=P2,sRAT(R3)=P0,具体如表11所示。
指令执行结束后,进入提交阶段。假设四条指令在同一周期内提交。
第一条指令,“重命名缓存”传入提交阶段的信号表明该指令需要写逻辑寄存器,并且“写逻辑寄存器号”为 R1,新物理寄存器号为 P1,因此 aRAT(R1).next->P1,并将旧物理寄存器号写入临时寄存器中,将标志位置 1:tmp(0).next->aRAT(R1)=P0,flag(0).next->1。此时的非推测重命名表如表12所示,指令序列对应的各个临时寄存器如表13所示。
/>
其中,“index”为待提交的指令序列中各条指令的索引值;“flag”为临时寄存器的标志位,当指令需要写逻辑寄存器时,其对应的临时寄存器的标志位被设置为第一标志位“1”,当指令不需要写逻辑寄存器时,其对应的临时寄存器的标志位被设置为第二标志位“0”;“tmp”用于指示指令的写逻辑寄存器在重命名之前的旧物理寄存器编号,也即本发明实施例中的第二物理寄存器编号。
第二条指令,“重命名缓存”传入提交阶段的信号表明该指令需要写逻辑寄存器,并且“写逻辑寄存器号”为 R2,新物理寄存器号为 P1,因此 aRAT(R2).next->P1,并将旧物理寄存器号写入临时寄存器中,将标志位置 1:tmp(1).next->aRAT(R2)=P0,flag(1).next->1。此时的非推测重命名表如表14所示,指令序列对应的各个临时寄存器如表15所示。
第三条指令,“重命名缓存”传入提交阶段的信号表明该指令需要写逻辑寄存器,并且“写逻辑寄存器号”为 R2,新物理寄存器号为 P2,因此 aRAT(R2).next->P2,并将旧物理寄存器号写入临时寄存器中,将标志位置 1。由于第二条指令会将 aRAT(R2) 更新为P1,因此临时寄存器中将不会存储 aRAT(R2)=P0,而是 tmp(2).next->P1,flag(2).next->1。此时的非推测重命名表如表16所示,指令序列对应的各个临时寄存器如表17所示。
第四条指令,“重命名缓存”传入提交阶段的信号表明该指令需要写逻辑寄存器,并且“写逻辑寄存器号”为 R1,新物理寄存器号为 P3,因此 aRAT(R1).next->P3,并将旧物理寄存器号写入临时寄存器中,将标志位置 1。由于第一条指令会将 aRAT(R1) 更新为P1,而第二条指令和第三条指令不会更新 aRAT(R1),因此临时寄存器中将不会存储 aRAT(R1)=P0,而是 tmp(3).next->P1,flag(3).next->1。此时的非推测重命名表如表18所示,指令序列对应的各个临时寄存器如表19所示。
经过上述更新处理,如表20所示,非推测重命名表的内容为:aRAT(R0)=P0,aRAT(R1)=P3,aRAT(R2)=P2,aRAT(R3)=P0;如表21所示,临时寄存器的内容为:tmp(0)=P0,tmp(1)=P0,tmp(2)=P1,tmp(3)=P1;标志位为:flag(0)=1,flag(1)=1,flag(2)=1,flag(3)=1。
由于这四个临时寄存器的标志位均为“1”,因此需要将每一个临时寄存器都与aRAT 进行对比。由于 tmp(0)==tmp(1)==aRAT(R0),因此 P0 寄存器不会被释放,即不会被加入“空闲物理寄存器列表”。由于 tmp(2)=P1!=aRAT(Rx) 对任意 x=0,1,2,3成立,因此P1 寄存器会被释放,即会被加入“空闲物理寄存器列表”。尽管 tmp(3)=P1!=aRAT(Rx) 对任意 x=0,1,2,3 成立,但由于 tmp(2) 已经将 P1 寄存器释放过一次,因此该周期中,tmp(3) 不会再重复生成释放 P1 寄存器信号。
最终,物理寄存器P1被释放回空闲物理寄存器列表。
在本发明的另一种可能的应用场景中,可以不通过读取非推测重命名表和临时寄存器的方式获取指令序列对应的第一物理寄存器组和第二物理寄存器组,也可以在重命名阶段将目的逻辑寄存器被重命名之前的旧物理寄存器编号,也即第二物理寄存器编号,存放在重命名缓存中。
可选地,步骤101所述确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
步骤S21、在重命名阶段,按照指令执行顺序对待处理的指令序列中的各条指令进行重命名处理,并根据所述指令的目的逻辑寄存器对应的第一物理寄存器编号更新重命名表;
步骤S22、在重命名缓存中记录所述目的逻辑寄存器对应的第二物理寄存器编号;
步骤102所述若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中,包括:
步骤S23、在指令提交阶段,从重命名缓存中获取待提交的指令序列对应的第二物理寄存器编号,并将所述第二物理寄存器编号与当前时刻的重命名表进行比对;
步骤S24、若所述重命名表中不存在所述第二物理寄存器编号,则将所述第二物理寄存器编号写入空闲物理寄存器列表中。
其中,所述第一物理寄存器编号为所述指令的目的逻辑寄存器被重命名的物理寄存器编号;所述第二物理寄存器编号为所述指令的目的逻辑寄存器在重命名之前对应的物理寄存器编号。
在重命名阶段,处理器按照指令执行顺序对指令序列中的各条指令进行重命名处理,并根据指令的目的逻辑寄存器对应的第一物理寄存器编号更新重命名表,将目的逻辑寄存器重命名之前的旧物理寄存器编号,也即第二物理寄存器编号,记录在重命名缓存中。
然后,在指令提交阶段,从重命名缓存中获取各条指令的第二物理寄存器编号,并与当前时刻的重命名表进行比对,如果当前时刻的重命名表中不存在某个第二物理寄存器编号,则将该第二物理寄存器编号释放回空闲物理寄存器列表中。
示例性地,设初始状态下,重命名表sRAT中的映射关系为 sRAT(Rx)=P0,x=0,1,2,3。处理器共有如下四条指令需要执行:
ADD R1,R1,R2
MOV R2,R1
LI R2,2
LI R1,1
重命名阶段,假设处理器在同一周期内重命名以上四条指令。
第一条指令,重命名阶段查询 sRAT(R1)=P0,sRAT(R2)=P0,由于该指令不是 Move指令,因此重命名阶段从空闲物理寄存器列表中为 R1 分配一个“新物理寄存器”P1,并将其写入 sRAT 中,即 sRAT(R1).next<-P1。在重命名缓存中记录R1对应的第二物理寄存器编号为P0。
第二条指令,重命名阶段查询 sRAT(R1)=P0,但由于第一条指令写了第二条指令的源操作数 R1 寄存器,因此 R1 对应的物理寄存器应为 P1。由于该指令是 Move 指令,因此重命名阶段不会为其分配新物理寄存器,而是直接将 sRAT(R2).next<- P1。在重命名缓存中记录R2对应的第二物理寄存器编号为P0。
第三条指令,由于该指令不是 Move 指令,因此重命名阶段从“空闲物理寄存器列表”中为 R2 分配一个“新物理寄存器”P2,并将其写入 sRAT 中,即 sRAT(R2).next<-P2。在重命名缓存中记录R2对应的第二物理寄存器编号为P1。
第四条指令,由于该指令不是 Move 指令,因此重命名阶段从“空闲物理寄存器列表”中为 R1 分配一个“新物理寄存器”P3,并将其写入 sRAT 中,即 sRAT(R1).next<-P3。在重命名缓存中记录R1对应的第二物理寄存器编号为P1。
重命名阶段结束后,sRAT 的内容为:sRAT(R0)=P0,sRAT(R1)=P3,sRAT(R2)=P2,sRAT(R3)=P0,具体如表11所示。重命名缓存中记录的内容如表22所示。
指令执行结束后,进入提交阶段。将重命名缓存中记录的每一个物理寄存器编号都与重命名表sRAT进行比对,P1不存在于重命名表中,因此将P1释放回空闲物理寄存器列表中。
在本发明的另一种可选实施例中,步骤101所述确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
步骤S31、在指令提交阶段,获取当前时刻的第一重命名表,以及从预设存储空间中获取目标时刻对应的第二重命名表;所述预设存储空间中存储有不同时刻对应的重命名表,所述目标时刻为当前时刻之前的任一时刻;
步骤102所述若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中,包括:
步骤S32、将所述第一重命名表与所述第二重命名表进行比对;
步骤S33、若所述第二重命名表中存在目标寄存器编号,且所述第一重命名表中不存在所述目标寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中。
在本发明实施例中,还可以在预设存储空间中记录不同时刻对应的重命名表,进而根据之前某一时刻对应的重命名表确定需要释放的物理寄存器。示例性地,可以每间隔一段固定或不固定的时间,对重命名表sRAT进行一次保存。
如果选取的目标时刻对应的第二重命名表中存在某个目标物理寄存器编号,而当前时刻的第一重命名表中不存在该目标物理寄存器编号,就可以将该目标物理寄存器编号释放回空闲物理寄存器列表中。
作为一种示例,假设目标时刻对应的第二重命名表的内容:sRAT(R0)=P0,sRAT(R1)=P3,sRAT(R2)=P2,sRAT(R3)=P0,具体如表11所示。
处理器共有如下四条指令需要执行:
ADD R1,R1,R2
MOV R2,R1
LI R2,2
LI R1,1
第一条指令,重命名阶段查询 sRAT(R1)=P0,sRAT(R2)=P2,由于该指令不是 Move指令,因此重命名阶段从空闲物理寄存器列表中为 R1 分配一个“新物理寄存器”P4,并将其写入 sRAT 中,即 sRAT(R1).next<-P4。
第二条指令,重命名阶段查询 sRAT(R1)=P0,但由于第一条指令写了第二条指令的源操作数 R1 寄存器,因此 R1 对应的物理寄存器应为 P4。由于该指令是 Move 指令,因此重命名阶段不会为其分配新物理寄存器,而是直接将 sRAT(R2).next<- P4。
第三条指令,由于该指令不是 Move 指令,因此重命名阶段从“空闲物理寄存器列表”中为 R2 分配一个“新物理寄存器”P5,并将其写入 sRAT 中,即 sRAT(R2).next<-P5。
第四条指令,由于该指令不是 Move 指令,因此重命名阶段从“空闲物理寄存器列表”中为 R1 分配一个“新物理寄存器”P6,并将其写入 sRAT 中,即 sRAT(R1).next<-P6。
指令执行结束后,进入提交阶段。当前时刻的第一重命名表sRAT1 的内容为:sRAT(R0)=P0,sRAT(R1)=P6,sRAT(R2)=P5,sRAT(R3)=P0,具体如表23所示。
由于目标时刻的第二重命名表中记录的P2和P3,在当前时刻的第一重命名表中不存在,因此,可以将P2和P3均释放回空闲物理寄存器列表中。
在本发明的一种可选实施例中,所述方法还包括:
步骤S41、在满足重定向恢复条件的情况下,从预设的快照空间中获取目标快照点对应的目标重命名表和目标空闲物理寄存器列表;
步骤S42、根据所述目标重命名表更新当前时刻的重命名表,并基于更新后的重命名表对待处理的指令序列进行重命名处理;
步骤S43、利用所述目标空闲物理寄存器列表对当前时刻的空间物理寄存器列表进行覆盖恢复。
其中,重定向恢复条件用于指示处理器或模拟器的状态恢复条件,具体可以包括处理器或模拟器中出现推测执行错误、发生中断,等等。通过重定向恢复,可以将处理器或模拟器的内存状态恢复到推测执行错误之前或中断点之前。
在本发明实施例中,可以进一步结合快照恢复机制对重定向之后的指令进行重命名处理。需要说明的是,快照恢复是指当出现因分支或转移预测等原因出现推测执行错误时,不必将sRAT恢复到aRAT后再重新根据ROB中的信息进行重命名,而是可以将sRAT恢复到离重定向指令最近的sRAT快照,然后在此基础上进行重命名,从而减少重定向后重新重命名的时间,减少重命名流水级的停顿时间。
并且,在本发明实施例中,可以直接利用快照点对应的目标空闲物理寄存器列表对当前时刻的空闲物理寄存器列表进行覆盖恢复,无需再计算需要释放的物理寄存器。
在传统方案中,每一份sRAT快照都需要包括重命名表sRAT、空闲物理寄存器列表和引用计数等内容,而引用计数需要消耗较多的寄存器。在本发明实施例中,不再需要引用计数,仅需要针对每一个快照点保存重命名表、空闲物理寄存器列表等内容,从而能够减少寄存器消耗。
综上,本发明实施例提供了一种寄存器管理方法,通过确定指令的目的逻辑寄存器在重命名前后分别对应的第一物理寄存器组和第二物理寄存器组,并对两个寄存器组进行比较,就可以确定出需要释放的物理寄存器,无需维护任何引用计数器或类似的结构,节省了设计成本;并且,本发明实施例不需要进行加法或减法操作,也无需在一个周期内进行多次读写操作,只需要对第一物理寄存器组和第二物理寄存器组包含的寄存器编号进行比较即可,串行运算部分仅在去重和操作数旁路处存在,因此具有良好的时序表现和可扩展性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例
参照图3,示出了本发明的一种寄存器管理装置的结构框图,所述装置具体可以包括:
确定模块301,用于确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组;所述第一物理寄存器组中包括所述指令序列中所有指令的目的逻辑寄存器被重命名的物理寄存器编号;所述第二物理寄存器组中包括所述指令序列中各条指令的目的逻辑寄存器在重命名之前对应的物理寄存器编号;
释放模块302,用于若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中。
可选地,所述确定模块,包括:
第一获取子模块,用于在指令提交阶段,从重命名缓存中获取待提交的指令序列中各条指令的指令信息,所述指令信息包括第一指示、写逻辑寄存器编号和第一物理寄存器编号;所述第一指示用于指示所述指令是否写逻辑寄存器;所述第一物理寄存器编号为所述指令的写逻辑寄存器被重命名的物理寄存器编号;
第一确定子模块,用于根据所述重命名缓存中记录的指令信息,确定所述指令序列对应的第一物理寄存器组和第二物理寄存器组;
其中,所述第一物理寄存器组中包括所述指令序列中需要写逻辑寄存器的第一指令对应的第一物理寄存器编号;所述第二物理寄存器组包括所述第一指令对应的第二物理寄存器编号;所述第二物理寄存器编号为所述第一指令的写逻辑寄存器在重命名之前对应的物理寄存器编号。
可选地,所述第一确定子模块,包括:
第一确定单元,用于根据所述第一指示确定所述指令序列中是否存在需要写逻辑寄存器的第一指令;
第一更新单元,用于若所述指令序列中存在需要写逻辑寄存器的第一指令,则根据所述第一指令对应的第一物理寄存器编号更新非推测重命名表中所述第一指令的写逻辑寄存器编号对应的表项;
第一设置单元,用于将所述第一指令的写逻辑寄存器对应的第二物理寄存器编号记录在所述第一指令对应的临时寄存器中,并将所述临时寄存器的标志位设置为第一标志位;
所述释放模块,包括:
第一比对子模块,用于在所述指令序列中各条第一指令的写逻辑寄存器编号对应的非推测重命名表项均被更新的情况下,将所述指令序列对应的目标寄存器中记录的物理寄存器编号与更新后的非推测重命名表进行比对;所述目标寄存器的标志位为第一标志位;
第一释放子模块,用于若所述目标寄存器存在目标物理寄存器编号,且更新后的非推测重命名表中不存在所述目标物理寄存器编号,则将所述目标物理寄存器号写入空闲物理寄存器列表中。
可选地,所述第一确定子模块还包括:
第二设置单元,用于在指令提交阶段,若所述指令序列中存在不需要写逻辑寄存器的第二指令,则将所述第二指令对应的临时寄存器的标志位设置为第二标志位,或者,将所述第二指令对应的临时寄存器设置为零寄存器;所述非推测重命名表中始终包含所述零寄存器的编号。
可选地,所述装置还包括:
信息记录模块,用于在重命名阶段,按照指令执行顺序在重命名缓存中记录所述指令序列中各条指令的指令信息。
可选地,所述确定模块,包括:
重命名子模块,用于在重命名阶段,按照指令执行顺序对待处理的指令序列中的各条指令进行重命名处理,并根据所述指令的目的逻辑寄存器对应的第一物理寄存器编号更新重命名表;
编号记录子模块,用于在重命名缓存中记录所述目的逻辑寄存器对应的第二物理寄存器编号;
所述释放模块,包括:
第二比对子模块,用于在指令提交阶段,从重命名缓存中获取待提交的指令序列对应的第二物理寄存器编号,并将所述第二物理寄存器编号与当前时刻的重命名表进行比对;
第二释放子模块,用于若所述重命名表中不存在所述第二物理寄存器编号,则将所述第二物理寄存器编号写入空闲物理寄存器列表中;
其中,所述第一物理寄存器编号为所述指令的目的逻辑寄存器被重命名的物理寄存器编号;所述第二物理寄存器编号为所述指令的目的逻辑寄存器在重命名之前对应的物理寄存器编号。
可选地,所述确定模块,包括:
第二获取子模块,用于在指令提交阶段,获取当前时刻的第一重命名表,以及从预设存储空间中获取目标时刻对应的第二重命名表;所述预设存储空间中存储有不同时刻对应的重命名表,所述目标时刻为当前时刻之前的任一时刻;
所述释放模块,包括:
第三比对子模块,用于将所述第一重命名表与所述第二重命名表进行比对;
第三释放子模块,用于若所述第二重命名表中存在目标寄存器编号,且所述第一重命名表中不存在所述目标寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中。
可选地,所述装置还包括:
快照获取模块,用于在满足重定向恢复条件的情况下,从预设的快照空间中获取目标快照点对应的目标重命名表和目标空闲物理寄存器列表;
重命名模块,用于根据所述目标重命名表更新当前时刻的重命名表,并基于更新后的重命名表对待处理的指令序列进行重命名处理;
列表覆盖模块,用于利用所述目标空闲物理寄存器列表对当前时刻的空间物理寄存器列表进行覆盖恢复。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的寄存器管理模块,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参照图4,是本发明实施例提供的一种用于寄存器管理的电子设备的结构框图。如图4所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述实施例的寄存器管理方法。
所述处理器可以是CPU(Central Processing Unit,中央处理器),通用处理器、DSP(Digital Signal Processor,数字信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmble Gate Array,现场可编程门阵列)或者其他可编辑器件、晶体管逻辑器件、硬件部件或者其任意组合。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
所述通信总线可包括一通路,在存储器和通信接口之间传送信息。通信总线可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。所述通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
所述存储器可以是ROM(Read Only内存,只读内存)或可存储静态信息和指令的其他类型的静态存储设备、RAM(Random Access,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically Erasable Programmable ReadOnly,电可擦可编程只读内存)、CD-ROM(Compact Disa Read Only,只读光盘)、磁带、软盘和光数据存储设备等。
本发明实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备(服务器或者终端)的处理器执行时,使得处理器能够执行图1所示的寄存器管理方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种寄存器管理方法、装置、电子设备及可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (11)

1.一种寄存器管理方法,其特征在于,所述方法包括:
确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组;所述第一物理寄存器组中包括所述指令序列中所有指令的目的逻辑寄存器在重命名阶段中被重命名的物理寄存器编号;所述第二物理寄存器组中包括所述指令序列中各条指令的目的逻辑寄存器在所述重命名阶段中被重命名之前对应的物理寄存器编号;
在指令提交阶段,若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中。
2.根据权利要求1所述的方法,其特征在于,所述确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
在指令提交阶段,从重命名缓存中获取待提交的指令序列中各条指令的指令信息,所述指令信息包括第一指示、写逻辑寄存器编号和第一物理寄存器编号;所述第一指示用于指示所述指令是否写逻辑寄存器;所述第一物理寄存器编号为所述指令的写逻辑寄存器被重命名的物理寄存器编号;
根据所述重命名缓存中记录的指令信息,确定所述指令序列对应的第一物理寄存器组和第二物理寄存器组;
其中,所述第一物理寄存器组中包括所述指令序列中需要写逻辑寄存器的第一指令对应的第一物理寄存器编号;所述第二物理寄存器组包括所述第一指令对应的第二物理寄存器编号;所述第二物理寄存器编号为所述第一指令的写逻辑寄存器在重命名之前对应的物理寄存器编号。
3.根据权利要求2所述的方法,其特征在于,所述根据所述重命名缓存中记录的指令信息,确定所述指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
根据所述第一指示确定所述指令序列中是否存在需要写逻辑寄存器的第一指令;
若所述指令序列中存在需要写逻辑寄存器的第一指令,则根据所述第一指令对应的第一物理寄存器编号更新非推测重命名表中所述第一指令的写逻辑寄存器编号对应的表项;
将所述第一指令的写逻辑寄存器对应的第二物理寄存器编号记录在所述第一指令对应的临时寄存器中,并将所述临时寄存器的标志位设置为第一标志位;
所述若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中,包括:
在所述指令序列中各条第一指令的写逻辑寄存器编号对应的非推测重命名表项均被更新的情况下,将所述指令序列对应的目标寄存器中记录的物理寄存器编号与更新后的非推测重命名表进行比对;所述目标寄存器的标志位为第一标志位;
若所述目标寄存器存在目标物理寄存器编号,且更新后的非推测重命名表中不存在所述目标物理寄存器编号,则将所述目标物理寄存器号写入空闲物理寄存器列表中。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在指令提交阶段,若所述指令序列中存在不需要写逻辑寄存器的第二指令,则将所述第二指令对应的临时寄存器的标志位设置为第二标志位,或者,将所述第二指令对应的临时寄存器设置为零寄存器;所述非推测重命名表中始终包含所述零寄存器的编号。
5.根据权利要求2至4任一项所述的方法,其特征在于,在指令提交阶段,从重命名缓存中获取待提交的指令序列中各条指令的指令信息之前,所述方法还包括:
在重命名阶段,按照指令执行顺序在重命名缓存中记录所述指令序列中各条指令的指令信息。
6.根据权利要求1所述的方法,其特征在于,所述确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
在重命名阶段,按照指令执行顺序对待处理的指令序列中的各条指令进行重命名处理,并根据所述指令的目的逻辑寄存器对应的第一物理寄存器编号更新重命名表;
在重命名缓存中记录所述目的逻辑寄存器对应的第二物理寄存器编号;
所述在指令提交阶段,若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中,包括:
在指令提交阶段,从重命名缓存中获取待提交的指令序列对应的第二物理寄存器编号,并将所述第二物理寄存器编号与当前时刻的重命名表进行比对;
若所述重命名表中不存在所述第二物理寄存器编号,则将所述第二物理寄存器编号写入空闲物理寄存器列表中;
其中,所述第一物理寄存器编号为所述指令的目的逻辑寄存器被重命名的物理寄存器编号;所述第二物理寄存器编号为所述指令的目的逻辑寄存器在重命名之前对应的物理寄存器编号。
7.根据权利要求1所述的方法,其特征在于,所述确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组,包括:
在指令提交阶段,获取当前时刻的第一重命名表,以及从预设存储空间中获取目标时刻对应的第二重命名表;所述预设存储空间中存储有不同时刻对应的重命名表,所述目标时刻为当前时刻之前的任一时刻;
所述若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中,包括:
将所述第一重命名表与所述第二重命名表进行比对;
若所述第二重命名表中存在目标寄存器编号,且所述第一重命名表中不存在所述目标寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在满足重定向恢复条件的情况下,从预设的快照空间中获取目标快照点对应的目标重命名表和目标空闲物理寄存器列表;
根据所述目标重命名表更新当前时刻的重命名表,并基于更新后的重命名表对待处理的指令序列进行重命名处理;
利用所述目标空闲物理寄存器列表对当前时刻的空间物理寄存器列表进行覆盖恢复。
9.一种寄存器管理装置,其特征在于,所述装置包括:
确定模块,用于确定待处理的指令序列对应的第一物理寄存器组和第二物理寄存器组;所述第一物理寄存器组中包括所述指令序列中所有指令的目的逻辑寄存器在重命名阶段中被重命名的物理寄存器编号;所述第二物理寄存器组中包括所述指令序列中各条指令的目的逻辑寄存器在所述重命名阶段中被重命名之前对应的物理寄存器编号;
释放模块,用于在指令提交阶段,若所述第二物理寄存器组中存在目标物理寄存器编号,且所述第一物理寄存器组中不存在所述目标物理寄存器编号,则将所述目标物理寄存器编号写入空闲物理寄存器列表中。
10.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1至8中任一项所述的寄存器管理方法。
11.一种可读存储介质,其特征在于,当所述可读存储介质中的指令由电子设备的处理器执行时,使得所述处理器能够执行如权利要求1至8中任一项所述的寄存器管理方法。
CN202310611584.5A 2023-05-26 2023-05-26 一种寄存器管理方法、装置、电子设备及可读存储介质 Active CN116339830B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310611584.5A CN116339830B (zh) 2023-05-26 2023-05-26 一种寄存器管理方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310611584.5A CN116339830B (zh) 2023-05-26 2023-05-26 一种寄存器管理方法、装置、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN116339830A CN116339830A (zh) 2023-06-27
CN116339830B true CN116339830B (zh) 2023-08-15

Family

ID=86876213

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310611584.5A Active CN116339830B (zh) 2023-05-26 2023-05-26 一种寄存器管理方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN116339830B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117492844B (zh) * 2023-12-29 2024-03-29 北京微核芯科技有限公司 寄存器重命名方法、装置及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047369A (en) * 1994-02-28 2000-04-04 Intel Corporation Flag renaming and flag masks within register alias table
CN102566976A (zh) * 2010-12-27 2012-07-11 北京国睿中数科技股份有限公司 管理重命名寄存器的寄存器重命名系统和方法
CN103377037A (zh) * 2012-04-30 2013-10-30 苹果公司 优化寄存器初始化操作
CN106990941A (zh) * 2015-12-24 2017-07-28 Arm 有限公司 使用寄存器重命名处理移动指令
CN110268384A (zh) * 2017-01-13 2019-09-20 优创半导体科技有限公司 寄存器重命名、调用返回预测和预取的实现
CN112181494A (zh) * 2020-09-28 2021-01-05 中国人民解放军国防科技大学 一种浮点物理寄存器文件的实现方法
CN114116002A (zh) * 2021-11-25 2022-03-01 中国人民解放军国防科技大学 一种存储重命名的实现方法、处理器及计算机设备
CN114356420A (zh) * 2021-12-28 2022-04-15 海光信息技术股份有限公司 指令流水线的处理方法及装置、电子装置及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047369A (en) * 1994-02-28 2000-04-04 Intel Corporation Flag renaming and flag masks within register alias table
CN102566976A (zh) * 2010-12-27 2012-07-11 北京国睿中数科技股份有限公司 管理重命名寄存器的寄存器重命名系统和方法
CN103377037A (zh) * 2012-04-30 2013-10-30 苹果公司 优化寄存器初始化操作
CN106990941A (zh) * 2015-12-24 2017-07-28 Arm 有限公司 使用寄存器重命名处理移动指令
CN110268384A (zh) * 2017-01-13 2019-09-20 优创半导体科技有限公司 寄存器重命名、调用返回预测和预取的实现
CN112181494A (zh) * 2020-09-28 2021-01-05 中国人民解放军国防科技大学 一种浮点物理寄存器文件的实现方法
CN114116002A (zh) * 2021-11-25 2022-03-01 中国人民解放军国防科技大学 一种存储重命名的实现方法、处理器及计算机设备
CN114356420A (zh) * 2021-12-28 2022-04-15 海光信息技术股份有限公司 指令流水线的处理方法及装置、电子装置及存储介质

Also Published As

Publication number Publication date
CN116339830A (zh) 2023-06-27

Similar Documents

Publication Publication Date Title
US11061684B2 (en) Architecturally paired spill/reload multiple instructions for suppressing a snapshot latest value determination
US10592251B2 (en) Register restoration using transactional memory register snapshots
US10552164B2 (en) Sharing snapshots between restoration and recovery
US10740108B2 (en) Management of store queue based on restoration operation
US9672044B2 (en) Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays
US10564977B2 (en) Selective register allocation
US10489382B2 (en) Register restoration invalidation based on a context switch
US10572265B2 (en) Selecting register restoration or register reloading
US10649785B2 (en) Tracking changes to memory via check and recovery
US20180300157A1 (en) Register context restoration based on rename register recovery
US8335912B2 (en) Logical map table for detecting dependency conditions between instructions having varying width operand values
US9329868B2 (en) Reducing register read ports for register pairs
US10963261B2 (en) Sharing snapshots across save requests
US9471325B2 (en) Method and apparatus for selective renaming in a microprocessor
US20080077782A1 (en) Restoring a register renaming table within a processor following an exception
US20180300142A1 (en) Coalescing store instructions for restoration
US20180300151A1 (en) Register restoration using recovery buffers
US9135005B2 (en) History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
CN116339830B (zh) 一种寄存器管理方法、装置、电子设备及可读存储介质
US11599359B2 (en) Methods and systems for utilizing a master-shadow physical register file based on verified activation
US10896040B2 (en) Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence
JP3170472B2 (ja) レジスタ・リマップ構造を有する情報処理システム及び方法
US9323532B2 (en) Predicting register pairs
US20200301706A1 (en) Store instruction to store instruction dependency

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