CN1053508C - 超标量计算机 - Google Patents
超标量计算机 Download PDFInfo
- Publication number
- CN1053508C CN1053508C CN93119608A CN93119608A CN1053508C CN 1053508 C CN1053508 C CN 1053508C CN 93119608 A CN93119608 A CN 93119608A CN 93119608 A CN93119608 A CN 93119608A CN 1053508 C CN1053508 C CN 1053508C
- Authority
- CN
- China
- Prior art keywords
- register
- address
- control word
- instruction
- general
- 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
- 238000000034 method Methods 0.000 claims description 21
- 230000000295 complement effect Effects 0.000 claims description 7
- 238000003860 storage Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 230000001788 irregular Effects 0.000 abstract 1
- 238000012423 maintenance Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 13
- 230000015572 biosynthetic process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000000654 additive Substances 0.000 description 3
- 230000000996 additive effect Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000003442 weekly effect Effects 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/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 or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/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 or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Earth Drilling (AREA)
- Holo Graphy (AREA)
- Debugging And Monitoring (AREA)
- Lubricants (AREA)
- Steroid Compounds (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种超标量计算机及其操作方法,用于无序地执行指令,同时管理数据依赖性,数据反依赖性,以及确切中断、再起动和分支删除时的顺序性的完整性。该系统和方法以多输入指令和多执行单元操作。利用源和目的寄存器的更名产生与原指令无显著差别的控制字,避免向处理器控制字增加状态和顺序信息。
Description
本发明一般涉及计算机,尤其针对于超标量计算机内寄存器的结构及其使用。
计算机体系结构的发展已经从当前广泛接受的精简指令系统计算(RISC)结构转变到超标量(super scalar)计算机体系结构。该超标量计算机体系结构的特征在于:存在利用多个寄存器及控制机构而集成在一起的多个及可并行操作的执行单元。体系结构的目的在于:利用并行机制,使在每一时间间隔内由多个执行单元并行处理的指令数达到最大,而确保在输出中反映程序员所定义的指令执行次序。例如,控制机构必须管理由多个执行单元并行处理的数据之间的依赖性,控制机构必须确保在出现确切中断和再启动时维持顺序性的完整性,并且控制机构必须提供指令删除能力比如在指令定义的分支操作中所需的,而保持程序执行的总体顺序。一直在注意寻找将电子设备的数量和复杂性最小化的商业目的,超标量体系结构方面的流行约定是减少寄存器的大小和内容,以及在电路之间控制和数据传输的字长。
已经设计了大量的体系结构,来处理指令的无序执行。一个例子是美国专利4,722,049中所说明的操作的体系结构和方式,这种体系结构一般在一个队列中对指令进行排序,以最优地利用执行单元的标量/向量对。使用的更加有关的体系结构和方法在题为“元流体系结构”(The Metaflow Architecture)的文章中加以说明,作者为Popescu等,发表于1991年6月的IEEE Micro。该文章提供了关于以指令的无序执行为特征的问题的当代超标量体系结构原理的综述。文章作者也介绍了支撑他们的由多个执行单元组成的无序指令处理器的实现的原理,该处理器是一种体系结构,它利用货架概念(shelving concept)有选择地延迟指令处理,以便达到指令结果反映程序员所定义的次序的基本目的。动态调度的两种其他技术(通常称为“scoreboarding”和“Tomasulo算法”)在Patterson等著的《计算机体系结构,一种定量方法》(ComputerArchitecture A Quantitative Appoach 1990版)一书有述。第三种技术“寄存器更名(register renaming)”,作为例子在美国专利4,992,938中加以公开并说明。这样,尽管已认识到利用多个执行单元进行的无序指令执行的优点,但是实现该目的的体系结构和方法还未提炼为可接受的工业技术。
限制超标量体系结构及实用的基本制约的例子包括,在多个执行单元中并行处理的数据之间的数据依赖性的管理,处理确切中断和再启动而维持指令次序的完整性的能力,以及为分支目的而有选择地删除指令的能力等等。尽管这样的特点是可达到的,但是其复杂性和硬件成本到现在为止却极大。例如,如在现有技术中所指出的,在上架(shelving)或保留的实际应用中,指令处理的延迟需要用于储存指令的有效存储器,以及对指令的有选择下架(deshelving)进行控制的资源。再者,现有技术中,特上架的或保留的指令联系到指令之间以及联系到控制资源的信息的利用,显著地增加了须经储存和执行单元处理的控制字的字长。因此,仍然需要超标量体系结构,其中在最少的存储寄存器和控制资源内多个执行单元并行地处理无序指令。
本发明定义一种超标量计算机,适用于并行地、无序地执行多条指令。多个可独立操作的执行单元完成控制字所定义的操作。将与指定到各执行单元的控制字相联的源信息和目的信息从寄存器读出或写入寄存器,根据控制字的执行状态,这些寄存器由地址控制再循环。控制字地址的有序指定避免了反依赖性问题,确保顺序性的完整性,并且管理与输入指令次序一致的数据依赖性。
根据最佳实现,本发明试图得到一种由多个执行单元组成的计算机,这些执行单元响应于单独发送但对于一个执行单元却连续的控制字。多个控制字由多条输入指令并行形成。每个控制字包括冲突向量表指针信息、指令操作代码信息、目的地址信息、以及多个源地址信息。在执行如输入指令的次序所定义的控制字时,用于储存执行数据的寄存器的地址得以再循环。通过利用储存目的数据的通用寄存器的锁定位,数据依赖性得以管理。结合一个或多个冲突向量表,利用多个更名寄存器以使通用寄存器数量最小,并避免连续指令之间的反依赖性。由冲突向量表进行的寄存器地址的再循环,包括用于确保释放寄存器地址的次序与输入指令的次序一致的资源。因而,确切中断以及与分支相联的指令删除所需的顺序性的完整性在体系结构的框架内完成。
在结合下列附图的说明之后,本发明的这些及其他特点将会更加明显。
图1是现有技术中多个执行单元体系结构的高层示意框图;
图2是本体系结构中寄存器及执行单元的最佳实现的示意框图;
图3是控制字形成的功能原理图;
图4是根据本发明的与寄存器再循环相联的动作的功能原理图;
图5A、5B和5C通过示意流程图揭示了以本发明为特征的方法;
图6-25示意地图示了管理一个指令例集合的系统例的寄存器内容。
超标量体系结构的计算机和工作站的优点和限制是相当公知的。于是,技术共同点在于在既满足物理制约又使数据处理速度最快的情况下研究体系结构。超标量体系结构的根本是具有以程序员所定义的次序并行地处理各指令的多个执行单元。这样一种超标量体系结构的输入是一确定次序的指令集,当符合条件时,该次序导致与程序员的目的相一致的输出集。这样,超标量体系结构在高层响应有序的输入,并必定产生由该次序内的元素所限定的输出。
超标量处理器对指令的无序执行造成数个问题。一个这样的问题是数据依赖性,其中一个执行单元的输出是由将要输入另一个执行单元的指令确定的。超标量体系结构处理器的另一个问题经常称为反依赖性,因而执行单元以不同于指令被提交时的次序完成它们各自的指令。超标量体系结构处理器所面临的第三类问题涉及顺序性的完整性,它是由动作而非指令次序影响的。例如,处理器必须能够处理确切中断,确切性在于卷入一个或多个指令删除的中断或分支操作的结果不得改变指令输出次序。因此,合理的超标量体系结构必须不仅包括多个可并行操作的执行单元,而且必须管理指令的处理,以确保程序员所定义的次序和内容在处理器的所有操作状态下保持原样。
图1图示了实施超标量概念的处理器体系结构例。方框图示了IBM公司所生产和销售的RISC S/6000工作站中所用的体系结构。主存储器1既连接到指令高速缓冲存储器2又连接到数据高速缓冲存储器3。分支执行单元4不仅解决分支操作,而且将定点和浮点指令传送到各个可并行操作的执行单元6和7。这样,图1所示的体系结构,在对于浮点和定点指令具有分别的执行单元方面上是超标量的。
图1的超标量概念在多个执行单元(每个都能够进行定点、浮点和分支操作)的通用集的扩展,代表了当代计算机设计者所追求的道路。在Popescu等所著的前述IEEE Micro文章中,说明了一种方案。文章说明一种超标量体系结构,标为DRIS,此缩写是延迟的调度寄存器更名指令货架的功能性说明中所得出的首字母缩写。该体系结构在输入和输出中利用了指令的延迟或上架来管理数据依赖性和反依赖性。然后,在到执行单元的有选择的指定以及最终退役的调度期间,管理上架的或缓冲的指令。如果各种依赖关系是可能的,并且指令执行的基本要求与程序员的目的一致,则指令的上架延迟和检索涉及产生扩充的控制字以管理指令状态和顺序。
本发明定义一种超标量计算机系统体系结构,其中适当地选择和操作执行单元(比如图1中的定点执行单元6和浮点执行单元7),以并行执行指令。执行单元的数据信号的同步是通过寄存器进行的,该寄存器利用独待的控制字产生器、多个更名寄存器、一个可锁定的通用寄存器、以及一个冲突向量表得以适当地管理。该体系结构由图2的高层功能块所揭示。
图2实施例所示的超标量体系结构涉及一种计算机,其中一次接收多条输入指令,然后由其次可用的多个执行单元分别处理。每个执行单元具有处理所有指令类别的资源。假设通用计算机将通常具有分别进行定点和浮点处理的执行单元,并且分别向它们指定控制字,则执行单元资源这样的共性在图形处理系统中比在通用计算机中更易存在。本发明同样地应用于每种类别的处理系统。
图2所示实施例在指令字输入总线8上接收指令,该总线适于同时传送四条指令。指令在控制字产生器9中利用来自冲突向量表11的指针地址信息、来自原指令的操作代码信息、以及来自各更名寄存器12和冲突向量表11的经转换的源地址和目的地址重新配置。下文将参照图3说明控制字产生的细节。由分别四条指令产生的四个控制字然后被送至控制字队列13,用于向其次可用执行单元指定。执行单元14利用通用寄存器16中所确定的源地址处所储存的数据、以队列所定义的次序处理控制字。与通用寄存器16相联的锁定位17以类似于现有技术的方式控制源数据和目的数据之间的依赖性。冲突向量表11与更名寄存器18之间的相互作用促进了通用寄存器16上所指定的物理地址的定时循环,并且定义了一个适于保证在中断之后的执行的顺序性以及分支操作之后有选择的删除的结构和操作方法。
第一和第二更名寄存器12和18中的每个,在数量上与系统构造的寄存器相同。该例中,数量为4。16中的通用寄存器的数量等于构造的寄存器的总数、即程序员可用的数量与冲突向量表11中寄存器之和。
图3示意性说明控制字的建立,它由图2的控制字产生器9完成。四条指令的每一条由一个操作代码位串19、程序确定的第一源地址21、第二源地址22、以及目的地址23组成。如控制字产生器所建立的相应的控制字位串包括一个更名的第一源地址24、一个更名的第二源地址26、一个经转换的目的地址27、相应的操作代码19、以及一个冲突向量表指针地址28。注意,当计算机使用扩充指令时,附加指令和控制字源(分别为20和25)是可能的。更名寄存器12直接用于再指定寄存器地址24和26。控制字的CVT位串部分导自于指明冲突向量表11中下一可用行的指针地址。一旦选定,该行包含一个物理地址表项“P”(指明一个可用通用寄存器16)(图2),一个逻辑地址表项“L”(相应于原指令中所确定的目的23),以及至少一个完成状态位。完成位表项“F”用于控制一个指针,当相联的控制字已被执行时,该指针再循环通用寄存器16。与目的物理地址相联的锁定位在处于通用寄存器16(图2)内相应的物理地址的17。
应该注意到,控制字在结构和字长上与原指令相似,并且这样避免需要附加位以指明状态、位置、相对位置和其他超标量指令转换所共同相关的类似信息。当其他超标量体系结构为延迟的指令建立长而复杂的控制字,并保持依赖性、反依赖性及顺序性的完整性需求时,本发明通过寄存器的合宜的指定和再循环实现这样的目的。
图4示意性图示了表与寄存器之间的相互作用,以适当地指定地址以及管理控制字建立、分配和退役。通用寄存器(GPR)16储存数据并有与其相联的锁定位17。冲突向量表(CVT)11最好由四个子表组成,它们分别具有与同时输入的指令相同的行数。GPR地址的再循环通过CVT与更名2寄存器18之间的相互作用得以完成。顺序性通过目的地址以指针所确定的次序加以释放的需求得以维持,该指针通过连续的CVT行由完成位指示得以变址,指示目的数据可用和有效。
考虑第一例。参照图4,当一条指令到来时,将与其他指令同时由更名1寄存器12操作。如图所示,原来由1和2所指定的源1和源2地址被转换。因为更名1寄存器是初始的,所以得到地址1和2。相反,原目的0地址通过CVT转换被指定到第一可用物理地址32,并且相继引起与原目的0逻辑地址相邻的更名1位置内物理地址32的替换,以及与通用寄存器17内所指定的物理地址相邻的锁定位的置位。此时,动作所产生的控制字由一个指向第一CVT表第一行的CVT指针、原操作代码、一个目的地址32、一个2的源1地址以及一个1的源2地址组成。该控制字被送入控制字队列13,并且相联于一个指明执行单元的可用性的有效标志。在为控制字所指定的执行单元完成特定操作之后,与队列中该表项相联的有效标志被复位。
寄存器再循环和顺序性控制是通过CVT表与更名2寄存器18的相互作用而得以完成的。因为CVT表的次序反映了程序员所原始定义的指令的次序,所以变址到CVT表的指针确保控制字退役与指令的原次序相同。指针变址并响应于指明控制字操作已经完成的完成列中的一位。尽管当执行单元完成所指定的控制字时该位被置位,也仅当表项所确定的原指令序列中的所有先前控制字已被执行时,才产生指针的变址。来自完成列的完成位的退役,也开始了在CVT表与更名2寄存器之间的一个地址交换,使得先前所涉及的CVT表行的物理位置的地址与相应于CVT表的逻辑地址的更名2寄存器内的地址相交换。见图4右下部分的示意图。因而,通用寄存器地址得以再循环。通用寄存器中目的寄存器的加锁与解锁确保当存在依赖性时的一致性。基于输入指令的原有次序的寄存器的有序的再循环确保顺序性。
结合图5A、5B和5C的流程图,给出操作超标量体系结构的计算机以允许指令的无序执行的方法中的步骤。获取多条指令之后,利用更名寄存器1对源寄存器进行更名,然后,在将原目的寄存器地址送入相应的CVT表行的逻辑表项的同时,利用来自CVT表的下一可用行的物理表项的地址对目的寄存器进行更名。新目的地址也被送入更名2寄存器,并且通用寄存器内的物理地址被锁定。被更名的源和目的地址然后与CVT地址信息和操作代码结合,形成控制字。对控制字排队并分派到下一可用执行单元。当所有相关的源地址解锁时,执行单元开始处理。执行单元的结果被写入更名的目的寄存器,并且对该寄存器解锁。CVT和更名2寄存器地址为了再循环通用寄存器地址而交换。对后续指令重复该处理。
下一例详细分析了在有关指令和特定数据的特定集合方面寄存器地址的更名和再循环。本例中所用的通用寄存器(CPR)、CVT表、执行单元、每周期所取指令,等等的数量仅供图示。该体系结构能够支持任何数量的这些资源。也选择了加、除和乘指令加以图示。
首先如图6所示,该例包括主存储器或高速缓冲存储器29的一部分,由地址a0至地址a7,每个地址具有一条指令。一个取单元(未示出)每个时钟周期从存储器取4条指令,并将所取指令的块地址确定在两个项表31中。仅需两个表项,因为该例中只有两个CVT表。更名表12和18每一个具有4个表项,地址为00至03。只有4个表项,因为该特定例计算机的体系结构被定义为有4个结构寄存器,于是允许程序员只能利用寄存器R0-R3写指令。控制字产生器9从每条指令建立一个控制字,如图3所示。指令队列13是一个4表项深的缓冲区,用于储存控制字。该深度也是任意的。
执行单元1执行加法和乘法。它占用1个时钟周期以读取控制字,用1个时钟周期进行加法并写回结果。在乘法的情形下,占用1个时钟周期以读取控制字,用2个时钟周期执行乘法并将结果写回通用寄存器16,其中数据是实际储存的。执行单元2执行除法。它占用1个时钟周期以读取控制字,占用6个时钟周期以完成除法运算,并写回结果。执行单元3执行乘法。它占用1个时钟周期以读取控制字,并占用2个时钟周期以完成乘法运算并写回结果。
通用寄存器16具有12个表项。4个是需要的,其他8个用于更名。如前所述,这些寄存器的数量等于系统构造的寄存器的数量(数量为4)与CVT表项的数量(每个4表项的两个表)之和。所有表项储存数据。两个CVT表11用于该例,每个具有4个表项,以每时钟周期处理4个控制字。如该例中所述,第一CVT表具有一个为0的基地址,另一个CVT表具有一个为1的基地址。每个CVT的各行中的表项的地址为从00至13,最高位相应于CVT基数。每个CVT行表项具有3个域,一个用以保存用于更名的物理地址,第二个用以保存如原指令所确定的程序员构造的寄存器地址,第三个域保存特定实现所需的标志或指示。对于该例,具有3个标志位,分别指明所用的表项、已经执行的指令、以及已经引起一个中断的指令。物理表项由地址从04起至11,从CVT0的表项0开始至CVT1的表项3。这些地址(04-11)与首先由更名1所指定的地址(00-03)一起覆盖了GPR中所有的12个地址(00-11)。
由图7中的初始化寄存器状态开始描述该例。目的在于使指令通过该体系结构,因而检验指令如何流经系统。通用寄存器00至03已经装入数据,其值依次为123、45、61和100。因为取单元4每时钟周期取4条指令,所以读取从地址a0取一条加指令以及从后续存储位置取3条空指令(没有指令)。
加指令为:R3<-R1+R2。
根据该加指令,第一寄存器(01)的内容必须加到第二寄存器(02)的内容上,并且结果储存在第三寄存器(03)。这是由程序员利用其所知道的4个构造的寄存器01-03来确定的。在该指令的执行结束时,与R3相应的通用寄存器的内容必有值106,这是45和61之和。每一时钟产生事件。
在第一时钟周期,取单元得到从a0开始的4个指令的集合。也选定第一可用CVT表(CVT0)。对取单元地址表表项00加标志1,以示使用,并且将存储地址a0送入。取a0-a4存储地址的指令。
在第二时钟周期期间,控制字产生逻辑从每条指令建立一个控制字。CVT0被指定到4条指令,表项0用于第一指令(加指令),表项1、2、3分别用于其后3条指令(空指令)。
在图3所示的CVT地址、操作代码、目的地址和源地址的过程之后,建立第一指令的控制字。现参见图8。CVT域具有指定到该指令的CVT基数和行数。因为CVT基数为0且行数为0,所以域为00。控制字的操作代码域将包含原加指令,而未做任何改变。目的位置利用CVT表的00行表项的物理域内的数,其为04,并且将原目的数03放入CVT行的逻辑表项。源寄存器利用更名1寄存器得以更名。对更名表利用R1和R2作为地址,将现存表项用于替换R1和R2源表项。该情形下,R1值为01,且R2值为02。
原指令用于目的R3。因为控制字内的目的表项现由CVT地址00指定到通用寄存器地址04,所以将04寄存器地址放入更名1表的03表项。同样,锁定GPR物理位置04。CVT0表项0被标为由其标志表项的第一位所占据。对其他3条指令不产生控制字,因为它们是空指令。
时钟3将控制字分派到执行单元。如果执行单元不忙,则它们直接从控制字产生器获取控制字。如果它们正忙于执行其他指令,则将控制字储存在控制字队列中,直到一个或多个执行单元可用。见图9,其中控制字储存在控制字队列中。
在第四时钟周期,执行单元1获取控制字,对之解码,然后从GPR的物理位置读取地址相同的数据。如图10所示,源位置01和02分别具有数据45和61。
在第五时钟周期中,如图11所示,执行单元1内的加法结果106被写入GPR内的目的位置,其控制字是04,并且与该位置相联的锁定位切换到0。CVT0表项0完成标志位切换到1。
时钟周期6开始第一组4条指令的最后操作。开始状态出现于图11,在完成时变化到图12。CVT表项00的完成标志开始把相应的逻辑表项03用作指向更名2内一行的指针。更名2内的行03也包含地址03。见图11。物理表项地址04和更名2寄存器行03内容地址03被交换。在交换之后,CVT0行表项0物理位置包含地址03,并且更名2内行03含有地址04。见图12。取单元的地址表表项0被置为0,以示CVT0不再使用。这样,完成了在第一读取期间获得的指令的执行。
指令结果数据106在通过更名2的地址转换所确定的构造的寄存器R3中,这里地址03被转换为实际GPR地址04。
如图13所示取下一4指令集合。该集合将显示一定危险,以及该体系结构中如何解决它们。因此存储器中其次的4条指令有关于除、乘、乘和加的混合运算。这些指令从地址a4开始,结束于a7。指令如下,括号中为数字结果:R0<-R1/R2………(R0=045/061=.74)R3<-R2*R0………(R3=061*.74=45.14)R0<-R1*R2………(R0=045*061=2745)R3<-R2+R1………(R3=061+045=106)
第一条指令是一条多周期指令,需要6个时钟周期来执行并且将数字结果写回通用寄存器。第二条指令也是一条多周期指令,但仅需要2个时钟周期来执行。在这两条指令之间存在着一个危险。第二条指令的源之一是第一条指令的目的(结果)。因此,存在写后读(RAW)危险。第二条指令在第一条指令完成并写回结果之前不得开始读取。本体系结构解决这一危险,而未在所有执行单元之间进行通信,未进行操作数比较,未在执行单元中检查,甚至未实现上架方法。
第三条指令也是多周期指令,占用2个时钟周期来执行。该指令中存在两个不同的危险。首先是读后写(WAR),其中在第二指令从R0读取其源之前,执行单元可能产生一个结果(R0)并将之写回GPR。如果该情况发生,则第二指令将读错误的数据。第二个危险是写后写(WAW)危险,因为第一指令和第三指令的目的是相同的。对第三指令可能在第一指令之前完成,因而引起等存器R0内数据结果的错误。表A展示了通过指令以及没有错误的4个寄存器的状态。
原始 除法 乘法 乘法 加法
状态 第一指令 第二指令 第三指令 第四指令R0 123 74 74 2745 2745R1 45 45 45 45 45R2 61 61 61 61 61R3 106 106 45.14 45.14 106
表A在完成4条指令时,寄存器应该含有下列值:R0=2745R1=045R2=061R3=106在第一时钟周期,取单元得到下4条指令,始于地址a4,止于a7。
CVT1用于该4条指令的集合,因为它是可用CVT表次序中的下一个。多个CVT表的利用(可能是4个或在实际应用中更多)允许在读取之后操作的并行执行,比如在读取之后寄存器分配的比较,更名后寄存器的指定,以及包括再循环寄存器地址的交换。地址a4放于取地址表---图13的方框31内,以标识与CVT表1相联的4条指令的块。
在第二时钟周期,利用首先参照图3所述的过程,并且按照图5A-5C中流程图所说明的方法,对每一指令产生控制字。与4条指令的每一个的产生相联的效果分别示于图14a-14d,以减少含混。正常情况下,这些产生于单一时钟周期内。每条指令的地址的移动由图8所示产生中的虚线所示。得到的控制字出现在控制字产生器中,如通过图14d中CVT1所转换的。CVT1反映逻辑地址表项以及正在使用标志的置位。更名1反映寄存器R0-R3的最终转换。时钟周期3将4条指令送入控制字队列,如图15所示。
接着,第四时钟周期将控制字分派到适当及可用的执行单元。然后,每个执行单元试图从GPR中读所指定的地址。如果一个执单元发现它所需的寄存器的锁定位已置位,则在后续时钟周期中再次偿试。
如图16所示,第一控制字卷入一个除法运算,并且因而被分派到执行单元2。第二控制字卷入一个乘法运算,并且因此被分派到执行单元3。第三个控制字被分派到执行单元1进行乘法。第四条指令字保留在控制字队列中,直到存在一个能够处理加法运算的可用的执行单元。
注意,执行单元1和2能够从通用寄存器读它们的源数据,因为那些数据是未锁定的。另一方面,执行单元3不能读GPR中寄存器08内的源数据,因为锁定位置位。在每个后续时钟周期,这个单元重复试读,直至寄存器解锁。
在第五时钟周期,产生数个事件。执行单元1完成2个周期的乘法的第1周期。执行单元2完成6个周期的除法的第1周期。最后,执行单元3试读GPR中寄存器08的表项,但是继续被封锁。
在第六时钟周期,执行单元1完成2周期的第2周期,然后将结果写回目的GPR地址10,解锁寄存器,并且对与物理地址10相联的CVT1表项2内的完成标志置位。执行单元2完成6个除法周期的第2周期。执行单元3试读GPR的表项08,但是继续被封锁。见图17的结果。
在每个时钟周期,CVT1监视完成标志的状态,以确定一条或多条指令是否已经完成,但是仅以原指令的次序。如果顺序相继的行的标志位已被置位,则通过前述参照图12的过程对寄存器地址的交换,更新更名2寄存器。通过这种对CVT和更名2寄存的有序的更新,维持了顺序性的完整性。
时钟周期7允许数个事件。见图18。首先,控制字队列发现执行单元1是可用的,并能够进行加法运算。执行单元1接收控制字,并从GPR中读源寄存器数据。执行单元2完成除法运算中6个周期中的第3个周期。执行单元3再次试读GPR中的寄存器08。最后,CVT1试图更新更名2,但被阻止,因为在行2表项之前存在未完成的表项。
图19图示了时钟周期8之后的寄存器的状态。在该周期内,执行单元1完成加法运算,因为它是一个周期的操作,将结果写入GPR地址11,消除GPR地址11锁定位,并且对CVT1行表项3的完成位置位。执行单元2完成除法运算的6个周期中的第4个周期。执行单元3再次试读GPR中的寄存器08。CVT1再次试图更新更名2,但被在行表项2之前的未完成表项所阻止。
注意,在该4条指令的集合中,最后一条指令最先完成,并且被允许向目的写。第一条指令和第二条指令稍后完成。这说明体系结构适当地处理了WAR、WAW和RAW危险。
在时钟周期9,执行单元1成为自由的,不再有指令送入。执行单元2完成除法运算的6个周期中的第5个周期。执行单元3再次试读GPR中的寄存器08。CVT1再次试图更新更名2。
时钟周期10的效果示于图20。执行单元保持为自由的。执行单元2完成除法运算,将结果数据写入GPR寄存器08,清除GPR锁定位,并对CVT1行表项0内的完成位置位。假设现在寄存器解锁,则执行单元3成功地读GPR的寄存器08。CVT1试图更新更名2,未成功。
在第十一时钟周期,执行单元1保持自由。执行单元2现在也自由。执行单元3执行两周期乘法运算的第1周期。CVT1更新其行表项0以及更名2的相联的地址00。CVT1行表项1未完成,并且因为顺序性的完整性限制,阻止表项2和3的更新。见图21的结果。
第十二时钟周期的结果示于图22。执行单元1保持自由。执行单元2保持自由。执行单元3完成乘法运算,将结果写入GPR寄存器09,清除寄存器09锁定位,并且对CVT1表项行1内的完成标志位置位。CVT1不能更新更名2,因为在写入执行单元结果并设置完成位的同一周期内产生顺序性评价。
第十三时钟周期中,所有执行单元自由。见图23。因为在第十二周期结束时,CVT1中系列行表项1、2、3中的所有标志都被置位,见图22,更名2准备在该周期内被更新。
更新操作单独示于系列图23a-23c,以便于理解。在一个实际系统中,操作将同时产生。CVT1的逻辑表项(中央列)的地址再次用于标识更名2行,然后,在CVT1表和更名2寄存器之间交换GPR地址。注意,如果CVT中的两个逻辑地址标识相同的更名2行表项,比如CVT1中的两个03指针,从CVT 11到CVT 13的更新次序的顺序性,允许利用最后位置进行单一更新。因而对于03逻辑地址仅需执行04和11的单一交换。
指令取单元内的地址表(参考号为31)也被更新,以反映CVT1的状态。清除位以标明在该表和CVT 1中的两个该地址已能够被再利用。
注意GPR寄存器中的结果,如由相应于以下表A中的值的更名2所转换的。更名2表项00指向GPR 10,后者含有值2745。更名2表项01指向GPR 01,后者含有值45。更名2表项02指向GPR02,后者含有值61。并且最后,更名2表项03指向GPR 11,后者含有值106。所有结果正如所期望的。
为理解体系结构处理确切中断的能力,考虑前例的改进。关于确切中断,意思是超标量系统能够容忍中断或分支操作,而保持指令序列的完整性,如程序员所原始定义的。
原始 除法 乘法 乘法 加法
状态 第一指令 第二指令 第三指令 第四指令R0 123 .74 .74 2745 2745R1 45 45 45 45 45R2 61 61 61 61 61R3 106 106 45.14 45.14 106
表A(重复)
假设第三条指令(即a6,是涉及R1和R2的乘法指令)在执行单元1中执行时,在执行完3个时钟周期的第一个周期后出现一个中断。当上述情况产生时,计算机已经完成第一(a4)和第二(a5)指令。寄存器和执行单元的状态如图24所示。注意,图24不同于相应的图17:在CVT 1行表项2具有一个中断标志,而没有完成标志。
第4条指令不得执行,或者其结果不得写入GPR。各种超标量体系结构用不同的方法解决这一问题。某些具有附加的预防,所以可能引起中断的指令被上架或保持在管道中。某些体系结构利用称为影子寄存器的冗余的寄存器文件,通用寄存器预缓冲区,等等。在执行完之后作出是否将结果移入实际GPR位置的决定。不幸的是,这些技术使相继的指令的执行速率变慢。
相反,本体系结构允许指令在执行单元内流动,并经过最多的控制字执行。中断的影响是在处理所取指令的每个块的结束阶段得以解决的。
此外,但是一个重要的考虑是,本体系结构也确保引起中断的指令的地址(本例中a6)对于报告而言是可标识的。鉴于此,注意CVT 1中断标志是在所读取的组的第三表项处,始自存储地址a4。这样,a6=a4+2,其中值2是从前先未有中断标志的CVT1表项得到的。
如出现在GPR中的完成指令的结果应该反映第一和第二指令的完成,以及中断而未完成的第三和第四指令。这示于表B。
原始 除法 乘法
状态 第一指令 第二指令 被中断
R0 123 .74 .74
R1 45 45 45
R2 61 61 61
R3 106 106 45.14
表B
这样至于参照时钟周期5的特定事件,执行单元1完成乘法运算的2个周期的第1个周期,并且执行单元2完成除法运算的6个周期的第1个周期。出现中断时,执行单元1停止执行并且设置CVT 1的行表项2内的中断位。执行单元3试读GPR中的表项08,但被封锁。图24显示了该种状态。其他计算机操作继续,直至时钟周期13,除非未从存储器取新的指令。
在时钟周期13,所有执行单元是自由的。CVT 1现在具有1、2、3的表项。因此所有行都能够通过与更名2交换而得以更新。CVT1内的逻辑表项数据再次指向更名2内的行。然而,来自中断的位置及以上位置的表项未被更新。
如以前所建议的,引起中断的指令是在出现第十三时钟周期时从寄存器数据得以确定的。取单元内的地址表由数12所提供,该数代表CVT1行表项2是中断的位置。取单元确定地址表的表项1是a4。因为它是表项0的地址,所以取单元将2加到该数上,成为a6。
图25显示了执行单元1内时钟周期5期间出现一个中断时第十三周期结束时寄存器的状态。GPR中数据的地址是通过更名2寄存器的转换而获得的。例如,更名2表项00指向GPR 08,后者含有.74,即中断后R0的值。见表B。更名2表项01指向GPR 01,后者含有45,即中断后R1的值。更名2表项02指向GPR 02,后者含有61,即中断后R2的值。更名2表项03指向GPR 09,后者含有相应的值45.14。该结果正确地反映了指令被中断后所处理的指令的状态,即使所有指令是无序处理的,并且在实际中断时处于完成的不同阶段。指令显然能够确切地从中断后的指令及寄存器状态再起动。指令处理将从存储地址a6中的指令开始。
注意,通过在通用寄存器中利用锁定位,管理了指令数据依赖性。在体系结构内,通过对所有寄存器进行更名,利用更名1表对源寄存器进行更名,并利用CVT表对目的寄存器进行更名,管理了反依赖性。最后,顺序性的完整性,比如在确切中断、指令删除时的再起动或分支可能需要的,通过体系结构的有序退役方面得以完成。由执行单元或指令周期速度之间的不同所导致的指令的无序执行在本体系结构方面没有影响。硬件设备数量和复杂性也得以最小化,因为控制字除仅有的CVT地址以外,没有扩充状态、计数或位置数据位串。通用寄存器的有效的再循环得以清楚地证明。
尽管本发明已通过一个特定实施例加以说明和图示,但本发明所包括的系统和方法应与权利要求书所提出的广度一致。
Claims (13)
1.一种无序地执行指令的超标量计算机包括:多个执行单元和一个通用寄存器,其特征在于:
多个执行单元执行控制字;
通用寄存器利用地址存储控制字;并且
该计算机还包括:
用于形成控制字的装置,该控制字用于利用参照通用寄存器的更名的和再循环的寄存器地址向可能的执行单元的传送;以及
用于再循环通用寄存器地址的装置,它响应于执行单元内有序控制字的执行。
2.权利要求1所述的计算机,其特征在于:
用于再循环通用寄存器地址的装置在前序控制字执行之后更新寄存器地址的更名。
3.权利要求1所述的计算机,其特征在于:
用于再循环通用寄存器地址的装置再循环在大小上与所取指令数一致的多个子表。
4.权利要求2所述的计算机,其特征在于:
用于形成控制字的装置产生包括一个操作代码、直接更名的源地址、以及冲突向量表更名的地址的控制字。
5.权利要求3所述的计算机,其特征在于:
用于形成控制字的装置产生包括一个操作代码、直接更名的源地址、以及冲突向量表更名的地址的控制字。
6.一种操作一个超标量体系结构的计算机以允许输入指令的无序执行的方法,其特征在于包括步骤:
利用第一更名表对多条输入指令的源寄存器地址进行更名;
利用一个冲突向量表对多条输入指令的目的寄存器地址进行更名;
利用可用的执行单元,处理由更名的源寄存器地址、更名的目的寄存器地址、以及冲突向量表地址所组成的控制字;以及
在完成前序指令时再循环地址。
7.权利要求6所述的方法,其特征在于:
地址的再循环是以与输入指令的次序相应的次序进行的。
8.权利要求7所述的方法,其特征在于还包括步骤:
锁定对目的寄存器内数据的访问,直至相应执行单元产生寄存器相关的数据。
9.权利要求8所述的方法,其特征在于还包括步骤:
根据寄存器相关的数据项,解锁对相应目的寄存器的访问,并对冲突向量表中相应表项的完成标志置位。
10.权利要求9所述的方法,其特征在于还包括步骤:
在指令以其输入次序完成后,在冲突向量表与第二更名表之间顺序再循环地址。
11.一种用于执行指令有序序列的数据处理系统,该指令有序序列至少具有几个对在构造的寄存器内的数据进行计算的指令,该处理系统包括:多个通用寄存器及多个执行单元,其特征在于:
多个通用寄存器存储数据;
多个执行单元对来自通用寄存器的数据执行控制字;并且
该处理系统还包括:
多个更名寄存器,对应于构造的寄存器,并含有通用寄存器的地址;
用于提供代替每条指令的控制字的控制字装置,每个控制字使任何特定的构造的寄存器由地址包含于其相应的更名寄存器内的通用寄存器所取代;及
用于在每个执行单元内调整控制字的执行的调整装置,在提供无序控制字执行的同时维持所述通用寄存器内有序指令数据完整性,其中该调整装置包括用于存储控制字执行状态的装置。
12.一种用于执行指令有序序列的数据处理系统,该指令有序序列至少具有几个对在构造的寄存器内的数据进行计算的指令,包括:多个通用寄存器及多个执行单元,其特征在于:
多个通用寄存器存储数据,每个寄存器包括用于指明其将接收数据的装置;
多个执行单元对来自通用寄存器的数据执行控制字;并且
该处理系统还包括:
多个更名寄存器,对应于构造的寄存器,并含有通用寄存器的地址;
用于提供代替每条指令的控制字的控制字装置,每个控制字使任何特定的构造的寄存器由地址包含于其相应的更名寄存器内的通用寄存器所取代;及
用于在每个执行单元内调整控制字的执行的调整装置,在提供无序控制字执行的同时维持所述通用寄存器内有序指令数据完整性。
13.根据权利要求12的数据处理系统,其特征在于:
所述寄存器指示装置包括将寄存器的访问锁定直至寄存器接收数据为止的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US96969592A | 1992-10-30 | 1992-10-30 | |
US07/969,695 | 1992-10-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1105138A CN1105138A (zh) | 1995-07-12 |
CN1053508C true CN1053508C (zh) | 2000-06-14 |
Family
ID=25515870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN93119608A Expired - Fee Related CN1053508C (zh) | 1992-10-30 | 1993-10-28 | 超标量计算机 |
Country Status (9)
Country | Link |
---|---|
US (1) | US5481683A (zh) |
EP (1) | EP0600611B1 (zh) |
JP (1) | JP2698033B2 (zh) |
KR (1) | KR970004509B1 (zh) |
CN (1) | CN1053508C (zh) |
AT (1) | ATE189071T1 (zh) |
CA (1) | CA2098414C (zh) |
DE (1) | DE69327637T2 (zh) |
TW (1) | TW306987B (zh) |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06242948A (ja) * | 1993-02-16 | 1994-09-02 | Fujitsu Ltd | パイプライン処理計算機 |
US6378062B1 (en) * | 1994-01-04 | 2002-04-23 | Intel Corporation | Method and apparatus for performing a store operation |
US5724536A (en) * | 1994-01-04 | 1998-03-03 | Intel Corporation | Method and apparatus for blocking execution of and storing load operations during their execution |
US5537559A (en) * | 1994-02-08 | 1996-07-16 | Meridian Semiconductor, Inc. | Exception handling circuit and method |
US6205538B1 (en) * | 1994-08-24 | 2001-03-20 | Sun Microsystems, Inc. | Instruction result labeling in a counterflow pipeline processor |
US5625789A (en) * | 1994-10-24 | 1997-04-29 | International Business Machines Corporation | Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle |
US5675759A (en) * | 1995-03-03 | 1997-10-07 | Shebanow; Michael C. | Method and apparatus for register management using issue sequence prior physical register and register association validity information |
US5974240A (en) * | 1995-06-07 | 1999-10-26 | International Business Machines Corporation | Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution |
GB2308470B (en) * | 1995-12-22 | 2000-02-16 | Nokia Mobile Phones Ltd | Program memory scheme for processors |
US5761524A (en) * | 1996-03-15 | 1998-06-02 | Renditon, Inc. | Method and apparatus for performing and operation multiple times in response to a single instruction |
US5765016A (en) * | 1996-09-12 | 1998-06-09 | Advanced Micro Devices, Inc. | Reorder buffer configured to store both speculative and committed register states |
US5802338A (en) * | 1996-10-01 | 1998-09-01 | International Business Machines Corporation | Method of self-parallelizing and self-parallelizing multiprocessor using the method |
US5872949A (en) * | 1996-11-13 | 1999-02-16 | International Business Machines Corp. | Apparatus and method for managing data flow dependencies arising from out-of-order execution, by an execution unit, of an instruction series input from an instruction source |
US5889974A (en) * | 1996-12-30 | 1999-03-30 | Intel Corporation | Method and apparatus for the detection of reordering hazards |
US5913048A (en) * | 1997-03-31 | 1999-06-15 | International Business Machines Corporation | Dispatching instructions in a processor supporting out-of-order execution |
US5887161A (en) * | 1997-03-31 | 1999-03-23 | International Business Machines Corporation | Issuing instructions in a processor supporting out-of-order execution |
US6098167A (en) * | 1997-03-31 | 2000-08-01 | International Business Machines Corporation | Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution |
US5870582A (en) * | 1997-03-31 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched |
US5805849A (en) * | 1997-03-31 | 1998-09-08 | International Business Machines Corporation | Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions |
US5987598A (en) * | 1997-07-07 | 1999-11-16 | International Business Machines Corporation | Method and system for tracking instruction progress within a data processing system |
US6128728A (en) | 1997-08-01 | 2000-10-03 | Micron Technology, Inc. | Virtual shadow registers and virtual register windows |
US5938753A (en) * | 1997-09-19 | 1999-08-17 | International Business Machines Corporation | Method and apparatus for controlling autonomous units transferring data between buses having different ordering policies |
US5901299A (en) * | 1997-09-19 | 1999-05-04 | International Business Machines Corporation | Method and apparatus for transferring data between buses having differing ordering policies |
US6016526A (en) * | 1997-09-19 | 2000-01-18 | International Business Machines Corporation | Method and apparatus for transferring data between buses having differing ordering policies via the use of autonomous units |
US5961636A (en) * | 1997-09-22 | 1999-10-05 | International Business Machines Corporation | Checkpoint table for selective instruction flushing in a speculative execution unit |
US6065110A (en) * | 1998-02-09 | 2000-05-16 | International Business Machines Corporation | Method and apparatus for loading an instruction buffer of a processor capable of out-of-order instruction issue |
US6061785A (en) * | 1998-02-17 | 2000-05-09 | International Business Machines Corporation | Data processing system having an apparatus for out-of-order register operations and method therefor |
US6067644A (en) * | 1998-04-15 | 2000-05-23 | International Business Machines Corporation | System and method monitoring instruction progress within a processor |
US6212619B1 (en) | 1998-05-11 | 2001-04-03 | International Business Machines Corporation | System and method for high-speed register renaming by counting |
US6134645A (en) * | 1998-06-01 | 2000-10-17 | International Business Machines Corporation | Instruction completion logic distributed among execution units for improving completion efficiency |
US6324640B1 (en) * | 1998-06-30 | 2001-11-27 | International Business Machines Corporation | System and method for dispatching groups of instructions using pipelined register renaming |
US6243786B1 (en) * | 1998-12-23 | 2001-06-05 | Industrial Technology Research Institute | Apparatus and method for generating an interrupt prohibited zone in pipelined data processors |
US7421572B1 (en) | 1999-09-01 | 2008-09-02 | Intel Corporation | Branch instruction for processor with branching dependent on a specified bit in a register |
US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US7191309B1 (en) | 1999-09-01 | 2007-03-13 | Intel Corporation | Double shift instruction for micro engine used in multithreaded parallel processor architecture |
US7681018B2 (en) * | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US20020053017A1 (en) * | 2000-09-01 | 2002-05-02 | Adiletta Matthew J. | Register instructions for a multithreaded processor |
JP3817436B2 (ja) | 2000-09-28 | 2006-09-06 | 株式会社東芝 | プロセッサおよびリネーミング装置 |
US6671794B1 (en) * | 2000-10-02 | 2003-12-30 | International Business Machines Corporation | Address generation interlock detection |
US7020871B2 (en) * | 2000-12-21 | 2006-03-28 | Intel Corporation | Breakpoint method for parallel hardware threads in multithreaded processor |
US7191315B2 (en) | 2001-06-04 | 2007-03-13 | Sun Microsystems, Inc. | Method and system for tracking and recycling physical register assignment |
US7216204B2 (en) | 2001-08-27 | 2007-05-08 | Intel Corporation | Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment |
US7487505B2 (en) | 2001-08-27 | 2009-02-03 | Intel Corporation | Multithreaded microprocessor with register allocation based on number of active threads |
US7225281B2 (en) * | 2001-08-27 | 2007-05-29 | Intel Corporation | Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms |
US6868476B2 (en) | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
US7610451B2 (en) * | 2002-01-25 | 2009-10-27 | Intel Corporation | Data transfer mechanism using unidirectional pull bus and push bus |
US7437724B2 (en) * | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
US7337275B2 (en) * | 2002-08-13 | 2008-02-26 | Intel Corporation | Free list and ring data structure management |
US6941438B2 (en) | 2003-01-10 | 2005-09-06 | Intel Corporation | Memory interleaving |
US7272701B2 (en) * | 2003-10-22 | 2007-09-18 | Intel Corporation | Method and apparatus for limiting ports in a register alias table having high-bandwidth and low-bandwidth structures |
US7478276B2 (en) * | 2005-02-10 | 2009-01-13 | International Business Machines Corporation | Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor |
US7409589B2 (en) * | 2005-05-27 | 2008-08-05 | International Business Machines Corporation | Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor |
US7873625B2 (en) * | 2006-09-18 | 2011-01-18 | International Business Machines Corporation | File indexing framework and symbolic name maintenance framework |
US20080242560A1 (en) * | 2006-11-21 | 2008-10-02 | Gunderson Kevin L | Methods for generating amplified nucleic acid arrays |
US8677050B2 (en) * | 2010-11-12 | 2014-03-18 | International Business Machines Corporation | System, method and computer program product for extending a cache using processor registers |
US9072325B2 (en) | 2012-08-30 | 2015-07-07 | Shelby Group International, Inc. | Glove finger attachment system |
US9510628B2 (en) | 2013-03-15 | 2016-12-06 | Shelby Group International, Inc. | Glove thermal protection system |
US9588770B2 (en) | 2013-03-15 | 2017-03-07 | Samsung Electronics Co., Ltd. | Dynamic rename based register reconfiguration of a vector register file |
CN104598201A (zh) * | 2013-10-31 | 2015-05-06 | 国际商业机器公司 | 指令性能分析的方法和设备 |
US10216523B2 (en) | 2015-07-17 | 2019-02-26 | General Electric Company | Systems and methods for implementing control logic |
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
US10694795B2 (en) | 2017-01-10 | 2020-06-30 | Shelby Group International, Inc. | Glove construction |
US11966328B2 (en) * | 2020-12-18 | 2024-04-23 | Advanced Micro Devices, Inc. | Near-memory determination of registers |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0301220A2 (en) * | 1987-07-20 | 1989-02-01 | International Business Machines Corporation | Register management system in a computer processor with out-of-sequence instruction execution |
EP0432774A2 (en) * | 1989-12-15 | 1991-06-19 | Hyundai Electronics America | Processor architecture with decoupled instruction fetching |
US5155817A (en) * | 1988-04-01 | 1992-10-13 | Kabushiki Kaisha Toshiba | Microprocessor |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3346851A (en) * | 1964-07-08 | 1967-10-10 | Control Data Corp | Simultaneous multiprocessing computer system |
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 |
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
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 |
US4903196A (en) * | 1986-05-02 | 1990-02-20 | International Business Machines Corporation | Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor |
US4992938A (en) * | 1987-07-01 | 1991-02-12 | International Business Machines Corporation | Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers |
US5134561A (en) * | 1987-07-20 | 1992-07-28 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
US4972470A (en) * | 1987-08-06 | 1990-11-20 | Steven Farago | Programmable connector |
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 |
US5280615A (en) * | 1990-03-23 | 1994-01-18 | Unisys Corporation | Out of order job processing method and apparatus |
US5197132A (en) * | 1990-06-29 | 1993-03-23 | Digital Equipment Corporation | Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery |
JPH0480824A (ja) * | 1990-07-23 | 1992-03-13 | Nec Corp | データ処理装置 |
US5261071A (en) * | 1991-03-21 | 1993-11-09 | Control Data System, Inc. | Dual pipe cache memory with out-of-order issue capability |
US5355457A (en) * | 1991-05-21 | 1994-10-11 | Motorola, Inc. | Data processor for performing simultaneous instruction retirement and backtracking |
US5386562A (en) * | 1992-05-13 | 1995-01-31 | Mips Computer Systems, Inc. | Circular scheduling method and apparatus for executing computer programs by moving independent instructions out of a loop |
-
1993
- 1993-03-19 US US08/034,193 patent/US5481683A/en not_active Expired - Fee Related
- 1993-06-15 CA CA002098414A patent/CA2098414C/en not_active Expired - Fee Related
- 1993-09-08 TW TW082107359A patent/TW306987B/zh not_active IP Right Cessation
- 1993-09-28 KR KR1019930020072A patent/KR970004509B1/ko not_active IP Right Cessation
- 1993-10-25 JP JP5265946A patent/JP2698033B2/ja not_active Expired - Fee Related
- 1993-10-28 CN CN93119608A patent/CN1053508C/zh not_active Expired - Fee Related
- 1993-11-01 EP EP93308705A patent/EP0600611B1/en not_active Expired - Lifetime
- 1993-11-01 DE DE69327637T patent/DE69327637T2/de not_active Expired - Fee Related
- 1993-11-01 AT AT93308705T patent/ATE189071T1/de not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0301220A2 (en) * | 1987-07-20 | 1989-02-01 | International Business Machines Corporation | Register management system in a computer processor with out-of-sequence instruction execution |
US5155817A (en) * | 1988-04-01 | 1992-10-13 | Kabushiki Kaisha Toshiba | Microprocessor |
EP0432774A2 (en) * | 1989-12-15 | 1991-06-19 | Hyundai Electronics America | Processor architecture with decoupled instruction fetching |
Also Published As
Publication number | Publication date |
---|---|
DE69327637D1 (de) | 2000-02-24 |
CN1105138A (zh) | 1995-07-12 |
CA2098414A1 (en) | 1994-05-01 |
DE69327637T2 (de) | 2000-07-06 |
EP0600611A2 (en) | 1994-06-08 |
ATE189071T1 (de) | 2000-02-15 |
CA2098414C (en) | 1997-05-13 |
JP2698033B2 (ja) | 1998-01-19 |
EP0600611A3 (en) | 1995-01-11 |
JPH06214784A (ja) | 1994-08-05 |
TW306987B (zh) | 1997-06-01 |
EP0600611B1 (en) | 2000-01-19 |
KR940009820A (ko) | 1994-05-24 |
KR970004509B1 (ko) | 1997-03-28 |
US5481683A (en) | 1996-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1053508C (zh) | 超标量计算机 | |
CN1267819C (zh) | 计算机系统内部处理指令的装置 | |
KR101966712B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 | |
US5655096A (en) | Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution | |
KR101638225B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행 | |
KR101620676B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 | |
RU2427895C2 (ru) | Оптимизированная для потоков многопроцессорная архитектура | |
EP0096575B1 (en) | Concurrent processing elements for using dependency free code | |
CN101133391B (zh) | 多线程微处理器中的二分化线程调度器 | |
CN106990941A (zh) | 使用寄存器重命名处理移动指令 | |
CN1047245C (zh) | 采用独立存取中间存储器的超标量处理器系统中加强指令调度的方法和系统 | |
US20120079241A1 (en) | Instruction execution based on outstanding load operations | |
CN104040492A (zh) | 微处理器加速的代码优化器和依赖性重排序方法 | |
CN1429361A (zh) | 用于在一个多线程处理器内在多个线程之间划分资源的方法和装置 | |
CN104040491A (zh) | 微处理器加速的代码优化器 | |
CN103226463A (zh) | 用于使用预解码数据调度指令的方法和装置 | |
CN1760826A (zh) | 用于处理指令的方法、处理器以及系统 | |
CN103559014A (zh) | 用于处理嵌套流事件的方法和系统 | |
CN104040490A (zh) | 用于多引擎微处理器的加速的代码优化器 | |
US5491829A (en) | Method and system for indexing the assignment of intermediate storage buffers in a superscalar processor system | |
CN107810477A (zh) | 解码的指令的重复使用 | |
JP2008535074A (ja) | 複数の発行ポートを有するプロセッサにおける命令グループの作成 | |
US20150154022A1 (en) | Soft-Partitioning of a Register File Cache | |
CN1188932A (zh) | 多线程处理器中指令和关联读取请求的后台完成 | |
JP2002007116A (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 |