CN1310134C - 具有二级分支预测高速缓存的分支预测装置 - Google Patents

具有二级分支预测高速缓存的分支预测装置 Download PDF

Info

Publication number
CN1310134C
CN1310134C CNB02814709XA CN02814709A CN1310134C CN 1310134 C CN1310134 C CN 1310134C CN B02814709X A CNB02814709X A CN B02814709XA CN 02814709 A CN02814709 A CN 02814709A CN 1310134 C CN1310134 C CN 1310134C
Authority
CN
China
Prior art keywords
branch
branch prediction
prediction
instruction
speed cache
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
CNB02814709XA
Other languages
English (en)
Other versions
CN1535415A (zh
Inventor
G·D·左拉斯基
J·S·詹姆士
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN1535415A publication Critical patent/CN1535415A/zh
Application granted granted Critical
Publication of CN1310134C publication Critical patent/CN1310134C/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
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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, 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

Abstract

一种用于执行分支预测的方法及机构。处理器被配置成具有第一级分支预测高速缓存,该第一级分支预测高速缓存被配置成存储对应于一组指令的分支预测信息。此外,第二级分支预测高速缓存(260、1828)用来存储从该第一级高速缓存移除的分支预测信息。该第二级分支预测高速缓存被配置成而只有存储从该第一级高速缓存移除的该信息的子集合。从该第一级高速缓存移除及未存储于该第二级高速缓存内的分支预测信息将舍弃。当在该第一级高速缓存内生成错误时,将做出判断为是否该第二级高速缓存含有对应于该错误的分支预测信息。若对应的分支预测信息于该第二级高速缓存内检测到时,该检测到的分支预测信息从该第二级高速缓存中提取并且用来重新建立完整的分支预测信息,该分支预测信息接着可使用于生成预测。

Description

具有二级分支预测高速缓存的分支预测装置
技术领域
本发明涉及超标量微处理器,特别是涉及用于分支预测的方法及机制。
背景技术
位于美国纽约之电气和电子工程师协会(IEEE)之1993年4月1日之电气和电子工程师协会计算机期刊(IEEE Transactions on Computers),第42卷,第4号,第396至412页,由Perleberg CH等人所提出之“分支目标缓冲设计及最佳化(Branch TargetBuffer Design and Optimization)”描述多级分支目标缓冲(branch target buffer,BTB)。在该多级分支目标缓冲内的每一级在每一条目(entry)中具有不同数量/类型的信息,借以通过达到较佳平衡数目的条目与每一条目的信息数量来使操作性能最佳。
超标量处理器通过在每个时钟周期(clock cycle)执行多重指令及通过选择符合该设计的最短可能的时钟周期而达到高效能。依照于此所使用的,该专有名词″时钟周期″意指在该微处理器内给予指令处理管线(instruction processing pipeline)的各种行程的时间间隔。存储装置(例如寄存器及数组)依据该时钟周期获取本身的数值。例如,存储装置可依据定义该时钟周期的时钟信号的上升或下降缘来获取数值。该存储装置接着存储该数值直到该时钟信号各自的后续的上升或下降缘为止。该专有名词″指令处理管线″在此是意指以管线状的方式使用处理指令的逻辑电路。虽然该管线可以分成部分指令处理在其上执行的任意数目的行程,指令处理通常包括提取该指令、解码该指令、执行该指令及存储该执行结果在经由该指令所确认的目的地。
超标量处理器(以及超管线微处理器(superpipelined microprocessor))的重要的特征为本身的分支预测机制。该分支预测机制指示用于分支指令的预测方向(采取或不采取),而允许后续的指令提取在经由该分支预测预测的指令流(instruction stream)内继续进行。分支指令为造成后续的指令从至少二个地址的其中一个来提取的指令:循序地址确认指令流开始于直接跟随该分支指令的指令;以及目标地址确认指令流开始于存储器中的任何位置。无条件的分支指令总是分支至目标地址,而条件的分支指令基于先前指令的结果可选择该循序或该目标地址。来自该预测指令流的指令在该分支指令执行之前可以推测地执行,并且无论如何在该分支指令执行之前放置于该指令处理管线内。若该预测指令流是正确的,则每个指令循环所执行的指令的数目将有益于增加。然而,若该预测指令流是不正确的(亦即,一个或一个以上的分支指令为不正确预测),则来自该不正确地预测的指令流的指令将由该指令处理管线舍弃并且每个时钟周期所执行的指令的数目将减少。
为了要有效率,该分支预测机制必须高度准确使得该预测指令流尽可能是常常正确的。经常地,对于特定的分支先前执行的分支的记录被用于形成较准确的情况,此类的分支预测记录通常需要维持符合该分支指令的数据在存储器中。在该分支预测数据由该存储器逐出(evict),或者因其它原因而失去的情况下,则可能必须在后来的时刻重新建立用于该分支指令的执行记录。一种上述问题的解决方式可以增加该分支预测存储器的尺寸。然而,增加分支预测存储器的尺寸可能需要在闸极面积及该分支预测机制的尺寸上有显著的增加。结果,关于分支情况的重要的数据可能失去并且必须重新建立。因此,改善分支预测能力的机制是需要的,该方法不需要在闸极数目或该分支预测机制的尺寸上有显著的增加。
发明内容
上文所列述的问题大部分可以由微处理器及在此所描述的方法来解决。在一个实施例中,处理器被配置成具有第一级分支预测高速缓存,该高速缓存被配置成存储对应于一组指令的分支预测信息。此外,第二级分支预测高速缓存被用于存储由该第一级高速缓存逐出的分支预测信息。该第二级分支预测高速缓存被配置成只存储由该第一级高速缓存逐出的分支预测信息的子集。由该第一级高速缓存逐出并且并未存储于该第二级高速缓存的分支预测信息将会舍弃。当在该第一级高速缓存内未命中(miss)时,将会做出是否该第二级高速缓存含有对应于该未命中的分支预测信息的判断。若对应的分支预测信息在该第二级高速缓存内检测到时,该检测到的分支预测信息由该第二级高速缓存所提取并且用于重建可在接下来用于生成预测的完整的分支预测信息。在一个实施例中,可能包含解码电路以执行来自于该第二级高速缓存所提取的指令的解码。来自于该第二级高速缓存的该解码指令可以使用于该完整的分支预测信息的重建。更有利的,一个减少了尺寸的高速缓存可以用于存储来自于该第一级分支预测高速缓存所逐出的分支预测信息。再者,当在该第一级高速缓存内出现未命中时,完整的分支预测可以快速地由存储于该第二级高速缓存的数据来重新建立。
附图说明
本发明的其它目的及优点在阅读下列的详细说明及在参考该附图的后将会变得明了,其中:
图1为微处理器的一个实施例的方块图。
图2为显示分支预测单元的一个实施例的方块图。
图3为显示用于分支预测的方法的流程图。
图4为显示用于使用二级分支预测高速缓存的方法的流程图。
图5显示程序指令的相邻群组及对应的分支预测条目(entry)。
图6显示在分支标记(marker)位及地址偏移(offsets)之间的关系。
图7显示在程序指令、分支标记位及地址偏移之间的关系。
图8显示预测逻辑的一个实施例。
图9显示对于图8中所显示的该预测逻辑的动态逻辑推论。
图10显示分支标记位使用。
图11显示分支标记位使用。
图12显示分支标记位使用。
图13显示分支标记位使用。
图14显示未命中的预测。
图15显示分支目标信息。
图16显示预测逻辑单元的一个实施例的方块图。
图17显示目标选择电路的一个实施例。
图18为显示选择信号电路的一个实施例的方块图。
图19显示分支地址计算单元的一个实施例。
图20为显示在一级分支预测存储及级二分支预测存储之间的关系的方块图。
图21为显示在一级分支预测存储及级二分支预测存储之间的关系的方块图。
图22为显示在级一分支预测存储及级二分支预测存储之间的关系的方块图。
图23为分支预测单元的一个实施例的方块图。
图24为分支地址计算单元的一个实施例。
图25为未命中的预测电路的一个实施例的方块图。
图26为计算机系统的方块图。
虽然本发明适用于各种修正及其它的类型,本发明的特定的实施例是通过在图式中的例子来呈现并且将于此详细描述。然而,需要了解的是对于本发明的该附图及详细说明并非意在限定本发明于所揭露的该特定的形式,而相反地,本发明是在于含括如同由附加的权利要求范围所定义的落在本发明的精神及范围内的所有的修正、等同及替代。
具体实施方式
处理器概要
兹参照图l,该图显示处理器10的一个实施例的方块图。其它实施例是可能的及经过考虑的。如同图1中所示,处理器10包含预先提取(prefetch)单元12、分支预测单元14、指令高速缓存16、指令对准单元18、多个解码单元20A至20C、多个保留位置(reservation stations)22A至22C、多个功能单元24A至24C、加载/存储单元26、数据高速缓存28、寄存器文件30、重新排序缓冲区32、MROM单元34及总线接口单元37。在此以特定的图式标号及连续字母所指定的组件将总合地通过该单独的附图标号所标示。例如,解码单元20A至20C将总合地以解码单元20所标示。
预先提取单元12经由连接以接收来自总线接口单元37的指令,并且更进一步连接至指令高速缓存16及分支预测单元14。同样地,分支预测单元14连接至指令高速缓存16。再者,分支预测单元14连接至解码单元20及功能单元24。指令高速缓存16更进一步连接至MROM单元34及指令对准单元18。指令对准单元18依序连接至解码单元20。每个解码单元20A至20C连接至加载/存储单元26及各自连接至保留位置22A至22C。保留位置22A至22C更进一步连接至各自的功能单元24A至24C。此外,解码单元20及保留位置22连接至寄存器文件30及重新排序缓冲区32。功能单元24连接至加载/存储单元26、寄存器文件30,以及也连接至重新排序缓冲区32。数据高速缓存28连接至加载/存储单元26及连接至总线接口单元37。总线接口单元37更进一步连接至L2接口、L2高速缓存及总线。最后,MROM单元34连接至解码单元20。
指令高速缓存16是用来存储指令的高速缓存存储器。指令由指令高速缓存16被提取并且发送给解码单元20。在一个实施例中,指令高速缓存16被配置成在具有64个字节行(每个字节包含8个2进位位)的2路设定联合架构(2 way set associativestructure)下可存储达64K字节(kilobytes)的指令。另外,也可以使用任何其它需要的配置及尺寸。例如,需要注意的是指令高速缓存16可以按照完整联合(fullyassociative)、设定联合(set associative)或直接映射配置来实现。
指令通过预先提取单元12存储在指令高速缓存16内部。依据预先提取技术,指令可以在由该指令高速缓存16的指令请求之前做预先提取。可以有各种提取技巧由预先提取单元12所使用。由该指令高速缓存所提取的指令将传送给该扫描/对准单元。当指令是第一次提取时,该指令并未由预先解码标志所标记。在此种情况下,该扫描/对准单元每个时钟通过4个字节给该解码单元20。当该解码单元20发送未预先解码指令给该核心时,该解码单元可生成对应于指示该指令边界的预先解码数据。
使用可变位长度指令集的用于处理器10的实施例的一种编码预先解码标志将于下文中描述。可变位长度指令集是其中不同的指令集可以有不同的字节数的一种指令集。由处理器10的一个实施例所使用的一种示例性的可变位长度指令集为x86指令集。
在示例性的编码中,若给定的字节为指令的最后的字节,则将设定对于该字节的结束位。可以由解码单元20直接解码的指令将命名为″快速路径(fast path)″指令。剩余的x86指令,依据一个实施例,将称为MROM指令。包含两个前序字节,例如Mod R/M字节及实时字节,的快速路径指令将具有结束位如下:
结束位        00001
MROM指令是被解码单元20判定为解码太复杂的指令。MROM指令由请求MROM单元34所执行。尤其特别的是,当遭遇MROM指令时,MROM单元34分析及发送该指令进入定义的快速路径指令的子集合内以达到所需的操作。MROM单元34发送该子集合快速路径指令给解码单元20。
处理器10使用分支预测以便推测地提取后续条件式分支指令,。分支预测单元14将包含在内以执行分支预测操作。在一个实施例中,分支预测单元14使用分支目标缓冲区,该分支目标缓冲区可缓冲存储多至三个分支目标地址并且在指令高速缓存16内的高速缓存行的每16个字节部分将对应提取(taken)/未提取(not taken)预测。该分支目标缓冲区例如可包括2048个条目或任何其它适当的条目数目。当特定的行预先解码时,预先提取单元12判定初始的分支目标。对应于高速缓存行的该分支目标的后续的更新可因为在该高速缓存行内的指令的执行而生成。指令高速缓存16提供该待提取指令地址的指示,以便分支预测单元14可判定那一个分支目标地址将被选择而形成分支预测。解码单元20及功能单元24提供更新信息给分支预测单元14。解码单元20检测未经由分支预测单元14所预测的分支指令。功能单元24执行该分支指令并且判定是否该预测的分支方向是不正确的。该分支方向可能受到″提取″,其中后续的指令由该分支指令的目标地址所提取。相反地,该分支方向可能″未提取″,其中后续的指令由连接着该分支指令的存储器位置所提取。当检测到错误预测的(mispredicted)分支指令时,接续该错误预测的分支的指令由处理器10的各种单元所舍弃。在另一个配置中,分支预测单元14可以连接至重新排序缓冲区32而非解码单元20及功能单元24,并且可由重新排序缓冲区32接收分支错误预测信息。各种适当的分支预测算法可以通过分支预测单元14来使用。
由指令高速缓存16所提取的指令将传送至指令对准单元18。当指令由指令高速缓存16提取时,该对应的预先解码数据被扫描视并该待提取的指令提供信息给指令对准单元18(以及提供给MROM单元34)。指令对准单元18扫描该预先解码数据以将指令对准每个解码单元20。在一个实施例中,指令对准单元18将来自于两组十六个指令字节的指令对准解码单元20。解码单元20A接收的指令早于同时由解码单元20B及20C(在程序顺序中)所接收的指令。同样地,解码单元20B接收的指令早于同时由解码单元20C在程序顺序中所接收的指令。
解码单元20被配置成解码由指令对准单元18所接收的指令。寄存器操作数信息被检测并且传送至寄存器文件30及重新排序缓冲区32。此外,若该指令需要一个或一个以上的存储器运算来执行,解码单元20发送该存储器运算给加载/存储单元26。每个指令经由解码而成为一组用于功能单元24的控制值,并且这些控制值结合操作数地址数据及位移或可以包含于该指令内的实时数据而发送至保留位置22。在一个特定的实施例中,每个指令经由解码而成为达到可以分别地由功能单元24A至24C所执行的二个运算。
处理器10支持非循序执行(out of order execution),并且因此使用重新排序缓冲区32以保持用于寄存器读取及写入运算的该原始的程序顺序的追踪、以实现寄存器改名、以允许猜测指令执行及分支预测错误回复,以及促使准确的除外。在重新排序缓冲区32内的暂存的存储位置当解码包含寄存器的更新的指令时将保留而藉以存储猜测的寄存器状态。若分支预测为不正确时,在写入寄存器文件30之前,沿着该错误预测路径的猜测执行指令的结果在该缓冲区内可以是无效的。同样地,若特定的指令造成除外,接续该特定的指令的指令可以舍弃。在此方式中,除外是″准确的(precise)″(亦即接续于造成该除外的该特定的指令的指令在该除外之前并未完成)。需要注意的是若特定指令是早于在该程序顺序中的特定指令而执行,该特定的指令为猜测地执行。先前的指令可以是分支指令或造成除外(exception-causing)指令,在该例子中,该猜测结果可以由重新排序缓冲区32所舍弃。
在解码单元20的输出所提供的指令控制值及实时或位移数据将直接传送至分别的保留位置22。在一个实施例中,每个保留位置22能够维持多至5个指令数据(亦即指令控制值以及操作数值、操作数标志及/或实时数据)等待发出给该对应的功能单元。需要注意的是对于图1的实施例,每个保留位置22都结合专有的功能单元24。因此,三个专有的″发送位置(issue positions)″由保留位置22及功能单元24所形成。换言之,发送位置0由保留位置22A及功能单元24A所形成。对准及发送至保留位置22A的指令由功能单元24A所执行。同样地,发送位置1由保留位置22B及功能单元24B所形成;以及发送位2由保留位置22C及功能单元24C所形成。
当解码特定的指令时,若所需的操作数为寄存器位置,寄存器地址数据将同时地发送至重新排序缓冲区32及寄存器文件30。在一个实施例中,重新排序缓冲区32亦可包含由解码单元接收操作数请求的未来文件。对于本领域普通技术人员将会了解的是该x86寄存器文件包含八个32位实数寄存器(亦即典型上称为EAX、EBX、ECX、EDX、EBP、ESI、EDI及ESP)。在使用该x86处理器架构的处理器10的实施例中,寄存器文件30包括用于每个该32位实数寄存器的存储位置。额外的存储位置可以包含于寄存器文件30内而提供MROM单元34所使用。重新排序缓冲区32含有用于改变该寄存器的内容的结果的暂时存储位置借以允许非循序执行。重新排序缓冲区32的暂时存储位置将保留用于当解码时判定以修正其中一个实数寄存器的内容的每个指令。因此,在特定程序的执行期间的各种位置,重新排序缓冲区32可具有一个或一个以上的含有给定的寄存器的该猜测地执行内容的位置。若给定指令的接下来的解码判定重新排序缓冲区32具有先前的位置或指定给寄存器使用而作为在该给定指令中的操作数的位置,该重新排序缓冲区32发送给该对应的保留位置:1)在最近最常指定的位置中的值,或2)用于最近该最常指定的位置的标志,若该值尚未经由将在最后执行该先前的指令的功能单元生成。若重新排序缓冲区32具有保留给给定的寄存器的位置,该操作数的值(或重新排序缓冲标志)由重新排序缓冲区32所提供而非由寄存器文件30所提供。若在重新排序缓冲区32内未具有保留给所需的寄存器的位置,该值直接由寄存器文件30取得。若该操作数对应于存储器位置,该操作数的值将通过加载/存储单元26提供给该保留位置。
在一个特定的实施例中,重新排序缓冲区32作为一个单元被配置成存储及处理同时解码的指令。此种配置在此将称为″整行导向的(line-oriented)″。通过一起处理数个指令,在重新排序缓冲区32内所使用的该硬件可以简化。例如,每当一个或一个以上的指令由解码单元20发出时,包含于本发明的实施例内的整行导向重新排序缓冲区分配充分用于附属三个指令(由每个解码单元20具有一个)的指令信息的存储位置。相比之下,可变的数量存储位置分配于已知的重新排序缓冲内,视指令实际发送的数而定。在比较上可能需要较大数量的逻辑闸以分配该可变数量的存储位置。当每一个该同时解码的指令已经执行时,该指令结果将同时存储于寄存器文件30内。该存储位置接着闲置而用于分配另一组同时解码指令。此外,因为该逻辑控制是由数个同时解码的指令所分摊,每个指令所使用的控制逻辑电路的数量将减少。确认特定的指令的重新排序缓冲标志可以分成二个方面:行标志(line tag)及偏移标志(offset tag)。该行标志确认包含该特定指令的该组同时解码的指令,并且该偏移标志确认在该组内的那一个指令对应于该特定指令。需要注意的是存储指令结果于寄存器文件30内并且清除该对应的存储位置则称为″撤回″该指令。更需要注意的是任何重新排序缓冲配置可以使用在处理器10的各种实施例中,包含使用未来文件以存储寄存器文件30的该猜测状态。
如同之前所提到的,保留位置22存储指令直到该指令由对应的功能单元24所执行。指令被选择执行如果:(i)该指令的操作数已经提供;以及(ii)该操作数仍然尚未提供给在该相同的保留位置22A至22C及在程序顺序中的指令之前的指令。需要注意的是当指令由其中一个该功能单元24所执行时,该指令的结果将直接发送给等待在相同时间中该结果经由发送以更新重新排序缓冲区32的任何保留位置22(此种技术通常称为″结果传递″)。指令在该结合的结果传递的该时钟周期期间可以选择用于执行并且发送给功能单元24A至24C。保留位置22在此例子中发送该传递结果给该功能单元24。在实施例中,其中指令可以由功能单元24解码成多重待执行的运算,该运算可以彼此分别地预先安排。
在一个实施例中,每一个功能单元24被配置成以执行加法及减法的整数计算运算以及偏移、旋转、逻辑运算及分支运算。该运算经由执行以响应由解码单元20用于特定指令所解码的该控制值。需要注意的是浮点单元(未显示)亦可以使用以提供浮点运算。该浮点运算单元作为辅助处理器运行,接收来自MROM单元34或重新排序缓冲区32的指令并且接着与重新排序缓冲区32通讯以完成该指令。此外,功能单元24可以被配置成执行用于加载的地址生成及存储由加载/存储单元26所执行的存储器运算。在一个特定的实施例中,每个功能单元24可包括用于生成地址的地址生成单元及用于执行该剩余功能的执行单元。该两个单元在时钟周期期间在不同的指令或运算上可独立地操作。
每个功能单元24亦提供关于执行条件的分支指令的执行信息给分支预测单元14。若分支预测是不正确时,分支预测单元14除去已经进入该指令处理管线的接续该错误预测的分支的指令,并且造成从指令高速缓存16或主存储器生成该所需的指令的提取。须注意的是在此类情况中,将会舍弃生成于该错误预测的分支指令之后的位于该原始程序顺序中的指令结果,包含猜测地执行及暂时地存储于加载/存储单元26及重新排序缓冲区32内的指令结果。更需要注意的是分支执行结果可以由功能单元24提供给重新排序缓冲区32,该重新排序缓冲区可指示分支错误预测给功能单元24。
若寄存器值经过更新,则由功能单元24所生成的结果将发送至重新排序缓冲区32,并且若存储器位置的内容改变时,则由功能单元24所生成的结果将发送至加载/存储单元26。若该结果欲存储至寄存器中,当该指令解码时,重新排序缓冲区32存储该结果在保留用于该寄存器的值的位置。多个结果总线38将包含用于传递来自功能单元24及加载/存储单元26的结果。结果总线38传送所产结果以及确认该待执行指令的重新排序缓冲标志。
加载/存储单元26提供在功能单元24及数据高速缓存28之间的接口。在一个实施例中,加载/存储单元26被配置成具有两个加载/存储缓冲区。第一加载/存储缓冲区包含对应于即将到来的(pending)、尚未访问数据高速缓存28的加载或存储的用于数据及地址信息的存储位置。第二加载/存储缓冲区包含对应于已经访问过数据高速缓存28的加载及存储的用于数据及地址信息的存储位置。例如,该第一缓冲区可包括12个位置并且该第二缓冲区可包括32个位置。解码单元20裁决对该加载/存储单元26的访问。当该第一缓冲区是满的时,解码单元必须等待直到加载/存储单元26具有空间给予该即将到来的加载或存储请求信息。加载/存储单元26对于加载存储器运算对照即将到来的存储存储器运算亦执行附属检核以确保可以维持资料连续性(coherency)。存储器运算为数据在处理器10及该主存储器子系统之间的转移。存储器运算可以是使用存储于存储器内的操作数的指令的结果,或者可以是造成该数据传送但未有其它运算的加载/存储指令的结果。此外,加载/存储单元26对于特定的寄存器,诸如该区段寄存器(segment registers)及其它关于由该x86处理器架构所定义的该地址翻译机制,可包含特定的寄存器存储位置。
数据高速缓存28为提供暂时存储数据于加载/存储单元26及该主存储器子系统之间转移的高速缓存。在一个实施例中,数据高速缓存28具有存储达到64K字节数据于两路设定联合架构内的容量。需要了解的是资料高速缓存28可以在各种特定的存储器配置中实现,包含一个设定联合配置、一个完整的联合配置及一个直接映射配置,以及任何适当大小的任何其它配置。
在使用x86处理器架构、指令高速缓存16及数据高速缓存28的处理器10的一个特定的实施例中为线性寻址(linearly addressed)及物理标记(physically tagged)。该线性地址来自于由该指令所详载的偏移及由该区段部分的该x86地址转译机制所详载的基本(base)地址所形成。线性地址可选择性地转译成用于访问主存储器的物理地址。该线性至物理转译由该x86地址转译机制的页码部分(paging portion)所详载。该物理地址将与该物理标志比较以判定符合/错误状况(hit/miss status)。
总线接口单元37被配置成在处理器10及在计算机系统内的其它组件之间经由总线做通讯。例如,该总线可以兼容于由迪吉多计算机公司(Digital EquipmentCorporation)所发展的EV-6总线。另外,包含封包模式(packet-based)、单向或双向连结等等的任何适当的内联架构亦可以使用。选择性的L2高速缓存接口亦可以使用于与第二级高速缓存(level two cache)接合。
最后,将使用x86微处理器架构作为一个例子。然而,在此所描述的该分支预测技术可以在任何微处理器架构内使用,并且此类的实施例是经过考虑的。须注意的是,在该x86微处理器架构中,具有定义由单一字节操作码(opcode)所组成的子程序返回指令(例如RET指令)。详载本身的分支目标地址的该子程序返回指令由ESP寄存器所指示从堆栈上方提取。此单一字节RET指令的处理可以表示在某些情况的特定结果。用于处理此情况的机制将于下文中更详细说明。
分支预测综论
图2显示分支预测单元14的一个实施例部分。除了在图2所显示的部分外,分支预测单元14的其它实施例是可能的并且被考虑。如同在图2中所示,分支预测单元14包含全域预测器存储205、区域预测器存储206、分支目标存储208、更新逻辑200及202、全域记录转移寄存器(GHSR)204、行缓冲区210、返回地址堆栈(RAS)230、序列地址生成器(SEQ)232、预测逻辑220、移除(victim)高速缓存260、分支地址计算器270、指令高速缓存16、L2高速缓存1828及解码电路400。移除高速缓存260是第二级(L2)高速缓存,该高速缓存被配置成存储由区域预测器存储206所移除的分支预测信息。在一个实施例中,移除高速缓存260被配置成仅高速缓存数据,该数据为先前维持于区域预测器存储206内但是经由移除以生成空间用于其它数据。有利的是,因为区域预测器存储206及移除高速缓存260并未存储重复数据,更多的分支预测信息将可以维持。
全域预测器存储205、区域预测器存储206、分支目标存储208、指令高速缓存16、预测逻辑220、分支地址计算器270及行缓冲区210由提取地址多任务器222连接至提取地址总线236。全域记录转移寄存器(GHSR)204经由总线234连接至全域预测器存储205及行缓冲区210。更新逻辑200连接至全域预测器存储205、区域预测器存储206及分支目标存储208。行缓冲区210经由总线248连接至更新逻辑200及202。此外,更新逻辑202经由总线246连接至全域记录转移寄存器(GHSR)204。重新排序缓冲区32提供选择控制及更改地址给多任务器222。重新排序缓冲区32亦提供分支预测的行为及实际行为信息给更新逻辑200及更新逻辑202。全域预测器存储205及区域预测存储206分别经由总线238及242连接至预测逻辑220。预测逻辑220经由总线250连接至分支地址计算器270以及经由选择信号连接至多任务器212。指令高速缓存16经由总线241连接至分支地址计算器270。多任务器输出212经由总线243连接至分支地址计算器270及多任务器221。并且分支地址计算器270经由总线245连接至多任务器221,以及经由选择信号223连接至多任务器221。最后,来自于多任务器221的输出连接至多任务器222。
通常,在图2中所显示的部分分支预测单元14的基本操作说明如下。提取地址236传送至行缓冲区210、区域预测器存储206、目标数组存储208及分支地址计算器270。此外,部分该提取地址236与全域记录234结合以形成索引而进入全域预测器存储205内。再者,提取地址236的部分225传送至预测逻辑220。全域预测器存储205传送全域预测238、区域预测器206传送区域预测242及目标数组208传送对应于该接收的提取地址的目标地址。由区域预测器存储206所传送的该区域预测242提供信息给预测逻辑220而供使用以形成分支预测。同样地,全域预测器存储205传送全域预测238给预测逻辑220而供使用以形成该分支预测。在一个实施例中,全域预测238对于已经显示动态行为的分支可以覆盖由区域预测器存储206所提供的区域预测242。关于显示动态行为的分支的分类将于下文中讨论。最后,预测逻辑220传送信号给多任务器212,该多任务器212选择下一个提取地址243而供使用以提取新的指令。在某些例子中,由多任务器212所传送的该提取地址243将是传送用于该目前分支预测的唯一提取地址。然而,在其它例子中,分支地址计算器270对应于该目前的分支预测可传送第二提取地址245以响应于判定由多任务器212所传送的该提取地址243是不正确的。在此类例子中,分支地址计算器270可传送用于由多任务器221输出的选择提取地址245的信号223。在此方式中,错误预测可以于早期判定并修正。
动态行为及全域分类
如同上文所提及的,在一个实施例中,全域预测机制可以包含于分支预测单元14中。全域预测机制的细节可以参考下列的正在申请中,共同转让给同一受让人的专利申请案,由Zuraski,Jr等人于1999年11月16日所申请的序号为09/441,630的:″条件分支于全域记录分支预测的动态分类(Dynamic Classification of ConditionalBranches in Global History Branch Prediction)″,该专利申请案的揭露在此将并入成为本申请专利内容的一部分。如同先前所显示的,提取单元12可以被配置成检测分支指令及传送对应于分支指令的分支信息给分支预测单元14。当条件分支受到检测时,更新逻辑200可在区域预测存储206中生成对应的分支预测条目并且初始化该新生成的分支预测条目而成为未提取。在一个实施例中,区域预测器存储206可存储分支预测信息,包含分支标记,而供使用以生成分支预测以及由存储于分支目标存储208内的位在多个分支目标地址中选择序列地址232或返回堆栈地址230。当在区域预测器存储206内生成用于分支的条目时,该分支的预测方向将初始化成为未提取并且该对应的分支标记将初始化以显示序列地址232。此外,对应于条件分支的条目将建立于行缓冲区210内。行缓冲区条目可包括全域记录、提取地址、全域预测及全域位。
当分支在区域预测器存储206内具有未提取预测时,序列地址232从多任务器212传送。最后预测250将传送给更新逻辑202,该更新逻辑202转移分类为动态的分支的预测方向进入全域记录转移寄存器(GHSR)204内。当区域分支预测条目显示分支是预测为未提取时,最终预测250显示该分支为未提取并且信号240从多任务器212选择序列地址232作为该下一个提取地址。在该分支的后续执行上,在该分支预测条目由分支预测单元14删除之前,用于该分支的预测方向并未提取并且该序列地址232将传送件为该下一个提取地址。当撤回时,在行缓冲区210内的该对应的条目将传送至更新逻辑200及更新逻辑202并且由行缓冲区210删除。当行缓冲区条目显示分支被分类为非动态的并且重新排序缓冲区32显示该分支为正确地预测时,将执行由更新逻辑200或202的不更新。然而,若该分支被分类为非动态的并且为错误预测的,对应于该错误预测分支的分支预测将更新并且该全域记录转移寄存器(GHSR)204将依照下文所讨论而更新。
非动态-提取分支
当撤回或错误预测时,重新排序缓冲区32传送关于分支的行为的信息给更新逻辑200。而且,行缓冲区210传送行缓冲条目给更新逻辑200及202。当行缓冲分支条目显示分支是分类成为非动态及预测不提取时,并且重新排序缓冲区32显示该对应的分支为错误预测时,更新逻辑200更新对应于错误预测分支的分支预测条目。更新逻辑200更新在区域预测器存储206内的分支预测由不提取改为提取并且进入于分支目标存储208内的该分支目标地址。结合该存储分支目标地址的″动态″(或″全域″)位将初始化以显示该分支是分类成为可以由二位零重新表示的静态或非动态。在该分支的后续执行上,并且在该分支预测条目由分支预测单元14所删除之前,该分支预测条目显示提取的预测及非动态的分类。当分支是预测提取及分类为非动态时,预测逻辑220选择来自多任务器212的目标。如同先前所提,若该分支为正确地预测,则不需要由更新逻辑200或202来更新分支预测。另一方面,若非动态预测提取分支是不提取时,该分支预测条目及全域记录转移寄存器(GHSR)204将会更新。
动态分支
当分类为非动态及预测提取的分支是错误预测时,更新逻辑200更新对应于在区域预测器存储206内的该错误分支的动态位以显示该分支是分类为动态或全域的。此外,更新逻辑200更新对应于该错误分支的位于全域预测存储(GHSR)204内的该全域预测条目以显示该分支是预测不提取。亦然,更新逻辑202更新全域记录转移寄存器(GHSR)204以显示分支不提取。在一个实施例中,全域记录转移寄存器(GHSR)204追踪该最后8个动态分支的行为。
当动态分支被提取时,提取地址236传送至区域预测器存储206、目标数组208及行缓冲区210。此外,该提取地址与全域记录转移寄存器(GHSR)204的内容组合以形成传送至全域预测器存储205的索引203。全域记录转移寄存器(GHSR)204的内容亦经由总线234传送至行缓冲区210。在一个实施例中,索引203由连结位9通过4个具有全域记录转移寄存器(GHSR)204的内容的提取地址236而形成。其它形成索引的方法,诸如ORing或XORing,亦可考虑。该索引选择传送至行缓冲区210、更新逻辑202及多任务器220的位于全域预测器存储205内的条目。由全域预测器存储(GHSR)204所传送的该分支的预测方向将由更新逻辑202转移至该全域记录转移寄存器(GHSR)204内。例如,二位1可表示提取分支并且二位0可表示未提取分支。若该对应的动态位显示该分支经分类为全域并且该全域预测显示该分支为提取,则由多任务器212传送的该目标地址将选择为下一个提取地址。若该全域预测显示该分支为未提取,则序列地址232将由多任务器212选择为该下一个提取地址。
当撤回时,重新排序缓冲区32传送分支信息给更新逻辑200及更新逻辑202。此外,行缓冲区210传送该对应的分支信息给更新逻辑202。当重新排序缓冲区32显示动态分支为正确地预测时,更新逻辑200修正全域预测条目205以显示该分支的行为。在一个实施例中,全域分支预测条目包括饱和计数器。此类的计数器在提取分支上递增及在未提取分支上递减的两个位。此类的指示器可以使用以显示分支是强烈提取、微弱提取、强烈未提取或微弱未提取。若动态分支是错误预测时,更新逻辑200更新该全域预测条目205以显示该分支行为。此外,当错误预测时,更新逻辑202修复全域记录转移寄存器(GHSR)204以反映该动态分支的该实际而非该预测的行为。
移除分支预测高速缓存
分支预测单元14操作的上述综论是假设用于对应提取地址的分支预测存在于区域预测器存储206。然而,对应于接收的提取地址的分支预测可能不存在于区域预测器存储206内。用于处理此种情形的一般概要将于下文中讨论。
图3为显示用于在第一级(L1)分支预测存储206内生成分支预测条目的方法的一个实施例的流程图,该分支预测存储206包含收回存在的分支预测条目及存储子集合的该收回的分支预测信息于第二级(L2)存储内。第二级分支预测存储260的使用有益于允许由该L1预测器存储206所移除的分支预测信息的保留。本领域普通技术人员将会了解生成对于特定分支的准确的预测可能需要通过许多分支执行的分支执行记录的建立。因此,在高速缓存内保留对应于移除的分支预测的分支预测信息可改善分支预测的准确性。当检测到所需的重新加载进入L1存储206时(判定方块301),将会做出判定(判定方块303)是否有空间存在于该L1分支预测存储206的对应的条目内而用于分支预测。在对应于该重新加载数据的位于该L1分支预测存储206内的该条目已经被占有的情况下,该存在的条目可以移除(方块305)并且只有子集合的该移除的分支预测信息将存储于该L2存储260内(方块307)。若该重新加载数据正在由该L2存储260所提取(决定方块309),则由该L2存储260所提取的数据将包含子集合的分支预测条目,该分支预测条目可以使用于重新建立对应的完整分支预测条目(方块311)。该重新建立条目可接着存储于该L1存储206内(方块315)。另外,若该重新加载数据并未由该L2存储260所提取时(决定方块309),则新的分支预测条目将初始化(方块313)并且存储于该L1存储内(方块315)。
图4显示本方法的另一个实施例,其中对应的分支预测并未存在于L1分支预测器存储内。起初,提取地址存在于L1分支预测器存储206内(方块400)。当该提取地址存在时,将做出判定是否对应于该存在的提取地址的分支预测是存在于该L1预测器存储内(判定方块402)。在对应分支预测是存在于该L1存储206的情况下,该预测将会传送(方块418)。然而,在未有对应的分支预测于该L1存储206内的情况下,将做出判定是否对应于该提取地址的该L1预测器存储206内的该条目是由对应于另一个提取地址的分支预测条目所占据(判定定方块404)。若另一个条目存在于该L1预测器存储206内,该存在的条目将由该L1预测器存储206(方块406)所移除。若该对应的L1预测器存储条目并未由有效的条目所占据,则将会询问L2预测器存储260关于对应于该提取地址(方块408)的分支预测条目。在一个实施例中,L1预测器存储206及L2预测器存储260可以并联询问。若未有对应的条目存在于该L2预测器存储260内时(方块410),对于该存在的高速缓存地址的新的分支预测条目可以建立于该L1预测器存储206内(方块412)。另一方面,若在该L2分支预测器存储260内对应于该提取地址具有存在着条目时,来自该L2条目的数据将使用以重新建立对应于该高速缓存地址的完整的分支预测(方块414)。该重新建立分支预测接着存储于该L1分支预测器存储内(方块416)并且将传送(方块418)而使用于生成分支预测。优点在于对应于分支指令的分支预测信息可以由L2分支预测器存储来回复,而非必须通过分支执行的记录来重新建立该分支预测信息。再者,只有对应于该分支预测的子集合信息需要存储于该L2分支预测存储260内。在此种方式中,该L2分支预测存储260的尺寸可以做得更小。
区域分支预测器存储
在一个实施例中,区域预测器存储206可以以相同的方式组织成为指令高速缓存16。存储于区域预测器存储206内的数据可由此种方式组织的存储行所组成。在一个实施例中,区域预测器存储206为足够的尺寸以含括所有在该指令高速缓存16内的所有的条目。在另一个实施例中,区域预测器存储206可以小于指令高速缓存16。例如,区域预测器存储206可以是指令高速缓存16的1/4尺寸。在此类的实施例中,为了区别索引在区域预测器存储206内的该相同的存储位置而用于多重提取地址的条目,额外的位可以随着区域预测而存储于区域预测器存储206内。在一个实施例中,全域预测器存储205可以被配置成使得单一存储位置提供用于超过一个提取地址的预测。本领域普通技术人员现在将会了解用于区域预测存储206及全域预测存储205的各种可能的配置将是可能的。
现参照图5,该图为显示相邻的指令字节群组50及在区域预测器存储206内的对应的条目的示例性图示。在图5中,在指令内的每个位以短的垂直线(例如标号54)来说明。此外,在群组50内的该垂直线分离指令界定字节范围(例如图式标号56)。显示于图5的指令在长度上是可变化的,并且因此该指令集,包含显示于图5内的指令,是可变化位长度指令集。换言之,在该可变的位长度指令集内的第一指令可占据第一数目字节在该指令集内不同于由第二指令所占据的第二数目字节。其它指令集可以是固定的长度,使得在该指令集内的每个指令占据相同于每个其它指令的字节的数目。
如图5的说明,群组50包含非分支指令IN0-IN4。指令IN0、IN3及IN4为两个字节指令。指令IN1为一个字节指令并且指令IN2为三个字节指令。三个预定提取分支指令PB0、PB1及PB2亦在图中说明,每个预定提取分支指令显示为占据二个字节。需要注意的是非分支及分支指令可占据各种数目的字节。
如同在此所使用的,地址的偏移包括许多该地址的最低有效位。该数目充分对于在该字节的群组内的每个字节提供该位的不同的编码给该偏移相关的字节。例如,群组50为16个字节,字节0至15。因此,在该群组内的地址的四个最低有效位形成该地址的偏移。该地址的剩余位确认来自于在该主存储器内的相邻的指令字节的其它群组的群组50。此外,许多该剩余位的最低有效位形成由指令高速缓存16所使用的索引以选择符合于存储群组50的一列存储位置。
集合52为对应于群组50的九个分支标记位0至8的示例性集合。在集合52内的九个分支标记位的每一个对应于群组50的特定的字节并且显示是否预定的提取分支指令结束于该对应的字节内。在该显示的实施例中,分支标记位0对应于指令字节0、分支标记位1对应于指令字节1至2、分支标记位2对应于指令字节3至4、分支标记位3对应于指令字节5至6、分支标记位4对应于指令字节7至8、分支标记位5对应于指令字节9至10、分支标记位6对应于指令字节11至12、分支标记位7对应于指令字节13至14、分支标记位8对应于指令字节15。除了分支标记位52外、对应于分支标记位52的分支预测信息450亦包含在内。分支预测信息450包含对应于预测的提取分支的信息并且可以使用于生成如同下文所进一步讨论的分支预测。
在图5所显示的实施例中,分支标记位设定为″1″以显示预测的提取分支指令结束于该对应的字节范围内。若没有预测的提取分支指令结束于对应分支标记位的该字节范围内时,该分支标记位将设定为″0″。因此,第二分支标记位将设定以显示预测的提取分支,PB0,结束于该指令字节范围3至4内。第六分支标记位将设定以显示预测的提取分支,PB1,结束于指令字节范围11至12内。最后,第七分支标记位将设定以显示预测的提取分支,PB2,结束于指令字节范围13至14内。在一个实施例中,高达三个预测提取分支可以由分支标记位52所显示。在此类实施例中,分支预测信息450可含有关于三个个别的分支指令的信息。此类的信息450可包含分支指令的类型并且显示该对应分支的过去行为的信息。分支预测信息450将于图15的讨论中做进一步讨论。
在提取地址对于区域预测器存储206的表示上,群组分支标记位52及分支信息450将传送至预测逻辑220而供使用以生成分支预测。在一个实施例中,该提取地址的偏移可以使用以确认哪一个分支标记位52被考虑以生成分支预测。现参照图6,该图显示在分支标记位52及提取地址偏移之间的关系的一个实施例。在图6中,具有字段602至618的表格包含偏移地址及对应的分支标记位。通常,是否分支标记位被考虑以生成分支预测视是否该对应的偏移满足显示于该表格内的该条件而定。例如,字段602说明若地址的偏移为小于或等于零,则所有分支标记位将被考虑以生成分支预测。在此方式中,该表格显示被考虑用于给定的偏移的该最低数目的分支标记位。因此,若偏移等于七,则第四至第八分支标记位将受到考虑。若偏移等于十五,则只有第八分支标记位将受到考虑。
参照图7,该图显示说明上文所描述的在指令字节及分支标记位之间的关系。图7显示指令字节50及对应的分支标记位。该图亦说明该指令字节#702、分支标记位#704、每个分支标记位对应706的该指令字节,以及对应每个分支标记位的该提取地址偏移708。分支信息450并未显示。如同参考图5所讨论的,三个预测的提取分支指令,PB0至PB2与经由设定的对应的分支标记位2、6及7共同显示。例如在例子中,假设具有偏移3的提取地址存在于区域预测器存储206内。在此类情形下,分支标记位2至8皆满足该相对位的条件(亦即对于分支标记位2,偏移<=3,对于分支标记位3,偏移<=5等等)。因此,当生成的分支预测为分支标记位符合目前按照顺序所提取的指令之前的指令时,分支标记位2至8将使用并且分支标记位0至1可以有效地忽略。在此方式中,判定那一个分支标记位以考虑而生成预测可以马上确认。
图8表示分支标记位52如何可以使用以生成预测的一个实施例。在图8中所包含的为比较所接收的提取地址偏移(在图中以″a″表示)与符合图7中所显示的该偏移值708的值0、1、3、5、7、9、11、13及15的电路802。在该接收的偏移小于或等于该比较值的例子中,显示此项事实的信号808传送至AND闸804。此外,每个分支标记位52亦传送至AND闸804。逻辑AND闸808连接至逻辑OR闸806,该逻辑OR闸的输出显示是否正在完成分支预测。参考图8的例子,假设如同之前高速缓存地址经由接收具有等于数值3的偏移。如同图7所显示,具有偏移3的该指令对应预测的提取分支PB0。接着,对应的分支标记位52将由区域预测器206传送至在图8所显示的该逻辑。电路802接收具有数值3的该偏移并且确认分别由闸极804C至804I所接收的信号808C至808I。此外,分支标记位2、6及7传送二位数值″1″分别给闸极804C、804G及804H。该剩余分支标记位传送二位数值″0″。因此,每个闸极804C、804G及804H传送二位值″1″给闸极806,该闸极依序传送显示分支预测正在生成的二位数值″1″。
图9显示在图8中显示使用动态逻辑的电路的一个实施例900。本领域普通技术人员将可以轻易了解动态逻辑的操作。图9包含可以视为分别对应于逻辑AND闸804A至804I的连接的晶体管902A至902I。而且晶体管904及反相器906亦包含在内,该晶体管904可供应用于该动态逻辑的预先充电值。最初,反相器906的输出908在该电路的评估相位期间传送二位状态″0″而显示没有分支预测正在生成。然而,当一个或一个以上的闸极902都具有确认的输入时,反相器906的输出908转移成二位数值″1″而显示分支预测正在生成。本领域普通技术人员将能轻易了解有许多其中第9及图10的逻辑可以实现的方式以完该相同的任务。
分支标记位更新
分支指令通常包含至少一个操作码(确认在该指令集内的分支指令由微处理器10所使用)及一个偏移以加入至该分支指令的地址内(或实时跟随该分支指令的该指令的地址)而形成该分支目标地址。因此,分支指令通常占据至少二个字节。利用这项事实的优点,分支标记位并不需要为每个指令字节而被存储并且关于相邻的指令字节所存储的分支标记位的数目将可以减少。然而,需注意特定的例子存在着包含该单一字节RET指令,其中分支标记将被设定以显示预测的提取分支,但是该分支预测可能错误。将讨论用于处理此项特定的例子的实施例。
第11至15图提供更新分支标记位的例子。图10显示一群相邻的指令字节50、分支标记位52及分支信息450。在图10的例子中,未提取分支经由预测并且未分支标记位52将设定。兹参照图11,指令字节50、标记位52及分支信息450经显示以接续检测预测的提取分支及对应的分支标记位52的更新。图11显示预测的提取分支PB0 1201在指令字节#8及#9的指令字节50内受到检测。因为该预测的提取分支结束于指令字节#9内,分支标记位52通过设定分支标记位#5 1203而更新成二位数值″1″。此外,在一个实施例中,每个分支信息条目500A至500C可分别地对应至第一、第二及第三预测的提取分支,而呈现于指令字节50内。在此类的实施例中,预测的提取分支PB01201可以经检测而成为该第一预测的提取分支而呈现于该指令字节群组50内。因此,对应于分支指令PB0 1201的信息可以存储于分支信息条目500A内。
图12显示分支标记位52的更新以响应检测第二预测提取分支。预测提取分支PB11301在群组50内受到检测。响应于检测分支PB1 1301并且因为分支PB1 1301结束于指令字节#3,分支标记位#2 1303将设定为二位值″1″。再者,在所显示的该实施例中,新检测的分支PB1 1301将被判定成为在群组50内的该第一预测提取分支。因此,对应于分支PB1 1301的分支信息将对应分支信息条目500A。然而,分支信息条目500A目前含有如同图11的讨论内所描述的对应于分支PB0 1201的分支信息。因此,在条目500A内的该数据将被转移至条目500B,并且对应于分支PB1 1301的该新的分支信息将被存储于条目500A内。
图13显示预测提取分支条目的更新。在图13的例子中,非提取的预测接着判定而用于分支PB1 1301。为了更新用于PB1 1301的该提取预测,该对应的动态位500A被设定为二位数值″1″。因此,对应于分支PB0及PB1的分支预测将会存在。然而,分支PB1被分类为动态500A并且分支PB0仍然保留分类为区域500B。
在上文的讨论中,每个分支信息条目500A至500C将被描述为对应于在群组50内的特定的预测提取分支。例如,条目500A对应呈现于群组50内的第一预测提取分支、条目500B对应第二预测提取分支,以及条目500C对应第三预测提取分支。因此为了维持此种接续更新的对应,在条目500A至500C内的数据可以转移。通常,当新的条目生成时,对应于该条目的数据输入及所有其它对应该条目的右侧将被转移至该右侧以生成用于该新的条目的空间。例如,若新的预测提取分支经测为对应于条目500A并且条目500A已经存储有效的条目,则条目500A的内容将被转移至条目500B,条目500B的内容将被转移至条目500C,以及条目500C的内容将由分支信息450转移出去并且遗失。在一个实施例中,在目标数组208内的目标地址可以做类似地偏移以维持在群组50内的预测的提取分支、在条目500内的分支信息及在目标数组208内的目标之间的对应。虽然该上文的实施例说明通过在条目之间转移数据而维持对应,但是其它实施例是可能的并且被考虑。例如,除了在条目之间移动数据外,存储在条目500内的位及在目标数组208内的条目可以将条目及特定的分支生成关联。
如同上文所提到的,单一字节分支指令作为特殊情况是存在的。图14显示一个例子,其中用于单一字节分支指令的此类的预测可能会失去。图14显示在字节位置8内包含单一字节RET指令1501的连续的指令字节群组。分支标记位#4 1503将设定以显示预测的提取分支、RET指令1501、在该指令字节范围7至8内的末端。没有其它预测的提取分支将被显示。现在假设其中提取地址经接收具有显示该RET指令1501的偏移8的例子。分支标记位#4显示希望生成用于此项指令的分支预测。然而,当该分支标记位被传送而用以生成预测的目的时,对应的分支标记位#4并未符合用于考虑的该标记位位置的需求(亦即具有数值等于8的偏移并非<=7)并且分支标记位#4将可有效地忽略。如同在图8中通过该逻辑的说明,分支标记位#4(b4)将被设定并且传送至闸极804E。然而,也连接至闸极808E的信号808E将不会被设定,因为其条件,偏移<=7,并未评估为真值(true)。因此,没有分支预测将由该逻辑在图8中所显示。通常,此种错误预测情况可能发生在当该单一字节RET指令显现于任何指令字节位置2、4、6、8、10、12或14。各种实施例及用于处理此项特别例子的机制将在下文中讨论。
分支指令信息
兹参照图15,该图显示分支预测信息450的一个实施例。如同上文所讨论的,每个连续的指令字节群组50具有分支标记位52的对应的设定及存储于区域预测器存储206的分支预测信息450。在所显示的实施例中,分支预测信息450包含用于三个分支指令信息,500A至500C。包含在每个500A至500C内为六个提供对应于预测的提取分支的信息。如在图15中所显示的,该分支预测信息包含动态位502、末端调整位504及四个用于负责分类分支指令的类型及尺寸的位506。动态位502可以用来显示是来自全域预测器205的全域分支预测已经使用,而不是来自区域预测器206的区域分支预测已经使用。末端调整位504可以用来显示该对应的分支指令是否结束于偶数或奇数字节。最后,分支信息506可以用来分类分支指令的类型及尺寸。
而且图15所显示的为分支信息506的四个示例性编码。如同所显示的,每个分支指令包含结束位504(在该例子中的位位置4)。第一编码508通过分别设定该第三及第二位成为″0″及″0″而可以用来显示条件的或非条件的分支指令。第二编码510通过分别设定该第三及第二位成为″0″及″1″而可以用来显示呼叫指令。第三编码512通过设定第三位成为从零至″1000″而可以用来显示返回类型指令。最后,第四编码514通过设定第三位为″1″及第二位为零以成为非″000″的数值而可以用来显示其中一个字节返回操作码是结束于偶数字节。每个该前二个编码508至510亦包含用于显示用于该指令的任何实时或位移数据的尺寸的字段(位壹及零)。在一个实施例中,一个、二个或四个数据字节可以由编码位1及0而分别成为″00″、″01″及″10″所显示。最后,显示于图15中的该第四个编码514包含用于显示那一个在该单一字节返回指令的该群组50内的非零、偶数指令字节的字段(通过零的第二位)将会呈现。在上文所描述的实施例中,在第四编码514内的位置字段可假设七个数值之一,″001″至″111″,该数值可以分别对应字节位置2、4、6、8、10、12及14。描述于上文的该分支信息的使用将在下文讨论中说明。
预测逻辑
现参照图16,该图显示预测逻辑220的一个实施例。在图16中所包含为比较电路802、区域预测电路900、目标选择电路1100及控制电路1102。比较电路802被连接以接收提取地址偏移并且更一步传送信号1704至预测电路900及目标选择电路1100。目标选择电路1100及预测电路900被连接以接收来自区域预测器206的分支预测条目信息。控制电路1102被连接到预测电路900、目标选择电路1100、区域预测器206及全域预测器205。通常,比较电路802接收如同上文所描述的提取地址,并且传送信号1704给电路900及1100。预测电路被配置成判定是否分支预测是基于来自区域测器206所接收的分支标记位及来自电路802所生成,并且传送该结果的预测1710给控制电路1102。目标选择电路1100亦使用接收来自区域预测器206的分支标记位并且传送指示1706给控制电路1102关于该分支目标在预测的情况下正在使用。控制电路亦接收分支目标信息1714并且传送信号240给选择提取地址的多任务器202。此外,在一个实施例中,电路1102亦传送分支预测250给分支地址计算器270。并且,虽然该说明的实施例包含可提供用于特定分支的另一个预测的全域预测器机制,该机制可以在未有全域预测器机制下使用。
显示于图16的目标选择电路1100通常可以被配置成选择来自在许多目标中的其中一个目标以供在该分支预测中使用。在一个实施例中,目标选择电路1100可判定许多分支标记位,该分支标记位被设定为对应于早于该接收的提取地址偏移的偏移的指令字节。基于此项信息,可以选择第一、第二或第三分支目标(对于包含三个分支目标的实施例而言)。例如,假设三个可能的分支目标是可获得的,并且等于6的偏移已经接收。电路1100可判定设定在发生于分支标记位6(亦即分支标记位0至5)之前的分支标记位的范围内的分支标记位的数目。若没有分支标记位设定于该范围内,则该分支确认为第一预测提取分支并且选择该第一目标。若只有其中一个分支标记位是设定于该范围内,则该分支将确认为第二预测提取分支指令并且选择第二目标。若设定了两个分支目标位,则将选择第三目标。
虽然有很多实现目标选择电路1100的可能方式,图17显示使用动态逻辑的一个示例性的实施例。在图17的实施例中,晶体管的列1202至1216及行1220至1234以此种方式组成使得目标可以基于接收的分支标记位及偏移地址来被选择。在电路1800中,三个目标选择是可能的,T1 212、T2 1214及T3 1218。通常,当分支标记位及信号被检测时,电路1800使用接收的分支标记位及来自比较电路802所接收的信号而从考虑中消除特定的目标。例如,若单一分支标记被检测而发生于该提取地址偏移之前时,则第一目标将从考虑中消除并且选择第二目标。若两组分支标记位发生于该提取地址偏移之前被检测,则选择第三目标。虽然本领域普通技术人员可轻地判定电路1800的操作,但将作简短的说明如下。
显示于图17中的该第一列1202由多对晶体管1220至1234组成,该晶体管用来作为判定是否有任何分支标记位设定生成于该接收偏移之前。缺省情况下,目标T11212估为真值,或二位″1″。该T1 1212的值亦用来作为反相输入给逻辑AND闸极而提供用于T2 1214的值。因此,当T1 1212等于二位″1″时,T2评估为二位″0″。每一对在列1202的晶体管接收分支标记位及对应于该提取地址偏移的来自比较电路802的信号。例如在行1220及列1202的该对晶体管接收对应于分支标记位0、b0及第二输入的第一输入,该第二输入显示是否该接收的偏移地址大于0(亦即,a>0,其中该接收的偏移地址由″a″表示)。在两者的输入评估为二位″1″的情况下,目标T1 1212将评估为二位″0″,显示在该接收的提取地址之前具有预测的提取分支并且目标T1 1212由考虑中消除而成为该预测的目标。该剩余的列1204至1216被配置成判定是否具有两个分支标记位设定于该目前的偏移之前,该偏移将从考虑中消除目标T2 1214。列1204比较分支标记位b0与每个分支标记位b1至b7。列1206比较分支标记位b1与每个分支标记位b2至b7,以及诸如此类等等。在该事件中二个分支标记位受到检测而发生于该目前偏移之前、目标T3 1218评估为″1″,以及目标T2 1214评估为″0″。然而,若二个先前分支标记位并未受到检测由列1204至1216所设定,则目标t2 1214评估为二位″1″。如同已经提到的,电路1800仅是示例性的。用于选择对应的目标的各种方法是可能的并且是经过考虑的。
现参照至图18,该图说明控制电路1102的一个实施例。包含于图18中的为编码器电路1820以及多任务器1832及1830。多任务器1832被连接以接收来自预测器电路900的区域预测1710及来自全域预测器205的全域预测1712。多任务器1830被连接以接收对应于来自区域预测器206的三个分支指令的分支信息1714。此外,多任务器1830被连接以接收来自目标选择电路1100的目标选择信号1706。选择信号1706选择分支信息1840用于从多任务器1830传送至编码电路1820。此外,在该实施例中所显示的包含于分支信息1840内的动态位1808是使用于选择区域1710或全域1712预测1806而用于由多任务器1832传送至编码电路1820。使用该分支信息1840及预测1806,编码电路1820可判定是否分支为预测提取或非提取。在没有分支是预测提取的情况下,编码电路1820可以被配置成编码选择信号240而从多任务器212传送序列地址232。另外,编码电路1820可编码信号240以选择返回地址230或来自目标数组208所接收的分支目标地址。在所显示的实施例中,动态位1808可以用来选择区域预测1710或全域预测1712。在一个实施例中,当分支显示为相对地不可预测的行为时,可以使用全域分支预测记录以改善用于该分支的预测的准确性。在此类的例子中,可以设定动态位以显示使用了全域分支预测而非使用了区域分支预测。
分支地址计算
如同先前所提及的,在一个实施例中通过多任务器212所传送的由信号240所选择的提取地址243可提供由分支预测单元16所传送的用于给定提取地址的该最终分支预测。然而,在另一个实施例中,为了要在较早的过程检测错误预测,分支预测单元14被配置成执行分支地址计算。图19为分支地址计算器270的方块图。在该显示的实施例中,分支地址计算器270被配置成接收来自多任务器222的地址236、来自区域预测器206的预测信息242、来自指令高速缓存16的群组指令字节241及来自多任务器212的目标地址243。分支地址计算器270亦被配置成传送提取地址245。
通常,分支地址计算器270基于接收的提取地址236及分支指令实时数据241被配置成计算相对的分支目标地址。该新的计算目标地址接着与该预测的目标地址243比较。若该新的计算目标地址并未等于该预测的目标地址243,则错误预测将被检测并且该新的计算目标将作为下一个提取地址245被传送。优点在于,分支错误预测可以较早地被检测并且新的提取地址可较早地计算。
在图19所显示的实施例中,对应于预测分支指令的信息将通过总线1850由区域预测器206所传送。在一个实施例中,分支信息1850包含在群组指令字节内的该对应的分支指令的偏移地址。此外,群组指令字节241由指令高速缓存16传送至多任务器1406。使用包含在分支信息1850的该接收的偏移及结束位504信息,选择信号1420可以传送至多任务器1406并且该对应的分支指令可以由多任务器1406传送至多任务器1408。再者,使用包含在该接收的信息1850的该接收的信息506,信号1422可以被传送至多任务器1408,该多任务器1408选择及传送对应于该预测的分支指令的实时的数据1424。提取地址236被传送至多任务器1414及被配置成由该提取地址236减去基本地址的电路1402。在一个实施例中,该基本地址符合由该x86地址转译机制的该对应的区段部分所规范的地址。接续于减去该基本地址,电路1402传送该结果地址给电路1404,该电路1404被配置成增加结果地址至由多任务器1408所接收的该实时的数据1424,并且传送该结果1413给电路1410。
除了上文的描述外,预测的目标243将被传送至多任务器1414及电路1412,该电路被配置成通过减去基本地址而调整该预测的提取地址及传送该结果地址1415给电路1410。当接收该计算的地址1413及调整提取地址1415时,电路1410被配置成比较该计算的地址及该调整提取地址两者。在该两者地址并未同等地比较的情况下,电路1410被配置成选择提取地址236而从多任务器1414传送。在错误比较的情况下,电路1430可以被配置成传送该提取地址236。在该计算的及调整的提取地址同等地比较的情况下,电路1430可以被配置成不传送新的提取地址。再者,电路1430可以被配置成不传送新的提取地址以响应检测显示不提取的预测的预测信号250。
在一个实施例中,两者提取地址可以由分支预测单元14所判定及传送以响应接收提取地址236。来自多任务器212所传送的第一提取地址可以实时使用为新的提取地址而用于使用于由指令高速缓存16的提取指令内。同时,由多任务器212所传送的该提取地址将传送给分支地址计算器270以执行该上述所描述的比较。在经由多任务器212所传送的该提取地址并未等于由分支地址计算器270所计算的该提取地址的情况下,如同上文的描述,分支地址计算器270将待使用的第二提取地址传送于来自该指令高速缓存16的提取指令内。
分支预测移除高速缓存
如同上文所提及的,移除高速缓存260可以用来存储已经由区域预测器存储206移除的分支预测信息。图20为显示在区域预测器存储206及移除高速缓存260之间的交互作用的一个实施例的方块图。除了区域预测器存储206及移除高速缓存260之外,图20显示指令高速缓存16、L2高速缓存1828及解码器400。在该显示的实施例中,移除高速缓存260被配置成存储由区域预测器存储206所移除的分支预测信息并且L2高速缓存1828被配置成存储包含程序指令的数据。
当条目由区域预测器存储206移除时,分支标记位及对应于该移除条目的动态位将通过总线2108传送至移除高速缓存260用来存储于移除高速缓存260内。对应于该移除条目的其它分支预测信息,诸如结束调整位504及分支信息506将会舍弃。同样地,在所显示的实施例中,由指令高速缓存16所移除的数据可以通过总线2106传送而用于存储在L2高速缓存1828内。接着,当提取地址236被呈现给区域预测器存储206及指令高速缓存16时,将为对应于该呈现的提取地址的分支预测条目是否存在于区域预测器存储260内做出判定。在没有对应的条目存在于区域预测器存储260内的情况下,移除高速缓存260可以经询问对应的条目。当在移除高速缓存260内检测到有效的对应条目时,分支标记位及动态位将通过总线2102被传送至解码器400及区域预测器存储206。区域预测器存储被配置成存储该接收的分支标记位及在该对应的条目内的动态位。此外,对应于该提取地址236的群组指令将通过总线2104被传送至解码器400及指令高速缓存16。
使用接收的指令及分支标记位,解码器400接着可以重新建立用于区域预测器存储206的该分支预测的剩余部分。解码器可使用经由总线2102所接收的该分支标记位以判定经由总线2104所接收的位于指令群组内的预测提取分支的位置。再者,解码器400可解码该确认的预测提取分支以判定该预测提取分支的类型(例如非条件的、条件的等等)、是否该分支结束于偶数或奇数字节及任何对应于该分支指令的实时数据的大小。基于此项判定,解码器400可重新建立用于区域预测器存储206的该对应的分支预测条目的剩余部分。在所显示的实施例中,该分支预测条目的剩余部分对应于分支信息506及末端调整位504。其优点在于在区域预测器存储206内的完整的分支预测条目将重新建立而不需要重新执行该对应的指令的群组。再者,只有部分该分支预测条目需要存储在移除高速缓存206内。因此,移除高速缓存260可以做得更小。
图21进一步说明在区域预测器存储206内的分支预测条目的重新建立。图21包含移除高速缓存260、解码器400及在区域预测器存储206内的条目2100。依照该说明,分支标记位2120及动态位2122包括经由总线2108返回移除高速缓存及经由总线2102由移除高速缓存260取回的数据。分支信息2130包括对应于分支信息506的数据及结束调整位504。分支信息2130在条目2100从区域预测器存储206的返回时将被舍弃。如同上文所描述,解码器400被配置成以重新建立分支信息2130并且通过2100回复该重新建立的数据。
如上文所描述,提取地址236存在于区域预测器存储206及指令高速缓存16两者。然而,在另一个实施例中,该提取地址236亦可存在于移除高速缓存260及/或L2高速缓存1828而与本身存在的区域预测器存储206及指令高速缓存16并联。再者,在另一个实施例中,如同上文所描述L2高速缓存1828可以被配置成以存储由区域预测器存储206所移除的数据。图22显示一个实施例,其中L2高速缓存1828被配置成存储程序指令及对应的分支预测信息。在所显示的实施例中,区域预测器存储206被配置成通过总线2206以传送移除的分支预测给L2高速缓存1828。指令高速缓存16可以被配置成通过总线220以传送移除的程序指令给L2高速缓存1828。预先提取单元12被配置成从L2高速缓存1828提取程序指令及分支预测信息两者。预先提取进一步被配置成基于由L2高速缓存1828所提取的分支信息及程序指令以重新建立完整的分支预测条目。该完整的分支预测条目接着经由总线2202被传送至区域预测器存储206并且该对应的提取程序指令经由总线2 (GHSR) 204可以被传送至指令高速缓存16。
检测错误预测
如同先前所提到的,包含单一字节RET指令的特定的例子是存在的。如同图14的说明,发生在预测为提取的特定位置内的单一字节RET指令可以通过预测逻辑220来检视并且接着预测为未提取。下列的讨论描述分支预测单元14的一个实施例,该分支预测单元14被配置成检测此类的错误预测。图23为显示分支预测单元14的一个实施例的方块图。图23的该实施例类似于图2的实施例。然而,在图23的实施例中,返回地址堆栈230连接至多任务器221A,分支地址计算器270A当与分支地址计算器270比较而修正,及信号223A被配置成选择来自三个输入的其中一个给多任务器221A。通常,显示于图23的该实施例按前面那样操作。然而,分支地址计算器270A被配置成检测对应于单一字节RET指令的错误的预测并且选择来自该返回堆栈230在响应中的提取地址。
图24显示分支地址计算器270A的一个实施例。分支地址计算器270A被配置成类似于分支地址计算器270的实施例并且可计算如同上所描述的通过总线245的用于传送的第二提取地址。然而,并非如同在分支地址计算器270内从电路1430传送地址245及控制信号223,电路1430被配置成传送潜在的第二提取地址2410以控制电路2400及对应的选择信号2412给多任务器2402。此外,分支地址计算器270A包含错误预测电路2450,该错误预测电路2450被配置成以检测对应于单一字节RET指令的错误指令。错误检测电路2450经由连接以接收来自区域预测器存储206的分支目标信息450、来自预测逻辑220的预测250及提取地址236。再者,电路2450经由连接以传送选择信号2420及2422给多任务器2402。信号2422更连接至控制电路2400。
响应于检测错误预测,错误预测电路2450传送被配置成选择来自多任务器221A的返回地址的选择信号2420及指示错误预测的检测的选择信号2422并且被配置成选择来自多任务器2402的用于输出的该信号2420。在一个实施例中,错误预测电路2450在预测250显示提取的预测事件中可以被配置成总是选择来自多任务器2402的用于传送的信号2412。在此种方法中,当预测逻辑220传送未提取的预测时,错误预测电路2450可以仅执行错误预测的检测。多任务器2402被配置成以传送可以被配置成以选择来自多任务器221A的第二提取地址245的信号2460,或者可以被配置成选择来自多任务器221A的返回地址。
控制电路2400被配置成判定是否第二提取地址通过错误预测或RET指令的错误预测是必要的,并且经由总线245及信号223A传送对应的信息。在一个实施例中,信号2410包含通过电路1410的提取地址及错误比较的指令。在所显示的该实施例中,控制电路2400可判定第二提取地址是需要的以响应检测二个条件的其中一个。需要第二提取地址的第一条件对应于检测提取的预测250及依照信号2410所指示的电路1410的错误比较的检测。响应于检测此项第一条件,控制电路被配置成通过总线245传送该接收的地址2410及对应的选择信号223A。在此项例子中,选择信号223A对应于来自电路1430所传送的信号2412并且被配置成选择来自多任务器221A的用于传送的信号245。需要第二提取地址的第二条件如同由信号2422所指示而对应于检测非提取的预测250及错误预测的检测。响应于检测此项第二条件,控制电路2400传送对应于由错误预测电路2450所传送的信号2420选择信号223A。在此项第二例子中,该传送的选择信号223A被配置成选择来自多任务器221A的用于传送的返回地址230。若该第一或第二条件皆未由控制电路2400所检测到,则将不会有第二提取地址传送。
图25为说明错误预测电路2450的一个实施例的方块图。错误预测电路2450包含候选电路2502、偶数字节电路2504、匹配电路2506及控制电路2508。候选电路2502经由连接以接收分支信息250,偶数字节电路2504经由连接以接收提取地址236,及控制电路2508经由连接以接收预测250。再者,匹配电路2506经由连接而分别地从候选电路2502及偶数字节电路2504接收信号2520及2522。控制电路2508经由连接以接收来自匹配电路2506的信号2530。
在图25所显示的实施例中,候选电路2502被配置成判定是否分支信息450包含对应于RET指令处于偶数字节位置的有效的条目。如同上文所描述的,分支信息450可包含对应于三个分支指令500A至500C的分支信息。使用显示于图15中的该编码,RET指令可以确认为其中分支信息位#3等于二位″1″的其中一种。再者,结束调整位可以用来检测指令结束于偶数字节。用于判定对应于RET指令于偶数字节的分支信息500A至500C接着可以考虑为错误预测候选并且可以结合候选检测的正向的指示传送给匹配电路2506。偶数字节电路2504被配置成判定对应于偶数地址的提取地址。在一个实施冽中,为了做出此项判定,偶数字节电路2504可以比较接收的提取地址236的最低有效位。若该提取地址236的最低有效位经由检测为等于二位″0″,偶数提取地址可以决定并且对应的正向指示2522可以传送给匹配电路2506。
响应于接收来自电路2502及2504的正向指示,匹配电路2506被配置成以检测对应于该提取地址236的错误预测候选。在一个实施例中,该提取地址236的偏移的位3-1与候选的分支信息的位2-0进行比较。如同先前的描述,RET指令的分支信息506的位2-0显示该RET指令的偶数字节位置。该下列的表格说明在偶数提取地址偏移及字节位置分支信息之间的关系。
                    表1
    偶数提取地址偏移 (位3-0)     分支信息字节位置 (位2-0)
    0000     000
    0010     001
    0100     010
    0110     011
    1000     100
    1010     101
    1100     110
    1110     111
由表1可以看出,直接对应关系可以在偶数提取地址偏移的位3-1及分支信息506的位2-0之间达成。因此,匹配电路2506能够匹配对应于RET指令的候选分支信息与该提取地址偏移。响应于检测此类的匹配,匹配电路2506被配置成传送显示此类检测的信号2530给控制电路2508。在所显示的示例性实施例中,控制电路2508被配置成传送被配置成的信号以选择来自多任务器221A的返回地址,以响应检测非提取预测250及匹配2530的指示。为了影响来自多任务器221A的返回地址230的选择,控制电路2508传送信号2422及信号2420。信号2420具有编码的配置以选择来自多任务器221A的返回地址230。选择信号2422被配置成选择来自多任务器2422的用于输出的信号2412或信号2420。响应于检测非提取预测250及匹配2530的指示,信号2422选择来自多任务器2402的用于输出的信号2420。否则,信号2422选择来自多任务器2402的用于输出的信号2412。
现参照图26,该图显示包含通过总线桥接2602连接至各种系统组件的处理器10的计算机系统2600的一个实施例的方块图。其它实施例是可能的并且可考虑的。在该显示的系统中,主存储器2604通过存储器总线2606连接至总线桥接2602,并且图形控制器2608通过AGP总线2610连接至总线桥接2602。最后,多个PCI设备2612A及2612B通过PCI总线2614连接至总线桥接2602。第二总线桥接2616通过EISA/ISA总线2620进一步提供给电气接口以一个或一个以上的EISA或ISA组件2618。处理器10通过CPU总线2624连接至总线桥接2620及连接至选择的L2高速缓存1828。
总线桥接2602提供在处理器10之间的接口、主存储器2604、图形控制器2608及连结至PCI总线2614之间的接口。当操作由连接至总线桥接2602的其中一个设备接收时,总线桥接2602确认该操作的目标(例如特定的设备,或在PCI总线2614的例子中,该目标是在PCI总线2614上)。总线桥接2602传送该操作给该目标设备。总线桥接2602通常转译来自由该来源设备或总线所使用的协议的操作成为由该目标设备或总线所使用的协议。
除了提供接口给用于PCI总线2614的ISA/EISA总线,第二总线桥接2616更可以依所需加入额外的功能。不管是来自第二总线桥接2616外部或整合至第二总线桥接2616内的输入/输出控制器(未显示)亦可以包含在计算机系统2600内部以提供操作支持给所需的键盘及鼠标2622以及给各种串行及并行端口。在其它实施例中,外部高速缓存单元(未显示)可以进一步连接至在处理器10及总线桥接2602之间的CPU总线2624。另外,该外部高速缓存可以连接至总线桥接2602,及用于该外部高速缓存的高速缓存控制逻辑可以整合至总线桥接2602内。L2高速缓存1828更进而显示于配置在处理器10的背面上。需要注意的是L2高速缓存1828可以由处理器10分离、整合于具有处理器10的卡匣内(例口槽1及槽A)或甚至是整合在具有处理器10的半导体基板上。
主存储器2604是一种将应用程序存储在其中并且主要由处理器10所执行的存储器。适合的主存储器2604包括DRAM(动态随机访问存储器)。例如,多个SDRAM(同步DRAM)或Rambus DRAM(RDRAM)都可能是合适的。
PCI组件2612A及2612B显示各种外围设备,诸如例如网络适配卡、影像加速卡、声卡、硬盘或软盘机或磁盘驱动器控制器、小型计算机系统接口(Small ComputerSystems Interface,SCSI)转接卡及电话卡。同样地,ISA设备2618显示各种类型的外围设备,诸如调制解调器、声卡及各种数据采集卡,诸如GPIB卡或字段总线适配卡。
图形控制器2608用来控制文字及影像显示于显示器2626上。图形控制器2608可包括本领域普通技术人员所公知的典型的图形加速器以显现三维数据结构,该三维结构可以有效地转移至主存储器2604并且由主存储器2604转移出来。图形控制器2608因此可以是AGP总线2610的主控者,其中该图形控制器可以请求及接收访问在总线桥接2602内的目标接口借以访问主存储器2604。专用图形总线提供来自主存储器2604的数据的快速访问。对于某些操作,图形控制器2608可进而被配置成在AGP总线2610上生成PCI协议处理。总线桥接2602的AGP接口可因此包含功能以支持AGP协议处理以及PCI协议目标及初始者处理两者。显示器2626为可以显示影像或文字的任何电子显示器。适当的显示器2626包含阴极射线管(CRT)、液晶显示器(LCD)等等。
需要注意的是,虽然该AGP、PCI及ISA或EISA总线在上文的说明中已经使用而作为例子,任何总线架构可以视需求而取代。更需要注意的是计算机系统2600可以是包含额外的处理器的多任务处理计算机系统(例如显示为计算机系统2600的选择组件处理器10a)。处理器10a可以类似于处理器10。尤其,处理器10a可以是处理器10的相同的复制。处理器10a可以通过独立的总线连接至总线2602(如同图4所显示)或可与处理器10分享CPU总线2624。再者,处理器10a可以连接至类似于L2高速缓存1828的选择的L2高速缓存1828a。
需要注意的是本讨论可参考各种信号的确认。如同于此所使用的,若该信号传送表示特定条件的数值,信号将″确认(asserted)″。相反地,若该信号传送表示缺乏特定条件的数值,信号将为″解除确认(deasserted)″。当信号传送逻辑为″0″值时或相反地,当信号传送逻辑″1″值时,该信号可以定义为确认。此外,各种值在上文的讨论中已经描述为舍弃。数值在许多方式中可以舍弃,但是通常包含修正该数值使得该值由接收该数值的逻辑电路所忽略。例如,若该数值包括位,该数值的逻辑状态可以反相以舍弃该数值。若数值为一个n位数值,该n位编码的其中一个可显示该数值为无效的。设定该数值为无效编码造成该数值将舍弃。此外,当被设定时,一个n位数值可包含显示该n位数值为有效的的有效位。重置该有效位可包括舍弃数值。舍弃数值的其它方法亦可以使用。
一旦上文的揭示完全了解后,各种的变化及修正对于本领域普通技术人员而言将变得显而易见。下列的权利要求范围应视为意在含括所有此类的变化及修正。
本发明可广泛应用于微处理器的分支预测机制。

Claims (17)

1.一种用于分支预测方法,包括:
检测第一级高速缓存(206)不含有对应于第一地址的第一分支预测信息(2100);
判定第二级高速缓存(260.1828)是否含有对应于该第一地址的第二分支预测信息(2120,2122),该第二分支预测信息包括该第一分支预测信息的子集合;
重新建立该第一分支预测信息以响应于判定该第二级高速缓存含有该第二分支预测信息,其中该重新建立步骤包括:
产生第三分支预测信息以表示分支指令的类型;和
结合该第二分支预测信息与该第三分支预测信息;以及
储存该结合的第二及第三分支预测信息为该第一分支预测信息在该第一级高速缓存的第一条目内,其中该第一条目对应于该第一地址。
2.根据权利要求1所述的方法,进一步包括:
判定该第一级高速缓存(206)的该第一条目(2100)是否是可取得的;
移除该第一条目的内容以响应于检测该第一条目(2100)是不可取得的;以及
储存响应于该移除的位于该第二级高速缓存(260,1828)内的该内容的子集合(2120,2122)。
3.根据权利要求1所述的方法,其中该产生步骤包含接收及解码对应于该第一地址的程序指令。
4.根据权利要求3所述的方法,其中该第三分支预测信息进一步表示在该程序指令内所预测分支的位置。
5.根据权利要求1、2或3所述的方法,其中该第二级高速缓存(260,1828)及该第一级高速缓存(206)未储存复制的信息。
6.根据权利要求5所述的方法,其中该第二级高速缓存(260,1828)被配置成仅储存自该第一级高速缓存(206)所移除的信息。
7.一种分支预测机构,包括:
被配置成储存分支预测信息(2100)的第一级高速缓存(206);
被配置成储存该分支预测信息子集合(2120,2122)的第二级高速缓存(260);
连接至该第一级高速缓存(206)及该第二级高速缓存(260)的电路(400),其中该电路被配置成:
检测该第一级高速缓存不含有对应于第一地址的第一分支预测信息;
判定该第二级高速缓存是否含有对应于该第一地址的第二分支预测信息,该第二分支预测信息包括该第一分支预测信息的子集合;以及
重新建立该第一分支预测信息以响应于判定该第二级高速缓存含有该第二分支预测信息,其中为了重新建立该第一分支预测信息,该电路被配置成:
产生第三分支预测信息以表示分支指令的类型;和
结合该第二分支预测信息与该第三分支预测信息;以及
储存该结合的第二及第三分支预测信息为该第一分支预测信息在该第一级高速缓存的第一条目内,其中该第一条目对应于该第一地址。
8.根据权利要求7所述的机构,其中该电路(400)进一步配置以执行:
判定该第一级高速缓存的该第一条目是否是可取得的;
移除该第一条目的内容以响应于检测该第一条目是不可取得的;以及
储存响应于该移除的位于该第二级高速缓存内的该内容的子集合。
9.根据权利要求7所述的机构,为了产生该第三分支预测信息,该电路被配置成接收及解码对应于该第一地址的程序指令。
10.根据权利要求9所述的机构,其中该程序指令是从该第二级高速缓存(260,1828)提取。
11.根据权利要求9或10所述的机构,其中该第三分支预测信息进一步表示在该程序指令内所预测分支的位置。
12.根据权利要求7、8、9或10所述的机构,其中该第二级高速缓存(260,1828)及该第一级高速缓存(206)未储存复制的信息。
13.根据权利要求12所述的机构,其中该第二级高速缓存(260,1828)被配置成仅储存自该第一级高速缓存(206)所移除的信息。
14.一种计算机系统,包括:
内连接(2624);
连接至该内连接的内存(2604);
被配置成储存分支预测信息的第二级高速缓存(260,1828);
包含第一级高速缓存(206)的处理器(10),其中该处理器被配置成:
检测该第一级高速缓存(206)不含有对应于第一地址的第一分支预测信息;
判定是否该第二级高速缓存(260,1828)含有对应于该第一地址的第二分支预测信息,该第二分支预测信息包括该第一分支预测信息的子集合;
重新建立该第一分支预测信息以响应于判定该第二级高速缓存含有该第二分支预测信息,其中为了重新建立该第一分支预测信息,该处理器被配置成:
产生第三分支预测信息以表示分支指令的类型;和
结合该第二分支预测信息与该第三分支预测信息;以及
储存该结合的第二及第三分支预测信息为该第一分支预测信息在该第一级高速缓存的第一条目(2100)内,其中该第一条目对应于该第一地址。
15.根据权利要求14所述的系统,其中该处理器(10)进一步被配置成判定该第一级高速缓存(206)的该第一条目(2100)是否是可取得的;移除该第一条目(2100)的内容以响应于检测该第一条目是不可取得的;以及储存响应于该移除的位于该第二级高速缓存(260,1828)内的该内容的子集合。
16.根据权利要求14或15所述的系统,其中该第二级高速缓存(260,1828)及该第一级高速缓存(206)未储存复制的信息。
17.根据权利要求16所述的系统,其中该第二级高速缓存(260,1828)被配置成仅储存自该第一级高速缓存(206)所移除的信息。
CNB02814709XA 2001-07-24 2002-06-27 具有二级分支预测高速缓存的分支预测装置 Expired - Fee Related CN1310134C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/912,011 US7024545B1 (en) 2001-07-24 2001-07-24 Hybrid branch prediction device with two levels of branch prediction cache
US09/912,011 2001-07-24

Publications (2)

Publication Number Publication Date
CN1535415A CN1535415A (zh) 2004-10-06
CN1310134C true CN1310134C (zh) 2007-04-11

Family

ID=25431252

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB02814709XA Expired - Fee Related CN1310134C (zh) 2001-07-24 2002-06-27 具有二级分支预测高速缓存的分支预测装置

Country Status (7)

Country Link
US (2) US7024545B1 (zh)
EP (1) EP1410177A1 (zh)
JP (1) JP3798404B2 (zh)
KR (1) KR100880686B1 (zh)
CN (1) CN1310134C (zh)
TW (1) TW591530B (zh)
WO (1) WO2003017091A1 (zh)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
JP3851235B2 (ja) * 2002-06-28 2006-11-29 富士通株式会社 分岐予測装置および分岐予測方法
US7783871B2 (en) * 2003-06-30 2010-08-24 Intel Corporation Method to remove stale branch predictions for an instruction prior to execution within a microprocessor
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US7337271B2 (en) * 2003-12-01 2008-02-26 International Business Machines Corporation Context look ahead storage structures
US7415597B2 (en) * 2004-09-08 2008-08-19 Advanced Micro Devices, Inc. Processor with dependence mechanism to predict whether a load is dependent on older store
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
US8001363B2 (en) * 2005-04-04 2011-08-16 Globalfoundries Inc. System for speculative branch prediction optimization and method thereof
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
US7278012B2 (en) * 2005-06-02 2007-10-02 Qualcomm Incorporated Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
CN100419715C (zh) * 2005-11-25 2008-09-17 华为技术有限公司 嵌入式处理器系统及其数据操作方法
US7577793B2 (en) * 2006-01-19 2009-08-18 International Business Machines Corporation Patrol snooping for higher level cache eviction candidate identification
CN100395731C (zh) * 2006-02-23 2008-06-18 华为技术有限公司 处理器及其数据操作方法
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US7574586B2 (en) * 2006-05-16 2009-08-11 Texas Instruments Incorporated Efficient transfer of branch information
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US7533252B2 (en) * 2006-08-31 2009-05-12 Intel Corporation Overriding a static prediction with a level-two predictor
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US7840786B2 (en) * 2007-04-16 2010-11-23 Advanced Micro Devices, Inc. Techniques for storing instructions and related information in a memory hierarchy
US8782384B2 (en) * 2007-12-20 2014-07-15 Advanced Micro Devices, Inc. Branch history with polymorphic indirect branch information
US8181005B2 (en) * 2008-09-05 2012-05-15 Advanced Micro Devices, Inc. Hybrid branch prediction device with sparse and dense prediction caches
US20110093658A1 (en) * 2009-10-19 2011-04-21 Zuraski Jr Gerald D Classifying and segregating branch targets
EP2517100B1 (en) * 2009-12-25 2018-09-26 Shanghai Xinhao Micro-Electronics Co. Ltd. High-performance cache system and method
US8464030B2 (en) * 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
EP2628072B1 (en) 2010-10-12 2016-10-12 Soft Machines, Inc. An instruction sequence buffer to enhance branch prediction efficiency
US8667257B2 (en) 2010-11-10 2014-03-04 Advanced Micro Devices, Inc. Detecting branch direction and target address pattern and supplying fetch address by replay unit instead of branch prediction unit
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9442772B2 (en) 2011-05-20 2016-09-13 Soft Machines Inc. Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines
WO2012162188A2 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
IN2014CN03678A (zh) 2011-11-22 2015-09-25 Soft Machines Inc
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9235419B2 (en) 2012-06-11 2016-01-12 International Business Machines Corporation Branch target buffer preload table
US9430241B2 (en) 2012-06-15 2016-08-30 International Business Machines Corporation Semi-exclusive second-level branch target buffer
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
KR101463536B1 (ko) 2012-11-30 2014-11-19 성균관대학교산학협력단 메모리 관리 장치, 방법 및 시스템
US20140244932A1 (en) * 2013-02-27 2014-08-28 Advanced Micro Devices, Inc. Method and apparatus for caching and indexing victim pre-decode information
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014143053A1 (en) 2013-03-15 2014-09-18 Intel Corporation Dead block predictors for cooperative execution in the last level cache
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
KR102063656B1 (ko) 2013-03-15 2020-01-09 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
KR20150130510A (ko) 2013-03-15 2015-11-23 소프트 머신즈, 인크. 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
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
US9823932B2 (en) * 2015-04-20 2017-11-21 Arm Limited Branch prediction
CN105867884B (zh) * 2016-03-24 2018-06-15 清华大学 一种改进型PAp分支预测方法
DE102017201648A1 (de) 2016-03-31 2017-10-05 Dr. Ing. H.C. F. Porsche Ag Verfahren zum Bearbeiten einer Oberfläche eines metallischen Bauteils und metallisches Bauteil
US20190004806A1 (en) * 2017-06-30 2019-01-03 Qualcomm Incorporated Branch prediction for fixed direction branch instructions
US11163573B2 (en) * 2019-02-13 2021-11-02 International Business Machines Corporation Hierarchical metadata predictor with periodic updates
US10990405B2 (en) 2019-02-19 2021-04-27 International Business Machines Corporation Call/return stack branch target predictor to multiple next sequential instruction addresses
US11714725B2 (en) * 2019-06-03 2023-08-01 University Of Central Florida Research Foundation, Inc. System and method for ultra-low overhead and recovery time for secure non-volatile memories

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0798632A2 (en) * 1996-03-25 1997-10-01 Sun Microsystems, Inc. Branch prediction method and apparatus in a multi-level cache system
US6067616A (en) * 1990-02-26 2000-05-23 Advanced Micro Devices, Inc. Branch prediction device with two levels of branch prediction cache

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276882A (en) * 1990-07-27 1994-01-04 International Business Machines Corp. Subroutine return through branch history table
US5423011A (en) * 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
US5608885A (en) 1994-03-01 1997-03-04 Intel Corporation Method for handling instructions from a branch prior to instruction decoding in a computer which executes variable-length instructions
US5809271A (en) 1994-03-01 1998-09-15 Intel Corporation Method and apparatus for changing flow of control in a processor
US5978906A (en) * 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US5995749A (en) 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US5933629A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for detecting microbranches early
US6553488B2 (en) * 1998-09-08 2003-04-22 Intel Corporation Method and apparatus for branch prediction using first and second level branch prediction tables
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067616A (en) * 1990-02-26 2000-05-23 Advanced Micro Devices, Inc. Branch prediction device with two levels of branch prediction cache
EP0798632A2 (en) * 1996-03-25 1997-10-01 Sun Microsystems, Inc. Branch prediction method and apparatus in a multi-level cache system

Also Published As

Publication number Publication date
US6854050B1 (en) 2005-02-08
KR100880686B1 (ko) 2009-01-30
CN1535415A (zh) 2004-10-06
WO2003017091A1 (en) 2003-02-27
JP3798404B2 (ja) 2006-07-19
TW591530B (en) 2004-06-11
US7024545B1 (en) 2006-04-04
KR20040014673A (ko) 2004-02-14
EP1410177A1 (en) 2004-04-21
JP2005500616A (ja) 2005-01-06

Similar Documents

Publication Publication Date Title
CN1310134C (zh) 具有二级分支预测高速缓存的分支预测装置
CN1287292C (zh) 使用类型位跟踪二级高速缓存中储存的错误校正码及预解码位
CN1199099C (zh) 紧密耦合式多处理器的快速多线程执行
US6185675B1 (en) Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
CN1310136C (zh) 使用猜测来源操作数以绕过装载/储存操作的系统与方法
US6339822B1 (en) Using padded instructions in a block-oriented cache
US6256721B1 (en) Register renaming in which moves are accomplished by swapping tags
US5706491A (en) Branch processing unit with a return stack including repair using pointers from different pipe stages
US5835951A (en) Branch processing unit with target cache read prioritization protocol for handling multiple hits
US6253316B1 (en) Three state branch history using one bit in a branch prediction mechanism
US5835967A (en) Adjusting prefetch size based on source of prefetch address
US6349365B1 (en) User-prioritized cache replacement
US5692168A (en) Prefetch buffer using flow control bit to identify changes of flow within the code stream
EP1624369B1 (en) Apparatus for predicting multiple branch target addresses
KR100577445B1 (ko) 분기 예측들을 신속하게 특정하기 위해 명령 캐시 내의 바이트 범위들과 관련되는 분기 선택자들
CN1304962C (zh) 转译后备缓冲器清除滤波器
CN1208726C (zh) 当预测路线失败时从非预测路线提供部分标记以指导搜索的高速缓存
US6502188B1 (en) Dynamic classification of conditional branches in global history branch prediction
US20070033385A1 (en) Call return stack way prediction repair
US6427192B1 (en) Method and apparatus for caching victimized branch predictions
US6405305B1 (en) Rapid execution of floating point load control word instructions
CN1790256A (zh) 用于微处理器的分支前瞻预取
US5732243A (en) Branch processing unit with target cache using low/high banking to support split prefetching
CN1690952A (zh) 根据多组高速缓存组预测来选择执行的指令的装置和方法
US6542986B1 (en) Resolving dependencies among concurrently dispatched instructions in a superscalar microprocessor

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
ASS Succession or assignment of patent right

Owner name: ADVANCED MICRO DEVICES INC

Free format text: FORMER OWNER: ADVANCED MICRO DEVICES INC.

Effective date: 20100709

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: CALIFORNIA, USA TO: GRAND CAYMAN ISLAND RITISH CAYMAN ISLANDS

TR01 Transfer of patent right

Effective date of registration: 20100709

Address after: Grand Cayman, Cayman Islands

Patentee after: Globalfoundries Semiconductor Inc.

Address before: American California

Patentee before: Advanced Micro Devices Inc.

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

Granted publication date: 20070411

Termination date: 20160627