Connect public, paid and private patent data with Google Patents Public Datasets

在超标量处理器中检测和执行俘获的装置

Info

Publication number
CN1183152A
CN1183152A CN 96193536 CN96193536A CN1183152A CN 1183152 A CN1183152 A CN 1183152A CN 96193536 CN96193536 CN 96193536 CN 96193536 A CN96193536 A CN 96193536A CN 1183152 A CN1183152 A CN 1183152A
Authority
CN
Grant status
Application
Patent type
Prior art keywords
apparatus
detecting
executing
traps
superscalar
Prior art date
Application number
CN 96193536
Other languages
English (en)
Other versions
CN1095115C (zh )
Inventor
戴维·L·伊萨曼
Original Assignee
现代电子美国公司
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

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/30Arrangements for executing machine-instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/30Arrangements for executing machine-instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/30Arrangements for executing machine-instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. incrementing the instruction counter, jump
    • G06F9/322Address formation of the next instruction, e.g. incrementing the instruction counter, jump for non-sequential address
    • G06F9/327Address formation of the next instruction, e.g. incrementing the instruction counter, jump for non-sequential address for interrupts
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/30Arrangements for executing machine-instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling, out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/30Arrangements for executing machine-instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling, out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/30Arrangements for executing machine-instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling, out of order instruction execution
    • G06F9/3857Result writeback, i.e. updating the architectural state
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/30Arrangements for executing machine-instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

在靠多个流水线指令工作的超标量处理器中检测和执行俘获程序指令的装置包括:一个用于从一个指令高速缓冲存储器(210)或从一个主存储器读取连续指令的读取级,一个用于存储从读取级读取的指令的指令FIFO存储器(220),和一个根据FIFO存储器(220)中存储指令的相对年龄从FIFO存储器(220)移去指令的指令解码级(230)。

Description

在超标量处理器中检测和执行俘获的装置

本发明涉及在解码级识别俘获条件以加快流水线超标量处理器中操作的改进处理器的构架和操作。

常规的处理器设计通常涉及读取、解码、执行三个级中的指令控制。在第一级,在由指向最后读取的指令的程序计数器识别的位置从存储器读取一条指令,从而允许读取下一条指令。读取之后,针对可能的数据相关性检查该指令,如果它通过测试,则发出该指令和其操作数用于执行。(数据相关性是指由于仍不能提供指令的数据而不能执行一条指令的情况)。一个虚拟发出程序计数器可以识别发出的指令。一旦解码和发出一条指令,将其送到执行级,在此产生一个被写入一个寄存器文件或一个存储器的结果,从而改变处理器的状态。

最近的高级处理器包括一个被称为寄存器记分板(scoreboard)的元件,该寄存器记分板检查用于指令的资源以查看是否有执行指令所需的资源。如果有的话,甚至在执行级中的指令结束之前发出指令,这样会导致失序执行。寄存器记分板记录(锁定)在发出时将由该指令变更的资源。在最初锁定资源的指令通过更新资源随后将它们解锁,并通知处理器之前不能发出想存取那些资源的任何后续指令。

这些已知的处理器设计伴随着通常因指令之间的资源相关性造成指令发出中的任何停止将使指令读取停止的缺陷工作。由于几乎没有发出执行的指令,这种停止导致失去性能。

另外,计算机系统定义多种指令类型的硬件俘获(trap)条件。硬件俘获条件是指在当前条件下不允许为该指令产生有意义的执行结果的情况。硬件俘获条件通常包括:非法指令、特许指令、防止违章、缺页、无效结果、没有任选浮点处理器情况下的浮点指令、和寄存器设定溢出。

在每条指令执行之前和之后由计算机系统自动测试硬件俘获条件。如果发现一个俘获条件,提取一个俘获。提取一个俘获包括步骤:防止该俘获指令和该指令之后的所有那些指令影响机器状态,将俘获指令的地址保存在计算机设计者熟知的规定俘获地址寄存器中,设定机器模式为管理程序(特许)模式,和从俘获处理程序切换到读取指令。通常通过将一个取决于俘获条件类型的常数并置于一个专用状态寄存器,即俘获基址寄存器(TBR)的内容确定俘获处理程序的地址。

另外一种俘获形式是软件俘获。许多计算机系统具有专用指令,软件俘获的副作用是强制俘获。这些由请求操作系统服务(一个″系统调用″)的用户模式程序使用。除俘获处理程序的地址是一个由俘获指令本身计算的变量而不是一个常数外,检测软件俘获所采用的步骤与刚描述的硬件俘获的那些步骤相同。

几乎所有计算机系统的实施都是流水线的。在流水线实施中,每条指令最少占用五到七个时钟周期以完全执行。一种典型的步骤顺序是:从一个指令高速缓冲存储器读取指令,解码该指令以确定其资源需求,从一个寄存器文件读出该指令的操作数值,执行该指令以产生一个结果;这需要一到三个时钟周期,并将结果回写到该寄存器文件。

为保持对硬件的充分利用,每当有可能时每个时钟周期有一个新指令进入流水线。这样,虽然每个单独的指令需要数个周期完全执行,指令的完成速度可高达每个时钟周期一个。

某些俘获条件取决于执行结果,因此直到执行级后才能进行测试。对于这些指令,在回写周期期间进行测试,及时防止用无效结果更新寄存器文件。每当检测到一个俘获条件时,俘获的指令之前执行的所有指令的俘获已完成回写阶段,因此其结果已更新寄存器文件。跟随该俘获指令后的所有指令仍然在流水线中。在流水线机器中提取一个俘获是从该流水线清除所有指令并强制读取级切换到俘获处理程序地址的简单事情。

在回写阶段提取一个俘获表示因硬件被应用到俘获指令之后的被清除的指令的情况造成的无效程度。在常规处理器中,在提取一个俘获中被清除的指令数量近似等于流水线的长度。这种代价很小,以至为简化起见,所有俘获以相同方式处理。在流水线的某一较早阶段将例如因为未识别或特许而不能执行的一条指令简化地标为俘获。该俘获标记伴随指令贯穿流水线,直到其被识别并在回写阶段起作用。

然而,在一个超标量无序处理器中,因在回写阶段提取一个俘获而造成的无效明显增大。简单地说,该处理器与常规流水线的不同在于:通过在解码级后插入一个缓冲器(″指令架″)和在执行级后插入另一个缓冲器(″结果架″)。每个缓冲器可保留数条指令,每条指令在缓冲器保留不定的时间长度,等待条件的正确组合以使其进至下一个级。

在诸如1990年12月5日提交的题为″具有去耦读取,发出和更新操作的处理器构架和理论分支″的美国专利申请序号No.07/622,893中公开的超标量处理器中,在流水线的第一(读取)和最后(回写)阶段之间的这些缓冲器中可保留多达64条指令。因此,在回写阶段检测和进行一个俘获导致将数十个时钟周期的执行带宽浪费在被清除的指令上。某些类型的俘获直到执行级后才能被检测到。对于这些俘获,浪费现象是不可避免的。但许多类型的俘获可在读取或解码级检测。

在现有技术的无序处理器中,正如在传统流水线机器中一样处理在读取或解码级检测的俘获。该指令被标为俘获,然后象任何其它指令一样送入机器。它停留在指令架上等待空闲执行单元以使其能够进至结果架,它在指令架必须等待直到此前读取的所有指令已通过回写阶段。在此整个时间期间,读取和解码级继续送出俘获指令之后的指令,即使解码级知道所有那些随后指令将被清除。

在解码级检测的许多种硬件俘获是″不应发生″的类型:非法指令,特许或防止违章。象缺页之类在读取级检测的其它类型俘获在俘获处理程序中需要如此大的额外开销,以至即使数十个浪费指令也不明显。但有一类俘获,不是编程错误的软件俘获和寄存器设定溢出预计会发生,并在俘获处理程序中引起一个较低的额外开销。在超标量无序处理器中在回写阶段等待提取该类俘获时浪费的累积效果可能很明显。

本发明包括用于在靠多条流水线指令工作的超标量处理器中检测和执行程序指令硬件和软件俘获的装置。该装置包括用于从一个指令高速缓冲存储器或从主存储器读取指令的读取装置,一个用于存储从读取装置读取的指令的指令FIFO存储器,和一个根据存储指令的相对使用期限从FIFO存储器移去指令并检查俘获条件的指令的指令解码装置。解码装置响应指令中的俘获标识从FIFO存储器清除所有较新的指令。

在本发明中,每当解码级在一条指令上检测到一个硬件俘获条件时,它清除该指令和在该指令之后读取的所有那些指令,而不是将该指令转送到指令架。在软件俘获的情况下,仅转送俘获指令,以便得到计算的俘获处理程序地址,并清除所有随后的指令。在规定俘获地址寄存器的副本中保存俘获指令的地址。设定模式为管理程序模式,切换到新寄存器设定,并且只要一得知俘获处理程序地址就强制读取级开始从俘获处理程序读取指令。通过俘获基址寄存器(TBR)与硬件俘获的常数俘获型数值或执行软件俘获指令的结果并置给出俘获处理程序地址。

在本发明中,提取在解码级检测的硬件俘获仅有的代价是一个在其期间没有指令被放入指令架的小时间窗口。但由于指令架是一个排队装置,在该间隔的开始很可能已经有足够的指令在其中以保持执行级繁忙,直到解码级重新开始发出指令。软件俘获因其必须等待俘获指令以进入执行级而代价较大,但与等待俘获指令以进入回写阶段相比代价要小得多。

为了能在解码级检测特许违章,本发明在解码级而不是在执行级在俘获处理程序的入口和出口执行进入管理程序模式和从中返回的变化。同样,为了能在解码级检测寄存器设定溢出俘获,本发明在解码级而不是在执行级执行为子程序调用和返回进行的寄存器设定变化。

当结合附图时从下面的详细描述和所附权利要求将使本发明及其目的和特性更加显而易见。

图1示出采用本发明的超标量处理器构架的简化示意图的主要数据流程;图2是包括构架附加组件的方框图;图3是分支执行操作的流程图;和图4示出根据本发明用于处理故障的装置的示意方框图。

图1和2的方框图以及图3的流程图是上文提到的待审申请序号No.07/622,893中公开的处理器的构架概况。指令读取器9(见图2和3)最好耦合到已知的指令高速缓冲存储器(未示出),并从指令高速缓冲存储器接收指令8。在其它功能中,读取器9执行″节流″功能。例如,如果不能从指令高速缓冲存储器读取一条指令,则读取器9工作以便从主指令存储器(未示出)取出一条指令传送到指令高速缓冲存储器(步骤100)。在高速缓冲存储器中读取一次指令(步骤102)。由读取器9执行的其它″节流″功能的实例包括管理需要多个时钟周期发送的指令,和管理因某一原因不能读取的指令,例如,不能赋予一条指令的标识码(步骤103)。

如图2所示,读取器9向动态寄存器文件11提供从高速缓冲存储器读取的指令。动态寄存器文件保留处理器中待定的所有非分支指令。从高速缓冲存储器读取指令8时,由一个计数器(未示出)向它们指定标识码29或ID(步骤105),该计数器向以该读取顺序读取的每条指令指定严格排序的ID值。这些排序的ID包含一个是最显著比特的″颜色″比特,并被用于幅度比较。通过两个指令ID的颜色比特以及,如果需要的话,幅度的比较,可确定较早读取的指令。这样提供了两个指令之间的″年龄″比较,就是说,它提供了从存储器读取指令8时的相对顺序。

如图2所示,读取器9还以一种方式管理分支执行,以便如果不能执行一个分支读取器9并不停止。对于待执行的一个分支,它必须具有有效条件码(步骤109)。由修改该条件码的指令设定该条件码。因此,在发送修改条件码的指令时,读取器9通过在条件码寄存器上放置一个锁定比特使条件码寄存器无效(步骤117)。读取器存储锁定条件码的指令的ID。条件码保持锁定,直到该指令结束执行和更新条件码寄存器(步骤113),从而解锁条件码(步骤120)。

当象寄存器文件和存储器相继被更新时当条件码寄存器的内容不反映处理器的状态时,条件码寄存器的内容在此被称为″不合情理″。当锁定条件码时(步骤117),有一个表示需要修改该条件码的指令。这样防止随后的分支使用该条件码做出决定。因此,读取器将分支储放架13中的这样一个随后的分支指令与锁定条件码的指令的ID放置在一起(步骤112)。只有锁定指令的结果为分支提供有效的条件码。

在分支储放架13中,分支指令等待,直到条件码变为可使用,即分支指令等待,直到锁定条件码的指令完全执行并更新条件码。当一个分支上架时,读取器9根据预测比特决定在哪个方向放下指令流以便从该位置,换句话说,程序继续执行的最可能的方向继续进行。读取器9将″根据推测″沿预测路径继续读取指令。当一个上架的分支指令正在等待的条件码变为有效时,则重新评估分支决定(步骤115)并与初始决定比较(步骤116)。如果该比较表明分支被正确执行,从架上将其移去(步骤122)。如果比较结果与该决定不同(步骤118),预测的决定错误并且处理器必须沿另一条未被预测的分支继续进行。因此,程序必须在另一个方向从该分支指令重新执行。

对于处理器在不正确的预测分支决定之后改变方向(步骤118),处理器必须可在任何点可重新开始。例如,假设在处理器中允许有N条指令并且存在被读取但未执行的指令。处理器必须能够以动态寄存器文件中的任何指令,即仍未更新存储器状态的任何指令重新开始。借助在此被称为″合理″的程序计数器文件15的程序计数器文件的帮助完成被称作重新开始的功能,程序计数器文件15是一个包含动态寄存器文件11中由其ID指向的指令地址的N入口寄存器文件。如果处理器需要通过重新读取一个分支指令来重新开始,分支ID被用来指向合理的程序计数器文件15并获得其程序计数器(步骤119)。该程序计数器被用来使处理器从该点重新开始运行。

在错误地预测分支时的情况下(步骤118),将某一数量的指令放入执行流并可产生在动态寄存器文件11中但仍未更新寄存器文件17的结果。由于这些指令是推测的,合理状态控制器19还不允许这些指令达到结束。当确定分支预测错误时,一个清除机构从动态寄存器文件11清除所有指令和其依据错误预测而执行的那些结果(步骤119)。

合理状态控制器19从分支储放架13接收上架分支指令的ID,或在多个上架分支的情况下接收所有上架分支中最老的ID(根据读取它们的顺序确定)。合理状态控制器19不允许具有比最老的上架分支的ID较新的ID的指令更新处理器状态,并因此在此刻停止指令的完成。这样通过不允许推测结果改变处理器状态使处理器能够保持其合理条件。

处理器也可在其遇到一个俘获条件或一个外部中断后重新启动。处理器包括在遇到一个俘获条件的时刻提供处理器状态的俘获逻辑21。俘获指令的ID用来从合理程序计数器文件15获得该程序计数器。

现在参考图4,说明根据本发明用于处理故障的装置的示意方框图。主要部件包括读取级210、指令FIFO220、解码级230、和以下的″状态寄存器″:管理程序寄存器261、启动浮点(EF)寄存器262、当前窗口指针(CWP)263、窗口无效框罩(WIM)264、俘获基址寄存器(TBR)265、和俘获型寄存器266。

如上所述,读取级从一个指令高速缓冲存储器或主存储器(未示出)读取指令。每个时钟周期经线路211A-D输出四条从在读取地址260开始的连续地址读取的指令。读取级还实现存储器管理单元(MMU)的功能。MMU功能将主存储器地址空间分成页。它为每页指定特定属性。与本发明有关的属性包括:1.是否存在在试图读取该指令时遇到的物理存储器错误?2.主存储器中当前是否有该页的副本?3.是否允许从该页读取指令?4.当不处在管理程序模式时(即当管理程序比特261为0时)是否允许执行从该页读取的指令?由于在一个时钟周期由读取级输出的所有四条指令被限定在同一页上,读取级输出一个唯一的四存取位212组,为包含那些指令的页表明上面每个问题的答案。

除存取比特和每条指令的地址外,指令FIFO220还保留多达五个指令,FIFO中的指令被认为是按″年龄″排序。就是说,在FIFO前部将首先被移去的指令是″最老的″,而在后部将在任何其它指令之后被移去的指令是″最新的″。解码级230每个时钟周期从前部移去零到四条指令(最老的指令)。考虑到读取级可提供的指令数量和从前部移去后在FIFO后部空出位置的数量,读取级210每个时钟周期写入尽可能多的指令。

在读取级其地址是读取地址260的指令211A被认为是最老的,如果仅加入一条指令,它将是被加到FIFO的指令。如果一条第二指令加到FIFO,它将是在下一个更高地址的指令211B,等等。FIFO也能够被完全清除,移去每一寄存项。在一个时钟周期加入的所有指令得到在线路212上输入的四个存取比特的一个副本。指令FIFO还保持其中存储的每条指令的地址的轨迹。

解码级同时检验指令解码FIFO221A-D中四条最老的项。221A是最老的、221D是最新的。对于包含一条指令的每一项,解码器级确定几个可能的俘获条件中任何一个的出现。它还查找修改解码级依赖的状态寄存器之一的任何非俘获指令:管理程序比特、EF位、CWP、WIM、或TBR。

由两类指令修改这些状态寄存器。状态寄存器写指令对任意通用的寄存器内容进行一个操作并将该操作结果写入状态寄存器之一(在该优选实施例中,由一个单独的状态寄存器写指令写入全部三个管理程序、EF、CWP寄存器261-263)。修改状态寄存器的第二类指令是递增修改量。这些指令或是将寄存器设定为一个常数或是通过一个常数修改当前值。

具体地说,在优选实施例中,按从俘获返回(RETT)指令的副作用修改管理程序比特261,设定该比特为0。作为保存指令(通常在子程序调用上执行)的副作用,将作为表明哪个寄存器设定正在使用中的三比特变址的当前窗口指针263减1。正象RETT指令,在子程序返回执行的恢复指令具有使CWP263加1的副作用。

解码级230检查四条指令221A-D中的每一条以查看其是否修改了状态寄存器之一。如果任何一条指令写入这些状态寄存器中的某一个,直到了解状态寄存器写指令的结果为止,该指令后的某些其它指令不能使其俘获条件被评估。因此,直到在执行级的输出可提供状态寄存器写指令的结果为止,解码级将不发出跟随该状态寄存器写指令后的任何这类指令。

如上所述,本发明通过利用由解码级给每条指令指定一个指令ID这一情况的有利条件检测它正等待的状态寄存器写指令结果的有效性和值。保证该ID对已清除解码级而仍未清除执行级的每条指令是唯一的。每当解码级发出一个状态寄存器写指令时,它记录待写寄存器被锁定的这一情况,即,由于不了解其正确内容而不能存取该寄存器。解码级还记录状态寄存器写指令的ID,称之为该状态寄存器的锁存器ID。

更新总线251来自执行级的输出。正当更新总线携带一条指令的结果、该指令的ID、和执行该指令的结果时,更新总线包括有效比特1。每当解码级在更新总线251上看到有效比特1时,它将该总线上的ID与任何被锁定状态寄存器的锁存器ID比较。如果检测到两者匹配,解码级将来自更新总线适当比特的正确新值复制到适当的被锁定状态寄存器并复位被锁定的条件。

如果由解码级检验的四条指令221A-D中任何一条是状态寄存器的递增修改量,解码级本身执行该指令。解码级通过读出对应物理状态寄存器261或263的当前值和然后应用由该指令表示的修改执行该指令。修改值用来评估该时钟周期期间四条指令中任何较新指令可能的俘获条件和在发出该指令的时钟周期结束时更新物理寄存器261或263。

例如,如果第三老的指令221C是如果不在管理程序模式就不能执行的特许指令,并且物理管理程序寄存器261包含一个1,则除非一个较老的指令(22A或221B)是具有设定管理程序模式为0的副作用的RETT指令,否则该指令不具有俘获条件。如果,例如221A是一条RETT指令,由于在FIFO中有一条更老的RETT指令,因此表示221C的俘获条件,直到通过发出指令221A将其从FIFO移去为止。在移去最老的RETT指令的时钟周期,经由线路231将物理管理程序寄存器261设定为0,以便在后续时钟周期,根据为0的物理寄存器261的内容将看到该特许指令具有俘获条件。

如果解码级在递增地修改相同状态寄存器261或263的指令221A-D中检测到多于一条指令,对它们一次处理一条。例如,如果CWP寄存器263包含数量4,221A是保存指令,和221C是恢复指令,则忽略221C和随后的所有指令直到221A中的指令移去为止。那是由于针对221D中指令的CWP的正确值是4:寄存器263中的值由221A中的保存指令减1,然后由221C中的恢复指令加1。但由指令221D看到的实际值是5:寄存器263中的值由221C中的恢复指令递增。

每个时钟周期最多可发出一条递增地修改给定状态寄存器的指令。在本实例中,直到已经由线路232发出更新物理CWP寄存器263为3的指令221A后才能发出指令221C。然后,在后续时钟周期,恢复指令向CWP寄存器263的新内容3加1,为恢复指令后的指令产生正确值4。

由于同一条指令可能满足多于一个条件,在解码级检测的俘获条件必须被按优先顺序排列。下面按递减的优先顺序列出检测的条件,以及确定它们的方式。对于取决于状态寄存器值的任何条件,所使用的值是对应的物理寄存器260-264中的由四条指令中任何更老指令递增修改的值,除非该状态寄存器被锁定。如果一个检验的指令依赖的状态寄存器被锁定,则将相关指令和其后的那些指令保留在FIFO中,直到状态寄存器变为解锁。

1.物理存储器存取误差。这是由读取级检测的并当读取该指令时在一条存取线路212上输出。

2.缺页。这是由读取级检测的并当读取该指令时在另一条存取线路212上输出。

3.特许违章。这是由表明除非在管理程序模式和管理程序比特为0,页面上没有指令可被执行的读取逻辑输出的第三存取比特212发出的信号。

4.防止违章。这是由读取级检测的并当读取该指令时在第四条存取线路212上输出。

5.特许指令。这是通过对该指令解码以确定它是除非在管理程序模式(与读取其的页面无关)和管理程序比特为0否则不能执行的那些指令之一检测的。

6.违法指令。这是通过对该指令解码以确定它不是一个所定义的指令检测的。

7.浮点禁用这是通过解码该指令作为一个浮点指令和EF比特262为0检测的。

8.窗口溢出。这是通过向CWP寄存器263的内容加1并使用该结果作为指向WIM寄存器264的比特检测的;用被指向的WIM比特位置中的一个1表示一个俘获条件。

9.窗口下溢。这是通过从CWP寄存器263的内容减1并使用该结果作为指向WIM寄存器264的比特检测的;用被指向的WIM比特位置中的一个1表示一个俘获条件。

10.软件俘获。

每当解码级230在不是最老指令的指令221B-D任何一个上检测到上面的俘获条件之一时,解码级将不发出该指令或任何较新的指令。它将以正常方式发出比最老的俘获指令更老的所有指令。

只要解码级检测到最老的指令221A具有一个硬件俘获条件,解码级开始进行下列操作:1.如果需要,等待CWP寄存器变为解锁,然后经线路232将其当前值减1,并经线路231强制管理程序寄存器内容261为1。

2.公式化和发出包含FIFO中最老指令的地址的伪指令。执行该伪指令的效果是将该俘获指令地址保存到通用寄存器位置。

3.清除整个指令FIFO220,从而仅删除该俘获指令和其后的所有那些指令。

4.确定为最老的指令保留的最高优先等级俘获条件的校正码,并将该码经线路233写入俘获型寄存器266。

5.如果需要,等待俘获基址寄存器被解锁,然后经线路234向读取级发信号以更新读取地址260等于线路267上的值,该值是俘获基址寄存器265和俘获型寄存器266的内容的并置。

只要解码级检测到最老的指令221A具有软件俘获条件,解码级进行上面相同的步骤1和2,随后是下面的步骤:3.发出最老的指令221A,记录其指令ID,和从指令FIFO清除剩余的指令。

4.监测等待与匹配所记录的俘获指令的ID的指令ID一致的有效信号的更新总线251。当其发生时,从更新总线的数据部分捕获校正码并经线路252将其写入俘获型寄存器266,随后是相同的步骤5。

在解码级指令中俘获条件的标识和使用状态寄存器以识别俘获条件加速了俘获的处理,同时降低了在一个俘获条件后并且必须被清除的指令上浪费的执行带宽。虽然已参考具体实施例描述了本发明,该描述是本发明的说明而不能解释为对本发明的限定。在不超出由所附权利要求定义的本发明实质精神和范围的情况下本领域技术人员可对本发明进行各种改进和应用。

Claims (22)

1.一种在流水线计算机中响应俘获条件的方法,所述计算机由数个处理级组合,包括一个在每个时钟周期从一系列指令检验一条或多条指令的解码级;和一个耦合到所述解码级用于接收由解码级提供的解码指令,评估任何所述解码指令是否满足任何一组俘获条件,和为满足任何所述俘获条件组的任何指令进行一个规定的俘获动作的执行级,所述方法包括步骤:a)评估在解码级检验的任何指令是否满足任何一组发出时间的俘获条件,所述发出时间俘获组是所述俘获条件组的一个分组;和b)当确定在解码级所评估的任何一条指令满足一个俘获条件时,则进行分步骤:(i)防止所述序列中第一个这种指令,以及在所述序列中的所述第一个这种指令后的所有一个或多个指令被提供给执行级;和(ii)进行一个规定的俘获动作。
2.根据权利要求1所述的方法,其中所述计算机包括用于在每个时钟周期在以一个读取地址寄存器中包含的指令开始的连续地址从一个指令存储器读出一条或多条指令的读取级;和所述规定俘获动作包括强制所述读取地址寄存器中包含的地址作为一个俘获处理程序地址。
3.根据权利要求2所述的方法,其中:所述读取级包括一个耦合到指令存储器和解码级的指令缓冲器;读取级将其在一个时钟周期中从指令存储器读出的一条或多条指令在该周期终点写入所述指令缓冲器;来自由解码级在每个时钟周期检验的所述序列的一条或多条指令是包含在指令缓冲器中的那些指令;和所述俘获动作包括腾空指令缓冲器和在所述读取地址强制步骤被完成之前防止任何指令写入指令缓冲器的进一步步骤。
4.根据权利要求2所述的方法,其中:所述俘获条件组的每个元素具有一个相对优先顺序,所述俘获处理程序地址是由所述序列中所述第一个这种指令满足的所有俘获条件中最高优先顺序的函数,当所述序列中所述第一个这种指令满足任何发出时间俘获条件时,由所述第一个这种指令满足的所有俘获条件中的最高优先顺序是一个发出时间俘获条件。
5.根据权利要求4所述的方法,其中规定的俘获动作包括将一个唯一标识由所述序列中所述第一个这种指令满足的所有俘获条件中的所述最高优先顺序的数值写入一个俘获型寄存器的进一步步骤。
6.根据权利要求2所述的方法,其中所述规定的俘获动作包括将从其读出所述第一个这种指令的指令存储器地址写入一个俘获地址寄存器的进一步步骤。
7.根据权利要求6所述的方法,其中解码级通过产生并向执行级提供一个包含所述指令存储器地址的伪指令进行所述进一步步骤,所述伪指令使执行级将指令存储器地址写入俘获地址寄存器。
8.根据权利要求1所述的方法,其中所述计算机包括耦合到解码级用于表明计算机的操作状态的多个状态寄存器,每个发出时间俘获条件取决于某些所述状态寄存器中的值,和所述评估步骤包括检查状态寄存器的内容。
9.根据权利要求8所述的方法,其中,对于每个状态寄存器,所述指令序列中的某些指令修改所述状态寄存器,在为所述序列中的任何指令评估俘获条件中使用的所述状态寄存器中的值仅取决于执行刚好在修改所述状态寄存器的所述序列中所述指令之前的指令的结果。
10.根据权利要求9所述的方法,进一步包括步骤:c)在解码级检验的所述指令中识别修改任何发出时间俘获条件所依赖的任何状态寄存器的所有指令;和d)对于如此识别的任何修改指令,拒绝从解码级向执行级提供跟在所述序列中所述修改指令之后,其俘获条件取决于由所述识别的修改指令修改的任何状态寄存器的任何指令,直到修改指令的结果已写人所述状态寄存器时为止。
11.根据权利要求10所述的方法,进一步包括步骤:e)对于某些所述被识别的修改指令,在不迟于由解码级向执行级提供该指令的时间使由该指令规定的状态寄存器修改生效。
12.根据权利要求9所述的方法,进一步包括步骤:f)在解码级检验的所述一条或多条指令中识别修改任何发出时间俘获条件所依赖的状态寄存器的某些指令;和评估步骤包括对于被检验的任何所述指令,考虑对在所述序列中的所述评估指令之前所识别的任何修改指令的状态寄存器值的影响。
13.一种在靠多个流水线指令工作的超标量处理器中检测和执行程序指令俘获的装置,所述装置包括:一个用于从一个指令高速缓冲存储器和一个主存储器读取连续指令的读取装置,一个用于存储从所述读取装置读取的指令的指令FIFO存储器,和一个根据所述FIFO存储器中存储指令的相对年龄从所述FIFO存储器移去指令的指令解码装置,所述解码装置为俘获条件检验从所述FIFO存储器移去的所述指令,并响应一条指令中一个俘获的标识从所述FIFO存储器清除所有较新的指令。
14.根据权利要求13所述的装置,进一步包括用于表明处理器的工作状态的多个状态寄存器,所述解码装置检验修改所述状态寄存器的所述指令并阻止发出更新的指令直到已执行一个状态寄存器修改指令,锁定状态寄存器并不能对其存取直到被指令的执行更新为止。
15.根据权利要求14所述的装置,其中所述状态寄存器包括一个管理程序寄存器、一个启动浮点(EF)寄存器、一个当前窗口指针(CWP)寄存器、和一个窗口无效框罩(WIM)寄存器。
16.根据权利要求15所述的装置,进一步包括在评估一条俘获指令中被并置以形成所述读取装置地址的一个俘获基址寄存器和一个俘获型寄存器。
17.根据权利要求16所述的装置,其中所述读取装置包括用于支持主存储器分页的存储器管理装置。
18.根据权利要求16所述的装置,其中所述解码装置区别硬件俘获和软件俘获。
19.根据权利要求18所述的装置,其中响应硬件俘获指令,所述解码装置a)等待所述CWP寄存器变为解锁,将CWP寄存器的当前值减1,并强制所述管理程序寄存器为1,b)公式化和发出包含所述FIFO存储器中最老指令的地址的一个伪指令,c)清除所述FIFO存储器的所有内容,从而删除俘获指令和所有较新的指令,d)为所述硬件俘获指令确定最高优先顺序俘获条件的校正码并将所述校正码写入所述俘获型寄存器,和e)随着所述俘获基址寄存器和所述俘获型寄存器内容的并置向所述读取装置发信号以更新读取地址。
20.根据权利要求18所述的装置,其中响应软件俘获指令,所述解码装置a)等待所述CWP寄存器变为解锁,将CWP寄存器的当前值减1,并强制所述管理程序寄存器为1,b)公式化和发出包含所述FIFO存储器中最老指令的地址的一个伪指令,c)向一个执行装置发出最老的指令,记录所述最老指令的标识,和从所述FIFO存储器清除所有剩余指令,d)为与所记录的标识匹配的指令标识一致的有效信号监视来自执行装置的更新总线,e)从执行装置为数据部分捕获一个代码并将所述代码写入所述俘获型寄存器,和f)随着所述俘获基址寄存器和所述俘获型寄存器内容的并置向所述读取装置发信号以更新读取地址。
21.根据权利要求13所述的装置,进一步包括在评估一条俘获指令中被并置形成所述读取装置地址的一个俘获基址寄存器和一个俘获型寄存器。
22.根据权利要求13所述的装置,其中所述读取装置包括用于支持主存储器分页的存储器管理装置。
CN 96193536 1995-04-28 1996-04-02 在超标量处理器中检测和执行俘获的装置 CN1095115C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US08431219 US5692170A (en) 1995-04-28 1995-04-28 Apparatus for detecting and executing traps in a superscalar processor

Publications (2)

Publication Number Publication Date
CN1183152A true true CN1183152A (zh) 1998-05-27
CN1095115C CN1095115C (zh) 2002-11-27

Family

ID=23710995

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 96193536 CN1095115C (zh) 1995-04-28 1996-04-02 在超标量处理器中检测和执行俘获的装置

Country Status (5)

Country Link
US (2) US5692170A (zh)
JP (1) JP2937485B2 (zh)
CN (1) CN1095115C (zh)
EP (1) EP0740248A1 (zh)
WO (1) WO1996034335A1 (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor
US6065108A (en) * 1996-01-24 2000-05-16 Sun Microsystems Inc Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same
JP2000510623A (ja) * 1996-05-03 2000-08-15 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) 多重ステージパイプライン装置における条件付き飛越しの取扱いに関する方法
US5740442A (en) * 1996-08-27 1998-04-14 Hitachi Data Systems Corporation Method and apparatus for identifying and correcting date calculation errors caused by truncated year values
US5802386A (en) * 1996-11-19 1998-09-01 International Business Machines Corporation Latency-based scheduling of instructions in a superscalar processor
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
US6253317B1 (en) * 1997-01-09 2001-06-26 Sun Microsystems, Inc. Method and apparatus for providing and handling traps
US5809327A (en) * 1997-03-27 1998-09-15 Atmel Corporation Eight-bit microcontroller having a risc architecture
US5898850A (en) * 1997-03-31 1999-04-27 International Business Machines Corporation Method and system for executing a non-native mode-sensitive instruction within a computer system
US5940587A (en) * 1997-12-12 1999-08-17 Intel Corporation System and method for trap address mapping for fault isolation
US6266764B1 (en) * 1998-03-17 2001-07-24 Matsushita Electric Industrial Co., Ltd. Program controller for switching between first program and second program
US6393556B1 (en) * 1998-10-30 2002-05-21 Intel Corporation Apparatus and method to change processor privilege without pipeline flush
US6161174A (en) * 1998-11-05 2000-12-12 Wilhite; John E. Pipelined central processor incorporating indicator busy sensing and responsive pipeline timing modification
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US6826749B2 (en) 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
EP1197847A3 (en) * 2000-10-10 2003-05-21 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
GB2387932B (en) * 2002-04-26 2005-06-22 Motorola Inc Apparatus and method for scheduling tasks in a communications network
JP2005063358A (ja) * 2003-08-20 2005-03-10 Matsushita Electric Ind Co Ltd 命令供給制御装置および半導体装置
US7487335B1 (en) * 2003-10-14 2009-02-03 Sun Microsystems, Inc. Method and apparatus for accessing registers during deferred execution
US8144156B1 (en) 2003-12-31 2012-03-27 Zii Labs Inc. Ltd. Sequencer with async SIMD array
EP1711896B1 (en) * 2004-02-05 2015-11-18 BlackBerry Limited Memory controller interface
US8423832B2 (en) * 2006-11-07 2013-04-16 Hewlett-Packard Development Company, L.P. System and method for preventing processor errors
US7865769B2 (en) * 2007-06-27 2011-01-04 International Business Machines Corporation In situ register state error recovery and restart mechanism
KR101059899B1 (ko) * 2009-04-23 2011-08-29 광주과학기술원 마이크로 프로세서
US20170177372A1 (en) * 2015-12-17 2017-06-22 International Business Machines Corporation Lightweight interrupts for condition checking
US9798549B1 (en) * 2016-10-31 2017-10-24 International Business Machines Corporation Out-of-order processor that avoids deadlock in processing queues by designating a most favored instruction

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4017839A (en) * 1975-06-30 1977-04-12 Honeywell Information Systems, Inc. Input/output multiplexer security system
US4179737A (en) * 1977-12-23 1979-12-18 Burroughs Corporation Means and methods for providing greater speed and flexibility of microinstruction sequencing
JPH0527143B2 (zh) * 1984-02-10 1993-04-20 Hitachi Seisakusho Kk
US5136696A (en) * 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5327567A (en) * 1989-11-16 1994-07-05 Texas Instruments Incorporated Method and system for returning emulated results from a trap handler
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
JP2677719B2 (ja) * 1991-05-08 1997-11-17 富士通株式会社 情報処理装置
JP3876443B2 (ja) * 1991-07-08 2007-01-31 セイコーエプソン株式会社 マイクロプロセッサ装置
JP3333196B2 (ja) * 1991-07-08 2002-10-07 セイコーエプソン株式会社 トラップ処理方法
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
EP0535821B1 (en) * 1991-09-27 1997-11-26 Sun Microsystems, Inc. Method and apparatus for dynamically steering undirected interrupts
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor

Also Published As

Publication number Publication date Type
JP2937485B2 (ja) 1999-08-23 grant
CN1095115C (zh) 2002-11-27 grant
JPH10506739A (ja) 1998-06-30 application
WO1996034335A1 (en) 1996-10-31 application
US5692170A (en) 1997-11-25 grant
EP0740248A1 (en) 1996-10-30 application
US6012141A (en) 2000-01-04 grant

Similar Documents

Publication Publication Date Title
US5500943A (en) Data processor with rename buffer and FIFO buffer for in-order instruction completion
Sawada et al. Processor verification with precise exceptions and speculative execution
US5931957A (en) Support for out-of-order execution of loads and stores in a processor
US6505293B1 (en) Register renaming to optimize identical register values
US6079014A (en) Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US5889982A (en) Method and apparatus for generating event handler vectors based on both operating mode and event type
US6912648B2 (en) Stick and spoke replay with selectable delays
US6205467B1 (en) Microprocessor having a context save unit for saving context independent from interrupt requests
US5584038A (en) Entry allocation in a circular buffer using wrap bits indicating whether a queue of the circular buffer has been traversed
US6907520B2 (en) Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US7870369B1 (en) Abort prioritization in a trace-based processor
US6543002B1 (en) Recovery from hang condition in a microprocessor
US20110153960A1 (en) Transactional memory in out-of-order processors with xabort having immediate argument
US6119219A (en) System serialization with early release of individual processor
US5537559A (en) Exception handling circuit and method
US5881280A (en) Method and system for selecting instructions for re-execution for in-line exception recovery in a speculative execution processor
US6189093B1 (en) System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
US6055625A (en) Pipeline computer with a scoreboard control circuit to prevent interference between registers
US20030046518A1 (en) Look-ahead load pre-fetch in a processor
US20040073906A1 (en) Processor with speculative multithreading and hardware to support multithreading software {including global registers and busy bit memory elements}
US20060179346A1 (en) Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US5420991A (en) Apparatus and method for maintaining processing consistency in a computer system having multiple processors
US5398330A (en) Register file backup queue
US5958047A (en) Method for precise architectural update in an out-of-order processor
US5838988A (en) Computer product for precise architectural update in an out-of-order processor

Legal Events

Date Code Title Description
C06 Publication
C10 Request of examination as to substance
C14 Granted
C19 Lapse of patent right due to non-payment of the annual fee