CN103019652B - 滑动窗口、基于区块的分支目标地址高速缓冲存储器 - Google Patents
滑动窗口、基于区块的分支目标地址高速缓冲存储器 Download PDFInfo
- Publication number
- CN103019652B CN103019652B CN201210473534.7A CN201210473534A CN103019652B CN 103019652 B CN103019652 B CN 103019652B CN 201210473534 A CN201210473534 A CN 201210473534A CN 103019652 B CN103019652 B CN 103019652B
- Authority
- CN
- China
- Prior art keywords
- instruction
- block
- branch
- btac
- entry
- 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
Links
- 238000011156 evaluation Methods 0.000 claims description 12
- 238000000034 method Methods 0.000 claims description 11
- 230000013011 mating Effects 0.000 claims 2
- 230000000875 corresponding effect Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- 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
-
- 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/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
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)
Abstract
一种滑动窗口、基于区块的分支目标地址高速缓冲存储器(BTAC)包括多个条目,每一条目与含有至少一个已被评估为经采取的分支指令的指令区块相关联,且具有与所述区块中的第一指令的地址相关联的标签。所述区块每一者对应于从例如I-高速缓冲存储器等存储器获取的指令群组。在分支指令包含在两个或两个以上获取群组中处,其也包含在与BTAC条目相关联的两个或两个以上指令区块中。所述滑动窗口、基于区块的BTAC通过存储与不同的指令区块(其每一者含有所述经采取的分支指令中的至少一者)相关联的BTAC条目而允许存储处于同一指令区块中的两个或两个以上经采取的分支指令的分支目标地址(BTA),而不需要在每一BTAC条目中提供多个BTA存储空间。
Description
分案申请的相关信息
本案是一件分案申请。本案的母案是国际申请号为PCT/US2007/070111、申请日为2007年5月31日、PCT申请进入中国国家阶段后申请号为200780020445.4、发明名称为“滑动窗口、基于区块的分支目标地址高速缓冲存储器”的发明专利申请案。
技术领域
本发明大体上涉及处理器领域,且具体来说,涉及具有滑动窗口组织的基于区块的分支目标地址高速缓冲存储器。
背景技术
微处理器在很多应用中执行计算任务。改进处理器性能是永恒的设计目标,通过经由增强的软件来实现更快的操作和/或增加的功能性,来推动产品改进。在许多嵌入式应用中,例如便携式电子装置,节省功率并减少芯片大小在处理器设计和建构中也是重要的目标。
大多数现代处理器采用管线化架构,其中连续指令(其每一者具有多个执行步骤)在执行中是重叠的。这种开发连续指令流中的指令之间的并行度的能力对改进的处理器性能作出显著贡献。在理想条件下且在于一个循环中完成每一管级的处理器中,在填充管线的短暂初始过程之后,指令可在每一循环完成执行。
实际上从没实现此类理想条件,这归因于多种因素,其中包含指令之间的数据相依性(数据冒险)、例如分支的控制相依性(控制冒险)、处理器资源分配冲突(结构冒险)、中断、高速缓冲存储器未命中等。处理器设计的主要目标是避免这些冒险,且保持管线“充满”。
所有现实的程序都包含分支指令,其可包括无条件或条件分支指令。分支指令的实际分支行为常常是未知的,直到指令被评估为在管线深处。这产生使管线停止的控制冒险,因为处理器不知道在分支指令后获取哪些指令,且将直到分支指令评估之后才知道。大多数现代处理器采用各种形式的分支预测,借此在管线中较早地预测条件分支指令的分支行为和分支目标地址,且处理器基于分支预测以推测方式获取并执行指令,因此保持管线充满。如果预测是正确的,那么性能得以最大化,且功率消耗得以最小化。当实际评估分支指令时,如果分支被错误预测,那么必须从管线中清洗以推测方式获取的指令,且从正确的分支目标地址获取新的指令。经错误预测的分支不利地影响处理器性能和功率消耗。
分支预测存在两个组成部分:条件评估和分支目标地址。条件评估(当然,仅与条件分支指令相关)是二进制决策:分支被采取(导致执行跳到不同的代码序列),或不被采取(在此情况下,处理器执行紧接在条件分支指令之后的下一顺序指令)。分支目标地址(BTA)是控制针对评估为采取的无条件分支指令或条件分支指令而分支到的地址。某些共同分支指令将BTA包含在指令操作码中,或包含借其可容易地计算BTA的偏移。对于其它分支指令,不计算BTA,直到其处于管线深处,且因此必须被预测。
一种已知的BTA预测技术利用分支目标地址高速缓冲存储器(BTAC)。现有技术中已知的BTAC是由分支指令地址(BIA)标引的完全联合的高速缓冲存储器,其中每一数据位置(或高速缓冲存储器“线”)含有单个BTA。当分支指令在管线中评估为被采取且其实际BTA经计算时,(例如,在写回管级期间)将BIA和BTA写入到BTAC。当获取新的指令时,与指令高速缓冲存储器(或I-高速缓冲存储器)并行地存取BTAC。如果指令地址在BTAC中命中,那么处理器知道所述指令是分支指令(这是在解码从I-高速缓冲存储器获取的指令之前),且提供经预测的BTA,其为分支指令的先前执行的实际BTA。如果分支预测电路预测分支将被采取,那么指令获取开始于经预测的BTA。如果分支被预测为不被采取,那么指令获取顺序地继续下去。
应注意,术语BTAC也用于此项技术中以表示将饱和计数器与BIA相关联的高速缓冲存储器,因此仅提供条件评估预测(即,采取或不采取)。这不是本文所使用的此术语的含义。
高性能处理器可一次从I-高速缓冲存储器获取一个以上指令。举例来说,可包括例如四个指令的整个高速缓冲存储器线可被获取到指令获取缓冲器中,所述指令获取缓冲器顺序地将所述指令馈送到管线中。转让给本申请案的受让人并以引用的方式并入本文的第11/089,072号专利申请案揭示了BTAC在每一高速缓冲存储器线中存储两个或两个以上BTA,且标引分支预测偏移表(BPOT)以确定哪一BTA被采取为BTAC命中的经预测的BTA。BPOT避免了成本较高的具有多个读取端口的BTAC硬件结构,所述多个读取端口原本是并行地存取多个BTA所必需的。
转让给本申请案的受让人并以引用的方式并入本文的第_号专利申请案“基于区块的分支目标地址高速缓冲存储器”揭示了基于区块的BTAC存储多个条目,每一条目与一指令区块相关联,其中所述区块中的指令中的一者或一者以上是已评估为被采取的分支指令。所述BTAC条目包含相关联的区块内的哪个指令是经采取的分支指令的指示符,以及经采取的分支的BTA。BTAC条目由区块中的所有指令共同的地址位标引(即,通过截断选择区块内的指令的较低阶地址位)。因此区块大小和相对的区块边界两者都是固定的。
在每一区块仅包含一个经采取的分支指令的情况下,基于区块的BTAC运作良好。当区块内的两个或两个以上分支指令评估为被采取时,必须作出决策以存储一个分支指令的BTA而不存储另一分支指令的BTA,从而在另一分支评估为被采取时导致性能和功率降级。每一BTAC条目中可存储多个BTA;然而,在指令区块不包含与BTAC条目中的BTA存储位置一样多的经采取的分支指令的正常情况下,这浪费了宝贵的硅区域。
发明内容
根据本文所揭示的一个或一个以上实施例,滑动窗口、基于区块的BTAC包括多个条目,每一条目与含有至少一个已被评估为经采取的分支指令的指令的区块相关联,且由所述区块中的第一指令的地址标引。区块大小是固定的(且对应于指令获取群组的大小),但区块边界不是固定的,且指令区块可重叠。因此分支指令可包含在由BTAC条目表示的两个或两个以上指令区块中。在某些情况下,这允许所述滑动窗口、基于区块的BTAC通过界定新区块并创建相关联的BTAC条目而存储处于单个指令区块中的两个或两个以上经采取的分支指令的BTA,通过增加每一BTAC条目的BTA存储容量而不会浪费存储器。
一个实施例涉及一种在处理器中预测分支指令的方法。将与包含至少一个已被评估为经采取的分支指令的两个或两个以上指令的区块相关联的条目存储在分支目标地址高速缓冲存储器(BTAC)中,BTAC条目具有与所述区块中的第一指令的地址相关联的标签。在获取指令时,存取BTAC以确定一个或一个以上区块中的指令是否为条件分支指令。
另一实施例涉及一种处理器。所述处理器包含存储多个条目的分支目标地址高速缓冲存储器(BTAC),每一条目与含有至少一个已被评估为经采取的分支指令的两个或两个以上指令的区块相关联,且所述BTAC条目具有与所述区块中的第一指令的地址相关联的标签。所述处理器还包含指令执行管线,其经操作以在获取指令群组时使用指令地址来标引BTAC。
附图说明
图1是处理器的一个实施例的功能方框图。
图2是分支目标地址高速缓冲存储器和伴随电路的一个实施例的功能方框图。
具体实施方式
图1描绘处理器10的功能方框图。处理器10根据控制逻辑11执行指令执行管线12中的指令。在某些实施例中,管线12可为具有多个并行管线的超标量设计。管线12包含组织成管级的各种寄存器或锁存器16,以及一个或一个以上算术逻辑单元(ALU)18。通用寄存器(GPR)堆20提供构成存储器层级的顶部的寄存器。
管线12使用由指令侧翻译后备缓冲器(ITLB)24管理的存储器地址翻译和许可来从指令高速缓冲存储器(I-高速缓冲存储器)22获取指令。管线12并行地将指令地址提供到滑动窗口、基于区块的分支目标地址高速缓冲存储器(BTAC)25。如果指令地址在BTAC25中命中,那么滑动窗口、基于区块的BTAC25将分支目标地址(BTA)提供到I-高速缓冲存储器22,以立即开始从经预测的BTA获取指令。下文更全面地描述滑动窗口、基于区块的BTAC25的结构和操作。
使用由主翻译后备缓冲器(TLB)28管理的存储器地址翻译和许可来从数据高速缓冲存储器(D-高速缓冲存储器)26存取数据。在各种实施例中,ITLB可包括TLB的一部分的副本。或者,ITLB和TLB可集成。类似地,在处理器10的各种实施例中,I-高速缓冲存储器22和D-高速缓冲存储器26可集成或统一。I-高速缓冲存储器22和/或D-高速缓冲存储器26中的未命中导致在存储器接口30的控制下存取主(芯片外)存储器32。
处理器10可包含输入/输出(I/O)接口34,从而控制对各种外围装置36、38的存取。所属领域的技术人员将认识到,处理器10的许多变化形式都是可能的。举例来说,处理器10可包含用于I和D高速缓冲存储器22、26中任一者或两者的二级(L2)高速缓冲存储器。另外,可从特定实施例中省略处理器10中描绘的功能区块中的一者或一者以上。
分支指令在大多数代码中都是共同的。根据某些估计,可能五个指令中便有一个指令是分支。因此,早期分支检测、分支评估预测(针对条件分支指令)以及从经预测的BTA中获取指令对于处理器性能来说可为关键的。大多数现代处理器包含在每一高速缓冲存储器线中存储多个指令的I-高速缓冲存储器22。从“获取群组”中的I高速缓冲存储器获取指令。获取群组可包括高速缓冲存储器线的一部分、整个高速缓冲存储器线,或一个以上高速缓冲存储器线。
作为一个实例,假定处理器的获取群组匹配其四个指令的I-高速缓冲存储器22线的大小,但此实例仅是说明性的且没有限制。如果一个以上指令地址在BTAC中命中,那么存取共同已知的BTAC来并行地搜索所有四个指令地址将需要四个地址比较输入端口、四个BTA输出端口,以及一个多路复用器和控制逻辑来选择BTA。
根据一个或一个以上实施例,滑动窗口、基于区块的BTAC25包括多个条目,每一条目存储与指令区块中的经采取的分支指令相关联的分支信息。所述指令区块对应于获取群组,且BTAC条目包含与区块中的第一指令的地址相关联的标签。所述标签还用于从I-高速缓冲存储器获取所述获取群组。在某些实施例中,所述标签可为获取群组中的第一指令。如本文中所使用,术语“指令区块”和“获取群组”是同义的。每一BTAC条目指示以下事实:区块中的至少一个指令是已评估为被采取的分支指令(由BTAC25中的命中指示),且包含区块中的哪个指令是经采取的分支的指示符以及其BTA。
图2描绘滑动窗口、基于区块的BTAC25、I-高速缓冲存储器22、管线12和分支预测逻辑电路15(其可例如包括控制逻辑11的一部分)的功能方框图。在此实例中,指令A-L驻存在I-高速缓冲存储器22中的三条线中。为解释清晰起见,此实例中的处理器获取群组为高速缓冲存储器线,但这不是对本发明的限制。代码段的指令和对应区块200A-200C列示在电路图的左侧。应注意,虽然按次序标记区块,但不应解释为以区块被标记的次序来获取它们。更可能的是,由于示范性代码段的分支性质,获取区块的次序将为区块200A、接下来是区块200C,且然后是区块200B。
图2的滑动窗口、基于区块的BTAC25中的每一条目包括三个组成部分:标签字段,其包括相关联的指令区块中的第一指令(其也是用于存取I-高速缓冲存储器的指令)的地址;分支指示符,其描绘区块内的哪个指令是经采取的分支;以及当分支指令最后评估为被采取时,所述分支指令的实际BTA。
在图2的实例中,获取并执行包括指令A、B、C和D的I-高速缓冲存储器的第一线(或获取群组)。其中,指令B和C都是分支指令。指令B经执行,被评估为经采取,且计算分支目标地址BTAB。针对指令区块ABCD创建BTAC条目。BTAC条目(图2中所描绘的第一条目)具有与指令A的地址相关联的标签、区块中的第二指令是经采取的分支的指示符(地址01)以及BTAB。在另一实施例中,分支指示符可包括哪个指令是经采取的分支的经解码指示,例如0100。
在此实例中,指令B导致到达代码的另一段中的程序的分支(其细节与本论述无关)。在完成执行时,另一代码分支返回到指令C,其在执行时评估为被采取且具有目标BTAC。在通常已知的具有固定指令区块边界的基于区块的BTAC中,BTAC必须取代BTAC条目中的BTAB,或者保留BTAB且丢弃BTAC,因为指令C将固定地与区块200A相关联。
然而,通过利用滑动窗口、基于区块的BTAC25的流动的指令区块边界,界定了新的指令区块,其对应于在从程序返回到指令C时从I-高速缓冲存储器获取的获取群组。新的区块包括指令C、D、E和F,且因此部分与指令区块ABCD重叠。在滑动窗口、基于区块的BTAC25中创建对应的BTAC条目。新BTAC条目(图2中所描绘的第二条目)的标签与区块中的第一指令(也是用于存取I-高速缓冲存储器的指令)——指令C的地址相关联。分支指示符具有值00(区块中的第一指令的地址),其指示指令C是区块CDEF中的经采取的分支指令。最终,与区块CDEF相关联的BTAC条目包含BTAC(分支指令C的目标地址)。以此方式,滑动窗口、基于区块的BTAC25可存储用于区块ABCD中的经采取的分支指令两者的BTA,而不需要每一BTAC条目包含用于两个或两个以上BTA的存储空间。
此外,滑动窗口、基于区块的BTAC25中的第二条目将分支指令C的行为联系到在其从I-高速缓冲存储器获取之前采取的代码路径。也就是说,因为当所述代码在从程序返回时被分支到指令C时,分支指令C被评估为经采取,所以从所述程序到指令C的下一返回将可能也被评估为经采取。相反,当顺序地执行指令C时(即,如果分支指令B被评估为未采取,且不执行介入的程序),其可被评估为未采取。
第三BTAC条目对应于包括I、J、K和L的指令区块,从而对应于以指令I开始的获取群组。第三BTAC条目的标签与区块中的第一指令的地址相关联,所述地址是在获取所述获取群组IJKL的过程中存取I-高速缓冲存储器所用的地址。在此群组中,指令J和L是分支指令。在此实例中,指令J被评估为经采取,分支指示符寻址区块中的第二指令,且指令J的BTAJ存储在BTAC条目中。
当然,图2中所描绘的区块组织和BTAC条目仅是代表性的,且本发明不限于此实施方案。具体来说,获取群组不需要与I-高速缓冲存储器线的大小对准。一般来说,获取群组可在I-高速缓冲存储器线内的任何地方开始,例如在分支指令分支到目标的情况下,所述获取群组可在I-高速缓冲存储器线中的任何地方开始。对应的滑动窗口、基于区块的BTAC25条目的标签将与获取群组中的第一指令的地址相关联。因此,当再次从I-高速缓冲存储器获取同一获取群组时,对滑动窗口、基于区块的BTAC25的同时存取将检索指示指令区块内先前被评估为经采取的分支指令的条目。
管线12中的解码/获取逻辑13经配置以产生用于从I-高速缓冲存储器22获取下一指令获取群组的指令地址。在操作中,指令地址同时比较于滑动窗口、基于区块的BTAC25的标签字段。如果指令地址匹配BTAC25中的标签,那么将命中指示和对应的分支指示符提供到解码/获取逻辑13,以指示区块中的哪个指令是经采取的分支指令。还将指示符提供到分支预测逻辑15。同时,将对应条目的BTA提供到I-高速缓冲存储器22,以允许立即以推测方式从BTA获取指令,以在所述分支被预测为经采取的情况下保持管线充满。
在解码逻辑13中解码指令。当检测到分支指令时(无论获取群组地址在滑动窗口、基于区块的BTAC25中是否命中),将获取群组信息保留在管线12中。此信息可例如包括从分支指令地址(BIA)到获取群组中的第一指令的地址的负偏移。针对分支指令被评估为经采取的可能性而保留此信息,从而允许将其BTA存储在新BTAC条目中,所述新BTAC条目具有获取群组中的第一指令的地址(即,存取I-高速缓冲存储器所用的地址)作为标签。
在管线12中的执行级的逻辑14中评估条件分支指令。EXE逻辑14额外计算并提供评估为被采取的无条件分支指令和条件分支指令两者的BTA。如果经预测分支评估是不正确的且/或经高速缓冲存储的BTA不匹配计算出的BTA,那么管线12必须执行错误预测分支恢复,其可包含从管线中清洗推测性指令、重新分配存储以及计算资源等。
由EXE逻辑14将实际的分支评估提供到分支预测逻辑15,以更新关于实际的分支行为的预测逻辑。分支预测逻辑15更新其预测表(例如,分支历史寄存器、分支预测表、饱和计数器等),且额外更新滑动窗口、基于区块的BTAC25。对于现有的BTAC条目,这可包括如果计算出不同的实际BTA便更新经高速缓冲存储的BTA,或可包括如果对应区块中的不同分支指令评估为被采取且作出取代现有的经高速缓冲存储的BTA的决策,便更新分支指示符和BTA两者。
如果分支指令评估为被采取且获取群组信息指示群组获取地址对于滑动窗口、基于区块的BTAC25中的任何标签是唯一的,那么分支预测逻辑15便创建新的BTAC条目。新的BTAC条目对应于以其中获取所述分支指令的获取群组的第一指令开始的指令区块,且因此新BTAC条目的标签与第一指令的地址相关联。以此方式,分支指令可包含于在滑动窗口、基于区块的BTAC25中具有对应条目的两个或两个以上指令区块中。此特征的一个显著优点在于:第一区块中的第一分支指令的BTA可存储在第一BTAC条目中,且处于第一区块中但由于单独存取I-高速缓冲存储器而同样是第二获取群组的一部分的第二分支指令的BTA可存储在第二BTAC条目(界定第二指令区块)中。因此,滑动窗口、基于区块的BTAC25可存储两个BTA,通过在每一BTAC条目中提供用于多个BTA的存储器而不会浪费宝贵的硅区域。
如本文所使用,一般来说,分支指令可指代条件或无条件分支指令。如本文所使用,“经采取的分支”、“经采取的分支指令”或“已被评估为经采取的分支指令”指代已被评估为将顺序的指令执行流转向到非顺序的地址(即,与不被采取相反的被采取)的无条件分支指令或条件分支指令。
虽然已在本文相对于本发明的特定特征、方面和实施例描述了本发明,但将明白,在本发明的广义范围内,许多变化形式、修改和其它实施例都是可能的,且因此所有变化形式、修改和实施例将被视为处于本发明的范围内。因此,本发明实施例在所有方面被解释为说明性的,而不是限制性的,且希望处于所附权利要求书的含义和等效范围内的所有修改都包含在其中。
Claims (6)
1.一种预测包含在指令高速缓冲存储器I-cache的指令线中的分支指令的方法,其包括:
仅当将有一分支指令评估为被采取时,才将第一分支目标地址高速缓冲存储器(BTAC)条目存储在BTAC中,其中所述分支指令和第二分支指令位于第一指令区块中,所述第一指令区块存储在所述I-cache的线中;
仅当将所述第二分支指令评估为被采取时,才将第二BTAC条目存储在所述BTAC中,其中具有所述第二分支指令的第二指令区块存储在所述I-cache的一个或多个线中且与所述第一指令区块重叠;
其中所述第一BTAC条目包括第一标签字段,所述第一标签字段具有所述第一指令区块中的第一指令的全指令地址,且所述第二BTAC条目包括第二标签字段,所述第二标签字段具有存储于所述I-cache线中的任意全指令地址的所述第二指令区块的全指令地址;
从始于所述第二指令区块的所述全指令地址的所述I-cache中获取指令群组,将所述全指令地址与BTAC条目的标签字段进行比较以确定与所述第二标签字段的匹配;以及
一旦确定与所述第二标签字段的匹配,就使用所述第二BTAC条目中的指示符以确定所述第二指令区块中的哪一个指令是所述第二经采取的分支指令;并且,从存储在所述第二BTAC条目中的所述分支目标地址中获取指令。
2.根据权利要求1所述的方法,其进一步包括:一旦获取指令区块,就存取所述BTAC以确定对应的指令区块中的指令是否是经采取的指令。
3.一种在处理器中预测分支指令的方法,其包括:
在分支目标地址高速缓冲存储器(BTAC)中存储第一BTAC条目和第二BTAC条目,所述第一BTAC条目与具有两个或更多个指令的第一区块相关联,所述第一区块具有存储在指令高速缓冲存储器I-cache的线中的第一和第二经采取分支指令,所述第二BTAC条目与具有两个或更多个指令的第二区块相关联,所述第二区块与所述第一区块重叠且包括所述第二经采取分支指令,每一BTAC条目都具有标签字段,所述标签字段包括对应区块中的始于I-cache线中的任意全指令地址的第一指令的全指令地址;
一旦获取指令群组,就存取所述BTAC以确定对应的指令区块中的指令是否是经采取的指令;以及
其中每一BTAC条目包括一个指示符,用于指示相关联指令群组中的哪一个指令是经采取的指令,且其中每一BTAC条目包括相关联指令群组中经采取的分支指令的分支目标地址BTA。
4.根据权利要求3所述的方法,其进一步包括:
确定与所述第二BTAC条目相关联的分支目标地址BTA不同于存储在现有的第二BTAC条目的BTA;
更新现有的第二BTAC条目。
5.根据权利要求3所述的方法,其进一步包括:
确定在所述获取的指令群组中检测的分支指令不是经采取的分支指令;以及
一旦确定所述分支指令被评估为经采取,就在所述BTAC中存储新的条目,其中所述BTAC中的新条目基于当所述分支指令被检测时保存的获取群组信息。
6.根据权利要求5所述的方法,其中所述获取群组信息包括从所述分支指令地址到所述获取的指令群组中的所述第一指令的所述地址的负偏移。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/422,186 | 2006-06-05 | ||
US11/422,186 US7827392B2 (en) | 2006-06-05 | 2006-06-05 | Sliding-window, block-based branch target address cache |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800204454A Division CN101460922B (zh) | 2006-06-05 | 2007-05-31 | 滑动窗口、基于区块的分支目标地址高速缓冲存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103019652A CN103019652A (zh) | 2013-04-03 |
CN103019652B true CN103019652B (zh) | 2015-04-29 |
Family
ID=38654617
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210473534.7A Expired - Fee Related CN103019652B (zh) | 2006-06-05 | 2007-05-31 | 滑动窗口、基于区块的分支目标地址高速缓冲存储器 |
CN2007800204454A Expired - Fee Related CN101460922B (zh) | 2006-06-05 | 2007-05-31 | 滑动窗口、基于区块的分支目标地址高速缓冲存储器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800204454A Expired - Fee Related CN101460922B (zh) | 2006-06-05 | 2007-05-31 | 滑动窗口、基于区块的分支目标地址高速缓冲存储器 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7827392B2 (zh) |
EP (1) | EP2024820B1 (zh) |
JP (2) | JP5231403B2 (zh) |
KR (1) | KR101016541B1 (zh) |
CN (2) | CN103019652B (zh) |
AT (1) | ATE535862T1 (zh) |
WO (1) | WO2007143508A2 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7827392B2 (en) * | 2006-06-05 | 2010-11-02 | Qualcomm Incorporated | Sliding-window, block-based branch target address cache |
US8407187B2 (en) | 2010-06-16 | 2013-03-26 | Microsoft Corporation | Validating files using a sliding window to access and correlate records in an arbitrarily large dataset |
US9201658B2 (en) * | 2012-09-24 | 2015-12-01 | Apple Inc. | Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries |
US9639471B2 (en) | 2012-11-27 | 2017-05-02 | Nvidia Corporation | Prefetching according to attributes of access requests |
US9262328B2 (en) * | 2012-11-27 | 2016-02-16 | Nvidia Corporation | Using cache hit information to manage prefetches |
US9563562B2 (en) | 2012-11-27 | 2017-02-07 | Nvidia Corporation | Page crossing prefetches |
GB2501582B (en) | 2013-02-11 | 2014-12-24 | Imagination Tech Ltd | Speculative load issue |
US9489204B2 (en) * | 2013-03-15 | 2016-11-08 | Qualcomm Incorporated | Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process |
US10747540B2 (en) * | 2016-11-01 | 2020-08-18 | Oracle International Corporation | Hybrid lookahead branch target cache |
US20190004805A1 (en) * | 2017-06-28 | 2019-01-03 | Qualcomm Incorporated | Multi-tagged branch prediction table |
US11915004B2 (en) * | 2021-12-20 | 2024-02-27 | Arm Limited | Control flow prediction |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530825A (en) * | 1994-04-15 | 1996-06-25 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
US6263427B1 (en) * | 1998-09-04 | 2001-07-17 | Rise Technology Company | Branch prediction mechanism |
CN1375767A (zh) * | 2001-07-03 | 2002-10-23 | 智权第一公司 | 提供分支指令与相关目标指令至指令缓冲区的装置及方法 |
CN1758214A (zh) * | 2004-10-05 | 2006-04-12 | 三星电子株式会社 | 指令高速缓存和指令翻译后备缓冲器的控制器及控制方法 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5265213A (en) * | 1990-12-10 | 1993-11-23 | Intel Corporation | Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction |
US5414822A (en) * | 1991-04-05 | 1995-05-09 | Kabushiki Kaisha Toshiba | Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness |
US5442756A (en) * | 1992-07-31 | 1995-08-15 | Intel Corporation | Branch prediction and resolution apparatus for a superscalar computer processor |
KR100310581B1 (ko) * | 1993-05-14 | 2001-12-17 | 피터 엔. 데트킨 | 분기목표버퍼의추측기록메카니즘 |
US5577217A (en) * | 1993-05-14 | 1996-11-19 | Intel Corporation | Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions |
US5574871A (en) * | 1994-01-04 | 1996-11-12 | Intel Corporation | Method and apparatus for implementing a set-associative branch target buffer |
JP3494484B2 (ja) * | 1994-10-12 | 2004-02-09 | 株式会社ルネサステクノロジ | 命令処理装置 |
JP3494736B2 (ja) * | 1995-02-27 | 2004-02-09 | 株式会社ルネサステクノロジ | 分岐先バッファを用いた分岐予測システム |
GB9521980D0 (en) * | 1995-10-26 | 1996-01-03 | Sgs Thomson Microelectronics | Branch target buffer |
US5864697A (en) * | 1996-06-28 | 1999-01-26 | Texas Instruments Incorporated | Microprocessor using combined actual and speculative branch history prediction |
US5774710A (en) * | 1996-09-19 | 1998-06-30 | Advanced Micro Devices, Inc. | Cache line branch prediction scheme that shares among sets of a set associative cache |
US5918044A (en) * | 1996-10-31 | 1999-06-29 | International Business Machines Corporation | Apparatus and method for instruction fetching using a multi-port instruction cache directory |
JPH10133874A (ja) * | 1996-11-01 | 1998-05-22 | Mitsubishi Electric Corp | スーパスカラプロセッサ用分岐予測機構 |
DE69727773T2 (de) * | 1996-12-10 | 2004-12-30 | Texas Instruments Inc., Dallas | Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor |
US6119222A (en) * | 1996-12-23 | 2000-09-12 | Texas Instruments Incorporated | Combined branch prediction and cache prefetch in a microprocessor |
US6108775A (en) * | 1996-12-30 | 2000-08-22 | Texas Instruments Incorporated | Dynamically loadable pattern history tables in a multi-task microprocessor |
TW357318B (en) * | 1997-03-18 | 1999-05-01 | Ind Tech Res Inst | Branching forecast and reading device for unspecified command length extra-purity pipeline processor |
US6601161B2 (en) * | 1998-12-30 | 2003-07-29 | Intel Corporation | Method and system for branch target prediction using path information |
EP1150213B1 (en) * | 2000-04-28 | 2012-01-25 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Data processing system and method |
WO2002008895A1 (en) * | 2000-07-21 | 2002-01-31 | Koninklijke Philips Electronics N.V. | Data processor with branch target buffer |
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 |
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 |
US6877083B2 (en) * | 2001-10-16 | 2005-04-05 | International Business Machines Corporation | Address mapping mechanism for behavioral memory enablement within a data processing system |
US6675279B2 (en) * | 2001-10-16 | 2004-01-06 | International Business Machines Corporation | Behavioral memory enabled fetch prediction mechanism within a data processing system |
US6792521B2 (en) * | 2001-10-16 | 2004-09-14 | International Business Machines Corporation | Behavioral memory mechanism for a data processing system |
JP3738842B2 (ja) * | 2002-06-04 | 2006-01-25 | 富士通株式会社 | 遅延分岐機能を備えた情報処理装置 |
US7266676B2 (en) * | 2003-03-21 | 2007-09-04 | Analog Devices, Inc. | Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays |
US7174444B2 (en) * | 2003-03-31 | 2007-02-06 | Intel Corporation | Preventing a read of a next sequential chunk in branch prediction of a subject chunk |
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 |
US7096348B2 (en) * | 2003-12-15 | 2006-08-22 | Freescale Semiconductor, Inc. | Method and apparatus for allocating entries in a branch target buffer |
JP2006048132A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 分岐予測装置、分岐予測装置の制御方法、情報処理装置 |
US7328332B2 (en) * | 2004-08-30 | 2008-02-05 | Texas Instruments Incorporated | Branch prediction and other processor improvements using FIFO for bypassing certain processor pipeline stages |
US7447882B2 (en) * | 2005-04-20 | 2008-11-04 | Arm Limited | Context switching within a data processing system having a branch prediction mechanism |
US7827392B2 (en) * | 2006-06-05 | 2010-11-02 | Qualcomm Incorporated | Sliding-window, block-based branch target address cache |
US20080040576A1 (en) * | 2006-08-09 | 2008-02-14 | Brian Michael Stempel | Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set |
US7707396B2 (en) * | 2006-11-17 | 2010-04-27 | International Business Machines Corporation | Data processing system, processor and method of data processing having improved branch target address cache |
US7937573B2 (en) * | 2008-02-29 | 2011-05-03 | Freescale Semiconductor, Inc. | Metric for selective branch target buffer (BTB) allocation |
-
2006
- 2006-06-05 US US11/422,186 patent/US7827392B2/en active Active
-
2007
- 2007-05-31 AT AT07797948T patent/ATE535862T1/de active
- 2007-05-31 CN CN201210473534.7A patent/CN103019652B/zh not_active Expired - Fee Related
- 2007-05-31 KR KR1020097000082A patent/KR101016541B1/ko not_active IP Right Cessation
- 2007-05-31 JP JP2009514477A patent/JP5231403B2/ja not_active Expired - Fee Related
- 2007-05-31 EP EP07797948A patent/EP2024820B1/en not_active Not-in-force
- 2007-05-31 WO PCT/US2007/070111 patent/WO2007143508A2/en active Application Filing
- 2007-05-31 CN CN2007800204454A patent/CN101460922B/zh not_active Expired - Fee Related
-
2012
- 2012-12-07 JP JP2012268455A patent/JP5734945B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530825A (en) * | 1994-04-15 | 1996-06-25 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
US6263427B1 (en) * | 1998-09-04 | 2001-07-17 | Rise Technology Company | Branch prediction mechanism |
CN1375767A (zh) * | 2001-07-03 | 2002-10-23 | 智权第一公司 | 提供分支指令与相关目标指令至指令缓冲区的装置及方法 |
CN1758214A (zh) * | 2004-10-05 | 2006-04-12 | 三星电子株式会社 | 指令高速缓存和指令翻译后备缓冲器的控制器及控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US20070283134A1 (en) | 2007-12-06 |
EP2024820A2 (en) | 2009-02-18 |
CN103019652A (zh) | 2013-04-03 |
KR20090017687A (ko) | 2009-02-18 |
EP2024820B1 (en) | 2011-11-30 |
JP2009540439A (ja) | 2009-11-19 |
CN101460922A (zh) | 2009-06-17 |
WO2007143508A3 (en) | 2008-01-31 |
CN101460922B (zh) | 2013-01-02 |
ATE535862T1 (de) | 2011-12-15 |
JP5231403B2 (ja) | 2013-07-10 |
JP2013080497A (ja) | 2013-05-02 |
JP5734945B2 (ja) | 2015-06-17 |
WO2007143508A2 (en) | 2007-12-13 |
KR101016541B1 (ko) | 2011-02-24 |
US7827392B2 (en) | 2010-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103019652B (zh) | 滑动窗口、基于区块的分支目标地址高速缓冲存储器 | |
US10409605B2 (en) | System and method for using a branch mis-prediction buffer | |
JP5558814B2 (ja) | プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置 | |
CN101438237A (zh) | 基于区块的分支目标地址高速缓冲存储器 | |
CN107992331B (zh) | 处理器及操作处理器的方法 | |
CA2297402A1 (en) | Method and apparatus for reducing latency in set-associative caches using set prediction | |
JPH08234980A (ja) | 分岐先バッファを用いた分岐予測システム | |
US10338923B2 (en) | Branch prediction path wrong guess instruction | |
CN101681258A (zh) | 使用可变长度指令集处理器中分支目标地址缓存的分支预测 | |
KR100276138B1 (ko) | 브랜치 패턴 필드를 가진 브랜치 이력 테이블을 구비한 디지탈프로세서 | |
JP7046087B2 (ja) | キャッシュ・ミス・スレッド・バランシング | |
US20090132766A1 (en) | Systems and methods for lookahead instruction fetching for processors | |
EP0912927A1 (en) | A load/store unit with multiple pointers for completing store and load-miss instructions | |
EP0912930B1 (en) | A functional unit with a pointer for mispredicted branch resolution, and a superscalar microprocessor employing the same | |
EP0912928A1 (en) | A data address prediction structure utilizing a stride prediction method | |
González et al. | The Instruction Fetch Unit | |
WO1998020416A1 (en) | A stride-based data address prediction structure | |
KR19980084634A (ko) | 분기 예측 장치 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150429 Termination date: 20210531 |
|
CF01 | Termination of patent right due to non-payment of annual fee |