CN101523344B - 用于解析同时所预测分支指令的方法及系统 - Google Patents
用于解析同时所预测分支指令的方法及系统 Download PDFInfo
- Publication number
- CN101523344B CN101523344B CN200780034761.7A CN200780034761A CN101523344B CN 101523344 B CN101523344 B CN 101523344B CN 200780034761 A CN200780034761 A CN 200780034761A CN 101523344 B CN101523344 B CN 101523344B
- Authority
- CN
- China
- Prior art keywords
- instruction
- predicted
- state
- instructions
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000008569 process Effects 0.000 claims description 34
- 238000011010 flushing procedure Methods 0.000 claims description 18
- 239000000284 extract Substances 0.000 claims description 16
- 210000003813 thumb Anatomy 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 10
- 238000010200 validation analysis Methods 0.000 abstract 1
- 238000000605 extraction Methods 0.000 description 17
- 238000013461 design Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 206010016825 Flushing Diseases 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 210000003811 finger Anatomy 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000246 remedial effect Effects 0.000 description 1
- VEMKTZHHVJILDY-UHFFFAOYSA-N resmethrin Chemical compound CC1(C)C(C=C(C)C)C1C(=O)OCC1=COC(CC=2C=CC=CC=2)=C1 VEMKTZHHVJILDY-UHFFFAOYSA-N 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Abstract
本发明揭示一种在确认所预测分支指令之前解析同时分支预测的方法。所述方法包括处理两个或更多个所预测分支指令,其中每一所预测分支指令具有所预测状态及经校正状态。所述方法进一步包括选择所述经校正状态中的一者。假如所述所预测分支指令中的一者被误预测,那么使用所选择的经校正状态来引导将来的指令提取。
Description
技术领域
本发明大体来说涉及计算机系统,且更特定来说涉及用于解析同时所预测分支指令的技术。
背景技术
计算机平台演进的核心是处理器。早期处理器受那时可用的技术限制。制作技术的新进展允许将晶体管设计减小到高达及超过早期处理器大小的1/1000。这些较小的处理器设计更快,更高效且使用少得多的功率,而传递超过现有期望值的处理功率。
随着处理器的物理设计的演进,处理信息及执行功能的创新方式也已改变。举例来说,自从20世纪60年代早期便已在处理器设计中实施指令的“管线化”。管线化的一个实例是将执行管线分为单元的概念,指令在串流中顺序流过所述单元。所述单元经布置使得若干单元可同时处理若干指令的适当部分。管线化的一个优点是,由于并行评价指令,因此所述指令的执行重叠。管线化还被称作指令级并行(ILP)。
处理器管线由许多级组成,其中每一级执行与执行指令相关联的功能。每一级被称作管道级或管道分段。所述级连接在一起以形成管线。指令在管线的一个端处进入且在另一端处退出。
虽然在处理器设计中继续实施管线处理,但其最初被限制为每一处理器循环仅执行一个指令。为增加处理器的处理通过量,更多最近处理器设计并入有能够同时处理多个指令的多个管线。具有多个管线的此类型处理器可被归类为超标量处理器。
在处理器内,可预测某些类型的指令,例如条件分支指令。所述处理器内的分支预测硬件可经设计以提供对条件分支指令的预测。基于所述预测,所述处理器将继续执行下一顺序指令或被引导向将要执行的后续指令。
利用分支预测硬件的超标量处理器在相同或单独的管线中在同一时钟循环内可同时遇到并解析两个或更多个所预测分支指令。通常在此类应用中,所述处理器必须等待直到其可确定两个分支预测的完全解析以在误预测的情况下采取任何补救步骤之前确定最老的误预测分支。需要消除经校正状态的选择与确定遇到多个分支预测的高速处理器的最老误预测分支间的相互影响。
发明内容
本发明认识到此需要且揭示一种在所有同时分支指令预测的完全解析可用之前通过预期适当的动作且采取有助于实现所述适当动作的步骤来处理所述同时分支指令预测的处理器。
揭示一种在确认同时所预测分支指令之前解析所述所预测分支指令的方法。所述方法首先包含处理两个或更多个所预测分支指令。每一所预测分支指令具有所预测状态及经校正状态。所述所预测分支指令同时进入解析级且选择来自所述所预测分支指令中的一者的经校正状态中的一者。所述方法进一步检验所述所预测分支指令中的至少一者已误预测,且使用所述所选择的经校正状态来引导将来的指令提取。
一种在多个管线中在确认同时所预测分支指令之前解析所述所预测分支指令的方法首先包含处理两个或更多个所预测分支指令。每一所预测分支指令具有所预测状态及经校正状态。所述所预测分支指令同时进入单独管线中的解析级且从所述所预测分支指令中的一者选择经校正状态中的一者。所述方法进一步检验所述所预测分支指令中的至少一者已误预测且使用所述所选择的经校正状态来引导将来的指令提取。
一种用于在确认同时所预测分支指令之前解析所述所预测分支指令的系统包含经配置以预测多个分支指令的预测逻辑。每一所预测分支指令具有所预测状态及经校正状态。所述系统还具有经配置以确定所述所预测分支指令中的两者或更多者何时同时到达解析级的解析逻辑。然后,所述解析逻辑从所述所预测分支指令中的一者选择经校正状态中的一者。所述系统还具有经配置以基于所述所选择的经校正状态来提取将来指令的提取逻辑。
根据以下详细说明及附图将明了对本发明的更完整了解以及本发明的其它特征及优点。
附图说明
图1显示使用本发明的一个实施例的处理器的高级逻辑硬件框图。
图2显示利用本发明的一个实施例的超标量处理器的较低级逻辑框图。
图3显示图1的处理器的管线中的解析级的流程图。
图4显示图3的多个同时分支解析流的流程图。
具体实施方式
下文结合附图所论述的详细说明打算作为对本发明的各种实施例的说明,而非打算仅代表其中可实践本发明的实施例。为提供对本发明的透彻了解,所述详细说明包括具体细节。然而,所属领域的技术人员将明了可在没有这些具体细节的情况下实践本发明。在某些实例中,为避免遮蔽本发明的概念,以框图形式显示众所周知的结构及组件。缩写词及其它描述性术语可仅出于便利及清晰的目的而使用,而非打算限定本发明的范围。
在超标量处理器中,处理器的内部资源经设计以促进并行处理。设计的若干面包括指令预先提取、分支处理、涉及寄存器值的数据相依性的解析、指令的起始等等。由于处理器比大多数存储器装置操作得更快,因此不能够足够快地直接从存储器读取程序指令来恰当地利用所述处理器的全部潜能。
指令高速缓存器是经设计以在传统存储器与处理器之间桥接速度间隙的专门化存储器。从存储器提取的指令被放置在能够以存储器时钟速度读取的较快指令高速缓存器中。所提取的指令可以是程序中的下一顺序指令或预测采取的分支的目标。当所述下一指令是所预测分支的目标时,处理器尝试预测所述分支将去哪里并提前提取适当的指令。如果所述分支预测不正确,那么处理器通过清除沿所预测分支路径提取的指令来校正其指令处理,且继续沿经校正的分支路径提取指令。在图2、3及4的论述中更加详细地说明此过程。
图1显示利用如下文所说明的一个实施例的超标量处理器100的高级视图。处理器100具有中央处理单元(CPU)102,所述中央处理单元经由专用高速总线104连接到指令高速缓存器106。所述CPU还具有连接到数据高速缓存器108的另一单独高速总线110。指令高速缓存器106及数据高速缓存器108也经由通用总线116连接到输入/输出端口(I/O)112及存储器114。
在处理器100内,指令提取单元(IFU)122控制指令从存储器114到指令高速缓存器106的加载。一旦用指令加载指令高速缓存器106,CPU 102能够经由高速总线104存取所述指令。指令高速缓存器106可以是如图1中所示的单独存储器结构,或可整合为CPU 102的内部组件。所述整合可视指令高速缓存器106的大小以及CPU102的复杂性及功耗而定。
可每次若干指令地从指令高速缓存器106提取并解码指令。在指令高速缓存器106内,指令被分组为称作高速缓存线的区段。每一高速缓存线可包含多个指令。所提取指令的数量可取决于所需的提取带宽以及每一高速缓存线中的指令数量。在一个实施例中,CPU 102在每一时钟循环期间将来自指令高速缓存器106的四个指令加载到IFU 122中的上部管线250中。在上部管线250内,针对操作类型及数据相依性来分析指令。在分析所述指令之后,处理器100可将来自上部管道250的指令分配到下部功能单元或管线210及220以供执行。
可依据指令功能、管道可用性、在从指令高速缓存器106加载的指令群组内的指令位置等等来将指令发送到下部管线210或220。在下部管线210及220内,基于可用资源而非原始程序序列来并行处理所述指令。此类型的处理经常被称作动态指令调度。
下部管线210及220可包含各种执行单元(EU)118,例如算术逻辑单元、浮点单元、存储单元、加载单元等等。举例来说,EU 118(例如,算术逻辑单元)可执行各种各样的算术功能,例如整数加法、减法、简单乘法、逐位逻辑运算(例如,AND、NOT、OR、XOR)、位移位等等。在指令完成执行之后,CPU 102取指令结果且将其重新排序为恰当序列,以便可使用所述指令结果来正确地更新处理器100。
由处理器100执行的大多数程序可包括条件分支指令。直到在下部管线210或220深处执行条件分支指令才知道所述指令的实际分支行为。为避免可能因等待分支指令的最终执行及随后必须基于所述分支指令的结果来提取指令而导致的停转,处理器100可采用相同形式的分支预测。通过使用分支预测,处理器100可预测上部管线250中的条件分支指令的分支行为。基于所预测分支评价,处理器推测性地提取并准备执行来自所预测地址的指令,所述所预测地址是分支目标地址(例如,如果预测采取所述分支)或所述分支指令之后的下一顺序地址(例如,如果预测不采取所述分支)。
条件分支指令的一个实例是简单汇编器指令不等于则转移(JNE)。当执行所述JNE指令时,可将特定值加载到寄存器中且如果所述值等于零,那么不采取所述条件分支且提取并执行序列中的下一指令。然而,如果寄存器中的值不等于零,那么认为采取所述条件分支且所提取的下一指令位于与所述JNE指令相关联的目标地址处。在所述JNE指令的先前执行时,所述目标地址可先前已与所述JNE指令相关联。
当预测指令时,可预测若干条件或“状态”。举例来说,可预测处理器100的目标地址或特定状态(例如,处理器模式)。预测处理器模式可需要预测在所述分支指令的执行之后处理器100将处于什么模式中。举例来说,在高级RISC处理器架构中,可在ARM模式或16位(Thumb)模式中执行指令。
预测条件分支的方向的一种可能方式是利用分支历史表。分支历史表可以是存储多个先前分支的历史的简单查找表。一个分支历史表可存储先前条件分支的1024个方向。可写入复杂的算法以作出基于分支预测的预测技术分级(多级分支预测器)。
图2显示根据本发明的一个方面处理指令的处理器100内的上部管道250及两个下部管线210及220的较低级功能框图200。功能硬件框图200内的不同逻辑块(或级)可包含硬件、固件或两者的组合。功能硬件框图200由上部管道250及两个下部管线210及220组成。如前文所提及,上部管道250的级可驻存在IFU 122内。在上部管道250内的是提取级202、指令高速缓存级204及指令解码级206。也与上部管道250相关联的是分支预测逻辑208。
上部管道250中的第一级是提取级202。提取级202控制对将要检索的下一群组指令的选择。在处理器100加电之后,提取级202确定将要检索并加载初始化指令。如结合图3及图4的论述所说明,提取级202也可从下部管线210及220接收反馈。所述反馈可影响对将来指令的选择及将以什么次序执行所述指令。
在指令高速缓存级204中,使用在提取级202期间选择的指令地址来存取指令高速缓存器106以确定所述地址处的指令是否存在。如果存在指令高速缓存命中,那么CPU 102将来自指令高速缓存器106的指令检索到上部管道250中,从而允许处理器100以处理器速度提取指令而不回到存储器114。如果存在指令高速缓存未命中(即,不可从指令高速缓存器106获得将要提取的指令),那么IFU 122从存储器114检索所述指令,将其加载到指令高速缓存器106中,且将其传送到CPU 102。在于指令高速缓存级204期间检索所述指令之后,在指令解码级206期间分析所述指令。
在指令解码级206期间,分析并处理关于各种指令的信息。举例来说,在指令解码级206内,处理器100可确定指令的类型(例如,移动、存储、加载、转移等等)。如果所述指令是条件分支指令,那么将调用指令预测逻辑208。指令解码级206与分支预测逻辑208进行通信,从而通知分支预测逻辑208其已遇到分支指令。
作为分支预测的部分,分支预测逻辑208提供所预测状态。存储在所述所预测状态中的信息可包括所预测分支方向、所预测目标地址或处理器100的所预测状态。此信息可存储在寄存器、寄存器群组或与所述分支指令相关联的存储器位置中。在本发明的一个方面中,所预测状态可包含仅所述所预测分支方向。在另一实施例中,所预测状态可包含仅与所述所预测分支方向及所述所预测目标地址相关的信息。在其它实施例中,所预测状态可包含与所述所预测目标地址及所预测处理器模式相关的信息。在再一实施例中,所预测状态可包含所述所预测分支方向、所述所预测目标地址及所述所预测处理器模式的信息。
当预测分支方向时,所预测状态可包含预测采取或不采取分支的信息。在一个实施例中,所述预测状态可以是单个位。举例来说,存储在寄存器内的位位置或与所述所预测状态相关联的存储器位置中的“1”可指示预测采取所述分支。相反,如果“0”存储在所述寄存器内的所述位位置或存储器位置处,那么可预测不采取所述分支。
如果预测目标地址,那么所预测状态可包含指示将要在那里提取下一指令的位置的目标地址。所述目标地址的大小可取决于处理器100的架构。在一个实施例中,目标地址可以是存储与所述所预测状态相关联的寄存器中的32位地址识别符。
当预测处理器模式时,所预测状态可包含与一旦执行条件分支处理器100将处于的所预测模式相关的信息。举例来说,基于对处理器模式的所述预测,处理器可采取步骤,例如以不同方式执行指令解码(即,指令的ARM解码对指令的16位(thumb)解码)。处理器模式的所预测状态可以是存储在寄存器或存储器位置中的单个位的值。
与所预测状态互补,分支预测逻辑208还计算并存储与所预测分支指令相关联的经校正状态。所述经校正状态包含信息以防所述预测不正确。存储为所述经校正状态的部分的信息可包含恢复地址及处理器的先前状态。在分支误预测的情况下,所述经校正状态可由处理器100用来恢复恰当的指令次序序列。
作为由分支预测逻辑208所作预测的结果,信息被提供到提取级202内的提取逻辑以引导后续指令提取。所预测状态由所述提取逻辑用来基于所述预测检索适当的指令。举例来说,如果所述所预测状态包含目标地址,那么所述提取逻辑从位于所述目标地址处的指令高速缓存器106检索下一指令。假如在指令高速缓存器106中不可获得所述指令,那么所述提取逻辑将来自存储器114的指令加载到指令高速缓存器104中且然后将所述指令加载到上部管道250中。
在解析初始分支预测之前遇到需要预测的另一分支指令的情况并不罕见。在此实例中,处理器100追踪由分支预测逻辑208执行的预测中的每一者。此追踪包括识别哪一预测先到。追踪预测的“年龄”的一种方式是利用与每一条件分支指令相关联的指令次序值。当指派每一所预测状态时,还与分支指令一同指派、存储或携载了所述指令次序值。一旦所述预测逻辑已执行预测或已确定指令解码级206中的当前指令不需要预测,那么指令被递送到适当的下部管线210及220。
如前文所说明,下部管线210及220可与某些类型的指令相关联。举例来说,管线可经设计以仅执行算术性质的指令或处置所有加载/存储功能性。为将所预测分支指令发送到管线,所述管线必须经设计以处置分支指令。如图2中所示,下部管线210及220两者经配置以处置分支指令。下部管线210及220还可经设计以在每一处理器循环期间执行多个指令。因此,在下部管线210及220内,可在同一处理器循环期间执行多个分支指令。
一旦指令进入适当的下部管线210或220,可重新布置所述指令(例如,分支指令)以促进更高效的执行。如果分支指令到达下部管线210或220,且需要其它信息或数据来继续执行,那么处理器100可在执行所述分支指令之前执行另一指令或指令群组。在此情况下,可将所述分支指令保持在保留站(未显示)中,直到促进执行所必需的信息可用。举例来说,如果所述分支指令分支到存储在特定寄存器中的目标地址且所述目标地址还不可用,那么可将所述分支指令保持在所述保留站中。可依据另一后续执行的指令来确定所述目标地址的值。保持所述分支指令,直到所述后续指令执行,更新所述特定寄存器且所述目标地址变得可用。在所述目标地址变得可用之后,释放所述分支指令以供进一步执行。基于可用资源而非原始程序序列来并行执行以此方式执行的指令。在所述指令已在下部管线210及220中执行之后,收集结果且将所述结果重新排序为恰当的序列,以便可正确地更新处理器100。
在保留站内,可同时保持若干指令,每一指令等待其它信息、处理器资源等等。通常,可由处理器100在同一处理器循环期间从所述保留站释放多个指令。因此,可能在同一处理器循环期间从所述保留站释放多个分支指令。
当在下部管线210及220中执行所述指令时,处理器100继续对其进行监视。当分支指令已被从所述保留站释放或准备好最终执行时,与所述分支执行相关联的预测的处理由每一下部管线210及220的解析级215内的解析逻辑225执行。将结合图3的论述说明解析级215。
解析逻辑225检验所预测状态的正确性并在误预测的情况下选择经校正状态。举例来说,如果所述所预测状态是目标地址且所述目标地址与所确定的实际目标地址不匹配,那么出现误预测。在误预测的情况下,解析逻辑225向提取级202提供反馈,所述反馈包括识别需要冲洗的指令以及经校正状态的信息。所述被冲洗指令是先前基于不正确的预测提取的指令。在冲洗适当的指令之后,所述提取逻辑基于所述经校正状态来开始重新提取指令。如果解析逻辑225确定预测正确,那么其不采取动作且随后执行推测性地提取(基于所述预测)的指令。
图3显示说明与下部管线210及220中的解析级215相关联的过程流300的流程图。当所预测分支指令已使其所有相依性被解析时,过程流300在开始块302处开始。当所述预测所基于的所有操作数可用时,解析分支相依性。此解析在解析级215中的下部管线210及220中的任一者中发生。
在决策块312处,作出是否存在同时进入分支解析级215的多个所预测分支的决策。如前文所论述,多个分支指令可在同一下部管线210或220中在同一处理器循环期间进入解析级215。本发明的一个方面在同一下部管线210或220中同时解析多个分支预测。在替代实施例中,可同时解析进入下部管线210中的解析级215的分支预测及进入下部管线220的解析级215的分支预测。假如处理器100具有额外下部管线,那么本发明的另一实施例可在所述下部管线中的一者中解析多个分支预测。
处理器100监视下部管线210及220两者以作出此评估。如果处理器100确定存在同时进入解析级215的多个分支预测,那么过程流300被引导向多个同时分支解析流320。所述多个同时分支解析流320确定如何解析同时进入分支解析级215的两个或更多个所预测分支指令且结合图4进一步予以论述。如果仅一个分支预测正在进入解析级215,那么过程流300继续到决策块314。
在决策块314处,分析分支预测结果以确定是否正确地预测所述分支。在决策块314处,如果正确地预测对所述条件分支指令的预测(例如,条件分支指令的所预测目标地址与所解析的目标地址匹配),那么已正确地预测下部管线210及220以及上部管道250中的剩余指令,且然后过程流300被引导向完成块350。
在决策块314处,如果分支预测结果显示已出现误预测(例如,所述所预测目标地址与所述所解析目标地址不匹配),那么如块316处所指示,从上部管道250及下部管线210及220冲洗比所述误预测的指令年轻(基于分支预测的指令次序值)的所有指令。过程流300进行到块318,然后在此处将分支的经校正状态信息反馈到提取级202内的提取逻辑。所述提取逻辑基于所述分支的经校正状态来提取指令。
图4进一步详细地图解说明多个同时分支解析过程流320。多个同时分支解析过程流320在两个或更多个所预测分支在同一处理器循环期间到达解析级215时开始。当两个或更多个所预测分支同时进入解析阶段215时,处理器100在同一处理器循环期间处置两个分支的解析。此解析包括确定任一分支是否误预测及采取适当的动作(例如,重新引导管线)。
如图4中所示,多个同时分支解析过程流320首先在块402处选择解析分支的经校正状态中的一者。选择所述经校正状态中的一者在多个同时分支解析过程流320确定误预测是否已出现之前发生。通过较早在多个同时分支解析过程流320中选择所述经校正状态中的一者,可通过预期误预测来节约额外时间。如果还未出现误预测,那么此选择不丢失任何额外处理时间。
特定分支的经校正状态的选择可基于若干因素。在一个实施例中,所述经校正状态的选择基于解析分支的相对年龄且选择最老的分支指令。在替代实施例中,所述经校正状态的选择可基于下部管线210或220中的哪一者最近误预测。在再一实施例中,所述选择可基于最后的预测来自下部管线210或220中的那一者。在又一实施例中,可使用指令的类型作为选择经校正状态的基础。另一选择为,可随机选择所述经校正状态。不管所述选择过程,将使用所选择的经校正状态在误预测的情况下导引提取逻辑以用于将来的指令提取。
经校正状态的选择可对处理器100的执行速度产生影响。依据处理器设计,上述方面中的每一者可具有某些速度优点。举例来说,基于最后作出预测的下部管线210或220来选择经校正状态可比确定下部管线210或220中的哪一者最后误预测执行得快。稍后在多个同时分支解析过程流320中检验所述经校正状态的有效性。
利用前文所说明实施例的处理器100的一个优点是处理器100预期误预测最老的分支预测。相应地,处理器100采取适当的动作(例如,冲洗上部管道250及下部管线210及220),而不是降低处理器频率以适应在单个循环中准确确定哪一分支已误预测所需要的额外时间。如果处理器100选择正确的误预测分支,那么可实现较高的时钟频率,因为处理器100将在等待确定哪一分支预测对应于最老的误预测分支之前开始冲洗及重新提取指令。给予处理器100的增加的时钟速率远远超过任何因选择错误的经校正状态而丢失的时钟循环。
在已在块402处选择经校正状态信息之后,多个同时分支解析过程流320进行到决策块404。在决策块404处,解析逻辑225确定是否已出现任何分支指令的误预测。在决策块404处,如果未出现误预测,那么多个同时分支解析过程流320在块450处结束。在此情况下,两个预测是正确的且加载到上部管道250及下部管线210及220中的指令是有效的且不需要校正。
如果已出现误预测,那么多个同时分支解析过程流320进行到块406,在此处冲洗上部管道250中的所有指令。由于上部管道250中的所有指令仍为程序次序,因此其比任一解析分支年轻。因为上部管道250中的指令比任一解析分支指令年轻,因此沿误预测的路径对其进行提取并冲洗。
在已在块406处冲洗上部管道250之后,多个同时分支解析过程流320继续到块408。在块408处,提取逻辑使用所选择分支的经校正状态来重新引导上部管道250中的提取。多个同时分支解析过程流320继续到决策块410。在决策块410处,通过检查误预测的分支指令是否对应于其经校正状态已被选择的分支指令来检验经校正状态信息的选择。在块410处,如果所述检验成功,那么在块418处,处理器100基于指令次序值从下部管线210及220冲洗更多最近指令。从块418,多个同时分支解析过程流320结束且进行到块450。
在块410处,如果所述检验失败(即,不选择最老的误预测分支),那么在块412处再次从上部管道250冲洗所有指令。块412处对指令的冲洗有效地从上部管道250移除在块408处提取的指令。然后,在块414处将第二分支的经校正状态信息反馈到提取逻辑。所述提取逻辑基于所述第二分支的经校正状态来提取指令。在步骤416处从下部管线210级220冲洗比所述第二分支预测年轻(基于指令次序值)的所有指令。在从下部管线210及220冲洗所述指令之后,多个同时分支解析过程流320在步骤450处结束。
可用以下装置来实施或执行结合本文所揭示实施例说明的各种说明性逻辑块、模块、电路、元件及/或组件:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件或其设计用于执行本文所说明功能的任何组合。通用处理器可以是微处理器,但另一选择为,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可实施为计算组件的组合,例如DSP与微处理器的组合、多个微处理器的组合、一个或一个以上微处理器与DSP核心的联合或任何其它此类配置。
虽然本文中已图解说明及说明了具体实施例,但所属领域的技术人员应了解,可用任何经计算以实现相同目的的布置来替代所示具体实施例且本发明在其它环境中具有其它应用。此应用打算涵盖本发明的任何修改或变化。以上权利要求书绝非打算将本发明的范围限定于本文所说明的具体实施例。
Claims (16)
1.一种在确认同时所预测分支指令之前解析所述所预测分支指令的方法,所述方法包含:
处理两个或更多个所预测分支指令,每一所预测分支指令具有所预测状态及经校正状态,所述所预测分支指令同时进入解析级;
从所述所预测分支指令中的一者选择所述经校正状态中的一者;
确定所述所预测分支指令中的至少一者已误预测;
对指令管线上部部分中的所有指令执行第一冲洗;
基于所选择的经校正状态引导所述指令管线上部部分中的指令提取;
在执行所述第一冲洗及基于所选择的经校正状态引导指令提取之后,确定已做出误预测的最老的所预测分支指令是否对应于具有所选择的经校正的状态的分支指令;
当已做出误预测的最老的所预测分支指令对应于具有所选择的经校正的状态的分支指令时,基于指令次序值从所述指令管线下部部分执行对比具有所选择的经校正的状态的分支指令年轻的所有指令的第一冲洗;及
当已做出误预测的最老的所预测分支指令与具有所选择的经校正的状态的分支指令不对应时:
对所述指令管线上部部分中的所有指令执行第二冲洗;
基于已做出误预测的最老的所预测分支指令的所选择的经校正的状态,引导第二指令提取;且
基于指令次序值从所述指令管线下部部分执行对比具有最老的预测分支指令的所选择的经校正的状态的分支指令年轻的所有指令的第二冲洗。
2.如权利要求1所述的方法,其中所述所预测状态进一步包含目标地址。
3.如权利要求1所述的方法,其中所述所选择的经校正状态对应于所述所预测分支指令中的最老一者。
4.如权利要求1所述的方法,其中所述所选择的经校正状态是随机选择的。
5.如权利要求1所述的方法,其中所选择的经校正状态是基于哪一管线最后预测来选择的。
6.如权利要求1所述的方法,其中所选择的经校正状态是基于哪一管线最后误预测来选择的。
7.如权利要求1所述的方法,其中所选择的经校正状态是基于所述所预测分支指令的类型来选择的。
8.一种在多个管线中在确认同时所预测分支指令之前解析所述所预测分支指令的方法,所述方法包含:
处理两个或更多个所预测分支指令,每一所预测分支指令具有所预测状态及经校正状态,所述所预测分支指令同时进入单独管线中的解析级;
从所述所预测分支指令中的一者选择所述经校正状态中的一者;
确定所述所预测分支指令中的至少一者已误预测;
对指令管线上部部分中的所有指令执行第一冲洗;
基于所述所选择的经校正状态在所述指令管线上部部分中引导指令提取;
在执行所述第一冲洗及基于所述所选择的经校正状态引导指令提取之后,确定已做出误预测的最老的所预测分支指令是否对应于具有所选择的经校正的状态的分支指令;
当已做出误预测的最老的所预测分支指令对应于具有所选择的经校正的状态的分支指令时,基于指令次序值从所述指令管线下部部分执行对比具有所选择的经校正状态的分支指令年轻的所有指令的第一冲洗;及
当已做出误预测的最老的所预测分支指令与具有所选择的经校正的状态的分支指令不对应时:
对所述指令管线上部部分中的所有指令执行第二冲洗;
基于已做出误预测的最老的所预测分支指令的所选择的经校正的状态,引导第二指令提取;且
基于指令次序值从所述指令管线下部部分执行对比具有最老的预测分支指令的所选择的经校正状态的分支指令年轻的所有指令的第二冲洗。
9.如权利要求8所述的方法,其中所述所预测状态进一步包含分支方向。
10.如权利要求8所述的方法,其中所述所预测状态进一步包含处理器的模式。
11.如权利要求8所述的方法,其中所述所预测状态进一步包含目标地址。
12.如权利要求8所述的方法,其中所述所选择的经校正状态对应于所述所预测分支指令中的最老一者。
13.如权利要求10所述的方法,其中所述处理器经配置以ARM模式或Thumb模式来执行指令。
14.如权利要求8所述的方法,其中所述所选择的经校正状态是基于哪一管线最后预测来选择的。
15.如权利要求8所述的方法,其中所述所选择的经校正状态是基于哪一管线最后误预测来选择的。
16.如权利要求8所述的方法,其中所述所选择的经校正状态是基于所述所预测分支指令的类型来选择的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/535,536 US7617387B2 (en) | 2006-09-27 | 2006-09-27 | Methods and system for resolving simultaneous predicted branch instructions |
US11/535,536 | 2006-09-27 | ||
PCT/US2007/079781 WO2008039947A1 (en) | 2006-09-27 | 2007-09-27 | Methods and system for resolving simultaneous predicted branch instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101523344A CN101523344A (zh) | 2009-09-02 |
CN101523344B true CN101523344B (zh) | 2013-01-23 |
Family
ID=38924371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200780034761.7A Expired - Fee Related CN101523344B (zh) | 2006-09-27 | 2007-09-27 | 用于解析同时所预测分支指令的方法及系统 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7617387B2 (zh) |
EP (1) | EP2069915B1 (zh) |
JP (2) | JP5221546B2 (zh) |
KR (1) | KR101073732B1 (zh) |
CN (1) | CN101523344B (zh) |
AT (1) | ATE511674T1 (zh) |
WO (1) | WO2008039947A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7617387B2 (en) * | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
CN102184091A (zh) * | 2011-04-18 | 2011-09-14 | 孙瑞琛 | 一种分支预测方法及装置 |
WO2013100999A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | Enabling and disabling a second jump execution unit for branch misprediction |
US20140195790A1 (en) * | 2011-12-28 | 2014-07-10 | Matthew C. Merten | Processor with second jump execution unit for branch misprediction |
US9268569B2 (en) * | 2012-02-24 | 2016-02-23 | Apple Inc. | Branch misprediction behavior suppression on zero predicate branch mispredict |
US9411590B2 (en) | 2013-03-15 | 2016-08-09 | Qualcomm Incorporated | Method to improve speed of executing return branch instructions in a processor |
US10108419B2 (en) * | 2014-09-26 | 2018-10-23 | Qualcomm Incorporated | Dependency-prediction of instructions |
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 |
US10782976B2 (en) * | 2018-05-07 | 2020-09-22 | Dejan Spasov | Issuing and flushing instructions from reservation stations using wrap bits and indexes |
US20190369999A1 (en) * | 2018-06-04 | 2019-12-05 | Advanced Micro Devices, Inc. | Storing incidental branch predictions to reduce latency of misprediction recovery |
US11086629B2 (en) * | 2018-11-09 | 2021-08-10 | Arm Limited | Misprediction of predicted taken branches in a data processing apparatus |
US20210149676A1 (en) * | 2019-11-14 | 2021-05-20 | Higon Austin R&D Center Corporation | Branch Prediction Method, Branch Prediction Unit and Processor Core |
CN111459549B (zh) | 2020-04-07 | 2022-11-01 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
CN112256331B (zh) * | 2020-12-22 | 2021-04-27 | 鹏城实验室 | 虚拟机指令解析加速方法、装置和计算机存储介质 |
US11663013B2 (en) | 2021-08-24 | 2023-05-30 | International Business Machines Corporation | Dependency skipping execution |
US11809874B2 (en) * | 2022-02-01 | 2023-11-07 | Apple Inc. | Conditional instructions distribution and execution on pipelines having different latencies for mispredictions |
US11915001B1 (en) | 2022-12-26 | 2024-02-27 | Rebellions Inc. | Neural processor and method for fetching instructions thereof |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758143A (en) * | 1996-10-07 | 1998-05-26 | International Business Machines Corporation | Method for updating a branch history table in a processor which resolves multiple branches in a single cycle |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5287467A (en) * | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
US5434985A (en) * | 1992-08-11 | 1995-07-18 | International Business Machines Corporation | Simultaneous prediction of multiple branches for superscalar processing |
JPH0756735A (ja) * | 1993-08-16 | 1995-03-03 | Nkk Corp | 並列演算処理装置 |
DE69420540T2 (de) * | 1994-01-03 | 2000-02-10 | Intel Corp | Verfahren und Vorrichtung zum Implementieren eines vierstufigen Verzweigungsauflosungssystem in einem Rechnerprozessor |
US5586278A (en) * | 1994-03-01 | 1996-12-17 | Intel Corporation | Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor |
EP0815507B1 (en) * | 1995-02-14 | 2013-06-12 | Fujitsu Limited | Structure and method for high-performance speculative execution processor providing special features |
US5943494A (en) * | 1995-06-07 | 1999-08-24 | International Business Machines Corporation | Method and system for processing multiple branch instructions that write to count and link registers |
US5740417A (en) * | 1995-12-05 | 1998-04-14 | Motorola, Inc. | Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states |
US5752014A (en) * | 1996-04-29 | 1998-05-12 | International Business Machines Corporation | Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction |
DE69611388T2 (de) * | 1996-07-16 | 2001-08-09 | Advanced Micro Devices Inc | Lade/speichereinheit mit mehrfachen zeigern zum ergänzen von speicherung und fehlgriffladebefehlen |
JPH10133874A (ja) * | 1996-11-01 | 1998-05-22 | Mitsubishi Electric Corp | スーパスカラプロセッサ用分岐予測機構 |
JPH10333908A (ja) * | 1997-05-30 | 1998-12-18 | Mitsubishi Electric Corp | 分岐予測方法 |
US6119075A (en) * | 1997-11-26 | 2000-09-12 | Digital Equipment Corporation | Method for estimating statistics of properties of interactions processed by a processor pipeline |
US6157998A (en) * | 1998-04-03 | 2000-12-05 | Motorola Inc. | Method for performing branch prediction and resolution of two or more branch instructions within two or more branch prediction buffers |
US6260138B1 (en) * | 1998-07-17 | 2001-07-10 | Sun Microsystems, Inc. | Method and apparatus for branch instruction processing in a processor |
JP2000132391A (ja) * | 1998-10-23 | 2000-05-12 | Nec Corp | 分岐予測機構 |
US6460132B1 (en) * | 1999-08-31 | 2002-10-01 | Advanced Micro Devices, Inc. | Massively parallel instruction predecoding |
US6578134B1 (en) * | 1999-11-29 | 2003-06-10 | Ati International Srl | Multi-branch resolution |
US6757816B1 (en) * | 1999-12-30 | 2004-06-29 | Intel Corporation | Fast branch misprediction recovery method and system |
SE0003446L (sv) * | 2000-09-27 | 2002-03-28 | Ericsson Telefon Ab L M | En pipelinemikroprocessor och ett förfarnade relaterande därtill |
WO2002082717A1 (en) * | 2001-04-05 | 2002-10-17 | Kent Ridge Digital Labs | Method and apparatus for constructing efficient elliptic curve cryptosystems |
US7107438B2 (en) | 2003-02-04 | 2006-09-12 | Via Technologies, Inc. | Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions |
US7000233B2 (en) * | 2003-04-21 | 2006-02-14 | International Business Machines Corporation | Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread |
JP4009248B2 (ja) * | 2003-12-05 | 2007-11-14 | 富士通株式会社 | 分岐予測装置および分岐予測方法 |
US7949861B2 (en) * | 2005-06-10 | 2011-05-24 | Qualcomm Incorporated | Method and apparatus for managing instruction flushing in a microprocessor's instruction pipeline |
US7617387B2 (en) * | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
-
2006
- 2006-09-27 US US11/535,536 patent/US7617387B2/en not_active Expired - Fee Related
-
2007
- 2007-09-27 JP JP2009530609A patent/JP5221546B2/ja not_active Expired - Fee Related
- 2007-09-27 EP EP07843403A patent/EP2069915B1/en not_active Not-in-force
- 2007-09-27 CN CN200780034761.7A patent/CN101523344B/zh not_active Expired - Fee Related
- 2007-09-27 WO PCT/US2007/079781 patent/WO2008039947A1/en active Application Filing
- 2007-09-27 AT AT07843403T patent/ATE511674T1/de not_active IP Right Cessation
- 2007-09-27 KR KR1020097008607A patent/KR101073732B1/ko not_active IP Right Cessation
-
2009
- 2009-09-29 US US12/569,365 patent/US8082428B2/en not_active Expired - Fee Related
-
2013
- 2013-01-11 JP JP2013003355A patent/JP2013122774A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758143A (en) * | 1996-10-07 | 1998-05-26 | International Business Machines Corporation | Method for updating a branch history table in a processor which resolves multiple branches in a single cycle |
Also Published As
Publication number | Publication date |
---|---|
US20080077781A1 (en) | 2008-03-27 |
JP5221546B2 (ja) | 2013-06-26 |
JP2013122774A (ja) | 2013-06-20 |
KR20090061667A (ko) | 2009-06-16 |
WO2008039947A1 (en) | 2008-04-03 |
JP2010505210A (ja) | 2010-02-18 |
KR101073732B1 (ko) | 2011-10-13 |
ATE511674T1 (de) | 2011-06-15 |
EP2069915B1 (en) | 2011-06-01 |
US20100023696A1 (en) | 2010-01-28 |
EP2069915A1 (en) | 2009-06-17 |
US7617387B2 (en) | 2009-11-10 |
US8082428B2 (en) | 2011-12-20 |
CN101523344A (zh) | 2009-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101523344B (zh) | 用于解析同时所预测分支指令的方法及系统 | |
CN101876889B (zh) | 执行多个快速条件分支指令的方法以及相关的微处理器 | |
CN101819521B (zh) | 微处理器以及解析第一或第二类别条件分支指令的方法 | |
Ernst et al. | Cyclone: A broadcast-free dynamic instruction scheduler with selective replay | |
CN101427213B (zh) | 用于实现多态分支预测器的方法和装置 | |
KR100616722B1 (ko) | 수퍼스칼라프로세서내의파이프라인명령디스패치유닛 | |
CN101160561B (zh) | 通过循环结束分支来抑制分支历史寄存器的更新 | |
CN101529378B (zh) | 用于处理分支历史信息的方法及管线处理器 | |
CN101156136A (zh) | 校正分支误预测的系统和方法 | |
CN101681259A (zh) | 用于使用局部条件码寄存器以加速管线处理器中的条件指令执行的系统和方法 | |
CN101535951A (zh) | 用于辨识子例程调用的方法及设备 | |
JP2008544353A (ja) | マイクロプロセッサの命令パイプライン内の命令フラッシングを管理する方法及び装置 | |
US20140372732A1 (en) | Accelerated reversal of speculative state changes and resource recovery | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
CN102163139B (zh) | 微处理器融合载入算术/逻辑运算及跳跃宏指令 | |
USRE38599E1 (en) | Pipelined instruction dispatch unit in a superscalar processor | |
CN101164042A (zh) | 在条件指令将不执行时停止等待源操作数 | |
CN113918225A (zh) | 指令预测方法、指令数据处理装置、处理器以及存储介质 | |
Rathi et al. | Design and development of an efficient branch predictor for an in-order RISC-V processor | |
CN101853148B (zh) | 适用于微处理器的装置及方法 | |
Karimi et al. | On the impact of performance faults in modern microprocessors | |
Pilla | RST: Reuse through Speculation on Traces | |
Prémillieu | Microarchitecture exploration of control flow reconvergence | |
Chung | Control path designs for high-performance microprocessors | |
Alexandre | RST: Reuse through Speculation on Traces |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130123 Termination date: 20210927 |