CN1103960C - 在多级流水线结构中处理条件跳转的结构和方法 - Google Patents

在多级流水线结构中处理条件跳转的结构和方法 Download PDF

Info

Publication number
CN1103960C
CN1103960C CN97195758.4A CN97195758A CN1103960C CN 1103960 C CN1103960 C CN 1103960C CN 97195758 A CN97195758 A CN 97195758A CN 1103960 C CN1103960 C CN 1103960C
Authority
CN
China
Prior art keywords
path
instruction
streamline
jump
fifo
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.)
Expired - Fee Related
Application number
CN97195758.4A
Other languages
English (en)
Other versions
CN1222985A (zh
Inventor
D·哈尔瓦松
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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Publication of CN1222985A publication Critical patent/CN1222985A/zh
Application granted granted Critical
Publication of CN1103960C publication Critical patent/CN1103960C/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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions

Abstract

本发明涉及用于指令处理的结构和方法,包括一个多级流水线结构(13A,13B;23A,23B;33)和一个为跳转指令存储跳转地址信息的存储结构(14A,14B;24A,24B;25A,25B;34),其中从至少一个指令源(PS)(11;21;31)向所述多级流水线结构传送指令。存储结构(14A,14B;24A,24B;25A,25B;34)包括至少一个FIFO寄存器。条件跳转目标地址信息存储在所述至少一个FIFO寄存器(14A,14B;24A,24B;25A,25B;34)中,同时至少是跳转指令存储在所述流水线结构(13A,13B;23A,23B,33)中,并且以这样一种方式将跳转目标地址信息从所述至少一个FIFO寄存器传送出来,使得允许大致顺序地且连续地预取指令,而不考虑条件跳转的数目和是否进行了跳转。

Description

在多级流水线结构中处理条件跳转的结构和方法
技术领域
本发明涉及使用流水线技术对指令的处理。特别地,本发明涉及在多级流水线结构中处理指令的结构和方法。本发明还涉及包括运用了流水线处理的多个处理器或者特定的中央处理器的远程通信系统。
背景技术
通常,处理一个指令需要进行多个不同的步骤。而且,执行必须顺序地经过这些步骤。在一个包括多级的流水线处理器中,不同的硬件响应由这些级指定的不同任务。当连续执行多个指令时,流水线从一个时钟周期到一个时钟周期地被填满。如果指令是连续跟随的,则由于特别高的时钟频率,利用流水线技术可以大大地提高性能。然而,如果在执行另外一个指令时出现了跳转指令,则由于要被处理的后续指令的地址只能在译码阶段期间被确定,经过该流水线的指令流将被中断。然而,在许多已知的系统和许多应用程序中,跳转指令是非常普遍的,并且代表着相当高的比例的指令数,例如在某些情况下大约为20%。这样则通过应用流水线技术所获得的性能上的提高会受到严重影响。
在US-A-4974155中披露了一种流水线计算机。为了避免当由于跳转指令引起处理阻塞时所出现的时间损失,应用了可变延时的分支操作,该操作调节条件以及非条件分支操作的编程。当提供多个程序指令用于执行时,执行所述步骤以调节分支命令使其后面跟随有一个分割命令,以指出用于所述跳转的时间。分割命令例如可以包括执行分支过程中在一个指令命令中的一个比特。这意味着在该分支命令之后并不立即执行跳转,而是被延时一定数量的程序指令,直到以一个分割比特的形式表示的分割命令出现。所述的数量是可变的并可由编程者控制,并且延时必须至少是一个周期。当由一个控制指令指定一个条件分支时,测试后续的处理结果,直到所述条件码被准备好和一个分割比特出现为止。如果所述条件没有被满足,不进行跳转,而是在程序计数器中恢复执行当前的序列。由此,在分支命令的情况下,系统提供一个可变延时,在该可变延时期间,分支或目标指令被取出,当出现一个分割比特时,跳转被立即执行。
但是,因为由于延时等引发的时间损失相当大并且当存在几个连续的相继跳转指令时仍会存在流水线中断的危险,此外所述结构取决于分支和先决条件,所以,不能以良好的方式处理条件跳转。
此外,除了在节省时间方面不是很有效之外,上述文本所公开的结构还特别复杂。
US5,287,467描述了一种结构,这种结构使用来自执行流水线的分支指令检测来增强多级流水线计算机的并行性。可以与执行流水线操作平行地并行处理高达两个的被检测指令。条件分支处理包括检测当前指令流中的分支指令,预测是否执行分支、为一个被预测要执行的分支预取指令文本、执行分支指令中固有的分支测试并且在需要时发出经过校正的指令重取。然后使用分支指令位置信息产生在高速缓存器中的分支指令的地址。然后产生一个分支目标地址,将分支指令文本、其地址和预取指示器输入一个分支队列,这是和FIFO队列一样操作的。
这个结构主要考虑了使用分支预测机构的可伸缩(scalable)复合指令集机器(SCISM)。如果分支预测的最后预测结果是没有采取分支,那么利用一般的方式执行指令读取,此外,包括分支地址的整个分支指令被存储在需要较大存储单元的FIFO中。在误预测的情况下,正确的指令必须被再次读取到执行流水线的译码级。为了获得最佳分支预测并借此获得一个最佳结构,需要一个复杂的逻辑单元,这会使结构复杂化。
包括三级流水线的已知处理器包括取指令级、译码指令级和执行或完成指令级。一旦流水线被填满,在不同步骤中将有一定数量的指令,并且在如果不在流水线系统内指令进行例如一个微周期的情况下,在每个周期有一个完成指令的输出。如果处理器的速度提高甚至加倍,则输出也加倍。然而,在实际中,只要指令流是不连续的,即如果在指令代码中有一个跳转,流水线就会中断。因此,为了将指令代码中跳转所产生的影响隐藏起来,在流水线端点处有两个流水线通向微控制单元或微处理器单元。一个流水线顺序地通过程序流,只要在指令队列中发现条件跳转就立即开始另一个流水线。第二个流水线,即非顺序的流水线,假设检测到的跳转会被执行,因此从跳转地址取指令并对指令进行译码,从这里开始执行。
但如果在顺序队列中有不止一个条件跳转,则必须停止对指令的预取,所以即使跳转未进行,也不可能使顺序队列被充满。因此,当发现第二个条件跳转时会出现一个停止或流水线的中断,这将导致时间的损失。
发明内容
本发明的一个目的是提供一种用于在具有高容量的汇编程序级和/或微代码级上进行指令处理的结构。在现有应用程序中采用指令或指令处理来表示由汇编程序指令来初始化的汇编程序指令的处理和在微代码处理器中使用的微代码的处理。本发明的另一个目的是提供一种与迄今已知的结构相比使用更高比例的可用带宽用于执行的结构,即,减少了例如由于流水线中断等引起的时间损耗,并且跳转指令对执行效率的影响降到更低的水平。本发明的一特定目的涉及在使用非常大的存储器以及要实现很大数目的任务、即高处理频率以及关于可靠性的要求较高的环境下实现上述目的。其中的一个例子涉及在远程通信系统中的中央处理器,在该系统中例如一个CPU(中央处理器单元)控制例如100,000个用户。在这种情况下的要求一般与商业计算机的要求不同,并且执行效率是最重要的,需要尽可能地利用带宽。
本发明还具有一个目的,就是提供一种实现上述的一个或多个目的的处理指令的方法。另一个目的是提供一种实现上述的一个或多个目的的远程通信系统,带有分别用于该远程通信系统的一个中央处理结构和多个中央处理结构。
因此,提供了一种用于指令处理的结构,包括一个多级流水线结构和一个为跳转指令存储跳转地址信息的存储结构,其中从至少一个指令源向所述多级流水线结构传送指令,其特征在于,存储结构包括至少一个FIFO寄存器,条件跳转目标地址信息存储在所述至少一个FIFO寄存器中,同时至少是跳转指令存储在所述流水线结构中,从而将跳转目标地址信息从所述至少一个FIFO寄存器传送出来,所述流水线结构包括至少一个第一和一个第二流水线路径,其中一个为执行指令的当前路径,另一个是非当前流水线,以这样一种方式进行安排,当进行了一个跳转指令时,流水线路径进行切换,以使得非当前路径变成当前路径,反之亦然,使得允许连续地预取指令,而不考虑条件跳转的数目和是否进行了跳转。
在一个特定实施例中,提供了一种结构,其中,从一个或多个指令源、例如一个程序存储中顺序地将指令传送到包括多个级的流水线结构中。在一个较佳实施例中,流水线的一部分至少包括第一和第二流水线路径,其中一个是当前执行指令,另一个是充满其指令队列的非当前路径。提供了一个存储结构用于至少存储条件跳转地址信息。该存储结构包括至少一个先进先出寄存器(FIFO)。如果局部至少有流水线路径两个,则非当前的一个流水线路径从存储着某种跳转地址信息、例如跳转目标地址的存储装置FIFO连续地预取指令。当进行一个条件跳转时,流水线路径进行转换,以使得非当前路径变成当前路径,反之亦然,然后先前的当前流水线路径变成非当前路径,从地址或通过存储在存储装置中地址信息进行连续的指令预取。不考虑条件跳转的数目和跳转是否进行,而允许基本连续的指令预取。FIFO寄存器的数目可以与流水线路径的数目相同,但不是必须的。但在一个较佳实施例中,有两个流水线路径,每个路径有一个FIFI寄存器。在使用跳转预测的一特定实施例中,为每个流水线路径提供了第一和第二FIFO寄存器。
在FIFO寄存器中的位置个数可以不同,但依据一个较佳实施例,在每个FIFO寄存器中的位置个数相应于流水线路径中指令的最大数。但这不是必须的,在每个FIFO寄存器中的位置个数也可以低于在各个流水线路径中可以容纳的指令数。例如,每个FIFO寄存器可以包括2-4个位置来存储跳转地址信息,特别是跳转目标地址信息。虽然依据本发明没有对其进行限制,但可以根据系统、应用程序等来进行应用。在一个实施例中每个流水线路径中可以排列大约8个指令。
一个流水线路径最好是一个顺序路径,即,它顺序地跟随着程序流,以便当发现第二个条件跳转指令时,将跳转地址信息、特别是跳转目标地址存储在该顺序路径的FIFO寄存器中(如果给每个流水线路径安排了一个寄存器)。如果未进行跳转,则执行顺序队列的指令,而实质上没有任何中断,非当前(例如,非顺序的)流水线路径使用第一FIFO寄存器或顺序路径的FIFO寄存器中的连续的地址信息来预取指令。当然,如果非顺序流水线路径现在作为当前流水线路径来操作,则操作是相似的。通过一个安排给非顺序路径的FIFO寄存器,指令的预取不会被一个条件跳转指令所中断。另一方面,如果条件跳转未进行,非当前路径被充满,使用存储在存储结构的FIFO寄存器中的下一个地址开始对非当前路径进行预取。
向一个流水线路径的预取最好可以同时使用来自安排给该特定路径的FIFO寄存器的地址信息和来自安排给另一个或其它流水线路径的FIFO寄存器的地址信息来进行。因此,如果发现了一个条件跳转指令或者特别是发现了第二个或更多个条件跳转指令,在顺序的和非顺序的流水线中都有可能继续读取指令。指令的处理最好至少包括指令的读取、译码和执行。但这并不意味着排除其它选择,即更少的级、更多的级或任何组合的其它级。
在一特定实施例中运用了跳转预测。然后最好将两个存储装置、例如FIFO寄存器安排给每个流水线路径,例如第一和第二FIFO寄存器,第二寄存器例如包括第一寄存器的一个复制,该复制具有相应于第一寄存器中的内容,而没有分支预测。较佳地,在第一FIFO中存储的是预测要进行的跳转的跳转目标地址信息,而在第二FIFO寄存器中存储的是与是否预测要进行无关的跳转目标地址信息,以使得如果一个预测跳转实际上未进行,则可以从第二FIFO寄存器完成预取。
不考虑上述实施例,跳转目标地址信息可以包括绝对地址,但地址信息也可以包括相对地址信息。在这种情况下,提供了用于存储真实地址信息或绝对地址的装置。
在一个替换实施例中,流水线结构只包括一个流水线路径。使用从FIFO输出的地址信息来访问一个或多个指令源,例如程序存储器。
如果实际上进行了一个条件跳转,则使用输出地址(用于访问例如程序存储器),FIFO和流水线路径都被充满。但如果没有进行一个条件跳转,则FIFO的输出移到下一个地址。FIFO的实现例如可以如同上面参考多路径的实施例所描述的一样。
无条件跳转指令可以依据本发明用不同的方式来处理,本发明的主要目的是处理条件跳转指令。但在本发明的一个对于无条件跳转指令包括了两条流水线路径的特定实施例中,流水线路径不进行切换,而是指令流被打断,从进行的跳转地址开始执行。这涉及一个较佳实施例。然而,可选择地,对于无条件跳转路径也可以被切换。
参考本发明的包括不止一个路径的不同实施例,可以有分离的译码器,例如每个流水线路径有一个译码器,也可以是多个流水线路径有一个共同的译码器。但每个流水线路径具有一个译码结构更有利一些。
本发明还提供了在一个远程通信系统中的处理结构,包括一个用于指令的流水线处理的结构,该结构包括一个顺序地跟随着程序流的顺序流水线路径和一个非顺序流水线路径,其中一个是当前路径,另一个是非当前路径,当在指令队列中发现条件跳转指令时,所述第二流水线从跳转信息地址开始预取和解码指令,其特征在于,提供一个存储结构,该存储结构至少包括存储条件跳转目标地址信息的第一存储装置,非当前流水线路径从跳转目标地址预取指令,如果进行了一个跳转,则路径被切换,并且不考虑是否进行了跳转,从跳转地址预取信息的路径被充满,到其上的预取从存储装置中的下一个地址进行。
已经发现,例如,由于需要在这样一种系统中以一种可靠的方式处理的大量信息以及关于执行速度的高要求,本发明在远程通信上的应用是非常有用的。
本发明还提供了一种在一个处理结构的流水线中处理指令的方法,其中该处理结构在至少部分流水线中包括两个流水线路径,所述方法包括步骤:执行一个当前路径中的指令;将条件跳转地址信息存储在一个包括至少一个FIFO寄存器的存储结构中;从FIFO中给出的地址向一个非当前路径预取指令;如果未进行一个跳转,充满非当前路径,继续从存储结构的一个FIFO中给出的下一个地址预取指令;如果进行了一个条件跳转,将当前路径切换为非当前路径,反之亦然,并且充满先前的当前路径,完成从存储结构的所述或一个FIFO寄存器向先前的当前路径的预取。
在一个特定实施例中,提供了一种用于指令的流水线处理的方法。将指令传送到一个译码器,然后将指令与相应于这些指令的条件跳转目标地址分开。
将(没有跳转目标地址的)指令排列成一个流水线指令队列,将条件跳转目标地址存储在先进先出存储结构中。如果进行了一个条件跳转,则使用从FIFO输出的地址作为下一个指令地址。然后将FIFO和指令队列都充满。如果未进行条件跳转,则FIFO移到下一个地址。
本发明特别提供了一种在一个处理结构的流水线中处理指令的方法,其中指令被传送到一个译码器,其特征在于,该方法包括步骤:将指令与条件跳转目标地址分开;将指令安排在一个流水线结构队列中;主要将条件跳转目标地址存储在一个FIFO寄存器中;如果进行了一个条件跳转,则采用来自FIFO的输出地址作为下一个指令地址,并充满FIFO和指令队列;如果未进行一个条件跳转,在FIFO中移到下一个地址。
根据上述的在一个处理结构的流水线中处理指令的方法,执行在一当前路径中的指令,将条件跳转地址信息存储在一个存储结构、最好在一个安排给当前路径的FIFO寄存器中。在一个非当前路径中,从由存储结构、特别是一个例如安排给其它流水线路径、即当前路径的FIFO寄存器中给出的地址预取指令。如果未进行跳转,则非当前路径被充满,从由存储结构或者特别是当前路径的FIFO寄存器给出的下一个地址进行指令预取。另一方面,如果进行了一个条件跳转,则当前路径切换到一个非当前路径,反之亦然,先前的当前路径被充满,预取始于那个路径,即,从安排在现在变成当前路径的其它流水线路径中的存储装置给出的地址开始。
本发明的一个优点是条件跳转指令不会导致流水线中断,特别是如果发现不止一个跳转时,这不会导致中断,在包含一个路径的实施例和其它实施例中,这不会导致顺序队列的中断,与在迄今已知的结构中的情况一样,对非顺序流水线的预取将还会中断。由于可以以一种容易的、与已知系统相比不复杂且不麻烦的方式增加执行效率,本发明的另一个优点是可以提供能够适应不同需要的流水线处理结构。另一个优点是由于可以不考虑是否使用了分支预测就可以运用本发明,执行效率会增加;如果运用了分支预测,与非预测的情况相比,如前所述,可以有利地提供一个修改。
附图说明
下面将参考下面的附图以一种不限制的方式进一步说明本发明,其中:
图1显示了本发明的一个包括两个流水线路径的实施例,其中为每个流水线路径安排一个FIFO寄存器,
图2显示了运用分支预测的本发明的另一个实施例,
图3显示了只带有一个流水线路径的实施例,以及
图4是描述依据本发明的一种指令处理方式的流程图。
具体实施方式
图1显示了本发明的第一个实施例。将指令顺序地从一个指令源传送出来,在显示的实施例中该指令源是一个程序存储器(PS)11。也可以将指令从其它指令源或从不止一个指令源、内部源或外部源等传送出来。由于与取指令级相关,指令于是可以从由地址给出的内部或外部存储器读取。在显示的实施例中,有两个指令译码装置12A、12B,每个用于各流水线路径13A、13B。在另一个替换实施例中,只有一个译码装置,这有两种情况,一种是在一个实施例中只有一个流水线路径,这在下面将参考一个替换实施例来讨论,另一种情况是在实施例中有不止一个流水线路径,译码装置对于至少两个流水线路径是共同的。在译码级,从一个内部或外部存储器读取所需的操作数。对要处理的指令译码,由较早指令产生的数据可以用于当前指令。图1的结构在一个流水线的端点至少包括两个流水线路径13A、13B。或者整个流水线可以包含两个流水线路径,或者流水线路径也可以在流水线中,例如在流水线的开始或任何中间位置。由于流水线跳转的影响,对于微控制单元19指令被隐藏了。
这里假定第一流水线路径13A(I队列O)顺序地跟着程序流,当在顺序流水线路径13A的指令代码中检测到一个跳转时,开始第二流水线路径13B(I队列1)。第二非顺序流水线路径13B假设要进行一个条件跳转,因此它从跳转地址取指令并进行译码,由此进行处理。在顺序的“第一”流水线路径13A,将多个指令1a-1g存储在一个指令队列(I队列O)中。该队列的第一指令1a在这里是一个装入常数(load constant)指令(LCC)。而第二个指令1b是一个条件跳转指令,这里是第一条件跳转指令n1,代表如果等于n1则跳转,JEC n1。与之相似,指令1c是第二个条件跳转指令,如果等于n2则跳转,JECn2,下一个指令1d是从存储器读取指令,读存储器(RS)。指令1e又是一个条件跳转指令JEC n3。指令1f是一个从寄存器MFR移动的指令,指令1d又是一个在存储器中读的指令RS。在这种情况下,将一个先进先出FIFO寄存器14A安排给顺序的第一流水线路径13A,在该FIFO寄存器14A中存储着条件跳转n1、n2、n3的跳转目标地址。在这种情况下,由于是跳转目标地址存储在其中,将FIFO寄存器表示为一个跳转目标FIFO JTF O。在一个实施例中,可以将绝对地址存储在FIFO 14A中,也可以将相对地址信息存储在FIFO 14A中(未显示)。在后一种情况下,提供了另外的用于存储绝对地址的存储装置。但重要的是将某些类型的地址信息存储在先进先出类型的存储器中。
通过存储与跳转地址有关的地址信息,当检测到一个或多个条件跳转但未进行时,可以没有中断地继续执行在顺序队列中的指令。对于非顺序流水线路径13B,安排了一个(第二)先进先出寄存器14B(JTF 1),在该寄存器14B中存储了跳转目标地址(当然,关于地址信息的相同论证也适合于该存储装置和第二路径13B中的指令队列的指令2a-2d)。在第二流水线路径13B中的指令为:第一指令从寄存器(MFR)2a移数,后面跟着两个条件跳转指令2b、2c,这里分别表示为JEC n4和JEC n5,指令2d是读存储器指令RS。因此,如果发现了一个或多个条件跳转指令,在非顺序(这里)流水线中也可以继续取指令。
现在更详细地解释图1所显示的情况。假设第一流水线路径13A在此刻是当前路径。流水线路径13A然后将指令传送到微控制单元19,同时(第二)流水线路径13B充满一个指令队列。在显示的特定例子中,第二流水线路径13B从存储在安排给第一流水线路径13A的FIFO寄存器14A中的地址n1预取指令。如果进行了到n1的条件跳转,执行这些指令。但如果未进行跳转,则第二流水线路径13B充满,开始从地址n2预取指令。然后,如果到n2的跳转也未进行,则预取将从n3开始,等等。
但如果进行了到n1的第一跳转,则切换流水线路径13A和13B,先前的当前路径13A变成了非当前路径,而先前的非当前路径13B变成了当前路径。于是,流水线路径13A被充满,初始化从存储在安排给第二流水线路径13B的第二FIFO寄存器14B的地址n4向该路径的预取。在这种情况下,从程序存储器11中的地址n4来完成预取。如果没有任何存储装置14A、14B,在检测到第二个跳转指令1c、即跳转指令JEC n2后,路径13A中的预取就必须停止,对于第二流水线路径13B,在检测到第一个跳转指令2b、即跳转指令JEC n4后,预取就必须停止。
在显示的实施例中,FIFO寄存器的个数相应于流水线路径的个数。但在另一个替换实施例中(未显示),可以将共同的存储装置用于两个或更多个流水线路径。后面将参考图2更加详细地讨论安排给每个流水线路径的不止一个的FIFO寄存器。但本发明也适用于只有一个流水线和一个FIFO寄存器安排在其上的情况,这将在下面进一步地讨论。在一个实施例中,在每个FIFO寄存器中的位置数目相应于在相应的流水线路径中的指令数目。在流水线中的指令数目取决于应用程序、系统等等;例如,一个流水线路径可以包括8个指令,但也可以包括更少或更多的指令,图8仅仅是例示性的。
在另一个实施例中,每个FIFO寄存器中的位置数目低于相应的流水线路径中的指令数目。例如,在每个FIFO寄存器中可以有2、3或4个位置。当然,也可以包括更多个位置,例如,在流水线路径中的指令数目和相应的存储装置之间只有很小的差别。如上所述,这取决于应用程序、需要和要求等等。
通过引入存储装置,减少了每个指令使用的平均周期时间。但其减少的量也取决于多个不同参数,例如时钟速度、存储器访问时间、指令译码器数目等。
图2显示了一个使用分支预测的实施例,其中每个流水线路径有复制的存储装置。于是,提供了已经通过图1提供的功能,并且可以将其安排为进一步提高执行效率。简要地说,这意味着如果预测一个跳转不会进行,则不在非当前路径对其进行预取。而是应该对被预测要进行的下一个检测到的跳转进行预取。但如果出现了这种情况,即第一个提到的跳转、即预测不会进行的那个跳转最终应该进行(但通常不会是这种情况),则提供存储装置或FIFO寄存器的一个复制,该复制中包括了所有条件跳转目标地址(或更一般地,地址信息)、即一个具有相应于在没有分支预测时应该具有的内容的另外的FIFO寄存器。然后可以从那里开始预取。
现在对图2中显示的实施例进行更详细的说明。与图1相似,将指令从程序存储器PS 21顺序地传送到第一流水线路径23A,还安排了第二流水线23B,在每个流水线路径上安排了分开的译码器装置22A、22B。与图1中显示的实施例相似,可以从不止一个指令源传送出指令,指令源可以包括外部或内部存储器等。此外,译码装置可以是不止一个流水线路径公用的,也可以是每个流水线路径有一个译码装置,如图2所示。在第一流水线路径23A中,将多个指令1a’-1g’安排在一个队列中;标号与图1中相同。以相同的方式将多个指令2a’-2d’安排在第二流水线路径23B中的一个队列中。为每个流水线路径23A、23B安排一个FIFO寄存器24A、24B。但除此之外,还为每个流水线路径25A、25B安排了一个“阴影”或附加的或复制的FIFO寄存器(JTF 0’;JTF 1’)。
在图2中假设第一流水线路径23A此刻是当前的。这意味着第一流水线路径23A将指令传送到MCU 29。然后第二流水线路径23B充满指令队列。在此刻第一流水线路径23A从安排给流水线路径23A的第一FIFO寄存器24A中的地址n2预取指令。因此,在FIFO寄存器24A存储的是预测要进行的指令的地址。如果未进行到n1的条件跳转而进行到n2的条件跳转,将执行来自地址n2的指令。因此这里将来自流水线路径23A的跳转n1认为是不可能进行的、即预测不进行的。但如果尽管如此还是进行了从路径23A到n1的跳转,则第二流水线路径23B被充满,第二FIFO寄存器25A的地址包含正确的地址,其中第二FIFO寄存器25A也称为阴影(shadow)FIFO寄存器。然后开始从地址n1预取指令。如果该跳转预测要进行,则切换路径,第二流水线路径23B将成为当前路径,第一流水线路径23A被充满,开始从程序存储器21中的地址n6向该路径预取指令。由图2显示的实施例当然还可以以多种方式进行改变,上面参考图1所作的讨论当然也可以运用到这种情况中,例如,涉及FIFO寄存器中位置的数目、可以在一个路径中排队的指令的数目,等等。包含在FIFO寄存器中的地址信息当然也可以是绝对地址、相对地址等。
至考虑了无条件跳转为止,在一个较佳实施例中,当检测到一个无条件跳转时,没有路径的改变。而是流程被中断,从跳转地址开始进行。但本发明并不限于此;当检测到无条件跳转时,也可以切换路径。一般来说,可以以任何常规的方式处理无条件跳转。
本发明还涉及一种远程通信系统,在该系统中,多个中央处理器或至少一定数量的中央处理器包括如上所述的流水线处理结构。例如在象爱立信的AXE系统这样的远程通信系统中的中央处理器包括非常大的存储器。例如,一个交换机的中央处理单元(CPU)可能必须处理例如100,000个用户。在某些情况下,每秒钟大约有100兆个指令,需要尽可能有效地利用带宽,并且强烈地希望尽可能地减少损耗的时间,以使得中断等不会占据太多带宽。本发明还可以用于例如移动远程通信系统的基站中。
然而,可以将本发明运用到任何运用实时控制并且关于高可靠性的要求较高的系统中。实际上要预取的是由例如一种算法或准则所给出的。也可能对于所要预取的进行一个选择。
图3显示了只有一个路径33的实施例。依据本发明,当由于某种原因或其它原因不希望与指令一起传送跳转目标地址时,使用一个存储跳转目标地址的跳转目标FIFO 34。这将在下面进一步讨论。
将指令从例如程序存储器31传送到译码器。将跳转目标地址放进跳转目标FIFO 34,而不是将其与指令一起传送。将指令以前面描述过的相似的方式安排在指令队列33、即流水线路径中。但跳转目标地址不象在多路径实施例中的情况那样地被包括在内。MCU 39代表微控制单元。FIFO 34的输出是首先放在FIFO 34中的跳转目标地址。如果未进行相应于该地址的跳转,FIFO 34的输出移到FIFO中的下一个地址,即这里的n2。
但如果进行了跳转,则采用输出、例如这里的n1作为下一个指令的地址。然后FIFO 34和指令路径33被充满。
一个跳转目标FIFO可以与一个微流程处理程序一起使用。当一个汇编指令需要不止一个微字(micro word)时,使用微流程处理程序。在这种情况下在流程中的中断也是不利的且代价高的。
此外,当发现适合将跳转指令与生成跳转条件的指令分开时,这是很方便的。一特定应用程序涉及将一分支地址送到FIFO以及将指令从一个展开函数传送出的情况。一些通常需要耗时的循环的函数代之以由一个展开函数来处理。在一个展开期间发送的指令数目可以被编程,在指令从展开函数传送期间一些参数例如寄存器地址可以自动增量。在展开函数编程期间,一个分支地址也被传送并存储在跳转地址FIFO中。
如果满足了分支条件,则完成向所述地址的跳转;分支条件的满足例如可以是找到了一个特定的串或值。如果未找到该串或值,则在所需的数被传送和执行后将执行跟着装入展开的指令。
通过使用跳转目标FIFO,在这种情况下地址必须只提供一次,并且微代码不必包含与在其它情况下必须包含的那么多位。
在图4中给出了一个例如涉及由图1所示的实施例的流程图,显示了路径13A的控制函数的流程。第二个路径13B的流程与之相似。
首先确定路径13A是否是当前路径110(如上所述,这里的当前路径表示它向微控制单元(MCU)19传送指令)。如果路径13A是当前路径,检验是否对一个条件跳转指令进行了译码,111A。如果是,则将条件跳转指令的地址放进安排给流水线路径13A的FIFO寄存器14A,112A。然后,以相同的方式,如果没有条件跳转指令被译码,检验是否执行了一个条件跳转,113A。
如果没有,过程重新开始,检验路径13A是否是当前路径,110,等等。另一方面,如果执行了一个条件跳转,检验是否进行了一个条件跳转,114A。如果是,则将路径13A设为非当前和非活动的,115A。活动是指该路径从程序存储器得到指令。此外,将路径13B设为当前路径,FIFO 14A和路径13A被充满。但如果没有条件跳转进行,则FIFO 14A步进一个位置,FIFO 14B被充满。此外,将路径13B设为非活动的,将路径13B充满,116A。然后与上面一样,过程重新开始,检验路径13A是否是当前路径,110A,等等。
另一方面,参看110,如果检测到路径13A不是当前路径,则过程如下。检验路径13A是否是活动的,111B。如果不是,检验在安排给路径13B的FIFO14B中是否有内容,114B。如果没有,过程进行到检验路径13A是否是当前的,110,等等。如果是,从FIFO 14B中的下一个地址开始执行,并将路径13A设为现用的,115B。然后如上所述检验路径13A是否是当前的,110,等等。
但如果在111B确定路径13A是活动的,则检验是否有一个条件跳转指令被解码,112B。如果是,将该条件跳转指令的地址放进FIFO 14A中。如果没有解码的条件跳转指令,112B,又重新开始,检验路径13A是否是当前的,110,等等。
本发明并不限于所显示的实施例,在不偏离附带的权利要求书的范围的情况下可以进行各种变化,并且该结构和方法可以以各种方式来实现,这取决于应用程序、功能单元、需要和要求等等。

Claims (29)

1.一种用于指令处理的结构,包括一个多级流水线结构(13A,13B;23A,23B)和一个为跳转指令存储跳转地址信息的存储结构(14A,14B;24A,24B;25A,25B),其中从至少一个指令源(PS)(11;21;31)向所述多级流水线结构(13A,13B;23A,23B)传送指令,
其特征在于,
存储结构(14A,14B;24A,24B;25A,25B)包括至少一个FIFO寄存器,条件跳转目标地址信息存储在所述至少一个FIFO寄存器(14A,14B;24A,24B;25A,25B)中,同时至少是跳转指令存储在所述流水线结构(13A,13B;23A,23B)中,从而将跳转目标地址信息从所述至少一个FIFO寄存器传送出来,所述流水线结构(13A,13B;23A,23B)包括至少一个第一和一个第二流水线路径(13A,13B;23A,23B),其中一个为执行指令的当前路径,另一个是非当前流水线,以这样一种方式进行安排,当进行了一个跳转指令时,流水线路径(13A,13B;23A,23B)进行切换,以使得非当前路径变成当前路径,反之亦然,使得允许连续地预取指令,而不考虑条件跳转的数目和是否进行了跳转。
2.如权利要求1所述的结构,其特征在于,
预取是基本顺序的。
3.如权利要求1所述的结构,其特征在于,
所述第一和第二流水线路径(13A,13B;23A,23B)中的一个被安排用于当前执行指令,另一个充满了一个指令队列。
4.如权利要求2所述的结构,其特征在于,
所述第一和第二流水线路径(13A,13B;23A,23B)中的一个被安排用于当前执行指令,另一个充满了一个指令队列。
5.如权利要求3中所述的结构,其特征在于,
非当前流水线路径从存储在FIFO中的跳转目标地址连续地预取指令。
6.如权利要求4中所述的结构,其特征在于,
非当前流水线路径从存储在FIFO中的跳转目标地址连续地预取指令。
7.如权利要求1所述的结构,其特征在于,
FIFO寄存器(14A,14B)的数目与流水线路径(13A,13B)的数目相同。
8.如权利要求1-7中的任何一个所述的结构,其特征在于,
有两个流水线路径,每个路径安排有至少一个FIFO寄存器(24A,25A;24B,25B)。
9.如权利要求1所述的结构,其特征在于,
在每个FIFO寄存器(14A,14B;24A,24B;25A,25B)中的位置数目相应于可以在每个流水线路径(13A,13B;23A,23B)的每个指令队列中提供的指令数目。
10.如权利要求1所述的结构,其特征在于,
在每个FIFO寄存器(14A,14B;24A,24B;25A,25B)中的位置数目低于相应流水线路径(13A,13B;23A,23B)中的指令数目。
11.如权利要求1所述的结构,其特征在于,
大约8个指令可以在每个流水线路径中排队。
12.如权利要求1所述的结构,其特征在于,
每个FIFO寄存器(13A,13B;23A,23B)包括2-4个存储跳转目标地址信息的位置。
13.如权利要求1所述的结构,其特征在于,
一个流水线路径是顺序路径(13A),一个是非顺序路径(13B),当发现第二个条件跳转指令时,将跳转目标地址存储在顺序路径(13A)的FIFO寄存器(14A)中,如果未进行跳转,则不中断地执行顺序队列的指令,非当前(非顺序)流水线路径使用顺序流水线路径(13A)的第一FIFO寄存器(14A)的连续的地址信息来预取指令。
14.如权利要求13所述的结构,其特征在于,
通过安排给非顺序路径(13B)的FIFO寄存器(14B),指令预取不会被一个条件跳转指令所中断。
15.如权利要求1-7中的任何一个所述的结构,其特征在于,
如果未进行一个条件跳转,则非当前路径被充满,使用存储在FIFO寄存器中的下一个地址开始预取。
16.如权利要求1所述的结构,其特征在于,
既可以使用来自一个安排给一特定路径的FIFO寄存器的地址信息也可以使用来自一个安排给另一个路径的FIFO寄存器的地址信息来完成对该流水线路径的预取。
17.如权利要求1所述的结构,其特征在于,
指令处理至少包括指令的读取、译码和执行。
18.如权利要求1-7中的任何一个所述的结构,其特征在于,
运用了跳转预测,在第一FIFO(24A,24B)中存储的是预测要进行的跳转的跳转目标地址信息,而在第二FIFO寄存器(25A,25B)中存储的是跳转目标地址信息,而不考虑其是预测要进行的还是不进行的,以便如果一个预测不进行的跳转进行了,则从第二FIFO寄存器(25A,25B)中执行预取。
19.如权利要求1所述的结构,其特征在于,
跳转目标地址信息包括绝对地址。
20.如权利要求1所述的结构,其特征在于,
包含在FIFO中的跳转目标地址信息包括相对地址信息,并且提供了用于存储真实地址的附加存储装置。
21.如权利要求1-7中的任何一个所述的结构,其特征在于,
对于无条件跳转指令,流水线路径不切换,但流程被中断,从前面的跳转地址向前进行。
22.如权利要求1所述的结构,其特征在于,
对于一个无条件跳转,路径被切换。
23.如权利要求1所述的结构,其特征在于,
具有分开的译码器(12A,12B;22A,22B),每个用于各流水线路径(13A,13B;23A,23B)。
24.如权利要求1所述的结构,其特征在于,
对于多个流水线路径有一个共同的译码器。
25.如权利要求1所述的结构,其特征在于,
它被用在一个远程通信系统的中央处理器中。
26.如权利要求1所述的结构,其特征在于,
允许基本顺序地且连续地预取指令,而不考虑跳转指令的类型。
27.在一个远程通信系统中的处理结构,包括一个用于指令的流水线处理的结构,该结构包括一个顺序地跟随着程序流的顺序流水线路径(13A,23A)和一个非顺序流水线路径(13B;23B),其中一个是当前路径,另一个是非当前路径,当在指令队列中发现条件跳转指令时,所述第二流水线(13B;23B)从跳转信息地址开始预取和解码指令,
其特征在于,
提供一个存储结构(14A,14B;24A,25A,24B,25B),该存储结构至少包括存储条件跳转目标地址信息的第一存储装置,非当前流水线路径从跳转目标地址预取指令,如果进行了一个跳转,则路径被切换(13A,13B;23A,23B),并且不考虑是否进行了跳转,从跳转地址预取信息的路径被充满,到其上的预取从存储装置中的下一个地址进行。
28.一种在一个处理结构的流水线中处理指令的方法,其中该处理结构在至少部分流水线中包括两个流水线路径(13A,13B;23A,23B),所述方法包括步骤:
-执行一个当前路径中的指令;
-将条件跳转地址信息存储在一个包括至少一个FIFO寄存器(14A,14B;24A,25A,24B,25B)的存储结构中;
-从FIFO中给出的地址向一个非当前路径预取指令;
-如果未进行一个跳转,充满非当前路径,继续从存储结构的一个FIFO中给出的下一个地址预取指令;
-如果进行了一个条件跳转,将当前路径切换为非当前路径,反之亦然,并且充满先前的当前路径,完成从存储结构的所述或一个FIFO寄存器向先前的当前路径的预取。
29.一种在一个处理结构的流水线中处理指令的方法,其中指令被传送到一个译码器(32),
其特征在于,
该方法包括步骤:
-将指令与条件跳转目标地址分开;
-将指令安排在一个流水线结构队列(33)中;
-主要将条件跳转目标地址存储在一个FIFO寄存器(34)中;
-如果进行了一个条件跳转,则采用来自FIFO(34)的输出地址作为下一个指令地址,并充满FIFO(34)和指令队列(33);
-如果未进行一个条件跳转,在FIFO(34)中移到下一个地址。
CN97195758.4A 1996-05-03 1997-05-02 在多级流水线结构中处理条件跳转的结构和方法 Expired - Fee Related CN1103960C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
SE96016852 1996-05-03
SE9601685A SE509499C2 (sv) 1996-05-03 1996-05-03 Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur

Publications (2)

Publication Number Publication Date
CN1222985A CN1222985A (zh) 1999-07-14
CN1103960C true CN1103960C (zh) 2003-03-26

Family

ID=20402437

Family Applications (1)

Application Number Title Priority Date Filing Date
CN97195758.4A Expired - Fee Related CN1103960C (zh) 1996-05-03 1997-05-02 在多级流水线结构中处理条件跳转的结构和方法

Country Status (9)

Country Link
US (1) US6330664B1 (zh)
EP (1) EP1029268B1 (zh)
JP (1) JP2000510623A (zh)
CN (1) CN1103960C (zh)
AU (1) AU2798397A (zh)
CA (1) CA2253560C (zh)
DE (1) DE69734403T2 (zh)
SE (1) SE509499C2 (zh)
WO (1) WO1997042567A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100337194C (zh) * 2004-03-26 2007-09-12 国际商业机器公司 减少指令高速缓存和流水线处理器之间等待时间的装置和方法
CN105190334A (zh) * 2013-03-14 2015-12-23 泰拉丁公司 使用多条处理路径进行器件测试的方法和装置

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE509499C2 (sv) * 1996-05-03 1999-02-01 Ericsson Telefon Ab L M Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur
SE510295C2 (sv) * 1997-07-21 1999-05-10 Ericsson Telefon Ab L M Metod vid processor för att hantera villkorade hoppinstruktioner samt processor anpassad att verka enligt den angivna metoden
US6948054B2 (en) * 2000-11-29 2005-09-20 Lsi Logic Corporation Simple branch prediction and misprediction recovery method
US6691306B1 (en) * 2000-12-22 2004-02-10 Lsi Logic Corporation Use of limited program space of general purpose processor for unlimited sequence of translated instructions
DE602005017657D1 (de) * 2004-08-30 2009-12-24 Texas Instruments Inc Verfahren und vorrichtungen zur zweigvorhersage und verarbeitung von mikroprozessoranweisungen und dergleichen
US7603544B2 (en) * 2004-12-23 2009-10-13 Intel Corporation Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation
US20060179277A1 (en) * 2005-02-04 2006-08-10 Flachs Brian K System and method for instruction line buffer holding a branch target buffer
US20080222393A1 (en) * 2007-03-09 2008-09-11 On Demand Microelectronics Method and arrangements for pipeline processing of instructions
US20080222392A1 (en) * 2007-03-09 2008-09-11 On Demand Microelectronics Method and arrangements for pipeline processing of instructions
US7941653B2 (en) * 2008-12-04 2011-05-10 Analog Devices, Inc. Jump instruction having a reference to a pointer for accessing a branch address table
CN102117198B (zh) * 2009-12-31 2015-07-15 上海芯豪微电子有限公司 一种分支处理方法
CN106990942A (zh) * 2011-06-29 2017-07-28 上海芯豪微电子有限公司 分支处理方法与系统
CN102508641A (zh) * 2011-11-04 2012-06-20 杭州中天微系统有限公司 低成本的程序计数器数据传输装置
US9513924B2 (en) * 2013-06-28 2016-12-06 Globalfoundries Inc. Predictor data structure for use in pipelined processing
CN103744642B (zh) * 2013-12-31 2017-01-18 天津国芯科技有限公司 用于改进处理器中直接跳转的方法及系统
CN104331268B (zh) * 2014-10-27 2017-05-03 杭州中天微系统有限公司 一种用于低功耗处理器的加快条件跳转执行的装置
US10139449B2 (en) 2016-01-26 2018-11-27 Teradyne, Inc. Automatic test system with focused test hardware
CN109324838B (zh) * 2018-08-31 2022-05-10 深圳市元征科技股份有限公司 单片机程序的执行方法、执行装置及终端
US10802854B2 (en) 2019-08-30 2020-10-13 Alibaba Group Holding Limited Method and apparatus for interpreting bytecode instruction stream
CN110704108B (zh) * 2019-08-30 2020-08-14 阿里巴巴集团控股有限公司 解释执行字节码指令流的方法及装置
CN111026442B (zh) * 2019-12-17 2022-08-02 天津国芯科技有限公司 一种cpu中用于消除程序无条件跳转开销的方法及装置
CN113220347B (zh) * 2021-03-30 2024-03-22 深圳市创成微电子有限公司 基于多级流水线的指令处理方法、浮点型dsp以及音频设备
CN113760366B (zh) * 2021-07-30 2024-02-09 浪潮电子信息产业股份有限公司 一种条件跳转指令的处理方法、系统及相关装置
CN113946539B (zh) * 2021-10-09 2024-02-13 深圳市创成微电子有限公司 一种dsp处理器及其循环跳转指令的处理方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0239081B1 (en) * 1986-03-26 1995-09-06 Hitachi, Ltd. Pipelined data processor capable of decoding and executing plural instructions in parallel
US4974155A (en) 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
US5131086A (en) * 1988-08-25 1992-07-14 Edgcore Technology, Inc. Method and system for executing pipelined three operand construct
JP2710994B2 (ja) * 1989-08-29 1998-02-10 三菱電機株式会社 データ処理装置
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5317700A (en) * 1992-05-01 1994-05-31 Unisys Corporation Program history for pipelined processor including temporary storage queues for storing branch addresses
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5758142A (en) * 1994-05-31 1998-05-26 Digital Equipment Corporation Trainable apparatus for predicting instruction outcomes in pipelined processors
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor
SE509499C2 (sv) * 1996-05-03 1999-02-01 Ericsson Telefon Ab L M Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur
JP3745039B2 (ja) * 1996-08-01 2006-02-15 株式会社ルネサステクノロジ 遅延命令を有するマイクロプロセッサ
US5949995A (en) * 1996-08-02 1999-09-07 Freeman; Jackie Andrew Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
US6055630A (en) * 1998-04-20 2000-04-25 Intel Corporation System and method for processing a plurality of branch instructions by a plurality of storage devices and pipeline units

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100337194C (zh) * 2004-03-26 2007-09-12 国际商业机器公司 减少指令高速缓存和流水线处理器之间等待时间的装置和方法
CN105190334A (zh) * 2013-03-14 2015-12-23 泰拉丁公司 使用多条处理路径进行器件测试的方法和装置

Also Published As

Publication number Publication date
DE69734403T2 (de) 2006-07-06
EP1029268B1 (en) 2005-10-19
AU2798397A (en) 1997-11-26
US6330664B1 (en) 2001-12-11
WO1997042567A1 (en) 1997-11-13
CN1222985A (zh) 1999-07-14
EP1029268A1 (en) 2000-08-23
SE9601685L (sv) 1997-11-04
CA2253560A1 (en) 1997-11-13
CA2253560C (en) 2003-07-22
DE69734403D1 (de) 2005-11-24
JP2000510623A (ja) 2000-08-15
SE509499C2 (sv) 1999-02-01
SE9601685D0 (sv) 1996-05-03

Similar Documents

Publication Publication Date Title
CN1103960C (zh) 在多级流水线结构中处理条件跳转的结构和方法
US20210406027A1 (en) Advanced processor architecture
US10338927B2 (en) Method and apparatus for implementing a dynamic out-of-order processor pipeline
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
US9529596B2 (en) Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits
Gonzalez et al. Processor microarchitecture: An implementation perspective
US20080133883A1 (en) Hierarchical store buffer
US20090300337A1 (en) Instruction set design, control and communication in programmable microprocessor cases and the like
KR101730282B1 (ko) 지연된 재구성된 프로그램 순서를 이용한 선택 로직
KR20180036490A (ko) 로컬 브랜치 디코더를 구비한 멀티이슈 마이크로코드 유닛을 포함하는 파이프라인형 프로세서
US20070143580A1 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
CN1364261A (zh) 用于在一个多线程处理器内进行线程切换的方法和装置
KR20160046331A (ko) 범용 유닛을 기반으로 하는 고성능 프로세스 시스템 및 방법
CN1282024A (zh) 具有静态转移预测支持的去耦取指令-执行引擎
US8667476B1 (en) Instruction grouping and ungrouping apparatus and method for an adaptive microprocessor system
WO2007027671A2 (en) Scheduling mechanism of a hierarchical processor including multiple parallel clusters
KR102635965B1 (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
US20070220235A1 (en) Instruction subgraph identification for a configurable accelerator
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
CN1900904A (zh) 用于改善按次序的处理器的性能的方法和系统
US6609191B1 (en) Method and apparatus for speculative microinstruction pairing
US10437596B2 (en) Processor with a full instruction set decoder and a partial instruction set decoder
KR100861073B1 (ko) 적응형 파이프라인을 적용한 병렬 처리 프로세서 구조
US20150370570A1 (en) Computer Processor Employing Temporal Addressing For Storage Of Transient Operands
JPH09512939A (ja) 超長命令語プログラムのオブジェクト・コードの互換性ある表記方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20030326

Termination date: 20140502