CN1340760A - 分区的发送队列和分配策略 - Google Patents

分区的发送队列和分配策略 Download PDF

Info

Publication number
CN1340760A
CN1340760A CN01125890.XA CN01125890A CN1340760A CN 1340760 A CN1340760 A CN 1340760A CN 01125890 A CN01125890 A CN 01125890A CN 1340760 A CN1340760 A CN 1340760A
Authority
CN
China
Prior art keywords
instruction
instructions
transmit queue
correlativity
subregion
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.)
Granted
Application number
CN01125890.XA
Other languages
English (en)
Other versions
CN1188778C (zh
Inventor
J·A·卡尔
C·R·穆尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1340760A publication Critical patent/CN1340760A/zh
Application granted granted Critical
Publication of CN1188778C publication Critical patent/CN1188778C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, 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

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的指令发送给执行单元223的第二侧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 (20)

1、一种在微处理器中处理指令的方法,包括:
接收包括至少第一指令和第二指令在内的指令序列;
判断第二指令是否与第一指令相关;
根据上述根据相关性判断在第一与第二发送队列分区中作出选择,其中,第一发送队列分区将指令发送给第一执行单元,第二发送队列分区将指令发送给第二执行单元;以及
将上述第一和第二指令存储在选定分区内等待执行。
2、如权利要求1的方法,其中,如果第一与第二指令之间有相关性,则在第一与第二发送队列分区中作出选择包括选定用于上述第一和第二指令的共用发送队列分区。
3、如权利要求1的方法,其中,判断第一与第二指令之间相关性包括判断第二指令是否需要第一指令的结果。
4、如权利要求1的方法,其中,如果第一与第二指令是不相关的,则在第一与第二发送队列分区中作出选择是以公平算法为基础的。
5、如权利要求1的方法,其中,所述第一和第二执行单元相对其中存储有指令结果的第一寄存器文件是不对称的。
6、如权利要求1的方法,还包括:判断第三指令是否与第一和第二指令构成了一相关性链,如果是,则将所述第一、第二和第三指令发送给共用发送队列分区。
7、在一种微处理器中,一个执行流水线包括:
第一和第二执行单元,第一执行单元包括第一寄存器文件,它能接收来自第一和第二执行单元的结果;
一发送队列,它包括第一和第二发送队列分区,其中,第一发送队列分区将指令发送给第一执行单元,第二发送队列分区将指令发送给第二执行单元;以及
相关性逻辑,它配置成能接收包括第一和第二指令在内的指令序列并能判断第一与第二指令之间的相关性,而且还能根据相关性判断在第一与第二分区之间作出选择用于存储第一和第二指令。
8、如权利要求7的微处理器,其中,如果第一与第二指令之间存在相关性,则所述相关性指令能选择用于第一和第二指令的共用发送队列分区。
9、如权利要求7的微处理器,其中,如果第二指令需要第一指令的结果,则所述相关性逻辑就会检测到相关性。
10、如权利要求7的微处理器,其中,所述第一和第二发送队列分区相对其中在执行之后存储有指令结果的第一寄存器文件是不对称的。
11、如权利要求7的微处理器,其中,所述第一和第二执行单元均包括一功能单元以及一相应的寄存器文件。
12、如权利要求7的微处理器,其中,所述第一功能单元包括定点加法器和加载/存储单元中的一个。
13、如权利要求7的微处理器,其中,所述第一执行单元包括一定点加法器和加载/存储单元。
14、一种数据处理系统,它包括微处理器、存储器、输入装置以及显示器,其中,所述微处理器包括一执行流水线,包括:
第一和第二执行单元,第一执行单元包括第一寄存器文件,它能接收来自第一和第二执行单元数据库结果;
一发送队列,它包括第一和第二发送队列分区,其中,第一分区将指令发送给第一执行单元,第二分区将指令发送给第二执行单元;以及
相关性逻辑,它配置成能接收包括第一和第二指令在内的指令序列并能判断第一与第二指令之间的相关性,而且还能根据相关性判断在用于存储第一和第二指令的第一与第二分区之间作出选择。
15、如权利要求14的系统,其中,如果第一和第二指令之间存在有相关性,则所述相关性逻辑能选择用于第一和第二指令的共用发送队列分区。
16、如权利要求14的系统,其中,如果第二指令需要第一指令的结果,则所述相关性逻辑就会检测到相关性。
17、如权利要求14的系统,其中,所述第一和第二发送队列分区相对其中在执行之后存储有指令结果的第一寄存器文件是不对称的。
18、如权利要求14的系统,其中,所述第一和第二执行单元均包括一功能单元以及一相应的寄存器文件。
19、如权利要求14的系统,其中,所述第一功能单元包括定点加法器和加载/存储单元中的一个。
20、如权利要求14的系统,其中,所述第一执行单元包括一定点加法器和加载/存储单元。
CN01125890.XA 2000-08-31 2001-08-30 处理指令的方法、处理器和数据处理系统 Expired - Fee Related CN1188778C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/652,049 US6728866B1 (en) 2000-08-31 2000-08-31 Partitioned issue queue and allocation strategy
US09/652049 2000-08-31

Publications (2)

Publication Number Publication Date
CN1340760A true CN1340760A (zh) 2002-03-20
CN1188778C 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)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101676854B (zh) * 2008-09-19 2012-03-21 联发科技股份有限公司 光驱及增进光驱指令执行性能的方法
CN102598019A (zh) * 2009-09-09 2012-07-18 弗森-艾奥公司 用于分配存储的设备、系统和方法
CN104335167A (zh) * 2012-06-05 2015-02-04 高通股份有限公司 基于寄存器相关联偏好向执行管线发布指令以及相关指令处理电路、处理器系统、方法及计算机可读媒体
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US11573909B2 (en) 2006-12-06 2023-02-07 Unification Technologies Llc Apparatus, system, and method for managing commands of solid-state storage using bank interleave
WO2024066091A1 (zh) * 2022-09-29 2024-04-04 苏州元脑智能科技有限公司 一种数据处理方法、装置、非易失性可读存储介质及电子设备

Families Citing this family (61)

* Cited by examiner, † Cited by third party
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
JP2008521461A (ja) * 2004-11-26 2008-06-26 ブラッコ イメージング ソチエタ ペル アチオニ 知識構造のマッピングを使用した管状器官を測定する方法
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
EP2477109B1 (en) 2006-04-12 2016-07-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
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
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
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
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
EP2783281B1 (en) * 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
EP2783282B1 (en) * 2011-11-22 2020-06-24 Intel Corporation A microprocessor accelerated code optimizer and dependency reordering method
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
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
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
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
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
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
US10133581B2 (en) * 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a 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
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
US10621090B2 (en) 2017-01-12 2020-04-14 International Business Machines Corporation Facility for extending exclusive hold of a cache line in private cache
US10521351B2 (en) 2017-01-12 2019-12-31 International Business Machines Corporation Temporarily suppressing processing of a restrained storage operand request
US10901744B2 (en) 2017-11-30 2021-01-26 International Business Machines Corporation Buffered instruction dispatching to an issue queue
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
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
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
US10922087B2 (en) 2017-11-30 2021-02-16 International Business Machines Corporation Block based allocation and deallocation of issue queue entries
US10564979B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Coalescing global completion table entries in an out-of-order processor
US10884753B2 (en) * 2017-11-30 2021-01-05 International Business Machines Corporation Issue queue with dynamic shifting between ports
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
US20220318051A1 (en) * 2021-03-31 2022-10-06 Arm Limited Circuitry and method

Family Cites Families (4)

* Cited by examiner, † Cited by third party
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

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11573909B2 (en) 2006-12-06 2023-02-07 Unification Technologies Llc Apparatus, system, and method for managing commands of solid-state storage using bank interleave
US11960412B2 (en) 2006-12-06 2024-04-16 Unification Technologies Llc Systems and methods for identifying storage resources that are not in use
US11847066B2 (en) 2006-12-06 2023-12-19 Unification Technologies Llc Apparatus, system, and method for managing commands of solid-state storage using bank interleave
US11640359B2 (en) 2006-12-06 2023-05-02 Unification Technologies Llc Systems and methods for identifying storage resources that are not in use
CN101676854B (zh) * 2008-09-19 2012-03-21 联发科技股份有限公司 光驱及增进光驱指令执行性能的方法
CN102598019B (zh) * 2009-09-09 2015-08-19 才智知识产权控股公司(2) 用于分配存储的设备、系统和方法
US9606914B2 (en) 2009-09-09 2017-03-28 Sandisk Technologies Llc Apparatus, system, and method for allocating storage
US9292431B2 (en) 2009-09-09 2016-03-22 Longitude Enterprise Flash S.A.R.L. Allocating storage using calculated physical storage capacity
CN102598019A (zh) * 2009-09-09 2012-07-18 弗森-艾奥公司 用于分配存储的设备、系统和方法
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
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
CN104335167B (zh) * 2012-06-05 2018-04-27 高通股份有限公司 用于处理计算机指令的方法和处理器
CN104335167A (zh) * 2012-06-05 2015-02-04 高通股份有限公司 基于寄存器相关联偏好向执行管线发布指令以及相关指令处理电路、处理器系统、方法及计算机可读媒体
WO2024066091A1 (zh) * 2022-09-29 2024-04-04 苏州元脑智能科技有限公司 一种数据处理方法、装置、非易失性可读存储介质及电子设备

Also Published As

Publication number Publication date
CN1188778C (zh) 2005-02-09
US6728866B1 (en) 2004-04-27
TW531711B (en) 2003-05-11

Similar Documents

Publication Publication Date Title
CN1188778C (zh) 处理指令的方法、处理器和数据处理系统
CN100478871C (zh) 从队列处理指令刷新的生存期计数器设计的系统和方法
US6247106B1 (en) Processor configured to map logical register numbers to physical register numbers using virtual register numbers
EP0876646B1 (en) Hierarchical scan logic for out-of-order load/store execution control
JP2597811B2 (ja) データ処理システム
US6119223A (en) Map unit having rapid misprediction recovery
CN100449499C (zh) 在微处理器恢复单元中进行写队列读数据的方法和装置
US6405305B1 (en) Rapid execution of floating point load control word instructions
JP2004537084A (ja) 電力管理のための性能抑制機構を採用するマイクロプロセッサ
US6223278B1 (en) Method and apparatus for floating point (FP) status word handling in an out-of-order (000) Processor Pipeline
JP2005302025A (ja) 複数の未解決命令を追跡するための方法、完了テーブルおよびプロセッサ
US20060179265A1 (en) Systems and methods for executing x-form instructions
US6629233B1 (en) Secondary reorder buffer microprocessor
RU2142157C1 (ru) Способ функционирования системы обработки
US6185672B1 (en) Method and apparatus for instruction queue compression
US20080229065A1 (en) Configurable Microprocessor
JP3142813B2 (ja) レジスタの名前変更を管理するための情報処理システムおよび方法
KR100864890B1 (ko) 데이터 처리장치에서의 소스 레지스터 록킹
EP1099158B1 (en) Processor configured to selectively free physical registers upon retirement of instructions
EP0518420A2 (en) Computer system for concurrent processing of multiple out-of-order instructions
US6247114B1 (en) Rapid selection of oldest eligible entry in a queue
US6460130B1 (en) Detecting full conditions in a queue
US20080229058A1 (en) Configurable Microprocessor
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