CN1114872C - 具有改善的乱序支持的微处理器 - Google Patents
具有改善的乱序支持的微处理器 Download PDFInfo
- Publication number
- CN1114872C CN1114872C CN98122421A CN98122421A CN1114872C CN 1114872 C CN1114872 C CN 1114872C CN 98122421 A CN98122421 A CN 98122421A CN 98122421 A CN98122421 A CN 98122421A CN 1114872 C CN1114872 C CN 1114872C
- Authority
- CN
- China
- Prior art keywords
- instruction
- treatment element
- processing element
- sfe
- cache memory
- 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
Links
- 238000012545 processing Methods 0.000 claims abstract description 149
- 238000000034 method Methods 0.000 claims abstract description 40
- 230000008569 process Effects 0.000 claims abstract description 21
- 230000015654 memory Effects 0.000 claims description 118
- 239000000872 buffer Substances 0.000 claims description 30
- 230000001360 synchronised effect Effects 0.000 claims description 25
- 230000008859 change Effects 0.000 claims description 14
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 12
- 230000006872 improvement Effects 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 4
- 230000009286 beneficial effect Effects 0.000 abstract 1
- 238000013461 design Methods 0.000 description 43
- 230000006870 function Effects 0.000 description 25
- 230000008901 benefit Effects 0.000 description 20
- 102100038644 Four and a half LIM domains protein 2 Human genes 0.000 description 19
- 101001031714 Homo sapiens Four and a half LIM domains protein 2 Proteins 0.000 description 19
- 238000007726 management method Methods 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 8
- 238000007667 floating Methods 0.000 description 7
- 239000013256 coordination polymer Substances 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000003442 weekly effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 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/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- 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/30098—Register arrangements
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/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, look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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
- G06F9/3842—Speculative 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
Abstract
一种通过具有多流水线同步的寄存器管理系统来改善微处理器计算机系统乱序支持的系统和方法,用于在具有第一处理部件和第二处理部件的计算机系统中处理顺序指令流,每一个所述处理部件具有由它自己的通用寄存器和控制寄存器所决定的状态。在所述第一处理部件处理所述顺序指令流的任何时刻,存在所述第二处理部件来开始继续对同一指令流进行处理是有好处的,然后第一处理部件和第二处理部件对连续的指令流进行处理而且有可能执行同一条指令。
Description
本发明涉及计算机系统,特别是一种具有微处理器和与之相连的协处理器来提高系统性能的并提供了一种具有改进的微处理器支持的微处理器的计算机系统的方法。
由于大量的重要工作量受到有限的高速缓冲存储器影响,现在的微处理器的性能受到了严重的限制。有限的高速缓冲存储器影响包括所有引起性能降低,而在微处理器的一级高速缓冲存储器扩展到无限大时就可以消除的因素。在很多时候,微处理器停下来等待存储在外部存储器中的操作数所花的时间几乎等于执行指令所用的时间。在数据库操作和事务更新操作时尤其如此。
现在许多微处理器设计采取减少有限的高速缓冲存储器带来的性能恶化的方法。增大高速缓冲存储器容量、多级高速缓冲存储器、高速多芯片模块、失序执行以及指令预取等手段被广泛运用并被认为是最成功的。操作数预取也被成功地用于某些采用常规乱序处理和不采用常规乱序处理的工作当中。然而,操作数预取对于数据库操作和事务操作并不是特别有效。增加高速缓冲存储器可以减小有限高速缓冲存储器影响,但是这方面的进一步改进受到了不断增加的电路规模或芯片数目等带来的成本性能的限制。当前的乱序执行技术较大地减小了有限高速缓冲存储器影响,但是它们也降低了处理器的时钟频率而且增加了设计的复杂性。因而需要提供一种能充分减少实现从前认为可行的乱序执行设计的复杂性的改进的微处理器设计。
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和寄存器管理系统一起使用。RA 30包括32个可动态指定的实际寄存器(物理寄存器)来完成结构所认可的16个GPR的功能。
RA 30由寄存器管理系统(RMS)32通过控制总线34控制,并向其提供状态信息。RMS 32被连接到其它的几个系统上,用来接收或提供不同类型的状态信息。一个中断控制部件36与指令寄存器22、RMS 32以及RA30相连来进行正确的中断处理并保留所需要的状态信息。
RMS 32与指令寄存器单元22和GPE 24、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的其它输入从RA 30获得,D-ACE 62与RMS 32相连来提供状态信息。
D-ACE 62的输出与地址读取队列64相连,地址读取队列64具有一个作为输入与数据高速缓冲存储器相连的输出和一个作为输入与地址存储队列66相连的输出。地址存储队列具有一个输出连接到数据高速缓冲存储器,并且还与RMS 32相连来提供状态信息。
计算机具有一个与RMS 32相连来提供状态信息的浮点算术单元70。就像将要解释的那样,有一点很重要,RMS 32可以与跟RA 30不关联的单元和寄存器一起工作。例如,一个RMS可以与多个寄存器阵列一起工作。更具体地说,一个RMS可以控制两个分别与多个相同或不同类型的指令执行单元相连的RA。
浮点单元(FPU)70的输入由浮点指令队列72和浮点数据寄存器单元74提供。浮点指令队列的输入从I-REG 22得到。浮点数据寄存器单元的输入从数据高速缓冲存储器18和FPU 70得到。浮点单元70的输出与存储缓冲区单元76相连,存储缓冲区单元76的输出作为数据高速缓冲存储器18的输入与其相连。
现在更详细地考虑本发明,可以看出,将说明的系统对图2所说明的具有大容量高速缓冲存储器和多级高速缓冲存储器的系统很有效。本发明提高了已有高速缓冲存储器的性能,推测预取机制提高了每一级高速缓冲存储器的命中率。如果某些情况下,通过SFE的硅片规模使得片内高速缓冲存储器得到增加,总体性能方面的效益应该可以通过所能够获得的来衡量。在某些情况下,这一比较不一定必须正确,例如L1高速缓冲存储器的情况,对L1高速缓冲存储器来说通常是周期时间的约束是关键的,而不是面积约束。初步的结果表明,使用大小大约为片内二级高速缓冲存储器的1/4到1/2的SFE大约能将性能提高15%到20%。
图2的最佳实施例
如图2所说明的最佳实施例所示,部件之间的互连是通过不同的接口实现的,如uPCore(200)和同步单元(SU 201)、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。所述顺序指令流的处理通过使用所述处理部件中的第一个来继续进行,所述处理部件中的第一个将任何结构状态的改变迅速转送所述处理部件中的第二个。然而,在所述第一个处理部件(如uPCore200)处理所述顺序指令流的任何时候,使第二处理部件(如SFE 202)来开始继续对同一指令流进行处理是十分有用的,于是,计算机系统的第二处理部件恢复已经转送的状态。通过由第二处理部件对同一顺序指令流进行处理来继续同一顺序指令流的处理。
然后第二处理部件将第一处理部件所要求的计算机系统结构状态的任何改变发送给第一处理部件。
不论是轮流控制的可选择实施例还是我们的最佳实施例,第一处理器和第二处理器可以处理同一条指令,但是所述处理部件中只有一个能够改变由第一处理部件和第二处理部件的组合决定的所述计算机系统的全部结构状态。在优选实施例中,这一组合是由第一处理部件所决定的。虽然在另外的实施例中,系统的结构状态可以由第二处理部件的状态完全决定或部分决定,但本最佳实施例中,第二处理SFE的工作并不改变系统的结构状态。uPCore流水线顺序处理大多数顺序指令,同时SFE对指令进行处理来填充uPCore和SFE共享的高速缓冲存储器并尽可能与uPCore重新同步,uPCore在SFE处理指令和SFE的结果存储到独立的私有存储缓冲区时控制结构状态,此时最佳实施例中的有限高速缓冲存储器的影响就得到减小。
在替换的控制实施例中,而不是真的优选实施例中,结构状态的控制不断来回切换。
在上述方法中,每一个所述处理部件仍然具有由它自己的通用寄存器和控制寄存器的设置所决定的状态,并且每个第一处理部件和第二处理部件在所述顺序指令流的处理过程中有可能执行同一条指令,但只允许所述处理部件中的一个来改变由第一处理部件和第二处理部件的组合确定的所述计算机系统的全部结构状态,但是,结构状态的控制可以由第一处理部件交给第二处理部件也可以由第二处理部件交回给第一处理部件。这一过程仍然通过使用所述的处理部件的第一个处理部件从将第二处理部件所要求的计算机系统中的任何改变发送给所述第二处理部件时开始,并将这些发送的改变积累起来用于所述第二处理部件将来的结构状态,来对所述顺序指令流进行处理。从而,决定了当所述第一处理部件处理所述顺序指令流的任何时候,具有所述第二处理部件来接着继续处理同一指令流是很有用的,第二处理部件恢复累积的先前从所述第一处理部件发送来的结构状态,并通过处理所述顺序指令流来继续处理同一指令流。当第二处理部件控制所述顺序指令流的处理时,它将第一处理部件所要求的计算机系统的结构状态的任何改变发送给第一处理部件,以供将这些改变积累起来形成将来要用到的结构状态。然后控制可以再次更换,当所述第二处理部件处理所述顺序指令流的任何时候,具有所述第一处理部件来接着继续处理同一指令流是很有用的,第一处理部件恢复累积的先前从所述第二处理部件发送来的结构状态,并处理所述顺序指令流来继续处理同一指令流。
现在第一处理部件和第二处理部件可以作为多处理器工作。同样,如200,200′和200″所说明的,第一处理器可以包括作为多个处理器与单个SFE或是多个SFE工作的若干第一处理部件。然而,多个SFE不能与单个的uPCore一起使用。那就是说,一个多处理器可以与一组一个或多个第一处理部件和至少一个第二处理部件的组合一起工作。在最佳实施例中,同步的能力以一个同步单元SU 201,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接收最近从uPCore200中退出的指令地址以准备在该地址开始乱序执行。同步单元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。第二是当前发明的RMS 301被改成包括同步寄存器配表(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以及BRAL的操作。对于每一个支持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是一顺序设计,但使用任何乱序设计,如其它当前商业用途的微处理器,也同样包括在本发明之中。
同步单元
同步单元(SU 201)包括了所有要求的逻辑功能来控制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而不必对主流水线增加太多乱序执行复杂度,与有些当前设计中采用的不断增加的深度步长相反。
同时,协处理器可以使用乱序执行技术来在寻求减少微处理器和协处理器的有限高速缓冲存储器影响方面取得更大的范围。协处理其中乱序执行的复杂度可以通过协处理器不需要支持全部结构指令或与指令执行相关的全部异常和中断这一事实来减小。以下的权利要求应该解释为包括更多的改进并保持最先公开的发明的适当保护。
Claims (13)
1.一种具有带有指令和数据高速缓冲存储器的层次存储器的计算机系统,包括:
至少一种用来处理指令的常规处理元件以及至少一条给定了长度和每个流水步时间延迟的指令流水线;
一种附加的推测引擎处理元件,用于处理包括乱序指令的指令序列,可以通过乱序处理改进有限高速缓冲存储器方面的性能恶化造成的影响,其中
所述附加的推测引擎处理元件和所述常规处理元件结合在一起来一齐处理指令流,所述常规处理元件保持与其流水线处理一致的结构状态,而所述推测引擎处理元件进行推测处理,其结果可能并不改变计算机系统的结构状态但改进了所述常规处理元件中有限高速缓冲存储器方面的性能恶化造成的影响,所述推测处理元件包括:
m个位于中央处理区域的寄存器,m大于由一条指令的一个或更多的二进制字段所确定的指令可寻址通用寄存器的数目n,以及
用于乱序指令执行以及基于分支方向预测执行条件分支指令的装置。
2.根据权利要求1的计算机系统,其特征在于,所述常规处理元件与一个协处理器相连,该协处理器提供所述附加的推测引擎处理元件来进行独立指令预取和执行以改进所述常规处理元件所看到的存储器参考的序列,所述系统使用的一种寄存器管理过程,能生成对所述包括与所述推测引擎处理元件和常规处理元件相连并被它们共享的所述指令和数据高速缓冲存储器的层次存储器的推测性存储器参考。
3.根据权利要求2的计算机系统,其特征在于,进一步包括一种连接到所述推测引擎处理元件和常规处理元件以及所述提供所述附加推测引擎处理元件来读取指令和数据的协处理器的指令和数据高速缓冲存储器,以及一个用来进行双向指令数据传输以响应所述推测引擎处理元件的存储和读取命令的独立存储缓冲器。
4.根据权利要求3的计算机系统,其特征在于,进一步包括一个连接到所述常规处理元件和所述提供所述附加推测引擎处理元件的协处理器的同步单元,来进行所述常规处理元件和所述附加的推测引擎处理元件的同步。
5.根据权利要求3的计算机系统,其特征在于,所述附加推测引擎处理元件的协处理器产生送到存储缓冲区而不是指令和数据高速缓冲存储器的存储器参考来供在所述附加推测引擎处理元件中执行的后续指令使用,而不用改变所述常规乱序处理元件和所述指令数据高速缓冲存储器的结构状态,所有附加推测引擎处理元件的存储都在所述独立存储缓冲区中进行。
6.根据权利要求5的计算机系统,其特征在于,如果高速缓冲存储器和存储缓冲区中都没有所要的数据,则发生推测协处理器高速缓冲存储器未命中,当存储缓冲区中没有相应的入口时,指令和操作数通过第一接口返回到附加的推测引擎处理元件,而当存储缓冲区中存在相应的入口时指令和操作数通过第二接口返回。
7.根据权利要求3的计算机系统,其特征在于,进一步包括一个位于所述常规乱序处理元件的通用结构寄存器之间的通用寄存器接口,用于将所述常规乱序处理元件的更新通过所述通用寄存器接口送到所述附加的推测引擎处理元件。
8.根据权利要求3的计算机系统,其特征在于,进一步包括一种具有同步寄存器分配表来通过所述通用寄存器接口对所述常规处理元件和附加推测引擎处理元件的流水步进行同步的寄存器管理系统。
9.根据权利要求3的计算机系统,其特征在于,所述附加推测引擎处理元件通过所述通用寄存器接口对所述层次存储器的存储被送到其存储缓冲区而不是指令数据高速缓冲存储器。
10.根据权利要求3的计算机系统,其特征在于,所述附加推测引擎处理元件通过所述通用寄存器接口对所述层次存储器的存储被送到其存储缓冲区而不是指令数据高速缓冲存储器,还提供了一个位于所述常规乱序处理元件中通用结构寄存器之间的通用寄存器接口,用来将所述常规乱序处理元件的更新通过所述通用寄存器接口送到所述附加的推测引擎处理元件,以及一种具有同步寄存器分配表来通过所述通用寄存器接口对所述常规处理元件和所述附加推测引擎处理元件的流水步进行同步的寄存器管理系统。
11.根据权利要求1的计算机系统,其特征在于,所述推测引擎处理元件具有用来执行指令的由一条或多条规定长度和规定每流水步的延迟的流水线组成的指令流水线,所述常规处理元件具有比所述推测引擎处理元件更少的流水步,但是对于指令序列,流水线的每一步具有相等的延迟,其中该指令序列从所述附加的推测引擎处理元件的乱序处理中不能得到有限高速缓冲存储器的改进。
12.根据权利要求3的计算机系统,其特征在于,所述常规处理元件具有用来执行指令的由一条或多条规定长度和规定每流水步的延迟的流水线组成的指令流水线,所述常规处理元件具有比所述推测引擎处理元件更少的流水步,但是对于顺序指令序列流水线的每一步具有相等的延迟,从所述附加的推测引擎处理元件的乱序处理中不能得到有限高速缓冲存储器的改进。
13.具有带指令和数据高速缓冲存储器的层次存储器的微处理器,包括:
至少一个常规处理元件来与多条规定长度和规定每流水步的延迟的流水线一起对指令进行处理;
一个用来处理指令包括乱序指令的附加推测引擎处理元件,并且对于顺序指令,不能从乱序处理中得到有限高速缓冲存储器支持;其中
所述附加的推测引擎处理元件和所述常规处理元件结合在一起来一齐处理指令流,所述常规处理元件保持与其流水线处理一致的结构状态,而所述推测引擎处理元件进行推测处理,其结果可能并不改变计算机系统的结构状态但改进了所述常规处理元件中有限高速缓冲存储器方面的性能恶化造成的影响。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US009828 | 1998-01-20 | ||
US09/009,828 US6047367A (en) | 1998-01-20 | 1998-01-20 | Microprocessor with improved out of order support |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1224199A CN1224199A (zh) | 1999-07-28 |
CN1114872C true CN1114872C (zh) | 2003-07-16 |
Family
ID=21739938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN98122421A Expired - Fee Related CN1114872C (zh) | 1998-01-20 | 1998-11-18 | 具有改善的乱序支持的微处理器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6047367A (zh) |
EP (1) | EP0935188A2 (zh) |
KR (1) | KR100300790B1 (zh) |
CN (1) | CN1114872C (zh) |
TW (1) | TW413789B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101246447B (zh) * | 2007-02-15 | 2011-07-13 | 国际商业机器公司 | 用于测量微处理器中的流水线停顿的方法和装置 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021485A (en) * | 1997-04-10 | 2000-02-01 | International Business Machines Corporation | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching |
CN1314031C (zh) * | 2000-02-21 | 2007-05-02 | 特科2000国际有限公司 | 便携式数据存储装置 |
US6950929B2 (en) * | 2001-05-24 | 2005-09-27 | Samsung Electronics Co., Ltd. | Loop instruction processing using loop buffer in a data processing device having a coprocessor |
US7130988B2 (en) * | 2002-11-15 | 2006-10-31 | Via-Cyrix, Inc. | Status register update logic optimization |
US7051245B2 (en) * | 2002-11-30 | 2006-05-23 | International Business Machines Corporation | System and method for handling out-of-order data supplied by a real-time feed |
US20040128448A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Apparatus for memory communication during runahead execution |
US7185182B2 (en) * | 2003-02-04 | 2007-02-27 | Via Technologies, Inc. | Pipelined microprocessor, apparatus, and method for generating early instruction results |
US20060200651A1 (en) * | 2005-03-03 | 2006-09-07 | Collopy Thomas K | Method and apparatus for power reduction utilizing heterogeneously-multi-pipelined processor |
JP2007156824A (ja) * | 2005-12-05 | 2007-06-21 | Nec Electronics Corp | プロセッサシステム、タスク制御方法 |
KR101360221B1 (ko) | 2007-09-13 | 2014-02-10 | 삼성전자주식회사 | 인스트럭션 캐시 관리 방법 및 그 방법을 이용하는프로세서 |
US7844928B2 (en) * | 2008-01-11 | 2010-11-30 | International Business Machines Corporation | Method and apparatus for evaluating integrated circuit design performance using enhanced basic block vectors that include data dependent information |
US7770140B2 (en) * | 2008-02-05 | 2010-08-03 | International Business Machines Corporation | Method and apparatus for evaluating integrated circuit design model performance using basic block vectors and fly-by vectors including microarchitecture dependent information |
US8010334B2 (en) | 2008-04-30 | 2011-08-30 | International Business Machines Corporation | Method and apparatus for evaluating integrated circuit design performance using basic block vectors, cycles per instruction (CPI) information and microarchitecture dependent information |
US7904870B2 (en) * | 2008-04-30 | 2011-03-08 | International Business Machines Corporation | Method and apparatus for integrated circuit design model performance evaluation using basic block vector clustering and fly-by vector clustering |
KR200442811Y1 (ko) | 2008-05-28 | 2008-12-11 | 여운남 | 파워메터 겸용 콘센트 장치 |
US8527956B2 (en) | 2008-12-23 | 2013-09-03 | International Business Machines Corporation | Workload performance projection via surrogate program analysis for future information handling systems |
US9135142B2 (en) * | 2008-12-24 | 2015-09-15 | International Business Machines Corporation | Workload performance projection for future information handling systems using microarchitecture dependent data |
TWI414994B (zh) * | 2009-09-24 | 2013-11-11 | Ind Tech Res Inst | 可重組態處理裝置及其系統 |
US8966230B2 (en) * | 2009-09-30 | 2015-02-24 | Intel Corporation | Dynamic selection of execution stage |
US9430596B2 (en) | 2011-06-14 | 2016-08-30 | Montana Systems Inc. | System, method and apparatus for a scalable parallel processor |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4574349A (en) * | 1981-03-30 | 1986-03-04 | International Business Machines Corp. | Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction |
US4901233A (en) * | 1987-07-20 | 1990-02-13 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
EP0651321B1 (en) * | 1993-10-29 | 2001-11-14 | Advanced Micro Devices, Inc. | Superscalar microprocessors |
US5559976A (en) * | 1994-03-31 | 1996-09-24 | International Business Machines Corporation | System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions |
-
1998
- 1998-01-20 US US09/009,828 patent/US6047367A/en not_active Expired - Lifetime
- 1998-11-02 KR KR1019980046783A patent/KR100300790B1/ko not_active IP Right Cessation
- 1998-11-18 CN CN98122421A patent/CN1114872C/zh not_active Expired - Fee Related
-
1999
- 1999-01-16 TW TW088100664A patent/TW413789B/zh not_active IP Right Cessation
- 1999-01-18 EP EP99300314A patent/EP0935188A2/en not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101246447B (zh) * | 2007-02-15 | 2011-07-13 | 国际商业机器公司 | 用于测量微处理器中的流水线停顿的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
TW413789B (en) | 2000-12-01 |
CN1224199A (zh) | 1999-07-28 |
EP0935188A2 (en) | 1999-08-11 |
KR100300790B1 (ko) | 2001-10-29 |
US6047367A (en) | 2000-04-04 |
KR19990066807A (ko) | 1999-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1114872C (zh) | 具有改善的乱序支持的微处理器 | |
CN1109968C (zh) | 带同步流水线的微处理器的改进方法 | |
US10684860B2 (en) | High performance processor system and method based on general purpose units | |
US7895587B2 (en) | Single-chip multiprocessor with clock cycle-precise program scheduling of parallel execution | |
US7509484B1 (en) | Handling cache misses by selectively flushing the pipeline | |
US7571284B1 (en) | Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor | |
CN100378655C (zh) | 并行处理器中的多线程执行 | |
US6732242B2 (en) | External bus transaction scheduling system | |
CN1109967C (zh) | 多线程处理器中指令和关联读取请求的后台完成 | |
CA1200318A (en) | Central processor | |
CN100357884C (zh) | 用于处理指令的方法、处理器以及系统 | |
US8997103B2 (en) | N-way memory barrier operation coalescing | |
CN101313285B (zh) | 高速缓存包含性的按组放宽 | |
US9223578B2 (en) | Coalescing memory barrier operations across multiple parallel threads | |
EP1202180A1 (en) | Scalar data cache for a vector processor | |
JP2001350638A (ja) | 多重スレッド使用方法、多重スレッド処理システム、スレッド実行コントローラおよびバッファ使用方法 | |
JP2501419B2 (ja) | 多重プロセッサメモリシステム及びメモリ参照競合解決方法 | |
CN1196997C (zh) | 不按序执行指令的装置和检测不按序指令的方法 | |
US7519796B1 (en) | Efficient utilization of a store buffer using counters | |
US20100268887A1 (en) | Information handling system with immediate scheduling of load operations in a dual-bank cache with dual dispatch into write/read data flow | |
CN109313554A (zh) | 用于在非均匀计算装置中进行调度的方法和设备 | |
US6012135A (en) | Computer having multiple address ports, each having logical address translation with base and limit memory management | |
CN1041566C (zh) | 超标量处理器系统中分配和执行非顺序指令的方法和系统 | |
US8140765B2 (en) | Information handling system with immediate scheduling of load operations in a dual-bank cache with single dispatch into write/read data flow | |
US20100268883A1 (en) | Information Handling System with Immediate Scheduling of Load Operations and Fine-Grained Access to Cache Memory |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20030716 Termination date: 20111118 |