CN103150142A - 具有滞后的下一获取预测器训练 - Google Patents

具有滞后的下一获取预测器训练 Download PDF

Info

Publication number
CN103150142A
CN103150142A CN201210543904XA CN201210543904A CN103150142A CN 103150142 A CN103150142 A CN 103150142A CN 201210543904X A CN201210543904X A CN 201210543904XA CN 201210543904 A CN201210543904 A CN 201210543904A CN 103150142 A CN103150142 A CN 103150142A
Authority
CN
China
Prior art keywords
branch
predictor
hysteresis
prediction data
indication
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
Application number
CN201210543904XA
Other languages
English (en)
Other versions
CN103150142B (zh
Inventor
A·J·保蒙-史密斯
R·B·谷纳
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.)
Apple Inc
Original Assignee
Apple Computer Inc
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 Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN103150142A publication Critical patent/CN103150142A/zh
Application granted granted Critical
Publication of CN103150142B publication Critical patent/CN103150142B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本发明是具有滞后的下一获取预测器训练。公开涉及一种用于高效地进行分支预测的系统和方法。处理器包括两个分支预测器。第一分支预测器快速地生成分支预测数据,诸如分支方向和分支目标地址。第二分支预测器在较后的时间且以较高的预测精度,生成分支预测数据。控制逻辑可确定来自第一和第二分支预测器的每一个的分支预测数据是否匹配。如果发生失配,则可使用由第二分支预测器生成的分支预测数据来训练第一分支预测器。所存储的滞后指示可指示给定分支指令针对其分支方向展现出频繁交替模式。这种行为可导致由于训练不能跟上分支方向的变化所引起的一致分支的错误预测。当确定发生这种状况时,控制逻辑可防止训练第一分支预测器。

Description

具有滞后的下一获取预测器训练
技术领域
本发明涉及微处理器,更具体地,涉及分支预测机制。
背景技术
在每一个时钟周期中,微处理器理想的是为流水线的每一级生成指令的有用执行。然而,在一个或多个特定的流水线级中,流水线中的停顿(stall)可能防止了有用工作被执行。一些停顿可能持续几个时钟周期并严重降低处理器性能。停顿的例子是错误预测的分支指令。
用于减少停顿的负面影响的技术包括交叠的流水线级、允许指令的乱序执行和支持同时多线程。然而,由于可防止所有停顿周期的隐藏的按序退出(in-order retirement),数个时钟周期的停顿仍降低了处理器的性能。为了防止该性能损失,可使用用于减少多周期停顿的出现的技术。这种技术的一个例子就是分支预测。
分支预测技术预测分支指令的条件的评价。此外,分支预测技术可预测分支目标地址。分支预测逻辑可以是复杂的,以便提供高精度。因此,分支预测逻辑可使用多个时钟周期执行评价和计算,以生成条件和分支目标地址的结果。然而,在这些多个时钟周期中,指令从指令高速缓存中被获取。如果分支预测逻辑确定其它指令应被获取,则这些已获取的指令可能被清除。
分支预测逻辑可使用以精度换取更快结果的逻辑。然而,较低的精度可能导致如下情形:不恰当地评价具有变化的分支模式的小的、重复的回路分支。这种情况导致大部分时间产生错误预测和在对应流水线中的指令经常被清除。
鉴于以上情况,期望用于进行有效的分支预测的有效方法和机制。
发明内容
提供了用于有效分支预测的系统和方法。在一个实施方式中,处理器包括两个分支预测器。第一分支预测器可快速地生成分支预测数据,诸如分支方向和分支目标地址。在一些实施方式中,第一分支预测器在单个周期中生成分支预测数据。第二分支预测器可在后续的时间并以较高的预测精度生成分支预测数据。控制逻辑可确定来自第一和第二分支预测器中每一个的分支预测数据是否匹配。
如果控制逻辑确定出现了不匹配,则该控制逻辑可训练第一分支预测器。训练可包括:使用由第二分支预测器生成的分支预测数据来更新第一分支预测器中存储的值。然而,尽管检测到失配,控制逻辑仍可确定不执行训练。第一分支预测器或另一位置可存储用于特定分支指令的滞后(hysteresis)的指示。滞后的指示可指示:给定分支指令表现出关于其分支方向的频繁交替模式。由于训练不能与变化的分支方向保持一致,该行为可能导致分支的错误预测。当确定发生了这种条件时,控制逻辑可防止第一分支预测器的训练。
通过参照以下的说明书和附图,将进一步理解这些和其它实施方式。
附图说明
图1为处理器的前端的一个实施方式的通用框图。
图2为下一获取预测器的一个实施方式的通用框图。
图3为示出有效进行下一获取预测的方法的一个实施方式的通用流程图。
图4为示出用于下一获取预测器的训练更新逻辑400的一个实施方式的通用框图。
图5为示出用于有效进行分支预测训练的方法的一个实施方式的通用流程图。
图6为根据本发明的一个实施方式的处理器的示例性框图。
图7为根据本发明的另一个实施方式的设备的示例性框图。
虽然本发明可以进行各种修改和具有替换的形式,但其特定实施方式通过图中的例子示出并将在此详细描述。然而应理解,附图和对其的详细描述并非意图将本发明限定至所公开的特定形式,而是相反,意图是要覆盖落入由所附权利要求限定的本发明的精神和范围内的所有的修改、等同和替换。如在整个申请中使用的,词语“可”被使用来表示允许的含义(即,具有......的可能性的含义),而不是表示命令的含义(即,必须......的含义)。类似地,词语“包括”表示包括但不限于......。
各种单元、电路或其它组件可被描述为“被配置成”执行一个任务或多个任务。在这样的上下文中,“被配置成”是对结构的广义记载,其通常意指“具有”在操作中执行该一个或多个任务的“电路”。同样,即使当单元/电路/组件目前未开启,该单元/电路/组件仍可被配置成执行该任务。通常,形成对应于“被配置成”的结构的电路可包括硬件电路。类似地,为了描述方便,各种单元/电路/组件可被描述为执行一个或多个任务。这样的描述应被解释为包括短语“被配置成”。记载被配置成执行一个或多个任务的单元/电路/组件的意图明确地是为了不援引35U.S.C§112第6段对于该单元/电路/组件的解释。
具体实施方式
在以下描述中,给出了大量特定的细节以提供对本发明的全面理解。然而,本领域技术人员应认识到:本发明可在没有这些特定细节的情形下实施。在一些情形中,没有详细示出公知的电路、结构和技术以避免模糊本发明。
参照图1,示出了图示处理器100的前端的一个实施方式的通用框图。流水线100可使用用于处理指令的至少一个多级流水线。指令-高速缓存(i-高速缓存)120可存储用于软件应用的指令。通过由地址选择器110传送的程序计数器(PC)地址所指示的一个或多个指令可从i-高速缓存120中获取。如果不存在i-高速缓存失误,则每个时钟周期可从i-高速缓存120获取多个指令。
处理器100可实施地址转换方案,该方案允许使一个或多个虚拟地址空间对于执行软件是可见的。虚拟地址空间中的存储器存取可被转换成与处理器100可得到的实际物理存储器对应的物理地址空间。在使用地址转换的处理器100的实施方式中,可使用物理地址位而不是虚拟地址位来对i-高速缓存120进行部分或完全地寻址。例如,i-高速缓存120可使用虚拟地址位用于高速缓存索引和使用物理地址位用于高速缓存标签。
在执行高速缓存存取时,为了避免执行完全存储器转换的成本,处理器100可在转换旁路缓冲器(Tnslation Lookaside Buffer,TLB)中存储一组最近和/或频繁使用的虚拟到物理地址转换,为便于阐释,未示出转换旁路缓冲器。
增量器(incrementer)112可生成下一连续的PC地址。在一个实施方式中,下一获取预测器130和分支预测器150的每一个可在地址选择器110中改变指令的获取。例如,与无条件分支操作码(opcode)相关的绝对地址值可被发送至地址选择器110。该地址值也可被称作分支目标地址或下一获取程序计数器(PC)地址。下一获取预测器130和分支预测器150的每一个可将预测的分支目标地址发送至地址选择器110。
下一获取预测器130可基于用于给定分支指令的快速预测来生成非连续的PC地址。在一个实施方式中,下一获取预测器130包括下一获取表132和下一获取控制逻辑134。在一个实施方式中,下一获取控制逻辑134在散列函数中将用于从i-高速缓存120获取指令的PC地址的至少一部分与其自身的另一部分或与其它值组合。该特定的散列函数可为相对快速的异或组合(combinatorial)(或复合(combinational))函数。该散列函数的输出可用于索引下一获取表132。下一获取表132中的命中可提供用于从i-高速缓存120中获取指令的下一PC地址。在一个实施方式中,下一获取预测器为单周期(single cycle)预测器。
分支预测器150也接收用于从i-高速缓存120获取指令的PC地址的至少一部分。分支预测器150也可在单独的散列函数中将至少一部分接收到的PC地址与其自身的另一部分或与其它值(诸如,历史信息)组合。可执行各种散列函数以确定对一个或多个模式历史表(PHT)、分支目标缓冲器(BTB)和/或用于提供分支预测数据的其它表的索引。分支预测数据可包括分支方向和分支目标地址。分支预测器150可使用多个时钟周期以既确定分支指令的条件的结果,又确定分支目标地址。
分支预测器150可提供与下一获取预测器130相比具有较高预测精度的分支预测数据。然而,分支预测器150使用多个周期来生成更精确的分支预测数据。因此,下一获取预测器130可用于提供快速、初始的分支预测。接下来,分支预测器150可在随后的时间验证该初始的分支预测。
由下一获取预测器130生成的预测数据可被存储并沿着处理器100的流水线分级。分级后的预测数据可与由分支预测器150在后续的流水线的级生成的预测数据进行比较。当下一获取预测器130生成与由分支预测器150在后续时间生成的预测数据不匹配的分支预测数据时,下一获取预测器130可被更新或使用由分支预测器150生成的预测数据进行训练。如此处所使用的,训练下一获取预测器130可包括用由分支预测器150生成的分支预测数据写或更新在下一获取预测器130中存储的参数。具有频繁交替模式的分支指令可导致大量的分支错误预测。大量的分支错误预测可由分支预测器150对下一获取预测器130的训练不能与频繁交替模式保持一致导致。
在一个实施方式中,下一获取表132可存储对于是否对应的分支指令已表现出滞后的指示。滞后可指示对应的分支指令具有用于其分支方向的频繁交替模式。例如,对应的分支指令可在采用和不采用之间频繁交替。在一些实施方式中,下一获取表132的每一个条目可存储滞后位。在一个例子中,已设定的滞后位可指示对应的分支指令可表现出频繁交替模式。重置的滞后位可指示对应的分支指令可能未表现出频繁交替模式。
当发现在由下一获取预测器130生成的分支预测数据和由分支预测器150为相同的分支指令生成的分支预测数据之间的失配时,控制逻辑可确定是否训练下一获取预测器130。该控制逻辑可使用用于该分支指令的对应的滞后指示。该滞后指示可防止对下一获取预测器130的随后训练。简略地提供了使用滞后指示以改进分支预测的方法和机制的进一步描述。首先,提供了流水线100的进一步描述。
解码单元140可对多个获取的指令的操作码进行解码。可替换地,指令可被分成微指令或微操作码(micro-op)。如此处所使用的,由于本发明可与使用任一实现的架构一起使用,术语“指令”和“微操作码”可互换。解码单元140可将具有额外的解码信息的指令发送至用于在后续流水线的级中进行指令处理的处理器100中的其它组件。例如,解码单元140可在调度队列(dispatch queue)中分配条目。寄存器重命名、指令调度、执行算法操作和/或执行存储器存取以及按序退出是后续指令处理步骤的一些例子。指令处理单元160可主要执行这些步骤的一个。
现在转向图2,示出了下一获取预测器200的一个实施方式的通用框图。如图所示,下一获取预测器200接收当前的获取PC202。接收到的当前的获取PC202可包括用于从识别当前分支指令的i-高速缓存120中获取指令的足够数量的地址位。当前的获取PC 202可来自地址选择器110。一个或多个方法可用于避免混叠并消除在通过当前的获取PC 202获取的多个指令中的两个或更多个分支指令之间的歧义。
在一个实施方式中,接收到的当前的获取PC 202的位的散列可通过散列函数220利用其本身来执行。在一个例子中,当前的获取PC 202的偏移部分可通过散列函数220中的异或(XOR)组合函数与当前的获取PC 202的高位组合。在其它例子中,偏移部分可与除当前的获取PC 202的高位中的每一个之外的位组合。此外,可使用非连续的位和其它组合逻辑。可使用其它值(未示出),诸如历史信息、计数值等。大量的这种替换是可能的且是可预期的。然而,在各种实施方式中,在单个时钟周期之后,通过下一获取预测器200生成分支预测数据是可预期的。因此,散列函数220的功能可涉及快速且有效的散列计算。
下一获取预测器200可包括下一获取表240。下一获取表240可至少通过散列函数220的输出进行索引。下一获取表240可存储对应于分支指令的信息并用于生成分支预测数据。分支预测数据可包括分支方向和分支目标地址;诸如所预测的下一获取PC地址。下一获取表240可存储用于有条件和无条件的分支指令的信息。此外,下一获取表240可存储用于直接和间接的分支指令的信息。
有条件的分支指令执行对于在指令流中采用哪一条路径的确定。如果分支指令确定条件未被满足,则认为不采用该分支指令并执行程序顺序(programorder)中的下一连续的指令。然而,如果分支指令确定条件被满足,则认为采用该分支指令。对于所采用的分支指令,执行如下指令:该指令不是程序顺序中的下一连续指令,而是位于计算出的分支目标地址处。无条件的分支指令被认为是总是被采用的有条件的分支指令。不存在测试的条件,并且按与连续顺序不同的序列进行指令的执行。
对于直接分支指令,分支目标地址可由相对于程序计数器(PC)的值的偏移指定,该偏移可存储在分支指令自身中。对于间接分支指令,分支目标地址可由寄存器或存储器中的值指定,其中在分支指令中可识别寄存器或存储器位置。此外,规定分支目标地址的寄存器或存储器位置可被装载不同的值。
在一个实施方式中,下一获取表240具有多个条目242a-242g。条目242a-242g中的每一个可包括数个字段,诸如至少包括字段250-256。在一个实施方式中,字段250存储状态信息,诸如至少存储有效位。字段252存储散列输出标识符(ID)。该标识符的值可为在较早时间由散列函数220生成的值。在一个实施方式中,字段252可存储被散列的获取PC地址的附加位。在其它实施方式中,散列输出ID足以提供对下一获取表240的快速且确切的查找。
表240中的字段254可存储用于对应的分支指令的所预测的下一获取PC地址值。字段256可存储对于对应的分支指令是否表现出具有滞后的分支行为的指示。例如,对应的分支指令可具有针对其分支方向的频繁交替模式。在极端情形下,在分支指令的每一次执行期间,对应的分支指令可在采用(T)的方向和未采用的方向(NT)之间交替。该模式可类似于T、NT、T、NT等。在训练下一获取预测器200时,这一模式可能难以检测。在对应的分支指令的每一次出现之后,下一获取预测器200可被再训练,但再训练可能导致下一获取预测器200再次错误预测分支指令。因此,针对对应的分支指令的至少一次出现,存储在字段256中的滞后的指示可用于暂停再训练。在一个实施方式中,字段256存储单个位以指示滞后。
至少散列函数220的输出可用于索引下一获取表240。可执行散列函数220的输出与存储在条目242a-242g的字段252中的散列输出ID的比较。如果发现匹配,则存储在字段254和256中的对应的下一获取PC和滞后的指示可从下一获取表240中读取。可用于识别对应的分支指令的命中状态和散列输出ID可与存储在字段254和256中的数据形成组。所有这些数据可被分级并被发送至将被分支预测器150中的控制逻辑使用的后续的流水级(pipe stage)。分支预测器150可验证接收到的数据与其在后续时间生成的分支预测数据是否一致。除了发送数据至分支预测器150之外,读取自下一获取表240的下一获取PC可被发送至地址选择器110。
下一获取预测器200也可接收来自分支预测器150的信息。在分支预测器150验证了来自下一获取预测器200的分支预测数据与由分支预测器150生成的分支预测数据是否匹配之后,这一信息可被接收。下一获取预测器200可接收用于给定分支指令的训练控制信号204、散列输出ID206、下一获取PC地址208和滞后指示210。来自分支预测器的该接收数据可被发送至更新逻辑230。该更新逻辑可确定何时将数据写至下一获取表240和修改条目242a-242g中的哪一个条目。
训练控制信号204可为来自分支预测器150的对于修改下一获取表240中的特定条目的指示。散列输出ID206可用于索引到下一获取表240中并识别条目242a-242g中的给定条目。下一获取PC 208可用于重写存储在所识别的条目的字段254中的PC值。类似地,接收到的滞后指示210可用于重写存储在所识别的条目的字段256中的指示。
发送至下一获取预测器200的训练控制信号204或其它指示符可识别重写在所识别的条目中的哪个字段。在一些情形下,下一获取PC和滞后指示二者均可被更新。在其它情形下,这两个值中的一个被更新,而这两个值中的另一个不被修改。在一些情形下,确定了由下一获取预测器200和分支预测器150生成的分支预测数据之间的失配,但不进行下一获取预测器200的训练。对于这些情形,训练信号204指示:针对对应的分支指令,将不在下一获取表240中进行修改。
现在参照图3,示出了用于有效地进行下一获取预测的方法300的一个实施方式的通用流程图。为了讨论的目的,以连续的顺序示出后续描述的方法的这一实施方式和随后的实施方式中的步骤。然而,在其它实施方式中,一些步骤可以与示出的顺序不同的顺序发生、一些步骤可同时执行、一些步骤可与其它步骤组合,而一些步骤则可不存在。
在框302中,给定的程序计数器(PC)被发送至获取指令。在框304中,使用散列函数将给定PC的一个或多个位与其它控制值组合在一起。其它控制值可为给定PC中的其它位,如前所述。在框306中,至少散列函数的输出被用于索引下一获取表。如果在下一获取表中出现失误(条件框308),则在框310中,可发送对于使用下一连续的PC来获取指令的指示。该指示可从下一获取预测器发送至地址选择器。
如果在下一获取表(条件框308)中发生命中,则在框312中,存储在对应于该命中的条目中的下一获取PC可被发送以用于获取指令。下一获取PC可被发送至地址选择器。在框314中,分支预测数据可被发送至第二分支预测器,诸如分支预测器150,用于验证分支预测数据。分支预测数据可至少包括下一获取PC、滞后指示和命中/失误(hit/miss)状态。命中/失误状态指示所预测的采用/不采用的分支方向。
现在转向图4,示出了图示用于下一获取预测器的训练更新逻辑400的一个实施方式的通用框图。在一个实施方式中,使用训练更新逻辑400来响应于确定来自下一获取预测器和用于验证下一获取预测器的分支预测器中的每一个的分支预测数据之间的失配而生成输出。例如,由这两个预测器中的每一个生成的下一获取PC地址可为不同的。典型地,跟随其后的是下一获取预测器的训练。然而,为了防止由于对应的分支指令的频繁交替模式(诸如,其方向)所引起的一致错误预测,训练更新逻辑400可确定训练是否可被跳过。在一些实施方式中,失配符合(mismatch qualification)可使得该逻辑在训练更新逻辑400中在前面以便在没有出现失配时节约能量消耗。在其它实施方式中,失配符合可用在训练更新逻辑400的结果上以确定是否要使用该结果。
在一个实施方式中,更新逻辑420从更精确的分支预测器接收所预测的分支方向,诸如采用的状态信号410。此外,更新逻辑420可从快速分支预测器接收预测的分支方向和滞后的指示。在一个实施方式中,快速分支预测器可为具有下一获取表的单周期的下一获取预测器。所预测的分支方向可由表命中状态指示。滞后的指示可(例如)为存储在下一获取表的每一个条目中的单个位。因此,更新逻辑420从下一获取预测器接收命中状态412和单个滞后位414。用于快速分支预测器和最终分支预测数据的其它实施方式是可能的和可预期的。
为了确定训练是否可以进行,更新逻辑420中的控制逻辑和算法可用几种不同的方式实现。一些实现的例子可包括组合逻辑门、状态图、场可编程门阵列(FPGA)和诸如硬件描述语言或高级C编程语言的编程语言中的程序代码。程序代码可存储在非晶体管存储介质上,诸如硬盘、主板上的计算机系统存储器、软盘或其它便携式存储装置等。程序代码的指令可装入处理器中并在处理器中的硬件上执行以实现由程序代码描述的算法。在一个实施方式中,更新逻辑420可使用从两个分支预测器接收的值来确定快速分支预测器(诸如,下一分支预测器)所使用的下一获取PC地址是否将被由更精确的分支预测器生成的下一获取PC地址重写。
基于行440和列424-430中示出的条件是否被估计为真,更新逻辑420中的行442图示了下一获取PC地址的特定更新情况。在一个例子中,如行440和列428中所示,如果下一获取预测器提供重置滞后位(NOT(非)滞后),其中重置位可指示对于对应的分支指令没有检测到滞后,并且验证分支预测器生成所采用的分支方向,则进行训练。训练可包括使用由验证分支预测器生成的下一获取PC地址重写存储在下一获取预测器中的对应分支指令的下一获取PC地址。再次参照图2,信号204-210可从验证分支预测器被发送至下一获取预测器200。信号204-210中的信息可用于识别条目242a-242g的特定条目并至少重写存储下一获取PC地址的字段254。
在继续进行图4中的更新逻辑420的行440和列428中示出的估计条件时,可设置用于存储在下一获取预测器中的对应分支指令的滞后位。除了重写存储在下一获取预测器中的下一获取PC地址之外,还可以设置滞后位。再次参照图2,信号204-210中的信息可如前所述用于识别条目242a-242g的特定条目并至少重写存储对于对应分支指令的滞后的指示的字段256。转向图4,基于列424-430中示出的条件是否被估计为真,更新逻辑420中的行444图示了对于对应分支指令的滞后的指示的特定更新情况。
再次,可使用下一获取预测器和验证分支预测器(即,更精确的分支预测器)之间的分支预测数据的失配来确定在行440和列424-430中的每一个中示出的条件的符合。这种符合可发生在使用更新逻辑420中的算法之前。可替换地,这种符合可发生在使用更新逻辑420中的算法找到结果之后。在另一个例子中,如行440和列430所示,如果下一获取预测器提供重置的滞后位,其中重置的位可指示对于对应分支指令没有检测到滞后,并提供下一获取表中的命中状态,则进行训练。这一情形下的训练可包括使存储在下一获取预测器中的对应分支指令的下一获取PC地址无效。无效这一特定的下一获取PC地址可通过无效下一获取表240中的条目242a-242g的对应条目来完成。此外,可在这一识别出的条目中设置对应的滞后位。
对通过更新逻辑420中的行440以及列424和426识别的情形中的每一个,训练可被跳过。尽管在下一获取预测器和验证分支预测器(即,更精确的分支预测器)之间的分支预测数据中检测到失配,但在这些情形下训练可被跳过。对于其分支方向表现出频繁交替模式的特定分支指令,跳过的训练可提高分支预测精度。在一个例子中,i-高速缓存120在每一个时钟周期提供4个获取的指令,并且验证分支预测器(即,更精确的分支预测器)使用5个时钟周期生成分支预测数据。在下一获取预测器和更精确的分支预测器之间检测到失配时,20个指令符合被清除。能量被消耗来处理这20个指令且该工作的结果是无用的。因此,确定对于某些条件训练可被跳过可降低能量消耗并使流水线充满有用的工作。
行440和列424图示了下一获取预测器提供设置的滞后位时的情形,其中一个设置的位可指示对于对应分支指令检测到滞后。在列424示出的情形中,下一获取预测器在下一获取表中提供命中状态,或验证分支预测器(即,更精确的分支预测器)提供预测的所采用的分支方向。行442示出存储在下一获取预测器中的下一获取PC地址可被维持的情形。对于下一获取预测器中对应的分支指令没有进行修改或训练。行444示出对应的滞后位可被重置的情形,其中重置的值可指示对于对应分支指令没有检测到滞后。
行440和列426图示了下一获取预测器提供设置的滞后位时的情形,其中设置的位可指示对于对应分支指令检测到滞后。在列426中示出的情形中,下一获取预测器在下一获取表中提供失误状态。此外,验证分支预测器(即,更精确的分支预测器)提供预测的未采用的分支方向。行442示出存储在下一获取预测器中的下一获取PC地址可被维持的情形。对于下一获取预测器中的对应分支指令,没有进行修改或训练。行444示出对应的滞后位也可被维持的情形。
现在参照图5,示出了用于有效地进行分支预测训练的方法500的一个实施方式的通用流程图。为了讨论的目的,以连续的顺序示出随后描述的方法的这一实施方式和后续实施方式中的步骤。然而,在其它实施方式中,一些步骤可以与示出的顺序不同的顺序进行、一些步骤可同时执行、一些步骤可与其它步骤组合,而一些步骤可不存在。
在框502中,对于给定分支指令,通过第一分支预测器生成第一分支预测数据。在框504中,对于同一给定分支指令,通过与第一分支预测器相比具有较高精度的第二分支预测器在后续时间生成第二分支预测数据。在框506中,第一和第二分支预测数据被比较。如果确定在第一和第二分支预测数据(条件框508)之间未出现失配,则在框510中,可生成对于第一分支预测器不执行训练的指示。这两个分支预测器为给定分支指令生成相同的结果。
如果确定在第一和第二分支预测数据(条件框508)之间出现失配,则在框512中,基于第一和第二分支预测数据以及对应于给定分支指令的滞后指示,确定训练第一分支预测器的条件是否存在。再次简要地参照图4,这些条件可通过更新逻辑420中的行440和列424-430指定。如果确定存在至少一个训练第一分支预测器的条件(条件框514),则在框516中,可基于所确定的条件针对给定分支指令更新第一分支预测器中的预测方向、分支目标地址和滞后指示中的一个或多个。由更精确的第二分支预测器生成的分支预测数据可用于更新存储在第一分支预测器中的值。
如果确定不存在训练第一分支预测器(条件框514)的条件,则方法500的控制流程转至框510且可生成用于指示对于第一分支预测器不执行训练的指示。在各种实施方式中,至少检测对于其分支方向表现出频繁交替模式的给定分支指令可防止第一分支预测器的训练。再次参照图4,更新逻辑420可图示使用滞后来确定防止第一分支预测器的训练的条件的一个实施方式。
现在参照图6,示出了根据本发明的一个实施方式的处理器的示例性框图。图6中示出的处理器包括第一分支预测器,被配置成提供对于给定分支指令是否具有滞后的指示和为所述给定分支指令生成第一分支预测数据;第二分支预测器,被配置成为所述给定分支指令生成第二分支预测数据;以及控制逻辑,被配置成响应于确定在所述第一分支预测数据和所述第二分支预测数据之间存在失配,至少部分地基于所述第一和第二分支预测数据以及对于所述滞后的指示中的至少一个生成输出,其中所述输出用于确定是否训练所述第一分支预测器。
现在参照图7,示出了根据本发明的另一个实施方式的处理器的示例性框图。图7中示出的处理器包括下一获取预测器,被配置成提供关于给定分支指令是否具有滞后的指示,和为所述给定分支指令生成至少一个下一获取程序计数器(PC)地址;分支预测器,被配置成为所述给定分支指令生成分支预测数据;以及控制逻辑,被配置成确定在下一获取PC地址和所述分支预测数据中的PC地址之间的失配,和响应于所述确定,至少基于所述滞后的指示生成输出,其中所述输出用于确定是否训练所述下一获取预测器。
根据本发明的一个实施方式的一个方面,所述滞后指示所述给定分支指令具有用于其分支方向的频繁交替的模式。
根据本发明的一个实施方式的另一个方面,所述输出是通过使用所述滞后、所述第一和第二分支预测数据的组合函数而生成的。
根据本发明的一个实施方式的另一个方面,所述输出指示所述给定分支指令具有滞后,并且所述第一和第二分支预测数据中的至少一个指示所述给定分支指令被采用。
根据本发明的一个实施方式的另一个方面,所述输出指示所述给定分支指令具有滞后,并且所述第一和第二分支预测数据中的至少一个指示所述给定分支指令未被采用。
根据本发明的一个实施方式的另一个方面,所述第一分支预测器包括具有多个条目的表,其中每一个条目被配置成存储下一获取程序计数器(PC)地址和滞后指示。
根据本发明的一个实施方式的另一个方面,与所述第一分支预测器相比,所述第二分支预测器具有较高的分支预测精度。
根据本发明的一个实施方式的另一个方面,与所述第一分支预测器生成所述第一分支预测数据相比,所述第二分支预测器在较后的流水级中生成所述第二分支预测数据。
所属技术领域的技术人员知道,本发明的各方面可以实现为系统、方法或计算机程序产品。因此,本发明的各方面可以具体实现为以下形式,即:可以是完全的硬件实施方式、也可以是完全的软件(包括固件、驻留软件、微代码等)实施方式,还可以是硬件方面和软件方面结合的实施方式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
虽然非常详细地描述了以上实施方式,但是一旦完全理解了以上公开内容,大量变型和修改对本领域技术人员将是显而易见的。意欲将以下权利要求解释成包括所有这样的变型和修改。

Claims (21)

1.一种处理器,包括:
第一分支预测器,被配置成提供对于给定分支指令是否具有滞后的指示和为所述给定分支指令生成第一分支预测数据;
第二分支预测器,被配置成为所述给定分支指令生成第二分支预测数据;以及
控制逻辑,被配置成响应于确定在所述第一分支预测数据和所述第二分支预测数据之间存在失配,至少部分地基于所述第一和第二分支预测数据以及对于所述滞后的指示中的至少一个生成输出;
其中所述输出用于确定是否训练所述第一分支预测器。
2.根据权利要求1所述的处理器,其中所述滞后指示所述给定分支指令具有用于其分支方向的频繁交替的模式。
3.根据权利要求2所述的处理器,其中所述输出是通过使用所述滞后、所述第一和第二分支预测数据的组合函数而生成的。
4.根据权利要求3所述的处理器,其中所述输出指示所述给定分支指令具有滞后,并且所述第一和第二分支预测数据中的至少一个指示所述给定分支指令被采用。
5.根据权利要求3所述的处理器,其中所述输出指示所述给定分支指令具有滞后,并且所述第一和第二分支预测数据中的至少一个指示所述给定分支指令未被采用。
6.根据权利要求4所述的处理器,其中所述第一分支预测器包括具有多个条目的表,其中每一个条目被配置成存储下一获取程序计数器(PC)地址和滞后指示。
7.根据权利要求4所述的处理器,其中与所述第一分支预测器相比,所述第二分支预测器具有较高的分支预测精度。
8.根据权利要求4所述的处理器,其中与所述第一分支预测器生成所述第一分支预测数据相比,所述第二分支预测器在较后的流水级中生成所述第二分支预测数据。
9.一种进行分支预测的方法,包括:
从第一分支预测器提供对于给定分支指令是否具有滞后的指示;
使用所述第一分支预测器为所述给定分支指令生成第一分支预测数据;
使用第二分支预测器为所述给定分支指令生成第二分支预测数据;
确定在所述第一分支预测数据和所述第二分支预测数据之间是否存在失配;以及
至少部分地基于所述滞后以及在所述第一和第二分支预测数据中的至少一个,生成输出,其中所述输出用于确定是否训练所述第一分支预测器。
10.根据权利要求9所述的方法,其中所述滞后指示所述给定分支指令具有用于其分支方向的频繁交替的模式。
11.根据权利要求10所述的方法,其中生成所述输出包括:
基于所述滞后、所述第一和第二分支预测数据来确定组合输出。
12.根据权利要求11所述的方法,其中所述输出指示所述给定分支指令具有滞后,并且所述第一和第二分支预测数据中的至少一个指示所述给定分支指令被采用。
13.根据权利要求11所述的方法,其中所述输出指示所述给定分支指令具有滞后,并且所述第一和第二分支预测数据中的至少一个指示所述给定分支指令未被采用。
14.根据权利要求12所述的方法,进一步包括:
尽管不训练所述第一分支预测器,但更新所述第一分支预测器以指示所述给定分支指令不具有滞后。
15.根据权利要求11所述的方法,进一步包括:
响应于确定所述输出指示所述给定分支指令不具有滞后且所述第二分支预测数据指示所述给定分支指令被采用,训练所述第一分支预测器并设置用于指示所述给定分支指令具有滞后的指示。
16.根据权利要求11所述的方法,进一步包括:
响应于确定所述输出指示所述给定分支指令不具有滞后且所述第一分支预测数据指示所述给定分支指令被采用,训练所述第一分支预测器并设置用于指示所述给定分支指令具有滞后的指示。
17.一种进行分支预测的设备,包括:
下一获取预测器,被配置成提供关于给定分支指令是否具有滞后的指示,和为所述给定分支指令生成至少一个下一获取程序计数器(PC)地址;
分支预测器,被配置成为所述给定分支指令生成分支预测数据;以及
控制逻辑,被配置成确定在下一获取PC地址和所述分支预测数据中的PC地址之间的失配,和响应于所述确定,至少基于所述滞后的指示生成输出,其中所述输出用于确定是否训练所述下一获取预测器。
18.根据权利要求17所述的设备,其中所述滞后指示所述给定分支指令具有用于其分支方向的频繁交替的模式。
19.一种包括用于执行根据权利要求9-16中任一项所述的方法中的步骤的装置的分支预测设备。
20.一种包括根据权利要求1-8中任一项所述的处理器的计算设备。
21.一种包括根据权利要求17-19中任一项所述的处理器的计算设备。
CN201210543904.XA 2011-12-07 2012-09-28 具有滞后的下一获取预测器训练 Active CN103150142B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/313,691 2011-12-07
US13/313,691 US8959320B2 (en) 2011-12-07 2011-12-07 Preventing update training of first predictor with mismatching second predictor for branch instructions with alternating pattern hysteresis

Publications (2)

Publication Number Publication Date
CN103150142A true CN103150142A (zh) 2013-06-12
CN103150142B CN103150142B (zh) 2015-10-21

Family

ID=47189708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210543904.XA Active CN103150142B (zh) 2011-12-07 2012-09-28 具有滞后的下一获取预测器训练

Country Status (7)

Country Link
US (1) US8959320B2 (zh)
EP (1) EP2602711B1 (zh)
JP (1) JP5927616B2 (zh)
KR (1) KR101376900B1 (zh)
CN (1) CN103150142B (zh)
TW (1) TWI499975B (zh)
WO (1) WO2013085599A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015024452A1 (zh) * 2013-08-21 2015-02-26 华为技术有限公司 一种分支预测方法及相关装置
CN105867880A (zh) * 2016-04-01 2016-08-17 中国科学院计算技术研究所 一种面向间接跳转分支预测的分支目标缓冲器及设计方法
CN106104466A (zh) * 2014-03-24 2016-11-09 高通股份有限公司 在超越控制分支预测器中的推测历史转递以及相关电路、方法和计算机可读媒体
CN106406814A (zh) * 2016-09-30 2017-02-15 上海兆芯集成电路有限公司 处理器和将架构指令转译成微指令的方法
CN111886581A (zh) * 2018-04-11 2020-11-03 华为技术有限公司 高性能微处理器中的准确早期分支预测
CN113918225A (zh) * 2021-11-04 2022-01-11 成都海光微电子技术有限公司 指令预测方法、指令数据处理装置、处理器以及存储介质

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9811340B2 (en) * 2012-06-18 2017-11-07 Intel Corporation Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
US9639368B2 (en) 2014-06-13 2017-05-02 International Business Machines Corporation Branch prediction based on correlating events
KR101624636B1 (ko) * 2015-03-03 2016-05-27 주식회사 에이디칩스 명령어 패치 장치 및 방법
US10747539B1 (en) * 2016-11-14 2020-08-18 Apple Inc. Scan-on-fill next fetch target prediction
US10613867B1 (en) 2017-07-19 2020-04-07 Apple Inc. Suppressing pipeline redirection indications
CN111638912B (zh) * 2019-09-19 2023-03-10 中国科学院信息工程研究所 一种轻量级的处理器芯片分支预测器内容隔离方法及电子装置
US11269642B2 (en) 2019-09-20 2022-03-08 Microsoft Technology Licensing, Llc Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor
US11379240B2 (en) * 2020-01-31 2022-07-05 Apple Inc. Indirect branch predictor based on register operands
US11294684B2 (en) 2020-01-31 2022-04-05 Apple Inc. Indirect branch predictor for dynamic indirect branches
US12014178B2 (en) 2022-06-08 2024-06-18 Ventana Micro Systems Inc. Folded instruction fetch pipeline
US12014180B2 (en) 2022-06-08 2024-06-18 Ventana Micro Systems Inc. Dynamically foldable and unfoldable instruction fetch pipeline
US12008375B2 (en) 2022-06-08 2024-06-11 Ventana Micro Systems Inc. Branch target buffer that stores predicted set index and predicted way number of instruction cache
US12020032B2 (en) 2022-08-02 2024-06-25 Ventana Micro Systems Inc. Prediction unit that provides a fetch block descriptor each clock cycle
US11816489B1 (en) * 2022-08-02 2023-11-14 Ventana Micro Systems Inc. Microprocessor with prediction unit pipeline that provides a next fetch address at a rate of one per clock cycle
US11836498B1 (en) 2022-08-02 2023-12-05 Ventana Micro Systems Inc. Single cycle predictor

Citations (4)

* 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
US20040225870A1 (en) * 2003-05-07 2004-11-11 Srinivasan Srikanth T. Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor
US20070239974A1 (en) * 2006-04-07 2007-10-11 International Business Machines Corporation System and method for target branch prediction using correlation of local target histories
CN101763248A (zh) * 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 用于多模式分支预测器的系统和方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4022A (en) * 1845-05-01 Improvement in machines for hackling and cleaning hemp and flax
US9012A (en) * 1852-06-15 Improved valve or gate for oblique-float paddle-wheels
US7023A (en) * 1850-01-15 peters
JP3494484B2 (ja) 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
CN1153133C (zh) * 1996-12-09 2004-06-09 松下电器产业株式会社 采用小规模硬件作高命中率分支预测的信息处理装置
US6374349B2 (en) * 1998-03-19 2002-04-16 Mcfarling Scott Branch predictor with serially connected predictor stages for improving branch prediction accuracy
US6553488B2 (en) * 1998-09-08 2003-04-22 Intel Corporation Method and apparatus for branch prediction using first and second level branch prediction tables
US6115810A (en) * 1998-09-16 2000-09-05 Sun Microsystems, Inc. Bi-level branch target prediction scheme with mux select prediction
US6647490B2 (en) 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US6721877B1 (en) 2000-05-25 2004-04-13 Advanced Micro Devices, Inc. Branch predictor that selects between predictions based on stored prediction selector and branch predictor index generation
US20060036837A1 (en) 2004-08-13 2006-02-16 Stark Jared W Prophet/critic hybrid predictor
US20060190710A1 (en) 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches
US7523298B2 (en) * 2006-05-04 2009-04-21 International Business Machines Corporation Polymorphic branch predictor and method with selectable mode of prediction
US7707398B2 (en) 2007-11-13 2010-04-27 Applied Micro Circuits Corporation System and method for speculative global history prediction updating
CN105183663B (zh) * 2010-03-29 2018-11-27 威盛电子股份有限公司 预取单元和数据预取方法

Patent Citations (4)

* 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
US20040225870A1 (en) * 2003-05-07 2004-11-11 Srinivasan Srikanth T. Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor
US20070239974A1 (en) * 2006-04-07 2007-10-11 International Business Machines Corporation System and method for target branch prediction using correlation of local target histories
CN101763248A (zh) * 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 用于多模式分支预测器的系统和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LOH,G.H: "Revisiting the performance impact of branch predictor latencies", 《PERFORMACE ANALYSIS OF SYSTEMS AND SOFTWARE,2006 IEEE INTERNATIONAL SYMPOSIUM ON》, 21 March 2006 (2006-03-21), pages 59 - 69, XP010910194, DOI: 10.1109/ISPASS.2006.1620790 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015024452A1 (zh) * 2013-08-21 2015-02-26 华为技术有限公司 一种分支预测方法及相关装置
CN106104466A (zh) * 2014-03-24 2016-11-09 高通股份有限公司 在超越控制分支预测器中的推测历史转递以及相关电路、方法和计算机可读媒体
CN106104466B (zh) * 2014-03-24 2019-05-28 高通股份有限公司 在超越控制分支预测器中的推测历史转递以及相关电路、方法和计算机可读媒体
CN105867880A (zh) * 2016-04-01 2016-08-17 中国科学院计算技术研究所 一种面向间接跳转分支预测的分支目标缓冲器及设计方法
CN105867880B (zh) * 2016-04-01 2018-12-04 中国科学院计算技术研究所 一种面向间接跳转分支预测的分支目标缓冲器及设计方法
CN106406814A (zh) * 2016-09-30 2017-02-15 上海兆芯集成电路有限公司 处理器和将架构指令转译成微指令的方法
CN106406814B (zh) * 2016-09-30 2019-06-14 上海兆芯集成电路有限公司 处理器和将架构指令转译成微指令的方法
CN111886581A (zh) * 2018-04-11 2020-11-03 华为技术有限公司 高性能微处理器中的准确早期分支预测
CN113918225A (zh) * 2021-11-04 2022-01-11 成都海光微电子技术有限公司 指令预测方法、指令数据处理装置、处理器以及存储介质

Also Published As

Publication number Publication date
TW201324343A (zh) 2013-06-16
JP5927616B2 (ja) 2016-06-01
KR101376900B1 (ko) 2014-03-20
EP2602711B1 (en) 2014-12-24
KR20130064002A (ko) 2013-06-17
EP2602711A1 (en) 2013-06-12
TWI499975B (zh) 2015-09-11
JP2013120597A (ja) 2013-06-17
WO2013085599A1 (en) 2013-06-13
US20130151823A1 (en) 2013-06-13
CN103150142B (zh) 2015-10-21
US8959320B2 (en) 2015-02-17

Similar Documents

Publication Publication Date Title
CN103150142B (zh) 具有滞后的下一获取预测器训练
US7797521B2 (en) Method, system, and computer program product for path-correlated indirect address predictions
JP6731048B2 (ja) 有用性追跡を用いた補助分岐予測
KR101459536B1 (ko) 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치
TWI386850B (zh) 用於主動式分支目標位址快取記憶體管理之方法以及裝置
JP5198879B2 (ja) ループ末尾に置かれた分岐により分岐履歴レジスタの更新を抑制すること
CN100547542C (zh) 指令预取机构
JP3565504B2 (ja) プロセッサにおける分岐予測方法及びプロセッサ
KR101174560B1 (ko) 잘못된 추측성 업데이트의 링크 스택 복구
EP2864868B1 (en) Methods and apparatus to extend software branch target hints
US20100262813A1 (en) Detecting and Handling Short Forward Branch Conversion Candidates
US10795683B2 (en) Predicting indirect branches using problem branch filtering and pattern cache
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
US10564992B2 (en) Simulation apparatus and storage medium
EP4202661A1 (en) Device, method, and system to facilitate improved bandwidth of a branch prediction unit
US11645078B2 (en) Detecting a dynamic control flow re-convergence point for conditional branches in hardware
US9086888B2 (en) Using a plurality of tables for improving performance in predicting branches in processor instructions
US11397685B1 (en) Storing prediction entries and stream entries where each stream entry includes a stream identifier and a plurality of sequential way predictions
WO2021108007A1 (en) Apparatus and method for dual branch prediction

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