CN101427213A - 用于实现多态分支预测器的方法和装置 - Google Patents
用于实现多态分支预测器的方法和装置 Download PDFInfo
- Publication number
- CN101427213A CN101427213A CNA2007800138518A CN200780013851A CN101427213A CN 101427213 A CN101427213 A CN 101427213A CN A2007800138518 A CNA2007800138518 A CN A2007800138518A CN 200780013851 A CN200780013851 A CN 200780013851A CN 101427213 A CN101427213 A CN 101427213A
- Authority
- CN
- China
- Prior art keywords
- branch
- fallout predictor
- polymorphic
- predictor
- prediction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 230000007246 mechanism Effects 0.000 claims abstract description 26
- 238000003860 storage Methods 0.000 claims description 21
- 238000003491 array Methods 0.000 claims description 9
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 2
- 230000002902 bimodal effect Effects 0.000 description 27
- 230000006870 function Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 9
- 230000006399 behavior Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 229920006395 saturated elastomer Polymers 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 239000000047 product Substances 0.000 description 4
- 230000003068 static effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005530 etching Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 239000013067 intermediate product Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 125000002950 monocyclic group Chemical group 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000007789 sealing Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Analogue/Digital Conversion (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种包括多个分支预测方法的多态分支预测器和方法。该方法被选择性地启用以执行分支预测。选择机制被配置为根据动态设置来选择一个或多个分支预测方法,以便根据当前任务在操作期间优化分支预测器的性能。
Description
技术领域
本发明总体上涉及微处理器中分支指令的处理,并且更具体地,涉及用于实现多态分支预测器的方法和装置。
背景技术
现代处理器通过应用预测技术来解决流水线分裂事件(诸如分支操作)以此来实现性能。根据现有技术,已经提出了多种分支处理技术。分支预测器是处理器的一部分,其确定程序指令流中的条件分支是否有可能发生。这称为分支预测。在当今的现代超标量处理器中,分支预测器对于实现高性能至关重要。分支预测器允许处理器取回并执行指令,而无需等待求解分支。
早期的RISC架构实现进行普通的分支预测:例如,该架构总是预测分支(或者无条件跳转)将不会发生,因此其总是取回接下来的连续指令。取指指针仅在对分支或者跳转进行评估时被设置为非连续地址。这些CPU在译码阶段评估分支,并且具有单周期的取指。因此,分支目标循环的长度是两个周期,并且机器将总是取回紧随任意发生分支之后的指令。一些架构定义了分支延迟槽,以使用这些取回的指令。
实现“静态预测”的处理器预测:向后指向的分支将发生(假设该向后分支在程序循环的底部),而向前指向的分支将不会发生(假设其较早退出了循环或者其他处理代码)。对于执行多次的循环而言,这仅仅错误预测了循环的最后分支。在多数具有动态分支预测的处理器中,静态预测被用作回退(fall-back)技术(当没有任何信息可供动态预测器使用时)。
一些超标量处理器利用指令的每一行取回指向下一行的指针。该下一行预测器不能直接与在此列出的其他预测器进行比较,因为该下一行预测器处理分支目标预测以及分支方向预测。当下一行预测器指向对齐的2、4或8个指令的群组时,分支目标通常将不是被取回的第一指令,并且因此浪费了取回的初始指令。为了简化,假设分支目标的均匀分布,分别丢弃取回的0.5、1.5和3.5指令。
由于分支本身通常将不是对齐群组的最后指令,因此将丢弃发生的分支(或者其延迟槽)之后的指令。再次,假设分支指令的放置均匀分布,丢弃取回的0.5、1.5、3.5指令。即使对于单周期下一行预测器而言,在分支处丢弃的指令和目的行总计也几乎是整个取指周期。
双峰分支预测器具有2位饱和计数器的表,由指令地址的最低有效位索引。不同于指令缓存,双峰预测器条目通常不具有标签,并因此可以将特定的计数器映射至不同的分支指令(这称为分支干扰或者分支混淆),在这种情况下,有可能不太准确。每个计数器具有以下四个状态之一:1)强不发生,2)弱不发生,3)弱发生,以及4)强发生。
在评估分支时,更新相应的计数器。被评估为不发生的分支朝着“强不发生”降低状态,而被预测为发生的分支朝着“强发生”提升状态。该2位饱和计数器方案的主要好处在于:循环封闭分支总是被预测发生。1位方案对于循环的第一分支和最后分支二者都会错误预测。2位方案仅会错误预测最后分支。类似地,对于几乎总是沿一个方向执行的严重偏向的分支,1位方案对于每个奇数分支会错误预测两次,而2位方案错误预测一次。
由于双峰计数器的表是通过指令地址位来索引的,因此超标量处理器可以将该表划分为用于每个取回指令的独立SRAM,并且与取指令并行地取回对于每个指令的预测,从而使分支预测在对分支译码之后立即可用。除了2位预测器,基于使用n位的预测器的各种类似的饱和计数器也是可能的。
双峰分支预测错误预测每个循环的退出。对于倾向于每次具有相同循环次数的循环而言(以及对于具有重复行为的很多其他分支而言),一些预测器可以做得更好。局部分支预测器保持两个表。第一表是局部分支历史表。该表由分支指令的地址的低顺序位索引,并且记录该分支的n次最近执行的发生/不发生历史。另一表是模式历史表。此表包括实际的预测器;然而,其索引根据第一表中的分支历史生成。为了预测分支,查询分支历史,并且继而使用该历史来查询预测器以进行预测。该方法可以使用1位预测器,或者n位预测器(诸如双峰预测器)。
局部预测比双峰预测慢,因为对于每次预测,局部预测需要两个连续的表查询。快速实现将针对每个取回的指令使用独立的双峰计数器阵列,从而使第二阵列访问可以与取指令并行地进行。这些阵列不是冗余的,因为每个计数器意在存储单个分支的行为。全局分支预测器利用很多分支的行为都与其他最近发生的分支强相关这一事实。在一种实现中,预测器可以保持通过每个执行分支的最近历史来更新的单个移位寄存器,并且使用该值来索引到预测器(例如,1位预测器或者双峰计数器预测器)的表。
gselect预测器利用与分支指令地址的几个位级联的最近历史来索引预测器的表。对于较小的表,gselect比局部预测做得更好;而对于大于1KB的表存储,局部预测仅仅略好。另一实现通过对分支指令地址和全局历史进行异或(XOR)而不是级联,从而提供了更好的预测准确性,其代价是用更昂贵的异或取代简单的级联。该预测器被称为gshare,对于大于256字节的表而言,其略好于gselect。
gselect和gshare比局部预测更容易加快,因为它们每个分支需要单次表查询。对于双峰预测,可以对表进行划分,使得可以对每个取回的指令进行并行查询,从而可以与指令装载并行地进行表查询。Scott McFarling在“Combining Branch Predictors”,WRL Technical Note36,1993中提出了合并分支预测。在本说明书下文中将这种合并预测器称为多组件预测器。合并分支预测大约与局部预测一样准确,并且与全局预测一样快速。
合并分支预测并行地使用三个预测器(例如,局部双峰预测器、gshare预测器和类双峰预测器),以在逐个分支的基础上挑选使用双峰或者gshare预测器中哪一个。选择预测器可以是用于选择要使用的预测的1位预测器或者饱和n位计数器。在这种情况下,每当双峰和gshare预测不一致时就更新计数器,以选定要选择哪个结果。另一种合并分支预测器的方法是具有例如3个不同的分支预测器,并且通过多数表决来合并其结果。类似于gshare的预测器使用多个表条目来跟踪任意特定分支的行为。条目的增多使得两个分支将有更大的可能映射至相同的表条目(这种情况称为混淆),这继而使得预测准确性更有可能受到那些分支的影响。只要采用了多个预测器,则这样布置是有利的:每个预测器具有不同的混淆模式,从而更有可能使至少一个预测器将没有混淆。对于不同预测器具有不同索引功能的合并预测器称为gskew预测器,并且其类似于用于数据和指令缓存的偏斜(skewed)缓存器。
降低模式历史表中的破坏性混淆的另一种技术是一致预测器。一种方法被用来建立针对分支的相对静态预测,可能是双峰预测器或者分支指令中的提示位。另一预测器(例如,gskew预测器)进行预测,但是不是预测发生/不发生,该预测器预测与基本预测的一致/不一致。其意图在于:如果gskew预测器覆盖的分支倾向于偏向一个方向1位(可能是70%/30%),则可以对齐所有那些偏向,使得gskew模式历史表将倾向于具有多于不一致条目的一致条目。这降低了两个混淆分支将最好具有预测历史表(PHT)中相对值的可能性。
一致预测器与合并预测器一起工作得很好,因为合并预测器通常具有可以用作一致预测器基础的预测器。一致预测器与不偏向一个方向的分支一起工作得不是太好,如果一起工作,这使得基础预测器给出改变的预测。所以,一致预测器作为三预测器方案的一部分可以最好地工作,该三预测器方案中一个是一致预测器、另一个是非一致型预测器。
几乎所有的流水线处理器都进行某种形式的分支预测,因为其必须猜测下一指令的地址,以便在当前指令执行完之前取回下一指令。设计分支预测技术的关键参数是分支预测条目的数目以及分支预测算法(诸如,1位预测器或者饱和n位预测器)。这些决策必须适用于针对局部预测器或者全局预测器的各种分支预测方法。
尽管现有技术已经允许合并各种预测器,但是对于微处理器设计者而言,关键的决策是选择分支预测算法。根据现有技术,利用固定的k位的存储器分配,设计者能够实现使每个预测表具有k个1位预测器、或者k/2个双峰预测器,或者更一般地,具有n位计数器的k/n个预测器。这代表了一种权衡:是提供通过每次预测使用较多的位而允许单个预测的质量改进的预测器,还是提供构造较简单的预测器。在另一权衡中,设计者有可能选择较长延迟的局部预测器,或者短延迟的双峰预测器或1位预测器。
最佳预测质量取决于各种因素,诸如负载特定的属性,其对于不同的程序或者在程序之间是不同的。因此,尽管现有技术已经允许合并预测器,但是其尚未允许针对特定的应用或者甚至应用内的阶段而优化预测。相反,结构(诸如竞赛预测器)、全局或局部预测的使用以及1位预测器或者双峰预测器的选择必须在设计时确定,这需要实现者一次性选择特定的配置并且该配置将用于所有应用。
尽管预测器设计已经允许良好的平均性能,但是现有技术无法针对特定应用来优化预测器。
发明内容
在此公开了用于实现多态分支预测器的方法和装置,其中可以在应用运行时将所述多态分支预测器配置为针对特定应用而选择至少一个结构或者算法。
一种多态分支预测器和方法,包括多个分支预测方法。可以选择性地启用该方法来执行分支预测。将选择机制配置为根据动态设置而选择一个或多个分支预测方法,以便根据当前任务在操作期间优化分支预测器的性能。
一种多态分支预测器,包括多个分支预测方法,每个方法能够被选择性地启用以执行分支预测。将选择机制配置为根据动态设置来选择一个或多个分支预测方法,以便根据当前任务在操作期间优化分支预测器的性能。
在备选实施方式中,多态分支预测器设置可以包括性能量度。可以将选择机制配置为选择至少两个分支预测方法,以便一起工作来提供结果。选择机制可以事先指派或者根据对运行时行为的分析来选择一个或多个分支预测方法以用于特定的应用或者应用集。
在另一实施方式中,可以将选择机制配置为从编译器和运行时组件之一接收信息,以选择一个或多个分支预测方法。可以将选择机制配置为在应用的运行期间进行更新,或者将其配置为根据来自逻辑功能、地址位、线程指示器和若干地址位或线程位的散列的至少一个输出来进行更新。
该多态分支预测器还可以包括预测器条目的阵列,其中,存储在阵列中的预测器条目针对信息位数、逐位写使能信号或者多位写使能信号而被配置,以允许对阵列的写操作。
每个分支预测方法可以包括逻辑元素,使得逻辑元素在分支预测方法之间共享,以提高效率。在分支预测方法之间共享的逻辑元素可以包括阵列、预测器更新逻辑以及地址生成逻辑中的至少一个。多态分支预测器可以包括预测器条目的阵列以及分支信息队列,其中,使用来自分支信息队列的信息来预先重写从阵列读取的信息。多态分支预测器可以包括寻址逻辑,其被配置为在统一表和多组件预测器的表之间共享。可以提供预测器条目的多组件阵列,其中,通过地址位或者通过地址散列来选择预测器条目,以选择多组件阵列之一。
一种用于动态选择分支预测方法的方法,包括:提供多个可动态配置的分支预测方法;根据动态配置来选择一个或多个分支预测方法,以便根据当前任务在操作期间优化分支预测器的性能;以及更新该一个或多个分支预测方法的配置,以提供改进的预测结果。
当结合附图阅读下文对示范性实施方式的详细描述时,这些以及其他目的、特征和优点将变得显而易见。
附图说明
本公开将在下文描述中参考附图提供优选实施方式的细节,其中:
图1示出了可以根据本发明而采用的包括分支预测器的示例性流水线框图;
图2A和图2B分别示出了1位预测器状态和双峰预测器状态;
图3示出了示范性竞赛预测器;
图4示出了根据示范性实施方式的对具有带有分支信息队列的1位和双峰预测器的多态预测器的读访问;
图5A示出了根据示范性实施方式的使用能够写更新单个存储位的存储器阵列来更新多态1位/双峰预测器的实现;
图5B示出了根据示范性实施方式的使用能够通过双位来写更新条目的存储器阵列来更新多态1位/双峰预测器的实现;
图6是根据示范性实施方式的用于共享预测器以便进行1位和n位预测的电路的示意图;
图7A是示出了根据示范性实施方式的用于可配置为实现单个统一大小预测器或者竞赛预测器的多态分支预测器的读路径的示意图;
图7B是示出了根据示范性实施方式的用于可配置为实现单个统一大小预测器或者竞赛预测器的多态分支预测器的另一读路径的示意图;
图8是示出了根据另一示范性实施方式的用于可被配置为竞赛或者统一阵列的示范性多态预测器的写更新路径的示意图;
图9是示出了根据示范性实施方式的用于竞赛/非竞赛分支预测的更新逻辑共享的示意图;
图10A是示出了根据示范性实施方式的生成配置代码以配置分支预测的编译器的框图/流程图;
图10B是示出了根据另一示范性实施方式的例如使用连续剖析(profiling)优化来动态地选择分支预测方法的框图/流程图;以及
图11是示出了根据示范性实施方式的操作系统(OS)调度(或者管理器划分调度)的框图/流程图。
具体实施方式
本发明的实施方式涉及实现多态分支预测器,以及通过软件来使用和选择它们。本发明实施方式的形式可以采取全硬件实施方式、全软件实施方式或者包含硬件和软件元件二者的实施方式。在优选实施方式中,将多态预测器实现为集成电路。配置选择可以通过软件来实现,包括但不限于:微代码、固件、驻留软件、管理器、操作系统、系统工具、应用程序等。
此外,本发明可以采取计算机程序产品的形式,其可从计算机可用或者计算机可读介质进行访问,所述介质提供程序代码以供计算机或者任何指令执行系统使用或者与之结合使用。出于本说明书的目的,计算机可用或者计算机可读介质可以是能够包括、存储、通信、传播或者传输程序以供指令执行系统、装置或设备使用或者与之结合使用的任何装置。介质可以是电、磁、光、电磁、红外或者半导体系统(或者装置或设备)或者传播介质。计算机可读介质的示例包括半导体或者固态存储器、磁带、可移动计算机盘片、随机访问存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前示例包括压缩盘-只读存储器(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD。
适于存储和/或执行程序代码的数据处理系统可以包括至少一个处理器,其直接或者通过系统总线间接耦合至存储器元件。存储器元件可以包括在程序代码的实际执行期间使用的本地存储器元件、大容量存储器以及缓存存储器,其中缓存存储器提供至少一些程序代码的临时存储,以便减少在执行期间从大容量存储器获取代码的次数。输入/输出或称I/O设备(包括但不限于键盘、显示器、指示设备等)可以直接或者通过中介I/O控制器而间接耦合至系统。
网络适配器也可以耦合至系统,以使得数据处理系统能够通过中介专有网络或公共网络而耦合至其他数据处理系统或者远程打印机或者存储设备。调制解调器、缆线调制解调器以及以太网卡仅仅是目前可用的网络适配器类型的几个例子。
此处描述的多态分支预测器可以是针对集成电路芯片的设计的一部分。芯片设计可以通过图形化计算机编程语言来创建,并且存储在计算机存储介质中(诸如盘片、带、物理硬盘驱动,或者诸如存储访问网络中的虚拟硬盘驱动)。如果设计者没有制造芯片或者用以制造芯片的光刻掩模,则设计者直接或者间接的通过物理手段(例如,通过提供存储有设计的存储介质副本)或者以电子形式(例如,通过互联网)将结果设计发送给这样的实体。继而将所存储的设计转换为适当的格式(例如,GDSII)以用于光刻掩模的制造,其通常包括所考虑的将要形成在晶片上的芯片设计的多个副本。使用光刻掩模来定义将要蚀刻或者处理的晶片的区域(和/或其上的层)。
制造商可以采用未加工晶片(也即,作为具有多个未封装芯片的单个晶片)的形式、作为裸片或者以封装形式来分发作为结果的集成电路芯片。在后一种情况中,晶片被安装在单片封装(诸如塑料载体,其具有附着于主板或者其他更高级别的载体的导线)或者多片封装(诸如陶瓷载体,其具有表面互连或嵌入互连或者二者)中。在任意情况下,芯片继而与其他芯片、离散电路元件和/或其他信号处理设备集成,作为(a)中间产品(例如主板)或者(b)最终产品的部分。最终产品可以是包括集成电路芯片的任意产品,从玩具和其他低端最终应用到具有显示器、键盘或其他输入设备以及中央处理器的高级计算机产品。
现在参考附图,其中相同的数字表示相同或者类似的元件,首先参考图1,其范例化地示出了根据实现本发明的处理器的、可以使用分支预测的示例性高性能微处理器流水线10。使用取指逻辑IF从指令缓存IC取回指令。指令由分支预测逻辑BP处理,并且被传递给译码逻辑D0、D1、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或者局部预测器的结果相关联。当在选择和关联机制的控制下检索预测器时,标识预测器状态,并且基于该状态来进行预测。
现在更具体地参考图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处使用(1d n)/2个地址位来寻址具有2位的单个条目,以读出阵列410。根据分支预测器的一种实现,从阵列410获取的分支预测位(例如b0和b1)作为biq_b0和biq_b1存储在分支信息队列BIQ 415中,以供BR执行流水线使用。
可以根据获取的2位信息来进行预测,在第一操作模式中,实现2位预测器,并且在选择元件420和425的控制下分别将2个位提供为方向输出440和确信输出445。在多态配置信息430的控制下配置选择元件420和425。在第二操作模式中,预测器400作为1位预测的提供者而进行操作。选择机制420在多态配置信息430的控制下选择阵列410提供的两个位之一,作为1位方向性预测输出440。
根据多态预测器400的一种实现,按照如下方式实现对附加预测器地址位(例如,地址位422)的选择。当处于2位模式或者地址422等于0时,方向440变为b0。否则,方向440等于b1。使用标准化VHDL符号来描述该条件、但是允许符号化名称描述对应于此处所包括的教导方面的条件和信号,可以将逻辑操作声明为:
D_Out<=bit0 when(mode=2bit OR address_bit=‘0’)else bitl
其中address_bit例如表示为图中的“msb”。(对于最高有效位,其是可以选择的一个可能位)。
根据一种实现,可选地通过将1位预测器的确信位重新设置为“弱”状态来将1位预测器格式化为双峰预测器,以用于公共数据流中的共享处理。这可以包括在2位模式中使确信445变为b1,否则使其变为0。使用标准化VHDL符号来描述该条件、但是允许符号化名称描述对应于此处所包括的教导方面的条件和信号,该逻辑可以声明为:
C_Out<=bitl when(mode=2bit)else‘0’
该示范性实施方式是示例性的和非限制性的。本领域的技术人员将会理解,当实现1位预测器时可以使用其他机制来选择两个位之一(例如,可以使用线程指示符来替代地址位),可以使用各种不同的地址位,例如包括但不限于最低有效位、最高有效位、多个地址位的散列、线程位等等。本领域的技术人员还将理解,可以在每个线程的基础上维护多态分支预测,允许一个线程将预测器用作1位预测器,而另一并发执行的应用可以使用存储元件和逻辑来执行2位预测。
在至少一种实现中,从具有宽读取端口的单个阵列或者使用预测器阵列的多个并行副本,来同时获取用于多个分支的多个预测。在此类实施方式中,将适当地调整和/或减小地址位的数目,以反映从预测器存储器并发获取的位的数目。在另一实施方式中,选择不同的位宽度,允许支持不同于示例性的1位和2位预测器的位宽度的第一和第二预测器位宽度。在又一实施方式中,从分离的阵列获取两个位的每一个,这允许在预测器地址位的控制下释放阵列之一,或者获取可以用来控制选择逻辑420的其他这样的位。
参考图5A和图5B,示范性地示出了用于根据多态预测机制执行对预测器存储阵列510的写操作的实现。在图5A中,示范性地示出了对预测器存储阵列510的预测器存储器写入,其支持两个位(b0和b1)的并发存储,并且对于每个位具有独立的写使能工具。根据该工具,存储阵列510接收在输出505处具有(1d n)/2个地址位的地址、第一数据位b0和第二数据位b1以及第一写使能信号we_b0 511和第二写使能信号we_b1 512,其对应于写入地址所指定条目的第一位b0和第二位b1。
根据该示例性实施方式,可以进行1位预测器更新,或者可以通过使用选择机制520来进行2位预测器更新。对于用于执行2位预测器更新的第一操作模式,在多态配置信息520的控制下将方向值530提供给位b0,并且将确信值535提供给位b1。此外,选择写使能信号we_b0 511和we_b1 512二者,以更新位b0和位b1二者。在用于执行1位预测器更新的第二操作模式中,在选择逻辑515以及写使能we_b0 511和we_b1 512之一的控制下将方向值530写到位b0和b1之一。
在一个示例性实施方式中,如下来计算位(使用标准化VHDL符号):
b0<=direction;
b1<=confidence when(mode=2bit)else
direction;
we_b0<=2_bit_update when(mode=2bit)else
1_bit_update and address_bit=‘0’;
we_b1<=2_bit_update when(mode=2bit)else
1_bit_update and address_bit=‘1’;
参考图5B,示范性地示出了对预测器存储阵列560的预测器存储器写入,其支持两个位的并发存储,并且具有用于这两个位的公共写使能工具。根据该工具,存储阵列560接收在输入505处具有(1d n)/2个地址位的地址、第一数据位b0和第二数据位b1,以及单个写使能we 563,其对应于写入地址所指定条目的两个位。根据该示例性实施方式,可以进行1位预测器更新,或者可以进行2位预测器更新。
在用于执行2位预测器更新的第一操作模式中,在多态配置信息570以及由选择(sel)信号控制的选择逻辑562和565的控制下,将方向值530提供给位b0,并将确信值535提供给位b1。此外,选择写使能信号we 563,以利用方向信息530和确信信息535来更新地址条目。在用于执行1位预测器更新的第二操作模式中,在选择逻辑562的控制下将方向值530写到位b0和b1之一,并且使用关于原始条目内容的信息(biq_b0和biq_b1)(该信息已经存储在示例性分支信息队列BIQ 415中)在选择器位(sel)、逻辑562和565以及多态配置信息570的控制下,来重新存储先前的信息。在一个示例性实施方式中,如下计算位(使用标准化VHDL符号):
b0<=direction when(mode=2bit OR address_bit=‘0’)else
biq_b0;
b1<=confidence when(mode=2bit)else
direction when(address_bit=‘1’)else
biq_b1;
we<=2_bit_update when(mode=2bit)else
1_bit_update;
本领域的技术人员将会理解,图5B描述的实施方式对阵列560中的较高存储密度进行了折衷,因为错误依赖性导致了预测器更新的覆盖,其可能发生在获取BIQ信息的时间和存储所获取信息的时间之间。本领域的技术人员还将理解,能够提供一个或多个最近更新值的关联性旁路,以减小或者消除这种错误依赖性更新的影响。图5A和图5B是示例性的而非限制性的。本领域的技术人员将会理解,在实现1位预测器时可以使用其他机制来选择两个位之一(例如,可以使用线程指示符来替代地址位),可以使用各种不同的地址位,诸如包括但不限于最低有效位、最高有效位、多个地址位的散列、线程位等等。本领域的技术人员还将理解,可以在每个线程的基础上维护多态分支预测,这允许一个线程将预测器用作1位预测器,而另一并发执行的应用可以使用存储元件和逻辑来执行2位预测。
参考图6,示出了低开销多态预测器的实现,其中,对多态功能的支持没有明显增加逻辑复杂性。因此,期望使用公共逻辑功能来实现针对所有可配置多态模式的预测更新逻辑。根据新颖的多态预测器,示出了分支预测更新逻辑600,根据本发明,其被用来更新1位和2位(双峰)预测器二者。提供了分支信息队列BIQ 415的内容(诸如biq_b0和biq_b1)以及由图1所示的示例性微处理器的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。
在一个示例性实施方式中,如下计算更新(使用标准化VHDL符号):
b0<=biq_b0 when(mode=2bit OR address_bit=‘0’)else
biq_b1;
b1<=biq_b1 when(mode=2bit)else
‘0’;
1_bit_update<=b0/=direction;
2_bit_update<=b0/=direction OR b1/=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可以包括地址位、散列地址位、线程位之一或者其他适当的寻址手段。
现在参考图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、822、832基于所生成的散列函数和更新使能来选择阵列写使能信息。本领域的技术人员将会理解,除了散列块中的地址位,可以使用诸如线程位之类的附加信息。此外,在本发明的范围内,可以使用位的子集来替代位的散列(并且根据图7A的读取实施方式来使用)。
参考图9,针对根据图7A、图7B和图8的多态预测器的第一操作模式和第二操作模式,示范性地示出了具有共享更新地址计算逻辑的示例性实施方式。根据该实施方式,通过提供附加的地址位,使用更新地址计算逻辑950来计算用于第一操作模式中的多组件预测器中的全局预测器920的地址或者用于具有单个较大阵列的统一预测器的更新地址二者。还可以使用这些地址位在散列逻辑940(总体上对应于图8的散列功能840)的控制下来选择单个逻辑阵列预测器的一个或多个子阵列910、920、930。
多态分支预测器可以包括逻辑元件(例如,更新地址逻辑950),使得逻辑元件在分支预测方法之间共享以提高效率。其他逻辑元件或者组件也可以在分支预测方法之间共享,并且可以包括阵列、预测器更新逻辑、地址生成逻辑等中的至少一个。
现在特别地参考图10A和图10B,示范性地示出了用于使用多态预测器来优化应用性能的方法。根据优选实施方式,通过软件来实现该功能,尽管其他实施方式也是可能的。
现在更具体地参考图10A,方法1000优选地在编译器中实现。该方法开始于步骤1010。在步骤1010中,推导出用于多态预测器的优选配置。在步骤1020中,生成代码以选择多态预测器的优选配置。继而方法终止。根据一个实施方式,该方法由编译器执行一次,以选择用于整个应用的优选配置。根据另一实施方式,该选择执行多次,以用于例如不同的程序阶段。该选择可以基于用户指定的指示,诸如命令行标志、编译指示(pragma)或者其他插入到程序代码中的编译器指示、编译器启发或者程序属性模型、以及属性指示的反馈。
参考图10B,方法1050优选地在应用库、动态编译器、连续程序优化模块、固件或者微码中实现,并且在程序运行时执行。该方法开始于步骤1060。在步骤1060中,分析应用运行时的行为。多种程序分析技术是已知的(诸如包括但不限于配置尝试和测试),并且可以与本发明结合使用。在步骤1070中,基于应用分析(或者应用阶段分析)来选择优选配置。接着,方法终止。
根据一个实施方式,方法1050可以执行一次,以选择用于整个应用的优选配置。根据另一实施方式,该选择在应用运行期间执行多次,例如用于不同的程序阶段。重新执行可以在固定的间隔处发生,或者可以在关键应用量度改变(例如由性能监控基础设置指示)时在应用指示的(例如,通过调用动态配置选择功能)明确的点处发生。优选地使用提供应用统计(诸如分支执行和预测信息)的性能监控基础设置的支持来执行动态应用分析。
现在参考图11,一种用于在操作系统上下文或者管理器划分之间执行切换的方法1100。方法1100开始于步骤1110。在步骤1110中,存储用于应用或者预先调度的划分的配置。在一个实施方式中,在对过程或者划分进行去调度时存储配置。在备选实施方式中,此配置信息在其更新时存储,并且维护在特定于过程或者划分的结构中。在步骤1120,从步骤1110的预先存储的信息中读取用于下一过程或划分的配置信息,并且更新多态配置。方法终止。
工业实用性
在此公开了用于实现多态分支预测器的方法和装置,所述多态分支预测器可以在运行时被配置为选择针对特定应用的结构或者算法中的至少一个。一种多态分支预测器,包括多个分支预测方法。所述方法被选择性地启用,以执行分支预测。将选择机制配置为根据动态设置来选择一个或多个分支预测方法,以便根据当前任务在操作期间优化分支预测器的性能。每个方法可被选择性地启用以执行分支预测。将选择机制配置为根据动态设置来选择一个或多个分支预测方法,以便根据当前任务在操作期间优化分支预测器的性能。
已经描述了用于实现多态分支预测器的方法和装置的优选实施方式(其意在示范而非限制),注意,本领域的技术人员可以根据上面的教导进行修改和变形。因此可以理解,在所附权利要求概括的本发明的范围和精神内,可以对所公开的具体实施方式进行修改。由此描述了本发明的方面,其具有专利法要求的细节和特性,在所附权利要求中记载了所要求和期望得到专利证书保护的内容。
Claims (20)
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所述的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/417,847 US7523298B2 (en) | 2006-05-04 | 2006-05-04 | Polymorphic branch predictor and method with selectable mode of prediction |
US11/417,847 | 2006-05-04 | ||
PCT/US2007/068027 WO2007131032A2 (en) | 2006-05-04 | 2007-05-02 | Methods and apparatus for implementing polymorphic branch predictors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101427213A true CN101427213A (zh) | 2009-05-06 |
CN101427213B CN101427213B (zh) | 2010-08-25 |
Family
ID=38668509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800138518A Expired - Fee Related CN101427213B (zh) | 2006-05-04 | 2007-05-02 | 用于实现多态分支预测器的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US7523298B2 (zh) |
EP (1) | EP2024815B1 (zh) |
JP (1) | JP5186488B2 (zh) |
CN (1) | CN101427213B (zh) |
WO (1) | WO2007131032A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103238134A (zh) * | 2010-11-08 | 2013-08-07 | 高通股份有限公司 | 编码于分支指令中的双模态分支预测器 |
CN107688468A (zh) * | 2016-12-23 | 2018-02-13 | 北京国睿中数科技股份有限公司 | 推测执行处理器中分支指令与分支预测功能的验证方法 |
CN108062236A (zh) * | 2016-11-07 | 2018-05-22 | 杭州华为数字技术有限公司 | 一种软硬件协同分支指令预测方法及装置 |
CN110348250A (zh) * | 2019-06-26 | 2019-10-18 | 中国科学院信息工程研究所 | 多链式哈希栈的硬件开销优化方法及系统 |
CN111459549A (zh) * | 2020-04-07 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080209190A1 (en) * | 2007-02-28 | 2008-08-28 | Advanced Micro Devices, Inc. | Parallel prediction of multiple branches |
US7962724B1 (en) * | 2007-09-28 | 2011-06-14 | Oracle America, Inc. | Branch loop performance enhancement |
US20100332812A1 (en) * | 2009-06-24 | 2010-12-30 | Doug Burger | Method, system and computer-accessible medium for low-power branch prediction |
US8612731B2 (en) | 2009-11-06 | 2013-12-17 | International Business Machines Corporation | Branch target buffer for emulation environments |
US9778934B2 (en) * | 2010-11-16 | 2017-10-03 | Advanced Micro Devices, Inc. | Power efficient pattern history table fetch in branch predictor |
US9495136B2 (en) * | 2011-01-28 | 2016-11-15 | International Business Machines Corporation | Using aliasing information for dynamic binary optimization |
WO2012127589A1 (ja) * | 2011-03-18 | 2012-09-27 | 富士通株式会社 | マルチコアプロセッサシステム、および分岐予測方法 |
JPWO2012127666A1 (ja) * | 2011-03-23 | 2014-07-24 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理方法 |
US8959320B2 (en) * | 2011-12-07 | 2015-02-17 | Apple Inc. | Preventing update training of first predictor with mismatching second predictor for branch instructions with alternating pattern hysteresis |
US9032191B2 (en) * | 2012-01-23 | 2015-05-12 | International Business Machines Corporation | Virtualization support for branch prediction logic enable / disable at hypervisor and guest operating system levels |
CN102608518A (zh) * | 2012-02-29 | 2012-07-25 | 华为技术有限公司 | 一种芯片测试方法及装置 |
US20130283023A1 (en) * | 2012-04-18 | 2013-10-24 | Qualcomm Incorporated | Bimodal Compare Predictor Encoded In Each Compare Instruction |
US9229723B2 (en) * | 2012-06-11 | 2016-01-05 | International Business Machines Corporation | Global weak pattern history table filtering |
US9395984B2 (en) * | 2012-09-12 | 2016-07-19 | Qualcomm Incorporated | Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods |
US9389868B2 (en) | 2012-11-01 | 2016-07-12 | International Business Machines Corporation | Confidence-driven selective predication of processor instructions |
US10795683B2 (en) | 2014-06-11 | 2020-10-06 | International Business Machines Corporation | Predicting indirect branches using problem branch filtering and pattern cache |
US10747539B1 (en) | 2016-11-14 | 2020-08-18 | Apple Inc. | Scan-on-fill next fetch target prediction |
US10642621B2 (en) * | 2017-12-29 | 2020-05-05 | Intel Corporation | System, apparatus and method for controlling allocations into a branch prediction circuit of a processor |
US10740104B2 (en) * | 2018-08-16 | 2020-08-11 | International Business Machines Corporation | Tagging target branch predictors with context with index modification and late stop fetch on tag mismatch |
US11086629B2 (en) * | 2018-11-09 | 2021-08-10 | Arm Limited | Misprediction of predicted taken branches in a data processing apparatus |
US11163577B2 (en) | 2018-11-26 | 2021-11-02 | International Business Machines Corporation | Selectively supporting static branch prediction settings only in association with processor-designated types of instructions |
US10963260B2 (en) * | 2019-01-18 | 2021-03-30 | Arm Limited | Branch predictor |
US11803386B2 (en) * | 2021-09-16 | 2023-10-31 | International Business Machines Corporation | Neuron cache-based hardware branch prediction |
US20230315469A1 (en) * | 2022-03-30 | 2023-10-05 | Advanced Micro Devices, Inc. | Hybrid parallelized tagged geometric (tage) branch prediction |
US11995443B2 (en) | 2022-10-04 | 2024-05-28 | Microsoft Technology Licensing, Llc | Reuse of branch information queue entries for multiple instances of predicted control instructions in captured loops in a processor |
CN117667221B (zh) * | 2024-01-31 | 2024-04-30 | 睿思芯科(深圳)技术有限公司 | 混合算法的两级分支预测系统、方法及相关设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
JPH04245334A (ja) * | 1991-01-31 | 1992-09-01 | Hitachi Ltd | 情報処理装置の命令先読み制御方式 |
US5758142A (en) * | 1994-05-31 | 1998-05-26 | Digital Equipment Corporation | Trainable apparatus for predicting instruction outcomes in pipelined processors |
JPH10240526A (ja) * | 1997-02-27 | 1998-09-11 | Fujitsu Ltd | 分岐予測装置 |
US6550004B1 (en) * | 1999-11-05 | 2003-04-15 | Ip-First, Llc | Hybrid branch predictor with improved selector table update mechanism |
US7203825B2 (en) * | 2001-10-03 | 2007-04-10 | Intel Corporation | Sharing information to reduce redundancy in hybrid branch prediction |
US7120784B2 (en) * | 2003-04-28 | 2006-10-10 | International Business Machines Corporation | Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment |
JP4213181B2 (ja) * | 2004-04-21 | 2009-01-21 | 富士通株式会社 | 分岐予測装置、その方法、及びプロセサ |
KR100630702B1 (ko) * | 2004-10-05 | 2006-10-02 | 삼성전자주식회사 | 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법 |
-
2006
- 2006-05-04 US US11/417,847 patent/US7523298B2/en not_active Expired - Fee Related
-
2007
- 2007-05-02 WO PCT/US2007/068027 patent/WO2007131032A2/en active Application Filing
- 2007-05-02 JP JP2009510049A patent/JP5186488B2/ja not_active Expired - Fee Related
- 2007-05-02 EP EP07797318A patent/EP2024815B1/en not_active Not-in-force
- 2007-05-02 CN CN2007800138518A patent/CN101427213B/zh not_active Expired - Fee Related
-
2008
- 2008-08-19 US US12/194,145 patent/US20080307209A1/en not_active Abandoned
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103238134A (zh) * | 2010-11-08 | 2013-08-07 | 高通股份有限公司 | 编码于分支指令中的双模态分支预测器 |
US9122486B2 (en) | 2010-11-08 | 2015-09-01 | Qualcomm Incorporated | Bimodal branch predictor encoded in a branch instruction |
CN103238134B (zh) * | 2010-11-08 | 2016-03-30 | 高通股份有限公司 | 编码于分支指令中的双模态分支预测器 |
CN108062236A (zh) * | 2016-11-07 | 2018-05-22 | 杭州华为数字技术有限公司 | 一种软硬件协同分支指令预测方法及装置 |
CN107688468A (zh) * | 2016-12-23 | 2018-02-13 | 北京国睿中数科技股份有限公司 | 推测执行处理器中分支指令与分支预测功能的验证方法 |
CN107688468B (zh) * | 2016-12-23 | 2020-05-15 | 北京国睿中数科技股份有限公司 | 推测执行处理器中分支指令与分支预测功能的验证方法 |
CN110348250A (zh) * | 2019-06-26 | 2019-10-18 | 中国科学院信息工程研究所 | 多链式哈希栈的硬件开销优化方法及系统 |
CN111459549A (zh) * | 2020-04-07 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
US11379243B2 (en) | 2020-04-07 | 2022-07-05 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Microprocessor with multistep-ahead branch predictor |
Also Published As
Publication number | Publication date |
---|---|
WO2007131032B1 (en) | 2008-10-30 |
JP2009535750A (ja) | 2009-10-01 |
US20080307209A1 (en) | 2008-12-11 |
JP5186488B2 (ja) | 2013-04-17 |
CN101427213B (zh) | 2010-08-25 |
EP2024815A2 (en) | 2009-02-18 |
EP2024815A4 (en) | 2009-07-22 |
EP2024815B1 (en) | 2012-11-28 |
WO2007131032A2 (en) | 2007-11-15 |
US7523298B2 (en) | 2009-04-21 |
WO2007131032A3 (en) | 2008-09-18 |
US20080005542A1 (en) | 2008-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101427213B (zh) | 用于实现多态分支预测器的方法和装置 | |
US10338927B2 (en) | Method and apparatus for implementing a dynamic out-of-order processor pipeline | |
CN100478871C (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
CN100524206C (zh) | 具有相关机制以预测是否加载与较旧储存相关的处理器 | |
US6105129A (en) | Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction | |
CN100447738C (zh) | 含有多级寄存器文件的数字数据处理设备 | |
US6728866B1 (en) | Partitioned issue queue and allocation strategy | |
US8769539B2 (en) | Scheduling scheme for load/store operations | |
CN101194225B (zh) | 用于支持条件指令无条件提供输出的系统及方法 | |
CN101819521B (zh) | 微处理器以及解析第一或第二类别条件分支指令的方法 | |
CN101523344B (zh) | 用于解析同时所预测分支指令的方法及系统 | |
CN101373427A (zh) | 程序执行控制装置 | |
JP3678443B2 (ja) | スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ | |
CN103927149A (zh) | 间接分支预测 | |
KR20110106717A (ko) | 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법 | |
CN104272248A (zh) | 处理器指令集中的谓词计算 | |
CN100362474C (zh) | 单处理器流水线内的头线程和推理性线程的交替执行的方法和设备 | |
CN102591621B (zh) | 使用计算历史进行预测 | |
US11379240B2 (en) | Indirect branch predictor based on register operands | |
US10901936B2 (en) | Staged power on/off sequence at the I/O phy level in an interchip interface | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
EP1220089B1 (en) | Method for executing conditional branch instructions in a data processor and corresponding data processor | |
EP1220088B1 (en) | Circuit and method for supporting misaligned accesses in the presence of speculative load instructions | |
Shum et al. | Design and microarchitecture of the IBM System z10 microprocessor | |
US10452434B1 (en) | Hierarchical reservation station |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100825 Termination date: 20200502 |
|
CF01 | Termination of patent right due to non-payment of annual fee |