CN106020778A - 还原寄存器重命名映射 - Google Patents

还原寄存器重命名映射 Download PDF

Info

Publication number
CN106020778A
CN106020778A CN201610299507.0A CN201610299507A CN106020778A CN 106020778 A CN106020778 A CN 106020778A CN 201610299507 A CN201610299507 A CN 201610299507A CN 106020778 A CN106020778 A CN 106020778A
Authority
CN
China
Prior art keywords
instruction
flow
register renaming
risk
map
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
Application number
CN201610299507.0A
Other languages
English (en)
Other versions
CN106020778B (zh
Inventor
H·杰克逊
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.)
Hai Luo Software Co ltd
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN106020778A publication Critical patent/CN106020778A/zh
Application granted granted Critical
Publication of CN106020778B publication Critical patent/CN106020778B/zh
Expired - Fee Related 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

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)
  • Executing Machine-Instructions (AREA)

Abstract

描述了一种用于还原寄存器重命名映射的技术。在一个示例中,每当向重排序缓冲器传递流程风险指令时,具有多个存储位置的还原表保存寄存器重命名映射的拷贝。当所有存储位置已满时,仍向所述重排序缓冲器传递进一步的指令,但是不保存映射的拷贝。当执行与一个存储位置关联的流程风险指令时,该个存储位置随后变得可用。在所述多个存储位置已满时的用于传递到所述重排序缓冲器的未记录的流程风险指令的寄存器重命名映射的状态被产生并且被存储在所述可用的位置。所述寄存器重命名映射的状态是使用用于先前的流程风险指令的还原表条目和用于中间指令的重排序缓冲器值来产生的,所述中间指令在所述先前的流程风险指令和所述未记录的流程风险指令之间。如果在指令流程中发生意外改变,则能用所述还原表来还原所述映射。

Description

还原寄存器重命名映射
本申请是申请日为203年01月05日并且申请号为201310003736.X的中国专利申请的分案申请,这里以引用的方式结合该申请的全部内容作为参考。
背景技术
乱序微处理器通过以不同于程序中顺序的序列来执行指令能提供提高的计算性能,使得指令当其输入数据可用时被执行,而不是等待程序中前面的指令的执行。为了允许指令在微处理器上乱序运行,能够重命名指令使用的寄存器是有用的。这使得能从指令中移除“写后读”(WAR)依赖,因为这些依赖不是真正的依赖。通过使用寄存器重命名和移除这些依赖,能不按照程序序列执行更多的指令,并且进一步提升了性能。寄存器重命名通过维护映射来执行,其中,在指令中命名的寄存器(称为架构寄存器)被映射到微处理器的物理寄存器上。
但是在程序中的指令的流程在执行期间有时会改变。例如,在分支指令的情况下,分支预测经常被用于预测将采用哪个指令分支,来允许推测地乱序执行在预测分支的指令。这意味着会发生分支错误预测,这可能在已发送许多推测指令通过寄存器重命名级并且进入执行管道之后被意识到。为了在采用不正确预测的分支之后,允许重置程序流程并且正确地继续,“回绕”寄存器重命名映射到错误预测分支通过寄存器重命名级时的状态。其他指令在程序流程中引起意外改变(例如中断或异常)的情况下也能看到类似的效果。
当前的乱序处理器通过每当可能是流程风险(flow risk)(此处流程风险包括中断、异常、分支或当被执行时会在执行流程中引起改变的任何其他指令)的指令通过寄存器重命名级时,保存寄存器重命名映射的快照来实现寄存器重命名映射的回绕。但是,这需要提供大量的存储来在其中保存所有的快照,因为如果所有的快照存储都被使用,则必须停滞指令流,直到能再次保存快照,这就牺牲了性能。
在下文中描述的实施例不限于解决任何或所有已知的乱序微处理器的缺点的实现。
发明内容
本发明内容被提供来以简化的方式介绍在下文的具体实施方式中进一步描述的概念中选择的一些概念。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用来帮助确定所要求保护的主题的范围。
描述了一种用于还原寄存器重命名映射的技术。在一个示例中,每当向重排序缓冲器传递流程风险指令时,具有多个存储位置的还原表保存寄存器重命名映射的拷贝。当所有存储位置已满时,仍向所述重排序缓冲器传递进一步的指令,但是不保存映射的拷贝。当执行与存储位置关联的流程风险指令时,所述存储位置随后变得可用。在所述存储位置已满时的用于传递到所述重排序缓冲器的未记录的流程风险指令的寄存器重命名映射的状态被产生并且被存储在所述可用的位置。所述寄存器重命名映射的状态是使用用于先前的流程风险指令的还原表条目和用于中间指令的重排序缓冲器值来产生的,所述中间指令在所述先前的流程风险指令和所述未记录的流程风险指令之间。如果在指令流程中发生意外改变,则能用所述还原表来还原所述映射。
根据一个方面,提供了一种在乱序处理器中还原寄存器重命名映射的方法,包括:每当将流程风险指令插入到重排序缓冲器时,将所述寄存器重命名映射的状态的拷贝存储到还原表的一个存储位置,直到所有存储位置都被使用;确定随后已变得可用的存储位置;基于先前存储的用于较旧的流程风险指令的寄存器重命名映射的状态和存储在所述重排序缓冲器中的用于中间指令的值,产生在所有存储位置都已被使用时用于插入到所述重排序缓冲器中的未记录的流程风险指令的得出的寄存器重命名映射的状态,其中,所述中间指令插入在所述较旧的流程风险指令和所述未记录的流程风险指令之间;将用于所述未记录的流程风险指令的所述得出的寄存器重命名映射的状态存储到所述可用的存储位置;以及在这些流程风险指令中的一个的执行在指令流程中引起意外改变的情况下,使用在所述还原表中的与该个流程风险指令相关联的寄存器重命名映射的状态来还原所述寄存器重命名映射。
根据另一方面,提供了一种乱序处理器,包括:寄存器重命名映射;重排序缓冲器;以及包括多个存储位置的还原表,其中,所述处理器用于:响应于流程风险指令被插入到所述重排序缓冲器,将所述寄存器重命名映射的状态的拷贝存储到所述多个存储位置中的一个,直到所有存储位置都被使用;确定随后已变得可用的存储位置,并且响应于此,基于先前存储的用于较旧的流程风险指令的寄存器重命名映射的状态和存储在所述重排序缓冲器中的用于中间指令的值,产生在所有存储位置都已被使用时用于插入到所述重排序缓冲器中的未记录的流程风险指令的得出的寄存器重命名映射的状态,其中,所述中间指令插入在所述较旧的流程风险指令和所述未记录的流程风险指令之间;将用于所述未记录的流程风险指令的所述得出的寄存器重命名映射的状态存储到所述可用的存储位置;以及在这些流程风险指令中的一个的执行在指令流程中引起意外改变的情况下,使用在所述还原表中的与该个流程风险指令相关联的寄存器重命名映射的状态来还原所述寄存器重命名映射。
可以用在有形的存储介质上的机器可读形式的软件来执行在本文中描述的方法,例如,用计算机程序的形式,所述计算机程序包括当所述程序在计算机上运行时并且在所述计算机程序可以体现在计算机可读介质上的情况下,适于执行在本文中描述的任意方法的所有步骤的计算机程序代码模块。有形的(或非暂态的)存储介质的示例包括磁盘、拇指驱动器、存储卡等,并且不包括传播的信号。所述软件可以适合于在并行处理器或串行处理器上执行,使得可以用任意适当的顺序或同时执行所述方法的步骤。
这表明固件和软件可以是有价值的、可独立交易的商品。旨在包括在“哑的”(dumb)或标准硬件上运行或控制“哑的”或标准硬件来执行所需的功能的软件。还旨在包括当被用于设计硅芯片或用于配置通用可编程芯片时“描述”或定义硬件配置以执行所需的功能的软件,例如HDL(硬件描述语言)软件。
如对本领域的技术人员显而易见的是,可以适当地组合上述的特征,并且上述特征可以与这些示例的任意方面组合。
附图说明
将通过示例方式参考下列附图来描述实施例,其中:
图1示出了具有寄存器重命名映射还原表的乱序处理器;
图2示出了用于保存寄存器重命名映射的状态的过程的流程图;
图3示出了产生用于未记录的流程风险指令的寄存器重命名映射的状态的过程的流程图;
图4示出了示例性的还原表更新序列;
图5示出了用于使用还原表还原寄存器重命名映射的过程的流程图;
图6示出了具有寄存器重命名映射还原表和提交映射的乱序处理器;以及
图7示出了用于使用提交映射还原寄存器重命名映射的过程的流程图。
贯穿图中使用的共同的标号表示类似的特征。
具体实施方式
仅通过示例的方式在下文中描述实施例。这些示例表示了本申请人目前已知的将实施例付诸于实践的最佳方法,但是它们不是可以实现此的仅有方法。说明书阐述了示例的功能和用于构建与操作示例的步骤序列。但是,可以用不同的示例完成相同的或等同的功能和序列。
下文描述的是用于还原寄存器重命名映射以从乱序处理器中的程序流程中的意外改变中恢复的技术。描述了两种技术,其能被组合来进一步提高性能。与对于发出的每一个流程风险指令,都保存寄存器重命名映射的状态的快照的技术相比,第一种技术减少了用于实现从意外流程改变中恢复的存储空间量。这种技术在“还原表”中保留了预定量的存储位置,用于每当流程风险通过寄存器重命名级时,存储寄存器重命名映射的状态的拷贝。但是,一旦所有的这些存储位置已满,则不会停滞指令流,并且仍允许指令通过寄存器重命名级。
当随后执行流程风险指令时,不再需要与这个指令关联的寄存器重命名映射的状态的拷贝,所以能丢掉所述拷贝。这就释放了存储位置。在存储位置已满时通过重命名级的未记录的流程风险指令(即,针对其的寄存器重命名映射的拷贝先前未被存储的流程风险指令)的寄存器重命名映射的状态可以通过以下方式来得出:从先前存储的用于较旧的流程风险指令的寄存器重命名映射的状态开始,并且通过与至较新的未记录的流程风险指令的中间指令一起工作来对其进行更新。如果需要,所得出的寄存器重命名映射的状态在这个流程风险指令在程序流程中引起意外改变的情况下,能被用于还原寄存器重命名映射。这种技术使能较少量的存储被用于保存寄存器重命名映射的状态,并且当所有的存储位置已满时,不会停滞指令流,而是仍允许从需要被尽快执行的情况(例如分支错误预测)中恢复。
第二种技术也减少了还原寄存器重命名映射需要的存储空间量。这是通过在“寄存器提交映射”中维护提交的指令的寄存器重命名映射的状态的拷贝来实现的,即保存用于在处理器乱序部分末端的那些指令的寄存器重命名映射的状态。一旦提交了指令,在还原寄存器重命名映射的情况下,该指令不再有被“回绕”的风险。通过维护寄存器提交映射,当在程序流程中引起意外的改变的指令到达提交级时,通过将寄存器提交映射的状态拷贝到寄存器重命名映射,能还原寄存器重命名映射。这减少了存储空间量,因为不需要保存用于所有类型的流程风险指令的寄存器重命名映射的快照。替代地,使用空间高效的寄存器提交映射来还原会引起流程风险靠近提交时间的那些指令,或在正常操作中不应引起流程改变但是当它们进行时仍需要被处理的指令(例如异常)。
首先参考图1至5来描述第一种技术,并且参考图6至7在下文中描述另外的第二种技术。
首先参考图1,其示出了具有寄存器重命名映射还原表的乱序处理器。乱序处理器包括取指级102与解码和重命名级104,所述取指级102被安排为取得来自程序的由程序计数器(PC)指示的(以程序顺序)的指令,并且解码和重命名级104被安排为解释所述指令并且执行寄存器重命名。寄存器重命名通过移除写后读(WAR)依赖,使更多的指令能被乱序执行。例如,考虑下列两个指令(表示为I1和I2):
I1:R3=R1+2
I2:R1=R2
因为R1是I2的目标寄存器,所以不能在I1之前评估I2,否则当评估I1时,存储在R1中的值是不正确的。但是,在所述指令之间没有“真正的”依赖,并且这意味着能使用寄存器重命名。例如,I2能具有其如下重命名的目标寄存器:
I2:R4=R2
因为目标寄存器已经被改变为R4,所以现在在I1和I2之间没有依赖,并且能乱序执行这两个指令。重命名级104能通过维护在处理器上的架构寄存器和物理寄存器之间的映射来执行寄存器重命名。架构寄存器是在指令中使用的寄存器的名称/标识符。物理寄存器是在处理器上存在的实际存储位置。一般来说,物理寄存器多于架构寄存器。
重命名级104对于每一个指令,确定分配哪些架构寄存器给哪些物理寄存器,并且通过这样做,能移除WAR依赖。例如,考虑上文的示例,当I1被传递到重命名级时,架构寄存器R1能被映射到物理寄存器P1,而当I2被传递到重命名级时,架构寄存器R1能被映射到物理寄存器P2。这意味着这些指令不会冲突,因为在每一个指令中的R1映射到不同的存储位置。
重命名级104维护寄存器重命名映射106,所述寄存器重命名映射106是示出了最近分配给它的在每一个架构寄存器和物理寄存器之间的映射的存储的数据结构。在图1的示例中,寄存器重命名映射106包括指示物理寄存器标识符的、由架构寄存器标识符索引四个条目。例如,架构寄存器0当前映射到物理寄存器6,架构寄存器1当前映射到物理寄存器5等。
当指令通过重命名级104时,其被插入到重排序缓冲器108(ROB)中。重排序缓冲器108是使指令能被乱序执行但是被顺序提交的缓冲器。重排序缓冲器108保持按照程序顺序插入其的指令,但是乱序管道110能不按照序列地执行在ROB中的指令。在一些示例中,重排序缓冲器108能被形成为具有指向ROB中最旧指令的头部和指向ROB中最年轻指令的尾部的循环缓冲器。按照程序顺序从重排序缓冲器108输出指令。换句话说,当指令已被管道110执行时,该指令从ROB的头部输出,并且头部被递增到ROB中的下一指令。从重排序缓冲器108输出的指令被提供给提交级112,所述提交级112将指令的结果提交到寄存器/存储器。
处理器还包括分支预测器114,所述分支预测器114被安排为在已知会引起可能的流程改变的指令(例如分支指令)的情况下,预测程序流程将采用哪个方向。分支预测器是有用的,因为它使能在知道分支指令的结果之前,通过乱序处理器推测地执行指令。分支预测器114能接收来自取指级102与解码和重命名级104的关于新指令的输入,和来自管道110和提交级112的关于发出的指令已被如何执行的输入。
当分支预测器114准确地预测程序流程时,这提高了处理器的性能。但是,如果分支预测器114没有正确地预测分支方向,则发生需要在程序能继续之前被纠正的错误预测。为了纠正错误预测,发送到ROB的推测指令被丢弃,并且取指级102开始从正确的程序分支取得指令。但是,寄存器重命名映射106也需要纠正,因为寄存器重命名映射106已经被通过重命名级104的推测指令更新。因而需要回绕寄存器重命名映射106来还原其在不正确的预测分支指令之前的状态。
除了分支错误预测之外,如上文所述,类似的在程序流程中的意外改变也可能由于中断或异常而发生。这些情况也导致需要还原寄存器重命名映射106。注意在本文中使用的术语“流程风险”表示可能在程序流程中导致意外改变的任何指令,包括例如分支指令、中断或异常。换句话说,流程风险指令是可能引起处理器的程序计数器改变的任何指令。
一种处理寄存器重命名映射106还原的方法是每一次流程风险指令通过重命名级104时,保存寄存器重命名映射的状态的快照,使得插入到重排序缓冲器108的每一个流程风险指令具有关联的存储的寄存器重命名映射的状态。接着,如果这些流程风险指令中的一个在程序流程中引起意外改变,则能使用与违例的流程风险指令相关联的存储的状态还原寄存器重命名映射106。但是,这需要提供大量的存储空间来用于保存这些快照,因为在任何时间都可能有大量的流程风险指令潜在地存在于(“运行于”)重排序缓冲器108中。如果没有足够的存储空间存在,并且所述存储空间被快照完全地占用,则必须停滞指令流直到空间变得可用,否则不能在意外的程序流程改变的情况下还原寄存器重命名映射106。
例如,图1示出了具有八个条目116的重排序缓冲器108。每一个条目是一指令,并且在这个示例中,这些条目中的四个是分支指令(在图1中用“B”表示的指令)并且因而具有流程风险。但是,为了避免停滞指令流的任何可能性,需要提供八个存储位置来保存寄存器重命名映射106的快照,因为这是运行中的流程风险的潜在数量。
图1示出了用于处理寄存器重命名映射106还原的可替换的技术,所述技术没有使用那么多的存储空间。这种技术利用了还原表118。还原表118具有预定数量的存储位置,这些存储位置能被用于存储寄存器重命名映射的状态的拷贝,并且被用于其的还原。但是,在还原表118中的存储位置的数量可以少于运行中的流程风险指令的潜在数量而并不妨碍处理器操作,如在下文详细阐述的。在图1的示例中,还原表118包括两个存储位置120。注意在其他的示例中,可以存在不同数量的存储位置。每一个存储位置包括寄存器重命名映射的状态122的拷贝和与该寄存器重命名映射的状态122相关联的在ROB中的流程风险指令的标识符124。
现在参考图2至5,其示出了用于维护还原表118的过程。图2描述了在指令通过重命名级时(即在执行之前),执行用来处理还原表的填充的过程。图3和4描述了当执行在ROB中的指令时,用于更新还原表中的条目的过程。随后描述的图5阐述了用于使用还原表118来还原寄存器重命名映射106的过程。
图2示出了发出流程风险指令时,用于在还原表中保存寄存器重命名映射的状态拷贝的过程的流程图。在步骤202,流程风险指令通过重命名级104,并且响应于这个步骤,在步骤204确定在还原表118中是否有至少一个存储位置是可用的。如果是,则在步骤206将寄存器重命名映射106的当前状态拷贝到还原表118中的可用存储位置,并且与流程风险指令的标识相关联地存储寄存器重命名映射106的当前状态拷贝。接着在步骤208将流程风险指令插入到重排序缓冲器108。相反地,如果在还原表118中没有可用的存储位置,则在步骤210不拷贝寄存器重命名映射106的当前状态。但是,尽管没有存储寄存器重命名映射的状态,流程风险指令在步骤208仍被插入到重排序缓冲器108。换句话说,没有停滞指令流,即使没有针对流程风险指令拷贝寄存器重命名映射的状态。
图3示出了当在重排序缓冲器中执行指令时,用于更新还原表的过程的流程图。当还原表已满(即,所有的存储位置都被使用)并且流程风险指令已被插入到ROB中而没有保存与它们相关联的寄存器重命名映射的状态时,使用图3中的过程。当执行流程风险指令时,则在能释放还原表中被用来存储对于该指令的寄存器重命名映射的状态的存储位置(假设这个流程风险指令具有保存在还原表中的寄存器重命名映射的状态)。因此,在步骤302,在还原表中的存储位置变得可用。
在步骤304,对于目前在还原表中的最年轻的流程风险指令的寄存器重命名映射的状态的拷贝被拷贝到可用空间。换句话说,找到了具有保存的寄存器重命名映射的状态的最近的指令(按照程序顺序),并且拷贝其寄存器重命名映射的状态到可用的存储位置。在步骤306中,指针接着从目前还原表中最年轻的流程风险指令迭代到重排序缓冲器108中的下一最年轻指令(不一定是流程风险指令)。
接着在步骤308确定在重排序缓冲器108中在指针位置的指令是否为不具有存储在还原表中的条目的最旧流程风险指令。换句话说,确定是否在还原表已满的同时这个指令为已被插入到ROB的最旧流程风险指令。如果不是,则使用与这个指令相关联的存储在重排序缓冲器中的值,接着在步骤310更新在可用存储位置中的寄存器重命名映射的状态。例如,重排序缓冲器108能与每一个指令相关联地存储在架构目标寄存器和用来存储指令结果的物理寄存器之间的映射,并且这个值被用来更新寄存器重命名映射的状态(寄存器重命名映射的状态的更新参考图4在下文更详细地说明)。过程接着从步骤306重复,其中指针迭代到在重排序缓冲器108中的下一最年轻指令。
一旦指针到达不具有保存在还原表中的条目的最旧流程风险指令,则在步骤308的确定是肯定的,并且在还原表中的可用存储位置已被更新来给出用于这个流程风险指令的寄存器重命名映射的状态。
换句话说,图3的过程使得在存储位置变得可用时,能够针对先前不具有保存的寄存器重命名映射的状态的流程风险指令,得出寄存器重命名映射的状态。这是通过从关于中间指令的信息得出寄存器重命名映射的状态实现的,所述中间指令处于在还原表中具有保存的状态的前面的流程风险指令和在还原表中没有保存的状态的流程风险指令之间。这能“在运行中”完成,这意味着甚至能在执行流程风险指令之前得出寄存器重命名映射的状态。这个操作现在使用图4的数值示例来更详细地说明。
图4的示例示出了图1的重排序缓冲器108的内容116,并且说明了当执行流程风险指令时,是如何更新还原表118的。在这个纯粹说明性的示例中,重排序缓冲器108包含八个指令,表示为I1至I8。I1是移动指令(用MOV表示)并且重排序缓冲器存储该指令,对于这个指令,目标架构寄存器为0,并且寄存器重命名级将该目标架构寄存器映射到物理寄存器6。I2是分支指令,并且因而是流程风险。I3是加法操作指令(用ADD表示)并且重排序缓冲器存储该指令,对于这个指令,目标架构寄存器为2,并且寄存器重命名级将该目标架构寄存器映射到物理寄存器4。I4是分支指令,并且因而是流程风险。I5是移动指令并且重排序缓冲器存储该指令,这个指令具有目标架构寄存器1,并且寄存器重命名级将该目标架构寄存器映射到物理寄存器5。I6是分支指令,并且因而是流程风险。I7是减法指令(用SUB表示)并且重排序缓冲器存储该指令,对于这个指令,目标架构寄存器为2,并且寄存器重命名级将该目标架构寄存器映射到物理寄存器1。最后,I8是分支指令,并且因而是另一流程风险。
在这个示例中,还原表118具有两个存储位置。如在402示出的,最旧的两个流程风险指令,I2和I4(要插入到重排序缓冲器的前两个分支指令),具有相关联的存储在还原表中的与寄存器重命名映射的状态的拷贝。在这个时候,还原表的存储位置已被全部使用,并且因而对于另外的被插入到ROB中的流程风险指令(例如I6和I8),没有存储寄存器重命名映射的状态的拷贝。
接着,在这个说明性的示例中,执行I2。这意味着能释放与I2相关联的存储位置。如在404所示的,在还原表中的条目上移,留下底部存储位置(在这个示例中)可用。如参考图3在上文所述的,将具有存储的寄存器重命名映射的状态拷贝的最年轻流程风险指令拷贝到可用位置。在这个示例中,这是用于I4的寄存器重命名映射的状态。因此,在404,将用于I4的寄存器重命名映射的状态和标识拷贝到可用存储位置(在图4中的底部位置)。
接着,指针移动到在被用来将值拷贝到可用存储位置之后的指令的下一最年轻的指令,即,在这个示例中是在I4之后的下一最年轻指令。这个下一最年轻指令是I5。在重排序缓冲器中的条目指示用于I5的寄存器重命名将目标架构寄存器1映射到物理寄存器5。这个信息被用来在可用存储位置更新寄存器重命名映射的状态。在这个示例中,如在406所示,更新还原表来示出I5的标识,并且改变由架构寄存器1索引的值为具有值5(对应于被I5用作目标的物理寄存器)。
因为目前指向的指令(I5)不是流程风险指令,图3的过程重复,使得指针移动到在重排序缓冲器中的下一最年轻的指令。在这个示例中,这是指令I6。I6是分支指令,并且因而是流程风险。因此,I6是没有存储在还原表中的寄存器重命名映射的状态的最旧流程风险指令。为了完成寄存器重命名映射的状态的得出,如在408示出的,更新可用位置来示出I6的标识。
图4的示例示出了当存储位置变得可用时,如何从最近存储的寄存器重命名映射的状态(用于I4)和用于中间指令(在这里是I5)的寄存器重命名值中得出用于先前未存储的指令(在这个示例中为I6)的寄存器重命名映射的状态。这使流程风险指令仍能被传递到ROB而不被停滞,即使没有针对这些指令存储寄存器重命名映射的状态。
现在参考图5,其示出了用于处理流程风险指令的执行以及寄存器重命名映射的还原的过程的流程图。在步骤502,执行流程风险指令。接着在步骤504确定这个指令在程序流程中是否引起了意外改变。例如,在分支指令的情况下,确定是否正确地预测了分支。如果程序流程是符合预期的(例如,正确的分支预测),则在步骤506在还原表中移除与这个流程风险指令相关联的条目(使得存储位置变得可用,如上面描述的)并且在步骤508标记该指令为完成。
相反地,如果在步骤504确定在程序流程中确实发生了意外改变(例如,分支错误预测),则开始还原过程。在步骤510,冲洗(即,清除)前端(例如,包括取指级102与解码和重命名级104),并且取指级开始从正确的地址(例如,从正确的分支路径,或异常句柄代码)取得指令。在步骤512阻止指令通过重命名级104。
在步骤514,确定在程序流程中引起意外的改变的流程风险指令是否有在还原表中的条目。如果有,则在步骤516,使用在还原表中用于在程序流程中引起意外改变的该流程风险指令的该条目,还原寄存器重命名映射106。换句话说,将用于这个流程风险指令的寄存器重命名映射的状态拷贝到(并且覆盖)寄存器重命名映射106。这将寄存器重命名映射106还原到其紧接在程序流程中引起意外改变的该流程风险指令之前的状态。在步骤518,移除在还原表中的与比在程序流程中引起意外改变的该流程风险指令更新的指令相关联的任何条目,并且在步骤520冲洗后端(包括ROB 108和提交级112)。最终,在步骤518,允许指令通过寄存器重命名级104。处理器接着可以正确地继续来自改变的程序流程的指令。注意虽然在步骤518、520和522执行的操作在图5中被示出为是序列的,但是它们中的一些或全部能在同一时钟周期内被执行。
返回步骤514,如果确定在程序流程中引起意外改变的流程风险指令在还原表中没有条目,则处理器在步骤524等待,直到对于这个流程风险指令在还原表中有可用的有效的寄存器重命名映射的状态。当其可用时,过程从步骤516重复。当已执行较旧的流程风险指令并且在还原表中有可用的空间时,有效的寄存器重命名映射的状态能变得可用,允许如上所述那样得出寄存器重命名映射的状态。
上述的技术因而使用在流程风险执行之间的时间来创建用于随后的流程风险的寄存器重命名映射的状态,并且,因此,还原表不需要大到足够用于运行中的预期数量的流程风险。如果有足够的存储位置,则从先前的状态更新流程风险状态所花费的时间被这样的事实有效地隐藏:流程风险不可能在一比例的先前流程风险已执行之前执行。
现在参考图6,其示出了对上述技术的增强,使得乱序处理器具有还原表和提交映射二者。图6的结构类似于参考图1在上文所述的结构,除了现在将提交映射602连接到提交级112。提交映射602包括能使其保持寄存器重命名映射的状态拷贝的存储。提交映射602被安排为维护用于提交级112已提交的指令的寄存器重命名映射的状态的版本。这是通过这样实现的:每当提交级112提交指令时,对于该指令更新映射到目标架构寄存器的物理寄存器的值。
例如,考虑图6的示例,当指令I1被执行并且到达提交级112时,更新提交映射602来改变与架构寄存器0相关联的物理寄存器的值为6。这是因为I1的MOV指令具有为0的目标架构寄存器,并且寄存器重命名级104映射这个目标架构寄存器到物理寄存器6,这被记录在重排序缓冲器中(如在116示出的)。当从重排序缓冲器108中输出进一步的指令并且提交该指令时,以类似的方式更新提交映射602。
当提交级112提交指令时,不再有在程序流程中的意外改变引起的“回绕”的风险。因而当在程序流程中发生意外改变时,提交映射602能被用于还原寄存器重命名映射106。现在参考图7描述使用提交映射602还原寄存器重命名映射106的过程。
在步骤702,检测在程序流程中的意外改变。例如,这个意外改变可以是异常(例如,存储器异常)或分支错误预测的形式。在步骤704,在程序流程中引起意外改变的在ROB中的指令被标记为“需要还原”(例如,可以具有还原比特设置)。在步骤706,冲洗(即,清除)前端(例如,包括取指级102与解码和重命名级104),并且在步骤708,取指级开始从正确的地址取得指令(例如,异常句柄代码,或来自正确分支的代码)。
过程接着在步骤710等待,直到确定标记为“需要还原”的指令已到达提交级112。一旦这个指令已到达提交级112,则意味着在需要还原的指令前面的所有指令(按照程序顺序)已被提交,并且因而提交映射602准确地反映了直到该个指令的寄存器重命名映射的状态。接着在步骤712,可以通过从提交映射602向寄存器重命名映射106拷贝寄存器重命名映射的状态来还原寄存器重命名映射106。最后,在步骤714,冲洗后端(包括ROB 108和提交级112)。处理器接着能正确地继续执行来自改变的程序流程的指令。
在一些示例中,在恢复中较长的时延是可接受的(因为等待违例指令到达提交级)的情况下,上述的用于维护提交映射602并且用其来还原寄存器重命名映射106的技术能被用来从在程序流程中的意外改变中恢复。例如,因为需要取得异常句柄代码,异常(例如存储器异常)具有较大的开销,并且使用提交映射来还原异常的时延是可接受的。此外,许多存储器异常总是会倾向于接近提交时间发生,这减少了使用提交映射来还原的时延。
基于还原表的第一种技术(参考图1至5在上文中描述的)因而与基于提交映射的第二种技术相补充。使用还原表118的第一种技术能实现从程序流程中的意外改变的快速恢复,但是需要提供一定量的存储用于还原表(但是少于使用快照的情况)。这种技术因而适用于在可能需要相对经常地(例如,5-10%的时间)恢复并且需要尽可能快地执行恢复的情况下,从分支错误预测或类似地情况中恢复。因而能将具有这些需求的流程风险指令(例如分支指令)保存在如上所述的还原表中。相反地,更不可能在程序流程中引起意外改变或不需要被那么快还原的流程风险,例如异常,能使用提交映射来处理并且因而不需要具有在还原表中的条目。因此,使用提交映射进一步减少了还原表需要提供的存储量,因为这需要保存用于更小数量的流程风险的寄存器重命名映射的状态。
此外,如果仅使用还原表技术(例如,没有提交映射),则在一些示例中,对于未记录的指令的寄存器重命名映射的状态的得出至少和提交指令一样快地执行,因为另外的指令可以在该得出完成之前从ROB输出。但是,如果还提供了提交映射,则还原表不需要那么快速地执行该得出。这是因为如果在提交指令之前没有更新还原表来包含用于未记录的指令的寄存器重命名映射的状态,则提交映射602能被替代地用于还原系统。因此,能减少寄存器重命名映射的状态得出的更新率,使得能够减少功耗和硅面积二者。
在进一步的示例中,来自分支预测器114的信息能被用于确定使用还原表技术还是使用提交映射技术来用于特定指令的恢复。例如,分支预测器能预测分支指令将采用的方向,但也能提供预测的确定性的估计。如果预测的确定性相对低(例如,低于预定阈值),则能在还原表中存储用于该指令的寄存器重命名映射的状态,因为这允许在预测错误的情况下进行快速恢复。相反地,如果预测的确定性相对高(例如,高于预定阈值),则处理器能依靠提交映射来恢复,因为错误预测被认为更不可能发生并且提交映射节省了存储空间。
在另一进一步示例中,能使用多个还原表,其中不同的还原表有不同的大小。在这个示例中,用于特定指令的还原表的大小与快速恢复的需要相关。例如,包括四个条目的还原表能被用于高流程风险指令,包括两个条目的还原表能被用于中等流程风险指令(恢复慢,但是更小),并且包括一个条目的还原表能被用于其他任何情况(这等同于上述的提交映射)。
在本文中使用的术语“处理器”和“计算机”是指具有处理能力从而使其能执行指令的任何设备。在本领域中的技术人员将认识到这些处理能力被并入到很多不同的设备中并且因而术语“计算机”包括机顶盒、媒体播放器、数字无线电、PC、服务器、移动电话、个人数字助理和许多其他设备。
本领域的技术人员将认识到能跨网络地分布用来存储程序指令或数据的存储设备。例如,远程计算机可以存储描述为软件的过程的示例。本地的或终端的计算机可以访问远程计算机并且下载部分或所有的软件来运行程序。可替换地,本地计算机可以按照需要下载该软件的片段,或在本地终端中执行一些软件指令并且在远程计算机(或计算机网络)中执行一些指令。本领域的技术人员还将认识到通过使用对于本领域的技术人员已知的常规技术,专用电路、可编程逻辑阵列等可以执行所有或部分的软件指令。
可以在不失去所寻求效果的情况下扩展或改变在本文中给出的任意范围或设备值,这对本领域的技术人员来说将是显而易见的。
将理解上述的益处和优点可以涉及一个实施例或可以涉及若干个实施例。这些实施例并不限于那些解决任何或所有所述的问题的实施例,或那些具有任何或所有所述的益处和优点的实施例。
对“一”项目的任何引用指这些项目的一个或多个。在本文中使用的术语“包括”意味着包括标识的方法块或部件,但是这些块或部件不包括排他列表并且方法或装置可以包含另外的块或部件。
在合适时,可以用任意适当的顺序或同步地执行在本文中描述的方法的步骤。此外,在不偏离本文中描述的主题精神和范围的情况下,可以从任何方法中删除单独的块。在不失去所寻求效果的情况下,上述的任何示例的方面可以与所述的任何其他示例的方面来进行组合以形成进一步的示例。
将理解上述的优选实施例仅通过示例方式给出,并且本领域的技术人员可以做出各种修改。虽然上文以一定特定度或参考一个或多个单独实施例描述了各种实施例,但是本领域的技术人员可以在不偏离这些示例的精神或范围的情况下对所公开的实施例做出众多修改。

Claims (3)

1.一种在乱序处理器中还原寄存器重命名映射的方法,包括:
每当将指令从重排序缓冲器输出到提交级时,更新寄存器提交映射,其中,使用重排序缓冲器值来更新所述寄存器提交映射以用于针对从所述重排序缓冲器输出的每一个指令的在目标架构寄存器和物理寄存器之间的映射;
响应于检测到(702)在指令流程中的意外改变,将所述重排序缓冲器中的指令标记为(704)需要还原;
冲洗(706)所述处理器的前端,所述处理器的前端包括取指级与解码和重命名级;
从正确的地址取得(708)指令;
在标记的指令被输出到所述提交级之前进行等待(710);以及
使用所述寄存器提交映射来还原(712)所述寄存器重命名映射。
2.根据权利要求1所述的方法,还包括以下步骤:
在还原所述寄存器重命名映射之后冲洗(714)所述处理器的后端,所述处理器的后端包括所述重排序缓冲器和所述提交级。
3.一种乱序处理器,包括:
寄存器重命名映射;
重排序缓冲器;以及
提交级,其被布置为从所述重排序缓冲器接收执行的指令,并且将所述执行的指令提交到存储器;以及
寄存器提交映射,其被布置为存储针对被输入到所述提交级的每一个指令的在架构目标寄存器和物理寄存器之间的映射,
其中,所述处理器被布置为:
响应于检测到指令流程中的意外改变,将所述重排序缓冲器中的指令标记为需要还原;
冲洗所述处理器的前端,所述处理器的前端包括取指级与解码和重命名级;
从正确的地址取得指令;
在标记的指令被输出到所述提交级之前进行等待;以及
使用所述寄存器提交映射来还原所述寄存器重命名映射。
CN201610299507.0A 2012-01-06 2013-01-05 用于还原寄存器重命名映射的方法和装置 Expired - Fee Related CN106020778B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1200172.3 2012-01-06
GB201200172A GB2498203B (en) 2012-01-06 2012-01-06 Restoring a register renaming map
CN201310003736.XA CN103197919B (zh) 2012-01-06 2013-01-05 用于还原寄存器重命名映射的方法和装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201310003736.XA Division CN103197919B (zh) 2012-01-06 2013-01-05 用于还原寄存器重命名映射的方法和装置

Publications (2)

Publication Number Publication Date
CN106020778A true CN106020778A (zh) 2016-10-12
CN106020778B CN106020778B (zh) 2018-12-11

Family

ID=45788556

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610299507.0A Expired - Fee Related CN106020778B (zh) 2012-01-06 2013-01-05 用于还原寄存器重命名映射的方法和装置
CN201310003736.XA Expired - Fee Related CN103197919B (zh) 2012-01-06 2013-01-05 用于还原寄存器重命名映射的方法和装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201310003736.XA Expired - Fee Related CN103197919B (zh) 2012-01-06 2013-01-05 用于还原寄存器重命名映射的方法和装置

Country Status (4)

Country Link
US (2) US9128700B2 (zh)
EP (2) EP2613251B1 (zh)
CN (2) CN106020778B (zh)
GB (2) GB2503612B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110520837A (zh) * 2017-04-18 2019-11-29 国际商业机器公司 基于重命名寄存器恢复的寄存器上下文还原

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2503612B (en) * 2012-01-06 2014-08-06 Imagination Tech Ltd Restoring a register renaming map
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
GB2520731B (en) * 2013-11-29 2017-02-08 Imagination Tech Ltd Soft-partitioning of a register file cache
GB2538237B (en) * 2015-05-11 2018-01-10 Advanced Risc Mach Ltd Available register control for register renaming
US9430244B1 (en) * 2015-10-28 2016-08-30 Centipede Semi Ltd. Run-time code parallelization using out-of-order renaming with pre-allocation of physical registers
CN105242905B (zh) * 2015-10-29 2018-03-09 华为技术有限公司 数据假相关的处理方法和装置
US9928128B2 (en) 2016-04-01 2018-03-27 International Business Machines Corporation In-pipe error scrubbing within a processor core
US10445094B2 (en) * 2016-05-27 2019-10-15 Arm Limited Method and apparatus for reordering in a non-uniform compute device
GB2551548B (en) * 2016-06-22 2019-05-08 Advanced Risc Mach Ltd Register restoring branch instruction
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10782979B2 (en) * 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10540184B2 (en) 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10552164B2 (en) * 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10489382B2 (en) 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10649785B2 (en) * 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
TR201911815A2 (tr) 2019-08-05 2021-02-22 Tobb Ekonomi Ve Teknoloji Ueniversitesi Mi̇kroi̇şlemci̇lerde kullanima uygun bi̇r tek yön kaydirmali yeni̇den adlandirma tablosu devresi̇
US10877768B1 (en) * 2019-09-06 2020-12-29 Microsoft Technology Licensing, Llc Minimizing traversal of a processor reorder buffer (ROB) for register rename map table (RMT) state recovery for interrupted instruction recovery in a processor
US11061677B1 (en) 2020-05-29 2021-07-13 Microsoft Technology Licensing, Llc Recovering register mapping state of a flushed instruction employing a snapshot of another register mapping state and traversing reorder buffer (ROB) entries in a processor
CN111984326B (zh) * 2020-07-02 2023-12-19 江苏华创微系统有限公司 混合式寄存器别名表恢复系统和方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881305A (en) * 1996-12-13 1999-03-09 Advanced Micro Devices, Inc. Register rename stack for a microprocessor
US20050120191A1 (en) * 2003-12-02 2005-06-02 Intel Corporation (A Delaware Corporation) Checkpoint-based register reclamation
US20050125634A1 (en) * 2002-10-04 2005-06-09 Fujitsu Limited Processor and instruction control method
US20050251654A1 (en) * 2004-04-21 2005-11-10 Erik Altman System and method of execution of register pointer instructions ahead of instruction issue
US20070001110A1 (en) * 2003-06-11 2007-01-04 Koninklijke Philips Electronics N.V. Optical scanning device
US20080276076A1 (en) * 2007-05-01 2008-11-06 Christopher Michael Abernathy Method and apparatus for register renaming

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030154363A1 (en) * 2002-02-11 2003-08-14 Soltis Donald C. Stacked register aliasing in data hazard detection to reduce circuit
US20070043934A1 (en) 2005-08-22 2007-02-22 Intel Corporation Early misprediction recovery through periodic checkpoints
US7711934B2 (en) 2005-10-31 2010-05-04 Mips Technologies, Inc. Processor core and method for managing branch misprediction in an out-of-order processor pipeline
US20080077778A1 (en) * 2006-09-25 2008-03-27 Davis Gordon T Method and Apparatus for Register Renaming in a Microprocessor
US8078854B2 (en) * 2008-12-12 2011-12-13 Oracle America, Inc. Using register rename maps to facilitate precise exception semantics
TWI389026B (zh) * 2009-06-08 2013-03-11 Rdc Semiconductor Co Ltd 暫存器更名表的回復方法與回復系統
GB2503612B (en) * 2012-01-06 2014-08-06 Imagination Tech Ltd Restoring a register renaming map
US9672044B2 (en) * 2012-08-01 2017-06-06 Nxp Usa, Inc. Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881305A (en) * 1996-12-13 1999-03-09 Advanced Micro Devices, Inc. Register rename stack for a microprocessor
US20050125634A1 (en) * 2002-10-04 2005-06-09 Fujitsu Limited Processor and instruction control method
US20070001110A1 (en) * 2003-06-11 2007-01-04 Koninklijke Philips Electronics N.V. Optical scanning device
US20050120191A1 (en) * 2003-12-02 2005-06-02 Intel Corporation (A Delaware Corporation) Checkpoint-based register reclamation
US20050251654A1 (en) * 2004-04-21 2005-11-10 Erik Altman System and method of execution of register pointer instructions ahead of instruction issue
US20080276076A1 (en) * 2007-05-01 2008-11-06 Christopher Michael Abernathy Method and apparatus for register renaming

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110520837A (zh) * 2017-04-18 2019-11-29 国际商业机器公司 基于重命名寄存器恢复的寄存器上下文还原

Also Published As

Publication number Publication date
US9436470B2 (en) 2016-09-06
GB2498203B (en) 2013-12-04
EP2613251B1 (en) 2014-04-30
EP2750028A1 (en) 2014-07-02
GB2503612A (en) 2014-01-01
US20130179665A1 (en) 2013-07-11
US20150339123A1 (en) 2015-11-26
US9128700B2 (en) 2015-09-08
EP2613251A1 (en) 2013-07-10
GB201200172D0 (en) 2012-02-22
GB201317920D0 (en) 2013-11-27
CN103197919A (zh) 2013-07-10
GB2498203A (en) 2013-07-10
CN106020778B (zh) 2018-12-11
GB2503612B (en) 2014-08-06
CN103197919B (zh) 2016-05-11

Similar Documents

Publication Publication Date Title
CN106020778A (zh) 还原寄存器重命名映射
US11429393B2 (en) Apparatus and method for supporting out-of-order program execution of instructions
KR102074961B1 (ko) 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치
US9201746B2 (en) Method for mirroring a log file by threshold driven synchronization
CN104583935B (zh) 状态机引擎中的指令插入
CN104995606B (zh) 用于将程序代码从推测区域恢复到非推测区域的写拷贝缓冲器
US20150220450A1 (en) Return Stack Buffer Having Multiple Address Slots Per Stack Entry
KR101996892B1 (ko) 동적 포트 리맵핑을 이용하여 명령어 스케줄링 동안 데드록을 방지하기 위한 방법 및 장치
TW200422948A (en) Data speculation based on addressing patterns identifying dual-purpose register
US9524166B2 (en) Tracking long GHV in high performance out-of-order superscalar processors
US10289419B2 (en) Method and apparatus for sorting elements in hardware structures
US20160371088A1 (en) Split-level history buffer in a computer processing unit
CN102890624B (zh) 用于管理无序毫码控制操作的方法和系统
CN206058178U (zh) 得到主移位寄存器的一个或多个检查点的硬件结构
CN104615409B (zh) 跳越mov指令的处理器和由该处理器使用的方法
CN107111487A (zh) 在乱序(ooo)处理器中提供早期指令执行,以及相关设备、方法和计算机可读媒体
US11899940B2 (en) Apparatus and method for handling memory load requests
TW201346718A (zh) 使用單一表格儲存臆測結果及架構結果
US7900027B2 (en) Scalable link stack control method with full support for speculative operations
CN118435168A (zh) 具有微操作推测性挑选的多周期调度器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: Hertfordshire

Applicant after: Mex Technology Co.,Ltd.

Address before: Hertfordshire

Applicant before: Hai Luo Software Co.,Ltd.

TA01 Transfer of patent application right

Effective date of registration: 20180717

Address after: California, USA

Applicant after: Imagination Technologies Ltd.

Address before: Hertfordshire

Applicant before: Mex Technology Co.,Ltd.

Effective date of registration: 20180717

Address after: Hertfordshire

Applicant after: Hai Luo Software Co.,Ltd.

Address before: Hertfordshire

Applicant before: Imagination Technologies Ltd.

GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181211

Termination date: 20200105

CF01 Termination of patent right due to non-payment of annual fee