CN102112964B - 分支目标缓存器分配 - Google Patents

分支目标缓存器分配 Download PDF

Info

Publication number
CN102112964B
CN102112964B CN200980129456.5A CN200980129456A CN102112964B CN 102112964 B CN102112964 B CN 102112964B CN 200980129456 A CN200980129456 A CN 200980129456A CN 102112964 B CN102112964 B CN 102112964B
Authority
CN
China
Prior art keywords
predicted value
branch
btb
entry
branch instruction
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.)
Expired - Fee Related
Application number
CN200980129456.5A
Other languages
English (en)
Other versions
CN102112964A (zh
Inventor
W·C·莫耶
J·W·斯考特
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.)
NXP USA Inc
Original Assignee
Freescale Semiconductor 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 Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Publication of CN102112964A publication Critical patent/CN102112964A/zh
Application granted granted Critical
Publication of CN102112964B publication Critical patent/CN102112964B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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
    • 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/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

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

提供了用于分配分支目标缓存器(BTB)(14)中的条目的数据处理系统(10)和方法。所述方法包括:接收要在数据处理器(40)中执行的分支指令;确定BTB不包括与所述分支指令对应的条目;识别BTB中用于分配的条目,所识别的BTB中的条目包括目标标识符(30)以及对于先前接收的分支指令的第一预测值(32);基于所述第一预测值与第二预测值的比较确定是否将所述分支指令分配到所识别的BTB中的条目,其中所述第二预测值产生自分支历史表(BHT);以及,如果与所述第一预测值相比,所述第二预测值指示更强采用预测,则将所述分支指令分配到所识别的条目。

Description

分支目标缓存器分配
技术领域
本公开一般地涉及半导体处理器,并且更具体地,涉及具有分支目标缓存器的半导体处理器。
背景技术
分支预测是用于避免或减少处理器空闲时间的常见技术。分支预测通常包括使用分支目标缓存器(BTB),分支目标缓存器用于存储预期要重新使用的分支信息,以加速分支指令的执行。BTB条目用于通过将与与分支指令关联的信息高速缓存在BTB条目内来加速取回(fetching)位于分支目标目的地的分支目标指令的处理过程。在执行分支指令时,分支指令的目的地(分支目标指令)被加载到处理器内的指令队列中。优选地,用于所预测的分支的条目是在BTB中,从而使得可以快速地获得分支目标并将其加载到指令队列中。对于获得并加载不在BTB中的分支目标,花费更长的时间,结果可能存在其中中央处理单元(CPU)空闲的时钟周期。因此,期望加载BTB以使得每次存在分支时在BTB中存在命中。这可能很难实现,但是期望具有较少的其中必须从BTB外部获得分支目标的次数。在J.K.L.Lee和A.J.Smith所著的″Branch prediction strategies and branch targetbuffer Design″(Computer,17(1),January 1984)中呈现了对分支预测问题及BTB的替代物的概述。
也可以将辅助分支预测器结构与BTB组合以便增强分支性能。由于BTB条目包含分支目标信息以及可选的预测器,因此它们是大的,并且仅可以提供有限数目的条目。为了辅助分支性能,可以结合BTB使用一个或更多个另外的分支预测器结构,以预测未确定的条件分支的方向,并允许投机性的取回和预测的分支路径的可选的执行。通常使用的一种这样的结构是分支历史表(BHT),其包含小预测器的集合。不存储分支目标信息,因此,对于给定的面积,BHT的容量可以大于BTB。在BHT中,对于每一个分支,或者对于分支结果的全局历史,存储分支先前的分支结果的历史,并搜索该表以获得分支预测。可以以高的准确度与适中的成本来构建BHT预测器。注意,利用BHT,执行时间比分支在BTB中命中的情况的大,但是相对于不使用分支预测器要减小。在S.McFarling所著的″Combining BranchPredictors″(DEC WRL-TN-36)中可以找到BHT风格的良好的概述以及更加复杂的结构。
除所描述的BTB和BHT结构以外,另一分支加速技术是使用置信预测器。置信预测器分配置信水平以评估分支预测正确的可能性。可以使用分支预测器置信机制来基于规定的置信水平修改从分支预测器获得的预测,以便进一步增加分支预测的有效性。置信预测器还可以用在混合分支预测方案中作为动态选择器。在混合分支预测方案中,实现多个预测器,并对于每一个分支从预测器中的一个进行选择。该选择可以是基于置信预测器的,或者基于尝试为每一个分支结果探察最佳预测器的置信逻辑的。可以在E.Jacobsen,E.Rotenberg,和J.E.Smith所著的″Assigning Confidence to Conditional BranchPredictions″(MICRO-29)中找到关于置信预测器和关于置信逻辑的另外的信息。
用于增加分支在BTB中的可能性技术一个技术是BTB具有大的存储容量。增加BTB的大小增加了BTB的成本,因此增加了具有该处理器的集成电路的面积。尽管面积增加可能是小的,但是它可能是显著的,特别是对于低成本处理器。因此,需要这样一种技术,其不要求BTB中的另外的存储,用于避免或减少其中缓存器加载以分支目标导致其中处理器空闲的时钟周期的情况。
附图说明
通过示例的方式示出本发明,并且本发明不受附图的限制,在附图中,相同的附图标记表示类似的元件。图中的元件出于简化和清楚的目的而示出,并且并不必然按比例绘制。
图1是根据一实施例的具有分支目标缓存器(BTB)的处理器的框图;以及
图2是在理解图1的处理器的中有用的表。
具体实施方式
在一个方面中,处理器具有分支目标缓存器(BTB),其用于存储预期被预测用于供处理器使用的分支指令地址。BTB条目包含分支目标信息以及用于相应分支的预测器。在为在BTB中未中的分支分配BTB中的条目中,当前在BTB中的分支被识别为最可能被取代的一个,并且可以被称作取代候选者(replacement candidate)。与取代候选者关联的是在未来被使用的可能性。处理器最近已执行了的但是不在BTB中的分支(其可以被称作当前分支)被考虑用于取代该取代候选者,而不是自动地取代该取代候选者。将取代候选者的存储的预测信息与当前分支的预测进行比较,并且基于该比较做出分配的决定。如果当前分支被认为比取代候选者分支更可能被采用,则执行分配并且当前分支取代该取代候选者。如果取代候选者分支被认为比当前分支更可能被采用,则处理器不执行分配并且取代候选者被保持在BTB中。在就哪个更可能被使用进行确定中也可以使用预测的置信。这通过参考附图以及下面的说明将最佳地理解。
如在此所使用的,术语“总线”用于表示可以用来传送一个或更多个各种类型的信息(诸如,数据、地址、控制、或状态)的多个信号或导体。如此处讨论的导体可以参考作为单个导体、多个导体、单向导体、或双向导体来示出或描述。然而,不同实施例可以改变导体的实现方式。例如,可以使用分立的单向导体而不是双向导体,反之亦然。此外,可以用串行地或以时分复用方式传送多个信号的单个导体取代多个导体。同样地,承载多个信号的单个导体可以被分开成承载这些信号的子集的多种不同导体。因此对于传送信号存在许多选择。
图1所示的是数据处理系统10,其包括处理器40以及总线22。数据处理系统10可以另外地包括存储器和I/O单元,以及多种其它电路(未示出)。处理器40包括耦合到总线22的处理逻辑12、BTB 14、BTB控制器16、逻辑18、分支历史表(BHT)20。处理器40可以是任何类型的处理器,诸如,例如微处理器、微控制器、数字信号处理器等。在一个实施例中,处理器40可以称作处理器核。在另一实施例中,处理器40可以是多处理器数据处理系统中的许多处理器中的一个。此外,处理器40可以是流水线式的处理器,尽管未如此示出。处理器40可以包括另外的电路,但是为了清楚理解本发明的操作而并未示出。处理逻辑12具有执行单元。BHT 20具有分支历史寄存器26和置信预测器28。处理逻辑12具有从执行单元24耦合到BTB控制器16的输出。BTB 14具有耦合到逻辑18的输出。BHT 20具有耦合到逻辑18的第一输出和从置信预测器28耦合到逻辑18的第二输出。逻辑18具有耦合到BTB控制器16的输出。在该示例中,BTB可以具有相对小数目的可能的条目,诸如32个。举例来说,那些条目中的一个在图1中被示出为具有两个部分:目标地址30和预测32。每一个条目还具有分支指令地址(未示出),其被用作用于确定命中的标签(tag)信息。分支指令地址被用于通过与BTB 14中每一个条目的存储的标签信息进行比较来确定在BTB 14中是否存在命中。此外,在该条目中可能存在未示出的另外的比特,诸如有效比特。在该示例中,预测32具有两个比特以指示以下四种情形之一:强不采用、弱不采用、弱采用、以及强采用。通常对于目标地址识别这四种可能性。该两比特预测信息先前在现有技术中已经使用以帮助预测分支是否将被采用或不采用以及相应地指引指令取回。当在BTB 14中执行的分支指令命中时,匹配的条目将该分支的目标地址(目标地址30)以及基于预测32的状态的关于该分支是否将被采用或不采用的预测提供到逻辑18。逻辑18将该信息提供到处理逻辑12以允许处理逻辑12指引指令取回以及预测的分支路径的执行。
在操作中,处理器40根据处理逻辑12中的指令缓存器执行指令。当分支指令(或者简单地,分支)被解码并开始执行时,这时它成为所述当前分支。在每一分支的执行时,BHT 20基于该分支的结果更新分支历史,包括该分支选择的预测器,以及分支历史寄存器26。分支历史寄存器26存储最后N个分支的结果。在一个实施例中,分支历史寄存器26被实现为移位寄存器,并且每次执行分支指令时,如果该分支未被采用,则将0的值移位到该寄存器中,而如果该分支被采用,则将1的值移位到该寄存器中。来自该寄存器的最老的值被丢弃。因此,分支历史寄存器26提供了最后N个执行的分支的采用/不采用的历史,提供了分支行为的全局历史。分支历史寄存器26的大小在不同的实施例中可以改变。在典型的实施例中,N范围可以从0(在这种情况下,没有实现分支历史寄存器)到小的最大数值,诸如16。对于其中当前分支不在BTB 14中的情况,BHT 20提供了两比特预测器用于当前分支,其表示下列四种状态中的一个:强不采用、弱不采用、弱采用、以及强采用。BHT 20将用于当前分支的两比特预测器提供到逻辑18。在操作中,BHT 20存储多个预测器,并且从BHT中选择用于当前分支的预测器。该选择可以基于分支历史26中包含的当前分支历史、基于当前分支的程序计数器值、基于该程序计数器值和分支历史寄存器26的某种组合、或者以本领域种已知的各种方式来进行。BTB控制器16在BTB 14中的条目当中识别取代候选者。BTB 14将用于取代候选者的两比特预测器提供到逻辑18。然后,逻辑18确定当前分支是否比取代候选者更可能被使用。如果当前分支更可能被使用,则BTB控制器执行分配,并用当前分支取代该取代候选者。BTB控制器响应于处理逻辑12而操作,并因此从处理逻辑12接收关于当前分支的所需信息。如果取代候选者更可能被使用,则这是不分配情形,并且取代候选者被保持在BTB 14中,且在BTB 14不对当前分支进行分配。
图2中示出了逻辑18决定是否是不分配情形或者是否应当执行分配的基础的一个示例。图2中示出了一表,其示出了对于取代候选者的四种可能的预测:强不采用、弱不采用、弱采用、以及强采用。对于取代候选者的这四种可能性中的每一个,对于当前分支存在同样的四种可能性,并且在表中进行了示出。因此,存在所示出的十六种可能的组合,并且对于每一种组合在表中示出了相应的决定。对于其中取代候选者被预测为强不采用的情况,决定是进行分配而不管当前分支的预测。在这种情况下,对于所述可能性中的三种,当前分支具有较高的被采用的预测,并且在第四种上持平。由于当前分支比取代候选者更最近地被采用,因此决定进行分配。对于具有弱不采用预测的取代候选者的情况,决定也是对于所有四种可能性进行分配。对于该情况的不同决定是合理的可能性。对于其中对于取代候选者预测是弱不采用而对于当前分支预测是强不采用的情况,该预测对于取代候选者是稍微更有利的,是一类别不同(one category difference),但是决定仍是进行分配。当前分支的更最近的执行被认为比稍微的不同更有利。在对于取代候选者分支是弱采用的情况,除了当前分支是强不采用的情况(这是两类别不同)以外,决定都是分配。对于当前分支是弱不采用的一类别不同,决定是进行分配。再次地,对于这种情况,不同的决定将被认为是合理的。对于取代候选者分支具有强采用的预测的情况,仅对于具有弱不采用和强不采用预测的当前分支决定是进行分配。如在前述的两种情况中那样,在其中存在有利于取代候选者的一类别不同的情况下,决定是进行分配,但是作出相反的决定也可能是合理的。本发明构思了作为对图2中的条目进行分配或不分配的决定结果的替代,特别是对于其中取代候选者分支通过一类别不同而具有更有利的被采用的结果的情况。所述决定可以由逻辑18实现,并且在某些实施例中,可以实现多个表(诸如图2中所示的表),对于所述表中的特定条目作出不同的分配决定,并且可以由逻辑18使用动态选择处理来确定在当前分支在BTB中未中的情况下为当前分支进行分配确定时所依赖的所述多个表中的表。
在进行分配决定时的进一步的考虑是考虑BHT 20的置信预测器28所提供的置信预测器。利用置信预测器进一步修改预测。在图2的表的示例中,对于当前分支,预测被认为是高度可信的。低的置信度可能改变决定。例如,如果对于对当前分支为弱采用并且对取代候选者为强采用的预测的置信度为低,则更好的决定可能是不分配。在其中置信度非常低的情况下,可能甚至使对于其中取代候选者和当前分支都被预测为弱采用的情况的决定从分配切换到不分配。在某些实施例中,可以利用逻辑18来基于置信预测器28所提供的置信值改变图2中所示的表中的一个或更多个条目,或者,可以利用逻辑18来在分配决定的多个表中的一个或多个表当中进行选择。注意,尽管置信预测器28被示出为BHT 20的一部分,然而,在替代实施例中,置信预测器28可以作为独立结构而存在。在另一替代实施例中,可以使用多个预测器,而不是单个BHT 20,并且对于当前分支,置信预测器28可以基于图2中表条目选择多个预测器的多个预测中的一个,作为要用于逻辑18所执行的选择处理的预测。在又一实施例中,多个预测器中的一个可以具有其自己的取代决定表,并且置信预测器28对于要用于当前分支的具体预测器的选择也可以选择与该具体的选择的预测器相关联的特定表以供逻辑18在进行分配确定时使用。
用于提供预测的历史方法通常被认为是最准确的,并且添加置信因子在进行决定时提供了进一步的指引。存在仔细考虑过的提供阈值的其他技术,并且可以提供诸如简化和速度等方面的优点。所描述的在分配和不分配之间进行决定时将取代候选者的预测与当前分支的预测进行比较的方法可以受益于使用通过置信方法增强了的历史方法。其他的预测方案也可以是有效的。在BTB的分配中的改进可以仍利用获得对于当前分支以及对于取代候选者的预测的另一方法实现。不管所选择的预测方案如何,将取代候选者的预测和当前分支的预测进行比较以用于决定是否以用于在BTB中未中的当前分支的新条目取代BTB中的当前条目,都是进一步的改进。
至此应当理解,已经提供了一种分配分支目标缓存器(BTB)中的多个条目中的条目的方法。所述方法包括:接收要在数据处理器中执行的分支指令。所述方法进一步包括:确定BTB不包括与所述分支指令对应的条目。所述方法进一步包括:识别BTB中用于分配的条目,所识别的BTB中的条目包括目标标识符以及对于先前接收的分支指令的第一预测值。所述方法进一步包括:基于所述第一预测值与第二预测值的比较确定是否将所述分支指令分配到所识别的BTB中的条目。所述方法可以进一步特征在于:所述确定步骤进一步特征在于,所述第二预测值产生自分支历史表(BHT)。所述方法可以进一步包括:如果与所述第一预测值相比,所述第二预测值指示更强采用预测,则将所述分支指令分配到所识别的条目。所述方法可以进一步包括:将多个比特移位到分支历史寄存器中,其中所述多个比特中的每一比特指示分支指令的结果,并且其中所述多个比特中的一个或多个比特被用在生成用于对BHT寻址的索引中。所述方法可以进一步包括:当作为所述分支指令的结果出现指令流改变时,更新BHT。所述方法可以进一步特征在于:所述第二预测值是基于多个先前的指令分支的结果的。所述方法可以进一步特征在于:所述第二预测值是基于多个先前的指令分支的结果的。所述方法可以进一步包括:基于多个正确的预测,产生预测置信值;将所述预测置信值与所述第二预测值组合以产生第三预测值;以及利用所述第三预测值确定是否将所述分支指令分配到所识别的条目。所述方法可以进一步特征在于:所述第一预测值包括两比特预测值,用于指示下列状态中的一个:强不采用状态、弱不采用状态、弱采用状态、以及强采用状态。所述方法可以进一步特征在于:所述第二预测值包括两比特预测值,用于指示下列状态中的一个:强不采用状态、弱不采用状态、弱采用状态、以及强采用状态。
还公开了一种在数据处理系统中分配分支目标缓存器(BTB)中的多个条目中的条目的方法。所述方法包括:接收要在所述数据处理系统中执行的多个指令,所述多个指令包括一个或更多个分支指令。所述方法进一步包括:产生分支历史表BHT,其中BHT是基于在所述多个指令的指令执行期间指令流改变结果的累积的,其中所述指令流改变结果的累积用于产生第一预测值。所述方法进一步包括:接收要在所述数据处理系统中执行的第一分支指令。所述方法进一步包括:确定BTB不包括与所述第一分支指令对应的条目。所述方法进一步包括:识别BTB中用于分配的条目,所识别的BTB中的条目包括用于第二分支指令的第二预测值。所述方法进一步包括:基于所述第一预测值与所述第二预测值的比较确定是否将所述第一分支指令分配到所识别的BTB中的条目。所述方法进一步包括:如果与所述第二预测值相比,所述第一预测值指示更强采用预测,则将所述第一分支指令分配到所识别的条目;以及如果与所述第二预测值相比,所述第一预测值指示更强不采用预测,则不将该条目分配给所述第二分支指令。所述方法可以进一步包括:基于所述数据处理系统中的多个正确的预测产生预测置信值;将所述预测置信值与所述第一预测值组合以产生第三预测值;以及,利用所述第三预测值确定是否将所述分支指令分配到所识别的条目。所述方法可以进一步特征在于:所述第一预测值包括两比特预测值,用于指示下列状态中的一个:强不采用状态、弱不采用状态、弱采用状态、以及强采用状态。所述方法可以进一步特征在于:所述第二预测值包括两比特预测值,用于指示下列状态中的一个:强不采用状态、弱不采用状态、弱采用状态、以及强采用状态。所述方法可以进一步包括:将多个比特移位到分支历史寄存器中,其中所述多个比特中的每一比特指示分支指令的结果,并且其中所述多个比特中的至少一个被用用于产生用于对BHT寻址的索引。
还公开了一种数据处理系统。所述数据处理系统包括:处理逻辑,用于执行指令。所述数据处理系统进一步包括:分支目标缓存器BTB,其耦合到所述处理逻辑,所述BTB具有多个条目,所述多个条目中的条目包括与第一分支指令对应的第一预测值。所述数据处理系统进一步包括:BTB控制器,其耦合到所述BTB,用于选择所述多个条目中要被取代的条目。所述数据处理系统进一步包括:分支历史表(BHT),其耦合到处理逻辑,用于基于所述多个指令的执行期间指令流改变结果的累积提供第二预测值,所述第二预测值对应于第二分支指令。所述数据处理系统进一步包括:BTB取代分配逻辑,其耦合到所述BTB以接收所述第一预测值,并耦合到所述BHT以接收所述第二预测值,所述BTB取代分配逻辑用于执行所述第一预测值与所述第二预测值的比较,以及用于基于所述比较使所述多个条目中的所述条目分配给所述第二分支指令。所述数据处理系统可以进一步包括:置信预测器,其耦合到所述BTB取代分配逻辑,所述置信预测器用于基于多个正确的分支预测产生预测置信值,其中所述预测置信值与所述第二预测值组合以产生第三预测值,并且其中所述第三预测值被用于确定是否将所述多个条目中的所述条目分配给第二分支指令。所述数据处理系统可以进一步特征在于:所述第一预测值包括两比特预测值,用于指示下列状态中的一个:强不采用状态、弱不采用状态、弱采用状态、以及强采用状态。所述数据处理系统可以进一步特征在于:所述第二预测值包括两比特预测值,用于指示下列状态中的一个:强不采用状态、弱不采用状态、弱采用状态、以及强采用状态。所述数据处理系统可以进一步特征在于:所述比较确定如果与所述第一预测值相比所述第二预测值指示更强采用值,对所述第二分支指令分配所述多个条目中的所述条目。
由于实现本发明的设备大部分由对于本领域技术人员已知的电子部件和电路构成,因此,并未在比如上面所说明的被认为是必要的程度更大的程度上解释电路细节,以便于理解和领会本发明的基本概念并且不使本发明的教导不清楚或被分散。
因此,应当理解,此处所描述的架构仅仅是示例性的,实际上,可以实现许多其它架构来实现相同功能。在一抽象的但仍是清楚的意义上来说,用于实现相同功能的组件的任何布置被有效地″关联″以使得实现期望的功能。因此,此处组合来实现特定功能的任何两个组件可以被看作彼此″关联″以使得实现期望的功能,而不管架构或中间部件。同样地,如此关联的任何两个部件也可以被视为彼此″操作连接″或″操作耦合″以实现期望的功能。
此外,本领域技术人员将认识到,上面描述的操作的功能之间的界限仅是说明性的。多个操作的功能可以组合到单个操作中,和/或单个操作的功能可以分布在另外的操作中。此外,替代的实施例可以包括特定的操作的多个实例,并且操作的顺序在多种其它实施例中可以改变。
尽管此处参考特定实施例描述了本发明,但是可以进行多种修改和改变而不偏离如下面的权利要求所提出的本发明的范围。例如,BTB14被描述为具有32个条目,然而也可以使用不同的数目。因此,本申请文件和附图应被认为是说明性的而不是限制性的意思,并且意图将所有这样的修改包括在本发明的范围内。此处就特定实施例描述的任何益处、优点、或对问题的解决方案意图不应被认为是任何或全部权利要求的关键的、需要的、或实质性的特征或要素。
如在此所使用的术语″耦合″意图不应被限制为直接耦合或机械耦合。
此外,如在此所使用的术语″a″或″an″(一)被定义为一个或多于一个。此外,权利要求中引入性的短语诸如″至少一个″和″一个或更多个″的使用不应当被认为暗示了通过不定冠词″a″或″an″(一)而对另一权利要求要素的引入将含这样引入的权利要求要素的任何特定权利要求限制到仅包含一个这样的要素的发明,即使在同一权利要求包括引入性的短语″一个或更多个″或″至少一个″以及不定冠词诸如″a″或″an″(一)时也是如此。对于定冠词的使用也是如此。
除非以另外的方式说明,否则诸如″第一″和″第二″之类的术语被用于任意地在这样的术语描述的要素之间进行区分。因此,这些术语并不必然意图表示这些要素的时间上的或其它优先级。

Claims (13)

1.一种分配分支目标缓存器BTB中的多个条目中的条目的方法,所述方法包括:
接收要在数据处理器中执行的分支指令;
在确定BTB不包括与所述分支指令对应的条目时:
识别BTB中用于分配的条目,所识别的BTB中的条目包括目标标识符以及对于先前接收的分支指令的第一预测值;以及
基于所述第一预测值与第二预测值的比较确定是否将所述分支指令分配到所识别的BTB中的条目,
其中所述第二预测值是基于多个先前的指令分支的结果。
2.如权利要求1所述的方法,其中:所述第二预测值产生自分支历史表BHT。
3.如权利要求2所述的方法,进一步包括:如果与所述第一预测值相比,所述第二预测值指示更强采用预测,则将所述分支指令分配到所识别的条目。
4.如权利要求2所述的方法,进一步包括将多个比特移位到分支历史寄存器中,其中所述多个比特中的每一比特指示分支指令的结果,并且其中所述多个比特中的一个或多个比特被用在生成用于对BHT寻址的索引中。
5.如权利要求1所述的方法,其中将所述分支指令分配到所识别的条目进一步包括:如果与所述第一预测值相比,所述第二预测值指示更强不采用预测,则不将所述分支指令分配到所识别的条目。
6.如权利要求1所述的方法,进一步包括:
基于多个正确的预测,产生预测置信值;
将所述预测置信值与所述第二预测值组合以产生第三预测值;以及
利用所述第三预测值确定是否将所述分支指令分配到所识别的条目。
7.如权利要求1所述的方法,其中所述第一预测值包括两比特预测值,用于指示下列状态中的一个:强不采用状态、弱不采用状态、弱采用状态、以及强采用状态。
8.如权利要求1所述的方法,其中所述第二预测值包括两比特预测值,用于指示下列状态中的一个:强不采用状态、弱不采用状态、弱采用状态、以及强采用状态。
9.一种数据处理系统,包括:
处理逻辑模块,用于执行指令;
分支目标缓存器BTB,其耦合到所述处理逻辑模块,所述BTB具有多个条目,所述多个条目中的条目包括与第一分支指令对应的第一预测值;
BTB控制器,其耦合到所述BTB,用于选择所述多个条目中要被取代的条目;
分支历史表BHT,其耦合到处理逻辑模块,用于基于所述指令的执行期间指令流改变结果的累积提供第二预测值,所述第二预测值对应于第二分支指令;以及
BTB取代分配逻辑模块,其耦合到所述BTB以接收所述第一预测值,并耦合到所述BHT以接收所述第二预测值,其中所述BTB取代分配逻辑模块被配置为当在执行所述第二分支指令并且所述第二分支指令不在所述BTB中时,将所述第一预测值与所述第二预测值比较,以及基于所述比较使所述多个条目中的所述条目分配给所述第二分支指令。
10.如权利要求9所述的数据处理系统,进一步包括置信预测器,其耦合到所述BTB取代分配逻辑模块,所述置信预测器用于基于多个正确的分支预测产生预测置信值,其中所述预测置信值与所述第二预测值组合以产生第三预测值,并且其中所述第三预测值被用于确定是否将所述多个条目中的所述条目分配给第二分支指令。
11.如权利要求9所述的数据处理系统,其中所述第一预测值包括两比特预测值,用于指示下列状态中的一个:强不采用状态、弱不采用状态、弱采用状态、以及强采用状态。
12.如权利要求9所述的数据处理系统,其中所述第二预测值包括两比特预测值,用于指示下列状态中的一个:强不采用状态、弱不采用状态、弱采用状态、以及强采用状态。
13.如权利要求9所述的数据处理系统,其中当所述比较确定如果与所述第一预测值相比,所述第二预测值指示更强采用预测,对所述第二分支指令分配所述多个条目中的所述条目。
CN200980129456.5A 2008-07-29 2009-05-11 分支目标缓存器分配 Expired - Fee Related CN102112964B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/181,363 US8205068B2 (en) 2008-07-29 2008-07-29 Branch target buffer allocation
US12/181,363 2008-07-29
PCT/US2009/043452 WO2010014286A1 (en) 2008-07-29 2009-05-11 Branch target buffer allocation

Publications (2)

Publication Number Publication Date
CN102112964A CN102112964A (zh) 2011-06-29
CN102112964B true CN102112964B (zh) 2014-10-29

Family

ID=41609521

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980129456.5A Expired - Fee Related CN102112964B (zh) 2008-07-29 2009-05-11 分支目标缓存器分配

Country Status (7)

Country Link
US (1) US8205068B2 (zh)
EP (1) EP2324421B1 (zh)
JP (1) JP5504523B2 (zh)
KR (1) KR101246641B1 (zh)
CN (1) CN102112964B (zh)
TW (1) TW201005634A (zh)
WO (1) WO2010014286A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874884B2 (en) 2011-11-04 2014-10-28 Qualcomm Incorporated Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold
US20140250289A1 (en) * 2013-03-01 2014-09-04 Mips Technologies, Inc. Branch Target Buffer With Efficient Return Prediction Capability
GB2534522B (en) * 2014-07-25 2016-12-28 Imagination Tech Ltd Conditional branch prediction using a long history
US11755484B2 (en) * 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10423419B2 (en) * 2016-06-27 2019-09-24 International Business Machines Corporation Stream based branch prediction index accelerator for multiple stream exits
GB201701841D0 (en) * 2017-02-03 2017-03-22 Univ Edinburgh Branch target buffer for a data processing apparatus
KR101894894B1 (ko) 2017-06-16 2018-09-05 서울대학교산학협력단 바이트코드 처리 장치 및 동작 방법
CN111984323A (zh) * 2019-05-21 2020-11-24 三星电子株式会社 将微操作分配到微操作高速缓存器的处理设备及其操作方法
US12067399B2 (en) * 2022-02-01 2024-08-20 Apple Inc. Conditional instructions prediction
US11809874B2 (en) 2022-02-01 2023-11-07 Apple Inc. Conditional instructions distribution and execution on pipelines having different latencies for mispredictions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740415A (en) * 1994-10-12 1998-04-14 Mitsubishi Denki Kabushiki Kaisha Instruction supplying apparatus with a branch target buffer having the contents so updated as to enhance branch prediction accuracy
CN1369780A (zh) * 2001-07-16 2002-09-18 智权第一公司 处理涵盖跨越指令高速线的分支目标地址高速区的分支的装置及方法
EP1271308A2 (en) * 2001-06-20 2003-01-02 Fujitsu Limited Apparatus and method for branch prediction based on history table

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
JP3486690B2 (ja) * 1995-05-24 2004-01-13 株式会社ルネサステクノロジ パイプライン方式プロセッサ
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US5978909A (en) * 1997-11-26 1999-11-02 Intel Corporation System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer
US6151672A (en) * 1998-02-23 2000-11-21 Hewlett-Packard Company Methods and apparatus for reducing interference in a branch history table of a microprocessor
US6247122B1 (en) * 1998-12-02 2001-06-12 Ip-First, L.L.C. Method and apparatus for performing branch prediction combining static and dynamic branch predictors
US7107437B1 (en) * 2000-06-30 2006-09-12 Intel Corporation Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB)
US20020166042A1 (en) * 2001-05-01 2002-11-07 Yoav Almog Speculative branch target allocation
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US6938151B2 (en) * 2002-06-04 2005-08-30 International Business Machines Corporation Hybrid branch prediction using a global selection counter and a prediction method comparison table
KR100980076B1 (ko) * 2003-10-24 2010-09-06 삼성전자주식회사 저전력 분기 예측 시스템 및 분기 예측 방법
US7096348B2 (en) * 2003-12-15 2006-08-22 Freescale Semiconductor, Inc. Method and apparatus for allocating entries in a branch target buffer
KR100591769B1 (ko) * 2004-07-16 2006-06-26 삼성전자주식회사 분기 예측 정보를 가지는 분기 타겟 버퍼
US7447885B2 (en) * 2005-04-20 2008-11-04 Arm Limited Reading prediction outcomes within a branch prediction mechanism
US7434037B2 (en) * 2006-04-07 2008-10-07 International Business Machines Corporation System for target branch prediction using correlation of local target histories including update inhibition for inefficient entries
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
US7783870B2 (en) * 2007-08-13 2010-08-24 International Business Machines Corporation Branch target address cache
US7895422B2 (en) * 2008-02-29 2011-02-22 Freescale Semiconductor, Inc. Selective postponement of branch target buffer (BTB) allocation
US7937573B2 (en) * 2008-02-29 2011-05-03 Freescale Semiconductor, Inc. Metric for selective branch target buffer (BTB) allocation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740415A (en) * 1994-10-12 1998-04-14 Mitsubishi Denki Kabushiki Kaisha Instruction supplying apparatus with a branch target buffer having the contents so updated as to enhance branch prediction accuracy
EP1271308A2 (en) * 2001-06-20 2003-01-02 Fujitsu Limited Apparatus and method for branch prediction based on history table
CN1369780A (zh) * 2001-07-16 2002-09-18 智权第一公司 处理涵盖跨越指令高速线的分支目标地址高速区的分支的装置及方法

Also Published As

Publication number Publication date
WO2010014286A1 (en) 2010-02-04
EP2324421B1 (en) 2013-10-02
KR101246641B1 (ko) 2013-04-01
CN102112964A (zh) 2011-06-29
US8205068B2 (en) 2012-06-19
US20100031010A1 (en) 2010-02-04
EP2324421A4 (en) 2011-08-10
TW201005634A (en) 2010-02-01
KR20110055567A (ko) 2011-05-25
EP2324421A1 (en) 2011-05-25
JP5504523B2 (ja) 2014-05-28
JP2011530104A (ja) 2011-12-15

Similar Documents

Publication Publication Date Title
CN102112964B (zh) 分支目标缓存器分配
CN111813554A (zh) 一种任务调度处理方法、装置及电子设备和存储介质
US9946549B2 (en) Register renaming in block-based instruction set architecture
CN107771318B (zh) 基于块大小将指令块映射到指令窗口
CN103927149A (zh) 间接分支预测
CN102841777A (zh) 数据处理器中的分支目标缓存器寻址
CN109308191B (zh) 分支预测方法及装置
US20130198490A1 (en) Systems and methods for reducing branch misprediction penalty
CN105027075B (zh) 具有共享前端单元的处理核
CN107209664B (zh) 用于扇出生产指令的结果的方法和设备及计算机可读媒体
US7243354B1 (en) System and method for efficiently processing information in a multithread environment
US9189279B2 (en) Assignment method and multi-core processor system
CN103365628A (zh) 用于执行预解码时优化的指令的方法和系统
US20080133899A1 (en) Context switching method, medium, and system for reconfigurable processors
US8151097B2 (en) Multi-threaded system with branch
US8589942B2 (en) Non-real time thread scheduling
CN115562838A (zh) 资源调度方法、装置、计算机设备及存储介质
US11068272B2 (en) Tracking and communication of direct/indirect source dependencies of producer instructions executed in a processor to source dependent consumer instructions to facilitate processor optimizations
CN116324718A (zh) 具有多个提取和解码管线的处理器
US11080057B2 (en) Processing device and method of controlling processing device
US11080063B2 (en) Processing device and method of controlling processing device
CN118633078A (zh) 条件指令预测
US20200065108A1 (en) Systems and methods for selectively bypassing address-generation hardware in processor instruction pipelines
CN116414463B (zh) 指令调度方法、指令调度装置、处理器及存储介质
US20220075624A1 (en) Alternate path for branch prediction redirect

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: 20141029

Termination date: 20200511

CF01 Termination of patent right due to non-payment of annual fee