CN101763248A - 用于多模式分支预测器的系统和方法 - Google Patents

用于多模式分支预测器的系统和方法 Download PDF

Info

Publication number
CN101763248A
CN101763248A CN200810190964A CN200810190964A CN101763248A CN 101763248 A CN101763248 A CN 101763248A CN 200810190964 A CN200810190964 A CN 200810190964A CN 200810190964 A CN200810190964 A CN 200810190964A CN 101763248 A CN101763248 A CN 101763248A
Authority
CN
China
Prior art keywords
value
branch
predicted value
prediction
branch 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.)
Pending
Application number
CN200810190964A
Other languages
English (en)
Inventor
王凯峰
孙红霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Beijing R&D Co Ltd
Original Assignee
STMicroelectronics Beijing R&D Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Beijing R&D Co Ltd filed Critical STMicroelectronics Beijing R&D Co Ltd
Priority to CN200810190964A priority Critical patent/CN101763248A/zh
Priority to US12/615,108 priority patent/US9367319B2/en
Priority to EP09180315.5A priority patent/EP2202635B1/en
Publication of CN101763248A publication Critical patent/CN101763248A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative 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)

Abstract

一种用于多模式分支预测器的系统和方法。一种用于预测计算机可执行指令的分支的执行的系统和方法。在实施例中,分支预测器可以包括程序计数寄存器,用于存储程序计数值,以及分支历史寄存器,用于存储分支历史值。此外,分支预测器可以包括具有多个预测值的预测哈希表,每个预测值唯一地对应于多个存储位置。利用这些组件,分支预测器可以产生对应于程序计数值的第一预测值,并且可以产生对应于程序计数值和分支历史值的逻辑组合的第二预测值。利用从两个不同的预测模式中获得的这两个预测值,分支预测器可以更好地适于基于第一和第二预测值产生整体预测值,其比基于单一预测模式的单一预测值更精确。

Description

用于多模式分支预测器的系统和方法
技术领域
本发明涉及用于多模式分支预测器的系统和方法。
背景技术
在计算机体系结构中,超标量计算机(即,每一时钟周期可以执行多于一个指令的具有多个处理组件的计算机)可以被用于高级的、计算密集的应用。通常,超标量计算机会采用一个或多个流水线处理器,其可以被用于低级指令“挤压(crunching)”,以更好地处理某些计算密集的过程。在计算机编程的层级中,这种过程可以被实现为指令集,所述指令集是称为指令分支或更简单地称为分支的子程序的一部分。通过这样的方式,分支可以执行或者也可以不执行,这取决于整个程序的各个方面的执行。为了帮助这种计算密集的分支,有时在程序执行期间遇到分支的指令之前提前执行该分支的指令。分支预测器可以是流水线处理器的一部分,或可以与流水线处理器协同工作,并且可以帮助确定计算机程序中的条件分支是否可能被采用。
预测是否预先执行分支经常被称作分支预测。分支预测器在用于实现更好性能的当今的现代超标量处理器中是很普遍的。有效的分支预测器允许处理器取出并执行指令集,而不必首先等待分支被执行或解析。许多流水线处理器执行某种形式的分支预测,因为通过使用未分配的计算资源(即,流水线)提前开始执行复杂的分支可以节省执行时间。通过正确地预测当操作程序到达分支时分支将被执行允许节省时间,因为未分配的计算能力较早地而不是较迟地被占用。照此,任何分支预测器尽可能地精确可能是有利的。也就是说,开始执行最终没有被采用的分支中的指令集,使得开始执行最终没有采用的分支的任何流水线处理器可能不得不清除(flush)(即,删除)其计算是对计算时间和功率的浪费。也就是说,这种提前执行没有采用的分支中的指令一般不会提供有用的结果。
发明内容
根据本发明的一方面,提供了一种计算模块,包括:第一分支预测模块,用于根据第一分支预测模式产生对应于分支预测的第一预测值;第二分支预测模块,用于根据第二分支预测模式产生对应于分支预测的第二预测值;以及计算模块,用于基于第一分支预测值和第二分支预测值产生对应于数学计算的第三预测值。
根据本发明的一方面,提供了一种用于预测执行分支指令的方法,该方法包括:基于第一预测模式,产生第一临时预测值;基于第二分支预测模式,产生第二临时分支预测值;基于第一和第二临时分支预测值,计算最终分支预测值;以及如果最终分支预测满足预定条件,执行该分支指令。
根据本发明的一方面,提供了一种分支预测器,包括:程序计数寄存器,用于存储程序计数值;分支历史寄存器,用于存储分支历史值;具有多个预测值的预测哈希表,每一个预测值唯一对应于多个存储位置;以及预测组件,用于接收与第一存储位置有关的第一预测值,其对应于程序计数值;接收与第二存储位置有关的第二预测值,其对应于程序计数值和分支历史值的逻辑组合;以及基于第一和第二预测值产生整体预测值。
根据本发明的一方面,提供了一种流水线处理器,包括:处理器控制器;以及处理器,其具有与所述控制器耦合的分支预测器,该分支预测器还包括:第一分支预测模块,用于根据第一分支预测模式产生对应于分支预测的第一预测值;第二分支预测模块,用于根据第二分支预测模式产生对应于分支预测的第二预测值;以及计算模块,用于基于第一分支预测值和第二分支预测值产生对应于数学计算的第三预测值。
根据本发明的一方面,提供了一种计算机系统,包括:处理单元;通过系统总线与处理单元耦合的存储器;以及流水线处理器,其被布置为处理单元的一部分,且用于与存储器通信,该流水线处理器还用于通过以下步骤预测指令分支的执行:基于第一预测模式,产生第一临时预测值;基于第二分支预测模式,产生第二临时分支预测值;基于第一和第二临时分支预测值,计算最终分支预测值;以及如果最终分支预测值超过阈值,传送执行该指令分支的指令。
根据本发明的一方面,提供了一种具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于:基于第一预测模式,产生第一临时预测值;基于第二分支预测模式,产生第二临时分支预测值;基于第一和第二临时分支预测值,计算最终分支预测值;以及如果最终分支预测满足预定条件,执行分支指令。
附图说明
当结合附图时,参考下列详细说明,在此公开的主题的实施例将变得更容易领会,同时变得更好理解。
图1是根据在此公开的主题的实施例的适合的超标量计算环境的示图,其中可以实现用于分支预测的系统和方法。
图2是使用一般被称为Gshare预测模式的预测模式的分支预测器的示图。
图3是根据在此公开的主题的实施例的使用第一和第二分支预测模式的组合以产生分支预测值的分支预测器的示图。
图4是根据在此公开的主题的实施例的预测执行分支的可能性的方法的流程图。
具体实施方式
以下提供的讨论使本领域技术人员能够作出和使用在此公开的主题。此处所述的一般原理可以应用于除以上详细描述以外的实施例和应用,而没有脱离在此公开的主题的精神和范围。本公开不打算限于所示的实施例,而是与符合在此公开或建议的原理和特征的最宽范围相一致。
通过以下关于图3更详细描述的实施例的概述,分支预测器可以包括用来存储程序计数值的程序计数寄存器,以及用来存储分支历史值的分支历史寄存器。此外,分支预测器可以包括具有多个预测值的预测哈希表,每个预测值唯一地对应于多个存储位置。利用这些组件,分支预测器可以产生对应于程序计数值的第一预测值,并且可以产生对应于程序计数值和分支历史值的逻辑组合的第二预测值。利用从两个不同的预测模式中获得的这两个预测值,分支预测器可以更适于基于第一和第二预测值产生整体预测值,该整体预测值比基于单一预测模式的单一预测值更精确。以下关于图1-4更详细地描述以上组件和概念。
图1及以下论述旨在提供适当的计算环境的简短的一般说明,在该计算环境中在此公开的主题可以被实现。尽管没有要求,该系统和方法的各方面将在计算机可执行指令的一般环境中描述,所述计算机可执行指令诸如通过基于计算机的软件组件、基于计算机的硬件组件或逻辑组件执行的程序或计算模块。一般来讲,计算模块可以包括执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构等。此外,本领域技术人员将理解在此公开的主题可以利用其他的计算机系统配置实现,包括手持设备、蜂窝或移动电话、多处理器系统、基于微处理器的或可编程的消费者电子设备、网络PC、小型计算机、主计算机等。各种方法还可以在分布式计算环境中实现,其中通过经由通信网络链接的远程处理设备执行任务。在分布式计算环境中,计算模块可以位于本地和远程存储器存储设备中。
参考图1,用于实现在此公开的系统和方法的示例性系统包括计算机120形式的通用计算设备,其包括一个或多个处理单元121、系统存储器122和耦合包括系统存储器的各种系统组件到处理单元121的系统总线123。该处理单元121可以包括组成流水线处理单元190的一个或多个子处理器,其使处理单元121能够在每一时钟周期执行多于一个指令。这种流水线处理单元190可以包括单个集成电路芯片或可以被布置为若干集成电路上的若干电路。一般,具有流水线操作能力的处理器121被设计成利用可以半独立地执行相关指令的若干相关逻辑处理链。处理器121的这种计算机构(organization)允许整个处理时间被显著地减少。进一步,处理器121可以是向量处理器,其可以在大数据集上执行相同的指令。
系统总线123可以是若干类型总线结构中的任何一种,包括使用多种总线体系结构的任何一种的存储器总线或存储控制器、外围总线和本地总线。举例来说,而不是限制,这种体系结构包括工业标准结构(ISA)总线、微通道体系结构(MCA)总线、增强的ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线,其也被称为Mezzanine总线。
系统存储器包括只读存储器(ROM)124和随机存取存储器(RAM)125。包含例如在启动期间帮助在个人计算机120内的元件之间传输信息的基本例程的基本输入/输出系统(BIOS)126被存储在ROM 124中。个人计算机120还包括硬盘驱动器127,用于从硬盘(未示出)读出和写入到硬盘;磁盘驱动器128,用于从可移动磁盘129读出或写入到可移动磁盘129;以及光盘驱动器130,用于从可移动光盘131(诸如CD ROM或其他光学介质)读出或写入到可移动光盘131。硬盘驱动器127、磁盘驱动器128和光盘驱动器130分别通过硬盘驱动器接口132、磁盘驱动器接口133和光驱接口134而连接到系统总线123。驱动器及其相关的计算机可读介质提供用于个人计算机120的计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。尽管此处所述的示例性环境采用硬盘、可移动磁盘129和可移动光盘131,本领域技术人员应该理解,可以存储
Figure G2008101909641D0000051
由计算机可访问的数据的其他类型的计算机可读介质也可以用于该示例性操作环境,诸如磁带、闪存卡、数字多用途盘、Bernoulli盒式磁带、随机存取存储器(RAM)、只读存储器(ROM)等。
许多程序或计算模块可以被存储在硬盘、磁盘129、光盘131、ROM 124或RAM 125上,包括操作系统135、一个或多个应用程序136、其他程序模块137和程序数据138。用户可以通过诸如键盘140和定点(pointing)装置142的输入设备输入命令和信息到个人计算机120中。这些和其他输入设备常常通过耦合到系统总线的串行端口接口146而连接到处理单元121,但也可以通过其他接口连接,例如并行端口、高速数据端口或通用串行总线(USB)。监视器147或其他类型的显示装置也可以经由诸如视频适配器148之类的接口与系统总线123连接。
在图1的计算机系统120的环境中,分支预测器可以用存储器内的程序模块的形式实现。可选地,这种分支预测器可以被实现为在处理单元的基于硬件的组件内的计算模块。以下关于图2-4描述用于分支预测的方法的系统的各种实施例。
图2是使用称作Gshare预测模式的单一预测模式的分支预测器200的示图。正如本领域中可以理解的,图2的分支预测器200可以被实现为在存储器内实现的计算模块或计算模块组,或实现为可以是图1的处理单元121的一部分的逻辑组件。进一步,这种分支预测器200可以通过在专用集成电路(IC)上的逻辑组件实现,其可以是诸如图1的流水线处理单元190的子处理器的一部分。可以设想其他实施例。
任何分支预测器,特别地,图2的分支预测器200,可以利用许多分支的行为可能与其他最近采用的分支的历史有密切关系的概念。因此,分支预测器200可以包括分支历史寄存器212,其包括关于其它最近遇到的分支是否已被采用的数据。这种最近的历史数据然后可以被用于预测下一分支是否将被采用。
如上所述,希望尽可能地增加分支预测器的效率,因为为最终未被采用的特定分支开始的任何指令执行需要从流水线中清除(即,丢弃到没用的结果)。因而,Gshare分支预测器200可以利用来自程序计数寄存器210的程序计数值以及来自分支历史寄存器212的分支历史值,以在分支预测寄存器260处产生分支预测值。该分支预测值然后可以被用于预测是否将采用该特定分支。
在程序操作期间,当满足触发条件时,可以实现分支预测。触发条件可以是任意数目的典型的操作情况,诸如在程序计数寄存器210达到特定值(例如,分支指令本身,在分支指令之前的五个指令),前一相关分支已经开始执行,等等。因此,当满足触发条件时,来自程序计数寄存器210的当前程序计数值和来自分支历史寄存器212的当前分支历史值可被用于产生如下进一步所述的索引值。
该索引值可以是程序计数值和分支历史值的逻辑组合(或其他数学组合)。在一个实施例中,这两个值的逻辑组合可以是这两个值的每一位的异或函数220(XOR函数)。因此,当产生索引值时,索引值的每一位可以根据在相应操作数中的每一位,(即,来自相应程序计数值和分支历史值的每一位)产生。分支寄存器值的第一位可以与程序计数值的第一位相比较,以产生结果索引值的第一位。如果这两个值相同(即,都是0或都是1),那么在产生的索引值中的结果位可以被设置为0。然而如果一个位或另一位可能是1,那么在产生的索引值中的结果位可能是1。该操作可以对在相应操作数的值中的每一位执行,使得结果索引值可以是程序计数值和分支历史值的异或函数。
一旦产生索引值,它可以在预测哈希表230(PHT)中被交叉引用,以识别对应的预测值。该PHT 230可以是具有若干预测值234的查找表,每一个预测值唯一对应于具有任何可能的索引值232中的每一个的存储位置。因此,对于可以是n位长的索引值,PHT 230可以具有2n个索引值232条目,每一个条目具有唯一相关的预测值234。每个预测值234可以是对应于整数0、1、2或3的2位二进制值。随着在PHT 230中产生和识别索引值232(即,存储位置基于索引值240被识别),结果预测值234可以被识别。如图2的例子中所示,结果索引值240“010011100101”被识别,且预测值234a“00”可以被预测。
预测值234a然后可以被用于确定该分支是否应该被加载到处理组件中(即,预测开始执行该分支)或不应该被加载(即,预测不加载该分支)。在一个实施例中,预测值0或1可能对应于不加载该分支的预测,而预测值2或3可能对应于加载该分支的预测。在图2的例子中,2位二进制值“00”可以是对应于不提前开始执行该分支的预测的预测值0。
图2的分支预测器具有的一个特定问题是索引值240的产生可能不总是得到要采用的特定预测的唯一识别。例如,取决于分支历史寄存器212的内容,相同的索引值234可以基于两个不同的预测请求产生。这种非独占性可能对仅仅使用Gshare预测模式(即,单一预测模式)识别预测值234的分支预测器200是固有的。结果,可能导致精确预测分支是否被采用的可度量误差率,因为特定索引值240可能被分支历史寄存器212和程序计数寄存器210的多于一个的逻辑组合交叉引用。通过简单的4位例子,当进行索引时,程序计数值“1101”(其可能对应于分支A的触发条件)和分支历史值“1010”(其可以表示上四个分支是采用-不采用-采用-不采用)产生XOR索引值“0111”。类似地,当进行索引时,明显不同的程序计数值“0110”(其可能对应于触发条件分支B)和分支历史值“0001”同样产生XOR索引值“0111”。因此,对于这两个对应于需要两个不同分支的预测的单独的触发条件,可以产生相同的索引值240。这导致PHT 230干扰,因为可能没有方法区分是分支A还是分支B正在被预测。预测中的这种误差可能以不可接受的比率发生。然而,可以通过引入如以下图3中所示的实施例所描述的第二预测模式而减少这种误差率。
图3是根据在此公开的主题的实施例使用第一和第二分支预测模式产生分支预测值的分支预测器300的示图。这种分支预测器300可以以硬件或软件实现。在这个实施例中,当满足触发条件时,来自程序计数寄存器310的程序计数值311和来自分支历史寄存器312的分支历史值313可被用于产生两个索引值。如上所述,第一索引值340可以是程序计数值311和分支历史值313的逻辑组合。不同于图2的分支预测器200,可以产生第二索引值341,其例如逐位地对应于程序计数寄存器310中的程序计数值311。通过这样的方式,两个索引值340和341可被用于产生如以下进一步描述的整体结果预测值。
如图3的实施例中所示,程序计数寄存器310和分支历史寄存器312被显示为12位寄存器。本领域技术人员可以理解,可以使用任意大小的寄存器,并且所用的寄存器的大小可以不必等于全局程序计数器(未示出)的大小。为了节省大小和计算的问题,图3的寄存器的大小可以对应于全局程序计数器的字大小的截去值(truncated value),例如64位程序计数器的12个最低有效位。
在产生第一索引值340中,程序计数寄存器310和分支历史寄存器312中的值的逻辑组合也可以是这两个值的每一位的异或函数320(XOR函数)。在可选实施例中,除XOR函数以外的逻辑操作可被用于产生第一索引值340。例如,该逻辑操作可以是OR函数或AND函数。
此外,第二索引值341也可以被识别。在这个实施例中,第二索引值341可能逐位地对应于程序计数值311或根据第一预测模式的某些其它的识别值。
一旦产生每个索引值340和341,每一个可以被交叉引用到预测哈希表330(PHT)中的相应存储位置,以识别相应预测值334。如前所述,PHT 330可以是具有若干预测值334的查找表,每一个预测值唯一对应于任何可能的索引值332。再次,每个预测值334可以是对应于整数0、1、2或3的2位二进制值。随着可在PHT 330中产生和识别索引值332,结果预测值334可以被识别。如图3的例子中所示,“010011100001”的第一结果索引值340可以被识别,且“00”(即0)的预测值334a可以被预测。类似地,“010011101011”的第二结果索引值341可以被识别(其可以是与程序计数寄存器310中的同一值),且“11”(即3)的预测值334b可以被预测。这两个预测值可以被称为临时(interim)预测值。
一旦两个临时预测值334a和334b的每一个都被识别(一个对应于利用第一预测模式的第一索引值340,一个对应于利用第二预测模式的第二索引值341),函数单元350可以数学上基于这两个临时值产生整体预测值。该整体预测值也可以被称为最终预测值。在一个实施例中,函数单元350可以包含求和函数,其将两个临时预测值334a和334b加在一起,使得每个2位临时值可被用于产生3位最终预测值。也就是说,由0、1、2或3的2位二进制值表示的第一和第二临时值334a和334b可以被加在一起,以产生可能是0-7的值的3位二进制最终预测值。
通过利用两个预测模式产生两个临时预测值334a和334b,用于确定是否开始执行分支的预定条件或阈值还可以通过因子2来调节。因此,可以被发送到预测寄存器360的是0-7的3位二进制值的最终预测值,如果该值是4、5、6或7可以产生执行分支的预测,且如果该值是0、1、2或3可以产生不开始执行分支的预测。
在可选实施例中,函数单元350可以是平均值函数,这样每个临时预测的整数值可以被求和并除以2(例如两个临时值的平均)。这可能导致非整数,且预测寄存器360可以是能够存储非整数的浮点寄存器。因此,如果预测寄存器360持有等于或大于2.0的数值,可以作出开始执行该分支的预测。如果预测寄存器360持有小于2.0的数值,可以作出不加载该分支以执行的预测。
更进一步,可以在函数单元350实现附加的函数,诸如加权和,其中对第一临时预测值的加权可以是,第二临时预测值的例如两倍。
当作出预测,通常进行程序的整体执行。如果作出采用分支的预测,那么分支指令被加载到流水线处理器(等等)中以立即执行。如果分支实际上在整体程序的环境内被采用,那么该预测是正确的。当然,如果分支最终没有被采用,那么该预测是不正确的,且流水线被清除,使得已经执行的任何指令都被丢弃。为了提供更好的预测率,可以根据该特定分支实际上是否被采用而更新分支历史寄存器312和与第一和第二索引值相关的特定预测值。
当更新分支历史寄存器312时,移位寄存器370可被用于移位到分支历史寄存器312的最高有效位371。也就是说,可以用正被移位的新值替换最高有效位,且每位可以被右移一位,使得最低有效位可以被移出并丢弃。因此,如果分支实际上被采用,位1可以被移到分支历史寄存器312中,而如果分支最终没有被采用,那么位0可以被移到分支历史寄存器312中。进一步,在另一个实施例中,分支历史寄存器312的最低有效位可以被移位(从而,丢弃已有的最高有效位,同时所有其他的左移)。
在一个实施例中,分支历史寄存器312是全局寄存器。也就是说,表示分支是否已经被采用的位对应于所有分支。例如,如果分支A、B、C和D是要预测的最后四个分支,且实际上所有四个被采用,那么移位到分支历史寄存器中的最后四位将全部是1。在其它实施例中,每个分支可以与它自己的专用分支历史寄存器312有关。尽管没有在图3示出,在程序中的每个分支可能有一个分支历史寄存器。在这方面,包含在特定分支历史寄存器中的仅有数据将是对应于一个特定分支的历史的数据。
进一步,对于特定分支,也可以根据该分支实际上是否被采用而更新对应于第一和第二索引值340和341的PHT预测值334a和334b。在一个实施例中,如果相关预测值334a和334b小于阈值,且该分支实际上被采用,那么这个值可能被增加1。同样地,如果该分支实际上没有被采用,且预测值大于阈值,那么每个预测值可能被减小1。
在另一个实施例中,相关预测值334a和334b可以相应地被增加或减小,无论当前预测值334a和334b是大于还是小于阈值。也就是说,如果分支被采用,每个相关预测值可以增加1(只要该值还未达到最大值3),且如果分支没有被采用,那么每个关联预测值可以减小1(同样,只要该预测值还未达到最小值0)。以下描述在图4的程序流程图的环境中的这些及其他概念。
图4是根据在此公开的主题的实施例预测执行分支的可能性的方法的流程图。在该方法中,可以基于来自具有第一值的第一位置(例如,程序计数寄存器)的数据以及来自具有第二值的第二位置(例如,分支历史寄存器)的数据作出特定分支是否将被执行的预测。该方法起始于步骤400,并继续到步骤402,其中触发条件可以被满足,使得分支预测器基于上述数据集而产生预测。这种触发条件可以是通过程序计数器中的特定地址位置,或可以是预测相关分支将被采用(或已经被采用)。设想任意数目的触发条件,但为了简便起见不进一步讨论。
一旦满足触发条件,该方法移到步骤404,其中可以基于要预测的特定分支确定第一值(例如程序计数值)。该值可以是对应于要预测的分支的地址,或可以是另一个相关地址,诸如触发条件的地址。一旦已经确定第一值,两个附加的步骤然后可以发生。
首先,在步骤410,第一值可以通过算法用第二值进行修改。如上所述,该函数可以是XOR函数,该XOR函数逻辑上组合第一值和第二值,产生结果索引值。然后,对于结果索引值可以确定PHT地址,其中对应于该PHT地址的预测值可以在步骤412确定。如上所述,该值可以是对应于0、1、2或3的二位二进制值。
此外,在步骤406,第一值还可以被用于直接存取在PHT中的另一个特定条目。也就是说,没有以任何方式修改第一值,使得对应于该PHT地址的特定预测值可以被确定。在这两个步骤后,获取两个不同的预测值,一个对应于第一索引值(即,XOR结果),一个对应于第二索引值(即,第一值)。
接下来,在步骤420,两个检索的预测值的每一个可以在数学上被组合在一起。该组合可以是对应于该相关预测值的该两个二进制值的简单相加。因而,可以基于两个取得的预测值的算术组合确定最终预测值。
在判定步骤425,比较器确定整体预测值是否满足特定条件。例如,最终预测值可以等于或大于阈值(例如,等于或大于4)。如果是这样,那么可以预测将采用该分支。然后在步骤430,指令可以被传送到控制处理器,以启动加载分支的指令到流水线处理器等。然而如果整体预测值不满足特定条件,(例如,该值小于或等于3),那么可能不采取动作,即不像在步骤430中的那样传送加载分支的指令。
设想其它实施例,其中第一值可以对应于分支历史值,第二值可以对应于程序计数值。进一步,其他与程序相关的值可以被用作参与作出预测的值,诸如具有偏移量的全局程序计数器、PC地址计数器、子例程计数器等等。更进一步,多于两个的值可以被组合以产生临时值之一。因而分支历史寄存器、程序计数值和PC地址计数器的逻辑组合可被用于确定用于预测的临时值。
在又一个实施例中,多于两个的临时预测值可以被确定,其中每个临时预测值可以用数学方式被组合,以确定整体预测值。
接下来,可以根据分支实际上是否被采用而更新PHT预测值和分支历史寄存器两者。在判定步骤435,可以确定特定分支实际上是否被采用(与预测无关)。如果该分支被采用,那么在步骤440,在对应于这两个索引值的PHT的两个位置中的预测值可以以二进制方式增加1(例如,00增加到01,10增加到11等)。进一步,该方法继续到步骤445,其中对应于该分支实际上是否被采用的值可以被移位到分支历史寄存器。也就是说,如果该分支实际上被采用,那么1可以被移位到分支历史寄存器的最低有效位。当然,这使寄存器中的每一位也左移一个有效位,且最高有效位可以被移出寄存器并丢弃。
然而,如果该分支最终没有被采用,那么在步骤450,在对应于这两个索引值的PHT的两个位置中的预测值可以以二进制方式减小1(例如,01减小到00,10减小到01等)。进一步,该方法继续到步骤455,其中对应于该分支实际上是否被采用的值可以被移位到分支历史寄存器中。也就是说,如果该分支没有被采用,0可以被移位到分支历史寄存器的最低有效位。在更新PHT表和分支历史寄存器后,该方法在步骤460结束。
虽然在此讨论的主题易受各种修改和可选结构,其某些举例说明的实施例在附图中示出,并已经如上被详细描述。此外,本领域技术人员将理解,在并非所有实施例内描述的各个方面可以存在于任意实施例中。然而应该理解,不打算限制该主题为公开的特定形式,相反,打算覆盖全部落在公开的主题的精神和范围内的修改、可选结构和等价物。

Claims (25)

1.一种计算模块,包括:
第一分支预测模块,用于根据第一分支预测模式产生对应于分支预测的第一预测值;
第二分支预测模块,用于根据第二分支预测模式产生对应于分支预测的第二预测值;以及
计算模块,用于基于第一分支预测值和第二分支预测值产生对应于数学计算的第三预测值。
2.如权利要求1所述的计算模块,其中第一预测模式包括产生对应于程序计数值的预测值,第二预测模式包括产生对应于程序计数值和另一值的逻辑组合的预测值。
3.如权利要求2所述的计算模块,其中逻辑组合还包括程序计数值和分支历史值的XOR函数。
4.如权利要求1所述的计算模块,还包括预测哈希表,其用于存储多个预测值,每一个预测值唯一对应于存储位置。
5.如权利要求1所述的计算模块,还包括历史寄存器,用于存储多个位,每一位对应于分支的前次执行。
6.如权利要求5所述的计算模块,还包括与分支历史寄存器耦合的移位寄存器,该移位寄存器用于基于分支的执行来将位值移位到历史寄存器的最低有效位。
7.如权利要求1所述的计算模块,还包括执行模块,用于响应于满足预定条件的第三预测值开始执行指令。
8.如权利要求1所述的计算模块,其中第一预测模式包括产生对应于第一值的预测值,第二预测模式包括产生对应于第一值、第二值和第三值的逻辑组合的预测值。
9.根据权利要求1的计算模块,还包括:
第三分支预测模块,用于根据第三分支预测模式产生对应于分支预测的第四预测值;以及其中
计算模块还用于基于第一分支预测值、第二分支预测值和第四分支预测值产生对应于数学计算的第三预测值。
10.一种用于预测执行分支指令的方法,该方法包括:
基于第一预测模式,产生第一临时预测值;
基于第二分支预测模式,产生第二临时分支预测值;
基于第一和第二临时分支预测值,计算最终分支预测值;以及
如果最终分支预测满足预定条件,执行该分支指令。
11.如权利要求10所述的方法,其中产生第一预测值还包括基于识别对应于程序计数值的存储位置,从预测哈希表中检索预测值。
12.如权利要求10所述的方法,其中产生第二预测值还包括基于识别对应于程序计数值和分支历史值的数学组合的存储位置,从预测哈希表中检索预测值。
13.如权利要求10所述的方法,还包括如果最终预测值等于或大于2,执行分支指令。
14.根据权利要求10的方法,还包括:
确定分支指令是否已经被执行;以及
更新存储在预测哈希表中的对应于执行的分支指令的预测值。
15.如权利要求14所述的方法,还包括:
如果执行相关的分支指令,增加存储的预测值;以及
如果没有执行相关的分支指令,减小存储的预测值。
16.根据权利要求10的方法,还包括:
确定分支指令是否已经被执行;以及
通过将位值移位到分支历史寄存器中,更新存储在分支历史寄存器中的分支历史值。
17.如权利要求14所述的方法,还包括如果分支指令最终被执行则移位位值1,且如果分支指令最终没有被执行则移位位值0。
18.一种分支预测器,包括:
程序计数寄存器,用于存储程序计数值;
分支历史寄存器,用于存储分支历史值;
具有多个预测值的预测哈希表,每一个预测值唯一对应于多个存储位置;以及
预测组件,用于:
接收与第一存储位置有关的第一预测值,其对应于程序计数值;
接收与第二存储位置有关的第二预测值,其对应于程序计数值和分支历史值的逻辑组合;以及
基于第一和第二预测值产生整体预测值。
19.如权利要求18所述的分支预测器,其中预测哈希表包括多个索引值,每一个索引值唯一对应于相应的存储位置和相关预测值,其中每个预测值包括0、1、2或3的二进制值。
20.如权利要求18所述的分支预测器,其中最终值的产生是基于第一和第二预测值的求和函数。
21.如权利要求18所述的分支预测器,其中最终值的产生是基于第一和第二预测值的平均函数。
22.一种流水线处理器,包括:
处理器控制器;以及
处理器,其具有与所述控制器耦合的分支预测器,该分支预测器还包括:
第一分支预测模块,用于根据第一分支预测模式产生对应于分支预测的第一预测值;
第二分支预测模块,用于根据第二分支预测模式产生对应于分支预测的第二预测值;以及
计算模块,用于基于第一分支预测值和第二分支预测值产生对应于数学计算的第三预测值。
23.如权利要求22所述的流水线处理器,还包括单一集成电路芯片。
24.一种计算机系统,包括:
处理单元;
通过系统总线与处理单元耦合的存储器;以及
流水线处理器,其被布置为处理单元的一部分,且用于与存储器通信,该流水线处理器还用于通过以下步骤预测指令分支的执行:
基于第一预测模式,产生第一临时预测值;
基于第二分支预测模式,产生第二临时分支预测值;
基于第一和第二临时分支预测值,计算最终分支预测值;以及
如果最终分支预测值超过阈值,传送执行该指令分支的指令。
25.一种具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于:
基于第一预测模式,产生第一临时预测值;
基于第二分支预测模式,产生第二临时分支预测值;
基于第一和第二临时分支预测值,计算最终分支预测值;以及
如果最终分支预测满足预定条件,执行分支指令。
CN200810190964A 2008-12-25 2008-12-25 用于多模式分支预测器的系统和方法 Pending CN101763248A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN200810190964A CN101763248A (zh) 2008-12-25 2008-12-25 用于多模式分支预测器的系统和方法
US12/615,108 US9367319B2 (en) 2008-12-25 2009-11-09 System and method for a multi-schema branch predictor
EP09180315.5A EP2202635B1 (en) 2008-12-25 2009-12-22 System and method for a multi-schema branch predictor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200810190964A CN101763248A (zh) 2008-12-25 2008-12-25 用于多模式分支预测器的系统和方法

Publications (1)

Publication Number Publication Date
CN101763248A true CN101763248A (zh) 2010-06-30

Family

ID=41647203

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810190964A Pending CN101763248A (zh) 2008-12-25 2008-12-25 用于多模式分支预测器的系统和方法

Country Status (3)

Country Link
US (1) US9367319B2 (zh)
EP (1) EP2202635B1 (zh)
CN (1) CN101763248A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150142A (zh) * 2011-12-07 2013-06-12 苹果公司 具有滞后的下一获取预测器训练
CN105320519A (zh) * 2014-07-25 2016-02-10 想象技术有限公司 使用长历史记录的条件分支预测
CN106528049A (zh) * 2016-11-17 2017-03-22 上海兆芯集成电路有限公司 在多存储体条件分支预测器中用于更新事件的随机数产生
CN107544896A (zh) * 2017-08-11 2018-01-05 深圳震有科技股份有限公司 一种函数调用次数的统计方法、存储介质及终端设备
WO2018082344A1 (zh) * 2016-11-07 2018-05-11 华为技术有限公司 一种软硬件协同分支指令预测方法及装置
CN108196884A (zh) * 2014-04-25 2018-06-22 安华高科技通用Ip(新加坡)公司 利用生成重命名的计算机信息处理器
WO2019183877A1 (zh) * 2018-03-29 2019-10-03 深圳市大疆创新科技有限公司 分支预测的方法与装置
CN110866492A (zh) * 2019-11-13 2020-03-06 广州品唯软件有限公司 一种基线分支的识别方法、装置及计算机系统
US10747539B1 (en) 2016-11-14 2020-08-18 Apple Inc. Scan-on-fill next fetch target prediction

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5552042B2 (ja) * 2010-12-27 2014-07-16 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム解析の方法、システムおよびプログラム
US9983878B2 (en) 2014-05-15 2018-05-29 International Business Machines Corporation Branch prediction using multiple versions of history data
US10534611B2 (en) * 2014-07-31 2020-01-14 International Business Machines Corporation Branch prediction using multi-way pattern history table (PHT) and global path vector (GPV)
EP2996034B1 (en) * 2014-09-11 2018-08-15 Nxp B.V. Execution flow protection in microcontrollers
US20180004627A1 (en) * 2016-06-29 2018-01-04 Centipede Semi Ltd. Sequential monitoring and management of code segments for run-time parallelization
US11496747B2 (en) * 2017-03-22 2022-11-08 Qualcomm Incorporated Intra-prediction mode propagation
US11150908B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
US10908911B2 (en) 2017-08-18 2021-02-02 International Business Machines Corporation Predicting and storing a predicted target address in a plurality of selected locations
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US10884745B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Providing a predicted target address to multiple locations based on detecting an affiliated relationship
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
US10719328B2 (en) 2017-08-18 2020-07-21 International Business Machines Corporation Determining and predicting derived values used in register-indirect branching
US10437592B2 (en) * 2017-08-24 2019-10-08 Qualcomm Incorporated Reduced logic level operation folding of context history in a history register in a prediction system for a processor-based system
US10713050B2 (en) 2017-09-19 2020-07-14 International Business Machines Corporation Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions
US11061575B2 (en) 2017-09-19 2021-07-13 International Business Machines Corporation Read-only table of contents register
US10884929B2 (en) 2017-09-19 2021-01-05 International Business Machines Corporation Set table of contents (TOC) register instruction
US10705973B2 (en) 2017-09-19 2020-07-07 International Business Machines Corporation Initializing a data structure for use in predicting table of contents pointer values
US10896030B2 (en) 2017-09-19 2021-01-19 International Business Machines Corporation Code generation relating to providing table of contents pointer values
US10725918B2 (en) 2017-09-19 2020-07-28 International Business Machines Corporation Table of contents cache entry having a pointer for a range of addresses
US10620955B2 (en) 2017-09-19 2020-04-14 International Business Machines Corporation Predicting a table of contents pointer value responsive to branching to a subroutine
US10929136B2 (en) * 2018-04-11 2021-02-23 Futurewei Technologies, Inc. Accurate early branch prediction using multiple predictors having different accuracy and latency in high-performance microprocessors
CN112540794A (zh) * 2019-09-20 2021-03-23 阿里巴巴集团控股有限公司 处理器核、处理器、装置和指令处理方法
RU2764876C1 (ru) * 2021-04-13 2022-01-21 Акционерное общество "Концерн "Созвездие" Накапливающий сумматор-вычитатель по модулю произвольного натурального числа

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601463A (zh) * 2003-09-24 2005-03-30 三星电子株式会社 低功率消耗的分支预测装置和方法
US20050228977A1 (en) * 2004-04-09 2005-10-13 Sun Microsystems,Inc. Branch prediction mechanism using multiple hash functions

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758142A (en) * 1994-05-31 1998-05-26 Digital Equipment Corporation Trainable apparatus for predicting instruction outcomes in pipelined processors
US6223280B1 (en) * 1998-07-16 2001-04-24 Advanced Micro Devices, Inc. Method and circuit for preloading prediction circuits in microprocessors
US6272624B1 (en) * 1999-04-02 2001-08-07 Compaq Computer Corporation Method and apparatus for predicting multiple conditional branches
US6701426B1 (en) * 1999-10-19 2004-03-02 Ati International Srl Switching between a plurality of branch prediction processes based on which instruction set is operational wherein branch history data structures are the same for the plurality of instruction sets
US6550004B1 (en) * 1999-11-05 2003-04-15 Ip-First, Llc Hybrid branch predictor with improved selector table update mechanism
KR100395763B1 (ko) * 2000-02-01 2003-08-25 삼성전자주식회사 멀티프로세싱 마이크로프로세서에 적합한 분기 예측기
US6886093B2 (en) 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US7370183B2 (en) 2003-04-11 2008-05-06 Board Of Regents, The University Of Texas System Branch predictor comprising a split branch history shift register
DE602005027338D1 (de) * 2004-04-21 2011-05-19 Fujitsu Ltd Abzweigungsvorhersageeinrichtung, verfahren dafür und prozessor
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
KR100817056B1 (ko) * 2006-08-25 2008-03-26 삼성전자주식회사 분기이력 길이표시기, 분기예측 시스템 및 분기 예측 방법
JP5145809B2 (ja) * 2007-07-31 2013-02-20 日本電気株式会社 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
US8782384B2 (en) * 2007-12-20 2014-07-15 Advanced Micro Devices, Inc. Branch history with polymorphic indirect branch information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601463A (zh) * 2003-09-24 2005-03-30 三星电子株式会社 低功率消耗的分支预测装置和方法
US20050228977A1 (en) * 2004-04-09 2005-10-13 Sun Microsystems,Inc. Branch prediction mechanism using multiple hash functions

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN103150142B (zh) * 2011-12-07 2015-10-21 苹果公司 具有滞后的下一获取预测器训练
CN103150142A (zh) * 2011-12-07 2013-06-12 苹果公司 具有滞后的下一获取预测器训练
CN108196884A (zh) * 2014-04-25 2018-06-22 安华高科技通用Ip(新加坡)公司 利用生成重命名的计算机信息处理器
CN105320519A (zh) * 2014-07-25 2016-02-10 想象技术有限公司 使用长历史记录的条件分支预测
CN105320519B (zh) * 2014-07-25 2020-08-25 美普思技术有限责任公司 使用长历史记录的条件分支预测
WO2018082344A1 (zh) * 2016-11-07 2018-05-11 华为技术有限公司 一种软硬件协同分支指令预测方法及装置
CN108062236A (zh) * 2016-11-07 2018-05-22 杭州华为数字技术有限公司 一种软硬件协同分支指令预测方法及装置
US10747539B1 (en) 2016-11-14 2020-08-18 Apple Inc. Scan-on-fill next fetch target prediction
CN106528049A (zh) * 2016-11-17 2017-03-22 上海兆芯集成电路有限公司 在多存储体条件分支预测器中用于更新事件的随机数产生
CN106528049B (zh) * 2016-11-17 2019-06-11 上海兆芯集成电路有限公司 在多存储体条件分支预测器中用于更新事件的随机数产生
CN107544896A (zh) * 2017-08-11 2018-01-05 深圳震有科技股份有限公司 一种函数调用次数的统计方法、存储介质及终端设备
WO2019183877A1 (zh) * 2018-03-29 2019-10-03 深圳市大疆创新科技有限公司 分支预测的方法与装置
CN110462587A (zh) * 2018-03-29 2019-11-15 深圳市大疆创新科技有限公司 分支预测的方法与装置
CN110866492A (zh) * 2019-11-13 2020-03-06 广州品唯软件有限公司 一种基线分支的识别方法、装置及计算机系统
CN110866492B (zh) * 2019-11-13 2022-12-13 广州品唯软件有限公司 一种基线分支的识别方法、装置及计算机系统

Also Published As

Publication number Publication date
EP2202635B1 (en) 2018-11-07
US9367319B2 (en) 2016-06-14
US20100169626A1 (en) 2010-07-01
EP2202635A1 (en) 2010-06-30

Similar Documents

Publication Publication Date Title
CN101763248A (zh) 用于多模式分支预测器的系统和方法
US20210406027A1 (en) Advanced processor architecture
JP5734980B2 (ja) 条件付き非ブランチング命令の非実行を予測するための方法および機器
CN100487641C (zh) 预测提示指令的运行时间更新
CN101373427B (zh) 程序执行控制装置
EP2864868B1 (en) Methods and apparatus to extend software branch target hints
KR102651957B1 (ko) 숫자 언더플로우를 부드럽게 핸들링하기 위한 미세 예측 및 핸들러 엔진
JP5745638B2 (ja) 分岐命令の中に符号化されたバイモーダル分岐予測子
WO2012106716A1 (en) Processor with a hybrid instruction queue with instruction elaboration between sections
CN104899181A (zh) 用于处理向量操作数的数据处理装置和方法
CN104272248A (zh) 处理器指令集中的谓词计算
CN101371223B (zh) 运算数的提早有条件选择
CN100590592C (zh) 处理器及其指令发布方法
JP4213181B2 (ja) 分岐予測装置、その方法、及びプロセサ
CN115668142A (zh) 一种处理器、处理方法及相关设备
CN114528248A (zh) 阵列重构方法、装置、设备及存储介质
KR101250892B1 (ko) 운영 시스템 고속 런 커맨드
US9489204B2 (en) Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process
CN117850881B (zh) 一种基于流水线式的指令执行方法及装置
US20130007424A1 (en) Cascading indirect branch instructions
CN117971319B (zh) 保留站指令处理方法、装置、电子设备及存储介质
CN118245187A (zh) 线程调度方法及装置、电子设备及存储介质
CN117971319A (zh) 保留站指令处理方法、装置、电子设备及存储介质
JP2006163548A (ja) 不安定状態を利用する予測器、プロセッサ
JP2001195252A (ja) マスク技術による無効で分岐効率向上を図るプロセッサ

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20100630