用于实现多态分支预测器的方法和装置的制作方法

文档序号:6454551阅读:378来源:国知局
专利名称:用于实现多态分支预测器的方法和装置的制作方法
技术领域
本发明总体上涉及微处理器中分支指令的处理,并且更具体地, 涉及用于实现多态分支预测器的方法和装置。
背景技术
现代处理器通过应用预测技术来解决流水线分裂事件(诸如分支 操作)以此来实现性能。根据现有技术,已经提出了多种分支处理技 术。分支预测器是处理器的一部分,其确定程序指令流中的条件分支 是否有可能发生。这称为分支预测。在当今的现代超标量处理器中, 分支预测器对于实现高性能至关重要。分支预测器允许处理器取回并 执行指令,而无需等待求解分支。
早期的RISC架构实现进行普通的分支预测例如,该架构总是 预测分支(或者无条件跳转)将不会发生,因此其总是取回接下来的 连续指令。取指指针仅在对分支或者跳转进行评估时被设置为非连续 地址。这些CPU在译码阶段评估分支,并且具有单周期的取指。因 此,分支目标循环的长度是两个周期,并且机器将总是取回紧随任意 发生分支之后的指令。 一些架构定义了分支延迟槽,以使用这些取回 的指令。
实现"静态预测"的处理器预测向后指向的分支将发生(假设 该向后分支在程序循环的底部),而向前指向的分支将不会发生(假 设其较早退出了循环或者其他处理代码)。对于执行多次的循环而言, 这仅仅错误预测了循环的最后分支。在多数具有动态分支预测的处理 器中,静态预测被用作回退(fall-back)技术(当没有任何信息可供 动态预测器使用时)。
一些超标量处理器利用指令的每一行取回指向下一行的指针。该
5下 一行预测器不能直接与在此列出的其他预测器进行比较,因为该下 一行预测器处理分支目标预测以及分支方向预测。当下一行预测器指
向对齐的2、 4或8个指令的群组时,分支目标通常将不是被取回的 第一指令,并且因此浪费了取回的初始指令。为了筒化,假设分支目 标的均匀分布,分别丢弃取回的0.5、 1.5和3.5指令。
由于分支本身通常将不是对齐群组的最后指令,因此将丟弃发生 的分支(或者其延迟槽)之后的指令。再次,假设分支指令的放置均 匀分布,丟弃取回的0.5、 1.5、 3.5指令。即使对于单周期下一行预测 器而言,在分支处丟弃的指令和目的行总计也几乎是整个取指周期。
双峰分支预测器具有2位饱和计数器的表,由指令地址的最低有 效位索引。不同于指令緩存,双峰预测器条目通常不具有标签,并因 此可以将特定的计数器映射至不同的分支指令(这称为分支干扰或者 分支混淆),在这种情况下,有可能不太准确。每个计数器具有以下 四个状态之一l)强不发生,2)弱不发生,3)弱发生,以及4)强 发生。
在评估分支时,更新相应的计数器。被评估为不发生的分支朝着 "强不发生"降低状态,而被预测为发生的分支朝着"强发生"提升 状态。该2位饱和计数器方案的主要好处在于循环封闭分支总是被 预测发生。1位方案对于循环的第一分支和最后分支二者都会错误预 测。2位方案仅会错误预测最后分支。类似地,对于几乎总是沿一个 方向执行的严重偏向的分支,1位方案对于每个奇数分支会错误预测 两次,而2位方案错误预测一次。
由于双峰计数器的表是通过指令地址位来索引的,因此超标量处 理器可以将该表划分为用于每个取回指令的独立SRAM,并且与取指 令并行地取回对于每个指令的预测,从而使分支预测在对分支译码之 后立即可用。除了 2位预测器,基于使用n位的预测器的各种类似的 饱和计数器也是可能的。
双峰分支预测错误预测每个循环的退出。对于倾向于每次具有相 同循环次数的循环而言(以及对于具有重复行为的很多其他分支而言), 一些预测器可以做得更好。局部分支预测器保持两个表。第一 表是局部分支历史表。该表由分支指令的地址的低顺序位索引,并且
记录该分支的n次最近执行的发生/不发生历史。另一表是模式历史 表。此表包括实际的预测器;然而,其索引根据第一表中的分支历史 生成。为了预测分支,查询分支历史,并且继而使用该历史来查询预 测器以进行预测。该方法可以使用l位预测器,或者n位预测器(诸 如双峰预测器)。
局部预测比双峰预测慢,因为对于每次预测,局部预测需要两个 连续的表查询。快速实现将针对每个取回的指令使用独立的双峰计数 器阵列,从而使第二阵列访问可以与取指令并行地进行。这些阵列不 是冗余的,因为每个计数器意在存储单个分支的行为。全局分支预测 器利用很多分支的行为都与其他最近发生的分支强相关这一事实。在 一种实现中,预测器可以保持通过每个执行分支的最近历史来更新的 单个移位寄存器,并且使用该值来索引到预测器(例如,l位预测器 或者双峰计数器预测器)的表。
gselect预测器利用与分支指令地址的几个位级联的最近历史来 索引预测器的表。对于较小的表,gselect比局部预测做得更好;而对 于大于1KB的表存储,局部预测仅仅略好。另一实现通过对分支指 令地址和全局历史进行异或(XOR)而不是级联,从而提供了更好的 预测准确性,其代价是用更昂贵的异或取代筒单的级联。该预测器被 称为gshare,对于大于256字节的表而言,其略好于gselect。
gselect和gshare比局部预测更容易加快,因为它们每个分支需要 单次表查询。对于双峰预测,可以对表进行划分,使得可以对每个取 回的指令进行并行查询,从而可以与指令装载并行地进行表查询。 Scott McFarling在"Combining Branch Predictors", WRL Technical Note 36, 1993中提出了合并分支预测。在本说明书下文中将这种合并预测 器称为多组件预测器。合并分支预测大约与局部预测一样准确,并且 与全局预测一样快速。
合并分支预测并行地使用三个预测器(例如,局部双峰预测器、gshare预测器和类双峰预测器),以在逐个分支的基础上挑选使用双 峰或者gshare预测器中哪一个。选择预测器可以是用于选择要使用的 预测的1位预测器或者饱和n位计数器。在这种情况下,每当双峰和 gshare预测不一致时就更新计数器,以选定要选择哪个结果。另 一种 合并分支预测器的方法是具有例如3个不同的分支预测器,并且通过 多数表决来合并其结果。类似于gshare的预测器使用多个表条目来跟 踪任意特定分支的行为。条目的增多使得两个分支将有更大的可能映 射至相同的表条目(这种情况称为混淆),这继而使得预测准确性更 有可能受到那些分支的影响。只要采用了多个预测器,则这样布置是 有利的每个预测器具有不同的混淆模式,从而更有可能使至少一个 预测器将没有混淆。对于不同预测器具有不同索引功能的合并预测器 称为gskew预测器,并且其类似于用于数据和指令緩存的偏斜
(skewed)緩存器。
降低模式历史表中的破坏性混淆的另 一种技术是一致预测器。一 种方法被用来建立针对分支的相对静态预测,可能是双峰预测器或者 分支指令中的提示位。另一预测器(例如,gskew预测器)进行预测, 但是不是预测发生/不发生,该预测器预测与基本预测的一致/不一致。 其意图在于如果gskew预测器覆盖的分支倾向于偏向一个方向l位
(可能是70%/30%),则可以对齐所有那些偏向,使得gskew模式历 史表将倾向于具有多于不一致条目的一致条目。这降低了两个混淆分 支将最好具有预测历史表(PHT)中相对值的可能性。
一致预测器与合并预测器一起工作得很好,因为合并预测器通常 具有可以用作 一 致预测器基础的预测器。 一 致预测器与不偏向 一 个方 向的分支一起工作得不是太好,如果一起工作,这使得基础预测器给 出改变的预测。所以, 一致预测器作为三预测器方案的一部分可以最 好地工作,该三预测器方案中一个是一致预测器、另一个是非一致型 预测器。
几乎所有的流水线处理器都进行某种形式的分支预测,因为其必 须猜测下一指令的地址,以便在当前指令执行完之前取回下一指令。设计分支预测技术的关键参数是分支预测条目的数目以及分支预测
算法(诸如,l位预测器或者饱和n位预测器)。这些决策必须适用 于针对局部预测器或者全局预测器的各种分支预观'J方法。
尽管现有技术已经允许合并各种预测器,但是对于微处理器设计 者而言,关键的决策是选择分支预测算法。根据现有技术,利用固定 的k位的存储器分配,设计者能够实现使每个预测表具有k个1位预 测器、或者k/2个双峰预测器,或者更一般地,具有n位计数器的k/n 个预测器。这代表了一种权衡是提供通过每次预测使用较多的位而 允许单个预测的质量改进的预测器,还是提供构造较简单的预测器。
在另一权衡中,设计者有可能选择较长延迟的局部预测器,或者短延 迟的双峰预测器或1位预测器。
最佳预测质量取决于各种因素,诸如负载特定的属性,其对于不 同的程序或者在程序之间是不同的。因此,尽管现有技术已经允许合
优化预测。相反,结构(诸如竟赛预测器)、全局或局部预测的使用 以及1位预测器或者双峰预测器的选择必须在设计时确定,这需要实 现者一次性选择特定的配置并且该配置将用于所有应用。
尽管预测器设计已经允许良好的平均性能,但是现有技术无法针 对特定应用来优化预测器。

发明内容
应用运行时将所述多态分支预测器配置为针对特定应用而选择至少 一个结构或者算法。
一种多态分支预测器和方法,包括多个分支预测方法。可以选择 性地启用该方法来执行分支预测。将选择机制配置为根据动态设置而 选择一个或多个分支预测方法,以便根据当前任务在操作期间优化分 支预测器的性能。
一种多态分支预测器,包括多个分支预测方法,每个方法能够被选择性地启用以执行分支预测。将选择机制配置为根据动态设置来选 择 一 个或多个分支预测方法,以便根据当前任务在操作期间优化分支 预测器的性能。
在备选实施方式中,多态分支预测器设置可以包括性能量度。可 以将选择机制配置为选择至少两个分支预测方法,以便一起工作来提 供结果。选择机制可以事先指派或者根据对运行时行为的分析来选择 一个或多个分支预测方法以用于特定的应用或者应用集。
在另一实施方式中,可以将选拷^几制配置为v^人编i奪器和运行时组 件之一接收信息,以选择一个或多个分支预测方法。可以将选择机制 配置为在应用的运行期间进行更新,或者将其配置为根据来自逻辑功 能、地址位、线程指示器和若干地址位或线程位的散列的至少一个输 出来进行更新。
该多态分支预测器还可以包括预测器条目的阵列,其中,存储在 阵列中的预测器条目针对信息位数、逐位写使能信号或者多位写使能 信号而被配置,以允许对阵列的写操作。
每个分支预测方法可以包括逻辑元素,使得逻辑元素在分支预测 方法之间共享,以提高效率。在分支预测方法之间共享的逻辑元素可 以包括阵列、预测器更新逻辑以及地址生成逻辑中的至少一个。多态 分支预测器可以包括预测器条目的阵列以及分支信息队列,其中,使 用来自分支信息队列的信息来预先重写从阵列读取的信息。多态分支 预测器可以包括寻址逻辑,其被配置为在统一表和多组件预测器的表 之间共享。可以提供预测器条目的多组件阵列,其中,通过地址位或 者通过地址散列来选择预测器条目,以选择多组件阵列之一。
一种用于动态选择分支预测方法的方法,包括提供多个可动态 配置的分支预测方法;根据动态配置来选择一个或多个分支预测方 法,以便根据当前任务在操作期间优化分支预测器的性能;以及更新 该一个或多个分支预测方法的配置,以提供改进的预测结果。
当结合附图阅读下文对示范性实施方式的详细描述时,这些以及 其他目的、特征和优点将变得显而易见。


本公开将在下文描述中参考附图提供优选实施方式的细节,其

图1示出了可以根据本发明而采用的包括分支预测器的示例性流 水线框图2A和图2B分别示出了 1位预测器状态和双峰预测器状态; 图3示出了示范性竟赛预测器;
图4示出了根据示范性实施方式的对具有带有分支信息队列的1 位和双峰预测器的多态预测器的读访问;
图5A示出了根据示范性实施方式的使用能够写更新单个存储位 的存储器阵列来更新多态1位/双峰预测器的实现;
图5B示出了根据示范性实施方式的使用能够通过双位来写更新 条目的存储器阵列来更新多态1位/双峰预测器的实现;
图6是根据示范性实施方式的用于共享预测器以便进行1位和n 位预测的电路的示意图7A是示出了根据示范性实施方式的用于可配置为实现单个统 一大小预测器或者竟赛预测器的多态分支预测器的读路径的示意图7B是示出了根据示范性实施方式的用于可配置为实现单个统 一大小预测器或者竟赛预测器的多态分支预测器的另一读路径的示 意图8是示出了根据另一示范性实施方式的用于可被配置为竟赛或 者统 一 阵列的示范性多态预测器的写更新路径的示意图9是示出了根据示范性实施方式的用于竟赛/非竟赛分支预测 的更新逻辑共享的示意图10A是示出了根据示范性实施方式的生成配置代码以配置分 支预测的编译器的框图/流程图10B是示出了根据另一示范性实施方式的例如使用连续剖析 (profiling)优化来动态地选择分支预测方法的框图/流程图;以及图11是示出了根据示范性实施方式的操作系统(OS)调度(或 者管理器划分调度)的框图/流程图。
具体实施例方式
本发明的实施方式涉及实现多态分支预测器,以及通过软件来使 用和选择它们。本发明实施方式的形式可以采取全硬件实施方式、全 软件实施方式或者包含硬件和软件元件二者的实施方式。在优选实施 方式中,将多态预测器实现为集成电路。配置选择可以通过软件来实
现,包括但不限于微代码、固件、驻留软件、管理器、操作系统、 系统工具、应用程序等。
此外,本发明可以采取计算机程序产品的形式,其可从计算机可 用或者计算机可读介质进行访问,所述介质提供程序代码以供计算机 或者任何指令执行系统使用或者与之结合使用。出于本说明书的目 的,计算机可用或者计算机可读介质可以是能够包括、存储、通信、 传播或者传输程序以供指令执行系统、装置或设备使用或者与之结合 使用的任何装置。介质可以是电、磁、光、电磁、红外或者半导体系 统(或者装置或设备)或者传播介质。计算机可读介质的示例包括半 导体或者固态存储器、磁带、可移动计算机盘片、随机访问存储器 (RAM)、只读存i者器(ROM)、硬乂磁盘和光盘。光盘的当前示例 包括压缩盘-只读存储器(CD-ROM)、压缩盘-读/写(CD-R/W)和 DVD。
适于存储和/或执行程序代码的数据处理系统可以包括至少 一 个 处理器,其直接或者通过系统总线间接耦合至存储器元件。存储器元
量存储器以及緩存存储器,其中緩存存储器提供至少 一些程序代码的 临时存储,以便减少在执行期间从大容量存储器获取代码的次数。输 入/输出或称1/0设备(包括但不限于键盘、显示器、指示设备等)可 以直接或者通过中介I/O控制器而间接耦合至系统。
网络适配器也可以耦合至系统,以使得数据处理系统能够通过中介专有网络或公共网络而耦合至其他数据处理系统或者远程打印机 或者存储设备。调制解调器、缆线调制解调器以及以太网卡仅仅是目 前可用的网络适配器类型的几个例子。
此处描述的多态分支预测器可以是针对集成电路芯片的设计的 一部分。芯片设计可以通过图形化计算机编程语言来创建,并且存储 在计算机存储介质中(诸如盘片、带、物理硬盘驱动,或者诸如存储 访问网络中的虚拟硬盘驱动)。如果设计者没有制造芯片或者用以制 造芯片的光刻掩模,则设计者直接或者间接的通过物理手段(例如, 通过提供存储有设计的存储介质副本)或者以电子形式(例如,通过 互联网)将结果设计发送给这样的实体。继而将所存储的设计转换为
适当的格式(例如,GDSII)以用于光刻掩模的制造,其通常包括所 考虑的将要形成在晶片上的芯片设计的多个副本。使用光刻掩模来定 义将要蚀刻或者处理的晶片的区域(和/或其上的层)。
制造商可以采用未加工晶片(也即,作为具有多个未封装芯片的 单个晶片)的形式、作为棵片或者以封装形式来分发作为结果的集成 电路芯片。在后一种情况中,晶片被安装在单片封装(诸如塑料载体, 其具有附着于主板或者其他更高级別的载体的导线)或者多片封装 (诸如陶瓷载体,其具有表面互连或嵌入互连或者二者)中。在任意 情况下,芯片继而与其他芯片、离散电路元件和/或其他信号处理设备 集成,作为(a)中间产品(例如主板)或者(b)最终产品的部分。 最终产品可以是包括集成电路芯片的任意产品,从玩具和其他低端最 终应用到具有显示器、键盘或其他输入设备以及中央处理器的高级计 算机产品。
现在参考附图,其中相同的数字表示相同或者类似的元件,首先 参考图i,其范例化地示出了根据实现本发明的处理器的、可以使用
分支预测的示例性高性能微处理器流水线10。使用取指逻辑IF从指 令緩存IC取回指令。指令由分支预测逻辑BP处理,并且被传递给译 码逻辑D0、 Dl、 D2、 D3。如果遇到预测为发生的分支,则分支预测 可以通过更新取指逻辑IF中维护的取指地址来实现取指方向的改变。经由传送工具XFER将经过译码的指令(分支指令和非分支指令 二者)传送给分派逻辑GD。使用寄存器映射表MP对所分派的各个 指令进行重命名,并且将其输入到发射逻辑ISS中维护的发射队列, 以便根据指令类型发射到适当的执行流水线BR、 LD/ST、 FX和FP。 发射逻辑ISS从发射逻辑中维护的发射队列中彼此乱序地发射出指 令。
现在参考计算流水线LD/ST、 FX和FP中的执行,指令对一个或 多个寄存器文件RF执行寄存器文件访问,并且进入执行阶段。对于 LD/ST指令,执行阶段包括第一地址生成阶段EA,随后是数据緩存 访问和数据格式化。对于FX指令,执行包括由EX实现的逻辑功能。 对于FP指令,执行包括一个或多个逻辑功能F1到F6。现在参考BR 流水线中分支指令的执行,分支指令可选地执行一个或多个寄存器文 件访问,以获取寄存器文件访问逻辑RF中的一个或多个条件、分支 计数器以及分支目标操作数。BR流水线中的分支执行逻辑EX计算 目标地址和分支条件,并且与预测目标和条件进行比较。如果检测到 了错误预测(例如,错误地计算了条件或者提供了错误的目标),则 进行分支重定向动作。使用清空(flush)或者其他适当的机制将错误 预测的指令从执行流水线移除,并且更新在取指逻辑IF中维护的取 回地址。
所有执行流水线通过执行计算结果的写回以及向提交级CP的传 送XFER来竟争。
提交级CP将指令在其按序提交点处按照其相对于其他所有指令 的顺序进行提交。中断条件、异常以及其他特殊执行条件使提交级执 行清空和重取,其将取指逻辑IF中的取指地址设置为重新执行或中 断或异常处理地址之一。
参考图2A和图2B,其示出了两个示例性分支预测器条目类型。 每个预测器与特定的分支相关联,其中该分支与使用分支地址、 gshare、 gselect或者局部预测器的结果相关联。当在选择和关联机制 的控制下检索预测器时,标识预测器状态,并且基于该状态来进行预
14测。
现在更具体地参考图2A, 1位预测器202使用单个信息位来表示 两个状态(发生205和不发生210)之一,其对应于将要进行的下一 预测。如果预测器处于发生状态205,预测返回分支将发生的指示。 如果预测器处于不发生状态210,预测返回分支将不会发生的指示。 当在示例性BR流水线中的分支执行期间检查预测时,错误预测将导 致状态迁移,例如,预测将变为反映上次分支结果的方向,如标有分 支结果的状态迁移弧线206所示。
参考图2B,其示范性地示出了示例性双峰预测器,其使用两个 信息位来表示四个状态之一,其对应于将要进行的下一预测。这四个 状态包括强不发生250、弱不发生255、弱不发生260、强不发生265。 如果预测器处于两个"发生"状态250和255之一,预测返回分支将 发生的指示。如果预测器处于两个"不发生"状态之一,则预测返回 分支将不会发生的指示。当在示例性BR流水线中的分支执行期间检 查预测时,将根据图2B来执行状态迁移。具体地,正确的预测将导 致选择适当方向的"强"状态。如果检测到了错误预测,并且如果预 测器先前处于强状态250或者265,则预测器更新将分别执行到弱状 态255或者260。如标有分支结果的图2B的迁移弧线257所示,如 果预测器处于弱状态,则预测方向将在状态255和260之间改变。
参考图3,示出了示例性的竟赛预测器300,其包括三个示例性 组件预测器,例如局部预测器310、全局预测器320以及选择预测器 330。选择机制340在选择预测器330的控制下选择局部预测器310 和全局预测器320之一做出的预测。
参考图4,示范性地示出了在模式控制选择机制430 (例如"1位 /2位"模式)控制下的多态分支预测器400的实现方面。控制选择机 制430或者使用将预测器400用作具有n个条目的1位预测器的第一 模式,或者使用将预测器400用作具有预测阵列410中数目减少的条 目(例如,n/2个条目)的2位预测器的第二模式。
才艮据优选实施方式,阵列410在输入405处^f吏用(ldn)/2个地址位来寻址具有2位的单个条目,以读出阵列410。根据分支预测器的一 种实现,从阵列410获取的分支预测位(例如b0和bl )作为biq_bO 和biq_bl存储在分支信息队列BIQ 415中,以供BR执行流水线使用。
可以根据获取的2位信息来进行预测,在第一操作模式中,实现 2位预测器,并且在选择元件420和425的控制下分别将2个位提供 为方向输出440和确信输出445。在多态配置信息430的控制下配置 选择元件420和425。在第二操作模式中,预测器400作为1位预测 的提供者而进行操作。选择机制420在多态配置信息430的控制下选 才奪阵列410提供的两个位之一,作为1位方向性预测输出440。
根据多态预测器400的一种实现,按照如下方式实现对附加预测 器地址位(例如,地址位422)的选择。当处于2位模式或者地址422 等于O时,方向440变为b0。否则,方向440等于bl。 ^使用标准化 VHDL符号来描述该条件、但是允许符号化名称描述对应于此处所包 括的教导方面的条件和信号,可以将逻辑操作声明为
<formula>formula see original document page 16</formula>
其中address—bit例如表示为图中的"msb,,。(对于最高有效位, 其是可以选择的一个可能位)。
根据一种实现,可选地通过将1位预测器的确信位重新设置为 "弱"状态来将1位预测器格式化为双峰预测器,以用于公共数据流 中的共享处理。这可以包括在2位模式中使确信445变为bl,否则使 其变为0。使用标准化VHDL符号来描述该条件、但是允许符号化名 称描述对应于此处所包括的教导方面的条件和信号,该逻辑可以声明 为
<formula>formula see original document page 16</formula>,
该示范性实施方式是示例性的和非限制性的。本领域的技术人员 将会理解,当实现1位预测器时可以使用其他机制来选择两个位之一 (例如,可以使用线程指示符来替代地址位),可以使用各种不同的 地址位,例如包括夂f旦不限于最低有效位、最高有效位、多个地址位的 散列、线程位等等。本领域的技术人员还将理解,可以在每个线程的基础上维护多态分支预测,允许一个线程将预测器用作l位预测器, 而另 一并发执行的应用可以使用存储元件和逻辑来执行2位预测。
在至少 一种实现中,从具有宽读取端口的单个阵列或者使用预测 器阵列的多个并行副本,来同时获取用于多个分支的多个预测。在此 类实施方式中,将适当地调整和/或减小地址位的数目,以反映从预测 器存储器并发获取的位的数目。在另一实施方式中,选择不同的位宽
度,允许支持不同于示例性的l位和2位预测器的位宽度的第一和第
二预测器位宽度。在又一实施方式中,从分离的阵列获取两个位的每 一个,这允许在预测器地址位的控制下释放阵列之一,或者获取可以
用来控制选择逻辑420的其他这样的位。
参考图5A和图5B,示范性地示出了用于根据多态预测机制执行 对预测器存储阵列510的写操作的实现。在图5A中,示范性地示出 了对预测器存储阵列510的预测器存储器写入,其支持两个位(b0 和bl)的并发存储,并且对于每个位具有独立的写使能工具。根据该 工具,存储阵列510接收在输出505处具有(ld n) /2个地址位的地 址、第一数据位bO和第二数据位bl以及第一写使能信号we_bO 511 和第二写使能信号we—bl 512,其对应于写入地址所指定条目的第一 位b0和第二位bl。
#4居该示例性实施方式,可以进^f于1位预测器更新,或者可以通 过使用选择机制520来进行2位预测器更新。对于用于执行2位预测 器更新的第一操作模式,在多态配置信息520的控制下将方向值530 提供给位bO,并且将确信值535提供给位bl。此外,选择写使能信 号we—b0 511和we—bl 512 二者,以更新位b0和位bl 二者。在用于 执行1位预测器更新的第二操作模式中,在选择逻辑515以及写使能 we—b0 511和weJ)1 512之一的控制下将方向值530写到位b0和bl 之一。
在一个示例性实施方式中,如下来计算位(使用标准化VHDL符 号)
b0 <= direction;bl <= confidence when (mode = 2bit) else direction;
we—b0 <= 2_bit_update when (mode = 2bit) else
1—bit—update and address—bit = 'O,; we—bl <= 2—bit—update when (mode =2bit) else 1—bit update and address bit = 'l,;
参考图5B,示范性地示出了对预测器存储阵列560的预测器存 储器写入,其支持两个位的并发存储,并且具有用于这两个位的公共 写使能工具。根据该工具,存储阵列560接收在输入505处具有(Id n)/2 个地址位的地址、第一数据位b0和第二数据位bl,以及单个写使能 we 563,其对应于写入地址所指定条目的两个位。4艮据该示例性实施 方式,可以进行l位预测器更新,或者可以进行2位预测器更新。
在用于执行2位预测器更新的第 一操作模式中,在多态配置信息 570以及由选择(sel)信号控制的选择逻辑562和565的控制下,将 方向值530提供给位bO,并将确信值535提供给位bl。此外,选择 写使能信号we 563,以利用方向信息530和确信信息535来更新地址 条目。在用于执行1位预测器更新的第二操作模式中,在选择逻辑562 的控制下将方向值530写到位b0和b 1之一 ,并且使用关于原始条目 内容的信息(biq—b0和biq_bl )(该信息已经存储在示例性分支信息 队列BIQ 415中)在选择器位(sel)、逻辑562和565以及多态配置 信息570的控制下,来重新存储先前的信息。在一个示例性实施方式 中,如下计算位(使用标准化VHDL符号) bO <= direction when (mode = 2bit OR address—bit = '0,) else
biq一bO;
bl <= confidence when (mode =2bit) else direction when (address—bit = ' 1,) else biq—bl;
we <= 2—bit—update when (mode = 2bit) else 1—bit—update;本领域的技术人员将会理解,图5B描述的实施方式对阵列560 中的较高存储密度进行了折衷,因为错误依赖性导致了预测器更新的 覆盖,其可能发生在获取BIQ信息的时间和存储所获取信息的时间之 间。本领域的技术人员还将理解,能够提供一个或多个最近更新值的 关联性旁路,以减小或者消除这种错误依赖性更新的影响。图5A和 图5B是示例性的而非限制性的。本领域的技术人员将会理解,在实 现1位预测器时可以4吏用其他才几制来选择两个位之一 (例如,可以佳: 用线程指示符来替代地址位),可以使用各种不同的地址位,诸如包 括但不限于最低有效位、最高有效位、多个地址位的散列、线程位等 等。本领域的技术人员还将理解,可以在每个线程的基础上维护多态 分支预测,这允许一个线程将预测器用作1位预测器,而另一并发执 行的应用可以使用存储元件和逻辑来执行2位预测。
参考图6,示出了低开销多态预测器的实现,其中,对多态功能 的支持没有明显增加逻辑复杂性。因此,期望使用公共逻辑功能来实 现针对所有可配置多态模式的预测更新逻辑。根据新颖的多态预测 器,示出了分支预测更新逻辑600,根据本发明,其被用来更新l位 和2位(双峰)预测器二者。提供了分支信息队列BIQ415的内容(诸 如biq—b0和biq_bl )以及由图1所示的示例性孩i处理器的BR扭^亍流 水线的逻辑EX计算的"分支结果"。根据本发明,多态预测器更新 提供更新的方向信息650,更新的确信信息655,以及指出应当在预 测器存储中更新1位(657)还是2位(双峰)(656 )预测器的指示。
特别地,用于计算分支预测610的逻辑对应于图2B的双峰预测 器(2位预测器)的未修改功能。根据图6的实施方式,在第一操作 模式中,在多态配置670的控制下,根据图2B来计算2位预测更新 656结果,这提供了是否在预测器存储器中更新2位预测器的更新信 息656以及更新的方向650、确信信息655。在第二操作模式中,提 供了根据图2A的1位预测结果,其提供是否在预测器存储器中更新 2位预测器的更新信息657以及更新的方向650。
在一个示例性实施方式中,如下计算更新U吏用标准化VHDL符号)
b0 <= biq—b0 when (mode = 2bit OR address—bit = 'O,) else biq_bl;
bl <= biq—bl when (mode = 2bit) else 'O,;
1— bit—update <= bO /= direction;
2— bit update <= bO /= direction OR bl /= confidence.
图6中描述的逻辑和操作是非限制性的,可以根据此处的教导来 实践其他类型的预测器更新共享。可以对宽度、功能进行其他的修改。 针对特定的技术以及使用公知的变换,本领域的技术人员将会找到逻 辑优化和变换来减小逻辑锥的大小和深度等。为了简化而省略了这些内容。
现在参考图7A和图7B,示出了用于针对预测器的组织结构来多 态配置预测器的方法。这些方法以示例性的方式示出,可被配置为实 现单级统一预测器或者竟赛预测器。还可以根据图4、图5A和图5B 中给出的教导、针对预测器条目的存储和操作来配置每个预测器710、 720、 730。
参考图7A,示范性地示出了用于多态预测器的第一示例性读取 方法和装置,其包括统一大小的单预测器或者竟赛预测器之一。根据 该示例性实施方式,使用来自寻址逻辑781的多态配置信息780来将 配置控制为竟赛预测器或者统一阵列预测器。竟赛预测器包含多个第 一尺寸的阵列(或者第一多尺寸)。单个大小统一的阵列对应于具有 较多条目的单预测器。
根据第一操作模式,示例性实施方式在选择器750的控制下作为 竟赛预测器进行操作,其中选择器750在配置信息780的控制下选择 用于选择器740的选择源。选择逻辑740被配置为在选择预测器730 的控制下选择示例性组件预测器710和720的多个预测之一。根据第 二操作模式,示例性实施方式在选择器750的控制下作为单个大小统 一的预测器进行操作,其中选择器750在配置信息780的控制下使用选择器740来选择选择源。选择逻辑740被配置为在输入755的控制 下选择多个子阵列结果之一,其中输入755可以包括地址位、散列地
址位、线程位之一或者其他适当的寻址手^a。
现在参考图7B,其示出了作为统一大小的单预测器或者竟赛预 测器之一的多态预测器的第二示例性读取方法和装置。根据该示例性 实施方式,使用多态配置信息780来将配置控制为包含第一尺寸(或 者第一多尺寸)的多个阵列的竟赛预测器,或者对应于具有较多条目 的单预测器的单个大小统一的阵列。
根据第 一操作模式,示例性实施方式作为竟赛预测器进行操作。 选择器790从两个示例性组件预测器710和720之一来选择预测。选 择器796在配置780的控制下选择由选择器790所生成的竟赛预测的 结果。根据第二操作模式,示例性实施方式作为单个大小统一的预测 器进行操作,在散列逻辑794所生成的地址的控制下使用选择器792。 在该示例性逻辑794中,使用一个或多个地址位的散列功能在多个阵 列之间分布使用。具体地,由于阵列的数目不是2的指数,在使用组 件阵列作为较大逻辑阵列的子阵列时,不可能在不创建组件阵列的不
平衡使用的情况下而直接使用地址位。选择器796在配置780的控制 下选择子阵列选择器792所生成的预测结果。
在示例性逻辑中,使用一个或多个地址位的散列功能794在多个 阵列之间分布使用。本领域的技术人员将会理解,可以使用选择子阵 列的备选方法,例如,通过使用各种选择源、级联位串、使用各种位 的逻辑功能等,其可以用来根据本发明选择子阵列。
在本发明的范围内,在又一实施方式中,使用第一组件表来生成 第一位(例如方向预测位)和第二位(例如确信位),以表示在第一 操作模式中例如使用1位预测器条目的、作为多组件预测器进行操作 的预测器,以及在第二操作模式中使用多位预测器条目(例如,双峰 预测器)的单个统一预测器。本领域的技术人员将会理解,基于此处 的教导的范围,另一配置机会是将具有n个组件表的第一竟赛预测器 重配置为具有逻辑上k个组件表的预测器,k<n,其中,所述k个组件表中的至少一个对应于来自n个组件表的至少两个阵列的组合。组 件表是本领域已知的。
在多组件表预测器的示例配置中使用竟赛预测器是示例性而非 限制性的。本领域的技术人员将会进一步理解,根据时钟门控逻辑的 定时限制,在选择器没有选择组件阵列时,可以对一个或多个组件阵 列执行选择性时钟门控。
现在参考图8,示出了用于多态预测器的预测器更新逻辑850, 其允许配置为多组件预测器(例如示例性竟赛预测器)或者单个统一 预测器,其对应于图7A和图7B中的多态读取逻辑。预测器850包 括三个组件预测表810、 820和830。
在第一操作模式中,在多态配置780的控制下,根据用于多组件 预测器的更新规定来更新多组件预测器850的一个或多个组件预测 器。如果(在本地预测器阵列的示例性使用中)指示了针对第一预测 器阵列810的更新使能,则选择器814在多态配置780的控制下选择 本地预测更新(本地更新),并且选择器812选择本地预测更新使能 (本地更新使能)。如果(在全局预测器阵列的示例性使用中)指示 了针对第二预测器阵列820的更新使能,则选择器824在多态配置780 的控制下选择全局预测更新(全局更新),并且选择器822选择全局 预测更新使能(全局更新使能)。如果(在选择预测器阵列的示例性 使用中)指示了针对第三预测器阵列820的更新使能,则选择器834 在多态配置780的控制下选择选择预测更新(选择更新),并且选择 器832选择选择预测更新使能(选择更新使能)。
在第二操作模式中,合并阵列810、 820和830中的至少两个, 以用作单个大阵列。根据优选实施方式,计算一个或多个散列函数840
(例如,对应于图7B中的散列功能794),并且将其与更新使能相 结合用于大预测器配置,以便选择至少 一个子阵列来更新较大逻辑预 测器阵列中的条目。
在第二操作模式中,选择器814、 824、 834在多态配置信息780 的控制下从公共大预测器条目更新选择预测器更新,并且选择器812、
22822、 832基于所生成的散列函数和更新使能来选择阵列写使能信息。 本领域的技术人员将会理解,除了散列块中的地址位,可以使用诸如 线程位之类的附加信息。此外,在本发明的范围内,可以使用位的子 集来替代位的散列(并且根据图7A的读取实施方式来使用)。
参考图9,针对根据图7A、图7B和图8的多态预测器的第一操 作模式和第二操作模式,示范性地示出了具有共享更新地址计算逻辑 的示例性实施方式。根据该实施方式,通过提供附加的地址位,使用 更新地址计算逻辑950来计算用于第 一操作模式中的多组件预测器中 的全局预测器920的地址或者用于具有单个较大阵列的统 一 预测器的 更新地址二者。还可以使用这些地址位在散列逻辑940 (总体上对应 于图8的散列功能840)的控制下来选择单个逻辑阵列预测器的一个 或多个子阵列910、 920、 930。
多态分支预测器可以包括逻辑元件(例如,更新地址逻辑950), 使得逻辑元件在分支预测方法之间共享以提高效率。其他逻辑元件或 者组件也可以在分支预测方法之间共享,并且可以包括阵列、预测器 更新逻辑、地址生成逻辑等中的至少一个。
现在特别地参考图IOA和图10B,示范性地示出了用于使用多态 预测器来优化应用性能的方法。根据优选实施方式,通过软件来实现 该功能,尽管其他实施方式也是可能的。
现在更具体地参考图10A,方法1000优选地在编译器中实现。 该方法开始于步骤1010。在步骤1010中,推导出用于多态预测器的 优选配置。在步骤1020中,生成代码以选择多态预测器的优选配置。 继而方法终止。根据一个实施方式,该方法由编i奪器执行一次,以选 择用于整个应用的优选配置。根据另一实施方式,该选择执行多次, 以用于例如不同的程序阶段。该选择可以基于用户指定的指示,诸如 命令行标志、编译指示(pragma)或者其他插入到程序代码中的编译 器指示、编译器启发或者程序属性模型、以及属性指示的反馈。
参考图IOB,方法1050优选地在应用库、动态编译器、连续程 序优化模块、固件或者微码中实现,并且在程序运行时执行。该方法开始于步骤1060。在步骤1060中,分析应用运行时的行为。多种程 序分析技术是已知的(诸如包括但不限于配置尝试和测试),并且可 以与本发明结合使用。在步骤1070中,基于应用分析(或者应用阶 段分析)来选择优选配置。接着,方法终止。
根据一个实施方式,方法1050可以执行一次,以选择用于整个 应用的优选配置。根据另一实施方式,该选择在应用运行期间执行多 次,例如用于不同的程序阶段。重新执行可以在固定的间隔处发生, 或者可以在关键应用量度改变(例如由性能监控基础设置指示)时在 应用指示的(例如,通过调用动态配置选择功能)明确的点处发生。 优选地使用提供应用统计(诸如分支执行和预测信息)的性能监控基 础设置的支持来执行动态应用分析。
现在参考图11, 一种用于在操作系统上下文或者管理器划分之间 执行切换的方法1100。方法1100开始于步骤1110。在步骤1110中, 存储用于应用或者预先调度的划分的配置。在一个实施方式中,在对 过程或者划分进行去调度时存储配置。在备选实施方式中,此配置信 息在其更新时存储,并且维护在特定于过程或者划分的结构中。在步 骤1120,从步骤1110的预先存储的信息中读取用于下一过程或划分 的配置信息,并且更新多态配置。方法终止。
工业实用性
在此公开了用于实现多态分支预测器的方法和装置,所述多态分 支预测器可以在运行时被配置为选择针对特定应用的结构或者算法 中的至少一个。 一种多态分支预测器,包括多个分支预测方法。所述 方法被选择性地启用,以执行分支预测。将选择机制配置为根据动态 设置来选择一个或多个分支预测方法,以便根据当前任务在操作期间 优化分支预测器的性能。每个方法可被选择性地启用以执行分支预 测。将选择机制配置为根据动态设置来选择一个或多个分支预测方 法,以便根据当前任务在操作期间优化分支预测器的性能。
已经描述了用于实现多态分支预测器的方法和装置的优选实施方式(其意在示范而非限制),注意,本领域的技术人员可以根据上 面的教导进行修改和变形。因此可以理解,在所附权利要求概括的本 发明的范围和精神内,可以对所7>开的具体实施方式
进行修改。由此 描述了本发明的方面,其具有专利法要求的细节和特性,在所附权利 要求中记载了所要求和期望得到专利证书保护的内容。
权利要求
1. 一种多态分支预测器,包括多个分支预测方法,每个方法被选择性地启用以执行分支预测;以及选择机制,其被配置为根据动态设置来选择一个或多个所述分支预测方法,以便根据当前任务在操作期间优化所述分支预测器的性能。
2. 根据权利要求1所述的多态分支预测器,其中,所述设置包括性能量度。
3. 根据权利要求1所述的多态分支预测器,其中,所述选择机制 被配置为选择至少两个分支预测方法,以便一起工作来提供结果。
4. 根据权利要求1所述的多态分支预测器,其中,所述选择机制 按照事先指定,来选择用于特定应用或者应用集的所述一个或多个分 支预测方法。
5. 根据权利要求1所述的多态分支预测器,其中,所述选择机制 基于对运行时的行为的分析来选择所述一个或多个分支预测方法。
6. 根据权利要求1所述的多态分支预测器,其中,所述选择机制 被配置为从编译器和运行时组件之一接收信息,以选择所述一个或多 个分支预测方法。
7. 根据权利要求1所述的多态分支预测器,其中,所述选择机制 被配置为在应用的运行时期间更新。
8. 根据权利要求1所述的多态分支预测器,其中,所述选择机制 被配置为基于来自逻辑功能、地址位、线程指示符以及多个地址位或 线程位的散列中的至少 一个的输出进行更新。
9. 根据权利要求1所述的多态分支预测器,进一步包括预测器条 目的阵列,其中,针对信息位的数目来配置存储在所述阵列中的所述预测器条目。
10. 根据权利要求1所述的多态分支预测器,进一步包括预测器条目的阵列,其中,使用逐位写使能信号和多位写使能信号之一来允 许对所述阵列的写操作,从而实现在所述阵列中的存储。
11. 根据权利要求1所述的多态分支预测器,其中,每个分支预 测方法包括逻辑元件,使得所述逻辑元件在所述分支预测方法之间共 享以提高效率。
12. 根据权利要求11所述的多态分支预测器,其中,在分支预测 方法之间共享的所述逻辑元件包括阵列、预测器更新逻辑和地址生成 逻辑中的至少一个。
13. 根据权利要求1所述的多态分支预测器,进一步包括预测器 条目的阵列以及分支信息队列,其中,使用来自所述分支信息队列的信息来重写先前从所述阵列读取的信息。
14. 根据权利要求1所述的多态分支预测器,进一步包括寻址逻 辑,其被配置为在统一表和多组件预测器的表之间共享。
15. 根据权利要求1所述的多态分支预测器,进一步包括预测器 条目的多个组件阵列,其中,预测器条目由地址位选择。
16. 根据权利要求1所述的多态分支预测器,进一步包括预测器 条目的多个组件阵列,其中,预测器条目由地址散列来选择,以选择 所述多个组件阵列之一。
17. —种用于动态选择分支预测方法的方法,包括 提供多个可动态配置的分支预测方法;根据动态设置来选择一个或多个所述分支预测方法,以便根据当 前任务在操作期间优化分支预测器的性能;以及更新所述一个或多个分支预测方法的配置,以提供改进的预测结果。
18. 根据权利要求17所述的方法,其中,选择一个或多个所述分 支预测方法包括根据正在运行的应用、运行应用的阶段、运行时的 行为以及可操作量度之一,来选择一个或多个所述分支预测方法。
19. 根据权利要求17所述的方法,进一步包括生成程序代码以引 起所述一个或多个分支预测方法的重配置。
20. —种计算机程序产品,包括包含计算机可读程序的计算机可 用介质,其中,当所述计算机可读程序在计算机上执行时,其使得所 述计算机执行权利要求19所述的步骤。
全文摘要
一种包括多个分支预测方法的多态分支预测器和方法。该方法被选择性地启用以执行分支预测。选择机制被配置为根据动态设置来选择一个或多个分支预测方法,以便根据当前任务在操作期间优化分支预测器的性能。
文档编号G06F9/00GK101427213SQ200780013851
公开日2009年5月6日 申请日期2007年5月2日 优先权日2006年5月4日
发明者M·格施温德 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1