CN1188778C - 处理指令的方法、处理器和数据处理系统 - Google Patents
处理指令的方法、处理器和数据处理系统 Download PDFInfo
- Publication number
- CN1188778C CN1188778C CN01125890.XA CN01125890A CN1188778C CN 1188778 C CN1188778 C CN 1188778C CN 01125890 A CN01125890 A CN 01125890A CN 1188778 C CN1188778 C CN 1188778C
- Authority
- CN
- China
- Prior art keywords
- instruction
- transmit queue
- performance element
- instructions
- correlativity
- 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
- 238000013316 zoning Methods 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 6
- 238000005192 partition Methods 0.000 abstract 8
- 239000000872 buffer Substances 0.000 description 10
- 230000001419 dependent effect Effects 0.000 description 7
- 238000000605 extraction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000015572 biosynthetic process Effects 0.000 description 5
- 238000007667 floating Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000001052 transient 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
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
处理指令以便解决时间不对称的微处理器和方法。接收包括第一指令和第二指令在内的指令序列。相关性逻辑判断第一与第二指令之间是否有任何的相关性。相关性逻辑根据相关性判断在用于存储第一和第二指令的第一与第二发送队列分区中作出选择,以便挂起发送操作,第一发送队列分区将指令发送给第一执行单元,第二发送队列分区将指令发送给第二执行单元。第一和第二发送队列分区相对其中存储有指令结果的第一寄存器文件是不对称的。将第一和第二指令存储在选定分区内。如果在第一与第二指令之间存在相关性,则选择一用于第一和第二指令的共用发送队列分区;以及,如果第一和第二指令没有相关性,则根据公平算法在第一与第二发送队列分区之间进行选择。
Description
技术领域
本发明在总体上涉及微处理器领域,具体地说,本发明涉及包括一分区的发送队列的微处理器以及将指令分配给所述队列的方法。
背景技术
在微处理器结构领域中,发送队列通常提供这样一种工具,它用于将等待执行的指令存储在与发送相关的一个或多个执行单元中。执行单元一般包括用于更新寄存器文件的工具,在寄存器文件中存储有指令的操作数以便等待执行,并且,在执行之后将操作结果存储在寄存器文件中。如果将一执行单元的多个实例包括在微处理器结构内,则每个执行单元均包括其自己的寄存器文件。当在特定的执行单元中执行指令时,就在其它执行单元之一中的指令需要结果以执行给定操作的情况下,通常将结果邮送(post)与各执行单元相关的寄存器文件中。
因此,在指令结束之后,更新执行上述操作的执行单元本地的寄存器文件,并且还更新与其它执行单元有关的一个或多个其它寄存器文件。一般地说,执行指令的执行单元本地的寄存器文件在物理上比其它执行单元的寄存器文件更近。本地寄存器文件与远程寄存器文件之间的距离差会导致处理器中的时间不对称。换句话说,在远程文件中更新所执行的指令的结果之前,在本地寄存器文件中更新该结果,因为,在执行单元与远程文件之间存在有较大的互连延迟路径。
微处理器布局中的不对称在传统上是不太加以考虑的,因为,处理器的循环周期足以允许有最坏情况的延迟路径。但是,在处理器循环周期下降至1毫微秒以下时,延迟路径的不对称性会导致这样的情况,其中,执行给定指令序列所需的时间(处理器循环的次数)会受不对称的布局因素的影响。如果一对指令包括了指令的相关性,则相关指令必须等待直至第一指令的结果邮送已向其发送了相关指令的执行单元的寄存器文件。如果相关指令而不是第一指令被发送给了一不同的执行单元,则与远程寄存器文件相关的互连延迟会对效率产生负面影响。所以,非常希望能实现一种这样的微处理器,它包括发送队列,该队列能有选择地将指令发送给其相关的执行单元,以使整个执行时间最少。此外,还希望所实现的方案不会明显地增加成本或微处理器结构的复杂性并且对微处理器的用户(程序员)是透明的。
发明内容
根据本发明的一个方面,提供一种在微处理器中处理指令的方法,包括:
接收包括至少第一指令和第二指令在内的指令序列;
判断第二指令是否与第一指令相关;
如果在第一与第二指令之间存在相关性,则选择一用于第一和第二指令的共用发送队列分区;其中,第一发送队列分区将指令发送给第一执行单元,第二发送队列分区将指令发送给第二执行单元;以及
将上述第一和第二指令存储在选定分区内等待执行。
根据本发明的一个方面,提供一种微处理器,带有执行流水线,该流水线包括:
第一和第二执行单元,第一执行单元包括第一寄存器文件,它能接收来自第一和第二执行单元的结果;
一发送队列,它包括第一和第二发送队列分区,其中,第一发送队列分区将指令发送给第一执行单元,第二发送队列分区将指令发送给第二执行单元;以及
相关性逻辑电路,它配置成能接收包括第一和第二指令在内的指令序列并判断第一与第二指令之间的相关性,并且如果在第一与第二指令之间存在相关性,则选择一用于第一和第二指令的共用发送队列分区。
根据本发明的一个方面,提供一种数据处理系统,它包括微处理器、存储器、输入装置以及显示器,其中,所述微处理器包括一执行流水线,包括:
第一和第二执行单元,第一执行单元包括第一寄存器文件,它能接收来自第一和第二执行单元数据库结果;
一发送队列,它包括第一和第二发送队列分区,其中,第一分区将指令发送给第一执行单元,第二分区将指令发送给第二执行单元;以及
相关性逻辑电路,它配置成能接收包括第一和第二指令在内的指令序列并判断第一与第二指令之间的相关性,并且如果在第一与第二指令之间存在相关性,则选择一用于第一和第二指令的共用发送队列分区。
附图说明
通过阅读下述详细说明并参照附图,可以看出本发明的其它目的和优点,在附图中:
图1是数据处理系统的框图;
图2是适用于图1中的数据处理系统的处理器的框图;
图3是本发明一个实施例的分区的发送队列的框图;以及
图4是说明图3的分区的发送队列的操作的流程图。
尽管本发明有多种改进形式和交替形式,但在附图中以举例的方式示出了本发明的具体实施例,并且,本文将详细说明这些具体实施例。但是,应该认识到,本文所提供的附图和详细说明并不是要将本发明限制于所公开的特定实施例,相反,其目的是要涵盖后附权利要求所限定的本发明精神和范围内的所有的改进形式、等价形式以及交替形式。
具体实施方式
参照图1说明本发明的数据处理系统100的实施例。系统100具有一个或多个中央处理单元(处理器)101a、101b、101c等(在整体上或通常称为处理器101)。在一个实施例中,每个处理器101均包括一精简指令集计算机(RISC)微处理器。可以在C.May等人编辑的《PowerPC结构:对RISC处理器新家族的说明》(Morgan Kaufmann,1994,第二版)中获得在整体上与RISC处理器有关的额外信息。处理器101通过系统总线113与系统存储器250和多种其它组件相连。
只读存储器(ROM)102与系统总线113相连并且可包括一基本输出/输出系统(BIOS),它控制着系统100的某些基本功能。图1还说明了I/O适配器107和网络适配器106,它们连接于系统总线113。I/O适配器107可以是小型计算机系统接口(SCSI)适配器,它与硬盘103和/或磁带存储器105相通讯。I/O适配器107、硬盘103和磁带存储设备105在总体上称为海量存储器104。
网络适配器106将总线113与外部网络互连起来,以使得数据处理系统100能与其它这类系统相通讯。显示监视器136通过显示器适配器112与系统总线113相连,显示器适配器112可包括图形适配器,以提高图形增强应用程序和视频控制器的效率。在一个实施例中,适配器107、106和112可与一个或多个I/O总线相连,所述I/O总线通过中间总线桥(未示出)与系统总线113。
用于连接诸如硬盘控制器、网络适配器和图形适配器之类的外围设备的适当I/O总线包括符合PCI局部总线规格Rev.2.2的外围组件接件(PCI)总线,所述规格书可从PCI专门小组Hillsboro OR获得,本文引用了该规格书。显示出附加输入/输出设备通过用户接口适配器108和显示器适配器112连接于系统总线113。键盘109、鼠标110和扬声器111均通过用户接口适配器108与总线113互连,用户接口适配器108可例如包括超级I/O芯片,它将多个设备适配器集成进单个的集成电路。就与这种芯片有关的其它信息而言,读者可参照PC87338/PC97338ACPI1.0以及PC98/99兼容超级I/O数据说明书,它们在www.nation.com来自国家半导体公司(1998年11月)。
因此,如图1所示,系统100包括:处理器101形式的处理装置;包括系统存储器250和海量存储器104的存储装置;诸如键盘109和鼠标110之类的输入装置;以及包括扬声器111和显示器136的输出装置。在一个实施例中,系统存储器250和海量存储器104的一部分共同存储有诸如IBM公司的AIX操作系统之类的操作系统,以便协调图1所示的多个组件的功能。与AIX操作系统有关的其它细节可在www.ibm.com从来自IBM公司的《AIX4.3版技术参考:基本操作系统和扩展,第一和第二卷》(序列号SC23-4159和SC23-4160)、《AIX4.3版系统用户指南:通讯和网络》(序列号SC23-4122)以及《AIX4.3版系统用户指南:操作系统和设备》(序列号SC23-4121)中获得,本文引用了上述文件。
参照图2,示出了适用于系统100的处理器101的实施例的简化框图。在所示的实施例中,处理器101包括集成电路超标量体系结构微处理器,在单块集成电路半导体衬底上形成。处理器101包括如下详细说明的多个执行单元、寄存器、缓存器、存储器和其它功能单元。如图2所示,处理器101通过总线接口单元(BIU)212和处理器总线213与系统总线113相连,处理器总线213与系统总线113相似包括地址、数据和控制总线。BIU212控制信息在处理器101与诸如系统存储器250和海量存储器104之类的连接于系统总线113的其它设备之间的传递。应该注意,处理器101可包括与系统总线113相连的其它设备,这些设备对理解下述说明不是必需的,因此为简化的缘故省略了这些设备。
BIU212与处理器101中的指令高速缓存器和存储器管理单元214、数据高速缓存器和存储器管理单元216相连。诸如指令高速缓存器214和数据高速缓存器216内的那些高速缓存器之类的高速缓存器能使处理器101有对先前传自系统存储器250的数据或指令的子集的较快存取时间,从而提高数据处理系统100的操作速度。分别存储在数据高速缓存器216和指令高速缓存器214中的数据和指令由地址标记来加以标识和存取,每个地址标记均包括其中驻留有数据和指令的系统存储器物理地址的选定多个位(一般为高阶位)。顺序提取单元217在每个时钟周期期间均从指令高速缓存214器中检索出用于执行的指令。在一个实施例中,如果顺序提取单元217从指令高速缓存器214中检索出分支指令,则将该分支指令传给分支处理单元(BPU)218以便执行。
顺序提取单元217将非分支指令传给指令队列219,所述指令暂时存储在其中,直到由处理器101的其它功能单元执行。分派单元220负责从队列219中检索出所存储的指令并将这些指令转发给发送单元(ISU)221。分派单元220部分地根据接收自完成单元240的指令完成信息来分派达到发送单元221的指令。所示的ISU221的实施例包括一个或多个发送队列222a、222b、222c等(在总体上或一般称为发送队列222)。ISU221负责通过在可能的情况下将每个周期内的新指令发送给执行单元而保持完全加载了的流水线。在一个实施例中,从ISU221中无次序地发送出指令。
在所示的实施例中,处理器101的执行电路除BPU218以外还包括多个执行单元,包括一通用定点执行单元(FXU)223、一加载/存储单元(LSU)228和浮点执行单元(FPU)230。FXU223可以表示专用的定点运算和逻辑单元,它能用接收自指定通用寄存器(GPR)232的源操作数进行定点加、减、与、或和异或运算。在其它实施例中,执行单元223可包括加载/存储单元以及运算/逻辑单元。在执行了定点指令之后,定点执行单元223将指令的结果输出给GPR缓存器232,该缓存器为在结果总线262上接收到的结果提供存储空间。
FPU230能对接收自浮点寄存器(FPR)236的源操作数执行诸如浮点乘和除之类的单精度和双精度浮点运算和逻辑操作。FPU230将源于执行了浮点指令的数据输出给选定的FPR缓存器236以便进行存储。LSU228一般执行浮点和定点加载指令,加载指令将来自数据高速缓存器216、低层次高速缓存存储器(未示出)或系统存储器250的数据加载进选定的GPR232或FPR236或和浮点和定点存储指令,这些指令将来自GPR232或FPR236中选定的一个的数据存储至数据高速缓存器216并最终存储至系统存储器250。
在上述最佳实施例中,处理器101进行无序的指令执行,以便进一步提高超标量体系结构的效率。因此,只要观察到数据的相关性,就按随指令原始程序顺序而变的次序由FXU223、LSU228和FPU230来执行指令。如前所述,按流水线阶段的顺序由各FXU223、LSU228和FPU230来对指令进行处理。在一个实施例中,处理器101包括五个不同的流水线阶段即提取、解码/分派、执行、结束和完成。
在提取阶段过程中,顺序提取单元217从指令高速缓存器214中检索出一个或多个非分支指令并将所提取出来的指令存储到指令队列219内。相反,顺序提取单元217将来自指令流的任何分支指令都传给BPU218以便执行。BPU218包括分支预测装置,它在一个实施例中包括一诸如分支历史表之类的动态预测装置,所述分支历史表通过预测是否出现分支而使BPU218试探性地执行未定条件分支指令。
在解码/分派阶段过程中,分派单元220和ISU221对来自发送队列222的一个或多个指令进行解码并一般按程序顺序将其发送给执行单元223、228和230。ISU221分配GPR更名缓存器233或FPR更名缓存器237内的一个或多个更名缓存器,以便在将结果(或多个结果)提交给GPR232和FPR237之前暂时存储指令的结果或多个结果。此外,指令(或表示指令的指令标识或标记)可存储在完成单元240的多槽完成缓存器(完成表)内作为跟踪已完成了哪些指令的装置。
在执行阶段过程中,执行单元223、228和230执行在所指明的操作的操作数和执行资源是可用的时自ISU220发送的指令。执行单元223、228和230可包括存储有调度给该执行单元的指令的保留站,直至操作数或执行资源是可用的。在指令的执行业已终止之后,执行单元223、228和230在有数据结果的情况下,根据指令类型的不同将数据结果存储在GPR或FPR内。在所示的实施例中,执行单元223、228和230将哪些指令已结束执行通知给完成单元240。最后,按来自完成单元240的完成表的程序顺序完成指令。通过将指令的数据结果从GPR更名缓存器233和FPR更名缓存器237分别传给GPR和FPR236而完成FXU223和FPU230所执行的指令。
处理器101最好支持无序的试探性的指令执行。根据预测的分支或在会导致中断条件的指令范围以外试探性地执行指令。在错误预测了分支或有中断的情况下,硬件会自动地从流水线中清除不应有的指令并废弃不应有的结果。在一个时钟周期内有选择地清除不正确的试探性结果,指令的发送可重新继续下一个时钟周期。
在发送指令时,ISU221按能很容易确定任何两个指令之间的相对时限的方式来标记所说的指令。在一个实施例中,用整数值(ITAG)来标记顺序指令。在另一个实施例中,可将多个指令为跟踪的目的分组到一起并赋给一共用的标识符,本文称之为组标记(GTAG)。除提供用于确定所发送的指令的次序和相对时限的机制以外,ITAG和GTAG还提供它们相应指令的简略表示。指令的标记值与其驻留的队列入口和流水线阶段有关。使用标记有助于指令清除机制(响应处理器生成的清除指令),其中,在与清除指令有关的ITAG或GTAG和与特定队列入口或执行单元阶段有关的ITAG或GTAG之间作数量比较,如果比较的结果是指令与被清除的指令一样年轻或比被清除的指令更年轻(即与被清除的指令同步或在被清除的指令之后),则所述入口是无效的。从机器中“清除掉”清除指令的所有其余部分(以及所有的后续指令),并且,将提取单元重定向到始于“清除”指令的地址处的提取操作。
参照图3,提供了说明本发明一个实施例的处理器101的包括发送单元221、发送队列222以及执行单元223在内的执行流水线的一部分的图。在这一实施例中,执行单元223包括一第一侧面304-1和一第二侧面304-2(一般或在总体上为侧面304)。在所示的实施例中,每个侧面304本身都是一个功能单元,它包括寄存器文件306和第一功能单元310。因此,第一侧面304-1包括寄存器文件306-1和功能单元310-1,而第二侧面304-2则包括寄存器文件306-2和功能单元310-2。每个第一功能单元310作为实例均可包括一定点加法器/比较器或定点加载/存储单元。在另一个实施例中,执行单元223的每个侧面304均包括第一功能单元310和第二功能单元312,它们共享一共用寄存器文件。在这一实施例中,第一功能单元310可包括定点加法器/比较器,且第二功能单元312可包括加载/存储单元。
在发送单元221将指令从发送队列222发送给执行单元223时,就将该指令分配给执行单元223的一侧304,并将指令操作数存储在相应的寄存器文件306内。然后,相应的功能单元310(或312)在执行指令时通过读取端口308从寄存器文件306中检索出操作数、执行所需的操作并在需要将结果作为用于后续指令的操作数的情况下将结果返回给寄存器文件306。在一个实施例中,功能单元310所产生的结果还存储在执行单元223的另一侧304的寄存器文件306中,因为,需要第一指令所产生的结果的后续指令可被分配给执行单元223的第二侧304。因此,如果将指令分配给执行单元223的第一侧304,则将功能单元310-1所产生的结果返回给第一侧304-1的寄存器文件306-1和第二侧304-2的寄存器文件306-2。
在历史上,与处理器周期时间相比,用于使结果经过从功能单元310开始到寄存器文件306的互连部分所需的时间差是不明显的。在这种情况下,从第一功能单元310-1到第一和第二寄存器文件306-1和306-2的距离差所导致的时间不对称一般并不是关键的而是可在很大程度上加以忽略。但是,当处理器速度业已增加超过千兆赫阈值时,互连延迟就会在结构设计中变成一显著的考虑因素。在假定第一功能单元310-1在物理上比靠近第二寄存器文件306-2更加靠近第一寄存器文件306-1的情况下,结果会在到达第二寄存器文件306-2之前到达第一寄存器文件306-1。
在最坏的情况下,物理布局中与不对称性有关的时间差会导致一个或多个不必要的额外处理器周期以便在指令之间有相关性时完成指令序列。所示的本发明实施例可通过实现带有为执行单元223的第一侧304-1所专用的第一分区302-1和为第二侧304-2所专用的第二分区302-2的发送队列222而解决这方面的问题。此外,所示的发送单元221的实施例包括相关性逻辑301,它可根据操作之间的相关性来确定将指令分配给发送队列分区302-1和302-2。
最好能使相关性逻辑301接收指令序列并评价指令的源和目标操作数以便确定指令间的相关性。如果指令B需要由指令A产生的结果,则说指令B真正依赖指令A。如果在时间上紧挨着执行指令A和指令B,则停止指令B以等待来自指令A的结果。如果在执行单元223的一侧304-1上执行不相关的指令并在另一侧304-2上执行依赖性指令,则导致停止的指令相关性的可能性会增加,因为,需要较长的时间使不相关的指令的结果进入可供依赖性指令使用的寄存器文件306-2。
在一个实施例中,使相关性逻辑302通过将相关性链(即一指令以及直接或间接取决于该指令结果的指令)中的指令分配给执行单元223的共用侧面304而减少指令相关性和布局不对称性的效率冲突。在指令序列中的指令彼此没有相关性的情况下,相关性逻辑301可根据预定的公平算法诸如通过在两个发送队列分区302之间交替地分配不相关的指令或者通过将不相关的指令分配给具有最多可用入口的发送队列而自由地将指令分配给发送队列分区302-1和302-2。在相关性逻辑301检测到指令相关性时,最好将来自共用相关性链的指令分配给发送队到222的同一分区302。相关性逻辑301可通过记录当前在发送队列222中等待执行的各执行的源和目的操作数而确定指令的相关性。在新指令到达时,将它们的操作数与未决指令的操作数相比较,以便判断新指令是否需要另一未决指令的操作数。
在所示的实施例中,将指令分配给一共用分区302能确保在执行单元223的共用侧304中执行指令,因为,各分区硬连线于执行单元223的相应侧304。因此,将分配给第一分区302-1的指令发送给执行单元223的第一侧304-1并在其中加以执行,同时,将分配给发送队列222的第二分区302-2的指令发送给执行单元22 3的第二侧304-2并在其中加以执行。所示的本发明实施例可通过在将指令发送和分配给发送队列分区之前根据所确定的相关性判断指令相关性而提高效率。然后,在没有与判断选择哪个执行单元有关的任何延迟的情况下将指令直接发送给执行单元223的相应侧304。
参照图4,说明了本发明一个实施例的发送单元221和相关性逻辑302的操作。在所述说明中,发送单元221和相关性逻辑301接收包括指令A至F的指令序列。在所示的实例中,指令A、C和D构成了第一相关性链,因为,指令C取决于指令A的结果,指令D取决于指令C的结果。与此相似,指令B、E和F构成了第二相关性链,因为,指令E取决于指令B,指令F取决于指令E。尽管随机分配方案可根据队列中可用入口的数量或依照其它公平方案将这些输入指令分配给发送队列222的分区302,但相关性逻辑302可检测到限定第一和第二相关性的相关性、越过缺省的发送队列配置机制并根据指令的相关性链将指令传给发送队列分区。具体地说,由于指令A、C和D构成了相关性链,所以,它们均被分配给了一共用的发送队列分区302。与此相似,由于指令B、E和F构成了相关性链,所以,它们均被分配给了发送队列222的共用分区302。由于相关指令接收父指令A和C的结果所需的延迟是其中执行父指令的功能单元与其中执行相关指令的执行单元的寄存器文件之间互连长度的函数,故本发明可通过构成共用相关性链的指向偏向执行单元223的同一侧304而提高效率。通过这种方式,相关性链中的各指令均会接收来自指令在短的可能时间中所依赖的那些指令的结果。
本技术中受益于本公开内容的专家可以看出,本发明试图通过至少部分地根据指令相关性将指令分配给发送及列分区,以便解决执行单元中时间不对称的问题。应该认识到,上述详细说明和附图中所示和所说明的本发明形式仅应看作是当前最佳实施例。以下权利要求应在广义上加以解释,以便包括所公开的最佳实施例的所有变化形式。
Claims (17)
1、一种在微处理器中处理指令的方法,包括:
接收包括至少第一指令和第二指令在内的指令序列;
判断第二指令是否与第一指令相关;
如果在第一与第二指令之间存在相关性,则选择一用于第一和第二指令的共用发送队列分区;其中,第一发送队列分区将指令发送给第一执行单元,第二发送队列分区将指令发送给第二执行单元;以及
将上述第一和第二指令存储在选定分区内等待执行。
2、如权利要求1的方法,其中,判断第一与第二指令之间相关性包括判断第二指令是否需要第一指令的结果。
3、如权利要求1的方法,其中,如果第一与第二指令是不相关的,则在第一与第二发送队列分区中作出选择是以公平算法为基础的。
4、如权利要求1的方法,其中,所述第一和第二执行单元相对其中存储有指令结果的第一寄存器文件是不对称的。
5、如权利要求1的方法,还包括:判断第三指令是否与第一和第二指令构成了一相关性链,如果是,则将所述第一、第二和第三指令发送给共用发送队列分区。
6、一种微处理器,带有执行流水线,该流水线包括:
第一和第二执行单元,第一执行单元包括第一寄存器文件,它能接收来自第一和第二执行单元的结果;
一发送队列,它包括第一和第二发送队列分区,其中,第一发送队列分区将指令发送给第一执行单元,第二发送队列分区将指令发送给第二执行单元;以及
相关性逻辑电路,它配置成能接收包括第一和第二指令在内的指令序列并判断第一与第二指令之间的相关性,并且如果在第一与第二指令之间存在相关性,则选择一用于第一和第二指令的共用发送队列分区。
7、如权利要求6的微处理器,其中,如果第二指令需要第一指令的结果,则所述相关性逻辑电路就会检测到相关性。
8、如权利要求6的微处理器,其中,所述第一和第二发送队列分区相对其中在执行之后存储有指令结果的第一寄存器文件是不对称的。
9、如权利要求6的微处理器,其中,所述第一和第二执行单元均包括一功能单元以及一相应的寄存器文件。
10、如权利要求6的微处理器,其中,所述第一执行单元包括定点加法器和加载/存储单元中的一个。
11、如权利要求6的微处理器,其中,所述第一执行单元包括一定点加法器和加载/存储单元。
12、一种数据处理系统,它包括微处理器、存储器、输入装置以及显示器,其中,所述微处理器包括一执行流水线,包括:
第一和第二执行单元,第一执行单元包括第一寄存器文件,它能接收来自第一和第二执行单元的结果;
一发送队列,它包括第一和第二发送队列分区,其中,第一分区将指令发送给第一执行单元,第二分区将指令发送给第二执行单元;以及
相关性逻辑电路,它配置成能接收包括第一和第二指令在内的指令序列并判断第一与第二指令之间的相关性,并且如果在第一与第二指令之间存在相关性,则选择一用于第一和第二指令的共用发送队列分区。
13、如权利要求12的系统,其中,如果第二指令需要第一指令的结果,则所述相关性逻辑电路就会检测到相关性。
14、如权利要求12的系统,其中,所述第一和第二执行单元相对其中在执行之后存储有指令结果的第一寄存器文件是不对称的。
15、如权利要求12的系统,其中,所述第一和第二执行单元均包括一功能单元以及一相应的寄存器文件。
16、如权利要求12的系统,其中,所述第一执行单元包括定点加法器和加载/存储单元中的一个。
17、如权利要求12的系统,其中,所述第一执行单元包括一定点加法器和加载/存储单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/652049 | 2000-08-31 | ||
US09/652,049 US6728866B1 (en) | 2000-08-31 | 2000-08-31 | Partitioned issue queue and allocation strategy |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1340760A CN1340760A (zh) | 2002-03-20 |
CN1188778C true CN1188778C (zh) | 2005-02-09 |
Family
ID=24615314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN01125890.XA Expired - Fee Related CN1188778C (zh) | 2000-08-31 | 2001-08-30 | 处理指令的方法、处理器和数据处理系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6728866B1 (zh) |
CN (1) | CN1188778C (zh) |
TW (1) | TW531711B (zh) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7249155B1 (en) * | 2000-02-09 | 2007-07-24 | International Business Machines Corporation | Method for processing a request to multiple instances of a server program |
US7437541B2 (en) * | 2004-07-08 | 2008-10-14 | International Business Machiens Corporation | Atomically updating 64 bit fields in the 32 bit AIX kernel |
CA2580444A1 (en) * | 2004-11-26 | 2006-06-01 | Bracco Imaging S.P.A. | Methods for mapping knowledge structures to organs: automated measurements and visualization using knowledge structure mapping |
US20070022274A1 (en) * | 2005-06-29 | 2007-01-25 | Roni Rosner | Apparatus, system, and method of predicting and correcting critical paths |
US7475225B2 (en) * | 2005-12-30 | 2009-01-06 | Intel Corporation | Method and apparatus for microarchitecture partitioning of execution clusters |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US7380104B2 (en) * | 2006-04-25 | 2008-05-27 | International Business Machines Corporation | Method and apparatus for back to back issue of dependent instructions in an out of order issue queue |
CN101627365B (zh) | 2006-11-14 | 2017-03-29 | 索夫特机械公司 | 多线程架构 |
WO2008070172A2 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for remote direct memory access to a solid-state storage device |
US8332608B2 (en) * | 2008-09-19 | 2012-12-11 | Mediatek Inc. | Method of enhancing command executing performance of disc drive |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
KR101769883B1 (ko) | 2009-09-09 | 2017-08-21 | 샌디스크 테크놀로지스 엘엘씨 | 저장부 할당 장치, 시스템, 및 방법 |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
US8972700B2 (en) * | 2011-02-28 | 2015-03-03 | Freescale Semiconductor, Inc. | Microprocessor systems and methods for latency tolerance execution |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
EP2689330B1 (en) | 2011-03-25 | 2022-12-21 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
KR101826121B1 (ko) | 2011-03-25 | 2018-02-06 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
EP2710481B1 (en) | 2011-05-20 | 2021-02-17 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
US9442772B2 (en) | 2011-05-20 | 2016-09-13 | Soft Machines Inc. | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines |
US20150039859A1 (en) * | 2011-11-22 | 2015-02-05 | Soft Machines, Inc. | Microprocessor accelerated code optimizer |
EP2783280B1 (en) * | 2011-11-22 | 2019-09-11 | Intel Corporation | An accelerated code optimizer for a multiengine microprocessor |
WO2013077872A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer and dependency reordering method |
US9858077B2 (en) | 2012-06-05 | 2018-01-02 | Qualcomm Incorporated | Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media |
US9158691B2 (en) * | 2012-12-14 | 2015-10-13 | Apple Inc. | Cross dependency checking logic |
US9201791B2 (en) * | 2013-01-08 | 2015-12-01 | Apple Inc. | Flow-ID dependency checking logic |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
KR101708591B1 (ko) | 2013-03-15 | 2017-02-20 | 소프트 머신즈, 인크. | 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법 |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
EP2972836B1 (en) | 2013-03-15 | 2022-11-09 | Intel Corporation | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9665372B2 (en) | 2014-05-12 | 2017-05-30 | International Business Machines Corporation | Parallel slice processor with dynamic instruction stream mapping |
US9672043B2 (en) | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
US9760375B2 (en) | 2014-09-09 | 2017-09-12 | International Business Machines Corporation | Register files for storing data operated on by instructions of multiple widths |
US9720696B2 (en) | 2014-09-30 | 2017-08-01 | International Business Machines Corporation | Independent mapping of threads |
US9977678B2 (en) | 2015-01-12 | 2018-05-22 | International Business Machines Corporation | Reconfigurable parallel execution and load-store slice processor |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
US10133581B2 (en) * | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Linkable issue queue parallel execution slice for a processor |
US10296348B2 (en) | 2015-02-16 | 2019-05-21 | International Business Machines Corproation | Delayed allocation of an out-of-order queue entry and based on determining that the entry is unavailable, enable deadlock avoidance involving reserving one or more entries in the queue, and disabling deadlock avoidance based on expiration of a predetermined amount of time |
CN105988952B (zh) * | 2015-02-28 | 2019-03-08 | 华为技术有限公司 | 为内存控制器分配硬件加速指令的方法和装置 |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US10417152B2 (en) * | 2016-06-03 | 2019-09-17 | International Business Machines Corporation | Operation of a multi-slice processor implementing datapath steering |
US9934033B2 (en) | 2016-06-13 | 2018-04-03 | International Business Machines Corporation | Operation of a multi-slice processor implementing simultaneous two-target loads and stores |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
US10521351B2 (en) | 2017-01-12 | 2019-12-31 | International Business Machines Corporation | Temporarily suppressing processing of a restrained storage operand request |
US10621090B2 (en) | 2017-01-12 | 2020-04-14 | International Business Machines Corporation | Facility for extending exclusive hold of a cache line in private cache |
US10901744B2 (en) | 2017-11-30 | 2021-01-26 | International Business Machines Corporation | Buffered instruction dispatching to an issue queue |
US10922087B2 (en) | 2017-11-30 | 2021-02-16 | International Business Machines Corporation | Block based allocation and deallocation of issue queue entries |
US10884753B2 (en) * | 2017-11-30 | 2021-01-05 | International Business Machines Corporation | Issue queue with dynamic shifting between ports |
US10929140B2 (en) | 2017-11-30 | 2021-02-23 | International Business Machines Corporation | Scalable dependency matrix with a single summary bit in an out-of-order processor |
US10942747B2 (en) | 2017-11-30 | 2021-03-09 | International Business Machines Corporation | Head and tail pointer manipulation in a first-in-first-out issue queue |
US10564979B2 (en) | 2017-11-30 | 2020-02-18 | International Business Machines Corporation | Coalescing global completion table entries in an out-of-order processor |
US10802829B2 (en) | 2017-11-30 | 2020-10-13 | International Business Machines Corporation | Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor |
US10572387B2 (en) | 2018-01-11 | 2020-02-25 | International Business Machines Corporation | Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer |
US11989583B2 (en) * | 2021-03-31 | 2024-05-21 | Arm Limited | Circuitry and method |
CN115269008B (zh) * | 2022-09-29 | 2023-02-28 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、介质及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175829A (en) * | 1988-10-25 | 1992-12-29 | Hewlett-Packard Company | Method and apparatus for bus lock during atomic computer operations |
KR100309566B1 (ko) * | 1992-04-29 | 2001-12-15 | 리패치 | 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치 |
US6058465A (en) * | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
US5892699A (en) * | 1997-09-16 | 1999-04-06 | Integrated Device Technology, Inc. | Method and apparatus for optimizing dependent operand flow within a multiplier using recoding logic |
-
2000
- 2000-08-31 US US09/652,049 patent/US6728866B1/en not_active Expired - Fee Related
-
2001
- 2001-08-28 TW TW090121192A patent/TW531711B/zh not_active IP Right Cessation
- 2001-08-30 CN CN01125890.XA patent/CN1188778C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1340760A (zh) | 2002-03-20 |
TW531711B (en) | 2003-05-11 |
US6728866B1 (en) | 2004-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1188778C (zh) | 处理指令的方法、处理器和数据处理系统 | |
EP0876646B1 (en) | Hierarchical scan logic for out-of-order load/store execution control | |
CN100478871C (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
US6247106B1 (en) | Processor configured to map logical register numbers to physical register numbers using virtual register numbers | |
US6105129A (en) | Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction | |
US6393555B1 (en) | Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit | |
US6405305B1 (en) | Rapid execution of floating point load control word instructions | |
WO1993022722A1 (en) | A system and method for retiring instructions in a superscalar microprocessor | |
JP2004537084A (ja) | 電力管理のための性能抑制機構を採用するマイクロプロセッサ | |
CN1885269A (zh) | 在微处理器恢复单元中进行写队列读数据的方法和装置 | |
EP1256053B1 (en) | Secondary reorder buffer microprocessor | |
US6185672B1 (en) | Method and apparatus for instruction queue compression | |
US6247117B1 (en) | Apparatus and method for using checking instructions in a floating-point execution unit | |
US6425072B1 (en) | System for implementing a register free-list by using swap bit to select first or second register tag in retire queue | |
US20080229065A1 (en) | Configurable Microprocessor | |
US6460130B1 (en) | Detecting full conditions in a queue | |
US6247114B1 (en) | Rapid selection of oldest eligible entry in a queue | |
EP1099158B1 (en) | Processor configured to selectively free physical registers upon retirement of instructions | |
KR100864890B1 (ko) | 데이터 처리장치에서의 소스 레지스터 록킹 | |
US6425074B1 (en) | Method and apparatus for rapid execution of FCOM and FSTSW | |
US20080229058A1 (en) | Configurable Microprocessor | |
JP2843750B2 (ja) | スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム | |
US5778247A (en) | Multi-pipeline microprocessor with data precision mode indicator | |
JP2001142699A (ja) | パイプラインプロセッサにおける命令データの転送メカニズム | |
US6240507B1 (en) | Mechanism for multiple register renaming and method therefor |
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: 20050209 Termination date: 20090930 |