CN1193777A - 非顺序处理系统中的低执行时间指令发送 - Google Patents
非顺序处理系统中的低执行时间指令发送 Download PDFInfo
- Publication number
- CN1193777A CN1193777A CN98103743A CN98103743A CN1193777A CN 1193777 A CN1193777 A CN 1193777A CN 98103743 A CN98103743 A CN 98103743A CN 98103743 A CN98103743 A CN 98103743A CN 1193777 A CN1193777 A CN 1193777A
- Authority
- CN
- China
- Prior art keywords
- instruction
- performance element
- source operand
- operand
- register
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 101100371648 Caenorhabditis elegans usp-14 gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 101150090882 tgt-1 gene Proteins 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
-
- 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
-
- 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/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明涉及非顺序处理,特别涉及从一个指令窗口向至少一个执行单元有效发送指令的一种方法和装置。在对应的目标操作数被实际计算之前,一个源操作数可以对某个执行单元推测声明为有效。不必等到目标操作数实际有效。另外,可以背靠背向一个管道发送指令并通过旁路把前面的指令的目标操作数传送到下面的指令的源操作数。因此,一列指令不会被破坏而且发送可以以一种有效方法完成。
Description
本发明涉及非顺序处理,特别涉及从一个指令窗口向至少一个执行单元有效发送指令的方法和装置。
很长一段时间以来,处理器是按指令的先后次序来执行指令的。这意味着指令是按它们在程序序列中出现的先后次序来传送到处理器的执行单元的。
为了达到较高的指令吞吐量并进而达到较高性能,在此介绍了每个时钟周期可发送或开始执行多个独立指令的处理器。这种处理器被称为超标量处理器。只要没有数据相关、过程相关或资源冲突,那么在一个周期内可以执行多条指令。当存在这种相关或冲突时,只有序列中的第一条指令可以执行。其结果是,超标量结构中的多个功能单元得不到充分利用。
高性能处理器发展的下一步骤可在非顺序处理的介绍中看到。非顺序处理器在执行程序时不遵循指令顺序,而是按与序列顺序不同的顺序来处理指令。
如果指令A产生目标数据,并且指令B需要所述目标数据作为源数据,那么必须照顾这种数据相关。当非顺序发送指令时,寄存器和值之间的相关将会断开。对应于一个逻辑寄存器的几个寄存器值将可能在并行中存在,因为对某一逻辑寄存器的写访问会创建一个新的所述寄存器事例。
不同寄存器事例的值一定不能混淆。因此,寄存器数组必须能够容纳和识别每个逻辑寄存器的多个值。在指令可以发送到任何执行单元之前,它必须指示使用的是被寻址逻辑寄存器的哪个事例。在某一时间识别表示逻辑寄存器的实际存储单元的任务通常被称为“寄存器更名”。
要非顺序处理的指令首先被发送到一个保留站中。在此,它们等待直到被非顺序发送到执行单元。在迄今为止描述过的解决方案中,指令要等到它们的源操作数实际被计算之后。一旦所有的源操作数可用,指令就可以发送到执行单元。
这种发送策略的缺点在于它打断了指令序列,因为需要某个操作数的一条指令必须要等到产生所述操作数的前面的指令完成。因此,不可能背靠背(back-to-back)向一个执行单元发送指令并利用每一执行单元中实现的旁路来在指令间传送数据。结果产生速度很慢并且不连续的指令发送。
因此本发明的一个目的是提供一种从一个指令缓冲区向非顺序处理系统中的至少一个执行单元发送指令的避免了现有技术缺点的装置和方法。特别是,本发明的一个目的是提供按连续序列,甚至背靠背向执行单元发送指令的装置和方法。
本发明的目的是通过根据本发明第一方面的处理系统和根据本发明第十三方面的发送指令方法来解决的。
通过在所述目标操作数可用之前置位指令的目标操作数的有效位,指令可以连续发送甚至背靠背发送。可以考虑目标值所需的运行时间并可以在最适合于发送到某一管道的时间点置位操作数的有效位。因此,对应于不同的执行单元,每个源操作数引入多个不同的有效位很有意义。这样可以得到极大的性能提高。
图1所示为一个非顺序处理系统的一般结构。图2给出了一个非顺序处理系统的比较详细的视图,其中包括一个寄存器更名和分配单元。图3表示的是为了准确监测完成状态以及为了允许精确中断,保留站是如何与记录缓冲区进行交互的。图4所示为两个执行单元U和V以及它们的装入单元之间的数据流。图5表示的是管道U和V的OP1和OP3信号如何控制从保留站向执行单元的指令发送。图6表示的是执行单元U或V的OP1和OP3信号如何与源操作数在管道U或V中的可用性相关。图7A表示的是为了确定一个指令是否可以发送到某个执行单元,指令的源操作数的源有效位是如何对每一执行单元分别进行“相与(AND)”的。图7B表示的是源操作数有效位的状态是如何确定把指令发送到哪一管道的。图8A给出了一个指令序列的例子,其中包括两条“加法寄存器”指令。图8B是图8A的指令序列执行时的时序图。
图1所示为一个非顺序处理系统的典型设置。指令被从指令存储器(100)取出并按顺序缓冲存储到指令高速缓冲存储器(101)中。然后指令被解码(102)成公用内部指令格式。在一外部指令被分解成多个小的内部指令时,也可以对其进行非顺序处理。指令解码单元(102)还负责相关分解,这意味着实际的物理存储单元必须被指派为用作各指令的源和目标的逻辑寄存器。
在指令解码阶段还执行分支预测。
指令然后被传送到保留站(103)。对指令的每一个目标寄存器事例,在记录缓冲区(108)都创建一个入口。因此,记录缓冲区按发生顺序标识表示逻辑寄存器事例的所有物理寄存器的先后顺序。
在保留站中,指令将等待到可以被发送到某个功能单元中。在出现分支的情况下,指令必须被发送到分支单元(104),整数运算必须被传送到某个整数单元(105),而访问存储器的指令必须被发送到某个装入/存储单元(106)。因此,每个指令都由对应的功能单元进行处理并且可以计算指令的目标数据。在存储器访问情况下,装入/存储单元(106)通过数据高速缓冲存储器(109)写数据或从数据存储器(110)中读数据。
所谓的“提交处理”负责退役指令,这意味着所述指令的目标寄存器值变成结构化寄存器值。指令总是按顺序被提交的。因此,退役指针与一个结构化寄存器值定义了机器的一个精确状态。为了使“精确中断”成为可能,必须为一被挂起的程序保存这一被定义状态。在意外情况发生时,处理器必须能够返回到所述的被定义状态。而在错误预测了一个分支的情况下,以及当沿所述分支的几个指令已经被推测执行时,处理器必须能够返回到很好定义的、非推测性的机器状态。这一机器状态再不能进行任何改变,它位于序列顺序之前。
定义一个结构化顺序状态的方法如下所述:如果指令已经完成并且前面所有指令也已经完成,那么指令的结果可以存储为对应寄存器的顺序状态,而指令可以被认为已经“退役”。因此,一个非顺序处理系统的结构化状态可以由已完成指令连续串中最近完成的指令来定义。对应的结构化寄存器值是所述指令完成时的值。能够处理不同寄存器事例并连续提前所述结构化顺序状态的一个概念是将记录缓冲区与寄存器文件结合使用。
在图2中给出了一个超标量计算机系统的详细框图。同图1一样,指令存储器(200)中所含的指令首先被传送到一个指令高速缓冲存储器(201)。接着,指令被按顺序传送到一个预解码单元(202),由它把外部指令流的指令变为适合进行非顺序处理的公用指令格式。在这种指令格式中存在OP代码、最多两个源寄存器、在指令必须访问存储器时用于地址运算的两个寄存器以及最多两个目标寄存器的数据字段。
在外部指令流中,指令只涉及要读或修改的逻辑寄存器。在指令执行时一个逻辑寄存器可能导致的不同物理事例的所有问题在此阶段仍没解决。只要外部指令流的指令按顺序处理,甚至不必考虑此问题。但是一旦指令没按它们的正常顺序执行,就有必要仔细跟踪一个寄存器和同一逻辑寄存器的不同物理事例。
此问题的解决是通过把一个物理寄存器分配给逻辑寄存器的每个事例来完成的。这意味着每当指令修改了某个逻辑目标寄存器并因而创建了所述逻辑寄存器的一个新事例时,必须分配一个新的物理寄存器。每当所述逻辑寄存器的这一事例被任何其它指令作为源寄存器使用时,必须使用同一物理寄存器。由于有可能存在某个逻辑寄存器的多个事例,所以也可能存在与所述逻辑寄存器对应的多个物理寄存器。
分析哪一物理寄存器与某个指令所用的逻辑寄存器对应、用适当的物理寄存器代替所述逻辑寄存器(寄存器更名)以及每当任何逻辑寄存器的一个新事例被创建时分配一个新的物理寄存器(寄存器分配)的任务是由“寄存器更名和分配单元”(304)来执行的。
每当新的物理寄存器被分配时,“寄存器更名和分配单元”(204)还要通知记录缓冲区(205)。记录缓冲区含有每个物理目标的一个入口,它标识某个逻辑寄存器的某个事例。每一记录缓冲区入口包含物理寄存器、它表示的逻辑寄存器以及所述物理寄存器的完成状态。在将叙述的实施方案中,某一时间有可能存在多达32个记录缓冲区入口。每当新的物理寄存器被“寄存器更名和分配单元”(204)分配时,在记录缓冲区(205)就会产生一个新的入口。因为在预解码阶段指令仍然按顺序处理,所以记录缓冲区入口也按顺序产生,这意味着表示逻辑寄存器的早期事例的一个入口总是位于与同一逻辑寄存器的较晚事例对应的入口之前。
每一记录缓冲区入口还包含它的目标寄存器的完成状态。当然,当入口产生时,完成状态为“没完成”。一旦计算了某个寄存器值,它对应的记录缓冲区入口的完成状态将变为“完成”。记录缓冲区为环绕式缓冲区,它可包含多达32个入口。
指令缓冲区(203)现在包含两个适合保留站格式的外部指令流中的指令。逻辑寄存器已通过“寄存器更名和分配单元”(204)由适当的物理寄存器代替,而且每当必须分配新的物理寄存器时,在记录缓冲区(205)就会产生适当的入口。
指令现在已准备好被传送到保留站(206)。保留站是一个最多可拥有16个可能的入口的环绕式缓冲区。
在保留站(206)中,指令将等待直到准备被发送到某个功能单元。指令是不按它们的正常顺序被发送到功能单元的,这意味着指令的发送是与它前面或后面的指令是否已被发送相独立的。指令是被发送到与指令类型相关的某个功能单元的:分支被传送到分支单元(207),整数运算由整数单元(208)执行,而所有访问存储器的指令被发送到装入/存储单元(209)。装入/存储单元通过数据高速缓冲存储器(211)与数据存储器(212)交换数据。
寄存器文件(210)的一个拷贝被附在每个功能单元上。当对这些寄存器文件中的任何一个进行修改时,在不同功能单元上的其它寄存器文件也被修改。每个寄存器文件(210)包含已经被分配的所有物理寄存器的值。
由于每个物理寄存器对应于某个逻辑寄存器的事例,所以寄存器文件(210)含有已经被计算的逻辑寄存器的事例的值。
邻近每个功能单元带有寄存器文件的一个拷贝是有好处的。已经传送到功能单元(207,208,209)中某一个单元的指令必须访问它们各自源寄存器的值。这些寄存器值包含在寄存器文件(210)的局部拷贝中。一旦结果数据产生,这一结果数据就被写进局部寄存器文件中。由于指令的逻辑源和目标寄存器在预解码阶段(202)已经被更名为物理寄存器,传送到功能单元的指令可以直接访问寄存器文件的物理源和目标寄存器,从而不必再把逻辑寄存器转换为物理寄存器。这一转换已由“寄存器更名和分配单元”(204)在预解码阶段(202)一次性全部完成。通过在每一功能单元保留寄存器文件的一个局部拷贝,有可能进一步降低对寄存器内容的访问次数。
在提交处理期间,由这些指令产生的目标寄存器值变为结构化寄存器值。因此,提交或退役处理定义了机器的一个结构化状态。这一结构化状态位于从旧到最近指令的正常顺序之前,因而把逻辑寄存器的对应的暂时事例转变为有效结构化寄存器值。
为了理解提交处理是如何工作的,有必要看一下存储在记录缓冲区(205)中的不同目标寄存器事例的完成状态。提交处理开始查找还没完成的最早的指令。退役指针(213)指向对应于所述指令的入口。这一指令还不能退役,因为它的结果还不可用。但是所有指令和所有由退役指针定义的入口之前的对应目标寄存器都可被提交。对应指令被从保留站中清除,而目标寄存器值则变成结构化寄存器值。因此,结构化状态(214)由退役指针(213)指向的记录缓冲区入口之前的目标寄存器值定义。
参考图3将更清楚保留站和记录缓冲区之间的相互作用。保留站(300)可以容纳最多16条指令。图中给出了一个保留站入口(302)。它包含指令的OP代码、源寄存器、目标寄存器和地址计算的数据字段。每一指令可以访问最多两个目标寄存器。
对属于某一指令的目标寄存器,在记录缓冲区(301)中都将产生一个入口。每个新的目标寄存器对应于某个逻辑寄存器的新事例。它的物理寄存器和逻辑寄存器都将在各自的记录缓冲区入口(304,311)中被标识。
包含有关目标寄存器或指令所用的目标寄存器的信息的保留站入口(302)和对应的记录缓冲区入口(304)之间的联接是由记录缓冲区指针(303)创建的。记录缓冲区指针是保留站入口(302)的一部分。
在每个保留站入口(304)中,还存在一个监视ROB入口中包含的目标寄存器(304)的完成状态的数据字段(305)。目标寄存器的初始状态为“没完成”(305)。
在图3中的例子中,指令309已被发送到执行单元308并正在被处理,这意味着在执行单元管道的某些阶段,ROB指针(310)与指令一起已经被传送到执行单元(308)。因此,即便在指令执行期间,指令(309)和它对应的记录缓冲区(311)中的入口的联接仍被保持。
通常在执行单元的管道结尾,一旦指令执行结果可用,在ROB中的完成状态将从“没完成”变为“完成”。因此,记录缓冲区(301)包含它们的序列顺序中的逻辑寄存器的不同事例的标识符,而且还包含有关所述寄存器事例的值是否已经被计算的信息。
保留站(300)以一个环绕式数组形式实现,并用指针进行管理。每当格式准确的指令要从指令缓冲区(203)传送到保留站(300)时,经由内部指针(306)来确定适当的入口位置。只要指令要寻址一个或两个目标寄存器,就必须创建记录缓冲区的一个入口。
记录缓冲区(301)也以一个循环缓冲区形式实现。其中存在一个分配指针,它作为记录缓冲区的内部指针。它指向记录缓冲区中下一个入口将被创建的位置。
在分配指针(307)需要包含新指令的目标时,退役指针(312)需要使旧的目标寄存器值退役。
寄存器指针(312)指向还没完成的最早的目标寄存器。提交处理提交较早的入口的目标寄存器,这意味着它在序列顺序中要比退役指针指向的入口早。这意味着各个入口被释放并且目标寄存器值变为结构化寄存器的值,它代表机器的“正式”状态。另外,提交处理还清除保留站中对应于退役指针(312)指向的入口之前的ROB入口的所有指令。
非顺序执行指令产生了多个暂时的逻辑寄存器事例,它们仍然可以改变和清除。但也存在精确的结构化状态(313),它是顺序指令流中的一个被定义点,其中结构化寄存器值对应于指令流中的所述点。
在图4中给出了两个执行单元U和V,它们既可以是分支单元(207)、整数单元(208),也可以是装入/存储单元(209)。数据和指令都由所谓的装入单元取出。存在一个装入单元LU(400),它向执行单元U(402)提供数据和指令,还存在一个装入单元V(415),它对应于执行单元V(416)。
我们首先看一下执行单元U。数据和指令通过结果总线LU(401)并通过写入端口403被传送到执行单元U的管道。在并行(404)中还存在四个写入端口,它们把输入传递给通用寄存器(405)的一个数组中。这一数组包含推测和结构化寄存器值,它对应图2中各寄存器文件210。已经到达其中一个执行单元的写入端口的信息被写入这些通用寄存器中,并通过旁路409直接提供给算术逻辑单元(ALU 408)的输入锁存器A(406)和B(407)。
信息可以从所述通用寄存器(405)传送到ALU的输入锁存器A和B。ALU 408访问锁存在输入寄存器A和B中的操作数并计算结果值。这一结果被写入到输出锁存器B(412)中。
信息也可以通过旁路410直接提供给一个写入端口411,这是组成管道输入的四个写入端口404中的一个。因为所述写入端口既联接通用寄存器数组405又通过旁路409联接ALU的输入锁存器,因此可以马上再用计算的结果值作为ALU输入:结果通过旁路410和409被传送到ALU的输入寄存器A(406)和B(407)。
结果值还被写入到通用寄存器405中。每个这些单元拥有一个寄存器文件的好处在于这降低了对涉及寄存器值的访问时间。从图2中可以看到附在不同功能单元(207,208,209)上的所述寄存器文件210的拷贝。在这些不同的寄存器数组之间必须保持数据完整性。每当一个数组的寄存器值被改变时,必须通知对应于不同这些单元的其它数组。
在我们的例子中,这是通过结果总线413来完成的,由它把存储在输出寄存器D(412)中的这些单元U的ALU的结果传送到其中一个这些单元V的写入端口(414)。因此,可以更改执行单元V的通用寄存器数组,也可以马上在执行单元V中使用执行单元U的结果。
反之,执行单元V的输出寄存器D的内容通过结果总线117被传送到执行单元U的写入端口418。所述结果被用来更改执行单元U的GPR数组405,它们也可以通过总线409用作在执行单元U上执行的计算的操作数。
装入单元U(400)不只通过结果总线401和写入端口403向两个通道提供指令和数据,它还提供执行单元V。来自装入单元U(400)的信息被锁存到寄存器D0(421),而所述信息通过结果总线422和写入端口420被传送到执行单元V。
装入单元V(415)通过写入端口418向执行单元V(416)发送数据和指令,并把所述信息存储到执行单元V的锁存器D0(423)中。所述信息从此处通过结果总线424和写入端口425被传送到执行单元U的管道。
图5所示为执行单元和指令窗口缓冲区之间的相互作用,它也被称为保留站。存在执行单元U(500)和执行单元V(501)。我们假定指令和它的源和目标寄存器标识符已经被传送到管道U(500)。在每个时钟周期,所述指令传送某一不同的管道阶段OP1、OP2、OP3…。当指令到达OP1阶段时,OP1-U信号(502)被传送到保留站(506)。所述OP1-U信号包含五条管道。它通知保留站哪一物理寄存器将由执行单元U的OP1阶段管道中当前运行的指令作为目标寄存器来计算。
同样的一条指定管道U当前指令的物理目标寄存器的5位标识符在管道U的OP3阶段被再次发送到(504)保留站506。因此,有关实际目标寄存器的信息被两次发送到保留站506。较早的OP1-U信号(502)表示需要所述物理目标寄存器作为操作数的一条指令可以和当前指令背靠背被发送到管道U。较早的OP1-U信号在当前指令的目标操作数实际计算出来之前被发送到保留站。它推测指示了将来操作数的可用性。
这之所以可能是因为图4所描述的旁路410和409允许目标数据可以马上被随后的指令作为源数据再使用。
较晚的OP3-U信号表示实际物理目标寄存器的值不但在管道U可用,而且在所有系统的执行单元都可用。在OP3阶段,结果数据已经被传送到所有执行单元的所有寄存器文件。系统中的每个GPR数组已经被修改。因此,OP3-U信号表示需要实际物理目标寄存器作为源操作数的一条指令可以被发送到任何执行单元而不是仅仅发送给执行单元U(500)。
对应的表示当前指令的物理目标寄存器的状态的OP1-和OP3-信号也由系统中所有其它的执行单元产生。在我们的例子中,管道V(501)产生标识实际管道V目标寄存器的OP1-V(503)和OP3-V(505)信号。因此在存在两个管道的情况下,有四个信号(502-505)被传送到保留站506。
我们假定保留站实际拥有入口0(507)到入口N(509)作为活动入口。每一入口对应一条指令并拥有所述指令的OP代码、指定指令源操作数的源寄存器、也可以当作所述指令的源操作数的地址操作数、目标寄存器标识符以及创建与对应的ROB入口的联接的ROB指针(303)。
为了确定某一指令的源操作数对不同的执行单元是否有效,需要把所述源操作数的寄存器标识符与信号OP1-U、OP3-U、OP1-V和OP3-V提供的目标寄存器标识符按顺序比较来检测一个符合值。
第一种情况,我们假定SRC0(511)中包含的物理寄存器标识符等于OP1-U传送的标识符。在这种情况下,符合管道514将被激活,它表示SRC0已经准备发送到管道U而不是管道V。在此情况下,有效位VU(512)被置位,而有效位VV(513)不被置位。
当符合存在于SRC0(511)的标识符和OP3-U管道之间时,符合管道515将被激活。这表示SRC0对管道U和管道V都是有效的,因此有效位VU(512)和VV(513)都被置位。
作为第三种情况,假定符合存在于SRC0和OP1-V之间。符合管道516将被激活,这表示SRC0对向管道V(501)而不是向管道U(500)的发送是有效的。相应的VV(513)将被置位而VU(512)将不会被置位。
在SRC0标识符(511)与OP3-V上传送的系统的情况下,这是由一个活动符合管道517指示的,SRC0对管道U和V都声明为有效。这是通过置位位VU(512)和VV(513)来指示的。
对保留站中的每一活动入口的每一源操作数都要执行所述的比较。一旦涉及某个执行单元的一个指令入口的所有有效位被置位,整个指令就准备好发送到所述执行单元。为了能够将保留站入口(507,509)中包含的某一条指令(508,510)传送到某一执行单元,入口被联接(521,524)到多个写入端口(522,523,525,526),它们由发送选择器(527,528)来控制。每个执行单元都存在一个发送选择器,它可以选择一个写入端口联接到它对应的执行单元的管道上。例如,如果指令508要被传送到管道V(501),对应管道V(528)的发送选择器将选择写入端口523,这样指令508就可以被传送到管道V。
图6中的表格描述了可产生某个目标操作数的指令的处理状态如何影响源操作数标识符511的源有效位。在指令还没有被处理时,源有效位VU和VV都没置位,而源寄存器值在管道U或管道V中都不可用。
在所述源标识符发生一个OP1-U时,源有效位VU被置位,而源有效位VV仍保持为零。这意味着所需的源寄存器值只在管道U中可用,在V中不可用。
在OP3-U符合产生时,VU和VV都被置位。源寄存器值在管道U和管道V中都可用。
在将产生某个目标寄存器值的指令在管道V中执行时,对于某个源寄存器标识符可能产生一个OP1-V符合。在这种情况下,源操作数标识符有效位VV被置位,而VU则仍保持复位状态。由于所需的源寄存器值只在管道V中可用,这表示所述源操作数准备发送到管道V而不发送到管道U。
在存在OP3-V符合的情况下,源有效位VU和VV都被置位,因为所需的源寄存器值不但在管道U中可用,而且在管道V中也可用。对应的管道U的寄存器文件已被修改,因此所述源寄存器值在管道U中也可用。
在图7A中表示了为了确定所述指令是否要发送到管道U或管道V,指令的源有效位是如何被AND的。图中给出了一条指令,它已被转换为公用保留站格式并包含在一个保留站入口中。所述入口包含OP代码(700),而且它包含容纳SRC0(701)和SRC1(702)的物理寄存器标识符的数据字段。另外还提供地址运算(703,704)的两个操作数,也可以将它们当作源操作数。此外,目标操作数由寄存器标识符TGT0(705)和TGT1(706)指定。ROB指针707指向对应所述指令的ROB入口,它允许跟踪指令的实际完成状态。对于每个源操作数SRC0、SRC1、A0和A1都存在每个执行单元的一个有效位,表示所述源操作数是否准备发送到所述执行单元。在我们的例子中,系统包含两个执行单元U(500)和V(501)。因此,对于每个源操作数都存在两个有效位VU(708)和VV(709),它们表示所述源操作数是否准备发送到对应的执行单元。
为了确定图7A中的指令是否可以发送到执行单元V,所有源操作数(701-704)的所有VV位都被传送(710)到一个“与”(AND)门(711)。所述“与”门的输出(712)确定指令是否准备发送到V。相应的,所有VU位被传送到“与”门716,所述“与”门的输出717确定是否可以向执行单元U发送。
在几条指令已被依次发送到一个执行单元的情况下,所述执行单元可能无法处理进一步的指令。在所述执行单元的管道前可能存在一个缓冲区,它能够缓冲几条指令,但是如果这一缓冲区被占用,必须有一方法来停止向所述执行单元发送另外的指令。
这是通过忙信号(714)来完成的,它通知某个执行单元,在我们的例子中为执行单元V或执行单元U正忙(71 3,715)。管道V的反转的忙管道是“与”门711的另一个输入,它确定是否可以向V发送。在所述忙管道为活动的情况下,输出712将为非活动,表示不能向管道V发送。
在图7B中表示了对有两个源操作数的指令来说,所述源操作数的有效位VU和VV的状态如何确定指令可发送到哪个执行单元。只要存在带有非活动VV位的源操作数,就不可以向管道V发送。因此,如果任何源操作数的VU位为零,指令只能发送到管道V。只有两个源操作数的VU和VV位都被置位时,才可以向管道U和管道V发送。
在图8A中给出了一个指令序列,而在图8B中给出了它们的时序图。指令序列包含第一条加法寄存器指令,它用寄存器R0和R1作为源(SRC0,SRC1),并作为目标(TGT0)写入寄存器R0。下面的指令加法寄存器2用寄存器R4和R0作为源(SRC0,SRC1)并写入目标寄存器R4(TGT0)。因此,由加法寄存器1产生的R0的值被加法寄存器2重新用作源操作数。
在图8B中给出了对应的时序图。加法寄存器1被发送到管道U并在OP1阶段(800)初始化。为了读取寄存器值R0和R1(801),它寻址通用寄存器数组。目标寄存器R0的标识符出现在OP1-U信号(802)上。因此,加法寄存器2指令的源寄存器R0的有效位VU被置位,因为加法寄存器2可以背靠背发送到管道U。这时仍不可以向管道V发送。在第二个周期,加法寄存器2已经被传送到管道U(804)的OP1阶段。加法寄存器1已经移到OP2阶段(805)。加法寄存器1指令的R0和R1值已经被读取并包含(806)在ALU的输入寄存器A(406)和B(407)。目标值R0在第二个周期(807)也已经被计算出来,但还没有传送到B寄存器。
由于加法寄存器2处于OP1阶段,所以R4的标识符出现在OP1-U(808)的符合管道上。因此,仍包含在保留站中的所有需要R4作源操作数的指令都将置位它们各自的有效位VU(809)。
在第三个周期,加法寄存器1已经移到OP3阶段(810)。因此,R0的标识符出现在OP3-U符合管道(811)上,而对于所有需要R0作源操作数的指令来说,都可以向管道U和管道V发送,因为R0在两个管道上都可用。因此,VU和VV有效位对各自的源操作数都被置位(812)。
同时,加法寄存器2指令已经移到OP2阶段(813),它已经访问了现在包含在输入寄存器A(406)中的GPR文件的R4值,而由加法寄存器1指令计算的R0的值已经通过旁路410(815)传送到输入寄存器B(407)。因此,旁路410用来把第一条指令产生的目标数据传送到第二条指令的源操作数,它已经和所述第一条指令一起被背靠背发送到同一管道。通过旁路向下面的指令传送目标数据的可能性是利用较早的OP1-U信号把一个源操作数声明为有效的优点所在的原因,尽管此时OP1-U信号已被置位,但R0值还不可用。尽管目标数据还没计算出来,但管道U的R0的有效位已经被预测置位,因为旁路意味着能提供在管道的两条指令之间传送数据的方法。
加法寄存器指令的目标操作数R0在第二个周期已经被计算出来。在第三个周期,所述R0值被传送到B寄存器(412),并且被写入到管道U(814)的GPR文件。
在第四个周期,加法寄存器2已经移到OP3阶段(816)。标识符R4出现在OP3-U符合管道(817)上,表示R4现在在两个管道上都可用。因此,除了VU位之外,涉及R4的每个源操作数的VV位都被置位。
在第四个周期(820),加法寄存器1指令的结果R0被从寄存器B传送到管道U的GPR文件。现在,实际的R0值已经包含在管道U和管道V的GPR文件中。在第五个周期,R4的值被从管道U(412)的B寄存器传送到执行单元V的GPR文件(821)中。现在,管道U和管道V的GPR文件都包含由加法寄存器2指令产生的实际R4值。
Claims (18)
1、一个处理系统,包含
至少一个执行单元,
保持指令和指定所述指令的源操作数和目标操作数的一个指令缓冲区,其中一个操作数被指定为所述指令缓冲区中第一条指令的目标操作数并作为所述指令缓冲区中第二条指令的源操作数,
向其中一个所述执行单元发送指令的发送装置,只有所有所述指令的源操作数有效时所述发送装置才发送指令,
其特征在于:
在所述第一条指令被发送到第一个执行单元之后以及在所述操作数的值可用之前,声明所述第二条指令的所述源操作数有效的标识装置。
2、根据权利要求1的一个处理系统,其特征在于:
所述标识装置还声明所述第二条指令的所述源操作数是否有效以发送到所述第一个执行单元,所述第二条指令的所述源操作数是否有效以发送到不同于所述第一个执行单元的执行单元中。
3、根据前面的权利要求的任一处理系统,其特征在于:
直到所述标识装置声明所有所述指令的源操作数有效以便发送到所述执行单元之后,所述发送装置才向一个执行单元发送指令。
4、根据权利要求2或3的一个处理系统,其特征在于:
所述第二条指令的所述源操作数在被声明有效以便发送到不同于所述第一个执行单元的一个所述执行单元之前被声明有效以便发送到所述第一个执行单元。
5、根据前面的权利要求的任何一个的处理系统,其特征在于:
在所述第二条指令已经被发送到所述第一个执行单元时,在所述第一个执行单元中用于把所述第一个执行单元中的所述第一条指令的所述目标操作数传送到所述第二条指令的所述源操作数中的旁路装置。
6、根据前面的权利要求的任何一个的处理系统,其特征在于:
在所述第二条指令已经被发送到所述第二个执行单元时,所述第一个执行单元和第二个执行单元之间用于把所述第一个执行单元中的所述第一条指令的所述目标操作数传送到所述第二条指令的所述源操作数的旁路装置。
7、根据前面的权利要求的任何一个的处理系统,其特征在于:
每个源操作数至少一个有效位,声明所述源操作数有效或无效并包含在所述标识装置中。
8、根据任何前面的权利要求的一个处理系统,其特征在于:
每个源操作数和每个执行单元至少一个有效位,声明所述源操作数有效以便向或不向所述执行单元发送,并包含在所述标识装置中。
9、根据权利要求7或8的一个处理系统,其特征在于:
为了确定所述指令是否有效以便向或不向所述执行单元发送,对所述有效位进行“与”运算的装置,它涉及一条指令的所有源操作数的其中一个所述执行单元。
10、根据权利要求7到9的一个处理系统,其特征在于:
包含所述指令缓冲区所述指令并包含所述指令的源操作数的所述有效位的指令缓冲区入口。
11、根据前面的权利要求的任何一个的处理系统,其特征在于:
标识分支结果的一个条件代码,它可以包含在一条指令的所述源操作数和所述目标操作数中。
12、根据前面的权利要求的任何一个的处理系统,其特征在于:
当所述执行单元的忙信号被置位时,停止从所述指令缓冲区向某个所述执行单元发送指令的忙装置。
13、处理系统中发送指令的一种方法,
所述处理系统包括
至少一个执行单元,
保持指令和指定所述指令的源操作数和目标操作数的一个指令缓冲区,其中一个操作数被指定为所述指令缓冲区中第一条指令的目标操作数并作为所述指令缓冲区中第二条指令的源操作数,
向其中一个所述执行单元发送指令的发送装置,只有所有所述指令的源操作数有效时所述发送装置才发送指令,
所述方法的特征在于
在所述第一条指令被发送到第一个执行单元之后以及在所述操作数的值可用之前,声明所述第二条指令的所述源操作数有效的标识装置。
14、根据权利要求13的方法,其特征在于:
声明所述第二条指令的所述源操作数有效的所述步骤包括
声明所述第二条指令的所述源操作数是否有效以便向所述第一个执行单元发送,以及
声明所述第二条指令的所述源操作数是否有效以便向不同于所述第一个执行单元的执行单元发送。
15、根据权利要求14的方法,其特征在于:
声明所述第二条指令的所述源操作数是否有效以便向所述第一个执行单元发送的所述步骤
先于
声明所述第二条指令的所述源操作数是否有效以便向不同于所述第一个执行单元的执行单元发送的所述步骤。
16、根据权利要求13到15的任何一项的方法,其特征在于:
所述处理系统还包括
每个源操作数至少一个有效位,并且
声明所述第二条指令的所述源操作数有效的所述步骤包括
置位对应于所述第二条指令的所述源操作数的至少一个所述有效位。
17、根据权利要求16的方法,其特征在于:还包括以下步骤
为了确定是否所有所述指令的源操作数已经被声明为有效以便向所述执行单元发送,对对应于一条指令的所述源操作数和对应于某个所述执行单元的所有所述有效位进行“与”运算。
18、根据权利要求13到17任何一项的方法,其特征在于:还包括以下步骤
当所有所述指令的源操作数已经被声明为有效以便向所述执行单元发送时,向一个执行单元发送一条指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP97104211 | 1997-03-13 | ||
EP97104211.4 | 1997-03-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1193777A true CN1193777A (zh) | 1998-09-23 |
Family
ID=8226586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN98103743A Pending CN1193777A (zh) | 1997-03-13 | 1998-02-12 | 非顺序处理系统中的低执行时间指令发送 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JPH10283178A (zh) |
KR (1) | KR19980079634A (zh) |
CN (1) | CN1193777A (zh) |
DE (1) | DE19804146A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984643A (zh) * | 2013-02-11 | 2014-08-13 | 想象力科技有限公司 | 推测性加载分发 |
CN113778528A (zh) * | 2021-09-13 | 2021-12-10 | 北京奕斯伟计算技术有限公司 | 指令发送方法、装置、电子设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8543796B2 (en) | 2008-11-05 | 2013-09-24 | Intel Corporation | Optimizing performance of instructions based on sequence detection or information associated with the instructions |
JP5949327B2 (ja) * | 2012-08-24 | 2016-07-06 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
-
1998
- 1998-01-21 KR KR1019980001717A patent/KR19980079634A/ko not_active Application Discontinuation
- 1998-02-03 DE DE19804146A patent/DE19804146A1/de not_active Ceased
- 1998-02-12 CN CN98103743A patent/CN1193777A/zh active Pending
- 1998-03-02 JP JP10049303A patent/JPH10283178A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984643A (zh) * | 2013-02-11 | 2014-08-13 | 想象力科技有限公司 | 推测性加载分发 |
CN103984643B (zh) * | 2013-02-11 | 2016-04-06 | 想象力科技有限公司 | 用于将程序中的加载指令分发到数据高速缓存的方法和设备 |
US9395991B2 (en) | 2013-02-11 | 2016-07-19 | Imagination Technologies Limited | Speculative load issue |
CN105808211A (zh) * | 2013-02-11 | 2016-07-27 | 想象力科技有限公司 | 推测性加载分发 |
US9910672B2 (en) | 2013-02-11 | 2018-03-06 | MIPS Tech, LLC | Speculative load issue |
CN105808211B (zh) * | 2013-02-11 | 2019-01-25 | 美普思技术有限责任公司 | 用于将程序中的加载指令分发到数据高速缓存的方法和设备 |
CN113778528A (zh) * | 2021-09-13 | 2021-12-10 | 北京奕斯伟计算技术有限公司 | 指令发送方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
DE19804146A1 (de) | 1998-09-17 |
JPH10283178A (ja) | 1998-10-23 |
KR19980079634A (ko) | 1998-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1278235C (zh) | 用于向一处理器让与资源的系统 | |
KR0122529B1 (ko) | 슈퍼스칼라 프로세서 시스템에서 복수의 명령어를 단일 사이클 동안 디스패치하기 위한 방법 및 장치 | |
CN1161689C (zh) | 在超标量处理器中处理装入指令的方法和电路 | |
RU2427895C2 (ru) | Оптимизированная для потоков многопроцессорная архитектура | |
CN1945525A (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
EP0565705B1 (en) | Out of order job processing method and apparatus | |
EP0762270B1 (en) | Microprocessor with load/store operation to/from multiple registers | |
KR0124812B1 (ko) | 독립적으로 액세스되는 중간 기억 장치를 이용하는 슈퍼스칼라 프로세서 시스템의 명령어 디스패치를 향상시키기 위한 시스템 및 그 방법 | |
EP0330836A2 (en) | Method for multiprocessor system having self-allocating processors | |
CN1165840C (zh) | 计算机处理器检验指令的方法和系统及相应计算机系统 | |
CN1841314A (zh) | 双线程处理器 | |
CN1188932A (zh) | 多线程处理器中指令和关联读取请求的后台完成 | |
CN1713137A (zh) | 含有多级寄存器文件的数字数据处理设备 | |
KR0128274B1 (ko) | 인터페이스 시스템 및 그 동작 방법 | |
CN1885269A (zh) | 在微处理器恢复单元中进行写队列读数据的方法和装置 | |
CN1196997C (zh) | 不按序执行指令的装置和检测不按序指令的方法 | |
JPH06242955A (ja) | スーパースカラ・プロセッサ・システムにおける中間記憶バッファの割当てをインデックスする方法およびシステム | |
RU2142157C1 (ru) | Способ функционирования системы обработки | |
KR100895536B1 (ko) | 데이터 전송 방법, 시스템 및 컴퓨터 판독가능 매체 | |
CN1183445C (zh) | 推测性字符串/多重操作的方法和结构 | |
CN1466716A (zh) | 以辅助处理器预取用于主要处理器的指令的方法和装置 | |
CN86106713A (zh) | 具有内部单元控制和处理的阵列结构 | |
CN1124546C (zh) | 一种超标量处理器及在该超标量处理器中完成指令的方法 | |
JPH06236275A (ja) | スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム | |
CN1193777A (zh) | 非顺序处理系统中的低执行时间指令发送 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |