CN101601009B - 处理器及在其中执行指令的方法 - Google Patents
处理器及在其中执行指令的方法 Download PDFInfo
- Publication number
- CN101601009B CN101601009B CN200880002977.XA CN200880002977A CN101601009B CN 101601009 B CN101601009 B CN 101601009B CN 200880002977 A CN200880002977 A CN 200880002977A CN 101601009 B CN101601009 B CN 101601009B
- Authority
- CN
- China
- Prior art keywords
- instruction
- submitted
- mispredicted
- pipeline
- instructions
- 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 28
- 238000011010 flushing procedure Methods 0.000 claims abstract description 15
- 238000012790 confirmation Methods 0.000 claims abstract description 9
- 230000007246 mechanism Effects 0.000 claims description 11
- 230000004087 circulation Effects 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 4
- 230000010076 replication Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 2
- 238000010977 unit operation Methods 0.000 claims 2
- 230000008569 process Effects 0.000 abstract description 7
- 230000002159 abnormal effect Effects 0.000 description 11
- 230000006399 behavior Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 239000003990 capacitor Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 102100036939 G-protein coupled receptor 20 Human genes 0.000 description 1
- 101001071355 Homo sapiens G-protein coupled receptor 20 Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012552 review 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
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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
-
- 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
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
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
将处理器管线分段为在脱离编程次序的指令之前的一上部部分以及超过所述上部部分的一个或一个以上下部部分。在检测到分支指令被错误预测后冲洗所述上部管线,从而使从正确的分支目标地址获取指令过程中的延迟最小化。所述下部管线可继续执行,直到所述被错误预测分支指令确认为止,此时从所述下部管线冲洗出所有未提交的指令。可通过添加被错误预测分支识别符来利用现存的异常管线冲洗机构,从而降低冲洗所述下部管线的复杂性和硬件成本。
Description
技术领域
本发明大体上涉及管线式处理器中的分支预测,且特定来说,涉及在不同时间独立地冲洗同一管线的两个区段以使性能最大化且有效校正被错误预测分支指令的系统和方法。
背景技术
大多数现代处理器采用管线式架构,其中各具有多个执行步骤的循序指令在执行中重叠。为获得最大性能,指令应连续流动通过管线。然而,指令常出于多种原因而在管线中中止,所述原因例如为指令之间的数据相依性、与存储器存取相关联的延迟、无法向指令分配充分的管线资源等。使管线中止最小化并将其有效解决是实现改善的处理器性能中的重要因素。
大多数现实程序包含条件分支指令,其实际分支行为并非已知,直到在管线深处评估所述指令为止。大多数现代处理器采用各种形式的分支预测,借此在管线中较早地预测条件分支指令的分支行为,且处理器基于分支预测而获取且推测性地执行指令,推测性地向所述指令分配管线资源。当确定实际分支行为时,如果分支被错误预测,那么必须从管线冲洗推测性地获取的指令,且必须将推测性地分配的资源解除分配并返回到其在分支预测之前的状态,且必须从正确的分支目标地址获取新的指令。
一方面,理想上应在检测到错误预测之后立即冲洗管线,使得可获取正确的指令并发出到管线中,从而使由分支错误预测引起的延迟最小化。另一方面,从错误的分支路径获取的指令可能在推测性执行的各个阶段中,且可能已被推测性地分配有各种处理器资源。立即“解开(unwinding)”这些分配以将资源恢复到其预分支预测状态是困难的,且可能招致许多处理器循环和/或需要推测性地分配的资源的许多重复复制。由立即冲洗管线招致的代价在支持无序指令执行的处理器(例如,超标量处理器)中由于跟踪相对指令年龄的额外挑战而进一步加剧。此指令年龄跟踪是必要的,用以确保仅冲洗在被错误预测分支指令之后(以编程次序)获取的那些指令,且执行在分支指令之前(以编程次序)的所有指令,即使其在管线中可能在分支指令之后。
发明内容
在确定分支错误预测之后,处理器可通过继续正常执行(理想上)仅若干循环且利用在异常情况下处置管线冲洗的现存硬件,来减轻从其管线冲洗错误地获取且推测性地执行的指令的任务。此过程可显著降低响应于分支错误预测而冲洗管线的成本和复杂性。然而,所招致的额外延迟妨碍了立即冲洗管线以从正确的分支目标地址快速获取指令的目标。
根据一个或一个以上实施例,在检测到分支指令经错误预测后立即冲洗管线的在脱离编程次序的指令之前的上部部分,从而允许从正确的分支目标地址立即获取指令。管线的每一下部部分可继续执行,直到所述被错误预测分支指令确认为止,此时从下部管线冲洗所有未提交的指令。可通过添加被错误预测分支识别符来利用现存的异常管线冲洗机构,从而降低冲洗下部管线的复杂性和硬件成本。
一个实施例涉及一种在允许无序执行的管线式处理器中执行指令的方法。在检测到分支指令错误预测之后,冲洗上部管线,即管线的在指令可脱离编程次序的点之前的部分。在提交所述被错误预测分支指令以供执行之后,从下部管线,即超过其指令可脱离编程次序的管线部分冲洗所有未提交的指令。
另一实施例涉及一种处理器。所述处理器包含:控制逻辑;以及分段指令执行管线,其包括在指令可为无序的点之前的上部管线以及超过指令可为无序的所述点的一个或一个以上下部管线。所述控制逻辑操作以在检测到被错误预测分支之后从所述上部管线冲洗所有指令,且进一步操作以在提交所述被错误预测分支指令以供执行之后从所述下部管线冲洗所有未提交的指令。
附图说明
图1是具有用于分支错误预测的分段管线冲洗的超标量管线式处理器的一个实施例的功能框图。
图2是图1的处理器中的指令执行方法的流程图。
具体实施方式
图1描绘具有用于分支错误预测的分段管线冲洗的处理器10的功能框图。处理器10根据控制逻辑11在指令执行管线12中执行指令,控制逻辑11包含指令排序机构(IOM)13。如本文更详细解释,将管线12逻辑上划分为上部14部分和下部部分16。管线12可为超标量设计,其具有多个平行下部管线16a、16b。管线14、16包含以管级组织的各种寄存器或锁存器18,以及例如算术逻辑单元(ALU)(未图示)等逻辑和计算电路。通用寄存器(GPR)堆20提供构成存储器层级顶部的寄存器。如本文论述,GPR 20可包含推测性重命名表(SRT)22和所提交重命名表(CTR)24,用以向指令推测性地分配GPR资源。
上部管线14从指令高速缓冲存储器(I-高速缓冲存储器或I$)26获取指令,其中由指令侧翻译旁视缓冲器(ITLB)28管理存储器寻址和许可。从数据高速缓冲存储器(D-高速缓冲存储器或D$)30存取数据,其中由主翻译旁视缓冲器(TLB)32管理存储器寻址和许可。在各种实施例中,ITLB 28可包括TLB 32的部分的副本。或者,可整合ITLB28与TLB 32。类似地,在处理器10的各种实施例中,可统一I-高速缓冲存储器26与D-高速缓冲存储器30。
I-高速缓冲存储器28和/或D-高速缓冲存储器30中的未命中致使在存储器接口36(未图示的其它高速缓冲存储器可能介于处理器10与主存储器34之间)的控制下对主(芯片外)存储器34的存取。处理器10可包含输入/输出(I/O)接口38,其控制对各种外围装置40、42的存取。所属领域的技术人员将认识到,处理器10的许多变型是可能的。举例来说,处理器10可包含二级(L2)高速缓冲存储器以用于I和D高速缓冲存储器26、30中的一者或两者。另外,可从特定实施例中省略处理器10中所描绘的功能块中的一者或一者以上。
将管线12逻辑划分为上部管线14以及一个或一个以上下部管线16是由可从上部管线14立即冲洗哪些指令的确定性来确定的,而与指令次序无关。具体来说,将上部管线14界定为管线12的在指令可能脱离编程次序的点之前的部分。类似地,将下部管线16界定为管线12的超过上部管线14或在上部管线14之后的部分。在支持无序执行的处理器中,可将下部管线16中的指令以其编程次序以外的次序分派给管级。在大多数实施例中,上部管线14将包括所有获取和解码级,且下部管线16包含指令发布级(在超标量管线的情况下)和一个或一个以上执行管线。
管线12的此逻辑划分允许在检测到分支错误预测之后立即冲洗上部管线14,从而使从正确的分支目标地址获取指令所需的时间最小化。其另外允许下部管线14继续执行,因此利用现存的异常冲洗机构来从下部管线14有效地冲洗在被错误预测分支之后推测性地获取的所有指令。
上部管线14冲洗是直接的。因为上部管线14被界定为在指令可能脱离编程次序的点之前,且被错误预测分支的确定在下部管线16中的执行级中发生,所以已知在错误预测确定时在上部管线40中的所有指令比被错误预测分支指令新。也就是说,其全部是依赖于分支预测而获取的,且可全部例如在被错误预测分支的检测之后的循环中被安全地冲洗。这允许处理器10尽可能早的开始从正确的分支目标地址获取指令,从而使管线中止持续时间最小化。
冲洗下部管线16较成问题。因为指令可能不是以编程次序执行,所以无法假定管线中在被错误预测分支之后的所有指令均比被错误预测分支指令新且冲洗是安全的。举例来说,考虑以下指令:LD、ADD、BR,其中LD提供用于ADD的操作数,但BR与任一者无关。LD操作需要存储器存取,其尤其在D-高速缓冲存储器30未命中的情况下可使管线16中止。当然,ADD必须等待LD完成。然而,可将独立的BR指令分派到下部管线16中以用于在LD和ADD之前执行。如果BR条件评估检测到其被错误预测,那么处理器无法简单地冲洗在BR指令之后的下部管线16。其将冲洗LD和ADD,此两者以编程次序在BR之前,且必须被执行。
大多数超标量处理器10包含作为管线控制逻辑11的部分的指令次序管理器(IOM)。IOM通过将以真实编程次序的指令的表示维持在例如环形缓冲器、FIFO等中,来跟踪通过管线的指令执行的次序,即,哪些指令比给定指令旧或新。通过与指令表示相关联的属性或旗标,IOM另外跟踪指令相依性,且有助于异常处置。根据一个或一个以上实施例,处理器10中的IOM 13包含促进在发现被错误预测分支指令之后有效地冲洗下部管线的额外电路和逻辑。对IOM 13在异常处置中的作用的简要回顾将阐明根据本文所揭示和主张的实施例的下部管线16的被错误预测分支冲洗。
每当管级不能完成其指令步骤的执行时,便发生异常。举例来说,将数据写入存储器的存储指令可能在TLB 32查找指示存储器页是只读的情况下引起异常。其它类型的异常是此项技术中众所周知的。一旦遇到异常,处理器10必须执行管线12中的所有先前或较旧的指令,从管线12冲洗引起异常的指令和所有较新的指令,且随后获取且执行中断处置码。IOM 13通过跟踪哪些指令“被确认”且哪些指令“被提交”来辅助此过程。
当确定没有管线竞争将阻碍指令执行,即指令将不会中止时,指令被确认。举例来说,在已知两个操作数已从先前指令产生、从存储器获取或以其它方式可用时可确认执行算术或逻辑运算的指令。在所述指令和所有较旧指令被确认时提交指令。已知被提交的指令能够完成执行,因为没有管线竞争阻碍其(指令本身被确认)或其之前的任何指令(所有较旧指令被确认)。所有被提交的指令必须执行。
异常处置期间的常规规则是当引起异常的指令是“最后一个未提交的指令”时从管线12冲洗所有未提交的指令。也就是说,已提交在引起异常的指令之前的所有指令以供执行,但未提交所述引起异常的指令和比其新的所有指令。未提交的指令(包含所述引起异常的指令)被冲洗,且被提交的指令继续执行。从中断处置程序地址获取新的指令。
不同于引起异常的指令,必须执行且不冲洗被错误预测分支指令。仅分支预测是错误的,分支指令本身必须执行且将程序流引导到适当的分支目标地址。因此,当被错误预测分支指令是“最新提交的指令”时,从所有下部管线16a、16b冲洗所有未提交的指令。也就是说,已提交被错误预测分支指令和其之前的所有指令以供执行,但未提交在所述分支之后的所有指令(从错误地预测的分支目标地址获取的指令)。冲洗未提交的指令被,且被提交的指令(包含被错误预测分支指令)继续执行。
在一个或一个以上实施例中,IOM 13中的每一条目包含被错误预测分支(MPB)旗标或位字段,其在所述IOM 13条目被创建时经初始化为未断言状态。分支指令通常将在其分支评估之后立即确认,因为其没有其它数据相依性。确认管级跟随其中执行分支指令的每一管线16a、16b中的分支条件评估级,且在IOM 13中设置确认旗标。确认管级另外将分支评估与其预测值进行比较,且还在分支被错误预测的情况下在IOM 13中设置MPB旗标。一旦在提交指令以供执行时遇到MPB旗标,IOM 13和相关联的控制逻辑11便可根据上述“最新提交的指令”规则实施下部管线16冲洗。
IOM 13中从被错误预测分支指令的错误预测检测到确认和提交的延迟通常应仅占用数个循环。同时,上部管线14的立即冲洗意味着已经开始从正确的分支目标地址进行指令获取。在某些情况下,例如上述LD、ADD、BR实例,在检测到分支错误预测与分支指令的确认之间可能存在显著延迟,其使得能够进行下部管线16冲洗。作为对冲洗下部管线16占用比(例如)上部管线14的深度多的循环的可能性的预防,可在上部管线14与下部管线16之间的边界处或所述边界之前设置管线暂停(pipeline hold)。所述暂停(当下部管线16的冲洗完成时将其移除)防止错误地冲洗从正确的分支目标地址获取的任何指令。条件管线暂停是此项技术中众所周知的,且可由所属领域的技术人员容易地实施而无需本文中的进一步阐明。
冲洗下部管线16过程中的另一复杂情况是在冲洗之后恢复推测性地分配的处理器资源的正确状态。举例来说,寄存器重命名是已知的GPR 20管理方法,其中经由重命名表中的映射将逻辑GPR识别符(r0、r1、r2...)动态映射到大的物理寄存器组。寄存器重命名系统避免了无序指令执行中固有的数据竞争中的许多数据竞争。在操作中,针对对GPR20寄存器进行写入的每个指令,分配新的物理寄存器,且在重命名表中记录新的逻辑到物理“重命名”。对GPR 20进行读取的指令经由重命名表查找将其逻辑GPR识别符翻译为物理寄存器编号。物理寄存器编号在寄存器读取指令通过管线16的整个占用期中保持与所述寄存器读取指令相关联。
在寄存器重命名系统中,GPR 20写入并不“破坏”写入到相同逻辑GPR识别符的先前值,写入被引导到新的未使用的物理寄存器。以编程次序跟随写入指令的指令被引导到所述新的物理寄存器,且获得写入值。以编程次序在写入指令之前的指令被重命名表映射到不同的物理寄存器(在重命名操作之前),且将继续存取所述物理寄存器。因此,可在从所述GPR识别符读取先前值的指令之前执行写入给定GPR识别符的指令(读取后写入竞争,或WaR)或向其写入先前结果的指令之前执行写入给定GPR识别符的指令(写入后写入竞争,或WaW)。以此方式,避免了WaR和WaW数据竞争。
逻辑GPR识别符到物理寄存器的重命名是处理器资源的推测性分配。因为指令可无序执行,所以指令可在以编程次序在写入指令之前的另一指令的执行之前写入逻辑GPR识别符(且被分配有新的物理寄存器)。如果所述另一指令引起异常或是被错误预测分支指令,那么可从管线16冲洗写入指令且将其物理寄存器解除分配。另一方面,必须保留在所述写入指令之前的寄存器重命名。
为了能够在任何时间(例如紧接在检测到被错误预测分支之后)冲洗下部管线16并恢复,在每次将逻辑GPR识别符重命名到物理寄存器时,即每次将寄存器写入指令发出到管线16中时,必须创建重命名表的单独副本,且必须维持所述副本直到寄存器写入指令提交以供执行为止。随后可基于从管线16冲洗了哪些指令来选择性地丢弃这些寄存器表。在维持重命名表的许多副本方面,以及在当冲洗管线16时逻辑跟踪必须丢弃哪些重命名表方面,此方法都是昂贵的。
在一个或一个以上实施例中,仅维持重命名表的两个副本:推测性重命名表(SRT)22和所提交重命名表(CRT)24。每次在将逻辑GPR识别符重命名到新的物理寄存器时更新SRT 22。仅当提交相关的寄存器写入指令以供执行时才更新CRT 24中的寄存器重命名映射。当由于被错误预测分支而冲洗下部管线16时,由于被错误预测分支指令是最新提交的指令,因此已知在分支之前(以编程次序)提交的所有寄存器写入指令均将其寄存器重命名映射记录在CRT 24中。此外,已知由在被错误预测分支指令之后(以编程次序)的寄存器写入指令执行的任何寄存器重命名均仅被记录在SRT 22中而不记录在CRT 24中。应丢弃这些寄存器重命名,且作为下部管线16冲洗的一部分将相关联的物理寄存器解除分配。
在一个或一个以上实施例中,当在被错误预测分支指令是最新提交的指令时由于被错误预测分支而冲洗下部管线16时,将CRT 24复制到SRT 22。这从被错误预测分支指令时起使SRT 22处于正确状态,且将推测性地分配给经冲洗寄存器写入指令的物理寄存器解除分配。通过在被错误预测分支指令提交前维持仅两个重命名表且推迟冲洗下部管线16,大大简化了将推测性地分配的处理器资源解除分配的任务。
图2描绘根据一个或一个以上实施例的在允许无序执行的管线式处理器10中执行指令的方法。相关方法在处理器10检测到被错误预测分支(MPB)时开始(方框100)。这通常将发生在下部管线16a、16b中的执行(EXE)级中。紧接在检测到MPB之后,处理器10例如在下一循环中冲洗上部管线14(102),且开始从正确的分支目标地址获取指令(方框114)。处理器10随后在上部管线14上设置暂停(方框116)直到冲洗下部管线16为止。当所述暂停被释放时,正常的处理器10执行继续(方框118)。
并行地,处理器10在下部管线16中继续执行,直到MPB指令确认为止(方框120)。此确认通常将紧接在检测到分支错误预测之后发生于管级中。当MPB指令确认时(方框120),在IOM 13中设置确认旗标和MPB旗标(方框122)。正常的处理继续,直到MPB指令提交为止。当MPB指令是最新提交的指令时(方框124),IOM 13触发从下部管线16冲洗所有未提交的指令(方框126)。处理器10随后将CRT 24复制到SRT 22,且继续正常的执行(方框118)。
以此方式,实施例实现了对上部管线14的即时冲洗,从而使从正确的分支目标地址获取指令过程中的延迟最小化,并实现了对下部管线16的有效冲洗,从而避免复杂计算和重复硬件,以正确地仅冲洗从错误分支目标地址获取的指令且将推测性地分配给所述指令的处理器资源解除分配。尽管本文已参考实施异常冲洗的IOM 13描述了实施例,但本发明不限于这些实施例。具体来说,本文描述的用以在被错误预测分支指令变为最新提交的指令时从下部管线16冲洗所有未提交的指令的指令跟踪机构不需要也执行异常冲洗。此外,尽管本文相对于寄存器重命名方案描述了处理器资源10的推测性分配,但许多其它形式的推测性资源分配是此项技术中已知的,例如重命名缓冲器等。
当然,可在不脱离本发明的本质特征的情况下,以除了本文特定陈述的方式以外的其它方式来实行本发明。本发明实施例将在所有方面均被视为说明性而不是限制性的,且既定将处于所附权利要求书的含义和等效范围内的所有改变均包含于其中。
Claims (15)
1.一种在允许无序执行的管线式处理器中执行指令的方法,其包括:
在检测到分支指令的错误预测之后,在指令可能脱离编程次序的点之前立即冲洗上部管线;以及
在提交被错误预测的分支指令以供执行之后,超过指令可能脱离编程次序的所述点从下部管线冲洗所有未提交的指令,其包括使用指令排序机构来跟踪指令的被确认和被提交状态,且在所述被错误预测的分支指令是最新的被确认指令时从所述下部管线冲洗所有未提交的指令。
2.根据权利要求1所述的方法,其进一步包括在确认所述被错误预测的分支指令之后在所述指令排序机构中指示所述被错误预测的分支指令。
3.根据权利要求2所述的方法,其中从所述下部管线冲洗所有未提交的指令包括:当所述被错误预测的分支指令是最新提交的指令时,响应于所述指令排序机构中的被错误预测分支指令指示符而冲洗所述未提交的指令。
4.根据权利要求2所述的方法,其中所述处理器包含两个或两个以上管线,且其中履行分支指令执行的每一管线包含确认级,所述确认级操作以在所述指令排序机构中设置所述被错误预测分支指令指示符。
5.根据权利要求1所述的方法,其进一步包括在冲洗所述上部管线之后,从正确的分支指令目标地址获取指令。
6.根据权利要求5所述的方法,其进一步包括在冲洗所述上部管线之后,在指令可变为无序的所述点处或所述点之前使所述上部管线中止,直到从所述下部管线冲洗所有未提交的指令为止。
7.根据权利要求6所述的方法,其中推测性地分配的资源包含寄存器重命名资源。
8.根据权利要求1所述的方法,其进一步包括在从所述下部管线冲洗未提交的指令之后,将推测性地分配给未提交的指令的资源解除分配。
9.根据权利要求8所述的方法,其中将推测性地分配给未提交的指令的资源解除分配包含:将所提交寄存器重命名表的内容复制到推测性寄存器重命名表。
10.一种处理器,其包括:
控制逻辑单元;以及
分段指令执行管线,其包括在指令可能脱离编程次序的点之前的上部管线以及超过指令可能脱离编程次序的所述点的一个或一个以上下部管线;
其中所述控制逻辑单元操作以在检测到被错误预测分支之后从所述上部管线立即冲洗所有指令,且进一步操作以在提交所述被错误预测分支指令以供执行后从所述下部管线冲洗所有未提交的指令;并且
其中所述控制逻辑单元包含指令排序机构,所述指令排序机构操作以跟踪指令的被确认和被提交状态,且进一步操作以在所述被错误预测分支指令是最新的被确认指令时从所述下部管线冲洗所有未提交的指令。
11.根据权利要求10所述的处理器,其中所述控制逻辑单元进一步操作以在冲洗所述上部管线之后的循环中从正确的分支目标地址获取指令。
12.根据权利要求11所述的处理器,其中所述控制逻辑单元进一步操作以在所述上部管线冲洗之后在所述上部管线的末尾设置暂停,且在从所述下部管线冲洗所有未提交的指令后移除所述暂停。
13.根据权利要求10所述的处理器,其中所述指令排序机构中的每一条目包含相关联的指令是否为被错误预测分支指令的指示。
14.根据权利要求13所述的处理器,其中执行分支指令的每一下部管线包含确认状态,所述确认状态操作以在分支指令被确定为已被错误预测时在所述指令排序机构中设置被错误预测分支指示。
15.根据权利要求10所述的处理器,其进一步包括:
通用寄存器(GPR)堆,其操作以将通用寄存器(GPR)逻辑识别符动态地关联到物理寄存器,所述通用寄存器(GPR)堆包括:
多个物理寄存器;
推测性重命名表(SRT),其含有所有当前通用寄存器(GPR)逻辑识别符到物理寄存器的映射;以及
所提交重命名表(CRT),其含有仅针对已被提交的指令的通用寄存器(GPR)逻辑识别符到物理寄存器的映射;
其中所述控制逻辑单元操作以在从所述下部管线冲洗所有未提交的指令后将所述所提交重命名表(CRT)的内容复制到所述推测性重命名表(SRT)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/626,443 | 2007-01-24 | ||
US11/626,443 US7624254B2 (en) | 2007-01-24 | 2007-01-24 | Segmented pipeline flushing for mispredicted branches |
PCT/US2008/051966 WO2008092045A1 (en) | 2007-01-24 | 2008-01-24 | Segmented pipeline flushing for mispredicted branches |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101601009A CN101601009A (zh) | 2009-12-09 |
CN101601009B true CN101601009B (zh) | 2015-09-16 |
Family
ID=39327442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880002977.XA Expired - Fee Related CN101601009B (zh) | 2007-01-24 | 2008-01-24 | 处理器及在其中执行指令的方法 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7624254B2 (zh) |
EP (1) | EP2115572B1 (zh) |
JP (4) | JP2010517183A (zh) |
KR (1) | KR101107812B1 (zh) |
CN (1) | CN101601009B (zh) |
BR (1) | BRPI0807405A2 (zh) |
CA (1) | CA2674720C (zh) |
MX (1) | MX2009007949A (zh) |
RU (1) | RU2427889C2 (zh) |
WO (1) | WO2008092045A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7624254B2 (en) * | 2007-01-24 | 2009-11-24 | Qualcomm Incorporated | Segmented pipeline flushing for mispredicted branches |
US9384003B2 (en) * | 2007-10-23 | 2016-07-05 | Texas Instruments Incorporated | Determining whether a branch instruction is predicted based on a capture range of a second instruction |
US7877586B2 (en) * | 2008-02-01 | 2011-01-25 | International Business Machines Corporation | Branch target address cache selectively applying a delayed hit |
US8099586B2 (en) * | 2008-12-30 | 2012-01-17 | Oracle America, Inc. | Branch misprediction recovery mechanism for microprocessors |
US20110320787A1 (en) * | 2010-06-28 | 2011-12-29 | Qualcomm Incorporated | Indirect Branch Hint |
EP2588952A4 (en) | 2010-06-29 | 2017-10-04 | Exxonmobil Upstream Research Company | Method and system for parallel simulation models |
US8886920B2 (en) | 2011-05-13 | 2014-11-11 | Oracle International Corporation | Associating tag to branch instruction to access array storing predicted target addresses for page crossing targets for comparison with resolved address at execution stage |
US8862861B2 (en) | 2011-05-13 | 2014-10-14 | Oracle International Corporation | Suppressing branch prediction information update by branch instructions in incorrect speculative execution path |
CN102360282A (zh) * | 2011-09-26 | 2012-02-22 | 杭州中天微系统有限公司 | 快速处置分支指令预测错误的流水线处理器装置 |
US9738197B2 (en) | 2011-11-29 | 2017-08-22 | Ts Tech Co., Ltd. | Mounting member and airbag module-equipped seat |
US9268569B2 (en) * | 2012-02-24 | 2016-02-23 | Apple Inc. | Branch misprediction behavior suppression on zero predicate branch mispredict |
CN105164637B (zh) * | 2013-05-30 | 2017-12-19 | 英特尔公司 | 用于执行循环的方法、系统、装置和处理器以及机器可读介质 |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10255074B2 (en) | 2015-09-11 | 2019-04-09 | Qualcomm Incorporated | Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US5627985A (en) * | 1994-01-04 | 1997-05-06 | Intel Corporation | Speculative and committed resource files in an out-of-order processor |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694564A (en) * | 1993-01-04 | 1997-12-02 | Motorola, Inc. | Data processing system a method for performing register renaming having back-up capability |
EP0649086B1 (en) | 1993-10-18 | 2000-07-19 | National Semiconductor Corporation | Microprocessor with speculative execution |
ATE184407T1 (de) * | 1994-01-03 | 1999-09-15 | Intel Corp | Verfahren und vorrichtung zum implementieren eines vierstufigen verzweigungsauflosungssystem in einem rechnerprozessor |
US7496734B1 (en) * | 2000-04-28 | 2009-02-24 | Stmicroelectronics, Inc. | System and method for handling register dependency in a stack-based pipelined processor |
JP3667703B2 (ja) * | 2002-03-18 | 2005-07-06 | エヌイーシーコンピュータテクノ株式会社 | エラー訂正制御回路 |
US7152155B2 (en) * | 2005-02-18 | 2006-12-19 | Qualcomm Incorporated | System and method of correcting a branch misprediction |
US7624254B2 (en) * | 2007-01-24 | 2009-11-24 | Qualcomm Incorporated | Segmented pipeline flushing for mispredicted branches |
-
2007
- 2007-01-24 US US11/626,443 patent/US7624254B2/en not_active Expired - Fee Related
-
2008
- 2008-01-24 EP EP08713995.2A patent/EP2115572B1/en active Active
- 2008-01-24 RU RU2009131712/08A patent/RU2427889C2/ru not_active IP Right Cessation
- 2008-01-24 CA CA2674720A patent/CA2674720C/en not_active Expired - Fee Related
- 2008-01-24 WO PCT/US2008/051966 patent/WO2008092045A1/en active Application Filing
- 2008-01-24 KR KR1020097017596A patent/KR101107812B1/ko not_active IP Right Cessation
- 2008-01-24 BR BRPI0807405-4A patent/BRPI0807405A2/pt not_active Application Discontinuation
- 2008-01-24 CN CN200880002977.XA patent/CN101601009B/zh not_active Expired - Fee Related
- 2008-01-24 MX MX2009007949A patent/MX2009007949A/es active IP Right Grant
- 2008-01-24 JP JP2009547432A patent/JP2010517183A/ja active Pending
-
2012
- 2012-06-13 JP JP2012133878A patent/JP5866259B2/ja not_active Expired - Fee Related
-
2014
- 2014-06-12 JP JP2014121814A patent/JP6208084B2/ja not_active Expired - Fee Related
-
2016
- 2016-04-15 JP JP2016082077A patent/JP6370829B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5627985A (en) * | 1994-01-04 | 1997-05-06 | Intel Corporation | Speculative and committed resource files in an out-of-order processor |
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 |
Also Published As
Publication number | Publication date |
---|---|
CA2674720A1 (en) | 2008-07-31 |
CA2674720C (en) | 2015-02-03 |
US20080177992A1 (en) | 2008-07-24 |
EP2115572A1 (en) | 2009-11-11 |
MX2009007949A (es) | 2009-08-07 |
JP6370829B2 (ja) | 2018-08-08 |
BRPI0807405A2 (pt) | 2014-07-08 |
JP6208084B2 (ja) | 2017-10-04 |
US7624254B2 (en) | 2009-11-24 |
RU2427889C2 (ru) | 2011-08-27 |
JP2010517183A (ja) | 2010-05-20 |
JP2014211881A (ja) | 2014-11-13 |
KR20090102871A (ko) | 2009-09-30 |
WO2008092045A1 (en) | 2008-07-31 |
EP2115572B1 (en) | 2015-03-11 |
JP2016167284A (ja) | 2016-09-15 |
JP5866259B2 (ja) | 2016-02-17 |
JP2012230687A (ja) | 2012-11-22 |
RU2009131712A (ru) | 2011-02-27 |
KR101107812B1 (ko) | 2012-01-25 |
CN101601009A (zh) | 2009-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101601009B (zh) | 处理器及在其中执行指令的方法 | |
US10956163B2 (en) | Processor support for hardware transactional memory | |
US5666506A (en) | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle | |
US7689812B2 (en) | Method and system for restoring register mapper states for an out-of-order microprocessor | |
US7529914B2 (en) | Method and apparatus for speculative execution of uncontended lock instructions | |
US7877580B2 (en) | Branch lookahead prefetch for microprocessors | |
EP1296229B1 (en) | Scoreboarding mechanism in a pipeline that includes replays and redirects | |
US6963967B1 (en) | System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture | |
US7660971B2 (en) | Method and system for dependency tracking and flush recovery for an out-of-order microprocessor | |
US9535744B2 (en) | Method and apparatus for continued retirement during commit of a speculative region of code | |
US6598156B1 (en) | Mechanism for handling failing load check instructions | |
US10545765B2 (en) | Multi-level history buffer for transaction memory in a microprocessor | |
JPH07160500A (ja) | 推論的実行を行うマイクロプロセッサ | |
Hilton et al. | Ginger: Control independence using tag rewriting | |
EP1296228B1 (en) | Instruction Issue and retirement in processor having mismatched pipeline depths |
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: 20150916 Termination date: 20190124 |
|
CF01 | Termination of patent right due to non-payment of annual fee |