用于在扩展指令的组成指令之间转发中间结果的寄存器重命名系统的使用的制作方法

文档序号:6476309阅读:168来源:国知局
专利名称:用于在扩展指令的组成指令之间转发中间结果的寄存器重命名系统的使用的制作方法
技术领域
本发明大体上涉及处理器,且特定来说,涉及用于利用现存的寄存器重命名资源来 执行传递部分结果的扩展指令的系统和方法。
背景技术
处理器指令对从存储器获得的数据进行操作,且将其结果写入存储器。现代处理器 利用分层的存储器结构,其包括位于顶层的较快速的、昂贵的存储器元件。存储器层级 则包括分别位于较低层的依次较慢但更经济的存储器技术,例如高速缓冲存储器 (SRAM)、固态主存储器(DRAM)和盘片(磁性或光学媒体)。对于例如便携式电子装 置等应用,DRAM常常是存储器层级的最低层。
大多数处理器指令集架构(ISA)包含一组通用寄存器(GPR),其为用于在指令之 间以及向存储器和从存储器传递数据的经架构寄存器。对数据执行逻辑和算术运算的指 令从指定的GPR读取其操作数和将其结果写入指定的GPR。类似地,存储器存取指令 从GPR读取待存储到存储器的数据,且将从存储器加载的数据写入GPR。编译器将源 和目标GPR识别符指派给每一指令,且对指令进行排序,使得计算出适当的结果。也 就是说,以"编程次序"布置指令,其通过引导较早的指令将结果存储在指定GPR中 且引导较晚的指令来读取那些GPR以获得用于进一步处理的操作数而保证正确的结果。 GPR识别符是逻辑标记(例如,r0-rl5)。
一些现代处理器支持"扩展"指令,也就是说,执行单个以上算术或逻辑运算的指 令。举例来说,指令ADD rl, r2, r3 LSL r4实施等式rl = r2 + (r3 [r4]),也就是说,将 寄存器r3中的值左移r4中所存储的量,将此结果加到r2中的值,且将和存储在寄存器 rl中。在加法器需要全循环时间的处理器中,可将此扩展指令实施为两个单独的复合指 令移位指令,其将r3中的值左移,从而产生中间结果;以及加法指令,其将中间结果 加到r2中的值且将和存储在rl中。在一些处理器(即,支持操作数转发且仅以编程次 序执行扩展指令的处理器)中,将中间结果从移位指令传递到相加指令是直接的。然而,一般来说,尤其在支持无序指令执行的超标量处理器中,必须将例如未经架构的"暂存" 寄存器和复杂控制逻辑等额外资源添加到处理器,以可靠地实施在扩展指令的组成指令 之间的中间结果的转发。

发明内容
根据本文所描述和主张的一个或一个以上实施例,使用寄存器重命名资源和控制逻 辑执行在扩展指令的组成指令之间的中间结果的传递。第一组成指令产生中间结果且被 指派有组成指令重命名表中的PRN,且将中间结果写入到物理寄存器。第二组成指令在 所述组成指令重命名表中执行查找且从所述物理寄存器读取所述中间结果。组成指令重 命名逻辑跟踪通过管线的组成指令,且当所述第二组成指令已读取所述中间结果时删除 组成指令重命名表条目且将所述PRN返回到自由列表。
一个实施例涉及一种执行扩展指令的方法。将所述扩展指令转换为两个或两个以上 可单独执行的组成指令。将物理寄存器编号指派给产生中间结果的第一组成指令。将所 述指派的物理寄存器编号与接收所述中间结果的第二组成指令相关联。
另一实施例涉及一种处理器。所述处理器包含一个或一个以上指令执行管线,其操 作以通过产生产生中间结果的第一组成指令和接收所述中间结果的第二组成指令来执 行扩展指令。所述处理器还包含物理寄存器池,每一物理寄存器具有物理寄存器编号; 以及组成指令重命名表,其操作以将指令识别符映射到物理寄存器编号。所述处理器进 一步包含控制逻辑,其操作以针对所述第一组成指令在所述组成指令重命名表中创建条 目,且进一步操作以针对所述第二组成指令执行组成指令重命名表查找。中间结果经由 由所述物理寄存器编号识别的物理寄存器从所述第一组成指令被传递到所述第二组成 指令。


图1是利用寄存器重命名资源来实现在扩展指令的组成指令之间的中间结果传递的 处理器的功能框图。
图2是图1的处理器的管线的功能框图。 图3是执行扩展指令的方法的流程图。
具体实施例方式
图1描绘具有逻辑的处理器10的功能框图,所述逻辑用以利用寄存器重命名资源
6来跟踪由扩展指令产生的组成指令之间的中间结果的传递。处理器IO根据控制逻辑14 在指令执行管线12中执行指令。管线12可为超标量设计,其具有多个平行的下部管线 12a、 12b。管线12包含以管级组织的各种寄存器或锁存器16,以及例如算术逻辑单元 (ALU)(未图示)等逻辑和计算电路。通用寄存器(GPR)堆18提供构成存储器层级 顶部的寄存器。如本文论述,GPR 18可包含重命名表(RT) 20、自由列表22以及组成 指令重命名表(CITR) 24,以允许使用寄存器重命名资源来有效且可靠地在扩展指令的 组成指令之间转发中间结果。
管线12从指令高速缓冲存储器(I-高速缓冲存储器或1$) 26获取指令,其中由指 令侧翻译旁视缓冲器(ITLB) 28管理存储器寻址和许可。从数据高速缓冲存储器(D-高速缓冲存储器或DS) 30存取数据,其中由主翻译旁视缓冲器(TLB) 32管理存储器 寻址和许可。在各种实施例中,ITLB 28可包括TLB 32的部分的副本。或者,可整合 ITLB28与TLB 32。类似地,在处理器10的各种实施例中,可整合或统一 I-高速缓冲 存储器26与D-高速缓冲存储器30。
I-高速缓冲存储器28和/或D-高速缓冲存储器30中的未命中致使在存储器接口 36 (未图示的其它高速缓冲存储器可介于处理器10与主存储器34之间)的控制下对主(芯 片外)存储器34的存取。处理器10可包含输入/输出(I/O)接口38,其控制对各种外 围装置40、 42的存取。所属领域的技术人员将认识到,处理器10的许多变型是可能的。 举例来说,处理器10可包含二级(L2)高速缓冲存储器以用于I和D高速缓冲存储器 26、 30中的一者或两者。另外,可从特定实施例中省略处理器10中所描绘的功能块中 的一者或一者以上。
许多现代处理器10 "无序地"(也就是说,以除了指令的编程次序外的次序)执行 指令,以完全利用多个管线12a、 12b且改进总体性能。无序指令执行提升了指令之间 的许多相依性,称为"竞争(hazard)"。当指令的重排序将改变对相依性中涉及的操作 数的存取次序时,出现数据竞争。可将数据竞争分类为三种类型写入后读取(RaW)、 写入后写入(WaW)以及读取后写入(WaR)。请注意,读取后读取(RaR)情况不是 数据竞争,可以任何次序执行读取。在指令未经重排序而仅需要保持在特定级中直到其 结果已被回写或已准备用于转发为止时也可发生例如RaW的数据竞争。
用于处置支持无序指令执行的处理器IO中的数据竞争的已知系统是寄存器重命名。 在寄存器重命名系统中,通过向物理寄存器动态指派逻辑寄存器编号(LRN)来管理每 一者具有物理寄存器编号(PRN)的大物理寄存器组或池。LRN可包括例如逻辑GPR 识别符(r0、 rl、 r2、...)。物理寄存器的编号大于LRN或经架构GPR的编号。重命名表(RT) 20维持LRN与PRN之间的动态映射,且在自由列表22中维持可用PRN。
图2更详细描绘管线12和各种寄存器重命名资源的功能框图。管线12的获取级50 从指令高速缓冲存储器26获取指令。指令在解码级52中被解码,且可进入发布缓冲器 (issue buffer) 54。指令从发布缓冲器54发布到管线12a、 12b中。重命名逻辑56检查 指令的寄存器存取特性,且在必要时经由重命名表20和自由列表22将与指令相关联的 LRN (例如,GPR识别符)翻译为PRN。对于对寄存器进行写入的指令,从自由列表 22中选择新的物理寄存器,且在重命名表20中输入新的LRN到PRN映射。此操作将 LRN映射到未使用的PRN,使得将写入引导到相关联的物理寄存器(也就是说,LRN 被"重命名")。对寄存器存取管级58a、 58b中的寄存器进行读取的指令经由重命名表 20查找而将其LRN翻译为PRN。 PRN在其通过管线12a、 12b的整个占用期中保持与 寄存器读取指令相关联。
寄存器写入指令不"破坏"写入到相同LRN的先前值,写入被引导到新的未使用 的PRN(因为LRN被重命名为新的PRN)。以编程次序跟随写入指令的指令将被引导到 相同的PRN以获得被写入值。以编程次序位于写入指令之前的指令被重命名表20映射 到不同的物理寄存器(在重命名操作之前),且将继续存取所述物理寄存器。因此,可 在从LRN读取先前值的指令之前执行对给定LRN进行写入的指令(WaR)或在将先前 结果写入到LRN的指令之前执行对给定LRN进行写入的指令(WaW)。
当寄存器写入指令在管级60a、 60b处提交执行时,也就是说,当指令确定其或以 编程次序在其之前的任何指令均不会引起异常时,指派给其的PRN变为相关的架构化 GPR。指令将在回写管级62a、 62b处(也许在写入缓冲器64a、 64b之后)将其结果写 入到此PRN。在此点,从重命名表20中移除相同LRN (GPR识别符)到其它PRN的 任何较老的重命名。当读取GPR的所有指令完成执行时,将PRN返回到自由列表22 作为用于另一重命名操作的可用资源。进行中(in-flight)重命名逻辑66通过在指令提 交执行时监视管线12,且将适当控制信号发送到重命名表20和自由列表22来执行这些 功能。
根据一个或一个以上实施例,利用寄存器重命名系统来提供在从扩展指令产生的组 成指令之间的中间结果的转发。当在管级52处对扩展指令进行解码时,可产生两个或 两个以上组成指令且将其传递到指令发布缓冲器54中。可关于哪些组成指令产生一个 或一个以上中间结果且哪些组成指令接收中间结果作为操作数来对组成指令进行标记。 重命名逻辑56检查组成指令,且将来自自由列表22的一个或一个以上PRN指派给产 生中间结果的组成指令。重命名逻辑56另外在组成指令重命名表24中创建一条目,其将识别产生中间结果的组成指令的指示符映射到所指派的PRN。重命名逻辑56进一步 使用识别产生中间结果的组成指令的指示符来标记接收中间结果的组成指令。
当接收中间结果的组成指令到达寄存器存取管级58a、 58b时,指令存取组成指令 重命名表24以检索识别保持其中间结果的寄存器的PRN。当接收中间结果的组成指令 在管级60a、 60b处提交执行时,组成指令重命名逻辑68从组成指令重命名表24中移 除相关条目,且将PRN返回到自由列表22。请注意虽然在图2中将组成指令重命名表 24描绘为独立的功能实体,但在某些实施例中,所述功能性可包含在重命名表20中。 在此情况下,将扩展指令的产生和接收中间结果的组成指令视为寄存器重命名的特殊情 况,其中将指令识别符而不是LRN重命名。在其它实施例中,组成指令寄存器重命名 可与寄存器重命名分离,其中单独的物理寄存器池和单独的自由列表22专用于扩展指 令。
图3描绘执行扩展指令的方法。将扩展指令转换为两个或两个以上可单独执行的组 成指令(方框100)。向产生中间结果的第一组成指令指派PRN (方框102)。在一个实 施例中,PRN是选自寄存器重命名池。将所指派的PRN与接收中间结果的第二组成指 令相关联(方框104)。所述关联可经由寄存器重命名系统的组成指令重命名表24或重 命名表20中的条目来进行。
随后执行第一组成指令(方框106),且将其产生的中间结果存储在由所指派的PRN 识别的寄存器中。执行第二组成指令(方框108),从由所指派的PRN识别的寄存器中 检索中间结果。所属领域的技术人员将认识到,可通过操作数转发,使用所指派的PRN 来识别指令来实施方框106和108,而无需实际将中间结果写入到物理寄存器。
在第二组成指令已接收到中间结果之后,例如通过从组成指令重命名表24 (或寄存 器重命名表20)中移除相关条目来解除PRN与第二组成指令的关联(方框110)。随后 例如通过将PRN返回到自由列表22而将PRN返回到寄存器重命名池(方框112)。 一 旦第二组成指令在其执行期间或在任何稍后时间读取中间结果,便可解除PRN与第二 组成指令的关联并返回到自由列表22。
通过如本文所述利用现存寄存器重命名系统的资源和方法,可将扩展指令执行为两 个或两个以上组成指令,而无需大量的额外处理器资源和逻辑来实现组成指令之间的中 间结果的传递。尽管本文依据传递单个中间结果的两个组成指令进行描述,但所属领域 的技术人员将认识到本发明不限于此实施例。 一般来说,可从任何扩展指令产生大量组 成指令,且组成指令可利用寄存器重命名系统在其本身之间传递大量中间结果,如本文 所述。当然,可在不脱离本发明的本质特征的情况下,以除了本文特定陈述的方式以外的 其它方式来实行本发明。本发明实施例在所有方面均视为说明性而不是限制性的,且希 望处于所附权利要求书的含义和等效范围内的所有改变将均包含于其中。
权利要求
1.一种执行扩展指令的方法,其包括将所述扩展指令转换为两个或两个以上可单独执行的组成指令;将来自池的物理寄存器编号指派给产生中间结果的第一组成指令;以及将所述指派的物理寄存器编号与接收所述中间结果的第二组成指令相关联。
2. 根据权利要求1所述的方法,其进一步包括执行所述第一组成指令以产生所述中间 结果。
3. 根据权利要求2所述的方法,其进一步包括执行所述第二组成指令,借此所述中间 结果是从所述第一组成指令转发到所述第二组成指令的操作数。
4. 根据权利要求2所述的方法,其进一步包括将所述中间结果存储到由所述物理寄存 器编号识别的寄存器。
5. 根据权利要求4所述的方法,其进一步包括执行所述第二组成指令,且从由所述物 理寄存器编号识别的所述寄存器中检索所述中间结果。
6. 根据权利要求1所述的方法,其中将来自池的物理寄存器编号指派给第一组成指令 包括在组成指令重命名表中创建条目,从而将所述第一组成指令的识别符映射到所 述物理寄存器编号。
7. 根据权利要求6所述的方法,其中从可用物理寄存器列表中选择所述物理寄存器编 号且将其从所述列表移除。
8. 根据权利要求7所述的方法,其中将所述指派的物理寄存器编号与第二组成指令相 关联包括使用所述第一组成指令识别符在所述组成指令重命名表中执行查找。
9. 根据权利要求8所述的方法,其进一步包括在所述第二组成指令读取所述中间结果 之后将所述物理寄存器编号释放到所述池。
10. 根据权利要求9所述的方法,其中将所述物理寄存器编号释放到所述池包括将所 述物理寄存器编号添加到所述可用物理寄存器列表。
11. 根据权利要求1所述的方法,其中所述物理寄存器池是寄存器重命名池。
12. —种处理器,其包括一个或一个以上指令执行管线,其操作以通过产生产生中间结果的第一组成指令 和接收所述中间结果的第二组成指令来执行扩展指令; 物理寄存器池,每一物理寄存器具有物理寄存器编号;组成指令重命名表,其操作以将指令识别符映射到物理寄存器编号;以及 控制逻辑,其操作以针对所述第一组成指令在所述组成指令重命名表中创建条目,且进一步操作以针对所述第二组成指令执行组成指令重命名表查找;借此中间结果经由由所述物理寄存器编号识别的物理寄存器从所述第一组成指令被传递到所述第二组成指令。
13. 根据权利要求12所述的处理器,其进一步包括所述池中的可用物理寄存器编号的 自由列表,且其中所述控制逻辑进一步操作以在所述第二组成指令接收到所述中间 结果之后移除组成指令重命名表条目且将物理寄存器编号返回到所述自由列表。
14. 根据权利要求12所述的处理器,其中所述组成指令重命名表条目将第一组成指令 识别符映射到第 一物理寄存器编号。
15. 根据权利要求14所述的处理器,其中所述第一组成指令将中间结果写入到由所述 第一物理寄存器编号识别的物理寄存器。
16. 根据权利要求15所述的处理器,其中所述第二组成指令从由所述第一物理寄存器 编号识别的所述物理寄存器中读取中间结果。
17. 根据权利要求16所述的处理器,其中所述第二组成指令使用所述第一组成指令识 别符经由组成指令重命名表査找来检索所述第一物理寄存器编号。
18. 根据权利要求12所述的处理器,其中所述物理寄存器池另外用于寄存器重命名。
19.根据权利要求12所述的处理器,其中所述组成指令重命名表是寄存器重命名表。
全文摘要
使用寄存器重命名资源和控制逻辑在扩展指令的组成指令之间传递中间结果。第一组成指令产生中间结果并被指派有组成指令重命名表中的PRN,且将中间结果写入到所识别的物理寄存器。第二组成指令在所述组成指令重命名表中执行查找且从所述物理寄存器读取所述中间结果。组成指令重命名逻辑跟踪通过管线的所述组成指令,且当所述第二组成指令已读取所述中间结果时删除组成指令重命名表条目且将所述PRN返回到自由列表。
文档编号G06F9/38GK101601008SQ200880002897
公开日2009年12月9日 申请日期2008年1月24日 优先权日2007年1月24日
发明者托马斯·安德鲁·萨托里乌斯, 纳坦·塞缪尔·努娜玛克尔, 罗德尼·韦恩·史密斯, 詹姆斯·诺里斯·迪芬德尔费尔, 迈克尔·斯科特·麦克勒瓦伊内 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1