CN1302376C - 利用第二级分支预测表的分支预测的方法和设备 - Google Patents

利用第二级分支预测表的分支预测的方法和设备 Download PDF

Info

Publication number
CN1302376C
CN1302376C CNB998130613A CN99813061A CN1302376C CN 1302376 C CN1302376 C CN 1302376C CN B998130613 A CNB998130613 A CN B998130613A CN 99813061 A CN99813061 A CN 99813061A CN 1302376 C CN1302376 C CN 1302376C
Authority
CN
China
Prior art keywords
branch
branch prediction
address
instruction
prediction table
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
CNB998130613A
Other languages
English (en)
Other versions
CN1328664A (zh
Inventor
T·-Y·叶
H·P·沙朗帕尼
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1328664A publication Critical patent/CN1328664A/zh
Application granted granted Critical
Publication of CN1302376C publication Critical patent/CN1302376C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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/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

一种分支预测器。第一分支预测表(100)连接到指令指针发生器(11)以存储标记的分支预测入口并高速地提供分支预测。第二分支预测表(102)也连到指令指针发生器(11)以存储未标记的分支预测入口并提供大得多的分支工作集的分支预测,尽管是以较慢速度进行提供。

Description

利用第二级分支预测表的分支预测的方法和设备
发明领域
本发明涉及计算机系统,更具体地说,涉及使用第一级和第二级分支预测表进行分支预测的处理器。
发明背景
先进的处理器采用流水(管道)线技术高速地执行指令。基于这样的处理器,整个机器组织成包括几个硬件级联级的多流水线。指令处理分为一系列的操作,且由相应的流水线级(管道级)的硬件来执行各种操作。来自几条指令的独立操作可由不同的流水线级同时进行,以增加处理器的指令通过量。当一个流水线处理器在每个流水线级包括多个执行资源时,该处理器的指令通过量就能超过每个时钟周期一条指令。为了充分利用这个指令执行能力,必须由正确的执行路径向该处理器的执行资源提供足够的指令。
在典型的计算机系统中,指令指针(IP)指示处理器从程序代码的一条指令到下一条指令。一条指令可以正常的程序代码顺序指示这个IP到下一条指令,或者指示该IP跳过部分程序代码并继续执行非正常顺序的指令。这个使处理器或者按顺序连续执行下一条指令或者“转移”到一个不同的非顺序的指令的指令称为分支指令。
例如,字处理器在进行拼写检查时,执行软件指令来确认正确地拼写了每个字。只要字拼写正确,指令便顺序地执行。然而一旦发现了拼写有误的字,分支指令便指示IP转向一个子程序,后者提醒用户拼字错误。然后,处理器执行该子程序。
分支指令向保持流水线充满来自正确执行路径的指令这一要求提出了挑战。如果执行分支指令并满足分支条件,处理器的控制流就跳向新的代码序列,来自该新的代码序列的指令转向流水线。分支执行一般出现在流水线的后端,而在流水线的前端取指令。如果获取指令依赖分支执行来决定正确的执行路径,则在决定分支条件前,处理器的流水线可能充满来自错误执行路径的指令。因此,必须从流水线中清洗(flush)这些指令,使得获取来自正确执行路径的指令时这些受到影响的流水线级的资源保持空闲。空闲的流水线级称为流水线泡(bubble),因为直到它们被来自正确执行路径的指令填充时才提供有用的输出。
先进的处理器在它们流水线的前端加入分支预测模块以减少流水线泡的数量。当分支指令进入到流水线的前端时,分支预测模块预测在流水线的后端执行过程中是否产生该分支指令。如果预测产生分支(非顺序执行指令),则分支预测模块就向指令提取模块提供分支目标地址,通过设置与含有分支程序代码的第一指令的地址相同的IP地址来重新指示IP。含有分支代码的所述第一指令的地址称为“目标地址”。同样位于流水线前端的提取模块从目标地址开始取指令。另一方面,如果分支预测器预测不产生分支(顺序指令执行),分支预测器就递增IP地址,以便IP以正常程序代码顺序指向下一条指令。当分支执行出现在流水线的后端时,处理器能够确认前端所做的预测是否正确。如果不正确,流水线就被清洗。分支预测准确性越高,流水线泡和清洗数就越少。
传统的分支预测模块采用分支目标缓冲器(BTB)来存储预测入口,后者包含诸如是否产生分支的信息以及产生分支时可能的目标地址。这些分支预测入口与含有分支指令的IP地址相联系。对每一个在分支预测表中被跟踪的IP地址,其有关的分支预测入口包含IP地址以及有助于预测将来是否产生分支的历史信息。然而,即使是在BTB中寻找指令、确定是否产生分支以及在已做预测的基础上向取指模块提供目标地址这样的过程也会在使处理器重转向(resteer)目标地址时引起延迟。该延迟允许来自错误执行路径的指令进入并沿流水线传播。由于这些指令没有按预测的执行路经加到正向进程,在清洗它们时它们就会在流水线上形成“泡”。更准确且更完备的分支预测算法(用更大的分支表)需要更长的时间来完成并会在重转向过程中产生更大的延迟。重转向流水线需要的时钟周期数越大,在流水线中产生的泡数就越多。因此,在进入分支预测结构的速度与这些结构中内容的大小和准确性之间存在折中。
由于速度和费用的原因,现代处理器常限制所采用的BTB的容量。特别是在大工作负荷时,这降低了分支检测和预测的准确性。假如BTB的容量较小,则某个新分支预测入口有时必须重写某个旧分支预测入口。如果与重写的分支预测入口相联系的分支指令之后由处理器重执行,则没有历史信息来帮助分支预测器预测是否应该产生分支。结果,分支预测准确性下降,降低了处理器的性能。随着软件应用程序规模增大,这些应用程序中分支指令数目增加,分支预测表的有限容量就成为一个重要的问题。因此,有必要提供一种解决方案:为最频繁出现的分支子集(具有高局部性的那些)产生小的等待时间并为整个工作集提供有意义的预测。
发明概述
描述了一种分支预测器。第一级分支预测表与IP发生器连接以存储分支预测入口。第二级分支预测表也与IP发生器连接以存储更多分支预测入口。
按照本发明实施例,尽管降低了速度,然而可以发现两级分支预测结构充分地将高速(小的等待时间)分支预测和分支的最高局部性的重转向的益处与全工作集的全局高准确分支检测和预测结合在一起。这在没有显著增加小片尺寸情况下也可完成。
通过附图和以下的详细描述,本发明的其它特征和优点将一清二楚。
附图简介
通过附图中的示例而非限制来说明本发明,图中用相同标号表示类似的单元。附图中:
图1是一个表示本发明的方法的流程图;
图2表示按照本发明实施例的分支预测流水线;和
图3表示图2的分支预测器。
详细描述
描述了一种用于带有第一级和第二级分支预测表的处理器的分支预测器。IP发生器产生初始指令指针(IP)地址。为与初始IP地址相关联的分支预测入口搜索第一级(L1)BPT(分支预测表)和第二级(L2)BPT。对本发明的一个实施例,L1 BPT是相联的(即完全相联或多路集相联)而L2 BPT则是直接映射。
因为L1 BPT是关联的,所以分支预测入口加上标记并将这些标记与预测信息一起存于L1 BPT中。未对直接映射的L2 BPT中的分支预测入口作标记,故L2 BPT中只存有分支预测信息。因为L1 BPT中的分支预测入口大于L2 BPT中的分支预测入口,在等量空间中,L2 BPT可比L1 BPT有更多的分支预测入口。因此尽管L1 BPT可能比L2 BPT更快更准确,然而L2 BPT作为L1 BPT的“备份”,使得可以较小增加处理器尺寸来存储附加分支预测信息。由于在一个处理器中既包含L1 BPT又包含L2 BPT,则无须增加太多硬件成本便可同时提高分支预测的准确性和整体速度。另外,L2 BPT容量的少量增加还可提高整体存储容量可以容纳具有大工作集的程序中的大量分支。
如果在L1 BPT中找到与初始IP地址有关的分支预测入口(称在L1BPT中“命中(hit)”),则使用与入口有关的分支预测信息来预测产生分支还是不产生分支(即预测后来的IP地址)。如果在L1 BPT中没发现与初始IP地址有关的分支预测入口(称在L1 BPT中“未命中(miss)”),则对与IP地址有关的指令进行解码来确定它是否为分支指令。如果是分支指令,则使用来自L2 BPT的分支预测信息来预测产生分支还是不产生分支。
对本发明的另一个实施例,软件给处理器提供提示以帮助分支预测。对这个实施例,用这些提示确定是否使用L2 BPT的分支预测信息或在软件自身中编码的分支预测信息来预测产生分支还是不产生分支。
可以发现这样的两层预测器设计对那些被指派执行大型应用程序任务的处理器特别有用,例如那些在服务器和工作站上运行的大型应用程序。下面更详细描述本发明的实施例,包括各种配置和实现。
图1是表示本发明方法的流程图。在步骤205,搜索L1和L2分支预测表以查找与初始IP地址有关的分支预测入口。L1 BPT是做了标记的关联表,而L2 BPT是未做标记的直接映射表。对一个实施例,L1 BPT存储的分支预测入口少于L2 BPT存储的分支预测入口,但L1 BPT比L2 BPT快且具有比L2 BPT更高的分支预测准确性。因为L1 BPT存储较少的分支预测入口,因而L1 BPT只存储那些最近使用的、并因此最有可能在不久的将来再次使用的分支预测入口。
在图1步骤210,确定L1 BPT中是否有与初始IP地址有关的命中。如果L1 BPT中有一个命中,则随后在步骤215确定L1 BPT中与初始IP地址有关的分支预测信息是否表明应该预测为产生分支。如果预测为产生分支,则在步骤220将后续IP地址重转向到TAC或RSB的地址。相反,如果预为不产生分支,则在步骤225不发送重转向信号。
如果在L1 BPT中没有命中(在L1 BPT中未命中),则在图1的步骤230中,解码器对至少部分指令进行解码以确定与初始IP地址有关的指令是否为分支指令。如果确定指令为分支指令,则在步骤230中,解码器还对目标地址进行解码并判断指令是否为返回指令。对于由分支指令把分支预测提示提供给分支预测器的实施例,在步骤230中解码器还对该提示信息进行解码。
如果在图1的步骤235中确定所述指令不是分支指令,则在步骤240不发送重转向信号。如果确定所述指令是分支指令,则下一步在步骤250确定与分支指令有关的命中是否为静态的。应该指出,对于本发明的不进行提示的另一个实施例,取消了步骤250和260,且如果指令被确定为分支,则流程从步骤235跳到255。
如果与分支指令有关的提示不是静态的(即是动态的),则下一步在图1的步骤255中确定在L2BPT中与初始IP地址有关的分支预测信息是否表明应该预测为产生分支。如果预测为产生分支,则在步骤265将后续IP地址重转向,预测后续IP为来自TAC,RSB的地址(如果指令被确定为返回指令)、或为解码器解码的地址。相反,如果预测不产生分支,则在步骤240不发送重转向信号。
相反,如果与分支指令有关的提示是静态的,则接下来在图1的步骤260确定提示是否表示应该预测为产生分支还是不产生分支。如果提示将产生分支,则流程进行到如上所述的步骤265。相反,如果提示将不产生分支,则流程进行到如上所述的步骤240。
应该指出,按照本发明的实施例,图1的步骤220或225中所做的分支预测比步骤240或265中所做的分支预测完成得早。
图2表示按照本发明实施例的分支预测流水线。按照图2的流水线,IP复用器10的输出端提供初始IP地址给增量器20、第一级(L1)分支预测器21和第二级(L2)分支预测器22。增量器20适当地递增初始地址来产生后续的IP地址,并在第一流水线级期间把后续的IP地址送回到IP复用器10的输入端。IP增量器20取到初始IP地址并按预定量进行递增。加到初始IP地址上的预定量是存储有正在执行的程序代码的连续指令或指令组的两个连续存储器地址之间的差值。
L1分支预测器21可产生重转向信号并将该信号供给IP控制器11的输入端。这个信号表示该后续IP地址是否与初始IP地址顺序。如果L1分支预测器21向IP控制器11发送重转向信号,则这表明后续IP是非顺序的,且L1分支预测器21接着在第二级流水线级期间提供后序IP地址给IP复用器10的输入端。
L2分支预测器22也可产生重转向信号并将这个信号供给IP控制器11的另一个输入端。这个信号同样表示后续IP地址是否与初始IP地址顺序。如果L2分支预测器22向IP控制器11发送重转向信号,这表示后续IP是非顺序的,且L2分支预测器22接着在第三级流水线级期间提供后续IP地址给IP复用器10的输入端。
然后,IP控制器11基于来自L2分支预测器22和L1分支预测器21的信号来确定IP复用器10的三个输入中的哪一个可传到该复用器的输出端。如果L1分支预测器21和L2分支预测器22都没有发送重转向信号,则选择来自增量器20递增的IP地址作为复用器10输出的后续IP地址。如果L1分支预测器21发送重转向信号,则选择从L1分支预测器21输出的IP地址作为复用器10输出的后续IP地址。如果L2分支预测器22发送重转向信号,则选择从L2分支预测器22输出的IP地址作为复用器10输出的后续IP地址。
应该指出,这里使用的术语“初始IP地址”表示任意用做预测后续IP地址的参考点的IP地址。“初始IP地址”不意味着局限于与某具体软件应用程序的程序代码第一行有关的IP地址。初始地址可以是任何与应用程序的程序代码任意一行有关的IP地址。
图3表示按照本发明实施例的图2的L1分支预测器21和L2分支预测器22。图3中的分支预测器可以完全包含在和处理器相同的半导体衬底上,分支预测器为该处理器进行分支预测。对于另一个实施例,分支预测器的一个或多个功能块位于单独的半导体衬底上。例如,为减少处理器的总体尺寸,L2 BPT 102可置于单独的半导体衬底上。
L1 BPT 100是一个包括加有地址标记的分支预测入口的关联表。每个地址标记都与包含分支指令的IP地址有关。在L1 BPT 100中的每个分支预测入口除了包括其有关的地址标记外还包括分支预测信息。分支预测器用这个分支预测信息来预测是否产生分支。存储在L1 BPT 100中的分支预测信息的具体类型相应于可由分支预测器执行的大量分支预测算法类型中的任何一种。其中大部分算法为本技术领域的技术人员所了解。
例如,按照本发明的一个实施例,局部历史预测算法连同L1 BPT100一起完成。对另一个实施例,在L1 BPT 100中完成全局历史分支预测算法或一个计数器预测器(即2位可逆计数器,也称为双(bimodal)分支预测器)。对另一实施例,L1 BPT 100被分成两个或更多单独的分支预测表,每个表完成不同的分支预测程序。于是,选择器电路确定哪种算法为具体例子提供最准确的预测并选适合的表。
对于本发明的一个实施例,图3的L1 BPT 100是多路组相联。对于本发明的另一个实施例,L1 BPT 100是完全相联。为提高L1 BPT100中搜索分支预测入口的速度,保持表较小,使之大约有512到2K的分支预测入口的存储容量。
初始IP地址提供给图3的L1分支预测器21的输入端。这个初始IP地址被用来搜索L1 BPT 100及目标地址高速缓冲存储器(TAC)101。如果在L1 BPT中发现所述地址,则命中,且命中信号沿着命中/未命中信号线121发送到与门144的输入端。如果L1 BPT 100中没发现所述地址,则未命中,且未命中信号沿着命中/未命中信号线121发送出。如果L1 BPT 100中有命中,且在L1 BPT 100中有关的入口表示产生分支,则这由沿着产生/不产生信号线122发送到与门144的另一个输入端的产生信号来表示。如果L1 BPT 100中有命中,且在L1 BPT 100中有关的入口表示不产生分支,则这由沿着产生/不产生信号线122发送的不产生信号来表示。如果在L1 BPT 100中有产生的命中,且L1 BPT还表示分支是返回,则由沿着返回/不返回信号线143发送到复用器106的控制输入端的返回信号表示。如果在L1 BPT 100中有产生的命中,且L1 BPT表示分支不是返回,则由沿着返回/不返回信号线143发送的不返回信号组来表示。
如果图3的L1 BPT 100中有命中,且L1 BPT表示产生分支,则与门144输出重转向信号给IP控制器11。如果在L1 BPT 100中有未命中或在L1 BPT中有未产生命中,则与门144不输出重转向信号。如果与门144输出重转向信号,则IP地址也从复用器106输出。返回/不返回信号线143确定复用器106的输出。如果信号线143表示分支是返回指令,则来自与复用器106输入端相连的返回堆栈缓冲器的返回地址被传送到复用器106的输出端,且随后被传送到IP复用器10。如果信号线143表示分支不是返回指令(对L1 BPT 100中产生的命中),则来自通过目标总线123与复用器106的其它输入端相连的TAC 101的目标地址被传送到复用器106的输出端,且随后被传送到IP复用器10。另外,在TAC 101中发现的目标地址与命中/未命中信号一起,也提供给L2分支预测器22的复用器109的一个输入端,如下所述。
图3的L2 BPT 102是一个直接映射表,该表包括包含没有地址标记的分支预测信息的分支预测入口。这个分支预测信息被分支预测器用来预测是否将产生分支。存于L2 BPT 102中的分支预测信息的具体类型相应于大量分支预测算法类型中的任意一种,这些分支预测算法可由分支预测器执行,其中许多为本领域的技术人员所了解。上面结合L1 BPT 100来描述这些分支预测算法中的某些分支预测算法。L2 BPT 102可以执行这些算法的任意一种或这些算法的任何组合,而与L1 BPT 100所执行的算法类型无关。
特别是从成本角度看,图3的L2 BPT 102中执行的分支预测算法占据小量空间是有利的。因此,根据本发明的一个实施例,L2 BPT102执行两比特计数器算法作为其分支预测方法。尽管两比特计数器算法可能不像例如在L1 BPT 100中执行的局部或全局分支预测算法那样准确,但使用两比特计数器算法的分支预测表使得每个分支预测入口仅需要两比特存储空间。执行或者局部或者全局分支预测算法的分支预测表使得每个分支预测入口可能需要多于两比特存储空间。通过使用未标记的分支预测入口和两比特计数器算法,L2B PT 102能存储大约4倍到8倍于或更多于L1 BPT 100在大约相同的空间中储存的分支预测入口数。这样,对本发明的一个实施例,L2 BPT 102具有较大的约2K到4K或更多分支入口的存储容量。对于L2 BPT未被标记的一个实施例,没有有关静态提示的分支(下面更详细地描述)可以在退役(retirement)时更新L2 BPT。
从图3的L2 BPT 102读取与初始IP地址有关的分支预测入口中存储的分支预测信息,且利用此信息来计算是否产生分支预测。根据分支预测,将产生或不产生信号沿t/n线126发送给复用器107的输入端。对L2 BPT 102是直接映射的本发明实施例,在这个表中总有命中。这意味着这些命中的某一百分比可能将一个IP地址与另外的IP地址的分支预测信息相联系。避免这个问题的一种方法是在L2 BPT 102中储存地址标记,并将这些标记与输入IP地址标记进行比较。然而,可以发现,通过不在L2 BPT 102中存储标记信息而减小表的大小的成本收益比通过存储标记来获得提高的分支预测信息准确性更有价值。
利用来自图3的IP复用器10的初始IP地址搜索输入指令缓冲器103,并将有关的指令提供给指令解码器104。对本发明的一个实施例,解码器104部分或完全地对指令进行解码来确定该指令是否为分支指令,并且,如果是,则解码器再确定目标地址并确定该指令是否为返回。根据指令是否为分支(或返回),通过b/nb线129将合适的信号发送给与门108的输入端。把目标地址130从解码器104发送到复用器109的输入端。
对于指令中包括分支预测提示的实施例,图3的解码器104还确定分支预测提示是静态还是动态,并且,如果是静态,解码器确定产生还是不产生提示。表示提示是静态还是动态的信号通过s/d提示线127提供给复用器107的控制输入端。通过t/n提示线128把表示提示是产生还是不产生的信号提供给复用器107的一个输入端。静态提示向分支预测器表示:不管L2 BPT 102中发现的任何分支预测信息,有关的分支指令总是应该预测为产生或是不产生(根据产生/不产生提示值)。动态提示向分支预测器表示:L2 BPT 102中发现的分支预测信息应用来把分支预测为产生或是不产生。对于本发明的另一个实施例,包含动态提示的指令还包括在初始执行分支指令时用作分支预测的产生/不产生提示。此后,储存在分支预测表中的分支预测信息被用来确定该分支指令的后续分支预测。
如果通过s/d提示线127提供给图3中复用器107的控制输入端的信号表示提示是动态的,则复用器选择通过t/n线126从L2 BPT 102来的产生/不产生信号作为其输出。如果提供给复用器107的控制输入端的信号表示提示是静态的,则复用器选择通过t/n提示线128从解码器104来的产生/不产生提示信号作为其输出。对于L2 BPT被标记的一个实施例,提示是动态的且在L2 BPT中有未命中,仍使用解码的预测。对这个实施例,来自L2 BPT 102的命中/未命中线(或其反向)可以和s/d提示线127(或其反向)相与(或与非),输出连接到复用器107的控制输入端。
如果通过图3中的b/nb线129提供给与门108输入端的信号表示与IP地址有关的指令是分支(或返回)指令并且复用器107的输出值表示产生分支,则与门108输出重转向信号给与门141的输入端。否则,与门108不输出重转向信号。与门141的另一个输入端是连接通到L1 BPT 100的命中/未命中信号线121的反向输入端。如果与门108的输出值表示重转向,则与门141便起到阻止重转向信号发送到IP控制器11,但L1BPT中有命中。这样做是因为可以发现来自L1 BPT 100的前期预测比来自L2 BPT 102的后期预测更准确。因此,当与门108的输出值表示再转向且L1 BPT 100中有未命中时,与门141便输出重转向信号给IP控制器11。
图3中的复用器109由通过返回/不返回(r/nr)信号线140来自指令解码器104的返回/不返回信号和通过命中/未命中(h/m)信号线150的TAC 101的命中/未命中信号控制。指令解码器104为复用器109选择合适的输出。例如,如果n/nr信号线140表示指令是返回指令,则来自返回堆栈缓冲器(RSB)142的返回地址(提供给L1分支预测器21相同的RSB输出值)被传送给复用器109的输出端且随后被传送给IP复用器10,其中返回堆栈缓冲器142连接到复用器109的输入端。如果信号线140表示分支不是返回指令(产生分支的),则如果TAC101中有命中(如命中/未命中信号线150指示的)的话,来自TAC 101的目标地址被传送给复用器109的输出端。否则,由解码器104解码的且通过目标总线130提供给复用器109的另一个输入端的目标地址被传送给复用器109的输出端。
然后把后续的IP预测提供给处理器,且由该处理器来执行位于那个地址的指令。稍后确定该预测正确或不正确。然后可刷新存储在L1 BPT 100和L2 BPT 102中的与预测的分支指令有关的分支预测信息以提高下一次执行分支指令的准确性。对于本发明的一个实施例,如果与分支指令有关的IP地址在L1 BPT中未命中并且分支指令没提供静态提示,则刷新L1 BPT以包括与IP地址有关的分支预测入口。
已参考本发明的具体示例性实施例描述了本发明。然而,受益于本发明公开的人明白,在不超出本发明更广的精神和范围的情况下可对这些实施例做出各种修改和改变。因此,说明书与附图用于说明本发明而不是对本发明的限制。

Claims (22)

1.一种分支预测器,包括:
第一分支预测表,它连接至指令指针发生器,用于存储第一多个分支预测入口;和
第二分支预测表,它连接至所述指针发生器,用于存储第二多个分支预测入口以预测产生分支和不产生分支,其中所述第二分支预测表不包括目标地址信息的存储空间。
2.按照权利要求1所述的分支预测器,其特征在于,所述第一分支预测表存储已标记的分支预测入口而所述第二分支预测表存储未标记的分支预测入口。
3.按照权利要求1所述的分支预测器,其特征在于,还包括连接至所述第一分支预测表的电路,如果所述第一分支预测表表示产生分支,则所述电路将随后的指针地址预测为目标地址高速缓冲存储器中存储的目标地址。
4.按照权利要求1所述的分支预测器,其特征在于,还包括连接至所述第二分支预测表的电路,如果所述第二分支预测表表示产生分支,则所述电路将随后的指针地址预测为目标地址高速缓冲存储器中存储的目标地址。
5.按照权利要求1所述的分支预测器,其特征在于,还包括连接至所述第二分支预测表的第二电路,如果所述第二分支预测表表示产生分支,则所述第二电路将指针地址预测为从指令解码及计算的目标地址。
6.按照权利要求1所述的分支预测器,其特征在于,还包括连接至所述第二分支预测表的电路,如果所述第二分支预测表表示产生分支,则所述电路将随后的指针地址预测为返回堆栈缓冲器中存储的目标地址。
7.按照权利要求1所述的分支预测器,其特征在于,把所述第二分支预测表的大小做成存储两倍于或更多倍于所述第一分支预测表存储的分支预测入口数。
8.按照权利要求1所述的分支预测器,其特征在于,所述第一分支预测表是用于执行第一种预测算法,而所述第二分支预测表是用于执行不同于所述第一种预测算法的第二种预测算法。
9.一种处理器,包括:
指令指针发生器;
连接至所述指针发生器的第一级分支预测表,所述第一级分支预测表其中存储有与第一多个地址有关的第一多个分支预测入口;
连接至所述指针发生器的第二级分支预测表,所述第二级分支预测表其中存储有与第二多个地址有关的第二多个分支预测入口,其中所述第二级分支预测表不存储目标地址信息,所述第二多个分支预测入口是用于预测产生和不产生分支;和
解码器,用于部分或完全地对所述指令进行解码来确定该指令是否为分支指令。
10.按照权利要求9所述的处理器,其特征在于,还包括连接至所述指针发生器的目标地址高速缓冲存储器并在其中存储有与所述第一多个地址有关的多个目标地址。
11.按照权利要求10所述的处理器,其特征在于,还包括一种电路,如果在所述第一级分支预测表中有表示产生分支的命中,则该电路从所述目标地址高速缓冲存储器中选择目标地址作为其输出。
12.按照权利要求9所述的处理器,其特征在于,还包括连接至所述指针发生器的存储器单元中的指令组并在其中存储有多个分支提示。
13.按照权利要求12所述的处理器,其特征在于,还包括一种电路,如果在所述第二级分支预测表中的命中表示产生分支并且在所述存储器单元中的有关提示是动态的,则该电路从所述存储器单元中选择目标地址作为其输出。
14.按照权利要求9所述的处理器,其特征在于,在所述第二多个地址中有像在所述第一多个地址中两到四倍之间那么多的地址,并且所述第二多个地址包含了所述第一多个地址。
15.一种处理器,它包括:
第一分支预测器,它存储第一分支预测入口和第一目标地址,两者都与可能产生和不产生的第一分支有关;
第二分支预测器,它用于存储第二分支预测入口并排除第二目标地址,两者都与可能产生和不产生的第二分支有关;和
指令解码器,它用于部分或完全地对指令进行解码来确定该指令是否为分支指令。
16.按照权利要求15所述的处理器,其特征在于,所述处理器还包括存储所述第一目标地址并排除所述第二目标地址的目标地址高速缓存储存器。
17.按照权利要求16所述的处理器,其特征在于,所述指令解码器用于确定所述第二目标地址。
18.按照权利要求15所述的处理器,其特征在于,所述指令解码器用于确定所述第二目标地址。
19.按照权利要求16所述的处理器,其特征在于,所述第一和第二分支是相同的。
20.按照权利要求15所述的处理器,其特征在于,所述第二分支是所述第一分支。
21.按照权利要求15所述的处理器,其特征在于,所述第二分支预测器其特征在于所述第二分支预测器是用于存储两倍于或更多倍于所述第一分支预测器存储的分支预测入口。
22.按照权利要求15所述的处理器,其特征在于,所述第一分支预测器是用于执行第一种预测算法,而所述第二分支预测器是用于执行不同于所述第一种预测算法的第二种预测算法。
CNB998130613A 1998-09-08 1999-08-26 利用第二级分支预测表的分支预测的方法和设备 Expired - Fee Related CN1302376C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/149,885 1998-09-08
US09/149,885 US6553488B2 (en) 1998-09-08 1998-09-08 Method and apparatus for branch prediction using first and second level branch prediction tables
US09/149885 1998-09-08

Publications (2)

Publication Number Publication Date
CN1328664A CN1328664A (zh) 2001-12-26
CN1302376C true CN1302376C (zh) 2007-02-28

Family

ID=22532208

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB998130613A Expired - Fee Related CN1302376C (zh) 1998-09-08 1999-08-26 利用第二级分支预测表的分支预测的方法和设备

Country Status (8)

Country Link
US (1) US6553488B2 (zh)
KR (1) KR100411529B1 (zh)
CN (1) CN1302376C (zh)
AU (1) AU5699299A (zh)
DE (1) DE19983517B4 (zh)
GB (1) GB2357871B (zh)
TW (1) TW455810B (zh)
WO (1) WO2000014628A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI499975B (zh) * 2011-12-07 2015-09-11 Apple Inc 具有遲滯現象下一個提取預測器之訓練

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546481B1 (en) * 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
US7107437B1 (en) * 2000-06-30 2006-09-12 Intel Corporation Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB)
JP4027620B2 (ja) 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US7024545B1 (en) * 2001-07-24 2006-04-04 Advanced Micro Devices, Inc. Hybrid branch prediction device with two levels of branch prediction cache
US7343397B2 (en) * 2002-03-29 2008-03-11 Lucent Technologies Inc. Method and apparatus for performing predictive caching of DNS requests by correlating IP addresses
US6978361B2 (en) * 2002-09-20 2005-12-20 International Business Machines Corporation Effectively infinite branch prediction table mechanism
US7831817B2 (en) * 2003-04-15 2010-11-09 Arm Limited Two-level branch prediction apparatus
EP1646941B1 (en) * 2003-07-09 2010-12-15 Nxp B.V. Method and system for branch prediction
US20050015578A1 (en) * 2003-07-14 2005-01-20 Kimming So Two-bit branch prediction scheme using reduced memory size
JP2005149297A (ja) * 2003-11-18 2005-06-09 Renesas Technology Corp プロセッサおよびそのアセンブラ
US7243219B2 (en) * 2003-12-24 2007-07-10 Intel Corporation Predicting instruction branches with a plurality of global predictors using varying amounts of history instruction
US20050149680A1 (en) * 2003-12-30 2005-07-07 Intel Corporation Fast associativity collision array and cascaded priority select
US20050283593A1 (en) * 2004-06-18 2005-12-22 Vladimir Vasekin Loop end prediction
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7428632B2 (en) * 2004-09-14 2008-09-23 Arm Limited Branch prediction mechanism using a branch cache memory and an extended pattern cache
US7836288B2 (en) * 2004-09-14 2010-11-16 Arm Limited Branch prediction mechanism including a branch prediction memory and a branch prediction cache
DE102005001679B4 (de) * 2005-01-13 2008-11-13 Infineon Technologies Ag Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung
US7779213B2 (en) * 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US7653834B2 (en) * 2005-08-29 2010-01-26 Searete, Llc Power sparing synchronous apparatus
US7725693B2 (en) * 2005-08-29 2010-05-25 Searete, Llc Execution optimization using a processor resource management policy saved in an association with an instruction group
US8209524B2 (en) 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US7774558B2 (en) 2005-08-29 2010-08-10 The Invention Science Fund I, Inc Multiprocessor resource optimization
US8423824B2 (en) 2005-08-29 2013-04-16 The Invention Science Fund I, Llc Power sparing synchronous apparatus
US8516300B2 (en) 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
US7739524B2 (en) * 2005-08-29 2010-06-15 The Invention Science Fund I, Inc Power consumption management
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US20070050608A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporatin Of The State Of Delaware Hardware-generated and historically-based execution optimization
US8181004B2 (en) 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US8255745B2 (en) 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US7647487B2 (en) * 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US7493516B2 (en) * 2005-08-29 2009-02-17 Searete Llc Hardware-error tolerant computing
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US8214191B2 (en) 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US8301871B2 (en) * 2006-06-08 2012-10-30 International Business Machines Corporation Predicated issue for conditional branch instructions
US20070288732A1 (en) * 2006-06-08 2007-12-13 Luick David A Hybrid Branch Prediction Scheme
US8935517B2 (en) * 2006-06-29 2015-01-13 Qualcomm Incorporated System and method for selectively managing a branch target address cache of a multiple-stage predictor
US7472264B2 (en) * 2006-06-30 2008-12-30 Sun Microsystems, Inc. Predicting a jump target based on a program counter and state information for a process
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
US7533252B2 (en) * 2006-08-31 2009-05-12 Intel Corporation Overriding a static prediction with a level-two predictor
TW200816282A (en) * 2006-09-27 2008-04-01 Promos Technologies Inc Method for reducing stress between a conductive layer and a mask layer and use of the same
US8782384B2 (en) * 2007-12-20 2014-07-15 Advanced Micro Devices, Inc. Branch history with polymorphic indirect branch information
US8909907B2 (en) * 2008-02-12 2014-12-09 International Business Machines Corporation Reducing branch prediction latency using a branch target buffer with a most recently used column prediction
US7890739B2 (en) * 2008-02-19 2011-02-15 Oracle America, Inc. Method and apparatus for recovering from branch misprediction
US9021240B2 (en) * 2008-02-22 2015-04-28 International Business Machines Corporation System and method for Controlling restarting of instruction fetching using speculative address computations
US20110093658A1 (en) * 2009-10-19 2011-04-21 Zuraski Jr Gerald D Classifying and segregating branch targets
CN102306094B (zh) * 2011-08-16 2014-03-26 北京北大众志微系统科技有限责任公司 实现现代处理器间接转移预测的装置及方法
US8739186B2 (en) 2011-10-26 2014-05-27 Autodesk, Inc. Application level speculative processing
US9009734B2 (en) * 2012-03-06 2015-04-14 Autodesk, Inc. Application level speculative processing
US9262169B2 (en) 2012-06-11 2016-02-16 International Business Machines Corporation Branch prediction table install source tracking
US9235419B2 (en) * 2012-06-11 2016-01-12 International Business Machines Corporation Branch target buffer preload table
US9250909B2 (en) 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9250912B2 (en) 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9430241B2 (en) 2012-06-15 2016-08-30 International Business Machines Corporation Semi-exclusive second-level branch target buffer
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US20150268961A1 (en) * 2014-03-21 2015-09-24 Samsung Electronics Co., Ltd. Decoupling l2 btb from l2 cache to accelerate search for miss after miss
US10241800B2 (en) 2015-06-16 2019-03-26 International Business Machines Corporation Split-level history buffer in a computer processing unit
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
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
US10817299B2 (en) * 2018-09-07 2020-10-27 Arm Limited Handling multiple control flow instructions
CN111209044B (zh) * 2018-11-21 2022-11-25 展讯通信(上海)有限公司 指令压缩方法及装置
US11163573B2 (en) * 2019-02-13 2021-11-02 International Business Machines Corporation Hierarchical metadata predictor with periodic updates
US11614944B2 (en) * 2020-11-09 2023-03-28 Centaur Technology, Inc. Small branch predictor escape

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
US5748932A (en) * 1990-02-26 1998-05-05 Advanced Micro Devices, Inc. Cache memory system for dynamically altering single cache memory line as either branch target entry or prefetch instruction queue based upon instruction sequence
US5802602A (en) * 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US5805878A (en) * 1997-01-31 1998-09-08 Intel Corporation Method and apparatus for generating branch predictions for multiple branch instructions indexed by a single instruction pointer

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732253A (en) * 1994-10-18 1998-03-24 Cyrix Corporation Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
US5815700A (en) * 1995-12-22 1998-09-29 Intel Corporation Branch prediction table having pointers identifying other branches within common instruction cache lines
WO1998008160A1 (en) * 1996-08-20 1998-02-26 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
US6119222A (en) * 1996-12-23 2000-09-12 Texas Instruments Incorporated Combined branch prediction and cache prefetch in a 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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5748932A (en) * 1990-02-26 1998-05-05 Advanced Micro Devices, Inc. Cache memory system for dynamically altering single cache memory line as either branch target entry or prefetch instruction queue based upon instruction sequence
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
US5802602A (en) * 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US5805878A (en) * 1997-01-31 1998-09-08 Intel Corporation Method and apparatus for generating branch predictions for multiple branch instructions indexed by a single instruction pointer

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI499975B (zh) * 2011-12-07 2015-09-11 Apple Inc 具有遲滯現象下一個提取預測器之訓練

Also Published As

Publication number Publication date
US6553488B2 (en) 2003-04-22
AU5699299A (en) 2000-03-27
CN1328664A (zh) 2001-12-26
WO2000014628A1 (en) 2000-03-16
TW455810B (en) 2001-09-21
DE19983517B4 (de) 2006-12-07
KR20010074978A (ko) 2001-08-09
US20010047467A1 (en) 2001-11-29
DE19983517T1 (de) 2002-07-11
GB0105285D0 (en) 2001-04-18
GB2357871A (en) 2001-07-04
GB2357871B (en) 2003-09-24
KR100411529B1 (ko) 2003-12-18

Similar Documents

Publication Publication Date Title
CN1302376C (zh) 利用第二级分支预测表的分支预测的方法和设备
KR100880686B1 (ko) 2개 레벨의 분기 예측 캐시를 갖는 분기 예측
US7237098B2 (en) Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US6697932B1 (en) System and method for early resolution of low confidence branches and safe data cache accesses
US9921846B2 (en) Global branch prediction using branch and fetch group history
CN1296827C (zh) 一种使用数据地址增加组相关存储器的访问速度的方法
US6457120B1 (en) Processor and method including a cache having confirmation bits for improving address predictable branch instruction target predictions
CN100414494C (zh) 根据多组高速缓存组预测来选择执行的指令的装置和系统
US6260138B1 (en) Method and apparatus for branch instruction processing in a processor
US8185725B2 (en) Selective powering of a BHT in a processor having variable length instructions
US20080276044A1 (en) Processing apparatus
CN1346462A (zh) 用于改进的判定预测的方法与装置
US20070288736A1 (en) Local and Global Branch Prediction Information Storage
CN105718241A (zh) 一种基于sparc v8体系结构的分类式混合分支预测系统
US8943298B2 (en) Meta predictor restoration upon detecting misprediction
US20070288733A1 (en) Early Conditional Branch Resolution
CN106406814A (zh) 处理器和将架构指令转译成微指令的方法
EP1530760A2 (en) Instruction cache way prediction for jump targets
US7194604B2 (en) Address generation interlock resolution under runahead execution
US6694421B2 (en) Cache memory bank access prediction
US20070288732A1 (en) Hybrid Branch Prediction Scheme
CN111124493A (zh) 一种cpu中用于减少程序跳转开销的方法及电路
US6338120B1 (en) Apparatus for cache use history encoding and decoding including next lru and next mru and method therefor
CN1168727A (zh) 有限游程转移预测
US5812838A (en) Branch history table

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
PB01 Publication
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070228

Termination date: 20110826