CN1790256A - 用于微处理器的分支前瞻预取 - Google Patents
用于微处理器的分支前瞻预取 Download PDFInfo
- Publication number
- CN1790256A CN1790256A CN200510124656.5A CN200510124656A CN1790256A CN 1790256 A CN1790256 A CN 1790256A CN 200510124656 A CN200510124656 A CN 200510124656A CN 1790256 A CN1790256 A CN 1790256A
- Authority
- CN
- China
- Prior art keywords
- instruction
- microprocessor
- branch
- execution
- unsettled
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 35
- 230000008859 change Effects 0.000 claims description 13
- 230000008034 disappearance Effects 0.000 claims description 7
- 238000001514 detection method Methods 0.000 claims 3
- 238000012545 processing Methods 0.000 abstract description 21
- 230000007812 deficiency Effects 0.000 abstract 1
- 239000013598 vector Substances 0.000 description 20
- 230000007246 mechanism Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 5
- 238000007667 floating Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000000875 corresponding effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000010387 memory retrieval Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000001105 regulatory effect Effects 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/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
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
对相关申请的交叉引用
本申请与发明名称为“LOAD LOOKAHEAD PREFETCH FORMICROPROCESSORS”且与本申请同时申请的美国专利申请No.__(律师事务所案号AUS920030644US1)、以及发明名称为“USING A MODIFIED VALUE GPR TO ENHANCE LOOKAHEADPREFETCH”且与本申请同时申请的美国专利申请No.__(律师事务所案号AUS920031068US1)相关,在此合并这两个申请中的每一个。
技术领域
本发明一般涉及计算机系统,特别涉及一种在处理器中处理程序指令的改进方法、以及一种改进的处理器设计。
背景技术
高性能计算机系统使用多个处理器来执行包含在计算机程序如软件应用和操作系统中的各条程序指令。典型的多处理器系统10在图1中示出。计算机系统10具有被安排在一个或多个处理器组中的一个或多个处理单元;在所示系统中,在处理器组14中存在四个处理单元12a、12b、12c和12d。这些处理单元经由系统或结构(fabric)总线16与系统10的其它组件通信。结构总线16连接到系统存储器20、以及各种外设22。服务处理器18a、18b经由JTAG接口或其它外部服务端口连接到处理单元12。处理器桥24可以可选地用来互连附加的处理器组。系统10还可以包括固件(未示出),其存储了系统的基本输入/输出逻辑,并且每当开始打开(引导)计算机系统时,从外设之一找出并装载操作系统。
系统存储器20(随机存取存储器或RAM)在易失性(临时)状态下存储由处理单元使用的程序指令和操作数数据。外设22可以使用PCI主机桥经由例如外围组件互连(PCI)本地总线连接到结构总线16。PCI桥提供低延迟路径,处理单元12a、12b、12c和12d通过其可以访问映射在总线存储器或I/O地址空间内的任何地方的PCI设备。PCI主机桥22还提供高带宽路径,以允许PCI设备访问RAM 20。这样的PCI设备可以包括网络适配器、小型计算机系统接口(SCSI)适配器、以及诸如工业标准体系结构(ISA)扩展总线的扩展总线桥,其中小型计算机系统接口(SCSI)适配器提供与永久性存储设备(即,硬盘)的互连,并且扩展总线桥用于连接到输入/输出(I/O)设备,其包括键盘、连接到显示设备的图形适配卡、以及与显示设备一起使用的图形定点设备(鼠标)。
在对称多处理器(SMP)计算机中,所有处理单元12a、12b、12c和12d一般相同,也就是,它们全都使用共同的指令集或子集和协议操作,并且一般具有相同的体系结构。如处理单元12a所示,每个处理单元可以包括一个或多个处理器核心26a、26b,其执行程序指令,以便操作计算机。示例性处理器核心包括由国际商业机器公司出售的Power5TM处理器,其包括单集成电路超标量微处理器,该微处理器具有全都由集成电路形成的各种执行单元(定点单元、浮点单元、以及装载/存储单元)、寄存器、缓冲器、存储器和其它功能单元。处理器核心可以根据简化指令集计算(RISC)技术来操作,并且可以采用指令的流水线和无序执行,以便进一步提高超标量体系结构的性能。
每个处理器核心26a、26b可以包括使用高速存储器设备实现的板上(L1)高速缓存(典型地,单独的指令高速缓存和数据高速缓存)。高速缓存通常用来临时存储可能被处理器反复访问的值,以便通过避免从系统存储器20装载值的较长步骤来加速处理。处理单元可以包括另一个高速缓存,即第二级(L2)高速缓存28,其随同存储器控制器30一起支持分别是核心26a和26b的一部分的两个L1高速缓存。可以提供另外的高速缓存级别,例如可通过结构总线16访问的L3高速缓存32。从最高(L1)到最低(L3),每个高速缓存级别可以依次地存储更多信息,但是具有较长的访问惩罚。例如,处理器核心中的板上L1高速缓存可能具有128千字节存储器的存储容量,L2高速缓存28可能具有512千字节的存储容量,而L3高速缓存32可能具有2兆字节的存储容量。为了帮助修复/替换有缺陷的处理单元组件,每个处理单元12a、12b、12c、12d可以以可替换的电路板或者类似的现场可替换单元(FRU)的形式构造,这样,可以容易地以模块化的方式将其换入或换出系统10。
在流水线超标量处理器内,首先取指令,对其进行解码,然后进行缓冲。当资源和操作数变得可用时,可以将指令调度到执行单元。另外,可以根据关于所采取的分支的预测来推测性地取指令。其结果是不同的执行阶段中的指令池,其中这些指令都没有通过向系统存储器分级结构写入最终结果而完成。当资源变得可用并且决定了分支时,按照程序次序退出指令,由此保持了按照程序次序执行指令的机器表象。通过修改处理器内的硬件,例如通过在单个处理器核心中具有多个执行单元,可以进一步提高总体指令吞吐量。在超标量体系结构中,可以有序和无序地完成指令。有序完成意味着没有指令可以在其前调度的所有指令已经完成之前完成。无序完成是指只要满足预定义的规则,就允许指令在其前的所有指令已经完成之前完成。微处理器可以提供不同级别的无序执行支持,这意味着可以限制无序识别和执行指令的能力。
限制无序执行支持的一个主要动机是识别哪些指令可以较早执行以及跟踪和存储无序结果所需的极高复杂性。当根据有序执行模型确定无序执行的指令不正确,从而要求在较旧的指令产生异常时它们的执行不影响处理器的体系结构(architected)状态时,出现附加的复杂性。随着处理器速度继续增高,消除与无序执行相关联的一些复杂性变得越来越有吸引力。该改变将从芯片中去除通常用来跟踪无序指令的逻辑电路(及其对应的芯片区域、或者“地产”),从而允许额外的地产变得可供其它处理功能使用。
因为在代码中存在很多分支,所以典型的指令流是非线性的。分支指令根据特定先前的计算结果来选择两条路径之一。由于在实际执行了分支之前不能完全决定下一个指令地址,因此在分支和下一条指令之间通常将存在较长的停顿(stall)。如上所述,现代处理器实现了某种形式的预测,以便推测性地取出分支之后的指令,在大多数情况下,这完全地消除了该停顿。然而,这样的机制都不是完美的,从而将不可避免地出现这样的情况,其中将不正确的指令取到机器中,并且需要某种形式的耗时纠正操作来确保仅执行正确的指令。在该时间期间,不能向前继续。
该障碍被在指令调度期间可能发生的其它延迟进一步加剧。例如,系统可能由于除了分支误预测之外的其它原因而进入停顿状态,例如在以下情况下发生的装载高速缓存“缺失”,即指令所需的数据在第一级(L1)高速缓存中不可用,并且微处理器被迫等待,直到可以从较慢的高速缓存或者主存储器检索到数据为止。从主存储器获得数据是较慢的操作,并且当由于前述复杂性而限制了无序执行时,不能完全地执行后续指令,直到从存储器接收到有效数据为止。
更具体地说,花费较长时间执行的较旧指令可能产生停顿,其可能阻止任何较新或后续指令包括分支指令执行,直到该耗时的指令完成为止。在没有支持所有无序执行场景的设施的情况下,通常就不可能改变指令次序,使得在检索缺失数据的时候可以进行指令流的向前继续。
鉴于前述内容,期望设计一种处理不正确分支预测的改进方法。如果该方法可以通过在停顿状态期间识别和执行指令流中的分支而不改变机器的体系结构状态来减小与具有简化或受限无序执行支持的微处理器中的分支误预测相关联的延迟,这将是有利的。
发明内容
因此,本发明的一个目的是提供一种在计算机处理器中处理程序指令的改进方法。
本发明的另一个目的是提供这样的方法,其减小与不正确的分支预测相关联的延迟。
本发明的另一个目的是提供一种用于减轻误预测分支和其它停顿状态对总体性能的影响的方法和系统。
前面目的在一种通过以下操作在微处理器中处理程序指令的方法中实现,即在程序指令的执行期间检测停顿状态的发生,在通常情况下其将会停顿执行线程,在停顿状态期间推测性地执行一条或多条未决指令,其包括至少一条分支指令,并且基于由这些指令利用的数据的有效性的确定而调节这些指令的执行或效果。具体地说,该方法可以检测导致停顿状态的装载指令缺失。本发明特别适于具有受限无序执行支持的处理器,其中,在特定停顿状态下,未决指令不可以在前面调度的未决指令已经完成之前完成。调度逻辑电路和执行单元可以通过标记指令调度单元的一个或多个寄存器来指示未决指令的哪些结果无效,从而确定由推测性地执行的指令使用的数据的有效性。在处理器具有多个流水线级的说明性实施例中,跨越这些流水线级发生指令的推测性执行,并且在该多个流水线级中执行它们的期间,跟踪数据的有效性,同时在该多个流水线级中执行它们的期间监视推测性地执行的指令的彼此相依性。分支预测单元在检测到停顿状态之前预测分支指令的路径,并且将推测性指令从所预测的路径取到指令队列中。如果分支指令的推测性执行指示它被误预测,则从流水线和指令队列中刷新(flush)分支之后的推测性指令,根据分支指令的推测性执行的结果而更新分支预测信息,并且取出已决定的分支目标处的指令,并且将其装载到指令队列中,从而允许执行分支而不会在停顿状态期满之后重新执行(即,非推测性地执行)它时招致误预测惩罚。指令的推测性执行是在不改变微处理器的任何体系结构设施的情况下发生的。
在下面详细的书面描述中,本发明的上述以及其它目的、特性和优点将会变得清楚。
附图说明
通过参照附图,对于本领域的技术人员而言,可以更好地理解本发明,并且其许多目的、特性和优点可以变得清楚。
图1是示出传统的对称多处理器(SMP)计算机系统的方框图,其中针对四个一般相同的处理单元之一示出了内部细节;
图2是根据本发明构造的计算机处理器的一个实施例的方框图,其具有分支前瞻(lookahead)预取机制,以减小与误预测分支相关联的延迟;
图3是示出根据本发明的一种实现在图2的指令调度单元中检查和更新特定寄存器作为随着分支前瞻预取而发生的相依性验证的一部分的流程图;
图4是示出根据本发明的一种实现的用于进入和退出前瞻过程的逻辑流的图;以及
图5是示出根据本发明的一种实现的在分支前瞻预取期间的指令流的图。
在不同的附图中使用相同的附图标记表示类似或相同的项目。
具体实施方式
现在参照附图,并且特别参照图2,示出了根据本发明构造的计算机处理器的一个实施例40。处理器40一般由单集成电路超标量微处理器组成,并且包括全都由集成电路形成的各种执行单元、寄存器、缓冲器、存储器和其它功能单元(下面进一步说明)。处理器40可以根据简化指令集计算(RISC)技术来操作。处理器40通过处理器40内的总线接口单元(BIU)44耦接到系统或结构总线42。BIU 44通过参与总线仲裁来控制处理器40和耦接到系统总线42的其它设备如主存储器之间的信息传输。处理器40、系统总线42、以及耦接到系统总线42的其它设备一起形成主机数据处理系统。本领域的技术人员应当理解,本发明不局限于图2所示的特定构造,这是因为可以省略一些组件、可以添加其它组件或者提供不同的互连,而仍然提供这里公开的新颖功能性。
BIU 44连接到处理器40内的指令高速缓存和存储器管理单元(MMU)46、以及数据高速缓存和MMU 48。高速缓存例如指令高速缓存和MMU 46以及数据高速缓存和MMU 48内的高速缓存使得处理器40能够实现对先前从主存储器传输到这些高速缓存的数据或指令子集的较快访问时间,由此提高主机数据处理系统的操作速度。指令高速缓存和MMU 46还耦接到顺序取出器50,其在每个循环期间从指令高速缓和MMU 46取出指令以便执行。顺序取出器50将从指令高速缓存和MMU46取出的分支指令传送到分支预测单元52,以便计算下一条指令取出地址,但是将顺序指令临时存储在指令队列54内,以便由处理器40内的其它执行电路执行。
处理器40的执行电路具有多个用于执行顺序指令的执行单元,其包括一个或多个定点单元(FXU)56、装载-存储单元(LSU)58、浮点单元(FPU)60以及分支处理单元(BPU)61。这些执行单元56、58、60和61在每个处理器循环期间执行特定类型的顺序指令的一条或多条指令。例如,FXU 56利用从指定的通用寄存器(GPR)62或GPR重命名缓冲器64接收的源操作数,执行定点数学和逻辑运算如加法、减法、与运算、或运算和异或运算。在执行定点指令之后,FXU 56将该指令的数据结果输出到GPR重命名缓冲器64,其为操作数数据提供临时存储,直到通过将结果数据从GPR重命名缓冲器64传输到GPR 62中的一个或多个而完成了指令为止。FPU 60对从浮点寄存器(FPR)66或FPR重命名缓冲器68接收的源操作数执行单精度和双精度浮点算术和逻辑运算。FPU 60将通过执行浮点指令而得到的数据输出到选定FPR重命名缓冲器68,其临时存储结果数据,直到通过将结果数据从FPR重命名缓冲器68传输到选定FPR 66而完成了指令为止。LSU 58执行将数据从存储器(即,数据高速缓存和MMU 48内的数据高速缓存或者主存储器)装载到选定GPR 62或FPR 66中、或者将数据从GPR 62、GPR重命名缓冲器64、FPR 66或FPR重命名缓冲器68中的选定一个存储到系统存储器的浮点和定点指令。BPU 61执行条件代码操纵指令和分支指令。
处理器40可以采用指令的流水线和无序执行,以便进一步提高其超标量体系结构的性能,但是本发明在与有序程序执行一起使用时或者在限制无序执行能力的情况下是特别有利的。对于无序处理,只要遵守数据相依性,指令就可以以任何次序由FXU 56、LSU 58、FPU 60和BPU 61执行。另外,指令可以由FXU 56、LSU 58、FPU 60和BPU 61中的每一个在一系列流水线级(pipeline stage)处执行,具体地说,该系列流水线级为五个不同的流水线级:取出、解码/调度、执行、终结(finish)和完成(completion)。
在取出级期间,顺序取出器50从指令高速缓存和MMU 46检索与一个或多个存储器地址相关联的一条或多条指令。从指令高速缓存和MMU 46取出的顺序指令由顺序取出器50存储在指令队列54内。顺序取出器50从指令流中挑出(fold out)分支指令,并且将它们转发到分支预测单元52,以便处理。分支预测单元52包括分支预测机制,该分支预测机制可以包括动态预测机制如分支历史表,其使得分支预测单元52能够通过预测是否将采取分支来推测性地执行未决定的条件分支指令。
在解码/调度级期间,指令调度单元(IDU)70如下所述将一条或多条指令从指令队列54解码并调度到执行单元56、58、60和61。另外,调度单元70为每个被调度指令的结果数据在GPR重命名缓冲器64或FPR重命名缓冲器68内分配重命名缓冲器。当调度时,指令也被存储在完成单元72的多槽(multiple-slot)完成缓冲器内,以等待完成。处理器40利用唯一指令标识符在无序执行期间跟踪被调度指令的程序次序。
在执行级期间,当用于所指示操作的操作数和执行资源变得有用时,执行单元56、58、60和61条件性地执行从调度单元70接收的指令。执行单元56、58、60和61的每一个优选地配备有保留站,其存储调度到该执行单元的指令,直到操作数或执行资源变得可用为止。在指令的执行终止之后,执行单元56、58、60和61根据指令类型而将数据结果(若有的话)存储在GPR重命名缓冲器64或FPR重命名缓冲器68内。然后,执行单元56、58、60和61向完成单元72通知哪些指令已经终结了执行。最后,通过完成单元72的完成缓冲器按照程序次序完成指令。由FXU 56和FPU 60执行的指令通过将这些指令的数据结果从GPR重命名缓冲器64和FPR重命名缓冲器68分别传输到GPR 62和FPR 66而完成。由LSU 58执行的装载和存储指令通过将终结的指令传输到完成存储队列或完成装载队列而完成,其中将从完成存储队列或完成装载队列执行所指示的装载/存储操作。
处理器40利用分支前瞻预取机制来减小与分支预测单元52的不正确分支预测相关联的延迟。当机器检测到扩展停顿状态(例如,装载指令缺失地址翻译或数据高速缓存)时,启动分支前瞻预取过程,并且开始推测性地执行指令队列54中的后续指令。其目标是识别可以抢先地决定的分支,并且如果误预测指令流的刷新是必要的,则导致取出正确的指令流,使得在以后的时间点非推测性地执行分支时正确的分支路径可用并且避免刷新。通过以推测性的方式实际执行分支指令来识别这些分支。
由于一旦推测性指令完成,则该模式中的数据可能无效并且结果可能不能被存储(不能发生回写,直到导致初始停顿状态的指令完成为止,从而根据实现,可能没有用来存储推测性结果的设施),因此需要跟踪哪些结果无效或“脏”,以及指令如何彼此相依。在发明名称为“LOAD LOOKAHEAD PREFETCH FOR MICROPROCESSORS”且与本申请同时申请的美国专利申请No.__(律师事务所案号AUS920030644US1)中描述的相关发明解决了由装载指令导致的停顿,该专利申请也可以用来定义跟踪大部分该相依性信息的机制。不过,另外需要跟踪特定于分支决定的资源的有效性。信息源用来决定给定分支的源操作数是否有效,以及是否应当允许进行潜在的刷新。
分支前瞻预取使用装载前瞻预取可以提供的相依性跟踪信息。这两种机制可以共存,因为它们解决不同类型的停顿状态。对于示例性实现,每当装载前瞻预取是激活的时,分支前瞻预取也是激活的,但是也可以使用可选的提供相依性信息的方法。一旦激活,分支前瞻预取完成三件事情:跟踪特定于分支决定的任何相依性信息(条件寄存器(CR)、链接寄存器(LR)等);允许执行修改这些资源的指令而不改变机器的体系结构状态;以及确定哪些分支有资格被执行以及可能情况下的刷新。
为了推测性地执行指令,必须防止回写其结果以及改变机器的体系结构状态。为了示例而非限制的目的,通过向在装载/分支前瞻预取下调度的每条指令发送指示它应当被视作推测性的信号,完成该限制。只要它不被写入到体系结构寄存器,就可以将推测性数据存储到单独一组寄存器、小型高速缓存或者根本不存储(但是直到被转发到较新指令的回写点)。在任何情况下,确定哪些分支有资格较早执行需要指令相依性和跟踪结果的有效性。
确切地在何处追踪(trace)相依性信息可以基于如何实现特定处理器而变化。一般而言,可以由多于一个单元读取或修改的任何资源(例如,条件寄存器)最好由IDU跟踪,因为它在调度时候知道所有指令信息,但是在存在单元间相依性时,还可能需要在单元之间对其进行跟踪。仅在一个单元内使用的资源可以在那个单元中或者在IDU中被跟踪。分支前瞻预取过程继续,直到解决了启动装载前瞻预取的初始停顿状态为止。一旦发生这种情况,则正常指令将在被停顿的指令处重新启动。此时清除由IDU 70中的分支前瞻机制跟踪的关于指令有效性的任何信息。
IDU 70维护脏位向量来跟踪在指令完成时哪些结果无效。除了由装载前瞻机制维护的位之外,分支前瞻机制还为任何分支相关寄存器(例如,条件寄存器、LR等)维护脏位。可选实施例可以在另一个位置中,例如在执行单元内,或者采用其有效性正被跟踪的体系结构设施来维护脏位向量。
图3示出了与指令调度单元70中的CR和LR脏向量90和92相关联的检查和更新功能。更具体地说,将维护CR脏位向量90和LR脏位向量92,以便跟踪哪些结果不再可用于转发。脏向量90、92中的位数取决于存在于处理器中的体系结构条件寄存器的数目。
在调度时候,每一条使用CR信息的指令将在CR脏位向量90中查询所有其源寄存器(CRA和CRB),以确定在这些源寄存器中是否有任何寄存器要被认为是无效的。在脏向量92的情况下,对于使用LR作为源的指令也是如此。可选实施例可以在访问寄存器的时候查询寄存器(或其它体系结构设施)向量的脏状态。脏位向量90、92中的所有位初始被设为“0”,并且当指令通过回写级时,这些位被设为“1”。源逻辑电路针对与正被调度的指令相关联的寄存器查询向量90、92中的脏位,然后通过锁存器96将脏位转发到功能单元。可以以下面三种方式之一设置功能单元中的指令脏位(其是指令的一个或多个数据源无效的指示):由装载前瞻使用的任何方法(或者任何可选的跟踪指令相依性的方法)将指令标记为脏;从分支相关转发路径(CR等)读取源数据,并且该数据已经被标记为脏;或者IDU基于CR/LR/等脏向量中的查询而指示源操作数脏。
将脏位随同结果一起转发到任何相依指令。如果指令使用多个源,则可以简单地对这些脏位一起进行逻辑或运算。也就是,如果指令使用CRA和CRB,则对这两个寄存器的脏位一起进行或运算,并且如果任何位被设置,则认为通过执行指令而得到的数据无效。当分支单元61遇到设置了其脏位的分支时,它将阻止刷新。
当指令通过其结果不再可用于较新指令的点(例如,回写级,其是将由执行单元计算的结果提供给体系结构寄存器的点)时,在IDU的脏向量90、92中标记目标寄存器,以指示哪些结果无效。其定时为依赖于前面结果但是不能通过转发路径接收该值的第一指令然后将能够在脏位向量中查询该值是否无效。
如图3所示,准备调度的指令被存储在(IDU 70内的)锁存器78中,然后被提供给另一个锁存器80、以及执行单元。验证和组合逻辑电路88通过解码84也在锁存器82之后并且在将指令提供给回写锁存器86之前从回写级接收指令。验证和组合逻辑电路88确定与目标寄存器相关联的指令是否被认为无效。该逻辑电路:(1)基于分支前瞻预取模式是否激活而确定寄存器是否脏;(2)确定指令当前是否被认为无效;以及(3)确定在处理器中是否存在多个线程,以及哪个线程是当前的,即,脏位需要被写入到正确线程的脏位向量。如果这三个前面考虑为真,则设置用于该指令的脏位。将指令提供给源查询逻辑电路94,其检查源寄存器(其是指令的一部分),并且使用脏位向量90、92确定数据是否有效。当源数据无效时,逻辑“1”将与正被处理的指令相关联,而如果源数据有效,则“0”将与该指令相关联。这些位值仅仅是示例性的,并且在本发明的范围内可以考虑其它模式来指示指令数据的有效性。然后,脏位验证逻辑电路215通过确定前瞻模式是否激活、指令是否有效、以及是否正在利用正确的线程,验证脏位。然后,将脏位提供给锁存器98,以便随后将其提供给执行单元中的指令。可以看出,指令初始被提供给脏位逻辑电路和执行单元。一旦脏位逻辑电路确定了该位的适当状态,则当指令正在通过指令流水线时将其提供给指令。
在分支执行单元中,如果用于刷新的源信息脏,则忽略执行分支的结果,并且假定所预测的分支路径有效。如果操作数有效,则执行刷新。分支前瞻下的刷新由于这样的事实而不同于正常刷新,即它们有效地无序进行但是不提交任何体系结构结果,并且在正常执行恢复时将再次执行它们。由于刷新将导致改变被预测在分支之后的指令,因此需要改变可能已经指示了采取哪条路径的任何预测信息,以反映更新的指令流,并且防止再次发生刷新。在一个实施例中,指令缓冲器可以包含一个位,其包含与分支指令相关的条件寄存器的预测值。然后,当实际值被确定成不同于预测值时,将需要刷新。当在分支前瞻模式下确定了这一点时,将改变预测位,以匹配现在正确的分支路径。存储该预测信息的方式和该信息的位置可以根据实现而变化,但是关键因素是如果分支决定需要它时,必须更新它,以反映指令流中的改变。
在分支指令正被执行的时期,可能已经解决了触发分支前瞻预取的初始停顿状态,从而当发生刷新时区分正常指令和在前瞻模式下调度的指令变得重要。该情形通过向其它单元通知刷新是由推测性分支导致的来处理,从而仅对于被识别为推测性的指令,即,同样用前瞻位标记的指令,发生刷新。确定分支是否被推测性地执行是实现相关的。以这种方式,不影响旧于分支的任何指令。
当指令传到回写阶段(其中将结果写入到体系结构寄存器)时,在IDU的脏向量中标记位,以指示哪些结果无效。其定时是可能依赖于前面结果、但是不再能够通过转发路径接收该值的第一指令将能够替代地在脏向量中查询该值是否脏。
图4是针对装载高速缓存缺失是在有序微处理器中启动推测性执行的扩展停顿状态的优选实施例示出何时进入和退出本发明的装载和分支前瞻预取机制的流程图。该处理通过检查当前指令是否是装载指令(100)而开始。如果否,则该处理等待下一条指令(102),并且通过循环回到步骤100,进行下一条指令是否是装载指令的确定。然而,如果当前指令是装载指令,则确定是否发生了装载拒绝,使得在有序微处理器中存在停顿状态,例如高速缓存缺失、地址翻译表缺失等(104)。如果不存在停顿状态,则该处理再次循环回到步骤102,并且微处理器继续实际的(非推测性)指令执行。如果存在停顿状态,则启动装载和分支前瞻预取方法(106)。然后,确定要被装载的数据是否就绪(108),并且如果否,则对通过回写级的任何指令更新脏位向量(110)。更具体地说,所有修改CR或LR的指令都将向脏位向量写入,以指示结果未被写入到体系结构设施。也就是,在本发明的分支前瞻模式下不允许向体系结构寄存器回写。同时,要求使用特定CR或LR寄存器中的数据的任何指令将读取脏位向量,以确定数据是否有效以及可被使用。所有指令将通过从较旧指令接收(读取)所转发的脏位、或者将脏位转发(写入)到较新指令来写入脏位和读取脏位。在更新脏向量之后,该处理循环回到步骤108,直到要被装载的数据就绪为止。一旦装载数据就绪,则退出装载和分支前瞻方法(112),并且清除所有脏位(114)。然后,重新启动装载操作(116),以便重新装载在104初始拒绝的数据。
分支前瞻预取的总体指令流程在图5中示出,并且以调度指令(120)开始。检查指令的脏向量,以检查源的有效性(122)。如果任何位被标记为脏(124),则将它们转发到对应的执行单元(126)。在执行单元中,进行检查,以确定是否转发源操作数数据(128)。如果是,则进一步检查数据相依性(130),并且如果源数据脏,则设置其对应的脏位(132)。如果确定源操作数不是来自所转发的结果,即,从体系结构设施得到它们,则使用从IDU发送的任何脏位来设置脏位(134,136)。如果指令是分支指令(138),则确定是否需要刷新(140)。如果指令不是分支指令或者不需要刷新,则在执行单元内不需要进一步的操作。如果初始确定是需要刷新,则进一步检查该指令的脏位(142)。如果设置了脏位,则阻止刷新(144)。如果否,则推测性地进行刷新(146),并且更新预测信息(148)。
当指令前进到回写级(150)时,该指令将写入的任何寄存器(在分支前瞻模式下阻止这些寄存器被写入)在IDU中的对应脏向量中被标记为脏(152)。
虽然本发明是参考特定实施例来描述的,但是本描述不旨在以限制的意义进行解释。通过参考本发明的描述,对所公开实施例的各种修改、以及本发明的可选实施例对于本领域的技术人员而言将会变得清楚。因此,应当认为,可以在不脱离在所附权利要求中限定的本发明的精神或范围的情况下进行这样的修改。
Claims (33)
1.一种用于在微处理器中推测性地执行程序指令的方法,其中该微处理器将非推测性指令的结果提交给至少一个体系结构设施,该方法包括:
在程序指令的执行期间检测停顿状态的发生;
在停顿状态期间推测性地执行一条或多条未决指令,其包括至少一条分支指令;以及
确定由所述推测性执行利用的数据的有效性。
2.如权利要求1所述的方法,其中停顿状态是装载指令缺失。
3.如权利要求1所述的方法,其中有序地完成未决指令,其中没有未决指令在前面调度的未决指令已经完成之前完成。
4.如权利要求1所述的方法,还包括标记指令调度单元的一个或多个寄存器,以指示未决指令的哪些结果无效。
5.如权利要求1所述的方法,还包括:
在所述检测停顿状态的发生之前,预测分支指令的路径;以及
将推测性指令从所预测的路径取到指令队列中。
6.如权利要求5所述的方法,还包括响应于所述执行分支指令,从指令队列中刷新推测性指令。
7.如权利要求6所述的方法,还包括基于所述执行分支指令的结果而更新分支预测信息。
8.如权利要求1所述的方法,其中跨越微处理器内的多个流水线级而发生所述推测性地执行指令。
9.如权利要求8所述的方法,其中所述确定包括:
对于推测性地执行的指令,在微处理器的多个流水线级中执行它们的期间跟踪其数据的有效性;以及
在微处理器的多个流水线级中执行它们的期间监视推测性地执行的指令的彼此相依性。
10.如权利要求1所述的方法,其中在微处理器的多个功能单元内发生所述推测性地执行指令。
11.如权利要求1所述的方法,其中发生所述推测性地执行指令而不改变微处理器的任何体系结构设施。
12.一种微处理器,将非推测性指令的结果提交给至少一个体系结构设施,包括:
多个执行单元;以及
调度逻辑电路,在由所述执行单元执行程序指令的期间,检测停顿状态的发生,在停顿状态期间推测性地执行一条或多条未决指令,其包括至少一条分支指令,并且确定由推测性执行利用的数据的有效性。
13.如权利要求12所述的微处理器,其中停顿状态是装载指令缺失。
14.如权利要求12所述的微处理器,其中有序地完成未决指令,其中没有未决指令在前面调度的未决指令已经完成之前完成。
15.如权利要求12所述的微处理器,其中所述调度逻辑电路标记指令调度单元的一个或多个寄存器,以指示未决指令的哪些结果无效。
16.如权利要求12所述的微处理器,还包括分支预测单元,其在所述检测停顿状态的发生之前预测分支指令的路径,并且将推测性指令从所预测的路径取到指令队列中。
17.如权利要求16所述的微处理器,其中所述调度逻辑电路响应于所述执行分支指令而从指令队列中刷新推测性指令。
18.如权利要求17所述的微处理器,其中调度逻辑电路还基于所述执行分支指令的结果而更新分支预测信息。
19.如权利要求12所述的微处理器,其中跨越微处理器内的多个流水线级而发生所述推测性地执行指令。
20.如权利要求12所述的微处理器,其中所述调度逻辑电路通过以下操作确定数据的有效性:对于推测性地执行的指令,在微处理器的多个流水线级中执行它们的期间跟踪其数据的有效性,并且在微处理器的多个流水线级中执行它们的期间监视推测性地执行的指令的彼此相依性。
21.如权利要求12所述的微处理器,其中在多个所述执行单元内发生所述推测性地执行指令。
22.如权利要求12所述的微处理器,其中发生所述推测性地执行指令而不改变微处理器的任何体系结构设施。
23.一种计算机系统,包括:
系统存储器,存储程序指令和操作数数据;以及
至少一个处理器,与所述系统存储器互连,将非推测性指令的结果提交给至少一个体系结构设施,所述处理器具有多个执行单元以及调度逻辑电路,其中所述调度逻辑电路在由所述执行单元执行程序指令的期间,检测停顿状态的发生,在停顿状态期间推测性地执行一条或多条未决指令,其包括至少一条分支指令,并且确定由推测性执行利用的数据的有效性。
24.如权利要求23所述的计算机系统,其中停顿状态是装载指令缺失。
25.如权利要求23所述的计算机系统,其中有序地完成未决指令,其中没有未决指令在前面调度的未决指令已经完成之前完成。
26.如权利要求23所述的计算机系统,其中所述调度逻辑电路标记指令调度单元的一个或多个寄存器,以指示未决指令的哪些结果无效。
27.如权利要求23所述的计算机系统,其中所述处理器还具有分支预测单元,其在所述检测停顿状态的发生之前预测分支指令的路径,并且将推测性指令从所预测的路径取到指令队列中。
28.如权利要求27所述的计算机系统,其中所述调度逻辑电路响应于所述执行分支指令而从指令队列中刷新推测性指令。
29.如权利要求28所述的计算机系统,其中调度逻辑电路还基于所述执行分支指令的结果而更新分支预测信息。
30.如权利要求23所述的计算机系统,其中跨越微处理器内的多个流水线级而发生所述推测性地执行指令。
31.如权利要求23所述的计算机系统,其中所述调度逻辑电路通过以下操作确定数据的有效性:对于推测性地执行的指令,在微处理器的多个流水线级中执行它们的期间跟踪其数据的有效性,并且在微处理器的多个流水线级中执行它们的期间监视推测性地执行的指令的彼此相依性。
32.如权利要求23所述的计算机系统,其中在多个所述执行单元内发生所述推测性地执行指令。
33.如权利要求23所述的计算机系统,其中发生所述推测性地执行指令而不改变微处理器的任何体系结构设施。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/016,200 | 2004-12-17 | ||
US11/016,200 US7552318B2 (en) | 2004-12-17 | 2004-12-17 | Branch lookahead prefetch for microprocessors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1790256A true CN1790256A (zh) | 2006-06-21 |
CN100407137C CN100407137C (zh) | 2008-07-30 |
Family
ID=36642032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005101246565A Expired - Fee Related CN100407137C (zh) | 2004-12-17 | 2005-11-14 | 推测性地执行程序指令的方法、微处理器及系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7552318B2 (zh) |
CN (1) | CN100407137C (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102257478A (zh) * | 2008-12-16 | 2011-11-23 | 国际商业机器公司 | 操作数据结构 |
CN104011682A (zh) * | 2011-10-26 | 2014-08-27 | 欧特克公司 | 应用级推测性处理 |
WO2016201699A1 (zh) * | 2015-06-19 | 2016-12-22 | 华为技术有限公司 | 指令处理方法及设备 |
CN107209662A (zh) * | 2014-09-26 | 2017-09-26 | 高通股份有限公司 | 指令的相依性预测 |
CN109101276A (zh) * | 2018-08-14 | 2018-12-28 | 阿里巴巴集团控股有限公司 | 在cpu中执行指令的方法 |
CN112088355A (zh) * | 2018-05-07 | 2020-12-15 | 美光科技公司 | 多线程自调度处理器在本地或远程计算元件上的线程创建 |
CN112181497A (zh) * | 2020-09-28 | 2021-01-05 | 中国人民解放军国防科技大学 | 一种分支目标预测地址在流水线中的传递方法和装置 |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7444498B2 (en) * | 2004-12-17 | 2008-10-28 | International Business Machines Corporation | Load lookahead prefetch for microprocessors |
US7421567B2 (en) * | 2004-12-17 | 2008-09-02 | International Business Machines Corporation | Using a modified value GPR to enhance lookahead prefetch |
US20070005842A1 (en) * | 2005-05-16 | 2007-01-04 | Texas Instruments Incorporated | Systems and methods for stall monitoring |
US7711935B2 (en) * | 2007-04-30 | 2010-05-04 | Netlogic Microsystems, Inc. | Universal branch identifier for invalidation of speculative instructions |
US7827389B2 (en) * | 2007-06-15 | 2010-11-02 | International Business Machines Corporation | Enhanced single threaded execution in a simultaneous multithreaded microprocessor |
US8145887B2 (en) | 2007-06-15 | 2012-03-27 | International Business Machines Corporation | Enhanced load lookahead prefetch in single threaded mode for a simultaneous multithreaded microprocessor |
US7890739B2 (en) * | 2008-02-19 | 2011-02-15 | Oracle America, Inc. | Method and apparatus for recovering from branch misprediction |
US20100031011A1 (en) * | 2008-08-04 | 2010-02-04 | International Business Machines Corporation | Method and apparatus for optimized method of bht banking and multiple updates |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
JP5707011B2 (ja) | 2010-06-18 | 2015-04-22 | ボード・オブ・リージエンツ,ザ・ユニバーシテイ・オブ・テキサス・システム | 統合分岐先・述語予測 |
US8583894B2 (en) | 2010-09-09 | 2013-11-12 | Advanced Micro Devices | Hybrid prefetch method and apparatus |
WO2012107800A1 (en) * | 2011-02-11 | 2012-08-16 | Freescale Semiconductor, Inc. | Integrated circuit devices and methods for scheduling and executing a restricted load operation |
US9009449B2 (en) * | 2011-11-10 | 2015-04-14 | Oracle International Corporation | Reducing power consumption and resource utilization during miss lookahead |
US9152424B2 (en) | 2012-06-14 | 2015-10-06 | International Business Machines Corporation | Mitigating instruction prediction latency with independently filtered presence predictors |
US9384002B2 (en) * | 2012-11-16 | 2016-07-05 | International Business Machines Corporation | Speculative finish of instruction execution in a processor core |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
US10055585B2 (en) | 2013-08-28 | 2018-08-21 | Mcafee, Llc | Hardware and software execution profiling |
CN104184816B (zh) * | 2014-08-28 | 2018-04-24 | 哈尔滨工程大学 | 一种基于仿真成员事件时戳增量期望的前瞻量动态调整方法 |
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 |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
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 |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
US10061584B2 (en) | 2015-09-19 | 2018-08-28 | Microsoft Technology Licensing, Llc | Store nullification in the target field |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10031756B2 (en) | 2015-09-19 | 2018-07-24 | Microsoft Technology Licensing, Llc | Multi-nullification |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US11687345B2 (en) | 2016-04-28 | 2023-06-27 | Microsoft Technology Licensing, Llc | Out-of-order block-based processors and instruction schedulers using ready state data indexed by instruction position identifiers |
US11531552B2 (en) | 2017-02-06 | 2022-12-20 | Microsoft Technology Licensing, Llc | Executing multiple programs simultaneously on a processor core |
US10761970B2 (en) * | 2017-10-20 | 2020-09-01 | International Business Machines Corporation | Computerized method and systems for performing deferred safety check operations |
US10963379B2 (en) | 2018-01-30 | 2021-03-30 | Microsoft Technology Licensing, Llc | Coupling wide memory interface to wide write back paths |
US10824429B2 (en) | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
CN118245116B (zh) * | 2024-05-28 | 2024-07-30 | 睿思芯科(深圳)技术有限公司 | 基于混合检查点机制的乱序执行方法、系统及相关设备 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2677922B2 (ja) * | 1991-12-11 | 1997-11-17 | 三菱電機株式会社 | エレベータの制御装置 |
US5471626A (en) | 1992-05-06 | 1995-11-28 | International Business Machines Corporation | Variable stage entry/exit instruction pipeline |
US6356918B1 (en) | 1995-07-26 | 2002-03-12 | International Business Machines Corporation | Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution |
US5758051A (en) * | 1996-07-30 | 1998-05-26 | International Business Machines Corporation | Method and apparatus for reordering memory operations in a processor |
US5974538A (en) | 1997-02-21 | 1999-10-26 | Wilmot, Ii; Richard Byron | Method and apparatus for annotating operands in a computer system with source instruction identifiers |
US5987594A (en) * | 1997-06-25 | 1999-11-16 | Sun Microsystems, Inc. | Apparatus for executing coded dependent instructions having variable latencies |
US6308261B1 (en) * | 1998-01-30 | 2001-10-23 | Hewlett-Packard Company | Computer system having an instruction for probing memory latency |
US6473837B1 (en) * | 1999-05-18 | 2002-10-29 | Advanced Micro Devices, Inc. | Snoop resynchronization mechanism to preserve read ordering |
US6343359B1 (en) | 1999-05-18 | 2002-01-29 | Ip-First, L.L.C. | Result forwarding cache |
US6430683B1 (en) | 1999-06-25 | 2002-08-06 | International Business Machines Corporation | Processor and method for just-in-time delivery of load data via time dependency field |
US6549985B1 (en) * | 2000-03-30 | 2003-04-15 | I P - First, Llc | Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor |
JP3681952B2 (ja) * | 2000-04-03 | 2005-08-10 | 三菱電機株式会社 | Dsrc車載器 |
US6912648B2 (en) * | 2001-12-31 | 2005-06-28 | Intel Corporation | Stick and spoke replay with selectable delays |
US6950925B1 (en) | 2002-08-28 | 2005-09-27 | Advanced Micro Devices, Inc. | Scheduler for use in a microprocessor that supports data-speculative execution |
TWI242744B (en) * | 2003-01-14 | 2005-11-01 | Ip First Llc | Apparatus, pipeline microprocessor and method for avoiding deadlock condition and storage media with a program for avoiding deadlock condition |
CN1521629A (zh) * | 2003-01-29 | 2004-08-18 | 纬创资通股份有限公司 | 外接内存模块中数据的实时处理方法 |
US7404067B2 (en) | 2003-09-08 | 2008-07-22 | Intel Corporation | Method and apparatus for efficient utilization for prescient instruction prefetch |
US7114060B2 (en) | 2003-10-14 | 2006-09-26 | Sun Microsystems, Inc. | Selectively deferring instructions issued in program order utilizing a checkpoint and multiple deferral scheme |
US7376794B2 (en) | 2004-01-13 | 2008-05-20 | Hewlett-Packard Development Company, L.P. | Coherent signal in a multi-processor system |
US7490229B2 (en) * | 2004-03-30 | 2009-02-10 | Sun Microsystems, Inc. | Storing results of resolvable branches during speculative execution to predict branches during non-speculative execution |
US7257699B2 (en) | 2004-07-08 | 2007-08-14 | Sun Microsystems, Inc. | Selective execution of deferred instructions in a processor that supports speculative execution |
US7194604B2 (en) | 2004-08-26 | 2007-03-20 | International Business Machines Corporation | Address generation interlock resolution under runahead execution |
US7444498B2 (en) | 2004-12-17 | 2008-10-28 | International Business Machines Corporation | Load lookahead prefetch for microprocessors |
US7421567B2 (en) | 2004-12-17 | 2008-09-02 | International Business Machines Corporation | Using a modified value GPR to enhance lookahead prefetch |
-
2004
- 2004-12-17 US US11/016,200 patent/US7552318B2/en not_active Expired - Fee Related
-
2005
- 2005-11-14 CN CN2005101246565A patent/CN100407137C/zh not_active Expired - Fee Related
-
2007
- 2007-12-10 US US11/953,799 patent/US7877580B2/en not_active Expired - Fee Related
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102257478A (zh) * | 2008-12-16 | 2011-11-23 | 国际商业机器公司 | 操作数据结构 |
CN102257478B (zh) * | 2008-12-16 | 2015-04-08 | 国际商业机器公司 | 操作数据结构 |
CN104011682A (zh) * | 2011-10-26 | 2014-08-27 | 欧特克公司 | 应用级推测性处理 |
CN104011682B (zh) * | 2011-10-26 | 2017-06-09 | 欧特克公司 | 对应用事件响应进行推测性处理的方法和计算机系统 |
CN107209662A (zh) * | 2014-09-26 | 2017-09-26 | 高通股份有限公司 | 指令的相依性预测 |
CN107209662B (zh) * | 2014-09-26 | 2020-11-03 | 高通股份有限公司 | 指令的相依性预测 |
WO2016201699A1 (zh) * | 2015-06-19 | 2016-12-22 | 华为技术有限公司 | 指令处理方法及设备 |
CN112088355A (zh) * | 2018-05-07 | 2020-12-15 | 美光科技公司 | 多线程自调度处理器在本地或远程计算元件上的线程创建 |
CN112088355B (zh) * | 2018-05-07 | 2024-05-14 | 美光科技公司 | 多线程自调度处理器在本地或远程计算元件上的线程创建 |
CN109101276A (zh) * | 2018-08-14 | 2018-12-28 | 阿里巴巴集团控股有限公司 | 在cpu中执行指令的方法 |
US11579885B2 (en) | 2018-08-14 | 2023-02-14 | Advanced New Technologies Co., Ltd. | Method for replenishing a thread queue with a target instruction of a jump instruction |
CN112181497A (zh) * | 2020-09-28 | 2021-01-05 | 中国人民解放军国防科技大学 | 一种分支目标预测地址在流水线中的传递方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20060149933A1 (en) | 2006-07-06 |
US7552318B2 (en) | 2009-06-23 |
US7877580B2 (en) | 2011-01-25 |
US20080091928A1 (en) | 2008-04-17 |
CN100407137C (zh) | 2008-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100407137C (zh) | 推测性地执行程序指令的方法、微处理器及系统 | |
US6907520B2 (en) | Threshold-based load address prediction and new thread identification in a multithreaded microprocessor | |
US7870369B1 (en) | Abort prioritization in a trace-based processor | |
EP1442364B1 (en) | System and method to reduce execution of instructions involving unreliable data in a speculative processor | |
US6691220B1 (en) | Multiprocessor speculation mechanism via a barrier speculation flag | |
US9996348B2 (en) | Zero cycle load | |
US6609192B1 (en) | System and method for asynchronously overlapping storage barrier operations with old and new storage operations | |
CN1310155C (zh) | 用于先行执行期间的存储器通信的装置 | |
US6625660B1 (en) | Multiprocessor speculation mechanism for efficiently managing multiple barrier operations | |
US6748518B1 (en) | Multi-level multiprocessor speculation mechanism | |
US7941607B1 (en) | Method and system for promoting traces in an instruction processing circuit | |
US5751983A (en) | Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations | |
US6918030B2 (en) | Microprocessor for executing speculative load instructions with retry of speculative load instruction without calling any recovery procedures | |
EP2204741B1 (en) | Processor and method for using an instruction hint to prevent hardware prefetch from using certain memory accesses in prefetch calculations | |
US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
US20140095848A1 (en) | Tracking Operand Liveliness Information in a Computer System and Performing Function Based on the Liveliness Information | |
US8037285B1 (en) | Trace unit | |
US6098167A (en) | Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution | |
US6606702B1 (en) | Multiprocessor speculation mechanism with imprecise recycling of storage operations | |
CN101449238A (zh) | 本地和全局分支预测信息存储 | |
US6073231A (en) | Pipelined processor with microcontrol of register translation hardware | |
EP0649084A1 (en) | Microprocessor branch processing | |
US20060149934A1 (en) | Using a modified value GPR to enhance lookahead prefetch | |
US6725340B1 (en) | Mechanism for folding storage barrier operations in a multiprocessor system | |
US6728873B1 (en) | System and method for providing multiprocessor speculation within a speculative branch path |
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: 20080730 Termination date: 20201114 |