CN101164043A - 前视分支目标地址高速缓存 - Google Patents
前视分支目标地址高速缓存 Download PDFInfo
- Publication number
- CN101164043A CN101164043A CNA2006800138547A CN200680013854A CN101164043A CN 101164043 A CN101164043 A CN 101164043A CN A2006800138547 A CNA2006800138547 A CN A2006800138547A CN 200680013854 A CN200680013854 A CN 200680013854A CN 101164043 A CN101164043 A CN 101164043A
- Authority
- CN
- China
- Prior art keywords
- instruction
- address
- btac
- extraction
- branch
- 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
- 238000012545 processing Methods 0.000 claims abstract description 51
- 238000000605 extraction Methods 0.000 claims description 123
- 239000000284 extract Substances 0.000 claims description 118
- 238000000034 method Methods 0.000 claims description 50
- 230000004087 circulation Effects 0.000 claims description 49
- 230000008569 process Effects 0.000 claims description 19
- 230000003247 decreasing effect Effects 0.000 claims description 15
- 230000007423 decrease Effects 0.000 claims description 6
- 230000000875 corresponding effect Effects 0.000 description 36
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000002386 leaching Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- 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
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- 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
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种管线处理器包括指令高速缓冲存储器(iCache)、分支目标地址高速缓冲存储器(BTAC)和处理级,所述处理级包含用于从所述iCache和所述BTAC进行提取的级。为了补偿从所述BTAC提取分支目标地址所需的循环的数目,所述从所述BTAC提取比从所述iCache提取分支指令提前一量,所述量与从所述BTAC提取所需的所述循环相关。所揭示的实例以实质上对应于比BTAC提取所需循环少一的量递减所述BTAC的写入地址或递增所述BTAC的提取地址。
Description
技术领域
本发明的教示涉及用于尤其通过相对于提取经高速缓存的分支指令而预先提取经高速缓存的目标地址来高速缓存分支指令目标地址的技术,且涉及使用此类技术的处理器。
背景技术
现代微处理器和其它可编程处理器电路通常依赖于管线处理结构来改进执行速度。管线处理器包含多个处理级,以用于当每一指令移动通过管线时依次处理所述指令。当一个级正处理一指令时,沿着管线的其它级同时处理其它指令。
管线的每一级执行每一程序指令的整个处理过程中所必要的不同功能。尽管次序和/或功能可能略有变化,但典型的简单管线包含指令提取级、指令解码级、存储器存取或读出级、指令执行级和结果回写级。较先进的处理器设计将这些级的一些或全部分解为若干单独的级,以用于执行这些功能的子部分。超标量设计将功能进一步分解和/或提供复制功能,以在具有类似深度的并行管线中执行操作。
在操作中,指令提取级在当前执行的程序中提取下一指令。通常,下一指令是处于下一连续存储器地址位置处的指令。一些指令的处理可能导致分支操作,在此情况下,下一指令处于由解码和执行期间决定采取目标分支进行后续处理而产生的非连续目标地址处。
存在两种常见分支指令,有条件和无条件的。处理器依据在处理指令时是否满足分支的条件来决定是否采取条件分支指令。每当处理器执行指令时,处理器采取无条件分支。通过基于特定分支指令进行计算来确定分支指令(即,指令的目标地址)之后接下来待处理的指令。尤其对于条件分支,直到处理器确定满足分支条件才可能确定地了解分支结果的目标地址。
对于给定的提取操作,提取级初始试图从指令高速缓冲存储器(iCache)提取寻址的指令。如果指令尚未包含在iCache中,那么提取级从较高级存储器(例如,二级指令高速缓冲存储器或系统的主存储器)中将其提取。如果从较高级存储器中提取,那么指令加载到iCache中。
提取级将每一提取的指令提供到指令解码级。指令解码级的逻辑对接收到的指令字节进行解码并将结果供应到管线的下一级,即供应到简单标量管线中的读出级。如果指令是分支指令,那么解码处理的一部分可涉及计算分支目标地址。读出级的逻辑存取存储器或其它资源以获得操作数数据用于根据指令进行处理。将指令和操作数数据传递到执行级,执行级对检索到的数据执行特定指令并产生结果。典型的执行级可实施算术逻辑单元(ALU)。第五级将执行结果回写到寄存器或到存储器。
在此类操作中,执行级将不时地接收和处理分支指令中的一者。当处理分支指令时,执行级的逻辑确定是否应采取分支,例如是否满足条件分支操作的条件。如果采取,那么结果的一部分是目标地址(通常由指令解码级计算出),提取级将利用所述目标地址作为指令地址以用于提取下一指令来通过管线进行处理。为了增强性能。目标地址可以类似于指令的高速缓存处理的方式而被高速缓存。举例来说,对于采取的分支,计算出的目标地址可通常与产生目标地址的分支指令的地址相关联而存储在分支目标地址高速缓冲存储器(BTAC)中。
对于每一提取操作,提取级使用新的指令地址并试图用所述提取地址来存取iCache和BTAC两者。假定指令已加载到iCache中,iCache将把所寻址的指令供应到提取级逻辑。如果地址对应于分支指令且先前采取分支,那么BTAC中将存在“命中(hit)”,因为BTAC将存储有针对所述指令地址的目标地址,且BTAC将把高速缓存的目标地址供应到提取逻辑。如果当前提取地址不对应于分支指令或分支尚未被采取,那么不存在命中,因为BTAC将不存储有针对当前提取指令地址的目标地址。
当存在BTAC命中时,逻辑可预测分支是否有可能被再次采取。如果是,那么将目标地址应用于提取逻辑以用作下一地址(而不是下一连续地址)。因此,提取分支指令之后的下一提取操作使用从BTAC检索到的高速缓存的目标地址来提取对应于目标地址的指令。
随着处理器速度增加,给定级具有较少时间来执行其功能。为了维持或进一步改进性能,将每一级细分。每一新级在给定循环期间执行较少工作,但存在更多以较高时钟速率同时操作的级。因为存储器和处理器已改进,所以指令的长度和指令地址的长度增加。在许多管线处理器中,所述提取操作被分解并分布在两个或两个以上级之中,且从iCache提取指令以及从BTAC提取目标地址花费两个或两个以上处理循环。因此,可能花费许多循环来确定BTAC提取过程中是否存在命中,在此期间执行iCache提取的级已继续前进并开始对一个或一个以上后续iCache提取进行提取操作。在多循环提取操作中,当检测到BTAC命中时,必须放弃后续提取处理,因为下一提取操作将利用BTAC中识别的地址。所述放弃导致延迟并减少BTAC高速缓存的益处。随着BTAC提取所需的循环数目增加,性能的降级增加。因此,需要进一步改进分支目标地址高速缓存技术,尤其是因为所述改进可能帮助减少或消除在BTAC命中的情况下iCache级的不必要的处理。
发明内容
从背景论述中将了解,通常操作使用同一地址在指令提取期间同时存取指令高速缓冲存储器和分支目标地址高速缓冲存储器(BTAC)。为了进一步改进性能,BTAC提取操作提前,也就是说在从指令高速缓冲存储器提取指令之前进行提取。在所揭示的实例中,BTAC提取通过使用将来指令地址或因为目标以较早的地址值被写入到BTAC而提前于iCache提取。这些教示的各方面涉及方法和处理器两者。
第一种用于管线处理器的提取指令的此类方法包含从指令高速缓冲存储器中提取指令,和在每次提取指令期间同时存取分支目标地址高速缓冲存储器(BTAC)。BTAC存取确定BTAC是否存储分支目标地址。每次存取BTAC花费至少两个处理循环。所述方法还包含使存取操作相对于提取操作偏移预定量,以在启始分支指令的提取之前至少一个循环开始关于分支指令而存取BTAC。
在下文详细论述的各种实例中,所述偏移足以从BTAC中提取对应于分支指令的分支目标地址,以在后续指令提取过程中使用,所述后续指令提取过程在紧接着开始提取分支指令的处理循环之后的处理循环中开始。此方法的特定实例提供用于BTAC提取的地址的递增作为提取操作的一部分,或提供用于将分支目标写入到BTAC的地址的递减。后一选择不需要在提取操作本身期间实施,而是可在管线处理的稍后级的一者或一者以上中的处理期间实施或响应于所述处理而实施。
偏移的量足以实现从BTAC中提取对应于分支指令的分支目标地址,以在后续指令提取过程中使用,所述后续指令提取过程在紧接着开始提取分支指令的循环之后的处理循环中开始。在实例中,偏移量包括指令高速缓冲存储器与BTAC之间的地址差,其比每次存取BTAC所需的循环的数目少一。
另一种用于管线处理器的提取指令的方法需要开始从指令高速缓冲存储器提取第一指令并同时启始BTAC中的提取。BTAC存取是用于提取对应于第一指令之后的分支指令的目标地址。此方法还包含开始从指令高速缓冲存储器提取分支指令。开始提取分支指令之后,使用对应于分支指令的目标地址来启始从指令高速缓冲存储器提取目标指令。
根据本发明教示的处理器包括指令高速缓冲存储器、分支目标地址高速缓冲存储器和处理级。所存储的指令之一是分支指令,且分支目标地址高速缓冲存储器存储对应于所述指令的分支目标地址。处理级包含提取级和至少一个后续处理级,以用于根据提取的指令执行一个或一个以上处理功能。提取级从指令高速缓冲存储器提取指令,并从分支目标地址高速缓冲存储器提取分支目标地址。处理器还包含偏移逻辑。所述逻辑使从分支目标地址高速缓冲存储器的提取偏移在从指令高速缓冲存储器提取指令之前一量,所述量与完成每次从分支目标地址高速缓冲存储器提取所需的处理循环的数目相关。
在实例中,前视偏移量比完成每次从分支目标地址高速缓冲存储器提取所需的处理循环的数目少一。偏移逻辑可与提取级相关联(例如)以递增指令提取地址,从而允许提取级使用提前地址来从分支目标地址高速缓冲存储器进行提取。或者,偏移逻辑可使用递减的指令地址值将分支目标写入到分支目标地址高速缓冲存储器中。
示范性处理器是通常具有五个或五个以上级的管线处理器。后续处理级可包含指令解码级、读出级,和指令执行级及结果回写级。当然,这些级的每一者可分解或形成管线。并且,提取级可形成管线以便包括多个处理级。
在一个实例中,用于BTAC提取的地址提前于指令高速缓冲存储器提取中使用的地址一偏移量,所述偏移量意图补偿在命中的情况下从BTAC提取时的延迟。如果在提取期间实施,那么这需要递增提取地址。或者,当写入到高速缓冲存储器时,BTAC写入地址可提前于用于将分支指令存储在指令高速缓冲存储器中的地址适当的偏移量。由于其在写入操作时实施,但意图促使在相应的指令高速缓冲存储器提取之前进行读取或提取,所以写入操作递减用于将目标地址写入到BTAC中的地址。
以下描述内容中将部分陈述额外的目的、优点和新颖特征,且所属领域的技术人员将在阅读下文和附图后部分了解,或可通过制作或操作实例而了解。可通过实践或使用所附权利要求书中明确指出的方法、手段和组合来实现和达成本发明教示的目的和优点。
附图说明
附图仅以举例方式而并非限制方式来描绘根据本发明教示的一个或一个以上实施方案。图中,相同参考标号指代相同或相似元件。
图1是管线处理器的简单实例的功能方框图,其中从分支目标地址高速缓冲存储器的提取在从指令高速缓冲存储器的相应提取之前具有前视偏移。
图2是管线处理器的提取和解码级的简单实例的功能方框图,所述管线处理器实施两循环(或两级)提取。
图3是有助于解释图2的提取级中的循环时序的表,其中从指令高速缓冲存储器的提取与从分支目标地址高速缓冲存储器的相应提取之间不存在偏移。
图4是有助于解释图2的提取级中的循环时序的表,其中从分支目标地址高速缓冲存储器的提取与从指令高速缓冲存储器的相应提取之间存在偏移,其中所述偏移与实施目标地址提取的循环的数目或级的数目相关(例如,比所述数目少一)。
图5是管线处理器的提取和解码级的简单实例的功能方框图,所述管线处理器实施三循环(或三级)提取。
图6是有助于解释图5的提取级中的循环时序的表,其中从分支目标地址高速缓冲存储器的提取与从指令高速缓冲存储器的相应提取之间存在偏移,其中所述偏移与实施目标地址提取的循环的数目或级的数目相关(例如,比所述数目少一)。
图7是有助于理解将偏移实施为指令提取地址的递增的实例的局部方框图和流程图。
图8是有助于理解将偏移实施为用于将目标地址写入到分支目标地址高速缓冲存储器的指令地址的实例的局部方框图和流程图。
具体实施方式
在以下具体实施方式中,以举例方式陈述许多特定细节,以便提供对相关教示的彻底理解。然而,所属领域的技术人员应了解,可在没有此类细节的情况下实践本发明教示。在其它例子中,已相对概括而不是详细地描述众所周知的方法、程序、组件和电路,以免不必要地混淆本发明教示的各方面。
本文揭示的各种技术涉及分支目标地址提取提前于相应的指令提取的有利时序,尤其是当在管线型处理过程中执行此类提取时。现详细参看附图中说明以及下文论述的实例。图1是管线处理器10的简化方框图。简化的管线包含五个级。
处理器10中管线的第一级是指令提取级11。提取级获得指令以供由稍后的级进行处理。提取级11将每一指令供应到解码级13。指令解码级13的逻辑对接收到的指令字节进行解码并将结果供应到管线的下一级。在简单的实例中,下一级是数据存取或读出级15。读出级15的逻辑对存储器或其它资源(未图示)进行存取以获得操作数数据,以用于根据指令进行处理。将指令和操作数数据传递到执行级17,执行级17对检索到的数据执行特定指令并产生结果。第五级19将结果回写到寄存器和/或存储器(未图示)。
以此方式使处理结构形成管线允许级11-19同时对连续指令进行操作。现代实施方案(尤其对于高性能应用)通常将这些级分解为许多子级。超标量设计利用大体上具有相同深度的同时并行操作的两个或两个以上管线。然而,为了便于论述,我们将继续使实例与如处理器10中的简单的五级管线实例相联系。
提取级逻辑通常将包含或介接到指令高速缓冲存储器(iCache)21。当提取由地址识别的指令时,提取级11的逻辑将首先查看iCache 21以检索所述指令。如果所寻址的指令尚不在iCache中,那么提取级11的逻辑将从其它资源(例如,二级(L2)高速缓冲存储器23或主存储器25)将指令提取到iCache 21中。指令和地址均存储在iCache 21中。提取级逻辑接着可从iCache 21提取指令。如果随后需要,指令也将在iCache 21中可用。
许多指令的执行导致从程序序列中的当前位置向另一指令,即向存储在存储器中的不同位置(且对应于非连续地址)的指令形成分支。处理分支指令包含分支到目标地址的计算。为了加速提取操作,提取级逻辑通常将包含或介接到分支目标地址高速缓冲存储器(BTAC)27,所述BTAC 27用于以类似于iCache 21的功能的方式高速缓存目标地址。根据本发明教示,从BTAC 27检索到的目标地址从iCache 21中的相应指令的地址偏移(29处),使得BTAC查找处理在iCache 21中相应分支指令的查找之前一个或一个以上循环开始,以补偿从BTAC 27检索目标地址的过程中的任何等待时间。
29处实施的偏移可依据时间来表达,表达为一个或一个以上时钟或处理循环、表达为地址编号偏移等。下文论述一实例,其中偏移识别与用于从iCache提取指令的提取地址相比在时间上或指令序列中略微提前(递增)的提取地址。替代实例以适当的偏移量(递减量)将分支目标地址写入到BTAC中,使得两个提取使用同一地址,但BTAC提取仍提前于iCache提取所需的偏移量。在任一实例中,如果BTAC 27中存在分支目标地址,那么将所述分支地址应用于提取级的逻辑,以便紧接着分支指令之后开始提取目标指令。
对于先前未复制到iCache 21的分支指令,BTAC 27将不包含用于分支操作的目标地址。可能存在如下一些情形:尽管iCache 21包含分支指令,但(例如)因为处理尚未采取所述特定分支而导致BTAC 27将不包含目标地址。在目标分支地址不包含在BTAC 27中的任一此类情况下,指令解码逻辑的部分31将在解码级13中处理分支指令期间计算目标地址。
当作为解码逻辑的一部分而计算时,处理器可将计算出的目标地址写入到BTAC 27。然而,(例如)因为不满足条件分支指令的条件,所以并非采取所有分支。执行级17的逻辑将包含逻辑33以确定是否应采取分支。如果是,那么处理将包含写入操作(35处所示的逻辑)以将计算出的分支目标地址写入到BTAC 27中。尽管未单独图示,但采取特定分支的执行结果将包含将目标地址提供到提取级逻辑,以提取目标指令用于通过管线进行后续处理。
正常操作或BTAC存取消耗单一提取循环的操作使用同一地址,以在指令提取期间同时存取iCache 21和BTAC 27两者。在BTAC存取需要多个循环的情况下,为了进一步改进性能,BTAC提取操作基于图1中29处实施的偏移而提前于iCache中提取的指令进行提取。
BTAC提取所需的循环数目决定前视偏移所需的循环数目或长度。如果BTAC存取花费两个循环,那么BTAC提取应提前于iCache提取一个提取循环。如果BTAC存取花费三个循环,那么BTAC提取应提前于iCache提取两个提取循环,等等。注意到,如果BTAC存取仅需要一个提取循环,那么可能不需要偏移。
在一个实例中,用于BTAC提取的地址提前于iCache提取中使用的地址一偏移量,所述偏移量意图补偿在命中的情况下从BTAC提取时的延迟。如果在提取期间实施,那么这需要递增提取地址。或者,当写入到高速缓冲存储器时,BTAC写入地址可提前于用于将分支指令存储在iCache中的地址适当的偏移量。由于其在写入操作时实施,但意图促使在相应的iCache提取之前进行读取或提取,所以写入操作递减用于将目标地址写入到BTAC中的地址。
为了完全理解前视操作,考虑一些实例可能会有帮助。参看图2到图4,假定BTAC提取需要两个处理循环。尽管用于两个提取的循环可能并非始终相同,但为了便于论述,在此实例中,从iCache进行指令提取同样需要两个循环。本质上,可认为提取级112形成了管线。尽管提取级可进行组合,但对于此实例,假定每一类型的提取在两个单独管线级中执行,且iCache提取管线与形成BTAC提取管线的级并行运作。因此,管线的每一者由两个级组成。
提取管线112的每一级执行每一程序指令的整个处理过程中必要的不同功能。与指令提取处理相关的第一级(iCache F1)接收指令地址(iAddress),执行其功能处理以开始提取所寻址的指令,并将其结果传递到与指令提取处理相关的第二级(iCache F2)。在下一循环期间,iCache F1接收另一指令地址,同时iCache F2完成关于第一地址的提取处理并将结果(即,所提取的指令)传递到解码级13。
并行地,与目标地址(BTAC)提取处理相关的第一级(BTAC F1)接收BTAC提取地址,执行其功能处理以开始从BTAC进行提取,并将其结果传递到与指令提取处理相关的第二级(BTAC F2)。在下一循环期间,BTAC F1级接收另一指令地址,同时iCacheF2完成关于第一地址的提取处理并将结果(如果存在的话)传递到解码级13。如果BTAC处理从BTAC 27提取分支目标地址,那么第二BTAC管线级(BTAC F2)将命中结果提供到与指令提取处理相关的第一级(iCache F1),使得下一新的指令提取将利用来自高速缓冲存储器27的适当目标分支地址。
图3是表示2循环提取级(例如,图2所示的级112)中的循环时序和相关联处理的表或时序图。表中的字母字符表示指令地址。举例来说,A、B和C是连续地址,因为其可能在应用程序开始时被处理。Z表示目标地址,即在处理采取的分支指令后下一待处理的指令。
在图3的实例中,出于论述的目的,假定iCache提取级与BTAC提取级的处理之间不存在偏移。因此,在处理循环1期间,iCache F1级关于第一地址A执行其提取相关处理,且BTAC F1级关于第一地址A执行其提取相关处理。两个F1级将各自结果传递到相应的F2级,用于在第二循环中处理。在第二循环期间,iCache F1级关于第二地址B执行其提取相关处理,且BTAC F1级关于第二地址B执行其提取相关处理。两个F2级均在第三循环结束时完成关于第二地址B的处理。然而,在所述第三循环期间,两个F1级均在处理第三连续指令C。
现假定第二指令B是分支指令,BTAC 27为所述分支指令存储目标分支地址Z。BTAC管线的第二级(BTAC F2)发现命中并在第三循环中提供目标地址Z。在下一处理循环中(即,在第四循环中),在iCache F1级中,目标地址Z变得可用并作为指令提取地址被处理。
然而,如图所示,两个F1级在第三循环中均开始处理连续地址(如画圈地址C所表示)。此处理是无关的且任何结果必须从管线中清除。下一(第四)处理循环中可能发生类似处理且需要从F2级中清除(再次由画圈地址C表示)。第三连续地址的不必要的处理浪费处理时间,且需要清除任何相关数据的级会引发延迟并降低性能。
图4是表示2循环提取级(例如,图2所示的级112)中的循环时序和相关联的处理的表或时序图,其中提取级112实施BTAC提取相对于iCache提取的前视偏移。图4的表类似于图3的表,因为两者使用相同符号。然而,图4中表示的偏移消除了浪费的iCache提取处理循环。
在图4的实例中,iCache提取级与BTAC提取级的处理之间的偏移对应于一个指令地址。出于论述的目的,所述偏移由提取地址递增表示。如上文注意到,通过BTAC写入地址的递减偏移可实现相同结果。
在处理循环1期间,iCache F1级执行关于第一地址A的与其提取相关的处理,然而,BTAC F1级执行关于第二地址B的与其提取相关的处理。两个F1级将各自结果传递到相应的F2级,用于在第二循环中分别进行关于A和B的处理。在第二循环期间,iCacheF1级执行关于第二地址B的与其提取相关的处理,且BTAC F1级执行关于第三地址C的与其提取相关的处理。
BTAC F2级在第二循环结束时完成其关于第二地址B的处理。由于在此实例中,第二指令B是分支指令,BTAC 27为所述分支指令存储目标分支地址Z,所以BTAC管线的BTAC F2级发现命中并在第二循环中提供目标地址Z。在下一处理循环中(即,在第三循环中),在iCache F1级中,目标地址Z变得可用并作为指令提取地址被处理。因此,iCache管线级可立即处理对应于目标分支地址的指令,而不会不适当地开始处理下一连续地址。
在BTAC管线级中可能仍存在对下一连续地址的某一不必要的处理(如画圈地址C所表示)。然而,由于分支指令(尤其是背对背分支采取的指令)发生的频率较低,所以清除BTAC管线中用于此类不必要的处理的数据对总体处理器性能具有相对较少的影响。
通过审阅图2和4中的简单实例应了解,启动时,在初始循环中从iCache 21提取的对应于偏移的指令不具有相应的BTAC提取。通常,第一指令不是分支,因此这不存在问题。然而,随着BTAC提取的循环数目增加且伴随的偏移增加,可能可行的是在BTAC偏移的第一次通过之前避免第一系列的指令中的分支操作。
图5和图6展示BTAC提取操作需要三个处理循环的处理器的管线处理和相关联的时序。尽管iCache和BTAC循环可能并非始终相同,但为了便于论述,在此实例中,从iCache进行指令提取同样需要三个循环。本质上,可认为提取级113形成了管线。尽管提取级可进行组合,但对于此实例,假定每一类型的提取在两个单独管线级中执行,且iCache提取管线与形成BTAC提取管线的级并行运作。因此,管线的每一者由三个级组成。
提取管线113的每一级执行每一程序指令的整个处理过程中必要的不同功能。与指令提取处理相关的第一级(iCache F1)接收指令地址(iAddress),执行其功能处理以开始提取所寻址的指令并将其结果传递到与指令提取处理相关的第二级(iCache F2)。在下一循环期间,iCache F1接收另一指令地址,而iCache F2级执行其关于第一地址的提取处理并将结果传递到下一级。在第三循环期间,iCache F1级接收另一指令地址,而iCacheF2级执行其关于第二地址的提取处理,且与指令提取处理相关的第三级(iCache F3)完成关于第一指令地址的处理并将结果传递到解码级13。
并行地,与目标地址(BTAC)提取处理相关的第一级(BTAC F1)接收BTAC提取地址,执行其功能处理并将其结果传递到与指令提取处理相关的第二级(BTAC F2)。在下一循环期间,级BTAC F1接收另一指令地址,而BTAC F2级执行其关于第一地址的提取处理并将结果传递到下一级。在第三循环期间,BTAC F1级接收又一指令地址,而BTAC F2执行其关于第二BTAC地址的提取处理,且与指令提取处理相关的第三级(BTAC F3)完成关于第一BTAC地址的处理并将结果传递到解码级13。
图6是表示3循环提取级(例如,图5所示的提取级)中的循环时序和相关联的处理的表或时序图,其中提取级管线113实施BTAC提取相对于iCache提取的对应于两个地址的前视偏移。图6的表类似于图4的表,因为其使用类似符号。在此3循环实例中,为了方便,假定第三连续指令C是分支指令,已为其将目标地址存储在BTAC 27中。
在图6的实例中,iCache提取级与BTAC提取级的处理之间的偏移对应于两个指令地址。出于论述的目的,所述偏移由提取地址递增表示。如上文注意到,BTAC写入地址的递减偏移可实现相同结果。
在处理循环1期间,iCache F1级关于第一地址A执行其提取相关处理,然而,BTACF1级关于第一地址C执行其提取相关处理。两个F1级将各自结果传递到相应的F2级,用于在第二循环中分别关于A和C进行处理。在第二循环期间,iCache F1级关于第二地址B执行其提取相关处理,且iCache F2级关于第一地址A执行其提取相关处理。在所述同一循环期间,BTAC F2级关于地址C执行其提取相关处理。
在第三处理循环中,iCache F1级处理第三地址C,iCache F2级关于地址B执行其提取相关处理,且iCache F3级关于地址A执行其提取相关处理。同时,在BTAC管线中,BTAC F3级即将完成关于地址C的处理。在此实例中,此处理产生命中且BTAC提取提取目标地址Z(表的底线)。
由于指令C是分支指令,BTAC 27为所述分支指令存储目标分支地址Z,所以BTAC管线的BTAC F3级发现命中并在第三循环中提供目标地址Z。在下一处理循环中(即,在我们的实例的第四循环中),在iCache F1级中,目标地址Z变得可用并作为指令提取地址被处理。因此,iCache管线级可立即处理对应于目标分支地址的指令,而不会不适当地开始处理下一连续地址。
应注意,前视BTAC提取可实施在具有iCache和BTAC的任何管线处理器中。提取级无需形成管线,或者如果形成管线,那么提取级无需一定以图2和图5的实例中所示的方式形成管线。用于实现前视BTAC提取的偏移的优点可实施在提取操作需要两个或两个以上处理循环的任何处理器中。
在实例中,提取级开始iCache提取的处理循环跟在相应的BTAC提取之后(或BTAC提取提前于iCache提取)由偏移界定的一个或一个以上处理循环,也就是说比执行BTAC提取所需的处理循环少一个。举例来说,图4中,iCache F1级在循环2中开始提取分支指令B,这是在BTAC F1级相应地开始提取B目标地址之后一个循环。在所述第一实例中,BTAC提取需要两个循环。类似地,图6中,iCache F1级在循环3中开始提取分支指令C,这是在BTAC F1级相应地开始提取C目标地址之后两个循环。在图5和图6的实例中,BTAC提取需要三个处理循环。在每一情况下,iCache提取处理过程中均不存在不必要的中间处理。
在上述图2-图6的实例中,假定了偏移涉及前于或提前于用于iCache提取的地址的用于BTAC提取的地址。为了在提取处理期间实施此操作,提取逻辑将实施地址递增。本质上,当提取级11接收用于指令提取的地址时,其使用所述地址作为iCache指令地址,但逻辑递增所述地址以产生用于BTAC提取的地址。图7是此提取操作中涉及的元件的功能方框图,其涉及递增提取地址以获得用于BTAC提取的地址。为了便于论述,已省略管线的其它元件。
如图所示,提取级中的逻辑71提供提取地址以用于存取iCache 21和BTAC 27两者。来自逻辑71的提取地址直接用作用于存取iCache的地址。在正常处理过程中,提取级将经过两个或两个以上处理循环以从iCache 21获得相应的指令。来自iCache 21的指令加载到寄存器73中和/或提供到逻辑71,用于转移到解码级。如之前注意到,指令解码逻辑的部分31将在解码级13中处理指令期间计算目标地址;且执行级17的逻辑将包含逻辑33以确定是否应采取分支。如果是,那么处理将包含写入操作(图1中35处所示的逻辑)以将计算出的分支目标地址写入到BTAC 27中。在此实例中,未修改写入操作。
然而,提取级包含逻辑电路291(包含在提取级逻辑71中或与提取级逻辑71相关联),用于使提取地址递增适当的偏移量以产生BTAC提取地址。在图2和图4的2循环提取实例中,电路291将使提取地址递增一个地址值,使得BTAC提取将提前于iCache提取一个循环。在图5和图6的3循环提取实例中,电路291将使提取地址递增两个地址值,使得BTAC提取将提前于iCache提取两个循环。以此方式,提取级将经过两个或两个以上处理循环,以确定是否存在对应于适当的将来指令的BTAC命中,且如果是,那么从BTAC 27中检索高速缓存的分支目标地址。目标地址加载到寄存器75中并提供到逻辑71。逻辑71足够早地接收到分支目标地址,以在下一提取处理循环中将所述地址用作下一提取地址(例如,见图4和图6)。尽管为了方便未展示所述路径,但所产生的目标地址通常还与相应的分支指令一起被转移到解码级,以有助于沿着管线向下进一步处理分支指令。
作为在提取操作期间递增地址的替代方法,但仍提供所需的前视BTAC提取,还可在将分支目标数据写入到BTAC 27时修改所述数据的BTAC地址。如果当相关联的指令地址和分支目标地址写入到存储器中时递减所述相关联的指令地址,那么基于当前指令地址从BTAC进行的随后提取将提前于从iCache提取分支指令。如果地址递减量适当,即地址偏移量比BTAC提取所需的循环数目少一,那么从iCache 21提取指令以及从BTAC 27提取任何相关联的目标地址将与先前实例中完全相同。实践中,通过当执行期间存在采取的分支时修改写入地址而不是在提取操作期间每次都递增提取地址来实施偏移通常更容易。
图8是此提取操作中涉及的元件的功能方框图,其涉及当将计算出的分支目标写入BTAC时递减目标数据的地址。为了便于论述,已省略管线的其它元件。如图所示,提取级中的逻辑71提供提取地址,以用于存取iCache 21和BTAC 27两者。在此实例中,两个提取使用同一地址,即用于从iCache 21提取指令以及用于存取BTAC 27两者。
提取级将经过两个或两个以上处理循环以从iCache 21获得相应的指令。来自iCache21的指令被加载到寄存器73中和/或提供到逻辑71,供转移到解码级。如前文所述,指令解码逻辑的部分31将在解码级13中处理指令期间计算目标地址;且执行级17的逻辑将包含逻辑33以确定是否应采取分支。如果是,那么处理将包含写入操作,以将计算出的分支目标地址写入到BTAC 27中。
在此实例中,修改写入操作。明确地说,执行级中的写入逻辑包含递减(-)偏移逻辑电路292。通常,用于将目标地址数据写入到BTAC 27的写入地址是曾产生分支地址的分支指令的地址。然而,在图8的实例中,电路292使所述地址递减适当的偏移量。对于实施2循环提取的管线处理器,电路292将使写入地址递减一个地址值。对于实施3循环提取的处理器,电路292将使写入地址递减两个地址。
现再次考虑提取操作。当逻辑71产生提取地址时,所述地址指向iCache 21中的当前所需的指令。然而,由于用于将目标数据写入到BTAC 27中的写入地址递减,所以提取过程中使用的地址实际上对应于稍后的指令地址,这由偏移量决定。如果偏移量是一个地址值,那么提取地址实际上指向针对待从iCache 21牵出的下一指令的可能的BTAC命中。类似地,如果偏移量是两个地址,那么提取地址实际上指向针对提前于当前正从iCache 21牵出的指令的两个指令的可能的BTAC命中。
以此方式,提取级将经过两个或两个以上处理循环以确定是否存在对应于适当的将来指令的BTAC命中,且如果是,那么从BTAC 27中检索高速缓存的分支目标地址。目标地址加载到寄存器75中并提供到逻辑71。逻辑71足够早地接收到分支目标地址,以在其启始对于相应的分支指令的iCache提取之后下一提取处理循环中将所述地址用作下一提取地址(例如,见图4和图6)。尽管为了方便未展示所述路径,但所产生的目标地址通常还与相应的分支指令一起被转移到解码级,以有助于沿着管线向下进一步处理分支指令。
尽管实例已叙述两个和三个循环BTAC提取处理以及相应的偏移,但所属领域的技术人员将了解,所述教示容易适于BTAC提取涉及更大数目的循环的提取处理。在每一情况下,最佳偏移量均将比BTAC提取中的循环数目少一。然而,在提取序列开始时,对应于偏移量的某一数目的指令不应包含分支指令,以免跳过BTAC命中。如果较早地包含分支指令,那么程序的首次运行将把分支指令作为不存在BTAC命中(分支先前未采取)的分支指令来处理,且程序将以正常方式运行,但没有原本将通过检测到BTAC命中而提供的性能改进。
尽管上文已描述了被认为是最佳模式的内容和/或其它实例,但应了解,可在其中作出各种修改且本文揭示的主题可以各种形式和实例实施,且所述教示可应用于许多应用,本文中仅描述了其中某些应用。所附权利要求书用来主张那些落入本发明教示的真正范围内的任何和所有的应用、修改及变化。
Claims (30)
1.一种用于管线处理器中的提取指令的方法,其包括:
从指令高速缓冲存储器提取指令;
在每次提取指令期间,同时存取分支目标地址高速缓冲存储器(BTAC)以确定所述BTAC是否存储分支目标地址,其中每次存取所述BTAC包括至少两个处理循环;以及
使所述存取操作相对于所述提取操作偏移预定量,以在启始从所述指令高速缓冲存储器提取分支指令之前至少一个循环开始与所述分支指令相关地存取所述BTAC。
2.根据权利要求1所述的方法,其中:
每次从所述指令高速缓冲存储器进行提取包括为待提取的指令产生提取地址;
所述偏移包括使每一提取地址递增所述预定量;且
每次存取所述BTAC包括使用由所述偏移产生的递增的提取地址从所述BTAC进行提取。
3.根据权利要求1所述的方法,其中:
所述偏移包括递减所述分支指令的地址并将所述分支目标地址和所述递减的地址写入到所述BTAC;
所述方法进一步包括,在每一循环期间为待提取的指令产生提取地址;且
在每一循环中开始的提取和存取两者均使用所述循环期间产生的所述提取地址。
4.根据权利要求1所述的方法,其中所述偏移的所述预定量足以实现从所述BTAC提取对应于所述分支指令的分支目标地址以在后续指令提取过程中使用,所述后续指令提取过程开始于紧接着其中指令的提取开始提取所述分支指令的处理循环之后的处理循环中。
5.根据权利要求4所述的方法,其中所述预定量包括从所述指令高速缓冲存储器提取与存取所述BTAC之间的地址差,其等于比每次存取所述BTAC时的循环数目少一。
6.根据权利要求5所述的方法,其中:
每次存取所述BTAC由两个处理循环组成;且
所述预定量包括所述从所述指令高速缓冲存储器提取指令与所述存取所述BTAC之间的地址差,其等于一个指令地址。
7.根据权利要求5所述的方法,其中:
每次存取所述BTAC由三个处理循环组成;且
所述预定量包括所述从所述指令高速缓冲存储器提取指令与所述存取所述BTAC之间的地址差,其等于两个指令地址。
8.一种用于管线处理器中的提取指令的方法,其包括:
开始从指令高速缓冲存储器提取第一指令;
与所述开始提取所述第一指令同时,启始分支目标地址高速缓冲存储器(BTAC)中的提取,以提取对应于所述第一指令之后的分支指令的目标地址,
开始从所述指令高速缓冲存储器提取所述分支指令;
在开始提取所述分支指令之后,使用对应于所述分支指令的所述目标地址来开始从所述指令高速缓冲存储器提取目标指令。
9.根据权利要求8所述的方法,其中所述BTAC中的提取需要两个或两个以上处理循环。
10.根据权利要求9所述的方法,其中所述启始所述BTAC中的提取提前于所述开始从所述指令高速缓冲存储器提取所述分支指令一个或一个以上处理循环。
11.根据权利要求10所述的方法,其中所述BTAC中的提取提前于所述开始从所述指令高速缓冲存储器提取所述分支指令所述一个或一个以上处理循环为比所述BTAC中的提取所需的所述两个或两个以上处理循环少一。
12.根据权利要求8所述的方法,其中:
所述提取所述第一指令使用提取地址;且
所述BTAC中的提取使用相对于所述提取地址递增的地址。
13.根据权利要求8所述的方法,其中:
所述提取所述第一指令使用提取地址;且
所述BTAC中的同时提取使用所述提取地址,所述分支地址已以递减的地址写入到所述BTAC以对应于所述提取地址。
14.一种用于管线处理器中的提取指令的方法,其包括:
在第一处理循环中,开始从指令高速缓冲存储器提取第一指令;
在所述第一处理循环中,启始分支目标地址高速缓冲存储器(BTAC)中的提取,以提取对应于在所述第一指令之后预定量的分支指令的目标地址,
在迟于所述第一处理循环的第二处理循环中,开始从所述指令高速缓冲存储器提取所述分支指令并完成所述从所述BTAC提取所述目标地址;
在迟于所述第二处理循环的第三处理循环中,使用对应于所述分支指令的所述目标地址来开始从所述指令高速缓冲存储器提取目标指令。
15.根据权利要求14所述的方法,其中所述第二处理循环在所述第一处理循环之后一个或一个以上数目的处理循环,所述数目比完成所述从所述BTAC提取所需的两个或两个以上数目的处理循环少一。
16.根据权利要求14所述的方法,其中所述启始所述BTAC中的提取的步骤包括:
使在所述第一处理循环中开始从所述指令高速缓冲存储器提取所述第一指令时使用的指令地址递增所述预定量;以及
使用所述递增的地址来开始所述BTAC中的提取,以提取对应于所述分支指令的所述目标地址。
17.根据权利要求16所述的方法,其中每一递增是一个或一个以上数目的地址,其比完成所述从所述BTAC提取所需的两个或两个以上数目的处理循环少一。
18.根据权利要求14所述的方法,其中:
所述在所述第一处理循环中启始所述BTAC中的提取的步骤包括:使用在所述第一处理循环中开始从所述指令高速缓冲存储器提取所述第一指令时使用的指令地址来存取所述BTAC;且
用于将所述分支目标地址写入到所述BTAC的地址先前从用于将所述分支指令写入到所述指令高速缓冲存储器的指令地址递减了所述预定量,使得所述BTAC中的目标地址的地址对应于在所述第一处理循环中开始从所述指令高速缓冲存储器提取所述第一指令时使用的所述指令地址。
19.根据权利要求18所述的方法,其中所述递减是一个或一个以上数目的地址,其比完成所述从所述BTAC提取所需的两个或两个以上数目的处理循环少一。
20.一种处理器,其包括:
指令高速缓冲存储器,其用于存储指令;
分支目标地址高速缓冲存储器,其用于存储对应于所述存储的指令中的包括分支指令的一者的分支目标地址;
提取级,其用于从所述指令高速缓冲存储器提取指令,并用于从所述分支目标地址高速缓冲存储器提取所述分支目标地址;
至少一个后续处理级,其用于根据所述提取的指令执行一个或一个以上处理功能;以及
偏移逻辑,其用于使从所述分支目标地址高速缓冲存储器的提取比从所述指令高速缓冲存储器提取指令偏移一提前量,所述量与完成每次从所述分支目标地址高速缓冲存储器提取所需的处理循环的数目相关。
21.根据权利要求20所述的处理器,其中所述量的数目比完成每次从所述分支目标地址高速缓冲存储器提取所需的处理循环的数目少一。
22.根据权利要求20所述的处理器,其中:
所述逻辑包括与所述提取级相关联以用于递增所述提取级用以从所述指令高速缓冲存储器进行提取的地址的逻辑;且
所述提取级使用所述递增的地址来从所述分支目标地址高速缓冲存储器进行提取。
23.根据权利要求20所述的处理器,其中:
所述提取级同时使用指令地址从所述指令高速缓冲存储器进行提取以及从所述分支目标地址高速缓冲存储器进行提取;且
所述逻辑包括用于递减所述分支指令的地址并使用所述递减的地址将所述分支目标地址写入到所述分支目标地址高速缓冲存储器的逻辑。
24.根据权利要求23所述的处理器,其中所述用于递减的逻辑与所述至少一个后续处理级相关联。
25.根据权利要求20所述的处理器,其中所述提取级包括许多管线处理级。
26.根据权利要求25所述的处理器,其中所述完成每次从所述分支目标地址高速缓冲存储器提取所需的处理循环的数目等于所述管线处理级的数目。
27.根据权利要求20所述的处理器,其中所述至少一个后续处理级包括:
指令解码级;
读出级;
指令执行级;以及
结果回写级。
28.一种管线处理器,其包括:
提取级,其用于从指令高速缓冲存储器提取指令,其中所述指令中的一者是分支指令,且用于从分支目标地址高速缓冲存储器提取对应于所述分支指令的分支目标地址;
至少一个后续处理级,其用于根据所述提取的指令执行一个或一个以上处理功能;以及
偏移装置,其用于使从所述分支目标地址高速缓冲存储器的提取偏移以提前于所述从所述指令高速缓冲存储器提取指令,以补偿完成每次从所述分支目标地址高速缓冲存储器提取所需的处理循环的数目。
29.根据权利要求28所述的管线处理器,其中所述提取级包括许多管线处理级。
30.根据权利要求28所述的管线处理器,其中所述至少一个后续处理级包括:
指令解码级;
读出级;
指令执行级;以及
结果回写级。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/073,283 US20060200655A1 (en) | 2005-03-04 | 2005-03-04 | Forward looking branch target address caching |
US11/073,283 | 2005-03-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101164043A true CN101164043A (zh) | 2008-04-16 |
Family
ID=36945389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800138547A Pending CN101164043A (zh) | 2005-03-04 | 2006-03-03 | 前视分支目标地址高速缓存 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20060200655A1 (zh) |
EP (1) | EP1853997A2 (zh) |
KR (1) | KR20070108939A (zh) |
CN (1) | CN101164043A (zh) |
CA (1) | CA2599724A1 (zh) |
IL (1) | IL185593A0 (zh) |
RU (1) | RU2358310C1 (zh) |
TW (1) | TW200707284A (zh) |
WO (1) | WO2006096569A2 (zh) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7797520B2 (en) * | 2005-06-30 | 2010-09-14 | Arm Limited | Early branch instruction prediction |
US8327115B2 (en) | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
US7917731B2 (en) * | 2006-08-02 | 2011-03-29 | Qualcomm Incorporated | Method and apparatus for prefetching non-sequential instruction addresses |
EP2523101B1 (en) | 2006-11-14 | 2014-06-04 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
JP5145809B2 (ja) * | 2007-07-31 | 2013-02-20 | 日本電気株式会社 | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
EP2628072B1 (en) | 2010-10-12 | 2016-10-12 | Soft Machines, Inc. | An instruction sequence buffer to enhance branch prediction efficiency |
CN108376097B (zh) | 2011-03-25 | 2022-04-15 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
KR101966712B1 (ko) | 2011-03-25 | 2019-04-09 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
EP2689327B1 (en) | 2011-03-25 | 2021-07-28 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
JP5696210B2 (ja) * | 2011-03-31 | 2015-04-08 | ルネサスエレクトロニクス株式会社 | プロセッサ及びその命令処理方法 |
CN103649931B (zh) | 2011-05-20 | 2016-10-12 | 索夫特机械公司 | 用于支持由多个引擎执行指令序列的互连结构 |
KR101639853B1 (ko) | 2011-05-20 | 2016-07-14 | 소프트 머신즈, 인크. | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 |
KR101703401B1 (ko) | 2011-11-22 | 2017-02-06 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
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 |
US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
US9229873B2 (en) | 2012-07-30 | 2016-01-05 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load and store accesses of a cache |
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 |
US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
WO2014151018A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for executing multithreaded instructions grouped onto blocks |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
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 |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
WO2014151043A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
US10664280B2 (en) * | 2015-11-09 | 2020-05-26 | MIPS Tech, LLC | Fetch ahead branch target buffer |
CN107479860B (zh) * | 2016-06-07 | 2020-10-09 | 华为技术有限公司 | 一种处理器芯片以及指令缓存的预取方法 |
US10747540B2 (en) | 2016-11-01 | 2020-08-18 | Oracle International Corporation | Hybrid lookahead branch target cache |
US10853076B2 (en) * | 2018-02-21 | 2020-12-01 | Arm Limited | Performing at least two branch predictions for non-contiguous instruction blocks at the same time using a prediction mapping |
US11334495B2 (en) * | 2019-08-23 | 2022-05-17 | Arm Limited | Cache eviction |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
US5987599A (en) * | 1997-03-28 | 1999-11-16 | Intel Corporation | Target instructions prefetch cache |
US6279105B1 (en) * | 1998-10-15 | 2001-08-21 | International Business Machines Corporation | Pipelined two-cycle branch target address cache |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
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 |
-
2005
- 2005-03-04 US US11/073,283 patent/US20060200655A1/en not_active Abandoned
-
2006
- 2006-03-03 WO PCT/US2006/007759 patent/WO2006096569A2/en active Application Filing
- 2006-03-03 CA CA002599724A patent/CA2599724A1/en not_active Abandoned
- 2006-03-03 TW TW095107343A patent/TW200707284A/zh unknown
- 2006-03-03 CN CNA2006800138547A patent/CN101164043A/zh active Pending
- 2006-03-03 RU RU2007136785/09A patent/RU2358310C1/ru not_active IP Right Cessation
- 2006-03-03 KR KR1020077022665A patent/KR20070108939A/ko not_active Application Discontinuation
- 2006-03-03 EP EP06736990A patent/EP1853997A2/en not_active Withdrawn
-
2007
- 2007-08-29 IL IL185593A patent/IL185593A0/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2006096569A3 (en) | 2006-12-21 |
RU2358310C1 (ru) | 2009-06-10 |
KR20070108939A (ko) | 2007-11-13 |
US20060200655A1 (en) | 2006-09-07 |
IL185593A0 (en) | 2008-01-06 |
CA2599724A1 (en) | 2006-09-14 |
WO2006096569A2 (en) | 2006-09-14 |
TW200707284A (en) | 2007-02-16 |
EP1853997A2 (en) | 2007-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101164043A (zh) | 前视分支目标地址高速缓存 | |
EP1889152B1 (en) | A method and apparatus for predicting branch instructions | |
US7685410B2 (en) | Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects | |
US8943300B2 (en) | Method and apparatus for generating return address predictions for implicit and explicit subroutine calls using predecode information | |
EP2864868B1 (en) | Methods and apparatus to extend software branch target hints | |
JP5209633B2 (ja) | ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 | |
US7797520B2 (en) | Early branch instruction prediction | |
US5761490A (en) | Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode | |
CN101535951A (zh) | 用于辨识子例程调用的方法及设备 | |
EP2220556B1 (en) | A method and a system for accelerating procedure return sequences | |
CN104461758A (zh) | 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构 | |
US8977837B2 (en) | Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes | |
US20030159019A1 (en) | Prediction of instructions in a data processing apparatus | |
EP2057536B1 (en) | Methods and apparatus for reducing lookups in a branch target address cache | |
US5740418A (en) | Pipelined processor carrying out branch prediction by BTB | |
CN117472446A (zh) | 基于处理器的多级取指目标缓冲器的分支预测方法 | |
US5784604A (en) | Method and system for reduced run-time delay during conditional branch execution in pipelined processor systems utilizing selectively delayed sequential instruction purging | |
CN117311814A (zh) | 取指单元、指令读取方法及芯片 | |
US6754813B1 (en) | Apparatus and method of processing information for suppression of branch prediction | |
US20090198962A1 (en) | Data processing system, processor and method of data processing having branch target address cache including address type tag bit | |
US7836288B2 (en) | Branch prediction mechanism including a branch prediction memory and a branch prediction cache | |
US6862680B2 (en) | Microprocessor processing specified instructions as operands | |
US7900027B2 (en) | Scalable link stack control method with full support for speculative operations | |
US6360310B1 (en) | Apparatus and method for instruction cache access | |
US20060112262A1 (en) | Branch prediction of unconditionally executed branch instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |