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

文档序号:6419232阅读:547来源:国知局
专利名称:利用第二级分支预测表的分支预测的方法和设备的制作方法
技术领域
本发明涉及计算机系统,更具体地说,涉及使用第一级和第二级分支预测表进行分支预测的处理器。
背景技术
先进的处理器采用流水(管道)线技术高速地执行指令。基于这样的处理器,整个机器组织成包括几个硬件级联级的多流水线。指令处理分为一系列的操作,且由相应的流水线级(管道级)的硬件来执行各种操作。来自几条指令的独立操作可由不同的流水线级同时进行,以增加处理器的指令通过量。当一个流水线处理器在每个流水线级包括多个执行资源时,该处理器的指令通过量就能超过每个时钟周期一条指令。为了充分利用这个指令执行能力,必须由正确的执行路径向该处理器的执行资源提供足够的指令。
在典型的计算机系统中,指令指针(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地址有关的分支预测入口(称在L1 BPT中“命中(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中确定在L2 BPT中与初始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 BPT102可置于单独的半导体衬底上。
L1 BPT100是一个包括加有地址标记的分支预测入口的关联表。每个地址标记都与包含分支指令的IP地址有关。在L1 BPT100中的每个分支预测入口除了包括其有关的地址标记外还包括分支预测信息。分支预测器用这个分支预测信息来预测是否产生分支。存储在L1 BPT100中的分支预测信息的具体类型相应于可由分支预测器执行的大量分支预测算法类型中的任何一种。其中大部分算法为本技术领域的技术人员所了解。
例如,按照本发明的一个实施例,局部历史预测算法连同L1 BPT100一起完成。对另一个实施例,在L1 BPT100中完成全局历史分支预测算法或一个计数器预测器(即2位可逆计数器,也称为双(bimodal)分支预测器)。对另一实施例,L1 BPT100被分成两个或更多单独的分支预测表,每个表完成不同的分支预测程序。于是,选择器电路确定哪种算法为具体例子提供最准确的预测并选适合的表。
对于本发明的一个实施例,图3的L1 BPT100是多路组相联。对于本发明的另一个实施例,L1 BPT100是完全相联。为提高L1 BPT100中搜索分支预测入口的速度,保持表较小,使之大约有512到2K的分支预测入口的存储容量。
初始IP地址提供给图3的L1分支预测器21的输入端。这个初始IP地址被用来搜索L1 BPT100及目标地址高速缓冲存储器(TAC)101。如果在L1 BPT中发现所述地址,则命中,且命中信号沿着命中/未命中信号线121发送到与门144的输入端。如果L1 BPT100中没发现所述地址,则未命中,且未命中信号沿着命中/未命中信号线121发送出。如果L1 BPT100中有命中,且在L1 BPT100中有关的入口表示产生分支,则这由沿着产生/不产生信号线122发送到与门144的另一个输入端的产生信号来表示。如果L1 BPT100中有命中,且在L1 BPT100中有关的入口表示不产生分支,则这由沿着产生/不产生信号线122发送的不产生信号来表示。如果在L1 BPT100中有产生的命中,且L1 BPT还表示分支是返回,则由沿着返回/不返回信号线143发送到复用器106的控制输入端的返回信号表示。如果在L1 BPT100中有产生的命中,且L1 BPT表示分支不是返回,则由沿着返回/不返回信号线143发送的不返回信号组来表示。
如果图3的L1 BPT100中有命中,且L1 BPT表示产生分支,则与门144输出重转向信号给IP控制器11。如果在L1 BPT100中有未命中或在L1 BPT中有未产生命中,则与门144不输出重转向信号。如果与门144输出重转向信号,则IP地址也从复用器106输出。返回/不返回信号线143确定复用器106的输出。如果信号线143表示分支是返回指令,则来自与复用器106输入端相连的返回堆栈缓冲器的返回地址被传送到复用器106的输出端,且随后被传送到IP复用器10。如果信号线143表示分支不是返回指令(对L1 BPT100中产生的命中),则来自通过目标总线123与复用器106的其它输入端相连的TAC101的目标地址被传送到复用器106的输出端,且随后被传送到IP复用器10。另外,在TAC101中发现的目标地址与命中/未命中信号一起,也提供给L2分支预测器22的复用器109的一个输入端,如下所述。
图3的L2 BPT102是一个直接映射表,该表包括包含没有地址标记的分支预测信息的分支预测入口。这个分支预测信息被分支预测器用来预测是否将产生分支。存于L2 BPT102中的分支预测信息的具体类型相应于大量分支预测算法类型中的任意一种,这些分支预测算法可由分支预测器执行,其中许多为本领域的技术人员所了解。上面结合L1 BPT100来描述这些分支预测算法中的某些分支预测算法。L2 BPT102可以执行这些算法的任意一种或这些算法的任何组合,而与L1 BPT100所执行的算法类型无关。
特别是从成本角度看,图3的L2 BPT102中执行的分支预测算法占据小量空间是有利的。因此,根据本发明的一个实施例,L2 BPT102执行两比特计数器算法作为其分支预测方法。尽管两比特计数器算法可能不像例如在L1 BPT100中执行的局部或全局分支预测算法那样准确,但使用两比特计数器算法的分支预测表使得每个分支预测入口仅需要两比特存储空间。执行或者局部或者全局分支预测算法的分支预测表使得每个分支预测入口可能需要多于两比特存储空间。通过使用未标记的分支预测入口和两比特计数器算法,L2 BPT102能存储大约4倍到8倍于或更多于L1 BPT100在大约相同的空间中储存的分支预测入口数。这样,对本发明的一个实施例,L2 BPT102具有较大的约2K到4K或更多分支入口的存储容量。对于L2 BPT未被标记的一个实施例,没有有关静态提示的分支(下面更详细地描述)可以在退役(retirement)时更新L2 BPT。
从图3的L2 BPT102读取与初始IP地址有关的分支预测入口中存储的分支预测信息,且利用此信息来计算是否产生分支预测。根据分支预测,将产生或不产生信号沿t/n线126发送给复用器107的输入端。对L2 BPT102是直接映射的本发明实施例,在这个表中总有命中。这意味着这些命中的某一百分比可能将一个IP地址与另外的IP地址的分支预测信息相联系。避免这个问题的一种方法是在L2 BPT102中储存地址标记,并将这些标记与输入IP地址标记进行比较。然而,可以发现,通过不在L2 BPT102中存储标记信息而减小表的大小的成本收益比通过存储标记来获得提高的分支预测信息准确性更有价值。
利用来自图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 BPT102中发现的任何分支预测信息,有关的分支指令总是应该预测为产生或是不产生(根据产生/不产生提示值)。动态提示向分支预测器表示L2 BPT102中发现的分支预测信息应用来把分支预测为产生或是不产生。对于本发明的另一个实施例,包含动态提示的指令还包括在初始执行分支指令时用作分支预测的产生/不产生提示。此后,储存在分支预测表中的分支预测信息被用来确定该分支指令的后续分支预测。
如果通过s/d提示线127提供给图3中复用器107的控制输入端的信号表示提示是动态的,则复用器选择通过t/n线126从L2 BPT102来的产生/不产生信号作为其输出。如果提供给复用器107的控制输入端的信号表示提示是静态的,则复用器选择通过t/n提示线128从解码器104来的产生/不产生提示信号作为其输出。对于L2 BPT被标记的一个实施例,提示是动态的且在L2 BPT中有未命中,仍使用解码的预测。对这个实施例,来自L2 BPT102的命中/未命中线(或其反向)可以和s/d提示线127(或其反向)相与(或与非),输出连接到复用器107的控制输入端。
如果通过图3中的b/nb线129提供给与门108输入端的信号表示与IP地址有关的指令是分支(或返回)指令并且复用器107的输出值表示产生分支,则与门108输出重转向信号给与门141的输入端。否则,与门108不输出重转向信号。与门141的另一个输入端是连接通到L1 BPT100的命中/未命中信号线121的反向输入端。如果与门108的输出值表示重转向,则与门141便起到阻止重转向信号发送到IP控制器11,但L1 BPT中有命中。这样做是因为可以发现来自L1 BPT100的前期预测比来自L2 BPT102的后期预测更准确。因此,当与门108的输出值表示再转向且L1 BPT100中有未命中时,与门141便输出重转向信号给IP控制器11。
图3中的复用器109由通过返回/不返回(r/m)信号线140来自指令解码器104的返回/不返回信号和通过命中/未命中(h/m)信号线150的TAC101的命中/未命中信号控制。指令解码器104为复用器109选择合适的输出。例如,如果n/nr信号线140表示指令是返回指令,则来自返回堆栈缓冲器(RSB)142的返回地址(提供给L1分支预测器21相同的RSB输出值)被传送给复用器109的输出端且随后被传送给IP复用器10,其中返回堆栈缓冲器142连接到复用器109的输入端。如果信号线140表示分支不是返回指令(产生分支的),则如果TAC101中有命中(如命中/未命中信号线150指示的)的话,来自TAC101的目标地址被传送给复用器109的输出端。否则,由解码器104解码的且通过目标总线130提供给复用器109的另一个输入端的目标地址被传送给复用器109的输出端。
然后把后续的IP预测提供给处理器,且由该处理器来执行位于那个地址的指令。稍后确定该预测正确或不正确。然后可刷新存储在L1 BPT100和L2 BPT102中的与预测的分支指令有关的分支预测信息以提高下一次执行分支指令的准确性。对于本发明的一个实施例,如果与分支指令有关的IP地址在L1 BPT中未命中并且分支指令没提供静态提示,则刷新L1 BPT以包括与IP地址有关的分支预测入口。
已参考本发明的具体示例性实施例描述了本发明。然而,受益于本发明公开的人明白,在不超出本发明更广的精神和范围的情况下可对这些实施例做出各种修改和改变。因此,说明书与附图用于说明本发明而不是对本发明的限制。
权利要求
1.一种分支预测器包括连至指令指针(IP)发生器的第一分支预测表(BPT),用于存储多个分支预测入口;和连至所述IP发生器的第二BPT,用于存储更多个分支预测入口。
2.权利要求1的分支预测器,其特征在于所述第一BPT存储已标记的分支预测入口而所述第二BPT存储未标记的分支预测入口。
3.权利要求1的分支预测器,其特征在于还包括连至所述第一BPT的第一电路,如果所述第一BPT表示产生分支,则所述第一电路将IP地址预测为目标地址高速缓冲存储器中存储的目标地址。
4.权利要求1的分支预测器,其特征在于还包括连至所述第二BPT的第二电路,如果所述第二BPT表示产生分支,则所述第二电路将IP地址预测为目标地址高速缓冲存储器中存储的目标地址。
5.权利要求1的分支预测器,其特征在于还包括连至所述第二BPT的第二电路,如果所述第二BPT表示产生分支,则所述第二电路将IP地址预测为从指令解码及计算的目标地址。
6.权利要求1的分支预测器,其特征在于还包括连至所述第二BPT的第二电路,如果所述第二BPT表示产生分支,则所述第二电路将IP地址预测为返回堆栈缓冲器中存储的目标地址。
7.权利要求1的分支预测器,其特征在于把所述第二BPT的大小做成存储两倍于或更多倍于所述第一BPT存储的分支预测入口数。
8.权利要求1的分支预测器,其特征在于所述第一BPT执行第一种预测算法而所述第二BPT执行不同于所述第一种预测算法的第二种预测算法。
9.一种处理器包括指令指针(IP)发生器;连至所述IP发生器的第一级分支预测表(BPT),所述第一级BPT其中存储有与第一多个地址有关的第一多个分支预测入口;和连至所述IP发生器的第二级BPT,所述第二级BPT其中存储有与第二多个地址有关的第二多个分支预测入口。
10.权利要求9的处理器,其特征在于还包括连至所述IP发生器的目标地址高速缓冲存储器并在其中存储有与所述第一多个地址有关的多个目标地址。
11.权利要求10的处理器,其特征在于还包括第一电路,如果在所述第一级BPT中有表示产生分支的命中,则所述第一电路从所述目标地址高速缓冲存储器中选择目标地址作为其输出。
12.权利要求9的处理器,其特征在于还包括连至所述IP发生器的存储器单元中的指令组并在其中存储有多个分支提示。
13.权利要求12的处理器,其特征在于还包括第二电路,如果在所述第二级BPT中的命中表示产生分支并且在所述存储器单元中的有关提示是动态的,则所述第二电路从所述存储器单元中选择目标地址作为其输出。
14.权利要求9的处理器,其特征在于在所述第二多个地址中有像在所述第一多个地址中两到四倍之间那么多的地址,并且所述第二多个地址包含了所述第一多个地址。
15.一种在处理器中执行分支预测的方法,包括以下步骤搜索第一级分支预测表(BPT)以查找与指令指针(IP)地址有关的第一级分支预测入口;搜索第二级BPT以查找与所述IP地址有关的第二级分支预测入口;和如果在所述第一级BPT中发现所述第一分支预测入口,则基于所述第一级分支预测入口进行分支预测,并且,如果在所述第一级BPT中所述第一分支预测入口未命中,则基于所述第二分支预测入口进行分支预测。
16.权利要求15的分支预测器,其特征在于还包括如下步骤在所述第一级BPT中执行第一种分支算法而在所述第二级BPT中执行与所述第一种预测算法不同的第二种预测算法。
17.权利要求15的方法,其特征在于如下步骤如果与所述IP地址有关的指令被解码并被确为分支指令,则基于所述第二分支预测入口进行分支预测。
18.权利要求15的方法,其特征在于搜索所述第一级BPT和搜索所述第二级BPT的所述步骤同时发生。
19.权利要求15的方法,其特征在于搜索所述第一级BPT的所述步骤包括将所述IP地址的地址标记与存储在所述第一级BPT中的地址标记进行比较的步骤,搜索所述第二级BPT的步骤包括从直接映射表中选择入口的步骤。
20.一种在给定了初始IP地址的处理器中预测后继IP地址的方法,所述方法包括以下步骤如果在第一级分支预测表(BPT)中与所述初始IP地址有关的分支预测入口表示产生分支,则将所述后继IP地址预测为来自目标地址高速缓冲存储器的目标地址;并且如果在所述第一BPT中没有与所述初始IP地址有关的分支预测入口并且在第二BPT中与所述初始IP地址有关的分支预测入口表示产生分支,则将所述后继IP地址预测为从与所述初始IP地址有关的指令解码的目标地址。
21.权利要求20的方法,其特征在于还包括下述步骤如果在所述第一BPT中与所述初始IP地址有关的分支预测入口表示不产生分支,则将所述后继IP地址预测为递增一预定量的所述初始IP地址。
22.权利要求20的方法,其特征在于还包括下述步骤如果在所述第一BPT中没有与所述初始IP地址有关的分支预测入口并且在第二BPT中与所述初始IP地址有关的分支预测入口表示不产生分支,则将所述后继IP地址预测为递增一预定量的所述初始IP地址。
23.权利要求20的方法,其特征在于还包括下述步骤如果在所述第一BPT中没有与所述初始IP地址有关的分支预测入口、第二BPT中与所述初始IP地址有关的分支预测入口表示不产生分支,且与所述初始IP地址有关的指令提示被解码为动态的,则将所述后继IP地址预测为递增一预定量的所述初始IP地址。
24.权利要求20的方法,其特征在于将所述后继IP地址预测为来自目标地址高速缓冲存储器中的目标地址的所述步骤包括搜索所述第一BPT以查找同与所述初始IP地址有关的地址标记相匹配的地址标记的步骤,将所述后继IP地址预测为从指令解码的目标地址的所述步骤包括在所述第二BPT中选择与所述初始IP地址有关的直接映射入口的步骤。
全文摘要
一种分支预测器。第一分支预测表(100)连接到指令指针发生器(11)以存储标记的分支预测入口并高速地提供分支预测。第二分支预测表(102)也连到指令指针发生器(11)以存储未标记的分支预测入口并提供大得多的分支工作集的分支预测,尽管是以较慢速度进行提供。
文档编号G06F9/38GK1328664SQ99813061
公开日2001年12月26日 申请日期1999年8月26日 优先权日1998年9月8日
发明者T·Y·叶, H·P·沙朗帕尼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1