CN1337021A - 包括指令重放的处理器流水线 - Google Patents

包括指令重放的处理器流水线 Download PDF

Info

Publication number
CN1337021A
CN1337021A CN00802814A CN00802814A CN1337021A CN 1337021 A CN1337021 A CN 1337021A CN 00802814 A CN00802814 A CN 00802814A CN 00802814 A CN00802814 A CN 00802814A CN 1337021 A CN1337021 A CN 1337021A
Authority
CN
China
Prior art keywords
instruction
formation
rear end
row
streamline
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
CN00802814A
Other languages
English (en)
Other versions
CN1137435C (zh
Inventor
E·T·格罗乔韦斯基
D·C·林
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN1337021A publication Critical patent/CN1337021A/zh
Application granted granted Critical
Publication of CN1137435C publication Critical patent/CN1137435C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • G06F9/3842Speculative 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
    • 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

包括指令重放的处理器流水线
这是1997年12月24日提出、申请号为08/998,341的专利的后续申请。
发明背景技术
发明所属领域
本发明通常涉及流水线处理器,尤其是涉及一种用于处理器流水线的重放(replay)机制。
相关技术描述
计算机和其它许多类型的机器都是围绕着一个执行在机器存储器中保存的程序指令的“处理器”运行的。可以依据指令集的复杂性对计算机和处理器进行分类,例如精简指令集计算机(“RISC”)和复杂指令集计算机(“CISC”)。体系结构是一种定义处理器硬件和处理器指令集之间接口的归类。
处理器体系结构的第一方面是它是顺序地还是无序地执行指令。从历史上来说,处理器一次执行一个指令,或是以与指令代码出现在处理器的次序相同的顺序执行指令。这个体系结构为“顺序编程模型”。一个无序体系结构执行指令的次序与程序代码在处理器出现的次序不同,即是不连续地。
软件代码的顺序特性会引起“数据相关性”和“控制相关性”。当一个随后指令对一个操作数x进行操作,且x的数据是一个先前指令的结果时,就会出现数据相关性。随后指令在先前指令的操作数上具有数据相关性。当一个指令能够产生两个供选择的指令分支而且仅执行其中的一个指令时,就出现控制相关性。一般,分支选择取决于一个条件。各种体系结构都要考虑到这些数据和控制相关性。
处理器体系结构的第二个方面是指令处理是否是“流水线的”。在流水线处理中,处理器从存储器中读取指令,并将它们传送到流水线的后端。流水线有几个“级”,每个级执行某些必需的或期望的功能,从而在将指令传递到下一个级之前处理该指令。例如,一个级可以读取一个指令,下一个级可以解码该指令,再下一个级可以执行解码后的指令。通常每个级都向更接近完成的方向移动指令。
流水线可以在这个方面带来好处:即在流水线的一个部分处理第一指令的同时,流水线的第二部分在处理第二指令。这样,每次能够处理不只一个指令,从而潜在地增加了处理指令的效率。
某些流水线“推测地”处理指令。推测性执行意味着在分辨有关的控制和/或数据相关性之前读取并执行指令。推测性执行首先预测如何分辨数据和/或控制相关性,并根据预测结果执行指令,然后在退出指令和由此而来的结果之前验证该预测的正确性。
检验步骤是流水线设计的难点。在流水线的后端,在实际分辨出全部的数据和控制相关性之前,将执行指令所产生的结果暂时保存在一个寄存器内。然后流水线检查是否有错误预测或其它问题发生,此二者即通常所说的异常。在没有执行问题时,执行指令是“退出”的,且结果保存在体系结构的寄存器中,操作被称为“提交到体系结构状态”。如果存在执行问题的话,处理器就执行一个校正程序。
执行问题是那些能够导致下列情况的问题:
(1)执行一个不应该执行的指令;
(2)没有执行一个本应执行的指令;或
(3)用错误数据执行一个指令。
为了正确处理指令流,在后续指令执行上的执行问题结果也必须是正确的。
许多现有技术的流水线处理器在检测到异常时就“停止”流水线。在可停止的指令流水线中,多个锁存器或寄存器在流水线的各个级控制进程。流水线控制器产生一个信号以启动或停用这些锁存器或寄存器。在停止期间,锁存器或寄存器是停用的,这样就不会使那些指令传送到下一级。在对造成停止的异常和它的结果进行修复之后,流水线重新启动锁存器或寄存器,并恢复流水线各个级之间的传送。
为了对一个可停止的流水线进行操作,流水线控制器需要从流水线的各个级接收状态信号,由接收的信号确定是否停止,然后广播一个信号以停止或继续进行。由于这些级中的每一个都要花费时间,执行停止功能会限制流水线的操作频率。
某些处理器流水线除了停止之外还可“重放”。重放是指当检测到异常时,重新执行指令。如果检测到异常的话,就忽视推理性结果,例如不更新体系结构状态和不退出指令。处理器校正问题并重新执行指令。
一种采用重放的处理器是产自数字设备公司的Alpha 21164微处理器。Alpha 21164仅仅停止流水线的最初三个级。如果问题发生在第三个级之后,Alpha 21164就会在修复问题之后重放整个流水线。因此Alpha 21164结合了昂贵的停止和确定何时重放所必需的复杂决策电路。即使问题可能是局部的,Alpha 21164也会重放整个流水线。如果存在几个并行执行单元,例如一个超级标量处理器,并且问题位于一个并行执行单位中,则重放整个流水线可能是低效的。
对更快处理器的需要不断地超前于现有技术。这个需要迫使处理器体系结构的所有方面在高指令吞吐量上变得更快。当前用于在流水线处理中处理异常的技术能够在实质上减少指令吞吐量。
本发明的目的是要克服或至少是减少上面提出的一个或多个问题的影响。
发明概述
本发明在一个实施例中提供了一种执行指令的方法。这种方法包含在流水线的一部分调度和执行第一和第二批指令而不用首先确定流水线该部分的级是否就绪。该方法进一步包含:确定是否遇到执行问题,并根据第一批指令遇到执行问题的判定重放第一批指令。
本发明在另一实施例中提供了一种处理器流水线。该处理器流水线包含一个前端,以读取一批用于执行的指令;以及一个后端,以执行由前端读取的这批指令。后端包含一个退出级,以确定一个指令是否有执行问题。后端是不能停止的。该处理器流水线还包含一个通道,从该退出级向该流水线的一个重放点发送一个指令遇到执行问题的指示,可以从该重放点开始重新执行指令。
附图简要说明
通过阅读下列详细说明并参考附图,本发明的其它目的和优点将会变得显而易见,其中:
图1从概念上说明了一种依据本发明构造和操作的流水线的一个
实施例;
图2A描绘了在图1中说明的流水线的前端和后端之间的一个队列的第一实施例;
图2B描绘了在图1中说明的流水线的前端和后端之间的一个队列的第二实施例;以及
图3A从概念上说明了图1流水线的一个特定实施例;
图3B说明了图3A中流水线的退出级的一个实施例;
图4A说明了一种依据本发明推测地执行和退出指令的方法的一个实施例;以及
图4B说明了一种依据本发明执行和退出指令的方法的另一实施例。
虽然已经通过附图示例显示了特定实施例,并在此对其进行了详细描述,然而本发明可以有各种修改和可供选择的形式。无论如何应该明白,在此说明书中的特定实施例并不是将本发明限制在公开的特定形式中,相反地,是要使全部的修改、等同和替换落在由附加权利要求书定义的本发明的精神和范围之内。
特定实施例的详细描述
本发明的实施例说明描述如下。为了清楚起见,在本说明书中没有对实际实现的所有特征进行描述。当然在任何这种实际实施例的发展过程中,必须执行许多特定的决定以实现开发人员的特定目的,例如符合有关系统和有关商业的限制条件,这在各个实现之间是有差异的。此外,还应明白,即使这种发展工作是复杂并且费时的,它对于本发明所属领域的普通技术人员来说,为了获取本发明的优点,这也是常规任务。
图1从概念上说明了依据本发明构造和操作的一个不停止的处理器流水线10的一个实施例。流水线10通常包含一个前端12、一个后端14、和一个位于前端12和后端14之间的队列15。队列15能够储存处理器流水线的一个中间状态,后端14可以根据经由一个通道17传送的一个重放请求从该状态开始重放。
参见图1,某些实施例的队列15可以是后端14的一部分,而不是独立于后端14的。为了清晰起见,并进一步公开以下要求的这个发明,将把队列15和后端14作为流水线10的独立部分进行论述。虽然如此,并没有对本发明进行如此限制,并且在某些可选实施例中后端14可以和队列15合为一体。
仍然参见图1,在这个特定实施例中,前端12读取宏指令,并由此产生“微操作码”。一个微操作码通常是一个可以由处理器的单个执行单元(未显示)在一个或几个时钟周期内执行的指令。某些宏指令可以包含几个微操作码。因此,在宏指令和微操作码之间可以不是一一对应的。
仍然参见图1,前端12将宏指令解码成为微操作码,并将它们储存在队列15中。后端14执行这些由前端12准备好并保存在队列15中的指令。在下文中,指令将指的是微操作码或者是位于后端14的一个执行单元上的可执行指令。
仍然参见图1,一个发布组是从队列15中发送用于并行执行的一组指令或微操作码。发布组可以有一个或多个微操作码。在某些实施例中,在一个时钟周期内将一个发布组的微操作码写入队列15。保存在队列15中的微操作码定义流水线10的一个能进行重放的中间状态,以下将对此进行更充分地论述。
图2A说明了图1的队列15的一个特定实施例35。队列35有足够多的列33,用以输入到后端14的几个并行执行接口或单元(两者都未显示)中。图1的处理器10向一个独立的执行单元发送队列35每一列33的微操作码。在某些实施例中,列33的数目等于处理器流水线10中并行执行单元的数目。在其它实施例中,队列35仅仅输入到一部分执行单元中。例如,一个实施例包含N个并行运算逻辑单元(“ALU”),队列35有N个列33,每一列输入到ALU的一个独立部分中。
参见图2A,队列35的每一并行执行单元包含一列,但是也可以采用其它适宜的结构。某些实施例采用N个队列35,每一个队列向一个执行单元发送微操作码。图2A的队列35是一个主要队列,它为后端14的每个执行单元储存微操作码。
仍然参见图2A,队列35有足够多的行,用以存储在后端14的每一个未退出指令的微操作码。队列35的每一行储存一个发布组的微操作码。在队列35中,直到退出了由它们确定的宏指令以后,才覆盖微操作码。因此,队列35储存流水线10后端14的一个中间状态。该中间状态表示在发送级和最后或退出级之间的微操作码。后端14能够从保存在队列35中的该中间状态开始重放,而不必重放整个流水线10。
仍然参见图2A,队列35是环形的,包含一个头指针34、一个尾指针36、和一个重放指针38。头指针34指向队列35的“头”,或是新微操作码将要写入队列35的那一行。尾指针36指向下一行,或是要发送到后端14用于执行的发布组微操作码。重放指针38指向包含根据重放请求第一个发送的发布组微操作码的那一行,在这个特定实施例中,该发布组是队列35中最早的未退出的发布组。为了开始后端重放,流水线10将重放指针38复制到尾指针36中。这会重新定位尾指针,从而使最早的未退出发布组的微操作码变成下一个从队列35发送的发布组。
在图2A中,当新的微操作码写入到队列35时,头指针34加1。类似地,当微操作码从队列35中读出时,尾指针36加1。最后,当退出每个微操作码时,重放指针38加1。当指针34加1时就覆盖来自退出指令的微操作码,从而使队列35的行可以重新使用。当指针34、36或38中的一个指向队列35的最后一项记录时,将该指针加1就会绕回到队列35的第一项,从而使队列35变成一个环形缓冲区。在图2A的实施例中,通常尾指针36落后于头指针34,而且重放指针38落后于尾指针36。
仍然参见图2A,当头指针34等于尾指针36时,队列35为空。在某些实施例中,头指针34和重放指针38都有一个附加位。如果头指针34和重放指针38相等,且附加位不同的话,队列35为满。如果头指针34和重放指针38相等,且附加位相等的话,队列35为空。在一个替换实施例中,保留的一个空行是为检测一个满队列条件的且当队列35为满时头指针34比重放指针38小1。在某些实施例中,当队列35变满时就重放整个流水线10。
图2B说明了图1的队列15的第二个实施例35’。队列35’的每一列33’都是一个移位寄存器。队列35’仅仅使用头指针34’和尾指针36’,并对每一行微操作码进行物理移动,即:根据正退出的一行微操作码将每一发布组向下移。因此最早未退出发布组的微操作码是队列35’的底端行39。因此,图2A的实施例中重放指针38实际上就是队列35’的底端行39。在其它方面,图2B中队列35’的功能类似于图2A的队列35。
参见图3A,图1中不停止流水线10的前端12至少包含读取级16和解码级18。只要前端12从存储器读取宏指令并将微操作码写入队列15中,前端12可以是任何为本领域所公知的适当设计。在各种实施例中,前端12可以包含其它级和/或特征。
仍然参见图3A,后端14还包含几个处理级30、32。后端14包含一个执行级30和一个退出级32。后端14接收从队列15发送的微操作码,执行这些发送的微操作码,然后退出执行的指令。退出级32检查并检测执行问题即异常。取决于特定的实现,可选实施例可以包含另外的级和特征。
仍然参见图3A,上述流水线10的这些级16、18、30和32仅仅是有代表性的,既不排除又没有穷举在各种可选实施例中可以存在其它级。此外,本领域的那些技术人员将会理解:在处理器流水线10中级16、18、30和32的划分和功能没有必要象图3A所示的那样明确。为了清楚地阐明本发明,图1中的流水线10是概念化的。因此,前端12和后端14在级方面的精确结构没有与本发明的实践相对应。
仍然参见图3A,流水线的后端14是不会停止的。通过后端14的进程由触发器和/或自激的分级多米诺电路(两者都未显示)控制。使后端14不会停止,会消除与操作一个停止控制网络有关的时间延迟。通过不停止控制网络,某些实施例能够从实质上提高流水线10的操作频率。象在此处使用的那样,术语“不会停止的”是指一个流水线或它的一部分根据一个执行问题进行刷新和重放,而不是停止。在某些实施例中,整个流水线10是不会停止的。
仍然参见图3A,后端14做出预测,推测地分辨执行微操作码所需要的数据和控制相关性。在执行之后,微操作码和由此而来的结果临时地存储起来以等待提交到一个体系结构状态。提交到体系结构状态包含检查确定是否发生问题以及这些预测是否正确。问题检查可以以任何本领域所公知的合适方式执行,并且可以是特殊实现的。问题检查的确切方式不是本发明的内容。如果发现了问题或是错误预测,就忽略或删除推测性执行结果。然后,就刷新或忽略流水线10的后端14,也就是说,要么重新设置流水线10,要么允许完成执行后端14的全部指令并复位寄存器。
在一个特定实施例中的示例问题包含:
(1)高速缓存故障;
(2)一个分支或判定的错误预测;
(3)一个异常,例如一个页错误或一个非法指令;
(4)一个翻译后备缓冲器(“TLB”)故障;以及
(5)一定的数据相关性,例如载入/储存冲突。
此外,在某些实施例中某些问题可以不用后端重放来处理。这些变化都是特定实现的,而且对本发明来说不是必需的。
一旦检测到有问题,就对该问题和它的结果进行修复。同样,修复可以是特定实现的。例如问题和修复动作包括:
(a)一个判定错误预测,必须插入正确的判定用于重放;或者
(b)一个载入存储冲突,则必须完成存储,更新高速缓存然后载入正确的值。
问题修复可以很快地执行,因为图1的队列15存储了图1的流水线10的中间状态。因此,可以在队列15中对问题进行鉴别和纠正,并重放执行流。该问题的结果在重放中将会被纠正。
参见图3A,后端14从队列15的微操作码开始重放。由退出级32进行的一个执行问题检测产生重放请求。退出级32经由通道17向队列15做出一个重放请求。在图2A的实施例中,流水线10将重放指针复制为尾指针36来开始重放。然后,如上所述重新开始执行来自队列15的微操作码。执行问题的检测还会引起后端14和保存在那里的推测性执行结果的刷新。位于有执行问题指令和重放指令之间的指令所引起的结果不提交到体系结构状态。
参见图3A,推测性地存储重新执行的结果进行并检查执行问题。尽管引起重放的问题不应该再次发生,但是可能会出现其他的执行问题。如果检测到一个新问题,就象上面阐述的那样请求另一个重放。流水线10最后产生能够提交到一个体系结构状态的没有问题的结果。每次重复重放后端14会使在考虑中的发布组向其中指令的退出方向前进。
图3B说明了用于图3A退出级32的退出硬件31的一个实施例。退出硬件31包含退出逻辑20、一个推测性寄存器文件22、一个体系结构寄存器文件24,而且还可以包含一个掩码25。执行指令的结果临时保存在推测性寄存器文件22中。退出逻辑20确定在指令执行期间是否存在对应于保存在推测性寄存器文件22中的执行结果的任何执行问题。如果退出逻辑20确定没有发生执行问题,退出逻辑20就将来自于推测性寄存器文件22的执行结果写入到体系结构寄存器文件24中,并退出该指令。如果退出逻辑20确定发生问题,则退出逻辑20开始一个后端重放,而不是将结果写入体系结构寄存器文件22中。
仍然参见图3B,某些实施例使用一个掩码25,以便可以根据执行问题来执行“局部”的流水线重放。一个局部重放会重新执行图2A的队列35或图2B的队列35’的一部分列的微操作码。局部重放是根据在属于要重新执行的一部分列的微操作码上的一个执行问题来执行的。掩码25的行27表示遇到执行问题的微操作码列,或是潜在地取决于遇到执行问题的微操作码的列。例如,掩码25允许重放,或是重新执行某些微操作码列,这些微操作码列是发送给记录了问题的个别执行单元的。不依赖于遇到执行问题的那些列的指令列,可以正常地退出,  而且可以不必在一个“局部”重放中重新执行。
仍然参见图3B,退出逻辑20保持一个掩码25以指示哪个指令遇到了一个执行问题。掩码25包含一系列的1和0,用以指示那些遇到执行问题的特定指令。在读取掩码25之后,退出逻辑20就命令重放来自图2A或2B的列33的一个子集的指令。将要重新执行的该列子集可以是一个真子集,即小于全部的列33。在一个实施例中,队列15有N个列33,对应于N个并行执行端口或单元(未显示)。在这个实施例中,掩码25包含N个二进制数,即每个并行执行单元有一个二进制数。掩码数据是一个索引,用来指示队列15的列和这些执行端口中何处存在问题。
参见图3B和2A,一个实施例中的退出逻辑20对检测到的一个执行问题做出响应,向队列35传送掩码数据和一个重放请求。对接收重放请求做出响应,正如以上讨论的那样将队列35的尾指针36重新定位。然后,有选择地进行队列35中掩码数据指示的存在执行问题的那些列33的重放。来自其它列的指令不会重新执行。
图4A说明了一种在流水线的后端部分,例如包含图3A和/或3B的后端14的执行级部分,执行指令的方法40。在一个实施例中,流水线的后端部分是不会停止的。在决41中,流水线10发送并执行在后端流水线的多个指令,而不用确定流水线的各个级是否准备好接收这些指令。以块41举例来说,图3A的流水线10从队列15向后端14连续地发出多个发布组。队列15发送指令,并且在执行级30中执行这些指令而不必检查其中各个级是否就绪。在块42,退出级32确定这些执行了的指令是否遇到一个执行问题。例如,这个步骤可以要求确定在一个发布组的指令是否发生一个执行问题。在块44中,队列15根据一部分指令遇到执行问题的判定重放这部分已执行了的指令。在某些实施例中,该部分是一个完整的发布组。在其它实施例中,该部分是整个发布组的真子集。在后面的实施例中,退出级32保持由没有遇到问题指令的运行结果,由此将执行结果提交到一个体系结构状态中。在一个实施例中,提交要求向图3B的体系结构寄存器文件24写入这些结果。
参见图3B和4A,方法40可以进行变化。在各种替换实施例中,通过使结果提交到一个体系结构寄存器文件24中或者通过将该结果保留在推测性寄存器文件22中,可以保留没有问题的指令的执行结果。在后一种情况中,作为对几个执行没有问题的指令的反应,将推测性寄存器文件22的内容提交到体系结构寄存器文件24中。
图4B说明了用于在一个不会停止的流水线例如图3A的流水线10中执行指令的另一种方法45。在决46中,流水线10推测地执行一个发布组的指令。在块47中,退出级32确定这个发布组的任何指令是否遇到一个执行问题。在块48中,退出逻辑20,例如通过发送来自掩码25的数据,向流水线10的一个预定重放点传送一个指示,表示推测性执行的指令遇到了执行问题。这个重放点可以是图1和3A的队列15。在块49中,流水线10,例如可以通过从队列15向执行单元(未显示)发送相关的指令,重放那些遇到执行问题的指令,在块50中,图3B的退出逻辑20将那些没有遇到执行问题的指令的执行结果提交到图3B的体系结构寄存器文件24中,并退出这些指令。
图4B的这种方法还可以包含对流水线10中各个点的指令进行排列。例如,这些指令可以是在解码之后进行排列。同样,对那些遇到一个执行问题的指令的重放,可以要求重放一个处理器流水线的一部分,例如后端。
再次参见图3A,可以是通过重放后端而不是整个流水线10来提高处理器流水线10的指令吞吐量。在某些实施例中,由于处理器流水线10的前端12有很多级,因此重放整个处理器流水线10所需的时钟周期数可能是重放后端所需时钟周期的两倍。在这种境况下,本发明可以通过利用后端重放纠正执行问题将所花费的时间减半。
上述公开的这些特定实施例仅仅是用作例证说明的,对于本发明所属技术领域的技术人员来说,很显然本发明可以进行修改,并以不同但等效的方式实现。此外,在这里显示的详细的结构或设计不是用来作为限制,也不同于以下权利要求书的描述。因此很显然的,以上公开的这些特定实施例可以进行修改和改动,而且所有的这种变化是属于本发明的范围和精神之内的。因此,在这里寻求的保护范围如以下的权利要求书所阐述的那样。

Claims (20)

1.一种用于执行指令的方法,包含:
在一个流水线的一部分调度并执行第一和第二批指令,而不用首先确定这个流水线的该部分的级是否准备就绪;
确定是否遇到一个执行问题;以及
根据第一批指令遇到一个执行问题的判定重放第一批指令。
2.如权利要求1所述的方法,进一步包含:根据第二批指令没有遇到一个执行问题的判定,保持由第二批指令产生的结果,并刷新由第一批指令产生的结果。
3.如权利要求2所述的方法,其中的确定动作检查单个发布组指令中存在的执行问题。
4.如权利要求2所述的方法,进一步包含:根据第二批指令没有遇到一个执行问题的判定,将由执行第二批指令产生的结果从推测性寄存器写入体系结构寄存器中。
5.一种用于执行指令的方法,包含:
在流水线后端调度并执行一个发布组指令,而不必确定流水线后端的级是否准备好执行这些指令;
确定执行的该发布组指令是否遇到了执行问题;
向流水线的一个重放点指示该发布组的哪个执行指令遇到了一个执行问题;以及
从该重放点重新调度该发布组的指示的指令用于重新执行。
6.一种用于在一个流水线处理器中处理指令的方法,包含:
通过一个流水线处理器的一系列级发送要执行的多个指令,而不必确定这些级是否准备好接收这些指令;
确定这多个指令中哪些执行时没有问题;
向流水线处理器的一个重放点指示这些执行的指令中的那些遇到了一个执行问题;以及
从该重放点重放遇到一个执行问题的执行了的指令。
7.如权利要求6所述的方法,进一步包含:在一个队列的行中存储连续的发布组指令,其中的发送行为包含从该队列连续地向并行执行端口发送这些发布组。
8.如权利要求6所述的方法,其特征在于:指示行为包含从一个退出级向一个队列发送掩码数据,其中该队列发送发布组到各个序列级,  而掩码数据用以指示那些遇到一个执行问题的指令。
9.一个处理器流水线,包含:
一个前端,以读取大量用于执行的指令;
一个后端,以执行这大量由前端读取的指令,后端包含一个退出级以确定一个指令是否遇到了一个执行问题,后端是不会停止的;以及
一个通道,用以从退出级向一个可以重新执行该指令的重放点发送一个指示,说明该指令遇到了一个执行问题。
10.如权利要求9所述的处理器流水线,其特征在于:该指示包含一个掩码,用以指示那些遇到一个执行问题的指令。
11.如权利要求9所述的处理器流水线,其特征在于:该重放点包含一个位于前端和后端之间的队列,该队列用于存储来自前端的指令,这些存储的指令从该队列调度到后端执行。
12.如权利要求11所述的处理器流水线,其特征在于:该队列适于存储后端的一个中间状态,该中间状态包含发送了用于执行但是未退出的指令。
13.如权利要求12所述的处理器流水线,其特征在于:该队列进一步包含:
多个行,每一行用于存储来自于前端的一个发布组指令;
一个第一指针,指向用于存储下一个保存在队列中的发布组指令的那一行;以及
一个第二指针,指向要从该队列发送指令的下一行。
14.一个处理器流水线,包含:
一个前端;
一个后端,该后端是不会停止的;
一个位于前端和后端之间的队列,该队列用于接收来自于前端的指令,并存储流水线的一个中间状态用于重放后端;以及
一个通道,通过它后端能够从队列中请求一个重放。
15.如权利要求14所述的处理器流水线,其中该队列包含:
多个行,每一行用于存储从前端接收的一个发布组的未退出的微操作码;
一个第一指针,指向用于向该队列里存储微操作码的下一行;以及
一个第二指针,指向要调度到后端的下一行微操作码。
16.如权利要求15所述的处理器流水线,其中后端包含一个具有多个并行执行端口的执行级,而且队列分别有一列对应于每个并行执行端口,每一执行端口用于接收来自于这些列中的一列的指令。
17.如权利要求16所述的处理器流水线,进一步包含:一个退出级,响应于一个执行问题的发现,而向队列发送一个掩码,该掩码用于确定这些列中的哪一个要重放。
18.一个用于执行指令的处理器流水线,包含:
一个前端,以准备用于执行的指令;
一个具有多个并行执行单元的后端;
一个位于前端和后端之间的队列,该队列用于接收来自于前端的指令,并存储流水线的一个中间状态用于重放后端;以及
一个通道,通过它后端可以请求一个来自队列的后端的部分重放。
19.如权利要求18所述的处理器流水线,其中的队列包含:
多个行,每一行用于存储从前端接收的一个未退出微操作码的发布组;
一个第一指针,指向用于将微操作码存储到该队列里的下一行;以及
一个第二指针,指向要调度到后端的下一行微操作码;以及
其中该队列具有用于每一并行执行单元的一列,每一并行执行单元用于从这些列中的某一列接收微操作码。
20.如权利要求19所述的处理器流水线,进一步包含一个退出级,响应于一个执行问题的发现,向队列发送一个掩码,该掩码用于确定这些列中的哪一个要重放。
CNB008028141A 1999-01-14 2000-01-05 包括指令重放的处理器流水线 Expired - Fee Related CN1137435C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/231,426 1999-01-14
US09/231,426 US6205542B1 (en) 1997-12-24 1999-01-14 Processor pipeline including replay

Publications (2)

Publication Number Publication Date
CN1337021A true CN1337021A (zh) 2002-02-20
CN1137435C CN1137435C (zh) 2004-02-04

Family

ID=22869201

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008028141A Expired - Fee Related CN1137435C (zh) 1999-01-14 2000-01-05 包括指令重放的处理器流水线

Country Status (7)

Country Link
US (1) US6205542B1 (zh)
KR (1) KR100472346B1 (zh)
CN (1) CN1137435C (zh)
AU (1) AU2406300A (zh)
DE (1) DE10083848B4 (zh)
GB (1) GB2361564B (zh)
WO (1) WO2000042503A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047370A (en) * 1997-12-19 2000-04-04 Intel Corporation Control of processor pipeline movement through replay queue and pointer backup
US6625756B1 (en) * 1997-12-19 2003-09-23 Intel Corporation Replay mechanism for soft error recovery
IL125273A (en) * 1998-07-08 2006-08-20 Marvell Israel Misl Ltd Communication architecture
US6412067B1 (en) 1998-08-11 2002-06-25 Intel Corporation Backing out of a processor architectural state
US6282636B1 (en) * 1998-12-23 2001-08-28 Intel Corporation Decentralized exception processing system
JP2001209535A (ja) * 2000-01-27 2001-08-03 Toshiba Corp プロセッサの命令スケジューリング装置
US6877086B1 (en) * 2000-11-02 2005-04-05 Intel Corporation Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
SE0004913D0 (sv) * 2000-12-29 2000-12-29 Ericsson Telefon Ab L M Processor
US6938126B2 (en) * 2002-04-12 2005-08-30 Intel Corporation Cache-line reuse-buffer
US6950925B1 (en) 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
US20040123078A1 (en) * 2002-12-24 2004-06-24 Hum Herbert H Method and apparatus for processing a load-lock instruction using a scoreboard mechanism
US7080209B2 (en) * 2002-12-24 2006-07-18 Intel Corporation Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
DE102004051991A1 (de) * 2004-10-25 2006-04-27 Robert Bosch Gmbh Verfahren, Betriebssystem und Rechengerät zum Abarbeiten eines Computerprogramms
DE102004051967A1 (de) * 2004-10-25 2006-04-27 Robert Bosch Gmbh Verfahren, Betriebssystem und Rechengerät zum Abarbeiten eines Computerprogramms
US7152155B2 (en) * 2005-02-18 2006-12-19 Qualcomm Incorporated System and method of correcting a branch misprediction
US20070028078A1 (en) * 2005-07-26 2007-02-01 Arm Limited Instruction queues in pipelined processors
US7721067B2 (en) * 2006-01-20 2010-05-18 Qualcomm Incorporated Translation lookaside buffer manipulation
US8977837B2 (en) * 2009-05-27 2015-03-10 Arm Limited Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes
US10678542B2 (en) * 2015-07-24 2020-06-09 Apple Inc. Non-shifting reservation station
US10452434B1 (en) 2017-09-11 2019-10-22 Apple Inc. Hierarchical reservation station
US20210119812A1 (en) * 2020-12-23 2021-04-22 Intel Corporation Time-based multi-dimensional key recreation mechanism using puf technologies

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4920477A (en) * 1987-04-20 1990-04-24 Multiflow Computer, Inc. Virtual address table look aside buffer miss recovery method and apparatus
US5297263A (en) * 1987-07-17 1994-03-22 Mitsubishi Denki Kabushiki Kaisha Microprocessor with pipeline system having exception processing features
US5012403A (en) 1988-04-01 1991-04-30 Digital Equipment Corporation Apparatus and method for replaying decoded instructions
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5428807A (en) 1993-06-17 1995-06-27 Digital Equipment Corporation Method and apparatus for propagating exception conditions of a computer system
US5421022A (en) 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
JPH07141176A (ja) * 1993-11-19 1995-06-02 Fujitsu Ltd コマンドリトライ制御方式
US5584037A (en) 1994-03-01 1996-12-10 Intel Corporation Entry allocation in a circular buffer
US5673426A (en) 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for tracking floating-point exceptions
US5822574A (en) 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
US5822558A (en) 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor
US5765208A (en) 1995-09-29 1998-06-09 Motorola, Inc. Method of speculatively executing store instructions prior to performing snoop operations
US5933618A (en) 1995-10-30 1999-08-03 Advanced Micro Devices, Inc. Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction
US5787474A (en) 1995-11-20 1998-07-28 Advanced Micro Devices, Inc. Dependency checking structure for a pair of caches which are accessed from different pipeline stages of an instruction processing pipeline
US5901308A (en) 1996-03-18 1999-05-04 Digital Equipment Corporation Software mechanism for reducing exceptions generated by speculatively scheduled instructions
US5784587A (en) 1996-06-13 1998-07-21 Hewlett-Packard Company Method and system for recovering from cache misses
US5966544A (en) * 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
US5870579A (en) 1996-11-18 1999-02-09 Advanced Micro Devices, Inc. Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception
US5764971A (en) 1996-12-11 1998-06-09 Industrial Technology Research Institute Method and apparatus for implementing precise interrupts in a pipelined data processing system
EP1012708B1 (en) 1997-01-29 2003-05-07 Advanced Micro Devices, Inc. A line-oriented reorder buffer for a superscalar microprocessor
US5983321A (en) 1997-03-12 1999-11-09 Advanced Micro Devices, Inc. Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache
US5987594A (en) * 1997-06-25 1999-11-16 Sun Microsystems, Inc. Apparatus for executing coded dependent instructions having variable latencies
US6079002A (en) * 1997-09-23 2000-06-20 International Business Machines Corporation Dynamic expansion of execution pipeline stages
US6047370A (en) * 1997-12-19 2000-04-04 Intel Corporation Control of processor pipeline movement through replay queue and pointer backup
US6076153A (en) 1997-12-24 2000-06-13 Intel Corporation Processor pipeline including partial replay
US6081887A (en) * 1998-05-13 2000-06-27 Compaq Computer Corporation System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction

Also Published As

Publication number Publication date
GB0116269D0 (en) 2001-08-29
CN1137435C (zh) 2004-02-04
KR20010089588A (ko) 2001-10-06
GB2361564B (en) 2003-11-26
DE10083848T1 (de) 2002-03-07
KR100472346B1 (ko) 2005-03-08
AU2406300A (en) 2000-08-01
WO2000042503A1 (en) 2000-07-20
US6205542B1 (en) 2001-03-20
GB2361564A (en) 2001-10-24
DE10083848B4 (de) 2007-12-06

Similar Documents

Publication Publication Date Title
CN1137435C (zh) 包括指令重放的处理器流水线
CN1310155C (zh) 用于先行执行期间的存储器通信的装置
CN100461094C (zh) 一种针对流处理器的指令控制方法
CN101308462B (zh) 管理对共享存储器单元的存储器访问的方法和计算系统
EP2140347B1 (en) Processing long-latency instructions in a pipelined processor
CN101681259B (zh) 用于使用局部条件码寄存器以加速管线处理器中的条件指令执行的系统和方法
CN1324460C (zh) 用最近条目队列补充分支目标缓冲器的方法和系统
JP5356531B2 (ja) シーケンス検出又は命令に関連付けられた情報に基づいた命令の最適化性能
CN104731719B (zh) 一种缓存系统和方法
CN1165840C (zh) 计算机处理器检验指令的方法和系统及相应计算机系统
CN1790256A (zh) 用于微处理器的分支前瞻预取
CN101281460B (zh) 处理多个线程的方法和设备
CN105426160A (zh) 基于sprac v8指令集的指令分类多发射方法
CN1945525A (zh) 从队列处理指令刷新的生存期计数器设计的系统和方法
CN1282024A (zh) 具有静态转移预测支持的去耦取指令-执行引擎
CN1226700A (zh) 高性能推测性未对齐加载操作
WO2020034753A1 (zh) 在cpu中执行指令的方法
US6061367A (en) Processor with pipelining structure and method for high-speed calculation with pipelining processors
CN100489830C (zh) 面向科学计算的64位流处理器芯片
CN1434939A (zh) 用于处理失败的加载检查指令的机制
CN1266592C (zh) 依据确定延迟的动态vliw指令调度方法
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
CN1124546C (zh) 一种超标量处理器及在该超标量处理器中完成指令的方法
US6944752B2 (en) Retiring early-completion instructions to improve computer operation throughput
CN113918225A (zh) 指令预测方法、指令数据处理装置、处理器以及存储介质

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
PB01 Publication
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: 20040204

Termination date: 20130105