CN101176060A - 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器 - Google Patents
每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器 Download PDFInfo
- Publication number
- CN101176060A CN101176060A CNA200680016497XA CN200680016497A CN101176060A CN 101176060 A CN101176060 A CN 101176060A CN A200680016497X A CNA200680016497X A CN A200680016497XA CN 200680016497 A CN200680016497 A CN 200680016497A CN 101176060 A CN101176060 A CN 101176060A
- Authority
- CN
- China
- Prior art keywords
- branch
- instruction
- address
- target address
- offset table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 20
- 230000006870 function Effects 0.000 claims description 7
- 238000000605 extraction Methods 0.000 claims description 2
- 230000004044 response Effects 0.000 claims description 2
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 239000004615 ingredient Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 101000603407 Homo sapiens Neuropeptides B/W receptor type 1 Proteins 0.000 description 1
- 101000603411 Homo sapiens Neuropeptides B/W receptor type 2 Proteins 0.000 description 1
- 102100038847 Neuropeptides B/W receptor type 1 Human genes 0.000 description 1
- 102100038843 Neuropeptides B/W receptor type 2 Human genes 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 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 or 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
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
分支目标地址高速缓冲存储器(BTAC)将至少两个分支目标地址存储在每一高速缓冲存储器线中。所述BTAC由截短的分支指令地址来加索引。从分支预测偏移表获得的偏移来确定采用所述分支目标地址中的哪一个作为经预测的分支目标地址。可以数种方式对所述偏移表加索引,其中包括:通过分支历史、通过分支历史与部分分支指令地址的散列、g共享值、随机地、按循环次序或其他方法。
Description
技术领域
大体而言,本发明涉及处理器领域,且更具体而言涉及每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器。
背景技术
微处理器可在很多种应用中实施计算任务。改善计算机性能是人们一直所追求的设计目标,即,通过增强的软件来实现更快的操作及/或增多的功能性从而推动产品的改善。在很多嵌入式应用(例如,便携式电子装置)中,保存电力及减小芯片大小是处理器设计及实施中的共同目标。
很多现代处理器都使用管线架构,其中顺序指令(每一者具有多个执行步骤)在执行时重叠。这种利用顺序指令流内指令之间的平行性的能力可有助于显著地改善处理器的性能。在某些状态下,一些处理器每个执行循环可完成一个指令。
这些理想状态在实践中由于各种因素几乎不能实现,这些因素包括:指令间的数据相关性(数据危险)、控制相关性(例如,分支)(控制危险)、处理器资源分配冲突(结构性危险)、中断、高速缓冲存储器丢失等等。相应地,处理器设计的共同目标就是避免这些危险并保持管线“充满”。
真实世界程序通常包括状态分支指令,在管线中深度评估所述指令之前,可能不知道其实际的分支行为。这种分支的不确定性可产生停止管线的控制危险,因为,处理器不知道在分支指令之后应取走哪些指令,且将一直不知道直至所述状态分支指令得到评估。通常,现代处理器使用各种形式的分支预测,由此在管线中提早对状态分支指令的分支行为进行预测,且处理器将基于所述分支预测以投机的方式取走并执行指令,由此使管线保持充满。如果所述预测是正确的,则可使性能最大化而使电力消耗最小化。在实际评估所述分支指令时,如果错误地预测了所述分支,则必须从管线清除以投机方式取来的指令,且必须从正确的分支目标地址取走新的指令。错误预测的分支会负面地影响处理器性能及电力消耗。
状态分支预测有两个组成部分:状态评估及分支目标地址。所述状态预测是二元决定:所述分支被被采用,其导致执行跳转到一个不同的代码序列;或者所述分支未被被采用,在这种情况下,处理器会执行所述分支指令之后的下一个顺序指令。如果所述分支评估为被采用,则所述分支目标地址就是下一个指令的地址。某些分支指令在指令op-代码中包括分支目标地址,或包括偏移量,由此可容易地计算所述分支目标地址。对于其他分支指令,必须计算所述分支目标地址(如果预测所述状态评估被被采用)。
一种已知的分支目标地址预测技术是分支目标地址高速缓冲存储器(BTAC)。通常,BTAC是由分支指令地址(BIA)加索引的全关联高速缓冲存储器,其中每一数据位置(或高速缓冲存储器“线”)均包含单个分支目标地址(BTA)。当支线指令在管线中评估为被采用且其实际BTA经计算时,则将BIA及BTA写入至BTAC(例如,在写回管线阶段期间)。当在提取新指令时,与指令高速缓冲存储器(或I-高速缓冲存储器)并行地存取所述BTAC。如果所述指令地址命中所述BTAC,则所述处理器便知道所述指令是分支指令(这是在从正解码的I-高速缓冲存储器提取指令之前),且提供经预测的BTA(其是先前执行的分支指令的实际BTA)。如果分支预测电路预测所述分支被被采用,则指令提取在所预测的BTA处开始。如果预测所述分支未被被采用,则依序继续进行指令的提取。注意,在此项技术中,术语BTAC还用来表示使饱和计数器与BIA相关联由此仅提供状态评估预测(即,分支被被采用或分支未被被采用)的高速缓冲存储器。
高性能处理器可一次从I-高速缓冲存储器取走一个以上的指令。例如,可将整个高速缓冲存储器线(其可包括(例如)四个指令)提取到指令提取缓冲器中,所述指令提取缓冲器会依序将这些指令馈送到管线中。将BTAC用于对全部四个指令的分支预测可需要在所述BTAC上具有四个读取端口。这将需要大而复杂的硬件,且会急剧地增大电力的消耗。
发明内容
分支目标地址高速缓冲存储器(BTAC)在每一高速缓冲存储器线中存储至少两个支线目标地址。所述BTAC由截短支线指令地址来加索引。从分支预测偏移表所获得的偏移确定将哪一个分支目标地址采用为所预测的分支目标地址。可以数种方式对所述偏移表加索引,其中包括:通过分支历史、通过分支历史及部分分支指令地址的散列、g共享值、随机地、按循环次序或其他方法。
一个实施例涉及一种预测分支指令的分支目标地址的方法。存储指令地址的至少部分。使至少两个分支目标地址与所存储的指令地址相关联。在提取分支指令时,将其中一个分支目标地址选为所述分支指令的经预测目标地址。
另一实施例涉及一种预测分支目标地址的方法。以第一指令地址开始,提取由n个顺序指令构成的块。将所述块中评估为被采用的每一分支指令的分支目标地址存储在高速缓冲存储器中,以使多达n个分支目标地址由部分第一指令地址来加索引。
另一实施例涉及处理器。所述处理器包括分支目标地址高速缓冲存储器,所述分支目标地址高速缓冲存储器由部分指令地址来加索引,且可操作以使每一高速缓冲存储器线存储两个或更多分支目标地址。所述处理器进一步包括可操作以存储多个偏移的分支预测偏移表。所述处理器另外包括指令执行管线,所述指令执行管线通过指令地址来为所述高速缓冲存储器加索引,且响应于从所述偏移表格获得的偏移,从所指示的高速缓冲存储器线中选择分支目标地址。
附图说明
图1处理器的功能方块图。
图2是分支目标地址高速缓冲存储器的及附带电路的功能方块图。
具体实施方式
图1描绘处理器10的功能方块图。处理器10根据控制逻辑14执行指令执行管线12中的指令。在某些实施例中,管线12可为具有多个平行管线的超标量设计。管线12包括组织成管道阶段的各种寄存器或锁存器16,以及一个或多个算术逻辑单元(ALU)18。通用寄存器(GPR)文件20提供构成存储器体系的顶层的寄存器。
管线12从指令高速缓冲存储器(I-高速缓冲存储器)22提取指令,其中存储器地址转换及许可是由指令侧转换旁式缓冲器(ITLB)24来进行管理。并行地,管线12将指令地址提供至分支目标地址高速缓冲存储器(BTAC)25。如果所述指令地址命中BTAC 25,则BTAC 25可将分支目标地址提供至I-高速缓冲存储器22,以立即开始根据经预测的分支目标地址提取指令。如下文更加完整地阐述,通过来自分支预测偏移表(BPOT)23的偏移来确定BTAC 25提供多个可能的经预测分支目标地址中的哪一个。在一个或多个实施例中,通至BPOT 23的输入可包括散列函数21及其他控制输入,所述散列函数包含分支历史、分支指令地址。所述分支历史可由分支历史寄存器(BHR)26来提供,所述分支历史寄存器存储多个分支指令的分支状态评估结果(例如,被采用或未被采用)。
从数据高速缓冲存储器(D-高速缓冲存储器)26存取数据,其中存储器地址转换及许可是由主转换旁视缓冲器(TLB)28来管理。在各种实施例中,ITLB可包括部分TLB的副本。作为另一选择,可将ITLB与TLB集成在一起。类似地,在处理器10的各种实施例中,可将I-高速缓冲存储器22和D-高速缓冲存储器26集成或联合在一起。在存储器接口30的控制下,I-高速缓冲存储器22及/或D-高速缓冲存储器26中的丢失会导致对主(片外)存储器32的存取。
处理器10可包括输入/输出(I/O)接口34,其控制对各个外部设备36的存取。所属领域的技术人员应认识到,可以对处理器10作出多种变化。例如,处理器10可包括用于I或D高速缓冲存储器22、26二者或其中任何一者的第二级(L2)高速缓冲存储器。另外,可将所描绘的位于处理器10中的一个或多个功能块从一个具体的实施例中省去。
状态分支指令常见于大多数的代码中,评估五个指令中多达一个指令可能是分支。然而,分支指令往往不会均匀地分布。相反,常常它们会群集在一起以构建逻辑构造,例如,如果-则-否则(if-then-else)决定路径、平行(“情况”)分支等等。例如,以下的代码片比较两个寄存器的内容,且基于比较的结果分支到目标P或Q:
CMPr7,r8 比较GPR7及GPR8的结果,且设定状态代码或旗标来反应所述比较的结果
BEQ P 如果等于代码标记P,则分支
BNE Q 如果不等于代码标记Q,则分支
由于高性能处理器10通常从I-高速缓冲存储器22一次提取多个指令,且由于分支指令往往会在代码中群集,所以,如果指定的指令提取包括分支指令,则其还包括额外分支指令的可能性就很高。根据一个或多个实施例,将多个分支目标地址(BTA)存储在与单个指令地址相关联的分支目标地址高速缓冲存储器(BTAC)25中。在命中BTAC 25的指令提取之后,分支预测偏移表(BPOT)23(可以各种方式为其加索引)所提供的偏移会选择其中一个BTA。
图2描绘根据各个实施例的BTAC 25及BPOT 23的功能方块图。BTAC 25中的每一条目包括索引或指令地址字段40。每一条目包括高速缓冲存储器线42,所述高速缓冲存储器线包括两个或更多个BTA字段(图2绘示四个表示为BTA0-BTA3的字段)。当从I-高速缓冲存储器22提取的指令地址命中BTAC 25时,偏移会选择高速缓冲存储器线42的多个BTA字段的其中一个,在功能上,图2将其描绘成多路复用器44。注意,在各种实施方案中,所述选择功能可成为BTAC 25的组成部分或,如多路复用器44所示,位于BTAC 25外部。BPOT 23提供偏移。如下文更加完整地阐述,BPOT 23可存储指示高速缓冲存储器线42中的哪一个BTA字段包含在一组具体环境下最后被被采用的BTA的指示符。
具体而言,图2中所示BTAC 25的状态可由如下例示性代码(其中A-C是截短的指令地址且T-Z是分支目标地址)的不同迭代来获得:
BEQ Z
ADD r1,r3,r4
A:
BNE Y
ADD r6,r3,r7
BEQ X
BNE W
B:
BGE V
B U
CMP r12,r4
BNE T
C:
ADD r3,r8,r9
AND r2,r3,r6
通过从所述指令地址截短一个或多个LSB将所述代码逻辑划分成n个指令块(在所示实例中,n=4)。如果块中的任一分支指令评估为被采用,则写入BTAC 25项,从而将截短的指令地址存储在索引字段40中,且将“被采用”分支指令的BTA存储在高速缓冲存储器线42的对应BTA字段中。例如,参照图2,在不同时间处,执行由四个具有截短地址A的指令构成的块。每一分支被评估为被采用至少一次,且使用指令地址的LSB将各个实际的BTA写入至高速缓冲存储器线42以选择BTAn字段(例如,BTA0及BTA2)。由于对应于字段BTA1及BTA3的指令并非分支指令,所以不将任何数据存储在高速缓冲存储器线42的所述字段内(例如,与所述字段相关联的“有效”位可为0)。当将每一各自的BTA写入至BTAC 25时(例如,在经评估为被采用的对应分支指令的写回管道阶段),更新BPOT 23以存储指向高速缓冲存储器线42的相关BTA字段的偏移。在这个实例中,当执行BEQ Z分支时,存储值0,且当执行BNE Y分支时,存储值2。如下文更加完整地阐述,可将这些偏移值存储在BPOT 23中由此时处理器状态所确定的位置内。
类似地,由四个共享截短指令地址B的指令构成的块也被执行多次,在所述情况下,每一指令是一个分支指令。每一分支被评估为被采用至少一次,且其最近写入至高速缓冲存储器线42的对应BTA字段的实际BTA由截短地址B来加索引。高速缓冲存储器线42的所有四个BTA字段均为有效,且每一者存储一个BTA。相应地更新BPOT 23中的项以指向有关的BTAC 25 BTA字段。作为另一实例,图2描绘存储在BTAC 25中的截短地址C及BTA T,其对应于实例代码的块C中的BNE T指令。注意,所述由n个指令构成的块并非以分支指令开始。
如这些实例所表明,可将1至n个BTA存储在由单个截短指令地址加索引的BTAC25中。在后续指令提取时,在命中BTAC 25时,必须在多达n个BTA中选择一个BTA作为所预测的BTA。根据各个实施例,BPOT 23维持一个偏移表格,所述偏移表格在多达n个BTA中选择一个供指定高速缓冲存储器线42使用的BTA。将偏移写入至BPOT 23,同时将BTA写入至BTAC 25。在BPOT 23中写入偏移的位置可取决于写入所述偏移时处理器所处的当前及/或最近过去的状态或状况,且由逻辑电路21及其输入来确定。逻辑电路21及其输入可采取数种形式。
在一个实施例中,所述处理器保持分支历史寄存器(BHR)26。简单形式的BHR26可包括移位寄存器。所述BHR存储状态分支指令当其在管线12中得到评估时的状态评估。即,BHR 26存储分支指令是被采用(T)还是未被采用(N)。BHR 26的位宽决定所保持的分支评估历史的时间深度。
根据一个实施例,BPOT 23直接由BHR 26的至少一部分来加索引以对偏移进行选择。即,在所述实例中,逻辑电路21的输入只有BHR 26,所述逻辑电路只是一个“通过”电路。例如,当块A中的分支指令BEQ被评估为实际被采用且产生了Z的实际BTA时,BHR 26包含(位于至少LSB位位置中的)值NNN(即,前三个状态分支均被评估为“未被采用”)。在所述情况下,将对应于由截短指令地址A加索引的高速缓冲存储器线42的字段BTA0的0写入至BOPT 23中的对应位置(在图2中所示的实例中为最上部的位置)。类似地,当执行分支指令BNE时,BNR 26包含值NNT,且将2写入至BPOT 23的第二位置(其对应于写入至由截短指令地址A加索引的高速缓冲存储器线42的BTA2字段的BTAY)。
当随后提取块A中的BEQ指令时,其将命中BTAC 25。如果BHR 26在此时的状况为NNN,则BPOT 23将提供偏移0,且高速缓冲存储器线42的BTA0字段的内容(其是BTA Z)被提供为经预测的BTA。或者,如果在提取时的BHR 26为NNT,则BPOT 23将提供2的偏移,且BTA2的内容或Y将为所预测的BTA。后一种情况是混叠的实例,其中当写入不同分支指令的BTA时最近分支历史正好与现有分支历史重叠时,针对一个分支指令预测错误的BTA。
在另一实施例中,逻辑电路21可包括散列函数,所述散列函数将BHR 26输出的至少一部分与所述指令地址的至少一部分组合在一起以防止或减少混叠。此将增大BPOT 23的大小。在一个实施例中,可将所述指令地址位与BHR 26的输出链接在一起,从而产生与此项技术中已知的g选择预测器(与分支状态评估预测有关)类似的BPOT 23索引。在另一实施例中,可对所述指令地址位与BHR 26输出进行互斥处理,从而获得g共享-类型的BPOT 23索引。
在一个或多个实施例中,逻辑电路21的一个或多个输入可与分支历史或指令地址不相关。例如,可以递增的方式为BPOT 23加索引,从而产生循环索引。作为另一选择,所述索引可为随机的。可将(例如)由管线控制逻辑14所产生的一种或多种输入与上述一种或多种索引产生技术组合在一起。
根据本文所述的一个或多个实施例,通过使BTAC 25的高速缓冲存储器线42中的BTAn字段数量与I-高速缓冲存储器22的高速缓冲存储器线中的指令数量相匹配,BTAC 25的存取可与从I-高速缓冲存储器的指令提取保持同步。为在多达n个可能BTA中选择一个BTA作为经预测BTA,可将处理器状态(例如,最近分支历史)与在将BTA写入BTAC 25时的现有情况作比较。各种为BPOT 23加索引以产生供BTA选择使用的偏移的实施例提供了丰富的适合于具体架构或应用的工具。
虽然本文参照本发明的具体特征、方面和实施例对本发明进行了阐述,但是应了解,在本发明的广泛范围内可存在很多的变化、修改和其他实施例,且相应地,所有的变化、修改和实施例均视为属于本发明的范围。因此,应在所有方面将本发明实施例理解为说明性而非限制性,且包含在随附权利要求书的含义和等效范围内的所有改变均涵盖在随附权利要求范围内。
Claims (19)
1.一种预测分支指令的分支目标地址的方法,其包括:
存储至少一部分指令地址;
使至少两个分支目标地址与所述存储的指令地址相关联;及
在提取分支指令时,选择所述分支目标地址中的一者作为所述分支指令的经预测目标地址。
2.如权利要求1所述的方法,其中存储至少一部分指令地址包括写入至少一部分所述指令地址作为高速缓冲存储器中的索引。
3.如权利要求2所述的方法,其中使至少两个分支目标地址与所述指令地址相关联包括:在执行所述至少两个分支指令中的每一者时,写入所述各自分支指令的分支目标地址作为高速缓冲存储器线中由所述索引加索引的数据。
4.如权利要求1所述的方法,其进一步包括存取分支预测偏移表以获得偏移,且其中选择所述分支目标地址中的一者作为所述经预测目标地址包括选择对应于所述偏移的分支目标地址。
5.如权利要求4所述的方法,其中存取分支预测偏移表包括通过分支历史来为所述分支预测偏移表加索引。
6.如权利要求4所述的方法,其中存取分支预测偏移表包括通过分支历史及所述指令地址的散列函数来为所述分支预测偏移表加索引。
7.如权利要求4所述的方法,其中存取分支预测偏移表包括随机地为所述分支预测偏移表加索引。
8.如权利要求4所述的方法,其中存取分支预测偏移表包括以递增方式为所述分支预测偏移表加索引以产生循环选择。
9.如权利要求4所述的方法,其进一步包括:当分支指令估计为被采用时将偏移写入所述分支预测偏移表,所述偏移指示所述至少两个分支目标地址中的哪一个与所述被采用的分支指令相关联。
10.如权利要求1所述的方法,其中存储至少一部分指令地址包括:将所述指令地址截短至少一个位,使得所述截短的指令地址参考一n个指令的块。
11.一种预测分支目标地址的方法,其包括:
提取由截短指令地址参考的一n个顺序指令的块;及
将所述块中估计为被采用的每一分支指令的分支目标地址存储在高速缓冲存储器中,以使多达n个分支目标地址由所述截短指令地址加索引。
12.如权利要求11所述的方法,其进一步包括:在随后提取所述块中所述分支指令中的一者时,从所述高速缓冲存储器中选择分支目标地址。
13.如权利要求12所述的方法,其中从所述高速缓冲存储器中选择分支目标地址包括:
从偏移表获得偏移;
用所述截短的指令地址来为所述高速缓冲存储器加索引;及
根据所述偏移来选择多达n个分支目标地址中的一者。
14.如权利要求13所述的方法,其中从偏移表获得偏移包括用分支历史来为所述偏移表加索引。
15.一种处理器,其包括:
分支目标地址高速缓冲存储器,其由截短指令地址来加索引且操作以每高速缓冲存储器线存储两个或更多分支目标地址;
分支预测偏移表,其操作以存储多个偏移;及
指令执行管线,其操作以用截短指令地址来为所述高速缓冲存储器加索引,且响应于从所述偏移表获得的偏移从所述加索引的高速缓冲存储器线中选择分支目标地址。
16.如权利要求15所述的处理器,其进一步包括指令高速缓冲存储器,所述指令高速缓冲存储器具有n个指令的指令提取带宽,且其中所述截短指令地址对一n个指令的块进行寻址。
17.如权利要求16所述的处理器,其中所述分支目标地址操作以每高速缓冲存储器线来存储多达n个分支目标地址。
18.如权利要求15所述的处理器,其进一步包括分支历史寄存器,所述分支历史寄存器操作以存储对多个状态分支指令的状态评估的指示,所述分支历史寄存器的内容为所述分支预测偏移表加索引以获得所述偏移,以从所述加索引的高速缓冲存储器线中选择分支目标地址。
19.如权利要求18所述的处理器,其中在为所述分支预测偏移表加索引之前,将所述分支历史寄存器的内容与所述截短指令地址组合在一起。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/089,072 | 2005-03-23 | ||
US11/089,072 US20060218385A1 (en) | 2005-03-23 | 2005-03-23 | Branch target address cache storing two or more branch target addresses per index |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101176060A true CN101176060A (zh) | 2008-05-07 |
Family
ID=36973923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200680016497XA Pending CN101176060A (zh) | 2005-03-23 | 2006-03-23 | 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20060218385A1 (zh) |
EP (1) | EP1866748A2 (zh) |
JP (1) | JP2008535063A (zh) |
KR (1) | KR20070118135A (zh) |
CN (1) | CN101176060A (zh) |
BR (1) | BRPI0614013A2 (zh) |
IL (1) | IL186052A0 (zh) |
WO (1) | WO2006102635A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102109975A (zh) * | 2009-12-24 | 2011-06-29 | 华为技术有限公司 | 确定函数调用关系的方法、装置及系统 |
CN103984525A (zh) * | 2013-02-08 | 2014-08-13 | 上海芯豪微电子有限公司 | 指令处理系统及方法 |
CN106847338A (zh) * | 2015-12-04 | 2017-06-13 | 三星电子株式会社 | 非易失性存储器装置、存储器系统及操作它们的方法 |
TWI768547B (zh) * | 2020-11-18 | 2022-06-21 | 瑞昱半導體股份有限公司 | 管線式電腦系統與指令處理方法 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
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 |
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 |
US20070266228A1 (en) * | 2006-05-10 | 2007-11-15 | Smith Rodney W | Block-based branch target address cache |
JP5145809B2 (ja) * | 2007-07-31 | 2013-02-20 | 日本電気株式会社 | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム |
US8131982B2 (en) * | 2008-06-13 | 2012-03-06 | International Business Machines Corporation | Branch prediction instructions having mask values involving unloading and loading branch history data |
US8078849B2 (en) * | 2008-12-23 | 2011-12-13 | Juniper Networks, Inc. | Fast execution of branch instruction with multiple conditional expressions using programmable branch offset table |
US10338923B2 (en) * | 2009-05-05 | 2019-07-02 | International Business Machines Corporation | Branch prediction path wrong guess instruction |
US8539204B2 (en) * | 2009-09-25 | 2013-09-17 | Nvidia Corporation | Cooperative thread array reduction and scan operations |
US20110093658A1 (en) * | 2009-10-19 | 2011-04-21 | Zuraski Jr Gerald D | Classifying and segregating branch targets |
US8521999B2 (en) * | 2010-03-11 | 2013-08-27 | International Business Machines Corporation | Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history |
US9823932B2 (en) * | 2015-04-20 | 2017-11-21 | Arm Limited | Branch prediction |
US20170083333A1 (en) * | 2015-09-21 | 2017-03-23 | Qualcomm Incorporated | Branch target instruction cache (btic) to store a conditional branch instruction |
US10353710B2 (en) * | 2016-04-28 | 2019-07-16 | International Business Machines Corporation | Techniques for predicting a target address of an indirect branch instruction |
US20170371669A1 (en) * | 2016-06-24 | 2017-12-28 | Qualcomm Incorporated | Branch target predictor |
US10592248B2 (en) * | 2016-08-30 | 2020-03-17 | Advanced Micro Devices, Inc. | Branch target buffer compression |
CN106406823B (zh) * | 2016-10-10 | 2019-07-05 | 上海兆芯集成电路有限公司 | 分支预测器和用于操作分支预测器的方法 |
US10747539B1 (en) | 2016-11-14 | 2020-08-18 | Apple Inc. | Scan-on-fill next fetch target prediction |
US20210373896A1 (en) * | 2020-06-01 | 2021-12-02 | Advanced Micro Devices, Inc. | Merged branch target buffer entries |
US11650821B1 (en) | 2021-05-19 | 2023-05-16 | Xilinx, Inc. | Branch stall elimination in pipelined microprocessors |
US20230214222A1 (en) * | 2021-12-30 | 2023-07-06 | Arm Limited | Methods and apparatus for storing instruction information |
CN114780146B (zh) * | 2022-06-17 | 2022-08-26 | 深流微智能科技(深圳)有限公司 | 资源地址查询方法、装置、系统 |
US11915002B2 (en) * | 2022-06-24 | 2024-02-27 | Microsoft Technology Licensing, Llc | Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW345637B (en) * | 1994-02-04 | 1998-11-21 | Motorola Inc | Data processor with branch target address cache and method of operation a data processor has a BTAC storing a number of recently encountered fetch address-target address pairs. |
US5530825A (en) * | 1994-04-15 | 1996-06-25 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
JP3494736B2 (ja) * | 1995-02-27 | 2004-02-09 | 株式会社ルネサステクノロジ | 分岐先バッファを用いた分岐予測システム |
JPH10133874A (ja) * | 1996-11-01 | 1998-05-22 | Mitsubishi Electric Corp | スーパスカラプロセッサ用分岐予測機構 |
JP2004505345A (ja) * | 2000-07-21 | 2004-02-19 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 分岐ターゲットバッファを有するデータプロセッサ |
US8285976B2 (en) * | 2000-12-28 | 2012-10-09 | Micron Technology, Inc. | Method and apparatus for predicting branches using a meta predictor |
US20020194462A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line |
JP4027620B2 (ja) * | 2001-06-20 | 2007-12-26 | 富士通株式会社 | 分岐予測装置、プロセッサ、及び分岐予測方法 |
US7124287B2 (en) * | 2003-05-12 | 2006-10-17 | International Business Machines Corporation | Dynamically adaptive associativity of a branch target buffer (BTB) |
US20040250054A1 (en) * | 2003-06-09 | 2004-12-09 | Stark Jared W. | Line prediction using return prediction information |
US20050228977A1 (en) * | 2004-04-09 | 2005-10-13 | Sun Microsystems,Inc. | Branch prediction mechanism using multiple hash functions |
JP2006048132A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 分岐予測装置、分岐予測装置の制御方法、情報処理装置 |
-
2005
- 2005-03-23 US US11/089,072 patent/US20060218385A1/en not_active Abandoned
-
2006
- 2006-03-23 JP JP2008503255A patent/JP2008535063A/ja active Pending
- 2006-03-23 WO PCT/US2006/010952 patent/WO2006102635A2/en active Application Filing
- 2006-03-23 EP EP06739633A patent/EP1866748A2/en not_active Withdrawn
- 2006-03-23 CN CNA200680016497XA patent/CN101176060A/zh active Pending
- 2006-03-23 BR BRPI0614013-0A patent/BRPI0614013A2/pt not_active IP Right Cessation
- 2006-03-23 KR KR1020077024395A patent/KR20070118135A/ko not_active Application Discontinuation
-
2007
- 2007-09-18 IL IL186052A patent/IL186052A0/en unknown
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102109975A (zh) * | 2009-12-24 | 2011-06-29 | 华为技术有限公司 | 确定函数调用关系的方法、装置及系统 |
CN102109975B (zh) * | 2009-12-24 | 2015-03-11 | 华为技术有限公司 | 确定函数调用关系的方法、装置及系统 |
CN103984525A (zh) * | 2013-02-08 | 2014-08-13 | 上海芯豪微电子有限公司 | 指令处理系统及方法 |
CN103984525B (zh) * | 2013-02-08 | 2017-10-20 | 上海芯豪微电子有限公司 | 指令处理系统及方法 |
CN106847338A (zh) * | 2015-12-04 | 2017-06-13 | 三星电子株式会社 | 非易失性存储器装置、存储器系统及操作它们的方法 |
CN106847338B (zh) * | 2015-12-04 | 2021-03-02 | 三星电子株式会社 | 非易失性存储器装置、存储器系统及操作它们的方法 |
TWI768547B (zh) * | 2020-11-18 | 2022-06-21 | 瑞昱半導體股份有限公司 | 管線式電腦系統與指令處理方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20070118135A (ko) | 2007-12-13 |
BRPI0614013A2 (pt) | 2011-03-01 |
WO2006102635A2 (en) | 2006-09-28 |
US20060218385A1 (en) | 2006-09-28 |
WO2006102635A3 (en) | 2007-02-15 |
IL186052A0 (en) | 2008-02-09 |
JP2008535063A (ja) | 2008-08-28 |
EP1866748A2 (en) | 2007-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101176060A (zh) | 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器 | |
US8185725B2 (en) | Selective powering of a BHT in a processor having variable length instructions | |
JP5927616B2 (ja) | ヒステリシスを伴う次フェッチプレディクタトレーニング | |
US6550004B1 (en) | Hybrid branch predictor with improved selector table update mechanism | |
KR101081674B1 (ko) | 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법 | |
US20070266228A1 (en) | Block-based branch target address cache | |
EP2024820B1 (en) | Sliding-window, block-based branch target address cache | |
EP3166015A1 (en) | Fetch ahead branch target buffer | |
US20080040576A1 (en) | Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set | |
CN109643237A (zh) | 分支目标缓冲器压缩 | |
US10776119B2 (en) | Combined conditional branch and indirect branch target predictor | |
CN106293639B (zh) | 使用微分支目标缓冲器的高性能零气泡条件分支预测 | |
US7461243B2 (en) | Deferred branch history update scheme | |
WO2017163143A1 (en) | Speculative multi-threading trace prediction | |
US6421774B1 (en) | Static branch predictor using opcode of instruction preceding conditional branch | |
US10318303B2 (en) | Method and apparatus for augmentation and disambiguation of branch history in pipelined branch predictors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1112086 Country of ref document: HK |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080507 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1112086 Country of ref document: HK |