CN101176060A - 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器 - Google Patents

每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器 Download PDF

Info

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
Application number
CNA200680016497XA
Other languages
English (en)
Inventor
罗德尼·韦恩·史密斯
詹姆斯·诺里斯·迪芬德尔费尔
杰弗里·托德·布里奇斯
托马斯·安德鲁·萨托里乌斯
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101176060A publication Critical patent/CN101176060A/zh
Pending 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative 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所述的处理器,其中在为所述分支预测偏移表加索引之前,将所述分支历史寄存器的内容与所述截短指令地址组合在一起。
CNA200680016497XA 2005-03-23 2006-03-23 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器 Pending CN101176060A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 分岐予測装置、分岐予測装置の制御方法、情報処理装置

Cited By (7)

* Cited by examiner, † Cited by third party
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