利用改进指令目的地标记的数据处理系统、处理器和方法

文档序号:6611454阅读:115来源:国知局
专利名称:利用改进指令目的地标记的数据处理系统、处理器和方法
技术领域
本发明 一般地涉及数据处理并且特别地涉及处理器中的数据 处理。更特别地,本发明涉及指令目的地标记在处理器内的使用。
背景技术
在常规超标量处理器中,可能相对于预定的程序次序而言不按 次序地在多个执行单元中并行执行指令。在^l行指令时,生成执行 结果并且在处理器内的不同位置緩存这些结果以供随后参照。由于后续指令通常依赖于先前指令的结果,所以 一般利用依赖性跟踪方 案来保证遵守指令之间的所有数据依赖性。在一种现有技术的实施中,通过使用多个不同目的地标记来管 理指令之间的依赖性。在这样的现有技术实施中,为处理器内的各 位置定义不同目的地标记,将根据指令执行的结果来更新这些目的 地标记。对各种指令的目的地标记的比较由此允许处J里器检测和遵 守指令之间的依赖性。然而,在现有技术的处理器内必须跟踪和路由的目的地标记的总数潜在地等于即兴动态(inflight)指令的数目 与指令结果的目的地的数目的乘积。在处理器内跟踪和3各由如此数 目庞大的目的地标记致使处理器内有相当数量的电路并且消耗了相 当多的功率。鉴于用于常规处理器内依赖性跟踪的现有技术的不足,本发明 认识到提供一种利用指令目的地标记在处理器内对依赖性进行跟踪 的改进处理器和方法将是有用并且合乎需要的。发明内容一种数据处理方法包括获取指令序列,为序列内的各指令分
配相应唯一指令标记,以及将相应目的地矢量与各指令相关联。大 小统 一 的目的地矢量标识了用于执行结果的多个可能目的地中的哪 一目的地是关联指令的目标。通过参照与指令相关联的目的地矢量 来管理在序列中的指令之间的数据依赖性。在如下具体书面描述中,本发明的所有目的、特;f正和优点将变 得明显。


特征。然而,将通过参照结合附图来阅读的对示例性实施例的如下 具体描述来最佳地理解本发明以及优选使用模式,在附图中图1是根据本发明的数据处理系统的高级框图; 图2A图示了根据本发明的示例性指令格式; 图2B描绘了根据本发明的指令标记(ITAG)和目的地矢量 (D—Vector)的示例性实施例;图3A图示了根据本发明一个实施例的全局完成表的更具体视图;图3B描绘了根据本发明一个实施例的寄存器映射器中映射表 的更具体视图。
具体实施方式
现在参照附图并且特别地参照图1,描绘了根据本发明用于处 理指令和数据的 一般地表示为10的处理器的示例性实施例的高级框 图。特别地,处理器IO利用改进的通用指令标记机制来跟踪和遵守 指令依赖性。处理器10包括单个集成电路超标量处理器,如下文所讨论的, 该处理器包括全部由集成电路形成的各种执行单元、寄存器、緩冲 器、存储器和其它功能单元。如图1中所示,处理器IO可以通过互 连结构14耦合到其它设备如系统存储器12和第二处理器10以形成
更大的数据处理系统如工作站或者服务器计算机系统。处理器10也 包括片上多级高速緩存分级,该分级分别包括一体式第二级(L2)高速緩存16以及分叉式第一级(Ll )指令(I)和数据(D)高速缓 存18和20。正如本领域技术人员所知,高速緩存16、 18和20提供 对与系统存储器12中的存储器位置相对应的高速緩存线的低延时访 问。由在处理器10内的指令定序逻辑3对指令进行获取和排序以 供处理。如图2中所示,典型指令200包括标识了待扭J亍的操作的 操作代码字段(opcode) 202以及可选地包括表明中间才乘作数和/或 操作数源(例如所构造的寄存器标识符)和/或目的地寄存器(例如 所构造的寄存器标识符)的一个或者多个操作数字段(标记为0P1、 OP2和OP3 ) 204-208。在所示实施例中,指令定序逻辑13包括指令获取地址寄存器(IFAR) 30,该寄存器包含如下有效地址(EA),该有效地址表明 为了进行处理而要从L1 I-高速缓存18获取的指令的高速缓存线。在 各周期过程中,新指令获耳又地址可以从三个源之一加载到IFAR 30 中分支预测单元(BPU) 36,提供从对条件分支指令的预测所获 得的推测性目标路径地址;全局完成表(GCT) 38,提供顺序路径 地址;以及分支执行单元(BEU) 92,提供从对所预测的条件分支 指令的解析所获得的非推测性地址。根据如下优先级区分方案从由 这些源所4是供的地址之中选择被加载到IFAR 30中的有效地址,该 方案例如可以考虑到在给定周期中用于呈现地址以供选择的源的相 对优先级以及任何未完成的未解析的条件分支指令的已存在时间(age )。如果在有效地址到实际地址的转换(ERAT) 32对包含于IFAR 30中的EA的转换以及对I-高速緩存目录34中实际地址(RA)的查 找之后,命中/未命中逻辑22确定与IFAR30中的EA相对应的指令 高速緩存线不驻留于Ll I-高速缓存18中,则命中/未命中逻辑22经 由I-高速缓存请求总线24将RA作为请求地址提供给L2高速緩存16。这样的请求地址也可以基于近期的访问模式由在L2高速緩存16内的预取逻辑来生成,或者正如下文将更详细讨论的那样,由块 预取单元35响应于检测到指令块的已知序列而生成。响应于请求地 址,L2高速缓存16可能在经过预解码逻辑(未示出)之后输出经 由I-高速緩存重载总线26加载到预取緩冲器(PB) 28和L1 I-高速 缓存18中的指令高速緩存线。一旦IFAR 30中的EA所指定的高速緩存线驻留于Ll高速緩 存18中,Ll I-高速緩存18就将高速緩存线内的指令输出到分支预 测单元(BPU) 36和指令获取緩冲器(IFB) 40。每个这样的获取指 令被分配以在处理器10内唯一地标识该指令的指令标记(ITAG)。 例如,在处理器10被设计用来并发地支持256个"即兴动态"指令的 实施例中,可以利用8位ITAG。BPU 36能够在指令高速缓存线中扫描分支指令并且如果有条 件分支指令则预测条件分支指令的结果。在分支预测之后,BPU 36 如下文所述将推测性指令获耳又地址供应给IFAR 30,并且将该预测传 递到分支指令队列64,使得当条件分支指令后续地由分支执行单元 92解析时能够确定该预测的准确性。IFB 40暂时地緩存从LlI-高速緩存18接收的获取指令(及其 关联ITAG),然后将指令(包括它们的ITAG)传递到分派单元42。 分派单元42为各所获取指令200分配目的地标记。如图2B中所示, 目的地标记优选地采取目的地矢量(D—Vector) 212的形式,该矢量 与已经分配给指令200的ITAG210相组合地形成组合标记214。如 图所示,各D—Vector 212优选地实施为统一长度的位矢量,该矢量 包括用于关联指令的执行结果的各可能目的地的长为1位的位字段。 在示例性实施例中,这些目的地包括两个通用寄存器文件(GPRO, GPR1 ) 84、 86,两个浮点寄存器文件(FPRO, FPR1 ) 88、 89,定 点异常寄存器文件(XER) 95,条件寄存器文件(CRR) 80,链路 内链路寄存器和计数寄存器文件(LCR) 82、 LCR内计数寄存器82、 Ll D-高速緩存的加载端口 20和Ll D-高速缓存的存储端口 20。分派 单元42对各指令进行解码以确定为了进行执行而应当用以分派指令的路径以及该指令的执行结果的一个或者多个目的地。分派单元42 在D_Vector 212内确定针对执行结果的各目的地的适当位。应当认 识到至少一些指令将具有在关联D一Vector 212内确定的多个位。例 如,定点指令可以更新GRP0 84和GPR1 86、 XER 95和CRR 80并 且相应地具有在它的D一Vector212内确定的4位。在分派单元42将到指令的D—Vector 212分派给指令之后,分 派单元42将全局完成表(GCT ) 38中关于该指令的信息输入到一个 或者多个相关的映射器52-60中。如图3.A中所示,GCT 38针对能而包括一个条目302。各条目302包括用于缓存包含指令的緩存线的 有效地址的有效地址(EA)字段304、用于緩存指令的ITAG的ITAG 字段306。在一个实施例中,GCT 38还将各指令分配到指令组,该 指令组的成员被允许相对于;f皮此不按次序地来执行。全局完成表38 跟踪其执行有待由至少 一 个关联E A来完成的各指令组,该关联E A 优选地为指令組中最旧指令的EA。如上所述,也在映射器52-60之中与指令结果的一个或者多个 目的地相关联的多个特定映射器内记录针对指令的指令信息。在本 发明的一个实施例中,由各映射器52-60在比如图3B中所示那样的相应映射表300内记录指令信息。如图所示,映射表300具有多个 条目308,各条目包括相应ITAG字段310、寄存器ID字段312和 有效字段314。在分派之时,分派单元42根据指令类型将合格的指令连同它 们的组合标记214—起依次分派到锁存器44、 46、 48和50。也就是 说,分支指令和其它条件寄存器(CR)修改指令被分派到锁存器44, 定点指令和加载-存储指令被分派到锁存器46和48中的任一锁存 器,而浮点指令被分派到锁存器50。分派单元42也在由指令的 D—Vector 212所指示的各映射器52-60中条目308的ITAG字段310 内记录各指令的ITAG。例如,如果确定了 D—Vector212的GPR0位,
则将ITAG 210写入GPR映射器58的映射表300中条目308的ITAG 字段310中,而如果确定了 D—Vector 212的XER位,则将ITAG 210 写入XER映射器56的映射表300中条目308的ITAG字段310中。这时,也由映射器52-60中的一个适当的映射器基于指令的 D—Vector 212内的所确定的位为需要用于暂时存储执4亍结果的重命 名寄存器的各指令分配寄存器文件内的一个或者多个寄存器。CR映 射器52、链路和计数(LC)寄存器映射器54、异常寄存器(XER) 映射器56、通用寄存器(GPR)映射器58和浮点寄存器(FPR)映 射器60因此分別分配CRR 80, LCR 82, XER 95, GPR 84、 86和 FPR 88、 89内的重命名寄存器。因此,如有必要则这时由一个或者 多个适当的映射器来填充寄存器ID字段314。在分派之时,分派单元42也扫描映射表300的所有较早条目 308的ITAG字段310和寄存器ID字段312以检测待分派的当前指话)。从映射器52-60的映射表300读出依赖性ITAG(如果有的话), 并且将这些ITAG连同指令一起转发到CR发布队列(CRIQ) 62、 分支发布队列(BIQ)64、定点发布队列(FXIQ) 66和68或者浮点 发布队列(FPIQ) 70和72中的相关发布队列。如果不存在数据依 赖性,则该指令是合格的,可以发布到执行单元90-104中的一个相 关执行单元。如果检测到未解析的数据依赖性,则该指令在发布队 列62-72中的一个相关发布队列处等待到直至一个或者多个相关执 行单元90-104通知发布队列该指令在数据上所依赖于的 一个或者多 个先前指令已经全部完成执行为止。当例如由从一个或者多个相关 执行单元90-104接收到 一 个或者多个关联ITAG所表明的那样已经 完成一个或者多个更旧指令的执行时,以前在数据上有依赖性的指 令变得合格,可以从发布队列发布到执行单元。可以随机地(即可 能不按次序地)将指令从发布队列62、 64、 66、 68、 70和72发布 到处理器10的执行单元以供执行。如图所示,处理器10的执行单元包括用于执行CR修改指令的CR单元(CRU) 90、用于执行分支指令的分支执行单元(BEU) 92、 用于执行定点指令的两个定点单元(FXU) 94和100、用于执行加 载指令和存储指令的两个加载-存储单元(LSU) 96和98、以及用于 执行浮点指令的两个浮点单元(FPU) 102和104 。各执行单元90-104 优选地实施为具有多个流水线级的执行流水线。当然,在其它实施 例中,能够实施其它类型的执行单元,比如矢量执行单元。在执行单元90-104之一内的执行过程中,指令从耦合到执行单 元的寄存器文件内的一个或者多个所构造的和/或重命名寄存器接收 操作数(如果有的话)。当执行CR修改指令或者CR-依赖性指令时, CRU90和BEU92访问CR寄存器文件80,在优选实施例中,该寄 存器文件包含CR和多个CR重命名寄存器,各重命名寄存器包括由 一位或者多位形成的许多独特字段。在这些字段之中有如下LT、 GT 和EQ字段,其分別地表明值(通常是指令的结果或者操作数)小于 零、大于零或者等于零。链路和计数寄存器(LCR)寄存器文件82 包含计数寄存器(CTR)、链路寄存器(LR)和各自的重命名寄存 器,通过各寄存器,BEU92也可以解析条件分支以获得路径地址。 经同步的通用寄存器文件(GPR) 84和86复制寄存器文件、存储 FXU 94和100以及LSU 96和98所访问和产生的定点值和整数值。 与GPR 84和86相似地也优选地实施为复制的同步寄存器集的浮点 寄存器文件(FPR) 88、 89包含从FPU 102和104对浮点指令的执 行以及LSU 96和98对浮点加载指令的执行所获得的浮点值。在执行单元完成对指令的执行之后,执行单元将执行结果提供 给由指令的D—Vector 212所标识的各目的地。例如,在上述示例性 浮点指令的情况下(该定点指令具有D—Vector212,在该D—Vector212 中与GPR0 84、 GPR1 86、 XER 95和CRR 80相对应的位字段全都被 确定),FXU 94通过参照D—Vector 212的所确定的位字段将数据 结果路由到GPR0 84和GPR1 86、将异常结果路由到XER95而将条 件结果路由到CRR80。在执行单元完成对指令的执行之后,执行单元还将完成的ITAG210及其D—Vector212报告给映射器52-60以及报告给发布队 列6172中的一个或者多个相关发布队列。接收完成报告的发布队列 将完成的ITAG 210和D—Vector 212与具有数据依赖性的任何已排队 队列中的对应字段310和312相比较。如果找到匹配,则解析依赖 性,而以前在数据上具有依赖性的指令变得合格,可以从发布队列 发布到执行单元。映射器52-60利用完成信息来更新寄存器文件中物理目的地寄 存器的状态。接收完成报告的映射器52-60通过参照完成的D—Vector 212将该信息限定为与这一映射器相关。如果完成报告与这一映射器 相关,则该映射器将完成的ITAG210与映射表300中的ITAG字段 310相比较。如果找到匹配,则设置有效字段314以表明与这一条目 308中的ITAG相关联的指令已经完成执行,而数据可为现在可以开 始发布以供执行的更新的依赖性指令所用。在对指令的执行完成之后,执行单元也至少将该指令的ITAG通知给GCT 38。作为响应,GCT 38按照程序次序来调度指令的完 成。为了完成由CRU90、 FXU94和100或者FPU 102和104之一 所执行的指令,GCT38向适当的映射器发送设置了如下指示的信号, 该指示用以表明向该指令分配的一个或者多个文件寄存器现在包含 寄存器的架构状态。 一旦已经完成在它的指令组内的所有指令就从GCT 38中去除它的条目。应当注意,由此在本质上解除向指令的 D_Vector 212所分配的该指令的ITAG 210。当BEU 92解析条件分支指令并且确定所应当采用的执行路径 的路径地址时,将该路径地址与由BPU 36所预测的推测性路径地址 相比较。如果路径地址匹配,则无需进一步处理。然而,如果计算 的路径地址与预测的路径地址不匹配,则BEU 92将正确的路径地址 供应给IFAR30。在任一情况下,然后能够从BIQ 64中去除分支指 令,而当已经完成在同一指令组内的所有其它指令时,可以从GCT38中去除它的条目。在执行加载指令(包括反向加载指令)之后,通过执行加载指
令来计算的有效地址由数据ERAT(未示出)转换成实际地址、然后 基于D_Vector 212中的所确定的位字段作为请求地址被提供给LI D-高速缓存20。如果在LI D-高速緩存20中未命中该请求地址,则 在加载未命中队列(LMQ) 116中放置该请求地址,从该加载未命 中队列中自L2高速緩存16取回所请求的数据而如果失败则自另一 处理器IO或者自系统存储器12取回该数据。利用存储队列(STQ) 110来类似地完成存储指令(包括存储-条件指令),其中在执行存储指令之后将用于存储的有效地址加载到该存储队列中。同样,LSU 96或者98基于在D—Vector 212内的 所确定的STORE (存储)位字段将存储数据路由到存储队列110。 在对目标地址进行了从有效地址到实际地址的转换之后,数据能够 被从STQ 110存储到LI D-高速緩存20和L2高速緩存16中的任一 个或者这二者中。如前所述,本发明为正在处理器中进行处理的指令提供了一种 改进的通用目的地标记。根据本发明,在处理器中处理的指令序列 中的各指令被分配以被实施为统一长度的位矢量的目的地标记,该位矢量表明执行结果的多个可能目的地中的哪 一 目的地将接收该指 令的执行结果。对于某些指令,可以确定位字段的多个位字段以表 明该指令针对它的执行结果而具有多个不同目的地。本发明的目的 地标记在处理器内的依赖性跟踪设施(例如分派单元42和映射器 52-60 )中用来保证遵守指令之间的依赖性。此外,参照目的地标记 以将适当资源(例如重命名寄存器)分配给指令以及跟踪当完成指 令执行时执行结果将要路由到何处。尽管已经参照优选实施例如上文所述那样特别地示出了本发 明,但是本领域技术人员将理解,可以在不脱离本发明的精神和范 围的情况下在本发明中做出形式和细节上的各种变化。
权利要求
1.一种数据处理方法,包括获取指令序列;为所述序列内的各指令分配相应唯一指令标记;将相应目的地矢量与各指令相关联,其中所述目的地矢量标识了用于执行结果的多个可能目的地中的哪一目的地是关联指令的目标,以及其中所有目的地矢量大小统一;以及通过参照与所述指令相关联的所述目的地矢量来管理在所述序列中的指令之间的数据依赖性。
2. 根据权利要求1所述的方法,其中各目的地矢量包括位矢量, 所述位矢量具有用于所述多个可能目的地中各目的地的位字段。
3. 根据权利要求2所述的方法,其中所述关联还包括对所述指令进行解码以确定执行结果的 一个或者多个目的地;以及确定所述一个或者多个目的地中各目的地的所述相应位字段。
4. 根据权利要求1所述的方法,还包括基于指令的关联目的地矢量将处理器中的至少一个寄存器分配 给该指令。
5. 根据权利要求1所述的方法,还包括 所述处理器的执行单元执行所述序列中的指令并且基于所述目的地矢量将执行结果报告给一个或者多个目的地。
6. 才艮据权利要求1所述的方法,还包括自动使指令的目的地矢量连同该指令的所述指令标记一起引退。
7. 根据权利要求1所述的方法,其中管理数据依赖性包括确定所述序列中后续捐令的目的地矢量是否与所述序列中先前 指令的目的地矢量相匹配;以及响应于肯定的确定结果,延迟所述后续指令的执行直至获得所  述先前指令的执行结果。
8. 根据权利要求1所述的方法,其中所述多个可能目的地包括 多个寄存器文件。
9. 一种处理器,包括一个或者多个执行单元,执行用以生成执行结果的指令; 用于执行结果的多个可能目的地;指令定序逻辑,获取指令序列、为所述序列内的各指令分配相 应唯一指令标记并且将相应目的地矢量与各指令相关联,其中所述目的地矢量标识了用于执行结果的多个可能目的地中的哪一目的地 是关联指令的目标,以及其中所有目的地矢量大小统一;以及依赖性跟踪设施,通过参照与所述指令相关联的所述目的地矢 量来管理在所述序列中的指令之间的数据依赖性。
10. 根据权利要求9所述的处理器,其中各目的地矢量包括位 矢量,所述位矢量具有用于所述多个可能目的地中各目的地的位字 段。
11. 根据权利要求IO所述的处理器,其中所述指令定序逻辑对 所述指令进行解码以确定执行结果的一个或者多个目的地并且确定 所述一个或者多个目的地中各目的地的所述相应位字段。
12. 根据权利要求9所述的处理器,其中 所述多个可能目的地包括多个寄存器文件; 所述处理器还包括映射器,所述映射器基于指令的关联目的地矢量将所述多个寄存器文件之一中的至少一个寄存器分配给该指 令。
13. 根据权利要求9所述的处理器,其中所述一个或者多个执 行单元中的执行单元基于所述目的地矢量将执行结果报告给所述多 个可能目的地之一。
14. 根据权利要求9所述的处理器,其中所述指令定序逻辑自 动使指令的目的地矢量连同该指令的所述指令标记一起引退。
15. 根据权利要求9所述的处理器,其中所述依赖性跟踪设施 通过如下操作来管理数据依赖性确定所述序列中后续指令的目的 地矢量是否与所述序列中先前指令的目的地矢量相匹配,而如果是 这样,则延迟所述后续指令的执行直至获得所述先前指令的执行结 果。
16. 根据权利要求9所述的处理器,其中所述指令定序逻辑包 括依赖性跟踪设施。
17. —种数据处理系统,包括 根据权利要求9所述的处理器; 耦合到所述处理器的存储器;以及 耦合到所述处理器的互连结构。
全文摘要
一种数据处理方法,包括获取指令序列,为序列内的各指令分配相应唯一指令标记,以及将相应目的地矢量与各指令相关联。大小统一的目的地矢量标识了用于执行结果的多个可能目的地中的哪一目的地是关联指令的目标。通过参照与指令相关联的目的地矢量来管理在序列中的指令之间的数据依赖性。
文档编号G06F9/30GK101149676SQ20071014027
公开日2008年3月26日 申请日期2007年8月8日 优先权日2006年9月20日
发明者D·Q·恩盖延, H·Q·勒 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1