数据处理系统、处理器和进行数据处理的方法

文档序号:6614572阅读:175来源:国知局
专利名称:数据处理系统、处理器和进行数据处理的方法
技术领域
本发明一般地涉及数据处理,并且特别地涉及分支预测。更特别地,
本发明涉及具有改进的分支目标地址高速緩存(BTAC)的数据处理系 统,处理器和进行数据处理的方法。
背景技术
根据现有技术的微处理器可以包括例如用于存储指令和数据的高速 緩存,用于从所述高速緩存取指令、为所述取到的指令排序并且分发所 述取到的指令用于执行的指令排序逻辑, 一个或多个用于处理序列指令 的序列指令执行单元,以及用于处理分支指令的分支处理单元(BPU)。
BPU执行的分支指令可以归类为条件分支指令或非条件分支指令。 非条件分支指令是将程序执行流程从顺序执行路径改变到特定的目标执 行路径并且不依赖于事件发生所提供的条件的分支指令。这样,总是选 择非条件分支指令所规定的分支。与此相比,条件分支指令是根据处理 器内部的条件可能选择也可能不选择程序执行流程中所指示的分支的分 支指令,所述条件例如特定条件寄存器位的状态或计数器的值。
条件分支指令可以根据在BPU评估条件分支指令时所述分支所依 赖的条件是否具备进一步分类为解析或未解析的条件分支指令。由于解 析条件分支指令所依赖的条件在执行前是已知的,典型地可以在执行序 列指令时延迟很小或无延迟的情况下执行解析条件分支指令并且提取所 述目标执行路径上的指令。另一方面,如果顺序指令的提取被延迟直至 所述分支所依赖的条件具备并且所述分支被解析为止,则未解析条件分 支可造成严重的性能损失。
因此,为了使执行停滞最小化,某些处理器推测性地将未解析分支 指令的结果预测为选取或不选取。随后取指令器就能够利用所述预测结
果在所述分支解析前取所述推测性的执行路径上的指令,这样在随后所 述分支被解析为预测正确的情况下,就可避免执行管道中的停滞。传统 地,已经利用静态分支预测或利用动态分支预测实现未解析条件分支指 令的预测,其中静态分支预测基于在程序执行前确定的标准预测分支指
地址高速緩存(BTAC)中在逐个地址基础上积累的分支历史来预测分 支指令的解析。
现代微处理器从指令高速緩存中取指令、扫描所取指令的分支并且 预测未解析条件分支指令的结果需要若干周期。如果任何分支被预测为 被选取,取指令被重定向到新的预测地址。这个改变所取指令的过程称 为"被选取分支重定向"。在所述取指令、分支扫描以及被选取分支重定 向需要的若干周期中,继续沿着未选取的路径取指令;对于被预测为选 取的分支,所述被预测选取路径内的指令被丢弃,造成性能降低以及功 耗浪费。
现有的几种方法用于降低或消除所述分支重定向的损失。 一种普遍 采用的降低分支重定向损失的方法是提前取指令并将所述指令放到指令 緩冲器中;然而,如果所述緩沖器例如由于分支错误预测、指令高速緩 存未命中或在快速接替中有太多被选取分支而为空,那么指令管道的部 分或全部可能空闲,从而降低性能。
较不常用的降低由于被选取分支造成的性能损失的方法是实施 BTAC,其高速緩存被选取分支的所述分支目标地址和相关联的所述取 分支指令地址。在操作中,在取指令的同时访问BTAC,并且在BTAC 中搜索取指令地址与传送给所述指令高速緩存的取地址相匹配的条目。 如果存在这样的BTAC条目,取指令被重定向到所述匹配的BTAC条目 所提供的所述分支目标地址。由于所述BTAC访问所需的周期典型地少 于所述取指令、分支扫描和被选取分支重定向序列的周期,正确的BTAC 预测能够通过促使取指令早于没有BTAC的情况开始于新地址,从而提 高性能。

发明内容
本发明提供采用增强分支目标地址高速緩存的改进的数据处理系 统,处理器和进行数据处理的方法。
处理器包括执行单元和取指令用以执行的指令排序逻辑。指令排序 逻辑包括具有分支目标緩冲器的分支目标地址高速緩存,分支目标緩沖 器包含多个条目,每个条目将分支指令地址的至少一部分与预测分支目 标地址相关联。分支目标地址高速緩存使用分支指令地址访问分支目标 緩冲器,以获取预测的分支目标地址作为取指令地址使用。分支目标地 址高速緩存也包括緩沖一个或多个候选分支目标地址预测的过滤緩冲 器。过滤緩冲器将各个表明预测准确性的置信度指示与每个候选分支目 标地址预测相关联。分支目标地址高速緩存根据候选分支目标地址预测 各自的置信度指示将其从过滤緩冲器推进到分支目标緩沖器。
通过下文的详述可以理解本发明所有的目的、特性和优势。


权利要求书中提出了被认为是本发明特有的新颖性特征。然而,参
方法有最好的理解,其中
图1是根据本发明的数据处理系统的一个示例性实施例;
图2是图1的所述数据处理系统中分支预测单元的更为详细的方框
图3是根据本发明的一个示例性方法的高级逻辑流程图,所述分支
预测单元内的分支目标地址高速緩存(BTAC)利用该方法产生取指令 i也址;以及
图4A-图4C是根据本发明的一个示例性方法的高级逻辑流程图, 利用该方法更新所述BTAC内的所述分支目标地址预测。
具体实施例方式
现在参照图1,图1示出了根据本发明的示例性数据处理系统8的
高级方框图。如图所示,数据处理系统8包括处理器10,处理器10包 括单一集成电路超标量处理器,其如下文进一步所述包括各种执行单元、
寄存器、緩沖器、存储器和其他全部由集成电路形成的功能单元。处理 器IO可以通过互连架构14连接到其他设备例如系统存储器12和第二个 处理器IO,以构成数据处理系统8,如工作站或服务器计算机系统。处 理器10也包括片上多级高速緩存层级,其分别包括统一的二级(L2) 高速緩存16以及分为两部分的一级(Ll)指令(I)和数据(D)高速 緩存18和20。本领域的普通技术人员已经了解,高速緩存16、 18和20 提供对应于系统存储器12中存储器位置的高速緩存线的低延迟访问。
取指令并对其排序以供处理器io内的指令排序逻辑13处理。在所 示的实施例中,指令排序逻辑13包括取指令地址寄存器(IFAR) 30, 其包括表明应从L1 I-高速緩存18中提取用以执行的指令的高速緩存线 的有效地址(EA)。在每个周期中,可以从至少三个源之一将新的取指 令地址载入IFAR 30:提供条件分支指令预测所产生的推测性目标路径 地址的分支预测单元(BPU )36,提供序列路径地址的全局完成表(GCT) 38,以及提供从预测的条件分支指令解析得到的非推测性地址的分支执 行单元(BEU) 92。载入IFAR30的有效地址根据优先级方案从所述多 个源提供的地址中选出,该过程可能考虑例如在一个给定周期内提交地 址供选择的源的相对优先级,以及任何未完成的未解析条件分支指令的 年龄。
如果在有效-真实地址翻译(ERAT) 32翻译完IFAR 30中包含的 EA并且在I-高速緩存目录34中查找所述真实地址(RA)后,命中/未 命中逻辑22确定对应于IFAR 30中所述EA的指令的高速緩存线不存在 于L1 I-高速緩存18中,那么命中/未命中逻辑22通过I-高速緩存请求总 线24将RA作为请求地址提供给L2高速緩存16。该请求地址也可以由 在L2高速緩存16内或在处理器10的其他位置的预取逻辑根据最近访 问模式产生。响应于请求地址,L2高速緩存16输出高速緩存线的指令, 其可能在通过预解码逻辑(未示出)后,通过I-高速緩存重载总线26 被载入预取緩冲器(PB ) 28和Ll I-高速緩存18。
如果IFAR 3 0中的所述EA规定的所述高速緩存线存在于L1高速緩 存18中,则Ll I-高速緩存18将所述高速緩存线输出到分支预测单元
(BPU) 36和取指令緩冲器(IFB) 40。如下文参照图2进一步所述, BPU 36扫描所述高速緩存线的指令中的分支指令并且如果有分支指令, 则预测条件分支指令的结果。在分支预测之后,BPU36如上文所述将推 测性取指令地址提供给IFAR 30,并且将所述预测传递给分支指令队列 64,以便在所述条件分支指令随后被分支执行单元92解析时确定所述预 测的准确性。
IFB 40临时地缓冲从L1 I-高速緩存18接收的所述高速缓存线的指 令,直至所述高速緩存线的指令能够被指令翻译单元(ITU) 42翻译为 止。在所示的处理器10的实施例中,ITU 42将指令从用户指令集合体 系结构(UISA)指令(例如PowerPC 指令)翻译成可能不同数量的内 部ISA (IISA)指令,IISA指令可被所述处理器的执行单元直接执行。 所述翻译可以例如参照存储在只读存储器(ROM)模板中的微码执行。 在至少一些实施例中,UISA-IISA翻译得到与UISA指令不同数量的IISA 指令和/或与相应的UISA指令不同长度的IISA指令。所得到的IISA指 令随后由全局完成表38分配给指令群组,所述群组的成员被允许不按照 彼此的顺序执行。全局完成表38通过至少一个相关联的EA追踪尚需完 成执行的每个指令群组,所述EA优选地是所述指令群组中最老的指令 的EA。
在UISA-IISA指令翻译后,指令被根据指令类型按照顺序分发给锁 存器44、 46、 48和50之一。也就是说,分支指令和其他条件寄存器(CR) 修改指令被分发给锁存器44,定点和加载-存储指令被分发给锁存器46 和48之一,并且浮点指令被分发给锁存器50。随后由CR映射器52, 链接和计数(LC)寄存器映射器54,例外寄存器(XER)映射器56, 通用寄存器(GPR)映射器58,以及浮点寄存器(FPR)映射器60中适 当的映射器在寄存器文件中为每个需要重命名寄存器用于临时地存储执 行结果的指令分配一个或多个寄存器。
被分发的指令随后临时地纟皮放置在CR发送队列(CRIQ)62、分支
发送队列(BIQ) 64、定点发送队列(FXIQ) 66和68、以及浮点发送 队列(FPIQ) 70和72中适当的队列中。指令可以随机地(即可能无序 地)从发送队列62, 64, 66, 68, 70和72 ^皮发送》会处理器10的所述执 行单元用于执行。在某些实施例中,所述指令也被保留在发送队列62-72中,直至所述指令执行完成并且如果有任何结果数据时所述结果数据 被写回为止,以防万一需要重新发送所述指令的情况发生。
如图所示,处理器10的所述执行单元包括用于执行CR修改指令的 CR单元(CRU) 90,用于执行分支指令的分支执行单元(BEU) 92, 用于执行定点指令的两个定点单元(FXU) 94和100,用于执行加载和 存储指令的两个加载-存储单元(LSU) 96和98,以及用于执行浮点指 令的两个浮点单元(FPU) 102和104。每个执行单元90 - 104优选地作
为有多个管道级的执行管道实施。
在执行单元90- 104之一内的执行过程中,如果有运算对象,指令 从连接到所述执行单元的寄存器文件内的一个或多个体系化的和/或重 命名寄存器接收运算对象。当执行CR修改指令或依赖于CR的指令时, CRU 90和BEU 92访问CR寄存器文件80,所述CR寄存器文件80在 优选的实施例中包括一个CR寄存器和多个CR重命名寄存器,所述CR 重命名寄存器分别包括多个由一位或多位构成的不同字段。这些字段中 有分别表明值(典型地是指令的结果或运算对象)是小于零,大于零还 是等于零的LT, GT和EQ字段。链接和计数寄存器(LCR)的寄存器 文件82包括计数寄存器(CTR),链接寄存器(LR)和其各自的重命名 寄存器,BEU 92也可通过所述这些寄存器解析条件分支以获得路径地 址。通用寄存器文件(GPR) 84和86是同步的相同的寄存器文件,其 存储由FXU 94和100以及LSU 96和98访问和产生的定点和整数值。 浮点寄存器文件(FPR) 88象GPR82和GPR86 —样也可以作为同步寄 存器的复制集合实施,其包括FPU 102和104执行浮点指令和LSU 96 和98执行浮点加载指令得到的浮点值。
在执行单元完成指令执行后,执行过程通知GCT38, GCT38按照 程序顺序为指令完成制定时间表。为完成CRU 90,FXU 94和100或FPU
102和104执行的指令,GCT38向适当的映射器发出信号,所述映射器 设置一个指示以表明分配给指令的所述寄存器文件的寄存器现在包含所 述寄存器的体系化状态。随后从所述发送队列移除所述指令,并且一旦 指令群组内的所有指令都已完成,即从GCT 38中移除所述指令。但其 他类型的指令以不同的方式完成。
当BEU 92解析条件分支指令并且确定应当选择的执行路径的路径 地址时,将所述路径地址与BPU 36预测的推测性的路径地址相比较。 如果所述路径地址匹配,如果需要,BPU36更新其预测装置。但是如果 计算所得的^各径地址与所述预测地址不匹配,BEU92将正确地路径地址 ^是供给IFAR30,并且BPU36按照下文进一步所述更新其预测装置。在 上述两种情况中,随后都可以从BIQ64移除所述分支指令,并且当同一 指令群组内的所有其他指令都已经完成时,从GCT 38移除所述分支指 令。
在执行加载指令后(包括加载-存储指令),通过执行所述加载指令 计算得到的有效地址被数据ERAT (未示出)翻译成真实地址并且随后 作为请求地址提供给L1 D高速緩存20。此时,所述加载操作被从FXIQ 66或68移除并且;f皮;改入加载数据队列(LDQ) 114直至所指示的加载 被执行为止。如果所述请求地址在U D高速緩存20中未命中,所述请 求地址被放入加载未命中队列(LMQ) 116,被请求的数据通过所述队 列从L2高速緩存16获取,并且如果所述获取失败,从另一个处理器 IO或从系统存储器12中获取。
类似地使用存储队列(STQ) 110完成存储指令(包括存储条件指 令),其中在执行所述存储指令后将用于存储的有效地址加载到所述存储 队列110。在对目标地址进行有效-真实翻译后,数据从STQ110存储到 Ll D高速緩存20和L2高速緩存16之一或两者中。
现在参照图2,图2是图1的分支预测单元36关于指令排序逻辑13 的其他组件的示例性实施例的更为详细的方框图。在所示的实施例中, 分支预测单元36包括指令解码器128,分支方向预测电路如分支历史表 (BHT) 130,以及分支目标地址预测电-各如分支目标地址高速緩存(BTAC) 132。在本发明的替代性实施例中,所述分支方向预测电路可 以使用静态分支预测电路或两级动态分支预测电路实施。
指令解码器128连接用于当从L1 I高速緩存18中提取每个高速緩 存线指令并放入取指令緩存器40时,接收所述每个高速緩存线指令。指 令解码器128扫描每个高速緩存线指令的分支指令并且响应于探测到分 支指令,将所述分支指令传送到所述分支方向预测电路(例如BHT130) 用于方向预测。如BHT 130和取指令緩沖器40之间的连接进一步所指 示的,在BTAC 132沿BHT 130预测为未选取的路径调用提取过程的情 况下,BHT130从取指令緩冲器40中取消不正确的路径中的指令并沿顺 序路径重定向提取过程。
如图所示,BTAC 132包括过滤緩冲器140,连接到过滤緩冲器140 的分支目标緩冲器(BTB) 150,以及连接到BTB 150的牺牲高速緩存 160。过滤緩冲器140包括多个条目142,每个所述条目包括用于存储至 少分支指令地址(BIA)标记部分的BIA字段144,用于存储分支目标 地址(BTA)的BTA字段146,以及表明所述BTA正确性的置信度的 置信(C)字段148。 BTB 150类似地包括多个条目152。在一个优选的 实施例中,BTB150的条目152数量限于相对较小的数量(例如8或16) 以使实施BTAC 132需要的片区最小化。BTB150的每个条目152包括 用于存储至少BIA标记部分的分支指令地址(BIA)字段154,用于存 储BTA的分支目标地址(BTA)字段156,以及表明反映BTA字段156 中所述BTA的历史准确性的分数的分数(S)字段158。牺牲高速緩存 160緩冲/人BTB 150驱逐的条目152的内容,牺牲高速緩存160包括多 个条目162,所述条目的格式与BTB 150的条目152的格式类似,并且 包括BIA字段164, BTA字段166以及分数字段168。
在操作中,过滤緩冲器140捕获并緩存"候选"分支目标预测用于 可能地包含到BTB 150中。如果所述候选分支预测的准确性的置信度足 够高,如相关联的置信字段148所指示的,则所述条目被从过滤緩沖器 140传输到BTB 150用于随后在作出分支目标地址预测时使用。如上文 所述,BTB 150只有有限数量的条目152。相应地,随着新条目152进 入BTB150,其他条目152从BTB 150中被驱逐并且放到牺牲高速緩存 160中作为牺牲高速緩存条目162。牺牲高速緩存条目162可以例如响应 于所述牺牲高速緩存条目162的再次使用而回到BTB 150,或者当4皮后 续被驱逐的BTB条目152替代时被丟弃。图3和图4A-4C示出BTAC 132 工作的更多细节。
现在看图3,图3示出了根据本发明BTAC 132产生取指令地址的 示例性方法的高级逻辑流程图。图示过程始于方框300并且随后进入方 框302,其示出了随着取指令地址从IFAR30被传输到LI I高速緩存18 以发起取指令,BTAC 132接收所述取指令地址。响应于接收所述取指 令地址,BTAC 132 (可能并行地)询问BTB 150和牺牲高速緩存160 以确定所述取指令地址是否在BTB 150和牺牲高速緩存160中命中,也 就是说,是否所述取指令地址与条目152, 162的字段154, 164所包含 的任何BIA (或其标记部分)匹配(方框304和306)。如果不匹配,过 程进入下述方框308。然而,响应于在方框304或方框306确定所述取 指令地址在BTB 150或牺牲高速緩存160中命中,在某些实施例中过程 进入下述方框310,并且在替代性实施例中进入可选的方框307。
方框307示出了确定所述匹配条目152或162的分数字段158是否 超过预定的阈值(例如1 ),该阈值决定了是否所述匹配条目中的所述分 支目标地址预测的准确性足够高,可以保证其用于重定向取指令。可以 理解,可以对BTB 150和160应用不同的预测阈值。响应于方框307作 出否定的确定,所述过程进入下述方框308。然而,如果BTAC 132在 方框307确定所述匹配条目152的分数字段158指示的分数超过了所述 预测的阈值,过程进入方框310,其中BTAC 132将所述BTA从所述匹 配条目152, 162的BTA字段156, 166提供给IFAR 30以沿着与所述 BIA相关联的选取路径发起提取过程。
现在参照方框308,响应于方框304或306的否定的确定或响应于 可选的方框307的否定的确定,IFAR 30选4奪下一个指令高速緩存线的 序列地址作为下一个取指令地址,如方框308所示。在方框308或方框 310后,图3示出的过程终止直至BTAC 132接收到下一个取指令地址 为止。
参照图4A-4C,图4A-4C共同示出了根据本发明更新BTAC 132 中的分支目标地址预测的示例性方法的高级逻辑流程图。所述过程开始 于图4A的方框400并且随后进入方框402,其中BTAC 132从BEU 92 接收BIA标记以及被执行的分支指令的BTA。响应于接收到所述BIA 标记和BTA,如方框404和方框420所示,BTAC 132(可能并行地) 询问BTB 150和牺牲高速緩存160以确定是否所述BIA标记在BTB 150 或牺牲高速緩存160中命中,也就是说,是否所述BIA标记与条目152, 162的字段154, 164中包含的任何BIA (或其标记部分)匹配。响应于 方框404确定BEU 92所提供的所述BIA标记在BIB 150的条目152中 命中,BTAC 132在方框406进一步确定是否所述匹配条目152的BTA 字段156规定的BTA与BEU 92返回的BTA匹配。如果匹配,如方框 408所示,BTAC 132提高所述匹配条目152的分数字段158所指示的分 数,以表明所述匹配条目152所包含的分支目标地址预测正确的确定性 提高。例如,在分数字段158作为饱和2位计数器实施的示例性实施例 中,如果分数字段158小于最大值3,则所述分数字段158增加1。此后 所述过程在方框426结束。
回到方框406,响应于确定所述匹配条目152的BTA字段156*见定 的BTA与BEU 92返回的BTA不匹配,如方框410所示,降低所述匹 配条目152的分数字段158所指示的分数,以表明所述匹配条目152所 包含的分支目标地址预测正确的确定性降低。例如,在分数字段158作 为饱和2位计数器实施的示例性实施例中,如果分数字段158的值大于 最小值0,则所述分数字段158减1。替代地,无论所述分数字段158 当前的值是多少,可以简单地将所述分数字段158的值减为最小值0。 并且,分数字段158还可以根据BEU 92所报告的所述分支的方向减不 同的量。
方框412示出了,在方框410降低所述分数后,BTAC 132确定是 否所述分数字段158所指示的分数降至低于为BTB 150预定的最小阈 值。如果否,所述过程在方框426结束。然而,如果所述分数字段158
所指示的分数已经降至低于预定的最小阈值,在方框414, BTAC132检 查是否BEU 92报告所述分支已经被选取。如果所述分支未被选取,如 方框416所示,BTAC 132从BTB 150移除条目152,并且所述过程在 方框426结束。如果BTAC 132在方框414确定BEU 92 ^^告所述分支 被选取,则BTAC 132使用正确的BTA更新所述条目152的BTA字段 156。然后过程在方框426处结束。
再回到方框420,响应于确定BEU 92所提供的所述BIA标记在牺 牲高速緩存160的条目162中命中,所述过程进入方框424,其描述了 BTAC 132更新牺牲高速緩存160,如下文参照图4C进一步描述那样。 然而,如果BTAC 132在方框420确定BEU 92所提供的所述BIA标记 在BTB 150和牺牲高速緩存160中都未命中,如下文参照图4B更为详 细的描述那样,BTAC 132在方框422更新过滤緩冲器140。在方框422 或方框424后,所述过程在方框426结束。
现在参照图4B,图4B更为详细地示出了图4A的方冲匡424更新牺 牲高速緩存160的过程。响应于在图4A的方框420中确定BEU 92所提 供的所述BIA标记在牺牲高速緩存160的条目162中命中,图4B所示 的过程开始于方框430。所述过程随后进入方框432, BTAC132确定所 述匹配条目162的BTA字段166所规定的BTA是否与BEU 92所返回 的BTA匹配。如果否,意味着所述匹配条目162所包含的分支目标地址 预测不正确,BTAC 132从牺牲高速緩存160中移除所述匹配条目162。 随后所述过程在方框446结束。
回到方框432,响应于确定所述匹配条目162的BTA字段166所规 定的BTA与BEU 92所返回的BTA匹配,BTAC 132在方框436提高所 述匹配条目162的分数字段168所指示的分数。例如,在分数字段168 作为饱和2位计数器实施的示例性实施例中,如果分数字段168小于最 大值3,则所述分数字段168增加1。增加的分数表明所述匹配条目162 所包含的分支目标地址预测正确的确定性提高。在方框436之后,BTAC 132在方框440确定是否所述分数字段168所指示的分数高于应用于牺 牲高速緩存160的升级阈值,例如,BTB 150中的任何分数字段158当
前所指示的最低分数。响应于方框440做出否定的确定,所述进程简单 地在方框446结束。另一方面,如果所述匹配条目162的分数字段168 所指示的分数高于所述升级阈值,所述过程进入方框442。
在方框442, BTAC 132在BTB 150中选择要驱逐的条目152。在一 个示例性实施例中,BTB150中的所述条目152从使用预定的替换算法 如最近最少使用(LRU)或轮转法标记为要替换(通过分数字段158或 其他方式)的条目152中选4奪。在利用分数将条目152标记为可用于替 换的实施例中,所述替换算法优选地首先从当前分数最低的条目152的 子集中选择,或者如果所述子集为空,从有较高分数值的条目152的更 为广泛的集合中选择。在方框442之后,BTAC 132随后在方框444用 牺牲高速緩存160中的所述匹配条目162调换BTB 150中被选中的条目 152。在这种情况下,所述分支目标地址预测的确定性足够高,使其可以 存储在BTB 150中。在方框444后,所述过程在方框446结束。
现在参照图4C,图4C更为详细地示出了图4A的方框422所述的 更新过滤緩冲器140的过程。响应于图4A的方框420确定BEU 92所提 供的BIA标记在BTB 150和牺牲高速緩存160中均未命中,图4C所示 的过程开始于方框450。随后所述过程进入方框452, BTAC132确定是 否从BEU 92接收的所述BIA标记在过滤緩沖器140中命中,也就是说, 是否所述BIA标记与条目142的字段144所包含的任何BIA (或其标记 部分)匹配。如果否,BTAC 132在方框454进一步确定是否BEU92报 告所述分支被选取。如果是,BTAC 132在过滤緩冲器140中分配一个 新条目并且用BEU92提供的所述BIA标记和BTA填充所述新条目142。 可以理解,方框456的分配新条目142可能涉及丟弃现有条目,可以利 用例如LRU或轮转替换算法选择所述丢弃的条目。在方框456之后或方 框454做出否定的确定后,所述过程在方框474结束。
回到方框452,响应于确定BEU 92提供的所述BIA标记在过滤緩 沖器140的条目142中命中,BTAC 132在方框460进一步确定是否所 述匹配条目142的BTA字段146所规定的BTA与BEU 92返回的BTA 匹配。如果否,BTAC 132在方框461检查BEU 92所报告的所述分支的
处理情况(即选取或未选取)。如果所述分支被选取,BTAC 132用BEU 92提供的所述BTA更新BTA字段146并且重置置信度字段148。例如, 在置信度字段作为饱和2位计数器实施的示例性实施例中,置信度字段 148被重置为0。此后所述过程在方框474结束。如果BTAC 132在方框 461确定BEU 92报告所述分支为未被选取,BTAC 132从过滤緩沖器140 中移除所述条目142(方框463 ),并且所述过程在方框474结束。
然而如果BTAC 132在方框460确定所述匹配条目142的BTA字賴: 146所规定的BTA与BEU 92返回的BTA匹配,BTAC 132在方框464 提高所述匹配条目142的置信度字段148所指示的值,以表明所述匹配 条目142所包含的分支目标地址预测正确的置信度提高。例如,在置信 度字段148作为饱和2位计数器实施的示例性实施例中,如果置信度字 段148小于最大值3,则所述置信度字段148增加1。
在方框464之后,BTAC 132在方框466确定置信度字段148所指 示的值是否超过应用于过滤緩冲器140的升级阈值(例如2 )。如果否, 所述过程在方框474结束。另一方面,如果所述匹配条目142的置信度 字段148所指示的值超过所述升级阈值,所述过程进入方框470。在方 框470, BTAC 132选择BTB 150的条目152以及牺牲高速緩存160中 要驱逐的条目162,并且用BTB 150中所选择的条目152替换在牺牲高 速緩存160中所述选择的条目162 。在一个示例性实施例中,BTB 150 中的所述条目152从使用预定的替换算法如LRU或轮转法标记为要替换 (由分数字段158或其他方式)的条目152中选择。类似地,可以利用 LRU或轮转替换算法选择牺牲高速緩存160中要驱逐的条目162。随后 在方框472, BTAC 132将过滤緩冲器140中的所述匹配条目142传送到 BTB 150的空槽位并且初始化其分数字段158。在这种情况下,所述分 支目标地址预测准确性的置信度足够高,使其可以存储在BTB 150中并 且使用所述分支目标地址预测产生未来取指令地址。
根据本发明至少一部分实施例,在方框472, BTAC 132对BTB 150 的条目152的分数字段158的初始化的分数根据相关联的分支指令类型 而不同,在这样的实施例中由BEU 92向BTAC 132指示所述类型。例
如,在上述分数字段148作为饱和2位计数器实施的示例性实施例中, BTAC 132可以将具有固定分支目标地址的非条件分支的分数字段158 初始化为值3,将具有固定分支目标地址的条件分支的分数字段158初 始化为值2,将具有可变分支目标地址的非条件分支的分数字段158初 始化为值1,将具有可变分支目标地址的条件分支的分数字段158初始 化为值0。在本发明的其他实施例中,每个新条目152的分数字段158 可以简单地初始化为0。在另一些实施例中,每个新条目152的分^t字 段158可以初始化为被用于填充BTB 150的过滤緩冲器140的条目142 的置信度字^L 148的值。在方框472后,图4C所示的过程在方框474 结束。
如上文所述,本发明提供了使用改进的分支目标地址高速緩存 (BTAC)产生分支目标地址预测的数据处理系统,处理器和数据处理 方法。根据本发明,在BTAC中将过滤緩冲器或牺牲高速緩存之一或两 者与分支目标緩沖器(BTB)联合使用。所述牺牲高速緩存减少了为了
所述过滤緩冲器减少了很少选取的分支的分支目标地址预测对BTB的 污染。BTB中的每个条目优选地有相关联的分数表明所述条目提供的分 支目标地址预测的准确性。在选择从BTB中驱逐的条目时可以有利地考 虑所述分数。
尽管特别地参照一个优选实施例描述了本发明,然而本领域的普通 技术人员可以理解,在不背离本发明主旨和范围的情况下可以在形式和 细节方面对本发明做出各种修改。
权利要求
1.一种处理器,包括至少一个执行指令的执行单元;以及连接到所述至少一个执行单元的指令排序逻辑,其从存储器系统取指令以供所述至少一个执行单元执行,所述指令排序逻辑包括输出预测的分支目标地址以作为取指令地址使用的分支目标地址高速缓存,所述分支目标地址高速缓存包括包含多个条目的分支目标缓冲器,每个所述条目将分支指令地址的至少一部分与预测的分支目标地址相关联,其中所述分支目标地址高速缓存使用所述分支指令地址的至少一部分访问所述分支目标缓冲器,以获取预测的分支目标地址作为取指令地址使用;以及连接到所述分支目标缓冲器的过滤缓冲器,其缓冲一个或多个候选分支目标地址预测,用于可能包括到所述分支目标缓冲器中,所述过滤缓冲器将各个表明预测准确性的置信度指示与每个所述候选分支目标地址预测相关联,其中所述分支目标地址高速缓存根据候选分支目标地址预测各自的置信度指示将所述候选分支目标地址预测从所述过滤缓冲器推进到所述分支目标缓冲器。
2. 根据权利要求l的处理器,其中所述分支目标緩沖器中的每个条目都有各自相关联的分数;并且 所述分支目标地址高速緩存根据所述多个条目各自的分数将替代 策略应用到所述多个条目。
3. 根据权利要求l的处理器,其中所述分支目标緩沖器中的每个条目都有各自相关联的分数;并且 所述分支目标地址高速緩存根据由包含在所述多个条目中的一个条目中的所述分支指令地址的至少一部分确定的分支指令类型,将该条目的分数初始化为多个可能分数中的一个。
4. 根据权利要求3的处理器,其中所述分支指令类型是包括条件 分支指令和非条件分支指令的集合中的 一种。
5. 根据权利要求3的处理器,其中所述分支指令类型是包括具有 固定分支目标地址的分支指令和具有可变分支目标地址的分支指令的 集合中的一种。
6. 根据权利要求l的处理器,其中所述分支目标緩冲器中的每个条目都有各自相关联的分数;并且 响应于接收到前一个取指令地址,所述指令排序逻辑使用所述前一个取指令地址访问所述分支目标緩沖器,并且如果在所述分支目标緩冲 器中发现匹配条目,只有当所述匹配条目的分数足够时,才使用所述匹 配条目的预测的分支目标地址作为下一个取指令地址。
7. 根据权利要求l的处理器,其中 所述至少一个执行单元包括执行分支指令的分支执行单元; 所述分支执行单元向所述指令排序逻辑报告被执行的分支指令的结果;并且所述分支目标地址高速緩存根据所述报告的被执行的分支指令的 结果在所述过滤緩冲器中增加新的候选分支目标地址预测。
8. 根据权利要求1的处理器,所述分支目标地址高速緩存进一步 包括连接到所述分支目标緩沖器的牺牲高速緩存,其中所述牺牲高速緩 存接收并緩存从所述分支目标緩沖器驱逐出的条目。
9. 根据权利要求8的处理器,其中所述分支目标緩冲器中的每个条目都有各自相关联的分数; 所述牺牲高速緩存中的每个条目都有各自相关联的分数;并且 如果所述牺牲高速緩存中的条目关联的分数好于所述分支目标緩 冲器中多个条目之一关联的分数,则所述分支目标地址高速緩存将所述 牺牲高速緩存中的所述条目传输回所述分支目标緩冲器。
10. 根据权利要求l的处理器,其中 所述存储器系统包括高速緩冲存储器; 所述处理器包括所述高速緩冲存储器;并且 所述指令排序逻辑使用取指令地址并发地访问所述分支目标地址高速緩存和所述高速緩冲存储器。
11. 一种数据处理系统,包括 根据权利要求1的处理器; 连接到所述处理器的互连;以及 连接到所述互连的存储器系统。
12. —种在处理器中进行数据处理的方法,所述处理器包括至少一 个执行单元和包含分支目标地址高速緩存的指令排序逻辑,所述分支目 标地址高速緩存包括分支目标緩沖器和连接到所述分支目标緩沖器的 过滤緩沖器,所述方法包括在所述分支目标緩冲器中緩冲多个条目,每个所述条目将分支指令 地址的至少一部分与预测的分支目标地址相关联;使用分支指令地址的至少一部分访问所述分支目标緩冲器以获取统作为取指令地址;在所述过滤緩沖器中緩冲一个或多个候选分支目标地址预测,用于 可能包含到所述分支目标緩冲器中,所述过滤緩冲器将各个表明预测准 确性的置信度指示与每个所述候选分支目标地址预测相关联;并且根据候选分支目标地址预测各自的置信度指示将所述候选分支目 标地址预测从所述过滤緩冲器推进到所述分支目标緩沖器。
13. 根据权利要求12的方法,其中所述分支目标緩沖器中的每个条目都有各自相关联的分数;并且 所述方法进一步包括根据所述多个条目各自的分数将替代策略应 用到所述多个条目。
14. 根据权利要求12的方法,其中所述分支目标緩沖器中的每个条目都有各自相关联的分数;并且 所述方法进一步包括根据由包含在所述多个条目中的一个条目中的所述分支指令地址的至少一部分确定的分支指令类型,将该条目的分数初始化为多个可能分数中的一个。
15. 根据权利要求14的方法,其中所述分支指令类型是包括条件 分支指令和非条件分支指令的集合中的一种。
16. 根据权利要求14的方法,其中所述分支指令类型是包括具有 固定分支目标地址的分支指令和具有可变分支目标地址的分支指令的 集合中的一种。
17. 根据权利要求12的方法,其中所述方法进一步包括响应于接收到前一个取指令地址,所述指令排序逻辑使用所述 前一个取指令地址访问所述分支目标緩冲器并且如果在所述分支目标緩冲器中发现匹配条目,只有当所述匹配 条目的分数足够时,才使用所述匹配条目的预测的分支目标地址作为下 一个耳又指令地址。
18. 根据权利要求12的方法,其中 所述至少一个执行单元包括执行分支指令的分支执行单元; 所述方法进一步包括所述分支执行单元向所述指令排序逻辑报告被执行的分支指 令的结果;并且所述分支目标地址高速緩存根据所述报告的被执行的分支指 令的结果在所述过滤緩冲器中增加新的候选分支目标地址预测。
19. 根据权利要求12的方法,其中所述分支目标地址高速緩存进一步包括连接到所述分支目标緩冲 器的牺牲高速緩存,并且所述方法进一步包括牺牲高速緩存接收并緩存从所述分支目标緩 沖器驱逐出的条目。
20. 根据权利要求19的方法,其中所述分支目标緩冲器中的每个条目都有各自相关联的分数; 所述牺牲高速緩存中的每个条目都有各自相关联的分数;并且 所述方法进一步包括如果所述牺牲高速緩存中的条目相关联的分数好于所述分支 目标緩冲器中多个条目之一相关联的分数,则所述分支目标地址高速緩存将所述牺牲高速緩存中的所述条目传输回所述分支目标緩冲器。
21.根据权利要求l的处理器,其中 所述存储器系统包括高速緩沖存储器;所述方法进一步包括使用所述取指令地址并发地访问所述分支目 标地址高速緩存和所述高速緩沖存储器。
全文摘要
本发明公开了一种数据处理系统、处理器和进行数据处理的方法。该处理器包括执行单元和指令排序逻辑。指令排序逻辑包括具有分支目标缓冲器的分支目标地址高速缓存,分支目标缓冲器包含多个条目,每个条目将分支指令地址的至少一部分与预测的分支目标地址相关联。分支目标地址高速缓存使用分支指令地址访问分支目标缓冲器,以获取预测的分支目标地址作为取指令地址使用。分支目标地址高速缓存也包括缓冲一个或多个候选分支目标地址预测的过滤缓冲器。过滤缓冲器将各个表明预测准确性的置信度指示与每个候选分支目标地址预测相关联。分支目标地址高速缓存根据候选分支目标地址预测各自的置信度指示将其从过滤缓冲器推进到分支目标缓冲器。
文档编号G06F9/38GK101187863SQ200710192759
公开日2008年5月28日 申请日期2007年11月16日 优先权日2006年11月17日
发明者B·辛哈罗伊, D·R·洛根, J·P·布拉德福德, R·J·艾克迈耶, R·W·多英格, W·E·斯佩特, W·R·艾-埃萨怀, 张立新 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1