CN1900904A - 用于改善按次序的处理器的性能的方法和系统 - Google Patents

用于改善按次序的处理器的性能的方法和系统 Download PDF

Info

Publication number
CN1900904A
CN1900904A CNA200610101998XA CN200610101998A CN1900904A CN 1900904 A CN1900904 A CN 1900904A CN A200610101998X A CNA200610101998X A CN A200610101998XA CN 200610101998 A CN200610101998 A CN 200610101998A CN 1900904 A CN1900904 A CN 1900904A
Authority
CN
China
Prior art keywords
instruction
waterline
normal flow
execution
backup stream
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
Application number
CNA200610101998XA
Other languages
English (en)
Other versions
CN100507835C (zh
Inventor
克里斯托弗·M.·阿伯纳斯
乔纳森·J.·德蒙特
罗纳德·霍尔
小阿伯特·J·范·诺斯特拉德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1900904A publication Critical patent/CN1900904A/zh
Application granted granted Critical
Publication of CN100507835C publication Critical patent/CN100507835C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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

用于改善按次序的处理器的性能的方法和系统
技术领域
本发明涉及按次序的处理器中的流水线处理(pipelineprocessing)领域,具体而言,涉及通过不再要求不同执行流水线的统一完成点来改善按次序的处理器的性能。
背景技术
“超标量(superscalar)”处理器具有允许一个以上指令在单个时钟周期内被执行的处理器体系结构。这可以使用被称为“流水线处理”的过程来实现。流水线处理可以指重叠操作,其通过把数据或者指令移至概念性的管路(pipe)来实现,其中所述管路的所有阶段同时处理。因此,每一指令依照一系列阶段被处理,每一阶段均能够与其它指令的阶段并行执行。通常,指令在五个阶段中被处理,这五个阶段是取出(fetch)、解码、分派(dispatch)、执行和完成。
在取出阶段中,把指令从指令高速缓存中取出。在解码阶段中,解码取出的指令。在分派阶段中,把已解码的指令分派或者发布至适当的执行部件(例如,定点部件、加载/存储部件、浮点部件、分支部件)以便被执行。例如,如果已解码的指令是浮点指令,那么把该已解码的指令分派至浮点部件以便执行。在执行阶段中,执行部件执行所分派的指令。当执行接收到的指令时,所述执行部件可以向此处被称为“完成部件”的部件传输一指示,所述指示表明接收到的指令的执行。所述完成部件可以跟踪这些指令何时已经“完成”。当指令已经被执行并且处于任何异常都不会使该指令重新发布的阶段时,就可以说所述指令被“完成”。这出现在完成阶段期间。一旦完成,就把结果写入到“已构建状态(architected state)”中,其可以指用于存储写入结果并且表明指令完成的寄存器。
按次序的处理器可以指用于按次序取出、执行并且向功能部件转发结果的处理器。也就是说,在如上所述的阶段期间,按次序发布并且执行指令。在采用这种按次序的处理的体系结构中,每一执行流水线(指的是诸如浮点部件、定点部件、加载/存储部件、分支部件的执行部件的流水线)通常可以具有相同的“完成点”,由此按次序完成。执行流水线可以指执行部件执行该指令时所发生的阶段。每一执行流水线可以具有不同的阶段数目。例如,浮点流水线(浮点部件的流水线)可能会长于加载/存储流水线(加载/存储部件的流水线)。
完成点可以指这样一个点,在该点处确定该执行流水线中是否出现异常。异常可以指使得程序或者微处理器分支到不同指令流或者重新执行其中存在错误的指令流的条件。当出现例如分支错误预测的异常时,清除(flush)并且重新取出“更年轻”(在引起异常的指令之后发布并且执行)的指令。
按次序处理器中的每一不同执行部件均可以具有相同的完成点,这是因为每一指令必须按次序执行。当发生异常时,清除所有未完成的更年轻指令。这些更年轻的指令可以驻留在多个执行流水线中,而不是驻留在单个执行流水线中。为了确保指令得以按次序执行,可以要求每一执行流水线均具有相同的完成点。此外,每一执行流水线可以具有相同的完成点以便简化对已构建状态的更新,所述更新是通过允许已构建状态在单个周期内而不是在不同周期被更新来实现的。
由于对于所有执行流水线要求单个完成点,在流水线中,完成点(在概念上)可能低于所需要的。如上所述,每一执行流水线可能具有不同的阶段数目。然而,对于按次序的处理器而言,由于在所有不同的执行流水线上完成点必须是相同的,故而每一执行流水线处的完成点均处于与具有最长流水线的执行部件的完成点相同的水平上。因此,对于那些具有少于最长执行流水线的阶段的流水线而言,执行阶段的持续时间不必要地变长了。
因此,在本领域存在一种需要,即消除在按次序处理器中在不同执行流水线上完成点必须相同的要求,以便改善处理器性能。
发明内容
在一些实施例中,通过不要求在不同执行流水线上完成点必须相同而至少部分地解决上述的问题。通过使用此处被称为“备份流水线”的附加流水线,对于不同执行流水线而言,所述完成点可以不同,所述备份流水线包含发布给执行部件的“常规流水线”(通常作为执行部件的唯一流水线的流水线)的指令的副本。
在本发明的一个实施例中,一种用于改善按次序处理器的性能的方法可以包括如下步骤:在执行流水线的完成点处或者在执行流水线的完成点之前检测异常,其中所述执行流水线包括备份流水线和常规流水线。所述备份流水线存储发布给常规流水线的指令的副本。所述方法还可以包括清除常规流水线中的比引起异常的指令更年轻的指令。所述方法还可以包括处理检测到的异常。所述方法还可以包括允许指令从备份流水线流向常规流水线。
前面相当概略地略述了本发明的一个或多个实施例的特征和技术优点以便可以更好地理解随后对本发明的详细描述。以下将描述本发明的附加特征和优点,该部分内容形成本发明权利要求的主题。
附图说明
当结合附图阅读下面的详细说明时,可以获得对本发明的更好的理解,其中:
图1举例说明了依照本发明实施例的计算机系统;
图2举例说明了依照本发明实施例的计算机系统的处理器;
图3是依照本发明实施例来举例说明利用执行流水线中的备份流水线来允许不同执行流水线中的不同完成点的简图;并且
图4是依照本发明实施例的用于允许不同执行流水线中的不同完成点的方法的流程图。
具体实施方式
本发明包括用于改善按次序处理器的性能的方法、处理器和系统。在本发明的一个实施例中,处理器可以包括带有执行流水线的执行部件,所述执行流水线包括备份流水线和常规流水线。所述备份流水线可以存储发布给常规流水线的指令的副本。所述执行流水线还可以包括用于在执行流水线的完成点处或在该完成点之前检测异常并且清除常规流水线中的比引起异常的指令更年轻的指令的逻辑。所述执行流水线还可以包括用于在清除常规流水线中的更年轻指令之后、允许指令从备份流水线流向常规流水线的逻辑。通过维护发布给常规流水线的指令的备份副本,如果指令不依赖于当前的执行流水线,那么不需要从独立的执行流水线中清除并且重新取出指令。此外,不必重新取出在常规流水线中清除的指令,只要重新执行即可。由于不需要从不同执行流水线中重新取出清除的指令,所以可以把执行部件的结果无次序地提交给已构建状态,由此允许完成点在不同执行流水线当中变化。
在随后的描述中,提出了很多具体细节,以便提供对本发明的彻底理解。然而,对于本领域技术人员显而易见的是,本发明可以在没有这种具体细节的情况下实施。在其它情况下,众所周知的电路以框图的形式被示出,以便不会因不必要的细节而模糊本发明。在很大程度上,涉及时序因素等的细节已经被省略,这是由于这种细节不是完整理解本发明所必需的,并且在本领域普通技术人员的技能范围内。
图1——计算机系统
图1举例说明了表示用于实施本发明的硬件环境的计算机系统100的硬件配置。计算机系统100可以具有通过系统总线112耦合至各种其它组件的处理部件110。下面结合图2更加详细地描述处理部件110。操作系统140可以在处理器110上运行,并且提供对图1各种组件的控制和协调其功能。符合本发明原理的应用程序150可以结合操作系统140运行,并且提供对操作系统140的调用,其中所述调用实现将由应用程序150执行的各种功能或者服务。只读存储器(ROM)116可以耦合至系统总线112并且包括基本输入/输出系统(“BIOS”),所述基本输入/输出系统用于控制计算机系统100的某些基本功能。随机存取存储器(RAM)114和盘适配器118也可以耦合至系统总线112。应该注意的是,包括操作系统140和应用程序150的软件组件可以被载入RAM 114中,所述RAM 114可以是计算机系统100的用于执行的主存储器。盘适配器118可以是集成驱动器电子电路(“IDE”)适配器,用于与例如盘驱动器的盘部件120通信。
计算机系统100还可以包括耦合至总线112的通信适配器134。通信适配器134可以使总线112与外部网络互联,所述外部网络允许计算机系统100与其它这种系统通信。I/O设备也可以经由用户接口适配器122和显示器适配器136与系统总线112相连。键盘124、鼠标126和扬声器130均可通过用户接口适配器122互联至总线112。可以把事件数据通过任何设备输入到计算机系统100。显示监视器138可以通过显示器适配器136连接至系统总线112。依照此方式,用户能够通过键盘124或者鼠标126向计算机系统100进行输入并且经由显示器138接收来自计算机系统100的输出。
图2——处理器
图2举例说明了本发明的处理器110的一个实施例。处理器110可以被配置为按次序发布、执行并且完成指令,因此可以被称为“按次序”的处理器。应注意的是,处理器110可以包括比图2中所示的更多的部件,诸如寄存器、缓冲器、存储器以及其它部分。为了简洁,不描绘或描述这些内容。
处理器110可以包括指令取出部件(IFU)201,其被配置为例如把来自程序计数器的指令地址加载到指令取出地址寄存器(IFAR)202中。由IFU 201检取的地址可以是表示来自程序或者编译器的地址的有效地址。可以从指令高速缓存203存取对应于接收到的有效地址的指令。可以把指令从系统存储器(未示出)输入到指令高速缓存203。
来自指令高速缓存203的指令可以被输出到指令分派部件(IDU)204。IDU 204可以被配置为解码这些接收到的指令。IDU 204可以进一步被配置为向指令定序器206转发已解码的指令,所述指令定序器206包括多个发布队列(未示出)。指令定序器206中特定的发布队列可以被耦合至一个或多个特定执行部件,诸如浮点部件207、加载/存储部件208、分支部件209和定点部件210。执行部件207、208、209和210可以被共同地或单独地称为执行部件207、208、209和210,或者分别称为执行部件207、208、209和210。每一执行部件207、208、209、210可以执行特定指令类别的一个或多个指令。例如,定点部件210可以对源操作数执行定点数学和逻辑运算,诸如加、减、与、或和非。浮点部件207可以对源操作数执行浮点运算,诸如浮点乘法和除法。
浮点部件207、加载/存储部件208、分支部件209和定点部件210可以被配置用来确定在完成点是否发生异常。如果发生异常,那么相应的执行部件可以处理检测到的异常。此外,如果发生异常,那么相应的执行部件可以向“完成部件”212通知检测到的异常,由此允许完成部件212触发清除和重新取出。此外,如果适用的话,执行部件207、208、209和210可以指示完成部件212的指令的执行以及任何异常状态。当指令被“完成”时或者当发生异常而被清除和重新取出时(由连接完成部件212和IFAR 202的线表示),可以把指令的执行结果写入“已构建状态”213中。当指令已经被执行并且处于任何异常都不会令该指令重新发布的阶段时,所述指令被完成。已构建状态213可以指用于存储写入的结果并且表明指令被完成的寄存器。
如背景技术部分所陈述的那样,由于按次序处理器中的所有执行流水线需要单个完成点,所以所述完成点在流水线中会低于(概念上)所需要的。由于在现有技术的按次序处理器中的完成点在所有不同的执行流水线上是相同的,故而每一执行流水线处的完成点均处于与具有最长流水线的执行部件的完成点相同的水平上。因此,对于具有少于最长执行流水线的阶段的那些流水线而言,执行阶段的持续时间不必要地变长。因此,在本领域中存在一种需要,即消除在按次序处理器中的不同执行流水线上完成点必须相同的要求,以便改善处理器性能。通过使用此处被称为“备份流水线”的附加流水线,对于不同的执行流水线而言,所述完成点可以不同,所述备份流水线包含发布给执行部件的“常规流水线”(通常作为执行部件的唯一流水线的流水线)的指令副本,如图3中所示那样。
图3——说明利用执行流水线中的备份流水线来允许不同执行流水线上的不同完成点的简图。
图3是依照本发明实施例来举例说明利用执行流水线中的备份流水线来允许按次序处理器中的不同执行流水线上的完成点不同的简图。应注意的是,图3举例说明了具有最长执行流水线并因此具有备份流水线的浮点部件207(图2)并且举例说明了具有较短流水线的分支部件209(图2)。应进一步注意的是,具有最长执行流水线的浮点部件207和具有较短执行流水线的分支部件209的示出是为了举例说明的目的。应进一步注意的是,此处提出的本发明的原理可以应用于任何执行部件。
参考图3,浮点部件207可以包括两个独立的执行流水线,此处称为“备份流水线”301和“常规流水线”302。这些流水线301、302中的每一个均在发布/停止点#1 303处接收从发布队列206(图2)发布的相同指令。发布/停止点#1 303可以指用于向浮点部件207发布指令的点。
图3还举例说明了分支部件209的执行流水线304。流水线304在发布/停止点#2 305处接收从发布队列206(图2)发布的指令。发布/停止点#2 305可以指用于向分支部件209发布指令的点。发布/停止点#2 305可以处于或者可以不处于与发布/停止点#1 303相同的发布点。
如图3中所示那样,分支执行流水线304的完成点比浮点执行流水线301、302的完成点要早。由于在浮点执行流水线301、302中存在更多的阶段,所以浮点执行流水线301、302的完成点要迟于分支执行流水线304的完成点。分支部件209不需要具有与浮点部件207处于同一水平的完成点。
当在执行流水线301、302的完成点处或在此之前检测到异常,那么用于浮点部件207的发布/停止点303被施加(assert),以便防止指令从发布队列206被发布到执行流水线301、302中。此外,当在执行流水线301、302的完成点处或在此之前检测到异常,那么施加备份流水线301中的此处被称为“较低停止点(lower stall point)”306的停止点,以便防止指令流出备份流水线301。较低停止点306可以指把备份流水线301中的已执行指令的结果从浮点部件207发布给完成部件212的点。
此外,当在执行流水线301、302的完成点处或在此之前检测到异常时,清除常规流水线302中的比引起异常的指令更年轻的指令。由浮点部件207来处理检测到的异常。一旦清除了更年轻指令,并且处理了异常,就解除(deassert)较低停止点306,以便允许指令从备份流水线301流向常规流水线302。在一个实施例中,备份流水线301可以每次向常规流水线302发送单个指令,其中每一指令是在完成发送给常规流水线302的先前指令之后被发送的。在另一个实施例中,较低停止点306可以被配置为向常规流水线302发布指令,就像这些指令是从发布队列206发布的一样。例如,较低停止点306可以被连接至一逻辑(未示出),所述逻辑具有确定应该插入到两个连续发布的指令间的周期数目的能力。在另一实施例中,通过在备份流水线301之前包括一多路复用器(未示出)来处理“嵌套”异常。例如,如果从备份流水线301到常规流水线302重新执行的指令之一具有异常,那么所述指令仍处于备份流水线301中,以便在处理新异常之后重新执行。在一个实施例中,多路复用器307可用来选择是把从发布队列206发布的指令还是把从备份流水线301发布的指令输入到常规流水线302中。所述选择可以基于用于创建输入到多路复用器307的信号的“状态”来确定。在从检测到异常到备份流水线301“被排放”的这段时间里选择备份流水线301。
当完成备份流水线301排放(draining)时,解除较高停止点(upperstall point)303,以便允许指令被发布到备份流水线301和常规流水线302中,由此恢复正常操作。
通过让备份流水线301重新填充(refill)常规流水线302而不是重新取出清除的指令,常规流水线302可以被更迅速地填充,由此节省了时间并且改善了处理器性能。此外,由于具有备份流水线301,流水线301、302中的完成点可以不同于其它执行流水线,这是因为备份流水线301保存发布给常规流水线302的指令的备份副本。通过保存发布给常规流水线302的指令的备份副本,如果比不同执行流水线中引起异常的指令更年轻的指令不依赖于所述引起异常的指令,那么不需要清除它们。因此,在检测到不同执行流水线中的异常之后可以接收并且完成指令。此外,由于不需要从不同的执行流水线中重新取出清除的指令,所以可以把执行部件的结果无次序地提交给已构建状态213(图2),由此允许完成点在不同执行流水线当中变化。
通过允许不同执行流水线中的完成点不同,某些执行流水线现在将具有较早出现的完成点,由此减少执行过程的持续时间。通过减少执行过程的持续时间,需要更少的阶段,因此可以消除“迂回(bypass)”,由此可以节省布线成本、降低复杂性并减小面积。迂回可以指:当执行部件需要在执行流水线中的更低阶段最新计算的值时,把在执行流水线中的一阶段计算的结果连线传送至该执行流水线的开始。通过减少所需要的阶段数目,可以减少迂回的数目,由此减少布线和复杂性。
下面结合图4来描述使用上述实施例使完成点对于不同执行流水线不同的更加详细的描述。图4是用于允许不同执行流水线上的完成点不同的方法的流程图。
图4——用于允许不同执行流水线上的完成点不同的方法
图4是用于允许不同执行流水线上的完成点不同的方法400的、本发明一个实施例的流程图。
参考图4,结合图1-3,在步骤401,例如浮点部件207的执行部件在完成点处或在此之前检测异常。随后的描述将浮点部件207描述为具有备份流水线301的执行部件;然而,应注意的是,任何执行部件可以具有在图3左侧的实现方式。
在步骤402,浮点部件207施加发布/停止点303以便防止指令从发布队列206被发布到执行流水线301、302中。在步骤403,浮点部件207在备份流水线301中施加较低停止点306,以便防止指令从备份流水线301流出。
在步骤404,浮点部件207清除常规流水线302中的比引起检测到的异常的指令更年轻的指令。在步骤405,浮点部件207处理检测到的异常。
当完成对检测到的异常的处理时,浮点部件207解除较低停止点306,以便允许指令从备份流水线301流向常规流水线302,步骤406。
在完成发送给常规流水线302的先前指令之后、备份流水线301每次向常规流水线302发送单个指令的上述实施例中,在步骤407,在排放备份流水线301期间施加较低停止点306,直到完成先前指令为止。
作为选择,在另一个实施例中,备份流水线301模仿指令定序器206的行为,因为指令从备份流水线301重新发布给常规流水线302,就好像所述指令最初从指令定序器206发布一样。在此替换实施例中,在步骤408,可以施加或者可以不施加较低停止点306。
在步骤409,对备份流水线301是否被完全排放进行确定。如果不是,那么方法400进行到步骤407或者408,这取决于如上所述的特定实施例。否则,在步骤410,浮点部件207解除较高停止点303,以便允许指令被发布到备份流水线301和常规流水线302这两者中,由此恢复正常操作。
应注意的是,方法400可以包括其它和/或额外的步骤,为了清楚,没有描述这些内容。应进一步注意的是,方法400可以按照不同于所呈现的顺序来执行,并且图4的描述中所呈现的顺序是示例性的。应进一步注意的是,方法400中的某些步骤可以依照基本上同步的方式来执行。
虽然结合多个实施例描述了所述方法、系统和处理器,但是这不意味着本发明局限于此处提出的特定形式,相反,这意味着涵盖本发明的精神和范围内所包括的替换、修改和等效方式,本发明的范围由所附权利要求书定义。应注意的是,使用标题仅仅是用于组织目的,而非意在限制说明书和权利要求书的范围。

Claims (16)

1.一种用于改善按次序处理器的性能的方法,包括如下步骤:
在执行流水线的完成点处或者在该完成点之前检测异常,其中所述执行流水线包括备份流水线和常规流水线,其中所述备份流水线存储发布给所述常规流水线的指令的副本;
清除所述常规流水线中的比引起所述异常的指令更年轻的指令;
处理所述检测到的异常;并且
允许指令从所述备份流水线流向所述常规流水线。
2.如权利要求1所述的方法,还包括如下步骤:
施加一较高停止点,以便在所述的清除所述常规流水线中的比引起所述异常的所述指令更年轻的指令之前,防止指令进入所述备份流水线和所述常规流水线;并且
施加一较低停止点,以便在所述的清除所述常规流水线中的比引起所述异常的所述指令更年轻的指令之前,防止指令从所述备份流水线中流出。
3.如权利要求2所述的方法,还包括如下步骤:
解除所述较低停止点,以便允许指令从所述备份流水线流向所述常规流水线。
4.如权利要求1所述的方法,还包括如下步骤:
解除所述较高停止点,以便在所述的清除所述常规流水线中的比引起所述异常的所述指令更年轻的指令之后并且在处理所述检测到的异常之后,允许指令被发布到所述备份流水线和所述常规流水线中。
5.一种系统,包括:
处理器,
存储器部件;
输入机构;
输出机构;
把所述处理器耦合至所述存储器部件、所述输入机构和所述输出机构的总线,其中所述处理器包括:
取出部件,被配置为检取指令;
耦合至所述取出部件的分派部件,其中所述分派部件被配置为解码所述检取的指令;
耦合至所述分派部件的多个指令队列,其中所述多个指令队列被配置为把所述的已解码指令分派给执行部件;以及
耦合至所述多个指令队列的多个执行部件,其中所述多个执行部件被配置为执行所述分派的已解码指令;
其中所述多个执行部件中的第一个执行部件包含用于执行如下操作的逻辑:
在其执行流水线的完成点处或在该完成点之前检测异常,其中所述多个执行部件中的所述第一个执行部件的所述执行流水线包括备份流水线和常规流水线,其中所述备份流水线存储从所述多个指令队列发布给所述常规流水线的已解码指令的副本;
清除所述常规流水线中的比引起所述异常的指令更年轻的指令;并且
允许指令从所述备份流水线流向所述常规流水线。
6.如权利要求5所述的系统,其中所述多个执行部件中的所述第一个执行部件包含用于进一步执行如下操作的逻辑:
施加一较高停止点,以便在所述的清除所述常规流水线中的比引起所述异常的所述指令更年轻的指令之前,防止指令进入所述备份流水线和所述常规流水线;并且
施加一较低停止点,以便在所述的清除所述常规流水线中的比引起所述异常的所述指令更年轻的指令之前,防止指令从所述备份流水线中流出。
7.如权利要求6所述的系统,其中所述多个执行部件中的所述第一个执行部件包含用于进一步执行如下操作的逻辑:
解除所述较低停止点,以便允许指令从所述备份流水线流向所述常规流水线。
8.如权利要求5所述的系统,其中所述多个执行部件中的所述第一个执行部件包含用于进一步执行如下操作的逻辑:
解除所述较高停止点,以便在所述的清除所述常规流水线中的比引起所述异常的所述指令更年轻的指令之后并且在处理所述检测到的异常之后,允许指令被发布到所述备份流水线和所述常规流水线中。
9.如权利要求5所述的系统,其中所述多个执行部件中的所述第一个执行部件具有所述多个执行部件的最长执行流水线。
10.如权利要求5所述的系统,其中所述多个执行部件中的所述第一个执行部件包括浮点部件。
11.一种处理器,包括:
取出部件,被配置为检取指令;
耦合至所述取出部件的分派部件,其中所述分派部件被配置为解码所述检取的指令;
耦合至所述分派部件的多个指令队列,其中所述多个指令队列被配置为把所述的已解码指令分派给执行部件;以及
耦合至所述多个指令队列的多个执行部件,其中所述多个执行部件被配置为执行所分派的已解码指令;
其中所述多个执行部件中的第一个执行部件包含用于执行如下操作的逻辑:
在其执行流水线的完成点处或在该完成点之前检测异常,其中所述多个执行部件中的所述第一个执行部件的所述执行流水线包括备份流水线和常规流水线,其中所述备份流水线存储从所述多个指令队列发布给所述常规流水线的已解码指令的副本;
清除所述常规流水线中的比引起所述异常的指令更年轻的指令;并且
允许指令从所述备份流水线流向所述常规流水线。
12.如权利要求11所述的处理器,其中所述多个执行部件中的所述第一个执行部件包含用于进一步执行如下操作的逻辑:
施加一较高停止点,以便在所述的清除所述常规流水线中的比引起所述异常的指令更年轻的指令之前,防止指令进入所述备份流水线和所述常规流水线;并且
施加一较低停止点,以便在所述的清除所述常规流水线中的比引起所述异常的指令更年轻的指令之前,防止指令从所述备份流水线中流出。
13.如权利要求12所述的处理器,其中所述多个执行部件中的所述第一个执行部件包含用于进一步执行如下操作的逻辑:
解除所述较低停止点,以便允许指令从所述备份流水线流向所述常规流水线。
14.如权利要求11所述的处理器,其中所述多个执行部件中的所述第一个执行部件包含用于进一步执行如下操作的逻辑:
解除所述较高停止点,以便在所述的清除所述常规流水线中的比引起所述异常的指令更年轻的指令之后并且在处理所述检测到的异常之后,允许指令被发布到所述备份流水线和所述常规流水线中。
15.如权利要求11所述的处理器,其中所述多个执行部件中的所述第一个执行部件具有所述多个执行部件的最长执行流水线。
16.如权利要求11所述的处理器,其中所述多个执行部件中的所述第一个执行部件包括浮点部件。
CNB200610101998XA 2005-07-19 2006-07-18 用于改善按次序的处理器的性能的方法和系统 Expired - Fee Related CN100507835C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/184,349 2005-07-19
US11/184,349 US7475232B2 (en) 2005-07-19 2005-07-19 Performance of an in-order processor by no longer requiring a uniform completion point across different execution pipelines

Publications (2)

Publication Number Publication Date
CN1900904A true CN1900904A (zh) 2007-01-24
CN100507835C CN100507835C (zh) 2009-07-01

Family

ID=37656794

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200610101998XA Expired - Fee Related CN100507835C (zh) 2005-07-19 2006-07-18 用于改善按次序的处理器的性能的方法和系统

Country Status (2)

Country Link
US (2) US7475232B2 (zh)
CN (1) CN100507835C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853148A (zh) * 2009-05-19 2010-10-06 威盛电子股份有限公司 适用于微处理器的装置及方法
CN105988775A (zh) * 2015-03-18 2016-10-05 瑞萨电子株式会社 处理器、程序代码转换装置以及软件

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1968998B (zh) * 2004-06-10 2011-04-13 陶氏环球技术公司 形成纳米多孔介电薄膜的方法
US7461239B2 (en) * 2006-02-02 2008-12-02 International Business Machines Corporation Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines
US11360773B2 (en) * 2020-06-22 2022-06-14 Microsoft Technology Licensing, Llc Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching
US11074077B1 (en) 2020-06-25 2021-07-27 Microsoft Technology Licensing, Llc Reusing executed, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-execution

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0365322A3 (en) * 1988-10-19 1991-11-27 Hewlett-Packard Company Method and apparatus for exception handling in pipeline processors having mismatched instruction pipeline depths
US5325495A (en) * 1991-06-28 1994-06-28 Digital Equipment Corporation Reducing stall delay in pipelined computer system using queue between pipeline stages
US6785803B1 (en) * 1996-11-13 2004-08-31 Intel Corporation Processor including replay queue to break livelocks
US6163840A (en) 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline
US6182210B1 (en) * 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6625756B1 (en) * 1997-12-19 2003-09-23 Intel Corporation Replay mechanism for soft error recovery
US6047370A (en) * 1997-12-19 2000-04-04 Intel Corporation Control of processor pipeline movement through replay queue and pointer backup
US6192466B1 (en) 1999-01-21 2001-02-20 International Business Machines Corporation Pipeline control for high-frequency pipelined designs
US6775756B1 (en) 1999-10-11 2004-08-10 Ati International Srl Method and apparatus for out of order memory processing within an in order processor
US6615343B1 (en) * 2000-06-22 2003-09-02 Sun Microsystems, Inc. Mechanism for delivering precise exceptions in an out-of-order processor with speculative execution
US6880069B1 (en) * 2000-06-30 2005-04-12 Intel Corporation Replay instruction morphing
US6862676B1 (en) 2001-01-16 2005-03-01 Sun Microsystems, Inc. Superscalar processor having content addressable memory structures for determining dependencies
US6952764B2 (en) * 2001-12-31 2005-10-04 Intel Corporation Stopping replay tornadoes

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853148A (zh) * 2009-05-19 2010-10-06 威盛电子股份有限公司 适用于微处理器的装置及方法
CN105988775A (zh) * 2015-03-18 2016-10-05 瑞萨电子株式会社 处理器、程序代码转换装置以及软件

Also Published As

Publication number Publication date
CN100507835C (zh) 2009-07-01
US20090077352A1 (en) 2009-03-19
US7475232B2 (en) 2009-01-06
US8028151B2 (en) 2011-09-27
US20070022278A1 (en) 2007-01-25

Similar Documents

Publication Publication Date Title
JP3977016B2 (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
EP0751458B1 (en) Method and system for tracking resource allocation within a processor
EP0686914B1 (en) Resynchronisation of a superscalar processor
US7254697B2 (en) Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
JP3678444B2 (ja) パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ
US6119223A (en) Map unit having rapid misprediction recovery
US6405305B1 (en) Rapid execution of floating point load control word instructions
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
US20040133769A1 (en) Generating prefetches by speculatively executing code through hardware scout threading
JP2002525741A (ja) 間接分岐ターゲットを計算するための方法
CN1760826A (zh) 用于处理指令的方法、处理器以及系统
EP2671150B1 (en) Processor with a coprocessor having early access to not-yet issued instructions
CN1885269A (zh) 在微处理器恢复单元中进行写队列读数据的方法和装置
CN100507835C (zh) 用于改善按次序的处理器的性能的方法和系统
JP3142813B2 (ja) レジスタの名前変更を管理するための情報処理システムおよび方法
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
JP3866920B2 (ja) 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ
US8082423B2 (en) Generating a flush vector from a first execution unit directly to every other execution unit of a plurality of execution units in order to block all register updates
US20040133767A1 (en) Performing hardware scout threading in a system that supports simultaneous multithreading
US7373489B1 (en) Apparatus and method for floating-point exception prediction and recovery
US7779234B2 (en) System and method for implementing a hardware-supported thread assist under load lookahead mechanism for a microprocessor
JP2001142699A (ja) パイプラインプロセッサにおける命令データの転送メカニズム
JP2001142701A (ja) プロセッサにおけるパイプライン制御用メカニズムおよび方法
JP2001142700A (ja) パイプラインプロセッサにおける電力有効処理メカニズム
US7779233B2 (en) System and method for implementing a software-supported thread assist mechanism for a microprocessor

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: 20090701

Termination date: 20200718