CN1120195A - 多执行单元的指令相关调度技术 - Google Patents
多执行单元的指令相关调度技术 Download PDFInfo
- Publication number
- CN1120195A CN1120195A CN94115166A CN94115166A CN1120195A CN 1120195 A CN1120195 A CN 1120195A CN 94115166 A CN94115166 A CN 94115166A CN 94115166 A CN94115166 A CN 94115166A CN 1120195 A CN1120195 A CN 1120195A
- Authority
- CN
- China
- Prior art keywords
- instruction
- buffer
- performance element
- instruction buffer
- displaced
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000000872 buffer Substances 0.000 claims abstract description 146
- 230000001419 dependent effect Effects 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims description 22
- 238000012545 processing Methods 0.000 abstract description 6
- 230000002596 correlated effect Effects 0.000 description 11
- 238000006073 displacement reaction Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 240000007643 Phytolacca americana Species 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 150000001875 compounds Chemical class 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000004615 ingredient Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional 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, 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
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)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Selective Calling Equipment (AREA)
- Supplying Of Containers To The Packaging Station (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供了一种多执行单元处理系统,其中每个执行单元有一个相关联的指令缓冲区,并且所有的指令都按顺序执行。第1执行单元(单元0)中总是包含最“老”的指令,而第2执行单元(单元1)中则总是包含最“新”的指令。处理器指令,例如取数,存数,加法等将从一个指令高速缓冲区中取出,然后提供给每个指令缓冲区(0,1)。第1条指令(最“老”的)被放在缓冲区0中,下一条(第2条)指令则存于缓冲区1中。在译码阶段决定指令是否依赖于其相邻的上一条指令。
Description
本发明主要涉及带有多执行单元的处理系统中的指令调度技术。更具体地说,本发明提供了一种带有多指令缓冲区的系统,其中,指令被定义为相关的、非相关的或依赖于不可获得的资源的。这些指令按照其定义以及与其它指令的关系,或者顺序执行,或者并行执行。
在处理系统中设置多执行单元的技术已众所周知。传统的绝大多数系统都包括多个特殊用途的执行单元,以完成诸如加、存数、取数、减、乘、分支跳转以及类似操作。为了解决指令相关的问题,传统系统将特定的指令放置于与对应的特殊用途执行单元相关联的缓冲区中。例如,一条取数操作指令将被放置于与取数执行单元相关联的缓冲区中,等等。如果出现了指令相关,传统系统所做的仅是将后面的那条依赖于前面指令输出的指令挂起。一旦前面的指令执行完毕后,后面的这条相关指令就可以在特定的执行单元中执行了。应当注意到,在传统的系统中,指令可能在与不同执行单元相关联的不同缓冲区之间移位。但是这种移位依赖于指令的类型与可执行该类型指令的特定执行单元之间的关系。也就是说,一条取数指令可以移位到与取数执行单元相关联的缓冲区中。另外,使用先前的这种技术,多处理单元系统通常不按次序执行指令,而本发明则能够保持指令之间的次序关系。
美国专利5,133,077介绍了多重相异的执行,每种执行只负责特定类型的指令。因而,每条指令都必须按照指令类型,存贮于与某一执行单元相关联的特定缓冲区中。这些指令不能移位到与另外执行单元相关联的另外一个缓冲区中,这是因为它们被限定于某种类型的执行单元。这样,当指令相关情况出现时,这种系统别无选择,只有挂起后面的相关指令,直到该指令所依赖的前面那条指令执行完毕为止。
美国专利4,837,678讨论了一种具有指令序列器的系统,含有移位电路的指令序列器用于接受指令并将它们移位,这种移位取决于指令的类型以及要求哪个执行单元来执行该指令(第8-30行,第11列),而不是指令间的相关。
美国专利4,847,755介绍的系统中,具有多个用于分析指令流并给指令流增加智能化成分的处理器单元。例如,该系统寻找自然并发性(非相关指令)并为每条指令增加一些智能化成分,其中包括:一个逻辑处理器号和一个指令执行时刻(第54-60行,第17列),这实质上是在对指令进行重排序的工作。然后(第10-25行,第18列),逻辑资源驱动器将每条指令发送到选定的处理单元。
美国专利5,075,840讨论了一种可以不按次序执行指令的多处理器的系统。这个系统能够延迟执行某种特定类型的指令,直到它可以在其适当的序列顺序中执行为止。
可以看出,所有的传统系统都没有提供一种通用的方法以实现在具有多处理单元的系统中既能执行相关指令,又能保持所有指令的顺序。许多传统的系统由于不按次序执行指令,从而需要一个复杂的分支跳转机构,这就大大增加了处理系统的复杂性。正因为如此,通过保持指令的顺序,本发明减小了系统开销,从而优化了系统性能,例如,可以决定何时发生一个分支跳转。如果一个处理器能工作在多种不同类型的计算机系统中,指令的分析和执行仅取决于它们与其它指令的依赖关系,而不是执行单元的能力,那么,这样的处理器将是十分优越的。
与先前的技术不同,本发明提出的系统中,指令在译码阶段被分析,然后系统决定这些指令是否为非相关的、相关的、还是“不可利用的”(unavailable)。对本发明来说,相关的指令被定义为依赖于相邻的上一条指令的那些指令。有些指令依赖于某个资源的值是否可用,例如一个寄存器的值,这种指令被定义为“不可利用”,在某些情况下,本发明可以将这种指令看做是非相关的,并可以将它们并行移位(但不是不按次序的)。当然,完全不相关的指令是并行执行的。
概括地说,本发明提出了一种双执行单元处理系统,其中,每个执行单元带有一个与之相关联的指令缓冲区。第1个执行单元(单元0)总是包含最“老”的指令,第2个执行单元(单元1)则包含最“新”的指令。系统将把处理器指令,诸如取数、存数、加和类似指令从指令高速缓冲区中取到每个指令缓冲区(0,1)中。第1条指令(最“老”的)存于缓冲区0中,下一条(第2条)指令存于缓冲区1中。在译码阶段,系统判断这些指令是否是相关的、非相关的、或是“不可利用的”,如果是相关的,那么必须依次执行;如果是非相关的或是“不可利用的”,那么可以并行执行。如果第2条指令依赖于第1条,那么(随着所执行的第1条指令)第2条指令将从缓冲区1中横向移位到第1个指令缓冲区0中。这种移位完全取决于第2条指令对第一条指令的依赖性。被移位的指令变成了第1条指令,同时,第2个指令缓冲区中又接收了一条新的“第2条”指令。应该注意到,所有的指令都将按顺序执行。如果遇到许多顺序相关的指令,那么,它们将只在执行单元0中顺序地执行。换句话说,系统将发现前两条指令是相关的,于是将它们放在两个指令缓冲区中;由于第2个缓冲区中的指令依赖于第1个中的指令,当第1条指令执行完毕后,第2条指令将被移位到第1个指令缓冲区中,于是,下一条指令将被放到第2个缓冲区1中,如果该指令仍是一条相关指令,它又将在前条指令执行完毕后,被移位到第1个缓冲区中…,如此进行下去。如果下一条指令是非相关的,那么,两条指令将在第1个和第2个执行单元中并行执行。采用这种方式,处理器指令能够有效地执行。执行的顺序取决于指令间的相关性,而不是执行单元的能力。
因此,依据上面的概要说明,对于在这个技术领域具有一定技术的人来说,从下面与附图有关的描述、所附的权利要求中可以明显看到本发明的目标、特点和优点。
图1所示的结构框图显示了采用本发明的多执行单元处理器中的各组成部分;
图2是关于本发明的一个更详细的图示,它示意了与每个执行单元相关联的指令缓冲区以及指令流的路径;
图3a和3b所示的流程图显示了本发明的一个较佳实施例,其中,依照各种判别条件,第1条和第2条指令将作为相关的指令;
图4所示的时序图显示了本发明执行相关和非相关指令所需要的机器周期数的一个示例。
参看图1,该图在一个较高的层次上显示了在本发明的多执行处理器中的各组成部分。1号部件表示一个从指令总线A、B、C、D接收指令的指令缓冲区,指令缓冲区是一个存贮设备,例如人们熟悉的硬件存贮器。寄存器堆输入锁存器10从一个与系统存贮器(未画出)相连的双端口高速数据缓冲区(未画出)中接收数据。应该注意到,虽然带有多于两个执行单元的处理系统也可以考虑,本发明的较佳实施例是一个具有两个执行单元的处理器,译码控制单元3和5(分别对应于执行单元0和1)用来解释从指令缓冲区1中接收到的指令。译码控制单元3和5能够识别诸如取数、存数、加或类似的指令。译码单元3和5分别拥有一个相应的寄存器堆7和9,寄存器堆7、9从输入锁存器10中接收数据,该数据或者直接来自高速数据缓冲区总线36,或来自回写数据线35。译码单元3、5根据从缓冲区1中接收到的指令向寄存器7、9提供读/写控制信号。这些控制信号决定那些数据应该从输入锁存器10写入寄存器堆7、9,以及哪些数据应从寄存器堆7、9中读至执行单元输入锁存器11中。从图1中可以看出,寄存器堆7允许从输入寄存器中写入4个字的数据,由执行单元锁存器11从中读出3个字的数据。寄存器堆9则允许从输入寄存器堆10中写入4个字的数据,由执行单元锁存器11从中读出4个字的数据。
需要说明的是,本发明是用译码控制单元3和5中的布尔逻辑实现的。该逻辑用于解释指令,并决定是将一条还是两条指令移位到执行单元17和19。在这个技术领域具有一般水平的人可以将图3a和3b流程图所示的本发明逻辑流程转化成由本发明中译码单元3和5实现的硬件逻辑。
在本技术领域有相当技术的人还可以认识到,本发明是一个流水线结构的处理器。这意味着,数据在不同的阶段被锁存或保持。按照这种方法,指令的执行结果等数据将以某种方式保存起来,以保证不同的指令可以并发地输入到处理系统中。这样,就有可能使处理器中通过连续的数据流。执行单元输入锁存器先保持由寄存器堆7和9提供的数据,然后才将数据输入到实际的执行单元。在执行单元输入锁存器11中还包含了多路转换器(未画出),它可以复合从高速数据缓冲区总线36上接收到的数据信号,这样数据就可以走旁路到达执行单元了。应该注意到,寄存器堆输入锁存器10也包含多路转换器,它用于复合来自高速数据缓冲区总线36和回写总线35上的数据。
执行单元17和19都是全功能单元,可以执行多个指令。这些单元可以是相同的,但本发明对此限制并不要求。在较佳实施例中,单元17和19并不是相同的,只是两个全功能执行单元。它们之间的不同之处在于其中的一个可以处理几条专用指令的特定要求。执行单元17包含一个用于执行加法操作的二端口加法器21,和一个用于执行诸如循环移位以及类似指令的逻辑单元23。执行单元19包含一个三端口加法器25和一个逻辑单元27。三端口加法器25可以缩短诸如取数、存数、比较等加法类型指令所需要的机器周期数,其原因在于,在决定哪些指令可以并行执行时,本发明能将所有加类型的指令都作为非相关指令看待。在以前的系统中,加法类型的指令被认为是相关的,也就是说,第2条指令必须等待第1条指令执行完毕后方可执行。例如,指令(1)ADD R1,R2,R3和(2)ADD R5,R1,R4典型地用于将寄存器堆R2,R3中的值相加,并将新得到的值放在寄存器堆R1中。下一条指令必须等待新的值已放在寄存器堆R1中,这是因为该值将与寄存器堆R4中的值相加,以得到所需的结果,该结果随后被放到寄存器堆R5中。可以看出,最终的结果实际上是寄存器堆R2、R3、R4中的值的和。为完成此操作,传统的系统需要付出两个机器周期来执行两条指令。
相反,通过引入一种机制,本发明可以在一个机器周期内完成与上面相同的操作,这种机制就是允许将加法指令看做是非相关的,因而可以并行执行。仍然采用上面的例子,当指令ADD R1,R2,R3和ADD R5,R1,R4被译码单元3和5译码后,它们将被解释为ADDR1,R2,R3和ADD R5,R2,R3,R4,即,相关的指令被拆解成了非相关的指令。其中R2、R3的值将用来替换第2条指令中R1的值。第1条指令ADD R1,R2,R3仍然需要执行,这是因为存于寄存器堆R1中的值有可能被除了下一条加法指令(ADD R5,R2,R3,R4)以外的指令所需要。进一步,由于加法器25有三个端口,所以这两条指令可以同时执行。也就是说,ADD R1,R2,R3在二端口加法器21中执行,ADD R5,R2,R3,R4并发在三端口加法器25中执行。采用这种方法,本发明可以将加法类型的指令定义为与任何其它指令都不相关。
图中还给出了执行控制单元13和15,它们从译码单元3、5中接收译码后的指令,并将之以控制信号的形式分别输入到执行单元17和19。在单元17和19执行取数和存数指令的期间,加法器21和25为需要处理的数据计算有效地址(也就是所引用数据在高速缓冲区中的位置),它们也为存数指令计算数据值本身。然后,该有效地址传输到双端口的数据地址翻译逻辑单元33,该单元将先前从执行单元计算出来的有效地址翻译成物理地址(也就是数据在内存中的位置)。数据将从总线36上的高速数据缓冲区返回并输入寄存器堆输入锁存器10中,也有可能走旁路到达执行单元输入锁存器11(经过高速数据缓冲区总线36)。对于其它类型的在处理器中处理数据的指令,例如加法指令,从执行单元17、19计算出的数据将输入到寄存器堆输入锁存器10中,也可能走旁路到达执行单元输入锁存器11(经过回写总线35)。
图2是关于图1中指令缓冲区1的更详细的说明。指令总线A、B、C和D从一个高速指令缓冲区单元或类似的单元中将指令输入到总线8,该总线将指令直接传输到实际的指令缓冲区14中,该缓冲区是一个先进先出的硬件存贮设备。指令输出缓冲区2和4或者直接从总线8,或者通过总线12从缓冲区14接收指令。指令缓冲区2和4分别对应于执行单元17和19。进一步,图中还提供了一条总线6用以在缓冲区2和4之间移位或传输指令。由于本发明的较佳实施例包含两个全功能的处理单元,为使指令在单元17或19中执行,系统可以将它们在输出缓冲区2和4之间移位。这个功能的重要性将在下面结合图3a和3b做详细说明。将要执行的指令接着从缓冲区2和4中输出到译码控制单元3和5。
图3a和3b显示了本发明定义的指令之间的关系。一类指令被定义为与前面的、而非紧邻的指令相关。也就是说,通过一条LOAD指令从内存中取出的一个值可能被几个机器周期以后执行的后续指令所用到。例如,假定遇到下面的指令:
(1)LOAD R1,R31,R30
(2)ADD R4,R3,R2
(3)ADD R5,R1,R2
第1条指令(1)取一个值放到寄存器堆R1中。通过R31和R30相加计算出内存中的有效地址,在该计算得到该地址处的数据被取至R1。下一步,指令(2)把寄存器堆R3和R2中的值相加,并把结果放到寄存器堆R4中。指令(3)接着将使用先前取到寄存器堆R1中的值,把该值与寄存器堆R2的值相加,然后将结果放到寄存器堆R5中。可以看出来,指令(3)依赖于某个可能无法利用的资源(寄存器堆R1)中的值,也就是说,要取到寄存器堆R1中的值可能来自系统内存,而这要花费许多机器周期。
本发明将那些依赖于前面的非紧邻指令的指令定义为“不可利用的”,这是因为这种指令依赖于一个潜在的、不可利用的资源(寄存器堆)。系统允许这些“不可利用的”的指令并行地移动到执行单元17和19中,就象它们是非相关的一样。但是在下面将要详细讲到,存在另外的一些情况,例如一条“不可利用的”的指令出现在一条相关指令之前,指令必须按顺序执行,等等。这些“不可利用的”的指令与相关的指令都被认为是数据相关的指令,也就是具有某种类型数据相关的指令,它或者与紧相邻的上一条指令相关,或者与前面的其它指令相关。
因而,按照本发明,所有的指令被划分为:(1)非相关的;(2)相关的;或者(3)不可利用的。本发明提供了一种机制用以决定这些指令中的哪些组合可以在执行单元17和19中同时执行,哪些指令必须顺序执行。指令被成对地送到指令单元缓冲区2和4中,第一条指令被送到指令缓冲区0(2号部件),第二条指令被送到缓冲区1(4号部件)。采用这种方式,所有的指令或者顺序地每次执行一条;或者并行地执行,同时保持原来的顺序。能够保持顺序的原因在于,最“老”的指令总是放在指令缓冲区2中,且被认为先于缓冲区4中的指令执行。如前所述,相关的指令只定义为与相邻的上一条指令相关的、且不使用三端口加法器的指令。对于本发明来说,使用三端口加法器的加法指令被认为是非相关的。非相关的指令指那些不需要使用任何由上一条指令产生或使用的结果、值、数据、资源等等的指令。“不可利用的”指令指上面定义的那些依赖于前面非紧邻指令的指令。
上面提到过,流程图3a和3b描述了前面所定义指令的执行过程。按照本发明,这个执行过程有效地利用了双执行单元17和19。首先,我们将大致地说明一下该过程,然后将举一个使用前面所定义的常用指令的具体例子。进一步,本文将继续说明系统中有两个执行单元的情况,然而,应该注意到,本发明可以考虑带有其它不同数目执行单元的处理系统。
第1步开始执行过程。在第2步,判断执行单元17和19是否都可用,如果不是,系统将保持在第3步,直到两个单元都可用为止。一旦两个单元都可用,系统接着在第4步判断在指令流中(来自图2中的指令缓冲区2和4)的第1和第2条指令是否都是非相关指令,或都是相关指令。如果两条指令都是非相关指令,那么两条指令都移位到机器中,在单元3和5中译码,然后在执行单元17和19中同时执行(第8步)。如果第一条和第二条指令不都是非相关指令,那么本过程进行到第5步,该步判断第一条和第二条指令是否都是因某种原因被挂起的。这种情况发生于需要使用某寄存器的内容但还不可能马上得到的时候。这种类型的指令不依赖于相邻上一条指令的输出结果,而是依赖于被定义为“不可利用的”某些指令或资源。如果第一条和第二条指令都是“不可利用的”,那么这两条指令都将在第8步移位,这是因为,不管指令处于什么位置(在指令缓冲区中或在译码单元中),系统都需要等待这些指令所需要的那些“不可利用的”资源成为可以使用的。所以,“不可利用的”指令可以被移位到执行单元17和19中,以允许新的指令移进缓冲区2和4中。
如果第一条指令依赖于一个“不可利用的”寄存器堆,而第二条指令是非相关的(第6步),那么这两条指令都将在第8步移位到执行单元。本发明允许两条指令在此情况下被移位的原因在于,那条“不可利用的”指令被移位到执行单元17等待获取所需要的数据,而非相关的指令则可以在执行单元14中等待,直到“不可利用的”指令就绪为止,然后这两条指令将并行执行。然而,如果第一条指令不是“不可利用的”,或者第二条指令不是非相关的,那么本发明的指令执行过程将进行到第7步,该步将判断是否第一条指令是非相关的,以及第2条指令是“不可利用的”。在第7步只移动一条指令,这是因为有必要将那条“不可利用的”指令移动到指令缓冲区2中,如果紧跟那条“不可利用的”指令其后的指令是一条非相关或“不可利用的”的指令,那么,在下个机器周期,可以同时移位两条指令。同时,由于本发明按顺序执行指令,因而使指令缓冲区4处于就绪接收下一条指令的状态将是大有好处的。也就是说,如果系统不得不在一条“不可利用的”指令执行之前等待的话,那么应该将这条指令放在缓冲区2中等待,这条指令将作为下一条要执行的指令,这种做法是非常有效的。这样,一条后继的指令可以被移动到指令缓冲区4中,从而避免在流水线中产生一个“气泡”。在资源可以利用后,如果机器必须将“不可利用的”指令横向移位到缓冲区2中,那么此时将浪费一个机器周期。这样,在“不可利用的”指令从缓冲区4移位到了缓冲区2中以后,下一条指令就可以放到缓冲区4中,因而保证了一个连续的指令流。
如果第7步的条件被满足,那么,执行过程进行到第11步。该步移位一条指令到机器中译码并执行。应该说明的是,移位一条指令表示将指令缓冲区2中的指令移位到执行单元17,以及将指令缓冲区4中的指令移位到指令缓冲区2中;移位两条指令表示将指令缓冲区2和4中指令同时移位到执行单元17和19中。然而,如果第1条指令不是非相关的,并且第2条指令不是“不可利用的”,那么,第9步判断是否第1条指令是非相关的且第2条指令是相关的。如果是,执行过程进行到第11步,该步将非相关的指令移位到机器中(从缓冲区2移位到执行单元17)并执行之,以及将相关的指令从指令缓冲区4中移位到指令缓冲区2中。应该注意到,这条相关的指令此时依赖于一条已经执行的指令,于是系统将不再将它当作相关指令看待。接着第11步往后,执行过程将返回到第2步进行下一轮循环,此时,另外一条指令(第二条)将由总线8或缓冲区14中提供,这两条指令将按照第2、4-7、9和10步的判别条件被判断和处理。
如果在第9步,系统判断出第一条指令不是非相关的且第二条不是相关的,那么在第10步将判断是否第一条指令为“不可利用的”且第二条指令为相关的。如果是,执行过程进行到第11步,该步将第一条指令送至机器,将第二条指令移位到第一个指令输出缓冲区(移位1条指令)。
可以看得出,本发明的判断结构(第4-10步)如何处理每种定义类型的指令,以确保最大数目的指令可以并行执行,同时也顺序执行。
下面,使用了一个典型的指令序列作为本发明工作过程的例子。假设,缓冲区1从总线A、B、C、D中接收了下面的指令:
(1)LOAD R1,R31,R30
(2)LOAD R2,R29,R30
(3)ADD R22,R20,R21
(4)ADD R24,R22,R23
(5)ADD R3,R1,R2
(6)LOAD R6,R2,R22
(7)LOAD R25,R28,R29
(8)ADD R8,R6,R7
(9)LOAD R9,R27,R28
(10)LOAD R10,R31,R30
(11)ADD R11,R9,R3
(12)OR R11,R11,R20
(13)ADD R13,R11,R12
开始两条指令(1)和(2)被放到了缓冲区2和4中。这两条指令分别根据由寄存器堆R31、R30和R29、R30计算得到的地址取出两个值放在寄存器堆R1和R2中。由于指令(1)和(2)不依赖于任何其它指令,因而它们是非相关的,于是按照图3a中的第4步,它们都同时被移动到执行单元17和19中(移位2条指令)。指令(3)和(4)接着被分别放到缓冲区2和4中。指令(3)是一条加法指令,它将寄存器堆R20和R21中的值相加,并把结果放到寄存器堆R22中。指令(4)也是一条加法操作,它使用了位于其前的加法指令(3)的结果,也即,将R22中的值与R23中的值相加,结果放在寄存器堆R24中。指令(3)和(4)对寄存器堆R20,R21,R23中的值进行了求和。因为本发明提供了三端口的加法器25,这两条指令被认为是非相关的,因而在本发明中被移位到执行单元17和19中并行执行(图3a的第4步)。
指令(5)和(6)接着分别被移动到缓冲区2和4中。指令(5)是一条加法指令,它依赖于指令(1)和(2),而这两条指令均不是指令(5)的相邻上一条指令,于是,指令(5)被认为是“不可利用的”。指令(6)是一条取数指令,其有效地址依赖于寄存器堆R2和R22中的值。这两个值不受上一条指令(5)的影响。但是,R2依赖于指令(LOADR2),因而指令(6)也被认为是“不可利用的”。按照本发明(图3a中的第5步),两条“不可获得的”指令均被移位到执行单元17和19,在那里等待访问不可利用的数据。这样,下两条指令就可以移动到缓冲区2和4中了。
指令(7)是一条取数指令,它从内存中取出一个数放到处理器的寄存器堆R25中,指令(7)不依赖于任何其它的指令或寄存器。指令(8)是一条加法指令,它将寄存器堆R6,R7中的值相加,并把结果放到R8中。指令(8)由于依赖于指令(6),因而是“不可利用的”。此时的状况是,第1条指令是非相关的,而第2条指令是“不可利用的”,于是只有缓冲区2中的指令(7)被移位(到执行单元17),而指令(8)则从缓冲区4中横向移位到缓冲区2中(图3a中的第7步)。此后,下一条指令(9)被取到缓冲区4,于是指令(8)和(9)将接受判断。指令(9)是一条取数指令,它将内存中一个值取至处理器的寄存器堆R9中,系统判断这条指令是非相关的。于是,缓冲区2中有一条“不可利用的”的指令(8),同时,缓冲区4中有一条非相关的指令(9)。在这种情况下,只要前面的指令一执行完,这两条指令(8)和(9)将同时移位到执行单元17和19中(图3a中的第6步)。
下两条指令(10)和(11)将分别输入到缓中区2和4中。指令(10)为一条非相关指令,它将内存中的一个值取至处理系统的寄存器堆R10中。指令(11)是“不可利用的”,这是因为它依赖于寄存器堆R9中的值,这个值取决于前面的一条指令(不是相邻的上一条指令)的执行。该步的状态是第一条指令(10)为非相关的,第二条指令(11)是“不可利用的”,第一条指令(10)将从缓冲区2中移位到执行单元17中,第二条指令(11)将从缓冲区4中移位到缓冲区2中(图3a中的第7步)。
指令(12)是一条或指令,它将本例中寄存器堆R11和R20的值进行逻辑或操作,并将结果放到寄存器堆R11中。可以看出指令(12)依赖于前面的指令(11),指令(11)决定寄存器堆R11中的值。因而此时在缓冲区2中有一条“不可利用的”指令(11),在缓冲区4中有一条相关的指令(12)。在这种情况下,只有指令(11)被移动到执行单元17(图3b中的第10步),指令(12)则不能被移位到执行单元19,原因是它需要R11中的值。于是,指令(12)被移位到缓冲区2中,准备在指令(11)以后执行。而指令(13)被移动到缓冲区4中,这条指令将寄存器堆R11和R12中的值相加,并将结果置于寄存器堆R13中。这时,由于指令(12)所依赖的指令(11)已经执行完,指令(12)于是被当作是非相关的。指令(13)依赖于其相邻上一条指令(12),因而它是一条相关指令。这样,在缓冲区2中有一条非相关指令(12),而在缓冲区4中有一条相关的指令(13)。在这种情况下,非相关指令(12)被移动到执行单元17,相关指令(13)则被横向移位到缓冲区2中(图3b中的第9步)。
图4给出了两个时序图A和B,它们比较了在两种情况下执行一条取数指令和加法指令所需要的机器周期数。其中在一种情况下,这两条指令是非相关的(图A),在另一种情况下则是相关的(图B)。
参看图A,在周期1,取数和加法指令由于是非相关的,因而被分别存于指令缓冲区2和4中(图3a中的第4步)。然后在周期2均被移动到执行单元17和19中执行。在周期2末尾,从加法指令得出的数据被锁存到寄存器堆输入锁存器10。然后在周期3,系统从高速缓冲区中访问取数指令所需的数据,并将其锁存到寄存器堆输入锁存器10;还是在周期3中,加法指令的控制信号产生了一个向寄存器堆7、9的回写。在周期4,将来自输入寄存器10中的高速缓存的数据写入在寄存器堆7、9中的寄存器11。
图B显示了在周期1时指令缓冲区中(也是在缓冲区0和1中)的指令,它与图A中的一样,然而,此时加法指令依赖于取数指令,例如,LOAD R1和ADD R1,R2,R3。此时,只有取数指令在周期2中被移位到执行控制单元(按照图3b中的第9步)。此外,在周期2,加法指令从指令缓冲区4中被移位到缓冲区2中,有效地移位这条指令,是为了以后在执行单元17中执行,而不是在单元19中执行。应该注意到,此时,取数和加法指令将顺序地在处理器17中执行。当然,另外的指令可以在周期2-5期间从总线8或缓冲区14中输送到指令缓冲区4中,并依照如图3a和3b所示的过程接受系统分析。不过为了简化起见,图A和图B中并未表示出这些另外的指令。在周期3,取数指令使系统访问高速缓冲区,所需要的数据被取到输入寄存器10中,并走旁路到达执行单元输入锁存器11。同时,加法指令被移位到执行控制部件13,并在该部件中延迟等待,因为此时数据不可用。然后在周期4中,加法指令被执行,同时,取数指令取出的数据被放到寄存器堆7,9中。最后,加法指令的结果在周期5被回写到寄存器堆7,9中。
可以看得出,执行非相关指令所花费的机器周期数要比执行同样的相关指令所花费的少。图A和B清楚地显示了非相关的指令如何能在不同的执行单元中并行地执行,而相关的指令却必须顺序串行地执行。图A中的加法指令要比取数指令先执行,这是因为是非相关指令。然而在图B中,由于加法指令依赖于取数指令,因而它要在取数指令之后执行。
在这方面有一定技术的人可以看得出,通过在每个周期比传统系统多执行指令,本发明提高了处理器的性能。例如,假设分别被定义为非相关的、不可利用的、非相关的指令(I1,U,I2)被输送到一个传统的双执行单元系统中,I1和U将送到处理单元0和1。处理系统将执行I1,然后(n个周期后)当资源变为可用时,执行指令U。这样,在一个传统的系统中,n个周期中执行了2条指令。然而,本发明则在I1执行后,将指令U移动到执行单元0,并将I2移位到执行单元1。然后当资源可用时,处理系统将执行U和I2两条指令(n个周期后)。当然,由于I2是非相关的,因此可以与U并行执行。这样,本发明允许在n个周期中执行3条指令。在前面的例子中,如果U后面跟一条不可利用的指令U2,那么本发明仍能体现出其优点。在此情况下,U和U2很有可能被允许并行执行,因为顺序的不可利用的指令通常依赖于同一资源,而一旦资源可用时(n个周期以后),两条指令都可执行。因此,本发明仍然在n个周期内执行了3条指令,而在传统系统中,由于U2要等待U的执行,在n个周期中只能执行2条指令。
尽管我们给出了一些较佳实施例,并对它们作了描述,但对本技术领域中有一定技术水平的人来说,在不超过所附权利要求范围的条件下,仍可对本系统作出许多改变和修改。
Claims (21)
1.一个包含有第1和第2执行单元的处理系统,其特征在于包含:
与所述第1和第2执行单元相关联的第1和第2指令缓冲区,用以给执行单元提供指令;
用以解释在前述的第1和第2指令缓冲区中的所述指令是否为数据相关的装置;以及
用以向所述的第1执行单元提供所述的数据相关指令,使得其它的指令可以并发地提供给所述的第2执行单元的装置。
2.一个根据权利要求1的系统,其特征在于:所述的提供指令的装置包含有将指令从所述的第2缓冲区移动到所述的第1缓冲区的装置。
3.一个根据权利要求2的系统,其特征在于:前述的数据相关指令包含相关的和不可利用的指令,前述的其它指令包含非相关的指令。
4.一个根据权利要求3的系统,其特征在于:包含一个三端口的加法器,从而将那些对位于3个不同存贮位置的数据进行相加的指令定义为非相关指令。
5.一个根据权利要求4的系统,其特征在于:所述的非相关指令被并行地从所述的第1和第2指令缓冲区中分别移位到所述的第1和第2执行单元中。
6.一个根据权利要求5的系统,其特征在于:所述的不可利用的指令被并行地从所述的第1和第2指令缓冲区中分别移位到所述的第1和第2执行单元中。
7.一个根据权利要求6的系统,其特征在于:在所述的第1指令缓冲区中的一条所述的相关指令被移位到所述的第1执行单元中,在所述的第2指令缓冲区中的一条所述的相关指令被移动到所述的第1指令缓冲区中。
8.一个根据权利要求7的系统,其特征在于:在所述的第1指令缓冲区中的一条所述的不可利用的指令和在所述的第2指令缓冲区中的一条所述的非相关指令分别被并行地移位到所述的第1和第2执行单元中。
9.一个根据权利要求8的系统,其特征在于:在所述的第1指令缓冲区中的一条所述的非相关指令被移位到所述的第1执行单元中,以及在所述的第2指令缓冲区中的一条所述的不可利用的指令被移动到所述的第1指令缓冲区中。
10.一个根据权利要求9的系统,其特征在于:在所述的第1指令缓冲区中的一条所述的非相关指令被移位到所述的第1执行单元中,以及在所述的第2指令缓冲区中的一条所述的相关指令被移动到所述的第1指令缓冲区中。
11.一种在包括第1和第2执行单元的处理系统中执行指令的方法,其特征在于包含下面的步骤:
向与所述的第1和第2执行单元相关联的第1和第2指令缓冲区提供指令;
解释在所述的第1和第2指令缓冲区中的所述的指令是否为数据相关指令;以及
向所述的第1执行单元提供所述的数据相关指令,使得其它的指令可以并发地提供给所述的第2执行单元。
12.一种根据权利要求11的方法,其特征在于:前述移位步骤包括有将指令从所述的第2指令缓冲区中移动到所述的第1指令缓冲区中的步骤。
13.一种根据权利要求12的方法,其特征在于:前述的数据相关指令包括相关的和不可获得的指令,所述的其它指令包括非相关的指令。
14.一种根据权利要求13的方法,其特征在于包含下面的步骤:
向一个三端口的加法器提供指令,从而把那些对位于3个不同存贮位置的数据进行相加的指令定义为非相关指令。
15.一种根据权利要求14的方法,其特征在于包含下面的步骤:
将所述的非相关指令并行地从所述的第1和第2指令缓冲区中分别移位到所述的第1和第2执行单元中;以及
将所述的不可利用的指令并行地从所述的第1和第2指令缓冲区中分别移位到所述的第1和第2执行单元中。
16.一种根据权利要求15的方法,其特征在于包含下面的步骤:
将在所述的第1指令缓冲区中的一条所述的相关指令移位到所述的第1执行单元中;以及
将在所述的第2指令缓冲区中的一条所述的相关指令移动到所述的第1指令缓冲区中。
17.一种根据权利要求16的方法,其特征在于包含下面的步骤:
将在所述的第1指令缓冲区中的一条所述的不可利用的指令和在所述的第2指令缓冲区中的一条所述的非相关指令分别并行地移动到所述的第1和第2执行单元中。
18.一种根据权利要求17的方法,其特征在于包含下面的步骤:
将在所述的第1指令缓冲区中的一条所述的非相关指令移位到所述的第1执行单元中;以及
将在所述的第2指令缓冲区中一条所述的不可利用的指令移动到所述的第1指令缓冲区中。
19.一种根据权利要求18的方法,其特征在于包含下面的步骤:
将在所述的第1指令缓冲区中的一条所述的非相关指令移位到所述的第1执行单元中;以及
将在所述的第2指令缓冲区中的一条所述的相关指令移动到所述的第1指令缓冲区中。
20.一个根据权利要求10的系统,其特征在于包含:
在所述的第2指令缓冲区中的所述指令被移动到所述的第1指令缓冲区中后,向所述的第2指令缓冲区中提供一条后续指令的装置;以及
当在前述的第1和第2指令缓冲区中的所述指令被并行地移位到所述的第1和第2执行单元时,向所述的第1和第2指令缓冲区提供两条后续指令的装置。
21.一种根据权利要求19的方法,其特征在于包含下面的步骤:
在所述的第2指令缓冲区中的所述指令被移动到所述的第1指令缓冲区中后,向所述的第2指令缓冲区中提供一条后续的指令;以及
当所述的第1和第2指令缓冲区中的所述指令被并行地移位到所述的第1和第2执行单元时,向所述的第1和第2指令缓冲区提供两条后续的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12382893A | 1993-09-20 | 1993-09-20 | |
US123,828 | 1993-09-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1120195A true CN1120195A (zh) | 1996-04-10 |
CN1047677C CN1047677C (zh) | 1999-12-22 |
Family
ID=22411140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN94115166A Expired - Fee Related CN1047677C (zh) | 1993-09-20 | 1994-09-14 | 多执行单元的指令相关调度技术 |
Country Status (11)
Country | Link |
---|---|
US (1) | US5613080A (zh) |
EP (1) | EP0644482B1 (zh) |
JP (1) | JP2788605B2 (zh) |
KR (1) | KR0133238B1 (zh) |
CN (1) | CN1047677C (zh) |
AT (1) | ATE209794T1 (zh) |
BR (1) | BR9403516A (zh) |
CA (1) | CA2123442A1 (zh) |
DE (1) | DE69429226T2 (zh) |
ES (1) | ES2165375T3 (zh) |
TW (1) | TW393622B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559054A (zh) * | 2020-12-22 | 2021-03-26 | 上海壁仞智能科技有限公司 | 用于同步指令的方法和计算系统 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5684971A (en) * | 1993-12-27 | 1997-11-04 | Intel Corporation | Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions |
US5717882A (en) * | 1994-01-04 | 1998-02-10 | Intel Corporation | Method and apparatus for dispatching and executing a load operation to memory |
TW353732B (en) * | 1994-03-31 | 1999-03-01 | Ibm | Processing system and method of operation |
JP3180175B2 (ja) * | 1995-02-13 | 2001-06-25 | 株式会社日立製作所 | 命令レベルの並列処理制御方法およびプロセッサ |
TW448403B (en) * | 1995-03-03 | 2001-08-01 | Matsushita Electric Ind Co Ltd | Pipeline data processing device and method for executing multiple data processing data dependent relationship |
US5802346A (en) * | 1995-06-02 | 1998-09-01 | International Business Machines Corporation | Method and system for minimizing the delay in executing branch-on-register instructions |
GB9514433D0 (en) * | 1995-07-14 | 1995-09-13 | Sgs Thomson Microelectronics | Computer instruction execution |
US5930490A (en) * | 1996-01-02 | 1999-07-27 | Advanced Micro Devices, Inc. | Microprocessor configured to switch instruction sets upon detection of a plurality of consecutive instructions |
US5799167A (en) * | 1996-05-15 | 1998-08-25 | Hewlett-Packard Company | Instruction nullification system and method for a processor that executes instructions out of order |
US5796975A (en) * | 1996-05-24 | 1998-08-18 | Hewlett-Packard Company | Operand dependency tracking system and method for a processor that executes instructions out of order |
US6049864A (en) * | 1996-08-20 | 2000-04-11 | Intel Corporation | Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor |
KR100222039B1 (ko) * | 1996-12-20 | 1999-10-01 | 윤종용 | 수퍼 스칼라 프로세서의 명령 종속성 검증 장치 및 방법 |
US5963723A (en) * | 1997-03-26 | 1999-10-05 | International Business Machines Corporation | System for pairing dependent instructions having non-contiguous addresses during dispatch |
US6035388A (en) | 1997-06-27 | 2000-03-07 | Sandcraft, Inc. | Method and apparatus for dual issue of program instructions to symmetric multifunctional execution units |
US5928355A (en) * | 1997-06-27 | 1999-07-27 | Sun Microsystems Incorporated | Apparatus for reducing instruction issue stage stalls through use of a staging register |
US5918034A (en) * | 1997-06-27 | 1999-06-29 | Sun Microsystems, Inc. | Method for decoupling pipeline stages |
US5870578A (en) * | 1997-12-09 | 1999-02-09 | Advanced Micro Devices, Inc. | Workload balancing in a microprocessor for reduced instruction dispatch stalling |
US6393551B1 (en) * | 1999-05-26 | 2002-05-21 | Infineon Technologies North America Corp. | Reducing instruction transactions in a microprocessor |
US6490653B1 (en) * | 1999-06-03 | 2002-12-03 | International Business Machines Corporation | Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system |
JP3878508B2 (ja) * | 2001-11-08 | 2007-02-07 | 松下電器産業株式会社 | 回路群制御システム |
US6895497B2 (en) | 2002-03-06 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Multidispatch CPU integrated circuit having virtualized and modular resources and adjustable dispatch priority |
KR100473390B1 (ko) * | 2002-05-24 | 2005-03-08 | 창 원 석 | 케이블티브이용 채널분배기 |
US20040128476A1 (en) * | 2002-12-26 | 2004-07-01 | Robert Nuckolls | Scheme to simplify instruction buffer logic supporting multiple strands |
US20080168260A1 (en) * | 2007-01-08 | 2008-07-10 | Victor Zyuban | Symbolic Execution of Instructions on In-Order Processors |
JP5491071B2 (ja) * | 2009-05-20 | 2014-05-14 | エヌイーシーコンピュータテクノ株式会社 | 命令融合演算装置および命令融合演算方法 |
US9122487B2 (en) * | 2009-06-23 | 2015-09-01 | Oracle America, Inc. | System and method for balancing instruction loads between multiple execution units using assignment history |
US9733941B2 (en) * | 2012-10-09 | 2017-08-15 | Advanced Micro Devices, Inc. | Technique for translating dependent instructions |
US9372695B2 (en) | 2013-06-28 | 2016-06-21 | Globalfoundries Inc. | Optimization of instruction groups across group boundaries |
US9348596B2 (en) | 2013-06-28 | 2016-05-24 | International Business Machines Corporation | Forming instruction groups based on decode time instruction optimization |
US10417152B2 (en) * | 2016-06-03 | 2019-09-17 | International Business Machines Corporation | Operation of a multi-slice processor implementing datapath steering |
JP7032647B2 (ja) * | 2018-04-17 | 2022-03-09 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3771141A (en) * | 1971-11-08 | 1973-11-06 | Culler Harrison Inc | Data processor with parallel operations per instruction |
JPS5140043A (ja) * | 1974-10-01 | 1976-04-03 | Nippon Telegraph & Telephone | Hanyonyushutsuryokuseigyosochi |
JPS5263038A (en) * | 1975-10-01 | 1977-05-25 | Hitachi Ltd | Data processing device |
US4130885A (en) * | 1976-08-19 | 1978-12-19 | Massachusetts Institute Of Technology | Packet memory system for processing many independent memory transactions concurrently |
US4232366A (en) * | 1978-10-25 | 1980-11-04 | Digital Equipment Corporation | Bus for a data processing system with overlapped sequences |
US4376976A (en) * | 1980-07-31 | 1983-03-15 | Sperry Corporation | Overlapped macro instruction control system |
JPS58151655A (ja) * | 1982-03-03 | 1983-09-08 | Fujitsu Ltd | 情報処理装置 |
JPS5932045A (ja) * | 1982-08-16 | 1984-02-21 | Hitachi Ltd | 情報処理装置 |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
US4630195A (en) * | 1984-05-31 | 1986-12-16 | International Business Machines Corporation | Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage |
US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
US5051940A (en) * | 1990-04-04 | 1991-09-24 | International Business Machines Corporation | Data dependency collapsing hardware apparatus |
US4890218A (en) * | 1986-07-02 | 1989-12-26 | Raytheon Company | Variable length instruction decoding apparatus having cross coupled first and second microengines |
US4766566A (en) * | 1986-08-18 | 1988-08-23 | International Business Machines Corp. | Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing |
JPH0810430B2 (ja) * | 1986-11-28 | 1996-01-31 | 株式会社日立製作所 | 情報処理装置 |
US4837678A (en) * | 1987-04-07 | 1989-06-06 | Culler Glen J | Instruction sequencer for parallel operation of functional units |
EP0312764A3 (en) * | 1987-10-19 | 1991-04-10 | International Business Machines Corporation | A data processor having multiple execution units for processing plural classes of instructions in parallel |
US5247628A (en) * | 1987-11-30 | 1993-09-21 | International Business Machines Corporation | Parallel processor instruction dispatch apparatus with interrupt handler |
US4974155A (en) * | 1988-08-15 | 1990-11-27 | Evans & Sutherland Computer Corp. | Variable delay branch system |
JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
US5099421A (en) * | 1988-12-30 | 1992-03-24 | International Business Machine Corporation | Variable length pipe operations sequencing |
US5075840A (en) * | 1989-01-13 | 1991-12-24 | International Business Machines Corporation | Tightly coupled multiprocessor instruction synchronization |
US5127091A (en) * | 1989-01-13 | 1992-06-30 | International Business Machines Corporation | System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor |
US5113515A (en) * | 1989-02-03 | 1992-05-12 | Digital Equipment Corporation | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer |
US5093908A (en) * | 1989-04-17 | 1992-03-03 | International Business Machines Corporation | Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor |
US5197137A (en) * | 1989-07-28 | 1993-03-23 | International Business Machines Corporation | Computer architecture for the concurrent execution of sequential programs |
JP2816248B2 (ja) * | 1989-11-08 | 1998-10-27 | 株式会社日立製作所 | データプロセッサ |
US5185868A (en) * | 1990-01-16 | 1993-02-09 | Advanced Micro Devices, Inc. | Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy |
US5251306A (en) * | 1990-01-16 | 1993-10-05 | Advanced Micro Devices, Inc. | Apparatus for controlling execution of a program in a computing device |
JP2866421B2 (ja) * | 1990-01-19 | 1999-03-08 | 株式会社日立製作所 | 複数パス並列処理方法 |
US5301341A (en) * | 1990-11-28 | 1994-04-05 | International Business Machines Corporation | Overflow determination for three-operand alus in a scalable compound instruction set machine which compounds two arithmetic instructions |
US5504932A (en) * | 1990-05-04 | 1996-04-02 | International Business Machines Corporation | System for executing scalar instructions in parallel based on control bits appended by compounding decoder |
US5295249A (en) * | 1990-05-04 | 1994-03-15 | International Business Machines Corporation | Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel |
EP0454985B1 (en) * | 1990-05-04 | 1996-12-18 | International Business Machines Corporation | Scalable compound instruction set machine architecture |
JP2834292B2 (ja) * | 1990-08-15 | 1998-12-09 | 株式会社日立製作所 | データ・プロセッサ |
US5257354A (en) * | 1991-01-16 | 1993-10-26 | International Business Machines Corporation | System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results |
US5283874A (en) * | 1991-10-21 | 1994-02-01 | Intel Corporation | Cross coupling mechanisms for simultaneously completing consecutive pipeline instructions even if they begin to process at the same microprocessor of the issue fee |
JPH05127903A (ja) * | 1991-10-31 | 1993-05-25 | Toshiba Corp | 並列処理マイクロプロセツサ |
GB2263565B (en) * | 1992-01-23 | 1995-08-30 | Intel Corp | Microprocessor with apparatus for parallel execution of instructions |
-
1994
- 1994-05-12 CA CA002123442A patent/CA2123442A1/en not_active Abandoned
- 1994-07-15 JP JP6163633A patent/JP2788605B2/ja not_active Expired - Fee Related
- 1994-09-12 BR BR9403516A patent/BR9403516A/pt not_active Application Discontinuation
- 1994-09-14 KR KR1019940023113A patent/KR0133238B1/ko not_active IP Right Cessation
- 1994-09-14 CN CN94115166A patent/CN1047677C/zh not_active Expired - Fee Related
- 1994-09-15 DE DE69429226T patent/DE69429226T2/de not_active Expired - Fee Related
- 1994-09-15 ES ES94306765T patent/ES2165375T3/es not_active Expired - Lifetime
- 1994-09-15 AT AT94306765T patent/ATE209794T1/de not_active IP Right Cessation
- 1994-09-15 EP EP94306765A patent/EP0644482B1/en not_active Expired - Lifetime
- 1994-09-23 TW TW083108818A patent/TW393622B/zh not_active IP Right Cessation
-
1996
- 1996-08-08 US US08/695,750 patent/US5613080A/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559054A (zh) * | 2020-12-22 | 2021-03-26 | 上海壁仞智能科技有限公司 | 用于同步指令的方法和计算系统 |
CN112559054B (zh) * | 2020-12-22 | 2022-02-01 | 上海壁仞智能科技有限公司 | 用于同步指令的方法和计算系统 |
Also Published As
Publication number | Publication date |
---|---|
CA2123442A1 (en) | 1995-03-21 |
DE69429226D1 (de) | 2002-01-10 |
KR950009453A (ko) | 1995-04-24 |
BR9403516A (pt) | 1995-06-20 |
JPH07105002A (ja) | 1995-04-21 |
ES2165375T3 (es) | 2002-03-16 |
ATE209794T1 (de) | 2001-12-15 |
KR0133238B1 (ko) | 1998-04-24 |
CN1047677C (zh) | 1999-12-22 |
US5613080A (en) | 1997-03-18 |
EP0644482B1 (en) | 2001-11-28 |
EP0644482A1 (en) | 1995-03-22 |
DE69429226T2 (de) | 2002-08-08 |
JP2788605B2 (ja) | 1998-08-20 |
TW393622B (en) | 2000-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1047677C (zh) | 多执行单元的指令相关调度技术 | |
US5699536A (en) | Computer processing system employing dynamic instruction formatting | |
US5465373A (en) | Method and system for single cycle dispatch of multiple instructions in a superscalar processor system | |
US7734899B2 (en) | Reducing data hazards in pipelined processors to provide high processor utilization | |
Buehrer et al. | Incorporating data flow ideas into von Neumann processors for parallel execution | |
CN1047245C (zh) | 采用独立存取中间存储器的超标量处理器系统中加强指令调度的方法和系统 | |
CN1042863C (zh) | 用于在超标量处理机系统中索引中间存储器缓冲区的指定的方法和系统 | |
EP0565705B1 (en) | Out of order job processing method and apparatus | |
CN1511280A (zh) | 在具有限制性存储器模型的系统中多存储缓冲器转发的系统和方法 | |
CN1226700A (zh) | 高性能推测性未对齐加载操作 | |
JPH07160501A (ja) | データ処理システム | |
CN1306642A (zh) | 带外部协处理器可访问的上下文切换寄存器组的risc处理器 | |
US9747216B2 (en) | Computer processor employing byte-addressable dedicated memory for operand storage | |
US5778248A (en) | Fast microprocessor stage bypass logic enable | |
US5274777A (en) | Digital data processor executing a conditional instruction within a single machine cycle | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
CN1410885A (zh) | 基于操作队列复用的指令流水线系统和方法 | |
US9747238B2 (en) | Computer processor employing split crossbar circuit for operand routing and slot-based organization of functional units | |
US20230367604A1 (en) | Method of interleaved processing on a general-purpose computing core | |
CN1602469A (zh) | 用在多处理器数据处理系统中的数据处理方法和相应的数据处理系统 | |
Haffner et al. | An analysis and comparison of database cracking kernels | |
JPS5941215B2 (ja) | 主記憶装置書込み制御方式 | |
US9513921B2 (en) | Computer processor employing temporal addressing for storage of transient operands | |
CN1585923A (zh) | P和v信号操作 | |
JPH0451328A (ja) | 複合型命令スケジューリング処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |