还原寄存器重命名映射制造技术

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

【技术实现步骤摘要】
还原寄存器重命名映射
技术介绍
乱序微处理器通过以不同于程序中顺序的序列来执行指令能提供提高的计算性能,使得指令当其输入数据可用时被执行,而不是等待程序中前面的指令的执行。为了允许指令在微处理器上乱序运行,能够重命名指令使用的寄存器是有用的。这使得能从指令中移除“写后读”(WAR)依赖,因为这些依赖不是真正的依赖。通过使用寄存器重命名和移除这些依赖,能不按照程序序列执行更多的指令,并且进一步提升了性能。寄存器重命名通过维护映射来执行,其中,在指令中命名的寄存器(称为架构寄存器)被映射到微处理器的物理寄存器上。但是在程序中的指令的流程在执行期间有时会改变。例如,在分支指令的情况下,分支预测经常被用于预测将采用哪个指令分支,来允许推测地乱序执行在预测分支的指令。这意味着会发生分支错误预测,这可能在已发送许多推测指令通过寄存器重命名级并且进入执行管道之后被意识到。为了在采用不正确预测的分支之后,允许重置程序流程并且正确地继续,“回绕”寄存器重命名映射到错误预测分支通过寄存器重命名级时的状态。其他指令在程序流程中引起意外改变(例如中断或异常)的情况下也能看到类似的效果。当前的乱序处理器通过每当可能是流程风险(flow risk)(此处流程风险包括中断、异常、分支或当被执行时会在执行流程中引起改变的任何其他指令)的指令通过寄存器重命名级时,保存寄存器重命名映射的快照来实现寄存器重命名映射的回绕。但是,这需要提供大量的存储来在其中保存所有的快照,因为如果所有的快照存储都被使用,则必须停滞指令流,直到能再次保存快照,这就牺牲了性能。在下文中描述的实施例不限于解决任何或所有已知的乱序微处理器的缺点的实现。
技术实现思路

技术实现思路
被提供来以简化的方式介绍在下文的具体实施方式中进一步描述的概念中选择的一些概念。本
技术实现思路
并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用来帮助确定所要求保护的主题的范围。描述了一种用于还原寄存器重命名映射的技术。在一个示例中,每当向重排序缓冲器传递流程风险指令时,具有多个存储位置的还原表保存寄存器重命名映射的拷贝。当所有存储位置已满时,仍向所述重排序缓冲器传递进一步的指令,但是不保存映射的拷贝。当执行与存储位置关联的流程风险指令时,所述存储位置随后变得可用。在所述存储位置已满时的用于传递到所述重排序缓冲器的未记录的流程风险指令的寄存器重命名映射的状态被产生并且被存储在所述可用的位置。所述寄存器重命名映射的状态是使用用于先前的流程风险指令的还原表条目和用于中间指令的重排序缓冲器值来产生的,所述中间指令在所述先前的流程风险指令和所述未记录的流程风险指令之间。如果在指令流程中发生意外改变,则能用所述还原表来还原所述映射。根据一个方面,提供了一种在乱序处理器中还原寄存器重命名映射的方法,包括:每当将流程风险指令插入到重排序缓冲器时,将所述寄存器重命名映射的状态的拷贝存储到还原表的一个存储位置,直到所有存储位置都被使用;确定随后已变得可用的存储位置;基于先前存储的用于较旧的流程风险指令的寄存器重命名映射的状态和存储在所述重排序缓冲器中的用于中间指令的值,产生在所有存储位置都已被使用时用于插入到所述重排序缓冲器中的未记录的流程风险指令的得出的寄存器重命名映射的状态,其中,所述中间指令插入在所述较旧的流程风险指令和所述未记录的流程风险指令之间;将用于所述未记录的流程风险指令的所述得出的寄存器重命名映射的状态存储到所述可用的存储位置;以及在这些流程风险指令中的一个的执行在指令流程中引起意外改变的情况下,使用在所述还原表中的与该个流程风险指令相关联的寄存器重命名映射的状态来还原所述寄存器重命名映射。根据另一方面,提供了一种乱序处理器,包括:寄存器重命名映射;重排序缓冲器;以及包括多个存储位置的还原表,其中,所述处理器用于:响应于流程风险指令被插入到所述重排序缓冲器,将所述寄存器重命名映射的状态的拷贝存储到所述多个存储位置中的一个,直到所有存储位置都被使用;确定随后已变得可用的存储位置,并且响应于此,基于先前存储的用于较旧的流程风险指令的寄存器重命名映射的状态和存储在所述重排序缓冲器中的用于中间指令的值,产生在所有存储位置都已被使用时用于插入到所述重排序缓冲器中的未记录的流程风险指令的得出的寄存器重命名映射的状态,其中,所述中间指令插入在所述较旧的流程风险指令和所述未记录的流程风险指令之间;将用于所述未记录的流程风险指令的所述得出的寄存器重命名映射的状态存储到所述可用的存储位置;以及在这些流程风险指令中的一个的执行在指令流程中引起意外改变的情况下,使用在所述还原表中的与该个流程风险指令相关联的寄存器重命名映射的状态来还原所述寄存器重命名映射。可以用在有形的存储介质上的机器可读形式的软件来执行在本文中描述的方法,例如,用计算机程序的形式,所述计算机程序包括当所述程序在计算机上运行时并且在所述计算机程序可以体现在计算机可读介质上的情况下,适于执行在本文中描述的任意方法的所有步骤的计算机程序代码模块。有形的(或非暂态的)存储介质的示例包括磁盘、拇指驱动器、存储卡等,并且不包括传播的信号。所述软件可以适合于在并行处理器或串行处理器上执行,使得可以用任意适当的顺序或同时执行所述方法的步骤。这表明固件和软件可以是有价值的、可独立交易的商品。旨在包括在“哑的”(dumb)或标准硬件上运行或控制“哑的”或标准硬件来执行所需的功能的软件。还旨在包括当被用于设计硅芯片或用于配置通用可编程芯片时“描述”或定义硬件配置以执行所需的功能的软件,例如HDL (硬件描述语言)软件。如对本领域的技术人员显而易见的是,可以适当地组合上述的特征,并且上述特征可以与这些示例的任意方面组合。附图说明将通过示例方式参考下列附图来描述实施例,其中:图1示出了具有寄存器重命名映射还原表的乱序处理器;图2示出了用于保存寄存器重命名映射的状态的过程的流程图3示出了产生用于未记录的流程风险指令的寄存器重命名映射的状态的过程的流程图;图4示出了示例性的还原表更新序列;图5示出了用于使用还原表还原寄存器重命名映射的过程的流程图;图6示出了具有寄存器重命名映射还原表和提交映射的乱序处理器;以及图7示出了用于使用提交映射还原寄存器重命名映射的过程的流程图。贯穿图中使用的共同的标号表示类似的特征。具体实施例方式仅通过示例的方式在下文中描述实施例。这些示例表示了本申请人目前已知的将实施例付诸于实践的最佳方法,但是它们不是可以实现此的仅有方法。说明书阐述了示例的功能和用于构建与操作示例的步骤序列。但是,可以用不同的示例完成相同的或等同的功能和序列。下文描述的是用于还原寄存器重命名映射以从乱序处理器中的程序流程中的意外改变中恢复的技术。描述了两种技术,其能被组合来进一步提高性能。与对于发出的每一个流程风险指令,都保存寄存器重命名映射的状态的快照的技术相比,第一种技术减少了用于实现从意外流程改变中恢复的存储空间量。这种技术在“还原表”中保留了预定量的存储位置,用于每当流程风险通过寄存器重命名级时,存储寄存器重命名映射的状态的拷贝。但是,一旦所有的这些存储位置已满,则不会停滞指令流,并且仍允许指令通过寄存器重命名级。当随后执行流程风险指令时,不再需要与这个指令关联本文档来自技高网
...

【技术保护点】
一种在乱序处理器中还原寄存器重命名映射的方法,包括:每当将流程风险指令插入到重排序缓冲器时,将所述寄存器重命名映射的状态的拷贝存储到还原表的一个存储位置,直到所有存储位置都被使用;确定随后已变得可用的存储位置;基于先前存储的用于较旧的流程风险指令的寄存器重命名映射的状态和存储在所述重排序缓冲器中的用于中间指令的值,产生在所有存储位置都已被使用时用于插入到所述重排序缓冲器中的未记录的流程风险指令的得出的寄存器重命名映射的状态,其中,所述中间指令插入在所述较旧的流程风险指令和所述未记录的流程风险指令之间;将用于所述未记录的流程风险指令的所述得出的寄存器重命名映射的状态存储到所述可用的存储位置;以及在这些流程风险指令中的一个的执行在指令流程中引起意外改变的情况下,使用在所述还原表中的与该个流程风险指令相关联的寄存器重命名映射的状态来还原所述寄存器重命名映射。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:H·杰克逊
申请(专利权)人:想象力科技有限公司
类型:发明
国别省市:

网友询问留言 已有1条评论
  • 来自[未知地区] 2014年12月08日 06:37
    重命名给文件或文件夹等重新起一个名称一般是右击重命名其快捷键F2
    0
1