CN1305150A - 具有改进的地址目标预测的处理器和方法 - Google Patents
具有改进的地址目标预测的处理器和方法 Download PDFInfo
- Publication number
- CN1305150A CN1305150A CN00132806A CN00132806A CN1305150A CN 1305150 A CN1305150 A CN 1305150A CN 00132806 A CN00132806 A CN 00132806A CN 00132806 A CN00132806 A CN 00132806A CN 1305150 A CN1305150 A CN 1305150A
- Authority
- CN
- China
- Prior art keywords
- destination
- prediction
- instruction
- situation
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000008569 process Effects 0.000 title claims description 24
- 238000000151 deposition Methods 0.000 claims description 29
- 230000008859 change Effects 0.000 claims description 12
- 238000013507 mapping Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 102100024439 Adhesion G protein-coupled receptor A2 Human genes 0.000 description 1
- 101000833358 Homo sapiens Adhesion G protein-coupled receptor A2 Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Abstract
公开了一种利用高速缓存改进转移指令的目的地预测精度的超标量处理器和方法。建立的该高速缓存包括多个入口。多条转移指令中的每一条与高速缓存的入口中的一个入口相关连。高速缓存的入口中的一个入口包括所存的与高速缓存的此入口相关连的转移指令的预测目的地。预测目的地是在执行转移指令时预料转移指令将会转移的目的地。只当响应于转移指令目的地的两次连续错误预测的情况时才在高速缓存的入口中的一个入口中更新所存预测的目的地,其中两次连续错误预测是利用高速缓存的入口中的一个入口时出现的。
Description
本发明一般涉及数据处理系统,具体地涉及超标量处理器。本发明更具体地涉及使用包括确认位的高速缓存来改进转移指令目的地的预测精度的超标量处理器和方法。
大多数体系结构包括转移指令,其目标地址无法根据转移地址和指令本身进行计算。其目标地址存于单独的寄存器内并且无法根据指令地址和指令本身进行计算的转移指令(有条件或无条件)此处称为地址可预测转移指令。例如,在PowerPC(TM)体系结构中,“有条件转移至连接寄存器”(BCLR)或“有条件转移至连接寄存器并连接”(BCLRL)指令的目标地址可在连接寄存器(LR)中找到,以及“有条件转移至计数寄存器”(BCCTR)或“有条件转移至计数寄存器并连接”(BCCTRL)指令的目标地址可在计数寄存器(CTR)中找到。连接寄存器和计数寄存器是PowerPC体系结构中的专用寄存器,主要用于存储这些指令的地址。
该体系结构保证当完成就在地址可预测转移指令之前的指令时这些专用寄存器包含该地址可预测转移指令的必要目标地址。当自完成单元收到完成信号时,一条指令即完成。在深流水线微处理器中,通常在执行并随后完成一条指令的许多周期之前就已取出该指令。由于此现有指令的完成比地址可预测转移指令之后的哪些指令的取出要晚许多周期,因此需要能够高精度地预测这类转移指令的目标地址。
可以在处理器内维持一个具有小存储量的高速缓存,用于为这类地址可预测转移指令存储预测的目标地址。
编程人员按照具体顺序编写代码。该代码可能包括不同转移或跳转指令。转移指令在执行指令过程中偏离指令的初始顺序。增加指令执行速度的一个方法是预测转移指令的可能执行结果。一个预测是判断下次执行此转移指令时是否会执行一条转移指令。
可以在处理器内维持一个具有小存储量的高速缓存,它包括特定类型转移指令的预测的目的地。此特定类型转移指令是一条地址可预测转移指令,其目标地址存于一个单独的寄存器内(例如以上所述的高速缓存)并且无法从指令本身计算出来。
该高速缓存包括多个入口。每条转移指令与一个入口相关连。当取出一条转移指令时,读取与此转移指令相关连的高速缓存入口以便确定此转移指令的预测目的地。
通常在执行转移指令之后,如果实际转移目的地不同于预测的转移目的地,则将高速缓存的合适入口更新以便包括实际目的地。然而,当转移指令继续在更普遍的目的地与不太普遍的目的地之间连续地转移时,可能发生问题。例如,如果一条转移指令起先转移至目的地“A”,然后至目的地“B”,然后又回至目的地“A”,并且继续此种模式,很清楚,高速缓存中将始终会包含一个不正确的预测。在转移至“B”之后,高速缓存入口将被更新以便包括“B”作为预测的目的地。此后,在下一次转移至“A”后,高速缓存将要再次更新为将“A”作为预测的目的地。对于所给例子,高速缓存始终错误地预测此转移指令的目的地。
因此需要一种数据处理系统和方法,使用高速缓存来改进特定类型的地址可预测转移指令的目的地预测精度。
此处公开一种超标量处理器和方法,使用高速缓存来改进转移指令的目的地预测精度。所建立的高速缓存包括多个入口。多条转移指令中的每一条都与高速缓存的多个入口中的一个相关连。高速缓存的入口中的一个入口包括一个存储的与这个高速缓存入口相关连的转移指令的预测目的地。该预测目的地是当执行转移指令时所预测的转移指令将要转移的目的地。只当使用高速缓存入口中的同一个入口时两次连续地错误预测转移指令目的地之后才在高速缓存入口中的这个入口中更新所存的预测目的地。
以下详细的书写说明将使本发明的以上以及附加目的,特征和优点十分明显。
所附权利要求书中阐述新特征。然而当结合附图参照阅读以下优选实施例的详细说明后,将会对本发明本身及其优选使用模式、进一步的目的和优点有最好的了解。附图中:
图1阐述根据本发明的超标量处理器的框图;
图2阐述根据本发明的方法和系统的高速缓存的图形表示,该高速缓存包括一个与高速缓存的每个入口相关连的确认位;
图3中的高层流程图阐述一个具有多个入口的高速缓存的建立,每个入口具有一个根据本发明的方法和系统的相关连确认位;及
图4中的高层流程图阐述与高速缓存中每个入口相关连的确认位的利用,该确认位用于根据本发明的方法和系统改进转移指令的目的地预测。
本发明一般涉及超标量处理器及更具体地涉及用于改进这类处理器中的总吞吐量的系统和方法。以下说明用于使熟悉技术的人实现和使用本发明,并且是在专利应用及其要求的上下文中提供的。熟悉技术的人容易理解对优选实施例所作不同修改。此处的基本原理可以应用于其他实施例。因此,本发明不只限制于所示实施例,而是适用于一切符合此处描述原理和特征的广阔范围。
本发明是超标量处理器中使用高速缓存来改进一种特定类型的地址可预测转移指令的预测精度的系统和方法。这些指令是地址可预测转移指令,其目标地址存于单独的寄存器内。此类型的地址可预测转移指令的目标地址无法从指令本身计算出来。
该高速缓存包括多个入口。每个地址可预测转移指令与入口中的一个入口相关连。与一条地址可预测转移指令相关连的入口存储了一个预测的目的地,当下次执行时该地址可预测转移指令时该指令将转移至该预测的目的地。
根据本发明的一个重要特征,每个高速缓存入口还包括一个相关连的确认位。该确认位用于跟踪一条特定地址可预测转移指令的连续错误预测。该确认位最好是单个位。然而,熟悉技术的人知道也可利用多个位。例如,可以使用两位或三位来实施确认位。
当取出地址可预测转移指令时,读取与该地址可预测转移指令相关连的高速缓存入口以便确定转移的预测目的地。此外也读取与此入口相关连的确认位。然后执行该地址可预测转移指令,并且确定实际目的地。
如果该地址可预测转移指令所转移的实际目的地与从高速缓存入口读取的预测目的地相同,则将确认位设置为1。
当确认位设置为1时,该确认位或者标示最后的预测是正确的,或者标示高速缓存入口已经更新为包括了地址可预测转移指令的上一次执行的正确预测。
如果该地址可预测转移指令所转移的实际目的地与从高速缓存入口读取的预测目的地不同,则确定确认位的设置。如果在进行预测时将确认位设置为1以标示上一次预测是正确的,则将确认位复位为0。以此方式,对于此地址可预测转移指令的下一次执行而言,该确认位标示此次预测不正确。
如果在进行预测时早已将确认位设置等于0以标示上一次预测也不正确,则通过将实际目的地存入高速缓存入口而更新该入口。同时将该确认位设置为等于1。以此方式,对于此地址可预测转移指令的下一次执行而言,该确认位标示上一次执行此指令时存于高速缓存入口内的预测是转移的实际目的地。
作为例子,考虑一条在连续执行期间按照以下转移模式执行的特定地址可预测转移指令,首先转移至位置“A”,然后至“B”、“A”、“C”及然后回至“A”。很清楚,该地址可预测转移指令最经常转移至位置“A”。因此,如果高速缓存入口包括目的地“A”,则该入口大部分时间是正确的。
当首先执行该转移指令时,假定高速缓存入口不具有“A”值,则读取确认位。假定确认位的当前值设置等于0以标示上一次执行转移指令时高速缓存包括一次不正确预测,则将确认位设置为等于1并在入口内存入目的地“A”从而更新该入口。
按此例子,下一次执行至实际目的地“B”时,高速缓存包括一次对“A”的不正确预测及确认位等于1。因此,在此次执行中,并未更新存于高速缓存中的预测。然而,确认位被复位等于0。对于下一次至实际地址“A”的执行,高速缓存包括一次对“A”的正确预测并且确认位等于0。因此,在此次执行中,并未更新存于高速缓存中的预测。然而,确认位被设置为等于1。在下一次至“C”的实际目的地的执行中,高速缓存包括一次对“A”的不正确预测及确认位等于1。因此,在此次执行中,并未更新存于高速缓存中的预测,但确认位被复位等于0。从此例子中可以容易地看出,除非判断出在利用同一高速缓存入口时出现两次连续的错误预测,高速缓存值将保持不变。
利用一个高速缓存入口确定的第一次预测和利用不同高速缓存入口确定的第二次预测不能认为是连续的。只有利用相同高速缓存入口确定的两次预测才能认为是连续的。
作为另一个例子,多个地址可预测转移指令可以对同一高速缓存入口使用别名。当多条指令映射至同一高速缓存入口时出现别名。当对一个入口使用别名时,它将包括一个只对映射至该高速缓存入口的指令中的一条指令的预测。例如,假设一组指令A、B、C和D都对同一高速缓存入口使用别名。在此例子中,第一指令A转移至位置a,第二指令B转移至位置b,第三指令C转移至位置c及第四指令转移至位置d。如果这四条指令都映射至单个高速缓存入口,则该入口包括一个只对这些指令中的一条指令的预测。
还假设以下执行指令的顺序:A,然后A,然后B、A、C、A、A、D和然后A。假定相关连确认位的初始值为0,只在利用此入口时出现两次连续的错误预测的情况下才改变此高速缓存入口中的预测。利用本发明,高速缓存将能五次正确地预测正确的目标地址。不使用本发明,高速缓存只能两次正确地预测正确的目标地址。
超标量处理器在处理器流水线中包括若干阶段,例如以下所述。每个阶段包括一条或多条流水线。在典型的称为指令取出阶段的第一阶段中,自存储阶层中取出一条指令。然后在解码阶段中,该指令解码为不同控制位,这些位通常标志(1)用于完成由指令所指定操作的功能单元类型,(2)操作的源操作数,以及(3)操作结果的目的地。
在分配阶段中,可能按照一个具有执行阶段的单元的控制位来将解码的指令分配至介入保留站,后者最后向相关连的也称为执行单元的执行阶段发出指令。
该执行阶段处理由指令所指定的操作。执行指令所指定的操作包括接收一个或多个操作数和按照可用操作数的顺序产生一个或多个结果。
完成阶段解决并发执行中产生的程序顺序问题,其中多个并发地执行的指令可能在单个寄存器内存入结果。它还解决由一个在它们的目的地寄存器中存入结果的中断指令之后的指令中产生的恢复问题。
图1是根据本发明的超标量处理器100的框图。该处理器包括一个指令取出单元(IFU)106,它向利用重命名映射结构102的解码单元104提供信号。重命名映射结构102向问题队列111-117直接提供信息。这些问题队列111、113、115和117轮流地馈送给执行单元110、112a-b、114a-b和116a-b。
指令高速缓存108用于存储自IFU106接收的指令。数据高速缓存130用于自执行单元110-116接收数据。二级(L2)高速缓存120用于存储自数据高速缓存130和指令高速缓存108的数据和指令。处理器100包括一个总线接口单元(BIU)130,它在L2高速缓存120和外围设备接口125之间传送信息。
在此实施例中,转移问题队列111向条件寄存器(CR)逻辑或转移单元110提供信息。浮点问题队列(FIQ)113向两个浮点单元(FPU)112a和112b提供信息。问题队列(IQ)115向定点单元(FXU)114a和装载/存储单元(LSU)116提供信息。IQ117向FXU114b和LSU116b提供信息。虽然按照上述方式布置问题队列,但熟悉技术的人知道可在本发明的实质和范围内以不同方式布置问题队列。
条件寄存器118提供并且自CR总线101接收信息。浮点体系结构寄存器(FPR)120提供并自FPR总线105接收信息。通用寄存器(GPR)124和126提供并自GPR总线103接收信息。完成单元107通过完成总线109向重命名映射结构102提供信息。
转移单元110通过一条利用条件寄存器0-7(CR0-7)的CR总线101提供和接收信息。FPU112a和FPU112b通过一条利用条件寄存器1的CR总线101向CR108提供信息。FPU112a和112b也通过FPR总线105自和至FPR存储区120接收和提供信息。FXU114a、FXU114b、LSU116a和LSU116b通过一条利用条件寄存器0的CR总线向CR118输出结果。FXU141a、FXU146、LSU116a和LSU116b也通过GPR总线103自和至GPR存储区122接收和提供信息。GPR存储区122利用其中具有两个GPR124和126的影子GPR布置来实施。所有执行单元110-116通过完成总线109向完成单元107提供结果。
图2阐述高速缓存的图形表示,该高速缓存包括与根据本发明的方法和系统的高速缓存的每个入口相关连的一个确认位。高速缓存200被阐述为包括多个入口202。高速缓存200中也包括多个确认位204。每个入口包括一个相关连的确认位。每个高速缓存入口包括一个与该入口相关连的地址可预测转移指令的目的地预测。例如,与入口206相关连的地址可预测转移指令的预测存于域208内,以及确认位的值存于域210内。
图3中的高层流程图阐述一个具有多个入口的高速缓存的建立,每个入口具有一个根据本发明的方法和系统的相关连的确认位。该过程于块300处开始,并且随后进至块302以便建立一个包括多个入口的高速缓存。其次,块304中建立确认位并将不同确认位与高速缓存的每个入口关联起来。该过程进至块306以便将每个地址可预测转移指令与高速缓存入口中的一个关联起来。该过程然后于块308中结束。
在优选实施例中,利用散列方案来将地址可预测转移指令与高速缓存的一个特定入口关联起来。利用地址可预测转移指令的地址将地址可预测转移指令与高速缓存的一个入口关联起来。地址可预测转移指令的地址的一部分用于确定该指令利用高速缓存的哪个入口。例如,对于64位RISC体系结构,位52-58可用于选择高速缓存的入口。熟悉技术的人知道可以利用其他关连方案。
图4中的高层流程图阐述与高速缓存中入口相关连的确认位的利用,该确认位用于根据本发明的方法和系统改进地址可预测转移指令的目的地预测。过程于块400开始,此后进至块402以便取出下一条指令。其次,块404判断下一条指令是否为地址可预测转移指令。该指令可能或是无条件地址可预测转移指令,或是有条件地址可预测转移指令。如果判断下一条指令不是地址可预测转移指令,则过程退回至块402。
再参照块404,如果判断下一条指令是地址可预测转移指令,则过程进至块407以便确定高速缓存哪个入口与此特定地址可预测转移指令相关连。地址可预测转移指令的一部分地址用于确定高速缓存的哪个入口应该用于预测目标地址。例如,对于64位RISC体系结构,地址可预测转移指令地址中的位52至58可用作优选实施例的128个高速缓存入口的索引。熟悉技术的人知道可以利用其他关连方案来得到相同结果。
此后,块408判断此待预测的地址可预测转移指令是无条件转移指令还是有条件转移指令。如果判断此待预测的地址可预测转移指令或是无条件转移指令或是有条件转移指令,过程进至块410。再参照块408,如果判断此待预测的地址可预测转移指令既不是无条件转移指令又不是有条件转移指令,则过程进至块409。块409自顺序的地址中取出下一条指令。过程然后进至块412。
再参照块410,块410读取块407中确定的高速缓存入口以便确定此地址可预测转移指令的预测的目的地。其次,块411自预测的目的地中取出一条指令。块412然后读取与此高速缓存入口相关连的确认位。过程即进至块414以便执行此地址可预测转移指令和确定所执行的地址可预测转移指令的实际目的地。
其次,块416判断此地址可预测转移指令是无条件转移指令还是有条件转移指令。如果判断该待预测的地址可预测指令既不是无条件转移指令又不是有条件转移指令,则过程退回至块402。再参照块416,如果判断该取出的地址可预测转移指令或是无条件转移指令或是有条件转移指令,则过程进至块418。
块418判断该地址可预测转移指令是否已转移至预测的地址,即预测的目的地是否等于实际目的地。如果判断地址可预测转移指令已转移至预测的目的地,则过程进至块420以便判断此地址可预测转移指令的与高速缓存入口相关连的确认位是否等于“1”。如果判断此地址可预测转移指令的与高速缓存入口相关连的确认位等于“1”,则过程进至块402。再参照块420,如果判断此地址可预测转移指令的与高速缓存入口相关连的确认位不等于“1”,即它等于“0”,则过程进至块421以便将此地址可预测转移指令的与该入口相关连的确认位设置为等于“1”。然后过程进至块402。
再参照块418,如果判断地址可预测转移指令没有转移至预测的目的地,则过程进至块422以便将所有取出的此转移指令以后的指令刷清。其次,块424自正确地址中取出指令。此后,块426判断此地址可预测转移指令的与高速缓存入口相关连的确认位是否等于“1”。如果判断此地址可预测转移指令的与高速缓存入口相关连的确认位等于“1”,则过程进至块428以便将此高速缓存入口的确认位设置为等于“0”。然后过程进至块402。
再参照块426,如果判断此地址可预测转移指令的与高速缓存入口相关连的确认位不等于“1”,即它等于“0”,则过程进至块430以便将此地址可预测转移指令所转移的实际目的地写入与此地址可预测转移指令相关连的高速缓存入口中。此后,块432将此高速缓存入口的确认位设置为等于“1”。过程然后进至块402。
虽然具体地显示和描述了优选实施例,但熟悉技术的人理解可在不背离本发明的实质和范围的情况下在形式和细节上在其中作出不同改变。
Claims (54)
1.一种处理器中的转移地址预测方法,所述方法包括以下步骤:
存储一条转移指令的预测的转移目的地;
响应于执行第一转移指令的第一实例的情况而判断所存目的地是否为错误预测;
不论预测的转移目的地是否为执行转移指令的第一实例中的错误预测而保持所述所存目的地;
响应于执行转移指令的第二实例的情况而判断所存目的地是否为错误预测;以及
响应于执行转移指令的第一实例和第二实例两者中的所存目的地都是错误预测的情况而改变所述所存目的地。
2.权利要求1的方法,其中该改变还响应于执行第一转移指令的第一和第二实例是连续实例的情况。
3.根据权利要求2的方法,还包括将所述预测的转移目的地存于高速缓存的多个入口中的一个入口中的步骤,所述多个入口中的一个入口与所述转移指令相关连。
4.根据权利要求3的方法,还包括将所述高速缓存的所述多个入口中的每一个入口与多个确认位中的一个不同位关联起来的步骤,所述多个确认位用于确定连续错误预测。
5.根据权利要求4的方法,还包括在执行所述转移指令之前读取所述多个入口中与所述转移指令相关连的的一个入口的步骤。
6.根据权利要求5的方法,还包括以下步骤:
响应于所述所存目的地是错误预测的情况而判断所述多个确认位中的所述一位是否设置为等于1;及
响应于判断所述多个确认位中的所述一位设置为等于1的情况而将所述确认位中的所述一位复位为等于0。
7.根据权利要求6的方法,还包括以下步骤:
响应于所述多个确认位中的所述一位设置为等于0的情况,将实际目的地存入所述高速缓存的所述多个入口中的所述一个入口中,从而更新所述多个入口中的所述一个入口;及
将所述确认位中的所述一位设置为等于1。
8.根据权利要求7的方法,还包括以下步骤:
响应于所述所存目的地是正确预测的情况而判断所述多个确认位中的所述一位是否设置为等于0;及
响应于判断所述多个确认位中的所述一位设置为等于0的情况而将所述确认位中的所述一位设置为等于1。
9.一种处理器中的转移预测方法,所述方法包括以下步骤:
为一组转移指令使用别名,其中该组包括至少第一和第二转移指令;
为一组转移指令中的一条指令预测转移目的地并且将该预测的转移目的地作为该组的单个预测存储起来;
响应于执行来自一组转移指令的指令的实例的情况而判断在相应的实例中所存目的地是否为错误预测;
响应于相对于该组的指令而言错误预测是连续的情况而改变所述所存目的地;及
自从执行该组的一条指令而改变所存目的地之后,在作为第一实例的实例中保持所述所存目的地不变。
10.权利要求9的方法,其中保持所述所存目的地不变的步骤不考虑以下情况:在具有别名的指令组之外其他转移指令的执行是否介入执行该组指令的连续实例之中。
11.权利要求10的方法,其中自从执行该组的一条指令而改变所存目的地之后,在作为第一实例的实例中保持所述所存目的地不变的步骤包括响应于一个作为第一实例之后的一定实例的情况而保持所述所存目的地不变的步骤,从而使响应于相对于该组的指令而言错误预测是连续的情况而改变所述所存目的地的步骤包括响应于相对于该组的指令而言所述错误预测是连续超过两次的情况而改变的步骤。
12.根据权利要求11的方法还包括在高速缓存中多个入口中的一个入口中存储所述预测的转移目的地的步骤,所述多个入口中的所述一个与所述转移指令相关连。
13.根据权利要求12的方法还包括将所述高速缓存的所述多个入口中的一个入口与多个确认位中的一个不同位关联起来的步骤,所述多个确认位用于确定连续错误预测。
14.根据权利要求13的方法还包括在执行该组中一条指令之前读取所述多个入口中与所述一条指令相关连的所述一个入口。
15.根据权利要求14的方法还包括以下步骤:
响应于所述所存目的地是错误预测的情况而判断所述多个确认位中的所述一位是否设置为等于1;及
响应于判断所述多个确认位中的所述一位设置为等于1的情况而将所述确认位中的所述一位复位为等于0。
16.根据权利要求15的方法还包括以下步骤:
响应于判断所述多个确认位中的所述一位设置为等于0的情况,将实际目的地存入所述高速缓存的所述多个入口中的所述一个中而更新所述多个入口中的所述一个入口;及
将所述确认位中的所述一位设置为等于1。
17.根据权利要求16的方法还包括以下步骤:
响应于所述所存目的地是正确预测的情况而判断所述多个确认位中的所述一位是否设置为等于0;及
响应于判断所述多个确认位中的所述一位设置为等于0的情况而设置所述确认位中的所述一位为等于1。
18.一种在处理器中使用包括于所述处理器中的高速缓存改进多条转移指令中的一条指令的目的地预测精度的方法,所述高速缓存包括多个入口,所述多条转移指令中的每一条与所述高速缓存的所述多个入口中的一个相关连,所述方法包括以下步骤:
将所述多条转移指令中的一条的预测的转移目的地存入所述高速缓存的所述多个入口中与所述多条转移指令中的所述一条相关连的一个入口中;及
响应于所述多条转移指令中的所述一条指令的目的地的两次连续错误预测的情况而更新存于所述高速缓存的所述多个入口中的所述一个入口中的所述预测的转移目的地,其中所述两次连续错误预测是在利用所述高速缓存的所述多个入口中的所述一个入口时出现的。
19.根据权利要求18的方法还包括将所述高速缓存的所述多个入口中的每一个入口与多个确认位中的不同一位关联起来的步骤,所述多个确认位用于确定连续错误预测。
20.根据权利要求19的方法还包括执行所述多条转移指令中的所述一条指令的步骤,在所述执行期间所述多条转移指令中的所述一条指令转移至实际目的地。
21.根据权利要求20的方法还包括以下步骤:
将所述实际目的地与所述预测的转移目的地进行比较;
响应于所述实际目的地不同于所述预测的转移目的地的情况而判断在所述预测的转移目的地之前所作的更早预测是否不正确;及
响应于所述更早预测是不正确的情况而将所述实际目的地存入所述多个入口中的所述一个入口中从而更新存于所述多个入口中的所述一个入口中的所述预测的转移目的地。
22.根据权利要求21的方法还包括在执行所述多条转移指令中的所述一条指令的所述步骤之前读取所述多个入口中与所述多条转移指令中的所述一条相关连的所述一个入口的步骤。
23.根据权利要求22的方法还包括以下步骤:
读取所述多个确认位中与所述多个入口中的所述一个入口相关连的所述一位;
响应于所述实际目的地不同于所述预测的转移目的地的情况而判断所述多个确认位中的所述一位是否设置为等于1;及
响应于判断所述多个确认位中的所述一位设置为等于1的情况而将所述确认位中的所述一位复位为等于0。
24.根据权利要求23的方法还包括以下步骤:
响应于判断所述多个确认位中的所述一位设置为等于0的情况而将所述实际目的地存入所述高速缓存的所述多个入口中的所述一个入口中从而更新所述多个入口中的所述一个入口;及
将所述确认位中的所述一位设置为等于1。
25.根据权利要求24的方法还包括以下步骤:
响应于所述实际目的地等于所述预测的转移目的地的情况而判断所述多个确认位中的所述一位是否设置为等于0;及
响应于判断所述多个确认位中的所述一位设置为等于0的情况而将所述确认位中的所述一位设置为等于1。
26.根据权利要求25的方法,其中在将所述高速缓存的所述多个入口中的每一个与多个确认位中的一个不同位关联起来的步骤中,所述多个确认位中的每一位包括单个位。
27.根据权利要求26的方法,其中在将所述高速缓存的所述多个入口中的每一个与多个确认位中的一个不同位关联起来的步骤中,所述多个确认位中的每一位包括两位。
28.一种用于改进转移指令预测精度的处理器,包括:
用于存储一条转移指令的预测的转移目的地的装置;
响应于执行第一转移指令的第一实例的情况而用于判断所存目的地是否为错误预测的装置;
不论预测的转移目的地是否为执行转移指令的第一实例中的错误预测而用于保持所述所存目的地的装置;
响应于执行转移指令的第二实例的情况而用于判断所存目的地是否为错误预测的装置;及
响应于执行转移指令的第一实例和第二实例两者中的所存目的地都是错误预测的情况而用于改变所述所存目的地的装置。
29.权利要求28的处理器,其中所述用于改变的装置还包括响应于执行第一转移指令的第一和第二实例是连续实例的情况而改变的装置。
30.根据权利要求29的处理器,还包括用于将所述预测的转移目的地存入高速缓存的多个入口中的一个入口中的装置,所述多个入口中的一个入口与所述转移指令相关连。
31.根据权利要求30的处理器,还包括用于将所述高速缓存的所述多个入口中的每一个入口与多个确认位中的一个不同位关联起来的装置,所述多个确认位用于确定连续错误预测。
32.根据权利要求31的处理器,还包括在执行所述转移指令之前用于读取所述多个入口中与所述转移指令相关连的的一个入口的装置。
33.根据权利要求32的处理器,还包括:
响应于所述所存目的地是错误预测的情况而用于判断所述多个确认位中的所述一位是否设置为等于1的装置;及
响应于判断所述多个确认位中的所述一位设置为等于1的情况而用于将所述确认位中的所述一位复位为等于0的装置。
34.根据权利要求33的处理器,还包括:
响应于所述多个确认位中的所述一位设置为等于0的情况而用于将实际目的地存入所述高速缓存的所述多个入口中的所述一个入口中,从而更新所述多个入口中的所述一个入口的装置;及
用于将所述确认位中的所述一位设置为等于1的装置。
35.根据权利要求34的处理器,还包括:
响应于所述所存目的地是正确预测的情况而用于判断所述多个确认位中的所述一位是否设置为等于0的装置;及
响应于判断所述多个确认位中的所述一位设置为等于0的情况而用于将所述确认位中的所述一位设置为等于1的装置。
36.一种用于改进转移预测的处理器,包括:
用于为一组转移指令使用别名的装置,其中该组包括至少第一和第二转移指令;
用于为一组转移指令中的一条指令预测转移目的地并且将该预测的转移目的地作为该组的单个预测存储起来的装置;
响应于执行来自一组转移指令的指令的实例的情况而用于判断在相应的实例中所存目的地是否为错误预测的装置;
响应于相对于该组的指令而言错误预测是连续的情况而用于改变所述所存目的地的装置;及
自从执行该组的一条指令而改变所存目的地之后,用于在作为第一实例的实例中保持所述所存目的地不变的装置。
37.权利要求36的处理器,其中所述用于保持所述所存目的地不变的装置不考虑以下情况:在具有别名的指令组之外其他转移指令的执行是否介入执行该组指令的连续实例之中。
38.权利要求37的处理器,其中所述自从执行该组的一条指令而改变所存目的地之后用于在作为第一实例的实例中保持所述所存目的地不变的装置包括响应于一个作为第一实例之后的一定实例的情况而用于保持所述所存目的地不变的装置,从而使响应于相对于该组的指令而言错误预测是连续的情况而用于改变所述所存目的地的所述装置包括响应于相对于该组的指令而言所述错误预测是连续超过两次的情况而用于改变的装置。
39.根据权利要求38的处理器还包括用于在高速缓存中多个入口中的一个入口中存储所述预测的转移目的地的装置,所述多个入口中的所述一个与所述转移指令相关连。
40.根据权利要求39的处理器还包括用于将所述高速缓存的所述多个入口中的一个入口与多个确认位中的一个不同位关联起来的装置,所述多个确认位用于确定连续错误预测。
41.根据权利要求40的处理器还包括用于在执行该组中所述一条指令之前读取所述多个入口中与所述一条指令相关连的所述一个入口的装置。
42.根据权利要求41的处理器还包括:
响应于所述所存目的地是错误预测的情况而用于判断所述多个确认位中的所述一位是否设置为等于1的装置;及
响应于判断所述多个确认位中的所述一位设置为等于1的情况而用于将所述确认位中的所述一位复位为等于0的装置。
43.根据权利要求42的处理器还包括:
响应于判断所述多个确认位中的所述一位设置为等于0的情况而用于将实际目的地存入所述高速缓存的所述多个入口中的所述一个中而更新所述多个入口中的所述一个入口的装置;及
用于将所述确认位中的所述一位设置为等于1的装置。
44.根据权利要求43的处理器还包括:
响应于所述所存目的地是正确预测的情况而用于判断所述多个确认位中的所述一位是否设置为等于0的装置;及
响应于判断所述多个确认位中的所述一位设置为等于0的情况而用于设置所述确认位中的所述一位为等于1的装置。
45.一种使用包括于所述处理器中的高速缓存改进多条转移指令中的一条指令的目的地预测精度的处理器,包括:
所述高速缓存包括多个入口,所述多条转移指令中的每一条与所述高速缓存的所述多个入口中的一个相关连;
用于将所述多条转移指令中的一条的预测的转移目的地存入所述高速缓存的所述多个入口中与所述多条转移指令中的所述一条相关连的一个入口中的装置;及
响应于所述多条转移指令中的所述一条指令的目的地的两次连续错误预测的情况而用于更新存于所述高速缓存的所述多个入口中的所述一个入口中的所述预测的转移目的地的装置,其中所述两次连续错误预测是在利用所述高速缓存的所述多个入口中的所述一个入口时出现的。
46.根据权利要求45的处理器还包括用于将所述高速缓存的所述多个入口中的每一个入口与多个确认位中的一个不同位关联起来的装置,所述多个确认位用于确定连续错误预测。
47.根据权利要求46的处理器还包括用于执行所述多条转移指令中的所述一条指令的装置,在所述执行期间所述多条转移指令中的所述一条指令转移至实际目的地。
48.根据权利要求47的处理器还包括:
用于将所述实际目的地与所述预测的转移目的地进行比较的装置;
响应于所述实际目的地不同于所述预测的转移目的地的情况而用于判断在所述预测的转移目的地之前所作的更早预测是否不正确的装置;及
响应于所述更早预测是不正确的情况而用于将所述实际目的地存入所述多个入口中的所述一个入口中从而更新存于所述多个入口中的所述一个入口中的所述预测的转移目的地的装置。
49.根据权利要求48的处理器还包括在执行所述多条转移指令中的所述一条指令的所述装置之前用于读取所述多个入口中与所述多条转移指令中的所述一条相关连的所述一个入口的装置。
50.根据权利要求49的处理器还包括:
用于读取所述多个确认位中与所述多个入口中的所述一个入口相关连的所述一位的装置;
响应于所述实际目的地不同于所述预测的转移目的地的情况而用于判断所述多个确认位中的所述一位是否设置为等于1的装置;及
响应于判断所述多个确认位中的所述一位设置为等于1的情况而用于将所述确认位中的所述一位复位为等于0的装置。
51.根据权利要求50的处理器还包括:
响应于判断所述多个确认位中的所述一位设置为等于0的情况而用于将所述实际目的地存入所述高速缓存的所述多个入口中的所述一个入口中从而更新所述多个入口中的所述一个入口的装置;及
用于将所述确认位中的所述一位设置为等于1的装置。
52.根据权利要求51的处理器还包括:
响应于所述实际目的地等于所述预测的转移目的地的情况而用于判断所述多个确认位中的所述一位是否设置为等于0的装置;及
响应于判断所述多个确认位中的所述一位设置为等于0的情况而用于将所述确认位中的所述一位设置为等于1的装置。
53.根据权利要求52的处理器,其中所述用于将所述高速缓存的所述多个入口中的每一个与多个确认位中的一个不同位关联起来的装置还包括其中所述多个确认位中的每一位包括单个位的用于将所述高速缓存的所述多个入口中的每一个与多个确认位中的一个不同位关联起来的装置。
54.根据权利要求53的处理器,其中所述用于将所述高速缓存的所述多个入口中的每一个与多个确认位中的一个不同位关联起来的装置还包括其中所述多个确认位中的每一位包括两位的用于将所述高速缓存的所述多个入口中的每一个与多个确认位中的一个不同位关联起来的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/431,369 | 1999-11-01 | ||
US09/431,369 US6457120B1 (en) | 1999-11-01 | 1999-11-01 | Processor and method including a cache having confirmation bits for improving address predictable branch instruction target predictions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1305150A true CN1305150A (zh) | 2001-07-25 |
CN1142483C CN1142483C (zh) | 2004-03-17 |
Family
ID=23711643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB001328069A Expired - Fee Related CN1142483C (zh) | 1999-11-01 | 2000-10-31 | 具有改进的地址目标预测的处理器和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6457120B1 (zh) |
JP (1) | JP3565504B2 (zh) |
CN (1) | CN1142483C (zh) |
GB (1) | GB2363873B (zh) |
TW (1) | TW539996B (zh) |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1295598C (zh) * | 2004-03-09 | 2007-01-17 | 中国人民解放军国防科学技术大学 | 双栈返回地址预测器中返回地址栈的恢复方法 |
CN103282874A (zh) * | 2010-10-12 | 2013-09-04 | 索夫特机械公司 | 用于增强分支预测效率的指令序列缓冲器 |
US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
CN106843812A (zh) * | 2016-12-23 | 2017-06-13 | 北京北大众志微系统科技有限责任公司 | 一种实现间接转移关联软件预测的方法及装置 |
US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
US9720831B2 (en) | 2012-07-30 | 2017-08-01 | Intel Corporation | Systems and methods for maintaining the coherency of a store coalescing cache and a load cache |
US9720839B2 (en) | 2012-07-30 | 2017-08-01 | Intel Corporation | Systems and methods for supporting a plurality of load and store accesses of a cache |
US9733944B2 (en) | 2010-10-12 | 2017-08-15 | Intel Corporation | Instruction sequence buffer to store branches having reliably predictable instruction sequences |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US9767038B2 (en) | 2012-03-07 | 2017-09-19 | Intel Corporation | Systems and methods for accessing a unified translation lookaside buffer |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9811377B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for executing multithreaded instructions grouped into blocks |
US9823930B2 (en) | 2013-03-15 | 2017-11-21 | Intel Corporation | Method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
US9842005B2 (en) | 2011-03-25 | 2017-12-12 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9858080B2 (en) | 2013-03-15 | 2018-01-02 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9886416B2 (en) | 2006-04-12 | 2018-02-06 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9898412B2 (en) | 2013-03-15 | 2018-02-20 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative 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 |
US9921845B2 (en) | 2011-03-25 | 2018-03-20 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9934042B2 (en) | 2013-03-15 | 2018-04-03 | Intel Corporation | Method for dependency broadcasting through a block organized source view data structure |
US9940134B2 (en) | 2011-05-20 | 2018-04-10 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
US9965281B2 (en) | 2006-11-14 | 2018-05-08 | Intel Corporation | Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer |
US10031784B2 (en) | 2011-05-20 | 2018-07-24 | Intel Corporation | Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines |
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 |
US10146548B2 (en) | 2013-03-15 | 2018-12-04 | Intel Corporation | Method for populating a source view data structure by using register template snapshots |
US10169045B2 (en) | 2013-03-15 | 2019-01-01 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US10191746B2 (en) | 2011-11-22 | 2019-01-29 | Intel Corporation | Accelerated code optimizer for a multiengine microprocessor |
US10198266B2 (en) | 2013-03-15 | 2019-02-05 | Intel Corporation | Method for populating register view data structure by using register template snapshots |
US10228949B2 (en) | 2010-09-17 | 2019-03-12 | Intel Corporation | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
US10521239B2 (en) | 2011-11-22 | 2019-12-31 | Intel Corporation | Microprocessor accelerated code optimizer |
CN111078296A (zh) * | 2019-11-14 | 2020-04-28 | Harc研发中心 | 分支预测方法、分支预测单元及处理器核 |
Families Citing this family (21)
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 |
US7165169B2 (en) * | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
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 |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US20020194461A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US7134005B2 (en) * | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
US7203824B2 (en) * | 2001-07-03 | 2007-04-10 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7234045B2 (en) * | 2001-07-03 | 2007-06-19 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7162619B2 (en) * | 2001-07-03 | 2007-01-09 | Ip-First, Llc | Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer |
US6823444B1 (en) * | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
US7159097B2 (en) * | 2002-04-26 | 2007-01-02 | Ip-First, Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
US7185186B2 (en) | 2003-01-14 | 2007-02-27 | Ip-First, Llc | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache |
US7152154B2 (en) * | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
US7143269B2 (en) * | 2003-01-14 | 2006-11-28 | Ip-First, Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
US7178010B2 (en) * | 2003-01-16 | 2007-02-13 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack |
US20050015578A1 (en) * | 2003-07-14 | 2005-01-20 | Kimming So | Two-bit branch prediction scheme using reduced memory size |
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 |
US7441136B2 (en) * | 2005-04-04 | 2008-10-21 | Advanced Micro Devices, Inc. | System for predictive processor component suspension and method thereof |
US20080126771A1 (en) * | 2006-07-25 | 2008-05-29 | Lei Chen | Branch Target Extension for an Instruction Cache |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226130A (en) | 1990-02-26 | 1993-07-06 | Nexgen Microsystems | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
JPH0628184A (ja) | 1991-08-26 | 1994-02-04 | Internatl Business Mach Corp <Ibm> | ブランチ予測方法及びブランチプロセッサ |
US5835745A (en) | 1992-11-12 | 1998-11-10 | Sager; David J. | Hardware instruction scheduler for short execution unit latencies |
US5625788A (en) * | 1994-03-01 | 1997-04-29 | Intel Corporation | Microprocessor with novel instruction for signaling event occurrence and for providing event handling information in response thereto |
US5881277A (en) * | 1996-06-13 | 1999-03-09 | Texas Instruments Incorporated | Pipelined microprocessor with branch misprediction cache circuits, systems and methods |
US6101577A (en) | 1997-09-15 | 2000-08-08 | Advanced Micro Devices, Inc. | Pipelined instruction cache and branch prediction mechanism therefor |
-
1999
- 1999-11-01 US US09/431,369 patent/US6457120B1/en not_active Expired - Fee Related
-
2000
- 2000-10-27 GB GB0026320A patent/GB2363873B/en not_active Expired - Fee Related
- 2000-10-30 JP JP2000331110A patent/JP3565504B2/ja not_active Expired - Fee Related
- 2000-10-31 CN CNB001328069A patent/CN1142483C/zh not_active Expired - Fee Related
- 2000-10-31 TW TW089122898A patent/TW539996B/zh not_active IP Right Cessation
Cited By (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1295598C (zh) * | 2004-03-09 | 2007-01-17 | 中国人民解放军国防科学技术大学 | 双栈返回地址预测器中返回地址栈的恢复方法 |
US11163720B2 (en) | 2006-04-12 | 2021-11-02 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US10289605B2 (en) | 2006-04-12 | 2019-05-14 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US9886416B2 (en) | 2006-04-12 | 2018-02-06 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US10585670B2 (en) | 2006-11-14 | 2020-03-10 | Intel Corporation | Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer |
US9965281B2 (en) | 2006-11-14 | 2018-05-08 | Intel Corporation | Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer |
US10228949B2 (en) | 2010-09-17 | 2019-03-12 | Intel Corporation | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
CN103282874B (zh) * | 2010-10-12 | 2017-03-29 | 索夫特机械公司 | 用于增强分支预测效率的指令序列缓冲器 |
US9921850B2 (en) | 2010-10-12 | 2018-03-20 | Intel Corporation | Instruction sequence buffer to enhance branch prediction efficiency |
US10083041B2 (en) | 2010-10-12 | 2018-09-25 | Intel Corporation | Instruction sequence buffer to enhance branch prediction efficiency |
CN103282874A (zh) * | 2010-10-12 | 2013-09-04 | 索夫特机械公司 | 用于增强分支预测效率的指令序列缓冲器 |
US9733944B2 (en) | 2010-10-12 | 2017-08-15 | Intel Corporation | Instruction sequence buffer to store branches having reliably predictable instruction sequences |
US11204769B2 (en) | 2011-03-25 | 2021-12-21 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9934072B2 (en) | 2011-03-25 | 2018-04-03 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9921845B2 (en) | 2011-03-25 | 2018-03-20 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9842005B2 (en) | 2011-03-25 | 2017-12-12 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9990200B2 (en) | 2011-03-25 | 2018-06-05 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US10564975B2 (en) | 2011-03-25 | 2020-02-18 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US10372454B2 (en) | 2011-05-20 | 2019-08-06 | Intel Corporation | Allocation of a segmented interconnect to support the execution of instruction sequences by a plurality of engines |
US10031784B2 (en) | 2011-05-20 | 2018-07-24 | Intel Corporation | Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines |
US9940134B2 (en) | 2011-05-20 | 2018-04-10 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
US10521239B2 (en) | 2011-11-22 | 2019-12-31 | Intel Corporation | Microprocessor accelerated code optimizer |
US10191746B2 (en) | 2011-11-22 | 2019-01-29 | Intel Corporation | Accelerated code optimizer for a multiengine microprocessor |
US10310987B2 (en) | 2012-03-07 | 2019-06-04 | Intel Corporation | Systems and methods for accessing a unified translation lookaside buffer |
US9767038B2 (en) | 2012-03-07 | 2017-09-19 | Intel Corporation | Systems and methods for accessing a unified translation lookaside buffer |
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 |
US9858206B2 (en) | 2012-07-30 | 2018-01-02 | Intel Corporation | Systems and methods for flushing a cache with modified data |
US10698833B2 (en) | 2012-07-30 | 2020-06-30 | Intel Corporation | Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput |
US10210101B2 (en) | 2012-07-30 | 2019-02-19 | Intel Corporation | Systems and methods for flushing a cache with modified data |
US10346302B2 (en) | 2012-07-30 | 2019-07-09 | Intel Corporation | Systems and methods for maintaining the coherency of a store coalescing cache and a load cache |
US9720839B2 (en) | 2012-07-30 | 2017-08-01 | Intel Corporation | Systems and methods for supporting a plurality of load and store accesses of a cache |
US9720831B2 (en) | 2012-07-30 | 2017-08-01 | Intel Corporation | Systems and methods for maintaining the coherency of a store coalescing cache and a load cache |
US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
US10585804B2 (en) | 2012-10-11 | 2020-03-10 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
US9842056B2 (en) | 2012-10-11 | 2017-12-12 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
US9811377B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for executing multithreaded instructions grouped into blocks |
US9898412B2 (en) | 2013-03-15 | 2018-02-20 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10169045B2 (en) | 2013-03-15 | 2019-01-01 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US10248570B2 (en) | 2013-03-15 | 2019-04-02 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10255076B2 (en) | 2013-03-15 | 2019-04-09 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US10146576B2 (en) | 2013-03-15 | 2018-12-04 | Intel Corporation | Method for executing multithreaded instructions grouped into blocks |
US10146548B2 (en) | 2013-03-15 | 2018-12-04 | Intel Corporation | Method for populating a source 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 |
US9934042B2 (en) | 2013-03-15 | 2018-04-03 | Intel Corporation | Method for dependency broadcasting through a block organized source view data structure |
US10503514B2 (en) | 2013-03-15 | 2019-12-10 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US10198266B2 (en) | 2013-03-15 | 2019-02-05 | Intel Corporation | Method for populating register view data structure by using register template snapshots |
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 |
US9858080B2 (en) | 2013-03-15 | 2018-01-02 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US11656875B2 (en) | 2013-03-15 | 2023-05-23 | Intel Corporation | Method and system for instruction block to execution unit grouping |
US9823930B2 (en) | 2013-03-15 | 2017-11-21 | Intel Corporation | Method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
US10740126B2 (en) | 2013-03-15 | 2020-08-11 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
CN106843812A (zh) * | 2016-12-23 | 2017-06-13 | 北京北大众志微系统科技有限责任公司 | 一种实现间接转移关联软件预测的方法及装置 |
CN111078296A (zh) * | 2019-11-14 | 2020-04-28 | Harc研发中心 | 分支预测方法、分支预测单元及处理器核 |
Also Published As
Publication number | Publication date |
---|---|
GB2363873B (en) | 2004-01-21 |
TW539996B (en) | 2003-07-01 |
CN1142483C (zh) | 2004-03-17 |
JP3565504B2 (ja) | 2004-09-15 |
GB0026320D0 (en) | 2000-12-13 |
JP2001166935A (ja) | 2001-06-22 |
GB2363873A (en) | 2002-01-09 |
US6457120B1 (en) | 2002-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1142483C (zh) | 具有改进的地址目标预测的处理器和方法 | |
US6003128A (en) | Number of pipeline stages and loop length related counter differential based end-loop prediction | |
US5860017A (en) | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction | |
US5944817A (en) | Method and apparatus for implementing a set-associative branch target buffer | |
US6697932B1 (en) | System and method for early resolution of low confidence branches and safe data cache accesses | |
US8069336B2 (en) | Transitioning from instruction cache to trace cache on label boundaries | |
US5809271A (en) | Method and apparatus for changing flow of control in a processor | |
EP1099157B1 (en) | Processor configured to map logical register numbers to physical register numbers using virtual register numbers | |
US5687338A (en) | Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor | |
US5835951A (en) | Branch processing unit with target cache read prioritization protocol for handling multiple hits | |
US20050216714A1 (en) | Method and apparatus for predicting confidence and value | |
CN101529378B (zh) | 用于处理分支历史信息的方法及管线处理器 | |
US7155599B2 (en) | Method and apparatus for a register renaming structure | |
CN1728086A (zh) | 预测提示指令的运行时间更新 | |
JP2005500616A (ja) | 2レベルの分岐予測キャッシュによる分岐予測 | |
CN101776989B (zh) | 乱序执行微处理器及提升效能的方法、执行方法 | |
US5732243A (en) | Branch processing unit with target cache using low/high banking to support split prefetching | |
US5832260A (en) | Processor microarchitecture for efficient processing of instructions in a program including a conditional program flow control instruction | |
EP0677807A2 (en) | Processing system and method of operation | |
EP0649084A1 (en) | Microprocessor branch processing | |
CN1224871A (zh) | 在一个处理系统中处理多条存储指令完成的方法和系统 | |
EP1853995A2 (en) | Method and apparatus for managing a return stack | |
US6629238B1 (en) | Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration | |
EP1099158B1 (en) | Processor configured to selectively free physical registers upon retirement of instructions | |
KR100603067B1 (ko) | 분기 예측의 타입을 분류하기 위해 복귀 선택 비트들을 이용하는 분기 예측 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
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: 20040317 Termination date: 20091130 |