带同步流水线的微处理器的改进的制作方法

文档序号:6414573阅读:274来源:国知局
专利名称:带同步流水线的微处理器的改进的制作方法
技术领域
本发明涉及计算机系统,特别是一种通过流水线同步来提高系统性能的具有协处理器的微处理器计算机系统的方法。
由于大量的重要工作量受到有限的高速缓冲存储器影响,现在的微处理器的性能受到了严重的限制。有限的高速缓冲存储器影响包括所有引起性能降低,而在微处理器的一级高速缓冲存储器扩展到无限大时就可以消除的因素。在很多时候,微处理器停下来等待存储在外部存储器中的操作数所花的时间几乎等于执行指令所用的时间。在数据库操作和事务更新操作时尤其如此。
现在许多微处理器设计采取减少有限的高速缓冲存储器带来的性能恶化的方法。增大高速缓冲存储器容量、多级高速缓冲存储器、高速多芯片模块、失序执行以及指令预取等手段被广泛运用并被认为是最成功的。操作数预取也被成功地用于某些采用常规乱序处理和不采用常规乱序处理的工作当中。然而,操作数预取对于数据库操作和事务操作并不是特别有效。增加高速缓冲存储器可以减小有限高速缓冲存储器影响,但是这方面的进一步改进受到了不断增加的电路规模或芯片数目等带来的成本性能的限制。当前的乱序执行技术较大地减小了有限高速缓冲存储器影响,但是它们也降低了处理器的时钟频率而且增加了设计的复杂性。因而需要提供一种能充分减少实现从前认为可行的乱序执行设计的复杂性的改进的微处理器设计。
术语CPI指每条指令的机器周期数。
SFE是本发明提供的推测读取引擎。
uPCore表示一种在周期时间、设计复杂性和无限一级高速缓冲存储器的CPI之间进行折衷平衡的微处理器设计。
本发明提供了设计微处理器计算机系统的一种方法,特别是用于具有利用流水线同步提高系统性能的协处理器的微处理器计算机系统的一种方法。我们改进了对乱序执行的支持,并提供了在计算机系统,特别是具有微处理器和协处理器的计算机系统中使用大容量高速缓冲存储器和多级高速缓冲存储器的能力,其中协处理器提供推测引擎来减少了有限高速缓冲存储器带来的性能恶化,从而提高了系统的性能。
改进的最佳实施例通过采用多级流水线同步的寄存器管理提供了更好的微处理器支持。这些改进是通过提供一种具有与基本上顺序处理(在允许处理如指令预取和在需要时同时完成加载等超标量技术时)的核心处理器一起工作的若干执行部件的推测读取引擎(SFE)、一种乱序执行的方法、一种使一组微处理器同步的方法以及一种允许产生对SFE和微处理器核心(uPCore)所共享的层次存储器的推测存储器参考的寄存器管理方法来实现的。
uPCore和SFE都被看作处理部件。在具有第一处理部件和第二处理部件的计算机系统中系统对顺序指令流进行处理,这两种处理部件分别具有由它们自己的通用寄存器和控制寄存器的设置所决定的状态。在处理过程的任何时候,由第二处理部件来接着继续进行同一指令流的后续处理是很有用的,于是第一处理部件和第二处理部件可以对指令流进行并且有可能执行同一条指令,但是只允许所述处理部件中的一个(在最佳实施例中是uPCore)改变由第一处理部件和第二处理部件的状态共同决定的所述计算机系统整个结构的状态。
在最佳实施例中,第二处理部件将具有比第一处理部件更多的流水步,用以允许进行乱序执行,从而减少有限高速缓冲存储器带来的性能恶化,提高系统的性能。第二处理部件的处理以及结果的存储都不改变此最佳实施例中计算机系统的结构状态。结果存储在其通用寄存器或私有存储缓冲区中。在遇到无效的操作、停滞或计算出对于将协处理器作为乱序协处理器(SFE)处理具有特定效益时要进行两个处理部件状态的重新同步。
SFE与uPCore相互接口,因此,本发明尤其适用于通过SFE和位于同一硅片上的uPCore来实现。也可以采用多个硅片的实现方式,并且包括在本发明的当前实施例中。uPCore具有常规的结构并保持着最佳实施例中组合系统的结构状态。而在推广的镜像对应版本中保持结构状态的工作由另一处理部件来完成或是由两者共同完成。在此最佳实施例中,SFE进行的操作不会直接地改变uPCore的结构状态。SFE用来产生将uPCore要用到的指令和操作数预先填充到组合系统的高速缓冲存储器中的存储参考。这些改进扩展了由较早的寄存器重命名方案(如在美国专利4,901,233(此后称为Liptay)以及美国专利4,574,349所提出的)所可能达到的系统性能。
这些以及其它的一些改进在下面的详细描述中作出了说明。为了通过由国际商用机器公司首先提出的广泛地实现的以前的设计的优点以及特征来更好地理解本发明,请参考下面的说明以及附图。


图1A和图1B提供了与IBM的美国专利Liptay 4,901,233所提供的同样的描述;来说明了IBM大型机以及Intel的Pentium、Digital的Alpha、Sun的UltraSparc之类的微处理器所广泛使用的以前成果的限制。
图2以图解的形式对最佳实施例进行了概述。
图3举例说明了SFE的细节和SFE与存储缓冲区、高速缓冲存储器、uPCore之间的接口。还举例说明了SFE通过SFE和uPCore所共享的高速缓冲存储器来发送指令和取操作数的优选硬件。
图4更详细地说明了uPCore和SFE之间的同步单元。
图5更详细地说明了对Liptay重命名发明的改进以允许uPCore和SFE之间同步的寄存器。
图6说明了用于uPCore的优选硬件。
图7更详细地以数据流图的形式说明了推测引擎和微处理器uPCore的相互作用,举例说明了为提高性能所采取的方法。
(注意为了举例说明方便,附图可能被分成若干部分,按照约定,在使用多页的时候我们将附图的上部放在第一页,后面的各页接着说明其后的部分。)在对本最佳实施例进行详细考虑之前,可能有必要通过举例来说明由IBM首先提出并在美国专利Liptay 4,901,233中说明的乱序微处理器设计的典型的现有技术。图1说明了这样一种现有技术乱序微处理器设计的典型技术,最初是由美国专利4,901,233进行说明的,它教导使用了寄存器管理系统(RMS)。RMS允许使用比结构中所命名的寄存器更多的物理寄存器作为通用用途和程序分支之后的精确恢复。使用寄存器管理系统本质上是为了实现乱序执行。乱序执行能够显著地减少有限高速缓冲存储器影响带来的性能恶化这一点是公认的。美国专利4,901,233所说明的最佳实施例包括了对采用以前技术的顺序处理器设计的基本流水线的改进。要求这些改进将RMS集成到整个系统中并且导致形成更长的指令流水线,如更多的流水步或是每一流水步包含比顺序设计指令流水线更多的逻辑。美国专利4,901,233的最佳实施例实现了对先前的顺序设计在无限L1高速缓冲存储器CPI和有限高速缓冲存储器CPI方面的改进。本发明并不排除使用乱序技术来改进无限L1高速缓冲存储器CPI,但也允许限制它们的使用来获得设计复杂性和主指令执行流水线的乱序支持两方面更好的平衡。本发明重点在于使用乱序技术来减少有限L1高速缓冲存储器CPI的增加而不增加uPCore流水线长度和流水线中每一流水步的长度。由于在数据库和事务工作量方面,改进的周期时间比美国专利4,901,233提供的在无限L1高速缓冲存储器CPI方面的小规模改进提供了更好的性能,因此总体的结果是得到了比美国专利4,901,233更好的系统性能。此外,本发明通过在uPCore作为顺序设计实现时,将寄存器管理系统从主指令处理流水线中独立出来,使得在涉及乱序指令处理的所有问题的设计复杂性有较大的降低。由于这一点,我将说明美国专利4,901,233所实现的图1A和1B。
Liptay发明是一种用于特定数目可寻址(逻辑)寄存器阵列(如通用寄存器)例如n个通用寄存器结构设计要求的计算机系统的寄存器管理系统。就像所说明的那样,Liptay设计中的许多部件将在我的系统中用到。一个具有m寄存器的寄存器阵列(RA),其中m大于n,被用来实现n个通用寄存器的功能。作为一个举例说明的实施例,根据已知的具有16个通用寄存器的IBM System/320结构的系统在美国专利4,901,233中作出了说明,并且直到今天本系统仍然在当前的S/390机器中采用。RA提供了动态分配特定的RA位置来完成结构寄存器的功能。当特定的寄存器分配的功能完成之后,RA中的位置被释放,并在合适的时候作为同一GPR或其它的结构GPR重新分配。
本寄存器管理系统并不依赖于整个计算机结构,而是可以在其它不同的环境中实现,就像在现在的微处理器设计中使用一样。因此,不论图1A和图1B中所说明的计算机系统是大型机的处理器还是微处理器,都相应地具有一个与高速缓冲存储系统14相连的主存储器12。高速缓冲存储系统14可以以任何方式组织,在本例中是由与主存储器12相连的分别处理指令操作和数据操作的指令高速缓冲存储器16和数据高速缓冲存储器18所构成的。虽然图1A和图1B中并没有说明,能提供在层次排列和这种存储器设计中存储器速度和容量的优势的多级高速缓冲存储结构的层次存储设计仍然包括在本发明中,就像图2所举例说明的那样。
如图1A和图1B所示,指令从指令高速缓冲存储器16通过指令缓冲单元20传到指令寄存器单元22。为了方便说明,指令寄存器单元拥有不止一个独立的指令寄存器,而是可以有2、3或者4个这样的寄存器。
作为执行单元的通用寄存器可以按照所执行的功能类别来分别设计,如算术单元和逻辑单元,标量单元和矢量单元,定点单元和浮点单元等等。由于通用执行单元的任意排列用到通用寄存器(GPR),本发明同样适用于计算机中通用执行单元的不同数目、功能的各种排列和设计。
为了方便说明,Liptay系统与分别标为24和26的通用执行单元(GPE)1和2一起说明。通用执行单元24的输出与存储缓冲区单元28相连,而存储缓冲单元的输出与数据高速缓冲存储器18相连。通用执行单元24实际上可以为单个的执行单元,也可以为组合执行单元,如实施例中所说明的,单元24产生送往存储缓冲区28的结果,在存储缓冲区28中这些结果被一直保持到指令执行完毕,并且之后可能存储到内存中。根据本发明,通用单元26的输出与通用寄存器组(RA)30相连。通用单元26对指令进行操作,产生需要在寄存器中可使用而不是立即存储的结果。
一个指令堆栈或是指令队列31被用来从指令寄存器单元22接收指令,并直接将它们适应地送至GPE 24或26。不同类型的多个执行单元可以与一个单独的RA和寄存器管理系统一起使用。RA30包括32个可动态指定的实际寄存器(物理寄存器)来完成结构所认可的16个GPR的功能。
RA30由寄存器管理系统(RMS)32通过控制总线34控制,并向其提供状态信息。RMS32被连接到其它的几个系统上,用来接收或提供不同类型的状态信息。一个中断控制部件36与指令寄存器22、RMS32以及RA30相连来进行正确的中断处理并保留所需要的状态信息。
RMS32与指令寄存器单元22和GPE24、26相连来从指令的执行中得到后续的指令以及为输入操作数、输出操作数进行寄存器的分配。
图1A和1B中的计算机具有一个与指令寄存器单元22相连并从指令寄存器单元22接收指令的指令队列,该指令队列输出到指令地址计算部件(I-ACE)52。I-ACE 52还与RA30相连并直接从RA30接收输入,I-ACE52的输出与指令高速缓冲存储器16相连。指令队列50与RMS32相连来提供状态信息。
图1A和1B中的计算机具有一与指令寄存器单元22相连并从指令寄存器单元22接收输出的地址队列60,该地址队列60的输出作为输入连接到数据地址计算部件(D-ACE)62。D-ACE 62的其它输入从RA30获得,D-ACE 62与RMS32相连来提供状态信息。
D-ACE 62的输出与地址读取队列64相连,地址读取队列64具有一个作为输入与数据高速缓冲存储器相连的输出和一个作为输入与地址存储队列66相连的输出。地址存储队列具有一个输出连接到数据高速缓冲存储器,并且还与RMS32相连来提供状态信息。
计算机具有一个与RMS32相连来提供状态信息的浮点算术单元70。就像将要解释的那样,有一点很重要,RMS32可以与跟RA30不关联的单元和寄存器一起工作。例如,一个RMS可以与多个寄存器阵列一起工作。更具体地说,一个RMS可以控制两个分别与多个相同或不同类型的指令执行单元相连的RA。
浮点单元(FPU)70的输入由浮点指令队列72和浮点数据寄存器单元74提供。浮点指令队列的输入从I-REG22得到。浮点数据寄存器单元的输入从数据高速缓冲存储器18和FPU70得到。浮点单元70的输出与存储缓冲区单元76相连,存储缓冲区单元76的输出作为数据高速缓冲存储器18的输入与其相连。
现在更详细地考虑本发明,可以看出,将说明的系统对图2所说明的具有大容量高速缓冲存储器和多级高速缓冲存储器的系统很有效。本发明提高了已有高速缓冲存储器的性能,推测预取机制提高了每一级高速缓冲存储器的命中率。如果某些情况下,通过SFE的硅片规模使得片内高速缓冲存储器得到增加,总体性能方面的效益应该可以通过所能够获得的来衡量。在某些情况下,这一比较不一定必须正确,例如L1高速缓冲存储器的情况,对L1高速缓冲存储器来说通常是周期时间的约束是关键的,而不是面积约束。初步的结果表明,使用大小大约为片内二级高速缓冲存储器的1/4到1/2的SFE大约能将性能提高15%到20%。
图2的最佳实施例如图2所说明的最佳实施例所示,部件之间的互连是通过不同的接口实现的,如uPCore(200)和同步单元(SU201)、SFE(202)以及指令和数据高速缓冲存储器(203)之间的接口。高速缓冲存储器内存系统可以用任何合适的方法来组织,但在本例中是与层次存储器中主存储器204相连的指令和数据的组合高速缓冲存储器203一起说明的,层次主存储器通过提供按层叠排列的多级高速缓冲存储器(如203′、203″)来获得存储器规模和速度的优势,这一存储器设计包含于本发明中。分开的指令高速缓冲存储器和数据高速缓冲存储器同样也包含于本发明之中。
任何数目的uPCore 200…200′…200″可以与任何数目的SFE202…202′…202″一起使用。一个SFE可以在任何给定的时刻与一个单独的uPCore相关连,也可以在同步功能完成之后关联到另外的uPCore。每个SFE与一存储缓冲区和一SU相连。例如201′、202′以及205′一起使用来提供所要求的SFE功能。一个uPCore可以同时与任何数目的SFE相关连。最佳实施例中具有一个SFE和若干个uPCore。
然而,在进行最佳实施例的详细硬件说明之前,在uPCore以其它的方式工作时,图2也可以实现另外一种上位的实施例。上位的图2也实现了此处说明的功能,但是其结构控制在以镜像方式实现相同功能的200…200′…200″和202…202′…202″之间交替轮换。
所以最佳实施例是可替换的上位的实施例的一个特殊最佳实施例,在上位的实施例中,第一个传统的处理部件200,200′,200″和第二个处理部件202,202′,202″一起工作,交替地控制机器的结构状态。在我们的图2所示的最佳实施例中,第一处理部件控制结构状态,顺序处理顺序指令流中的大部分指令。所以一般地,在计算机中处理顺序指令流的方法包括一个第一处理部件和一个第二处理部件,每一个处理部件具有由它自己的通用寄存器和控制寄存器的设置所决定的状态,开始时所述顺序指令流的初始化指令分配给所述处理部件中的第一个,如200。所述顺序指令流的处理通过使用所述处理部件中的第一个来继续进行,所述处理部件中的第一个将任何结构状态的改变迅速转送所述处理部件中的第二个。然而,在所述第一个处理部件(如uPCore 200)处理所述顺序指令流的任何时候,使第二处理部件(如SFE202)来开始继续对同一指令流进行处理是十分有用的,于是,计算机系统的第二处理部件恢复已经转送的状态。通过由第二处理部件对同一顺序指令流进行处理来继续同一顺序指令流的处理。
然后第二处理部件将第一处理部件所要求的计算机系统结构状态的任何改变发送给第一处理部件。
不论是轮流控制的可选择实施例还是我们的最佳实施例,第一处理器和第二处理器可以处理同一条指令,但是所述处理部件中只有一个能够改变由第一处理部件和第二处理部件的组合决定的所述计算机系统的全部结构状态。在优选实施例中,这一组合是由第一处理部件所决定的。虽然在另外的实施例中,系统的结构状态可以由第二处理部件的状态完全决定或部分决定,但本最佳实施例中,第二处理SFE的工作并不改变系统的结构状态。uPCore流水线顺序处理大多数顺序指令,同时SFE对指令进行处理来填充uPCore和SFE共享的高速缓冲存储器并尽可能与uPCore重新同步,uPCore在SFE处理指令和SFE的结果存储到独立的私有存储缓冲区时控制结构状态,此时最佳实施例中的有限高速缓冲存储器的影响就得到减小。
在替换的控制实施例中,而不是真的优选实施例中,结构状态的控制不断来回切换。
在上述方法中,每一个所述处理部件仍然具有由它自己的通用寄存器和控制寄存器的设置所决定的状态,并且每个第一处理部件和第二处理部件在所述顺序指令流的处理过程中有可能执行同一条指令,但只允许所述处理部件中的一个来改变由第一处理部件和第二处理部件的组合确定的所述计算机系统的全部结构状态,但是,结构状态的控制可以由第一处理部件交给第二处理部件也可以由第二处理部件交回给第一处理部件。这一过程仍然通过使用所述的处理部件的第一个处理部件从将第二处理部件所要求的计算机系统中的任何改变发送给所述第二处理部件时开始,并将这些发送的改变积累起来用于所述第二处理部件将来的结构状态,来对所述顺序指令流进行处理。从而,决定了当所述第一处理部件处理所述顺序指令流的任何时候,具有所述第二处理部件来接着继续处理同一指令流是很有用的,第二处理部件恢复累积的先前从所述第一处理部件发送来的结构状态,并通过处理所述顺序指令流来继续处理同一指令流。当第二处理部件控制所述顺序指令流的处理时,它将第一处理部件所要求的计算机系统的结构状态的任何改变发送给第一处理部件,以供将这些改变积累起来形成将来要用到的结构状态。然后控制可以再次更换,当所述第二处理部件处理所述顺序指令流的任何时候,具有所述第一处理部件来接着继续处理同一指令流是很有用的,第一处理部件恢复累积的先前从所述第二处理部件发送来的结构状态,并处理所述顺序指令流来继续处理同一指令流。
现在第一处理部件和第二处理部件可以作为多处理器工作。同样,如200,200′和200″所说明的,第一处理器可以包括作为多个处理器与单个SFE或是多个SFE工作的若干第一处理部件。然而,多个SFE不能与单个的uPCore一起使用。那就是说,一个多处理器可以与一组一个或多个第一处理部件和至少一个第二处理部件的组合一起工作。在最佳实施例中,同步的能力以一个同步单元SU201,201′,201″的形式提供给每一个第二处理部件。该SU决定了第二处理部件SFE202,202′和202″何时开始处理正在被第一处理部件uPCore处理的同一条指令。所以,为每一个SFE提供了一个同步单元,SU决定了SFE何时开始处理同一条指令或正在由uPCore处理的指令流中的另一条指令。SU决定了SFE处理部件对指令的处理何时应该被停止或是被忽略。这一决定是由计算出来的整个计算机系统的利益决策和第一处理部件和第二处理部件提供给同步单元的输入共同作出的。该输入可以在当前提供给同步单元,或从系统存储的信息得到,如图4中所示,其中计数器407和408提供这一信息。
如果第一处理部件在处理指令时有一个停滞决定,如在图7的709中,同步单元将决定第二处理单元何时开始处理它所处理的同一条指令。当处理指令时出现了第二处理部件所不能处理的操作时,如得不到合法的操作数(707),在最佳实施例中,同步单元将通过SFE和uPCore状态的重新同步来决定何时将第二处理部件的状态与计算机系统的结构状态同步。
如果检测到第二处理部件在处理指令流时不能给计算机系统带来任何好处(特定的效益判断208),则同步单元决定何时将第二处理部件的状态与计算机系统的结构状态重新同步。图7,707,708,709中所说明的判断不但决定何时存在由同步单元实现的重新同步,而且决定用哪一个处理部件来重新同步状态。处理器对指令进行预处理,SFE将它的结果存储到它的私有GPR或存储缓冲区205,205′或205″中。这一存储过程并不影响其它处理部件的结构状态,SFE可以处理下一条指令或是处理流中正在由所述第一处理部件处理的同一条指令,SU可以决定所述第二处理部件何时应该被停止或取消,这些独立的同步允许SFE提高处理器处理指令流中大多数指令的性能。第一处理部件从被所述第一处理部件和第二处理部件共享的用于读取的数据和指令高速缓冲存储器中取出数据。
最佳实施例的方法允许SFE能作为乱序处理器用于对所述顺序指令流进行预处理来为第一处理部件填充高速缓冲存储器。在重新同步期间,当所述第二处理部件对指令的处理应该停止或取消时,第二处理部件把重新同步之前为第一处理部件进行的指令流预处理的所有结果和局部结果清除。
因而可以理解,在最佳实施例中,除了私有存储缓冲区205之外,SFE、同步单元和两个uPCore(代表一组uPCore)也用于上面所讨论和图7中所说明的方法中。可能的状态为运行(A),清除(B),SFE与uPCore200的重新同步(C),以及SFE与uPCore 200′的重新同步(D)。SFE的初始状态为(C)。在状态(C)中,SFE接收最近从uPCore 200中退出的指令地址以准备在该地址开始乱序执行。同步单元201通过每一个uPCore与SFE运行来继续监控SU与uPCore之间的接口以指出uPCore由于一次高速缓冲存储器未命中而停止。uPCore运行并通过接口210不断地查询高速缓冲存储器存储器和主存储器。指令和操作数通过接口从指令和数据高速缓冲存储器203返回到uPCore。
从重新同步到运行(状态A)的状态转换发生在SFE的寄存器管理系统将与uPCore相关的SRAL的内容装入到SFE的DRAL中的时候。在进入SFE运行状态时,SFE在最近通过接口206从uPCore 200中接收到的指令地址开始指令的读取和执行。SFE的GPR状态表示了同一指令地址指向的指令退出时uPCore的状态。当SFE为运行状态时,通过接口206接收的GPR结果将继续写入通用寄存器阵列,但寄存器管理系统会将它们关联到一个同步寄存器分配表中。它们将只会在同步事件之后被SFE中执行的指令所使用。这样,SFE保持了它所关联的每一个uPCore的GPR状态的独立的映象,它可以在以后对其进行访问。同时,SFE的RMS只使用SFE的执行结果来更新用于SFE的指令流执行的GPR的映象。
在SFE进入运行状态之后,uPCore继续按照它自己从高速缓冲存储器203中读取的速度执行,高速缓冲存储器203中包括由uPCore常规处理部件在使用之前预先提供指令和操作数给高速缓冲存储器203的推测引擎SFE处理部件存储参考,而SFE将开始执行乱序指令。在最佳实施例中,uPCore可以专门地设计为一个顺序处理器,或者经过顺序处理最优化的处理器,或能够处理有95%的指令不能从预测中获益的指令流中的指令的处理器。在一级高速缓冲存储器未命中时会出现一次流水线停滞。由于SFE的乱序执行能力,SFE可以跳过引起停滞的指令继续工作。在SFE运行的时候,它产生了通过接口207送到指令和数据高速缓冲存储器和通过接口208送到存储缓冲区的读取参考。如果高速缓冲存储器和存储缓冲区中都没有合适的数据时,就出现了高速缓冲存储器未命中。如果在存储缓冲区中没有相应的入口,指令和操作数就通过接口207返回到SFE;而如果有相应的入口就通过接口208返回。SFE存储参考没有送到指令和数据高速缓冲存储器而是送到了存储缓冲区。这样,SFE存储指令的结果可以被SFE中后面执行的指令所用到而不必改变uPCore和高速缓冲存储器的结构状态。所有SFE的存储都保存在存储缓冲区中。
同步单元通过接口209监测SFE的活动。如果SFE的执行超出了支持范围的指令或是遇到了设计时没有处理的或者是非法的中断或异常,这些都会在接口209指出,同步单元然后将SFE转入图7中的清除状态(B)。同步单元同样监测uPCore的指令解码过程和SFE的指令退出过程。如果没有其它的有效操作707,或者检测出SFE没有提供推测预取获益708,SFE就被假设落在uPCore的执行后面太远了,这样也同样要进入清除状态(B)。如果当前与该SFE相关联的uPCore仍然停滞在决策点(709),那么会暂缓进入清除状态,SFE仍然处理运行状态。SFE收益可以用于决定SFE何时进入清除状态的其它说明包括在本发明中。
一旦SFE进入了清除状态(B),它将一直保持着一状态直到所有指令、指令的部分以及部分结果已经从SFE的数据通路和控制结构中清除。在此期间,没有任何请求被送到指令或数据高速缓冲存储器。当这些已经完成706时,SFE离开清除状态,能够进入C和D两个状态之一。SFE即可以与uPCore 200也可以与uPCore 200′进行重新同步。由SFE决定的在这两个操作之间的选择704可以基于一系列因素,这些因素都包括在本发明之中。最佳实施例中使用了一个简单的指示来指出哪一个uPCore是最后与SFE同步的,在哪种情况下SFE将使用其它的uPCore来进行同步。使用其它的算法有可能出现同一个uPCore被通过决策点704来选择多次。一旦重新同步完成,状态就会再一次改回为运行状态,又重新开始另一个周期。
推测引擎(SFE)SFE使用常规的乱序处理并另外采取了特定的称为超标量技术的功能或技术来产生推测的操作数和指令预取。这些技术包括寄存器重命名,指令重排序、完成计分等等。SFE具有很多种不同的可能的实现方法。理想设计的标准将包括与当前乱序设计大大不同的周期时间和面积约束。图3说明了SFE和它与系统其它部件的接口的细节。这一过于简化的流程用来突出该具有通用寄存器阵列和指令处理流水线的寄存器管理系统的新颖的相互作用。这一点与图1A和图1B相似,但是存在着重要的区别。首先,存在着构成GRP和SFE之间接口206的一部分的附加接口306。第二是当前发明的RMS301被改成包括同步寄存器配表(SRAL)的使用。第三是对存储器层次的存储被送到存储缓冲区205而不是像美国专利4,901,233即Liptay中说明的指令和数据高速缓冲存储器。SFE数据流程继续通过图1A和图1B从美国专利4,901,233即Liptay如图3所示的那样到达存储缓冲区205。
接口302、303、304和305包括接口209的一部分,分别传送同步地址、清除指示、重新同步指示和指令解码指示。同步地址由SFE在重新与一uPCore的结构状态同步之后用作指令读取和执行的起点。清除SFE指示将使得SFE抛弃所有指令结果和局部结果,并清除SFE存储缓冲区中的内容。重新同步指示由SFE用来决定应该与哪个uPCore进行同步,并决定重新同步应该何时结束。SFE使用指令完成接口来指示SU指令已经解码成功。SU使用这一信息决定SFE是否提供了推测读取效益。SFE通过接口307向指令和数据高速缓冲存储器发送指令和操作数读取请求,并通过接口308向存储缓冲区发送读取请求。通过接口307发送的推测读取由SFE在uPCore在停滞之后恢复执行时将进行同样的读取请求时预先实现。由于要得到的目标已经被访问过并装入到最近等级的高速缓冲存储器中,从而uPCore缩短了这些读取请求的响应时间。
由于SFE独立于uPCore的结构状态,乱序指令处理的实现与大多数结构无关。这改进了进度并减少了整个设计的周期时间的影响。与SFE关联的实现现在可以与uPCore完全分开。SFE可以以要满足不同的大指令集的需要的uPCore所无法采用的方式来进行优化来产生推测读取。SFE并不需要执行任何不常用的指令、异常处理操作或恢复算法。遇到这些不常用的操作时,SFE将停止指令流的执行并通知同步单元。如果不常用的操作继续存在,uPCore最终将离开停滞状态,以更简单的顺序设计的方法对它进行处理。
必须对SFE设计进行优化来解码并迅速发布大量的指令而不必只对无限CPI是正确的。SFE可以被设计为比先前的设计具有更长的指令流水线而不必考虑无限高速缓冲存储器性能影响。包括SFE和uPCore的整个系统中无限一级高速缓冲存储器的性能,只依赖于uPCore流水线而不是SFE。
在本发明的设计中,操作数预取不需要由uPCore实现,如果需要,SFE系统的使用从uPCore中消除了这一特征和它的相关的复杂性。有几种情况中操作数预取可能需要保留在uPCore中,这是与当前发明相一致的。
对RMS的创新改动的细节在根据本发明的最佳实施例的图5中进行了说明,SFE为与该SFE相关的每一个uPCore维护一个同步寄存器分配数组(SRAL)。本发明的寄存器管理系统,包括SRAL使用的扩展,不依赖于整个计算机结构并且可以在不同的环境中实现。因此,不用限制本发明的范围,根据具有16个通用寄存器(GPR)的IBM系统390结构对图3中根据本发明说明的SFE进行了说明。GPR寄存器阵列(RA)与RMS一起提供动态的特定寄存器分配和特定的RA状态分配来完成结构寄存器的功能。当一个特定的寄存器的功能完成时,RA中的状态被释放,并且可以作为同一GPR或其它GPR在适当的时候重新分配。
RA包括48个可动态分配的实际(物理)寄存器来完成本发明的该实施例中认可的16个GPR的功能。一个解码寄存器分配表(DRAL)在指令解码时被用来将GPR分配转化为RA分配。当每一个指令解码时,在DRAL中查找GPR的参考来决定将RA的什么状态分配给GPR,并在分配新的RA状态来接受结果时,DRAL被更新来反映这些分配。这样,DRAL指向使用GPR的每一条指令来找到分配给最近的指令来参考该GPR的RA状态。
备份寄存器分配表允许分别对一、二或者三个条件分支进行处理而不必等待。它的结构与DRAL相似,并以每周期将DRAL的整个内容复制到BRAL的方式与DRAL相连或反之亦然。这些传输由逻辑单元505进行控制。当遇到一个条件分支的时候使用BRAL将DRAL的内容保存以免所猜测的分支不正确。
一个数组控制表(ACL)与RA和SFE的部分相连来接受信息和发送控制信息。逻辑单元505控制ACL并调整ACL、DRAL以及BRAI的操作。对于每一个支持GPR的RA都存在一个ACL寄存器来记住与该RA有关的状态信息。对于数组中的每一个状态都有对应的一个入口。
寄存器管理系统所附加的SRAL对于SFE的功能和本发明来说都是关键的。SRAL具有与DRAL相同的结构,并以每周期将SRAL的整个内容复制到DRAL的方式与DRAL相连。
与SFE关联的每一个uPCore都被提供了一个SRAL。当uPCore产生GPR和CR的更新时,它们的更新被通过接口206发送到SFE。结果可以延迟一个周期,从而将uPCore的周期时间影响减到最小。GPR的更新被写进RA并更新与源uPCore相关联的SRAL来指向RA的位置。由于当前实施例中的uPCore通常以顺序执行设计的方式运行,接口206中的GPR的更新反映了退出的指令的GPR的更新,从而随时可以写入SRAL当前所指示的同一个RA。在重新同步操作期间,SRAL必须与16个新的RA入口一起提供以保证可以容纳从uPCore送来的连续的更新。在当前的实施例中,由于同步操作通常在释放所有RA入口而不仅是与SRAL相关联的RA入口的SFE清除操作之后,所以这一点不成问题。复制在SRAL中的SFE中的uPCore的GPR状态通常有最少1个周期的延迟。当SFE需要与uPCore同步时,将SRAL的内容简单地移到DRAL中就可以完成这一任务。这一操作与Liptay中分支预测失败时使用BRAL来恢复微处理器的状态相似。
本发明的SRAL的功能与Liptay中的BRAL有着显著的不同。首先,SRAL中写入的是其它指令处理流水线所发送的GPR更新。第二,引起SRAL中内容转移到DRAL中的原因与Liptay中引起BRAL中内容转移到DRAL中的原因不同。在Liptay中是由分支预测失败所引起的。在本发明中,没有产生预取效益的指示将引起这一转移。因而,可以理解在SRAL的功能方面美国专利4,901,233以及其商业实施例是与本发明完全不同的。BRAL不能用于这一目的,在本发明中它用于和Liptay中所介绍的相同的功能,在检测到分支预测错误之后恢复处理器的状态。第三点重要的区别是,当SRAL中的内容转移到DRAL时,SRAL中的每一入口被马上改变,来指向16个新的RA状态。在Liptay中,在进行未决定的分支的解码时,BRAL将直接从DRAL中装入。
可以使用不止一个的SRAL来允许SFE与更多的uPCore同步。两个或更多的uPCore可以使用同一个SFE来提供预取效益,但不能同时使用SFE。每一个附加的SRAL必须由相关的uPCore的GPR结果总线和存储缓冲区来协同工作以实现同步。
uPCore在当前的最佳实施例中uPCore设计是一个常规的微处理器(较为适合的是当前的超标量设计,如Motorola和IBM推出的PowerPC 601,但也可以为更老一些的设计如Intel 286)。大家都知道,在计算机设计领域中系统可以拥有不止一个通用执行单元。例如,通用单元可以按照所完成的功能类型来设计。虽然图中只说明了uPCore中的两个这样的通用执行单元,但任何数目通用执行单元的使用都包括在本发明中。除了图6中所说明的外,本发明中的uPCore部分不要求对传统微处理器设计进行任何改动。图6说明了最近退出的指令的地址是怎样锁存在604并通过接口604送到SFE的。通用执行单元601和602的GPR结果总线也锁存在603并通过接口603′送到SFE。图6中说明的uPCore是一顺序设计,但使用任何乱序设计,如其它当前商业用途的微处理器,也同样包括在本发明之中。
同步单元同步单元(SU201)包括了所有要求的逻辑功能来控制uPCore和SFE的交互。SU由一状态机和相关的输入寄存器404、405和406组成。状态机的输出包括到控制清除功能和输入到寄存器管理系统的SFE的接口209。到RMS的线负责在同步操作时控制将SRAL装入到DRAL。同步单元包括用来检测SFE是否为整个系统带来了预取效益的逻辑功能。当前实施例使用两个指令计数器408和407来实现这一功能。第一个计数器在uPCore每退出一条指令时增量。第二个计数器在SFE每解码一条指令时增量。这两个计数器在重新同步操作期间被重新设置为0。重新同步之后,将对这两个计数器进行比较来决定SFE是否有机会产生对uPCore由帮助的推测读取参考。如果SFE不能在uPCore执行前足够长的时间将指令解码,那么将不可能带来效益。两个计数器的比较提供了一个不太精密但是足够的可能产生效益的指示,并可以作为图7中特定效益决定点708的输入。当前实施例采用阈值10来实现这一功能。当SFE解码的数目没有比uPCore退出的数目至少大10时,同步单元将指示没有效益。
同步单元同样保留一个指示来指出与SFE当前相关联的是哪一个uPCore。每一个SFE具有一个独立的同步单元但是每一个SFE可以与任何数目的uPCore相关联。当前实施例中一个SFE与两个uPCore相关联。
CP和SFE交互的其它扩展CP和SFE的交互还可以有其它的扩展。在一个例子中将包括使用SE来更新由SE和CP共享的分支预测表。SE同样可以向CP提供关于可能的指令异常和其它可能使得CP避免流水线中断的条件的指示。响应SFE读取请求所读取的指令和操作数可以直接发送到uPCore。从而在推测请求为精确的时候,数据将离uPCore的通用执行单元和指令解码逻辑更近。在一些情况下,这将很大程度上减少有限高速缓冲存储器的影响。
在对本发明的最佳实施例进行了说明之后,大家可以理解,有经验的技术人员,现在或是将来都可能在本发明的范围内进行各种不同的实现或改进。
进行不同实现的人们将会对所说明的性能分析感到满意。该性能分析说明了乱序(或连续)执行在减小有限一级高速缓冲存储器CPI时比在减小无限一级高速缓冲存储器CPI时提供了更大的效益。当前的技术趋势表明有限高速缓冲存储器影响正在迅速增长,从而有限一级高速缓冲存储器CPI的效益比无限一级高速缓冲存储器CPI的效益更重要。
本发明所详细说明的关于支持核心微处理器的推测读取引擎(SFE),以及在允许对SFE和微处理器核心(uPCore)所共享的层次存储器的推测内存参考时它们与维持一致操作的结构状态的核心微处理器之间的交互的规定,对那些想使用乱序执行来获得对先前技术设计的显著简化或对没有采取乱序执行的先前技术设计进行显著的改进的人们将会是十分有帮助的。理想地讲,本发明允许为了寻求更好的系统性能而使用乱序执行的更优化的设计均衡。本发明允许微处理器优化成更高的频率、更低的复杂性以及更小的一级高速缓冲存储器CPI而不必对主流水线增加太多乱序执行复杂度,与有些当前设计中采用的不断增加的深度步长相反。
同时,协处理器可以使用乱序执行技术来在寻求减少微处理器和协处理器的有限高速缓冲存储器影响方面取得更大的范围。协处理其中乱序执行的复杂度可以通过协处理器不需要支持全部结构指令或与指令执行相关的全部异常和中断这一事实来减小。以下的权利要求应该解释为包括更多的改进并保持最先公开的发明的适当保护。
权利要求
1.一种在具有第一和第二处理部件的计算机系统中处理顺序指令流的方法,每一个所述处理部件具有由自己的通用寄存器和控制寄存器决定的状态,其特征在于,包括以下各步将一条所述顺序指令流初始化指令分配给所述处理部件中的所述第一个,使用所述处理部件中的所述第一个来继续对所述顺序指令流进行处理,并将计算机系统的结构状态的任何改变发送到所述第二处理部件,并且在所述第一处理部件处理所述顺序指令流的任何时候,由第二处理部件接着继续处理所述同一顺序指令流将会是很有好处的,然后所述第二处理部件恢复被发送的状态,并接着继续通过用所述第二处理部件处理所述顺序指令流对同一顺序指令流进行处理,所述第二处理部件然后在所述第二处理部件处理所述顺序指令流期间将计算机系统的结构状态的任何改变发送到所述第一处理部件;由此,所述第一和第二处理部件在所述顺序指令流的处理期间可以执行同一条指令,但是只允许所述处理部件中的一个来改变由所述第一处理部件和第二处理部件联合状态决定的所述计算机系统的整个结构状态。
2.根据权利要求1的方法,其特征在于,所述第一处理部件包括作为多处理器运行的多个第一处理部件。
3.根据权利要求1的方法,其特征在于,所述联合状态由所述第一处理部件决定。
4.根据权利要求1的方法,其特征在于,所述第一处理部件和第二处理部件的联合状态由所述第一处理部件和一组一个或更多第一处理部件以及至少一个第二处理部件作为多处理器来决定。
5.根据权利要求4的方法,其特征在于,为每一个所述第二处理部件提供一个同步单元。
6.根据权利要求4的方法,其特征在于,为每一个所述第二处理部件提供一个同步单元并且该同步单元决定何时所述第二处理部件开始处理正在被第一处理部件处理的同一条指令。
7.根据权利要求4的方法,其特征在于,为每一个所述第二处理部件提供一个同步单元并且该同步单元决定所述第二处理部件何时开始处理正在被所述第一处理部件处理的指令流的下一条指令或是同一条指令。
8.根据权利要求4的方法,其特征在于,为每一个所述第二处理部件提供一个同步单元并且该同步单元决定所述第二处理部件何时开始处理正在被所述第一处理部件处理的指令流的下一条指令或是同一条指令,并决定所述第二处理部件对指令的处理应该何时被停止或是忽略。
9.根据权利要求8的方法,其特征在于,所述第二处理部件对指令的处理应该何时被停止或是忽略的决定基于根据权利要求从第一处理部件和第二处理部件提供给同步单元的输入来计算得到的对整个计算机系统的效益判断。
10.根据权利要求9的方法,其特征在于,所述提供给同步单元的输入包括当前判断的信息或是存储在系统中的信息。
11.根据权利要求10的方法,其特征在于,存储在同步单元中的指令技术器中。
12.根据权利要求6的方法,其特征在于,当所述第一处理部件对指令的处理出现停滞时,所述同步单元决定所述第二处理部件何时开始处理由第一处理部件正在处理的同一条指令。
13.根据权利要求6的方法,其特征在于,当在指令处理部件的处理过程中出现第二处理部件设计时没有处理的操作时,所述同步单元决定何时将第二处理部件的状态和结构状态进行重新同步。
14.根据权利要求6的方法,其特征在于,当判断出第二处理部件没有在处理所述指令流中为计算机系统提供任何效益时,同步单元决定何时将第二处理部件的状态与结构状态重新同步。
15.根据权利要求6的方法,其特征在于,当所述第一处理部件对指令的处理过程出现停滞时,所述同步单元决定何时与哪一个第一处理部件一起第二处理部件开始处理正在被第一处理部件处理的同一条指令。
16.根据权利要求6的方法,其特征在于,当在指令处理部件的处理过程中出现第二处理部件设计时没有处理的操作时,所述同步单元决定何时与哪一个第一处理部件一起重新将第二处理部件状态与结构状态同步。
17.根据权利要求6的方法,其特征在于,当判断出第二处理部件没有在处理所述指令流中为计算机系统提供任何效益时,同步单元决定何时与哪一个第一处理部件一起重新将第二处理部件状态与结构状态同步。
18.根据权利要求6的方法,其特征在于,所述第二处理部件的结果存储到它的私有通用寄存器或存储缓冲区。
19.根据权利要求1的方法,其特征在于,为所述第二处理部件提供一个同步单元,该同步单元决定所述第二处理部件何时开始对正在被所述第一处理部件处理的处理流中的下一条指令或是同一条指令进行处理,并决定所述第二处理部件对指令的处理应该被停止或是忽略。
20.根据权利要求1的方法,其特征在于,所述第二处理部件在处理所述指令流时将结果存入它的私有通用寄存器或与所述第二处理部件连接的私有存储缓冲区,并且所述第一处理部件从由所述第一处理部件和第二处理部件共享的数据和指令高速缓冲存储器中读取数据以进行读取。
21.根据权利要求20的方法,其特征在于,所述第二处理部件被用来处理由所述第一处理部件处理的指令流中的某些相同的指令。
22.根据权利要求21的方法,其特征在于,所述第二处理部件是一种乱序处理器。
23.根据权利要求15的方法,其特征在于,在停滞之后,所述第一处理部件和第二处理部件被重新同步,并且在重新同步期间第二处理部件在重新同步之前为第一处理部件将指令流预处理的所有的结果和局部结果清除。
24.根据权利要求16的方法,其特征在于,在重新同步期间,第二处理部件在重新同步之前为第一处理部件将指令流预处理的所有的结果和局部结果清除。
25.根据权利要求17的方法,其特征在于,在重新同步期间,第二处理部件在重新同步之前为第一处理部件将指令流预处理的所有的结果和局部结果清除。
26一种用于在具有第一处理部件和第二处理部件并且每一个所述处理部件具有它自己的由其通用寄存器和控制寄存器决定的状态的计算机系统中处理顺序指令流的方法,其特征在于,包括以下各步将一条所述顺序指令流初始化指令分配给所述处理部件中的所述第一个,使用所述处理部件中的所述第一个来继续对所述顺序指令流进行处理,并将第二处理部件所要求的计算机系统的结构状态的任何改变发送到所述第二处理部件,并且累积在将来的某时候为所述第二处理部件结构状态所使用的所述发送的改变,并且在所述第一处理部件处理所述顺序指令流的任何时候使所述第二处理部件接着继续处理同一顺序指令流是很有好处的,在所述第一处理部件处理所述顺序指令的任何时候,由第二处理部件接着继续处理所述同一顺序指令流将会是很有好处的,然后所述第二处理部件恢复从所述第一处理部件发送的所述累积的结构状态,并接着继续通过用所述第二处理部件处理所述顺序指令流对同一顺序指令流进行处理,然后,所述第二处理元件在处理所述顺序指令期间将第一处理部件所要求的计算机系统的结构状态的任何改变发送到所述第一处理部件,以累积在将来的某时候为所述第二处理部件结构状态所使用的所述发送的改变,由此,所述第一和第二处理部件在所述顺序指令流的处理期间可以执行同一条指令,但是只允许所述处理部件中的一个来改变由所述第一处理部件和第二处理部件联合决定的所述计算机系统的整个结构状态。
27.根据权利要求26的方法,其特征在于,在所述第二处理部件处理所述顺序指令流的任何时候,由所述第一处理部件接着继续处理同一指令流是很有好处的,然后,所述第一处理部件恢复所述累积的由第二处理部件发送的结构状态,并接着继续通过所述第一处理部件处理所述顺序指令流来对同一顺序指令流进行处理,所述第一处理部件包括作为多处理器的多个第一处理部件。
全文摘要
一种通过具有多流水线同步的寄存器管理系统来改善微处理器计算机系统乱序支持的系统和方法,用于在具有第一处理部件和第二处理部件的计算机系统中处理顺序指令流,每一个所述处理部件具有由它自己的通用寄存器和控制寄存器所决定的状态。在所述第一处理部件处理所述顺序指令流的任何时刻,存在所述第二处理部件来开始继续对同一指令流进行处理是有好处的,然后第一处理部件和第二处理部件对连续的指令流进行处理而且有可能执行同一条指令。
文档编号G06F9/38GK1224192SQ9812242
公开日1999年7月28日 申请日期1998年11月18日 优先权日1998年1月20日
发明者小托马斯·J·赫勒, 威廉·托德·保蒂 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1