CN100357884C - 用于处理指令的方法、处理器以及系统 - Google Patents

用于处理指令的方法、处理器以及系统 Download PDF

Info

Publication number
CN100357884C
CN100357884C CNB2005100819663A CN200510081966A CN100357884C CN 100357884 C CN100357884 C CN 100357884C CN B2005100819663 A CNB2005100819663 A CN B2005100819663A CN 200510081966 A CN200510081966 A CN 200510081966A CN 100357884 C CN100357884 C CN 100357884C
Authority
CN
China
Prior art keywords
instruction
resource
processor
resources
hardware
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
Application number
CNB2005100819663A
Other languages
English (en)
Other versions
CN1760826A (zh
Inventor
布赖恩·威廉·柯伦
布赖恩·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 CN1760826A publication Critical patent/CN1760826A/zh
Application granted granted Critical
Publication of CN100357884C publication Critical patent/CN100357884C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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

Abstract

一种在计算机处理器内处理指令的更有效方法,包括:使资源字段与相应程序指令相关联,其中资源字段表示执行该程序指令需要哪个处理器硬件资源;根据其资源字段,计算合并两个或者更多个程序指令的资源要求;以及根据所计算的资源要求,确定可以用于同时执行被合并的程序指令的资源。可以将表示所需资源的资源矢量编码为资源字段;以及在后面的阶段解码该资源字段,以获得资源矢量。可以将资源字段存储到与相应程序指令有关的指令缓存器中。该处理器以同时多线程模式工作,其中不同的程序指令是不同硬件线程的一部分。在可用资源等于或者大于一组指令的资源要求时,可以将这些程序指令同时分配到硬件资源。

Description

用于处理指令的方法、处理器以及系统
技术领域
本发明一般地涉及一种计算机系统,本发明更特别地涉及一种在处理器内分配程序指令的方法以及改进型处理器设计。
背景技术
高性能计算机系统采用多处理器执行嵌入诸如软件应用程序和操作系统的计算机程序内的各种程序指令。图1示出典型的多处理器系统10。计算机系统10具有一个或者多个被排列在一个或者多个处理器组中的处理单元,在所示的系统中,在处理器组1 4中有4个处理单元12a、12b、12c和12d。通过系统总线或者结构总线(fabric bus)16,该处理单元与系统10的其它部件通信。结构总线16连接到系统存储器20以及各种外围设备22。通过JTAG接口或者其它外部业务端口,业务处理器18a、18b连接到处理单元12。可以选择性地利用处理器桥接器24使其它处理器组互连。系统10还可以包括固件(未示出),该固件存储系统的基本输入/输出逻辑,以及每当首先接通计算机系统(引导)时从外围设备之一上查找并装载操作系统。
系统存储器20(随机存取存储器,即,RAM)在易失(临时)状态下存储处理单元使用的程序指令和操作数数据。通过,例如,采用PCI主桥接器的外围部件互连(PCI)局部总线,外围设备22可以连接到结构总线16。PCI桥接器提供短等待时间通路,通过该通路,处理单元12a、12b、12c和12d可以访问映像到总线存储器或者I/O地址空间内的任何位置的PCI器件。PCI主桥接器22还提供高带宽通路,以使PCI器件访问RAM 20。这种PCI器件可以包括:网络适配器;小型计算机系统接口(SCSI)适配器,有助于与永久存储器件(即,硬盘)互连;以及扩展总线桥接器,例如,行业标准体系结构(ISA)扩展总线,用于连接到输入/输出(I/O)设备,该输入/输出(I/O)设备包括键盘、与显示器相连的图形适配器以及与显示器一起使用的图形指示设备(鼠标)。
在对称多处理器(SMP)计算机上,所有的处理单元12a、12b、12c和12d通常相同,即,它们都公共的指令和协议集合或子集来工作,而且它们通常具有同样的体系结构。与对处理单元12a所示的相同,每个处理单元可以分别包括一个或者多个处理器核心26a、26b,为了使计算机运行,它们执行程序指令。典型的处理器核心包括国际商业机器公司销售的PowerTM处理器,它包括单集成电路超标量微处理器,该单集成电路超标量微处理器具有全部由集成电路系统构成的各种执行单元(定点单元、浮点单元以及装载/存储单元)、寄存器、缓冲器、存储器以及其它功能单元。处理器核心可以根据精简指令计算(RISC)技术工作,而且它们可以采用流水线或者无序执行指令,以进一步提高超标量体系结构的性能。
每个处理器核心26a、26b可以分别包括利用高速存储器件实现的板上(L1)缓存器(通常分离指令缓存器和数据缓存器)。缓存器通常用于临时存储可能被处理器重复访问的数值,以通过避免从系统存储器20装载该数值的较长步长,加速处理过程。处理单元可以包括另一个缓存器,即,第二级(L2)缓存器28,它与存储控制器30一起支持两个分别作为核心26a和26b的一部分的L1缓存器。还可以设置其它缓存器级,例如,可以通过结构总线16访问的L3缓存器32。从最高级(L1)到最低级(L3)的每个缓存器级可以顺序存储更多的信息,但是损失是存取时间长。例如,该处理器核心上的板上L1缓存器可以具有128千字节存储容量的存储器,L2缓存器28可以具有512千字节的存储容量,L3缓存器32可以具有2兆字节的节存储容量。为了有助于修理/更换有缺陷的处理单元部件,可以以可替换电路板或者类似现场可替换单元(FRU)的方式,构造每个处理单元12a、12b、12c和12d,该可替换电路板或者类似现场可替换单元可以以模块方式容易地换入安装到系统10上或者从系统10换出。
在超标量体系结构中,可以以有序或者无序方式完成指令。有序完成意味着某个指令之前分配的所有指令完成之前不完成所述指令。无序完成意味着只要满足预定规则,在某个指令之前分配的所有指令已经完成之前允许完成所述指令。在流水线超标量处理器上,首先取指令,解码指令,然后缓存指令。在资源和操作数可用时,可以将指令分配到执行单元。此外,根据关于所采取的分支的预测,推测取指令和分配指令。结果是改变执行阶段的指令池,通过将最终结果写入系统存储器分层结构没有完成所有指令。由于资源可用,而且消除各分支,所以指令按照程序顺序(program order)完成,因此,保留以程序顺序执行指令的机器的外部特征(appearance)。通过对处理器内的硬件进行修改,例如,通过使一个处理器核心内具有多个执行单元,可以进一步提高整体指令吞吐量。
可以独立利用被称为硬件多线程的另一种技术执行被称为线程或者上下文的较短序列的指令。当处理器因为多种原因之一而停止并且不能继续处理或者执行这些线程之一时,该处理器可以转换到另一个线程。计算机处理器体系结构技术领域内的技术人员使用的术语“多线程”与使用该术语的软件不同,在软件中,将一个任务细分为多个有关线程。软件多线程实际上包括操作系统,在发生线程转换之前,该操作系统管理数据并使寄存器中的数据存储到主内存,而且保持有关指令和相关指令的程序顺序。软件多线程既不需要,而且也不涉及硬件多线程,反之亦然。硬件多线程控制硬件体系结构寄存器、执行单元以及流水线处理器,以保持处理器硬件内的一个或者多个独立执行指令集(线程)的状态。在多任务系统中,例如,可以由不同任务、由软件多线程系统编译的不同线程或者由不同I/O处理器获得硬件线程。在硬件多线程的每个例子中,可以使一个以上的线程独立地保持在处理器寄存器中。
同时多线程(SMT)是一种处理器设计,它将硬件多线程与超标量处理器技术相结合,以使多个线程在每个周期发出指令。与在给定周期仅一个硬件上下文(即,线程)是活动的其它硬件多线程体系结构不同,SMT允许所有线程上下文同时争用和共享处理器资源。此外,与缺少每线程指令级并行性(per-thread instruction-level parallelism)(ILP)的传统超标量处理器不同,同时多线程利用多个线程对单线程低ILP进行补偿。性能结果是显著的较高指令吞吐量,而且程序加速工作负荷的变化,该工作负荷包括:商用数据库、万维网服务器以及多程序环境和并行环境下的科学应用。
利用SMT处理,也存在一些性能缺点。由于时序和复杂性,在典型的SMT处理器上,在同一个周期内不能分配两个线程。换句话说,在给定的周期内可以分配一个线程,而且只能分配该线程,因此,争用资源的另一个线程等待轮到它的分配。
如果分配的线程未用尽所有资源(例如,执行单元),则一个或者多个执行单元可能处于空闲,因为,分配的线程没有足够的指令馈送到所有执行单元。例如,如果在该处理器中有两个定点单元(FXU)和两个装载/存储单元(LSU),而且如果分配的线程仅具有两个要分配的定点指令,则在这两个FXU执行指令时,这两个LSU将在一个周期内处于空闲。这种低效率可能在处理器内产生瓶颈,而且降低系统的总体处理吞吐量。
因此,希望开发一种在SMT处理器上处理指令的改进型方法,以提高有效分配带宽。如果该方法可以更有效利用现有处理器硬件,而不过度增加开销,则该方法更加有利。
发明内容
因此,本发明的一个目的是提供在计算机系统的处理器内分配程序指令的改进型方法。
本发明的另一个目的是一种有利于在同时多线程(SMT)处理器设计内实现以提高分配带宽的方法。
本发明的又一个目的是提供一种SMT处理器的改进型构造。
上述目的通过具有多个硬件资源的计算机处理器内处理指令的方法来实现,该方法通常包括步骤:至少接收第一和第二程序指令;使第一和第二资源字段分别与第一和第二程序指令相关联,其中资源字段表示执行相应程序指令需要哪个硬件资源;根据第一和第二资源字段,计算合并第一和第二程序指令的资源要求;以及根据计算的资源要求,确定可以用于同时执行第一和第二程序指令的资源可用性。可以将第一和第二资源矢量分别编码为第一和第二资源字段,而且计算过程包括解码该资源字段,以获得第一和第二资源矢量。可以将该资源字段存储到与相应程序指令有关的指令缓存器中。处理器以同时多线程模式工作,其中第一程序指令是第一线程的一部分,而第二程序指令是第二线程的一部分。在资源可用性等于或者大于指令组的资源要求时,同时将这些指令分配到硬件资源。可以将开始位插入程序指令之一中,以确定该指令组。特别是,硬件资源可以是执行单元,至少包括定点单元、装载/存储单元、浮点单元以及分支处理单元。因此,本发明可以同时执行多个指令,因此,可以更有效利用硬件资源,并总体提高处理器吞吐量。
根据下面所做的详细书面描述,本发明的上述以及其它目的、特征和优点显而易见。
附图说明
通过参考附图,本领域内的技术人员可以更好地理解本发明,而且本发明的许多目的、特征和优点变得显而易见。
图1是示出传统对称多处理器(SMP)计算机系统的方框图,其中示出四个通常相同的处理单元之一的内部细节;
图2是根据本发明构造的、具有多个执行单元的计算机处理器的一个实施例的方框图,该执行单元包括定点单元、浮点单元、装载/存储单元以及分支处理单元;
图3是根据本发明的一种实现用于分配程序指令的图2所示处理器使用的资源字段(resource field)的图解表示;
图4是示出根据本发明的一个实施例对于同时多线程(SMT)模式,支持在一个处理器周期内分配多个线程的数据流和资源字段计算过程的方框图;
图5是示出根据本发明的一种实现分配程序指令的逻辑流的示意图。
在不同附图中利用同样的参考编号表示类似或者相同的项目。
具体实施方式
现在参考附图,特别是参考图2,图2示出根据本发明构造的计算机处理器的一个实施例40。处理器40通常包括单个集成电路超标量微处理器,而且包括各种执行单元、寄存器、缓冲器、存储器以及其它功能单元(下面做进一步解释),它们均由集成电路构成。处理器40可以根据精简指令计算(RISC)技术工作。通过处理器40内的总线接口单元(BIU)44,处理器40连接到系统总线或者结构总线42。通过参与总线仲裁,BIU 44对在处理器40与连接到系统总线42的其它设备,例如,主内存(未示出)之间传送信息进行控制。处理器40、系统总线42以及连接到系统总线42的其它设备一起构成主数据处理系统。本技术领域内的技术人员应当知道本发明并不局限于图2所示的特定构造,因为在仍实现在此公开的新颖功能性的同时,可以省略一些部件,可以附加其它部件,或者设置不同互连。
BIU 44连接到处理器40内的指令缓存器与存储器管理单元(MMU)46和数据缓存器与MMU 48。缓存器,例如,指令缓存器与MMU 46和数据缓存器与MMU 48内的缓存器可以使处理器40对先前从主内存传送到该缓存器的子数据集或者子指令集实现较快的存取时间,因此,提高了主数据处理系统的运行速度。指令缓存器与MMU 46进一步连接到顺序取指令器50,在每个周期,该顺序取指令器50均要从指令缓存器与MMU 46取指令以便执行。顺序取指令器50将从指令缓存器与MMU 46取出的分支指令发送到分支处理单元(BPU)52,用于计算下一个取指令地址,但是临时存储指令队列54上的顺序指令,供处理器40内的其它执行电路系统执行。
除了BPU 52、处理器40内的执行电路系统还具有用于执行顺序指令的多个执行单元,包括定点单元(FXU)56、装载存储单元(LSU)58、浮点单元(FPU)60以及其它分支处理单元(BPU)61。在每个处理器周期中,这些执行单元56、58、60和61执行顺序指令中特定类型的一个或者多个指令。例如,利用从特定通用寄存器(GPR)62或者GPR更名缓冲器64接收的源操作数,FXU 56执行定点数学运算和逻辑运算,例如,加、减、“与”、“或”以及“异或”。执行了定点指令后,FXU 56将该指令的数据结果输出到GPR更名缓冲器64,GPR更名缓冲器64临时存储操作数数据,直到通过将GPR更名缓冲器64内的结果数据传送到一个或者多个GPR 62,完成该指令。
FPU 60对从浮点寄存器(FPR)66或者FPR更名缓冲器68接收的源操作数执行单精度和双精度浮点运算和逻辑运算,例如,浮点乘法和除法。FPU 60将通过执行浮点指令获得的数据输出到选择的FPR更名缓冲器68,该选择的FPR更名缓冲器68临时存储该结果数据,直到通过将结果数据从FPR更名缓冲器68传送到选择的FPR 66。LSU 58执行浮点指令和定点指令,这样将数据从存储器(即,数据缓存器与MMU48内的数据缓存器或者主内存)装载到选择的GPR 62或者FPR 66,或者这样将选择的GPR 62、GPR更名缓冲器64、FPR 66或者FPR更名缓冲器68之一输出的数据存储到系统存储器。BPU 61执行调节代码控制指令和分支指令。
处理器40可以采用流水线执行指令和无序执行指令,以进一步提高超标量体系结构的性能。因此,只要观察到数学相关性,FXU 56、LSU 58、FPU 60以及BPU 61就可以以任意顺序执行指令。此外,以流水线阶段顺序,特别是,以5个不同流水线阶段:取指令、解码/分配、执行、结束以及完成的顺序FXU 56、LSU 58以及BPU 61分别对指令进行处理。
在取指令阶段,顺序取指令器50从指令缓存器与MMU 46中检索与一个或者多个存储地址有关的一个或者多个指令。顺序取指令器50使从指令缓存器与MMU 46取出的顺序指令存储到指令队列54上。相反,顺序取指令器50移除(关闭(fold out))指令流中的分支指令,然后,将它们转发到BPU 52,供执行。BPU 52包括预测机构,该预测机构可以包括动态预测机构,例如,分支历史表,通过预测是否取分支,它可以使BPU 52推测执行未定条件分支指令。
在解码/分配阶段期间,分配单元70对指令队列54上的一个或者多个指令进行解码,并将它们分配到执行单元56、58、60和61,下面将做进一步说明。此外,分配单元70对分别分配的指令结果数据分配GPR更名缓冲器64或者FPR更名缓冲器68内的更名缓冲器。分配之后,指令还存储在完成单元72的多时隙完成缓冲器上,以等待完成。在无序执行期间,利用唯一指令标识符,处理器40跟踪所分配的指令的程序顺序。
在执行阶段期间,在用于指出的运算的操作数和执行资源可用时,执行单元56、58、60和61有机会执行从分配单元70接收的指令。执行单元56、58、60和61优选装备预留站(reservation station),用于存储分配到执行单元的指令,直到操作数或者执行资源可用。在终止执行指令后,根据指令类型,如果存在,执行单元56、68、60和61使数据结果存储到GPR更名缓冲器64或者FPR更名缓冲器68上。然后,执行单元56、68、60和61通知完成单元72已经完成执行哪些指令。最后,以从完成单元72的完成缓冲器输出的程序顺序完成各指令。通过分别将GPR更名缓冲器64和FPR更名缓冲器68输出的指令的数据结果传送到GPR 62和FPR 66,完成FXU 56和FPU 60执行的指令。通过将结束的指令传送到对其执行指出的装载/存储操作的完成存储队列或者完成装载队列,完成LSU 58执行的装载和存储指令。
在说明性实施例中,通过使多线程在每个周期发出不同指令,处理器40利用同时多线程(SMT)增强处理器吞吐量。在处理器40内,可以以各种方式,例如,粗粒度多线程(在执行长等待时间事件的线程经验(thread experierce),例如,从存储器中检索数据和/或者指令、处理器中断等之前,执行一个线程)或者细粒度多线程(基于逐个周期,交错或者转换各线程),执行硬件多线程。通常,处理器40使用同时硬件多线程以在处理器上并行保持N个线程、或者N个状态,然后,同时并行执行N个线程。分别对后面的某些寄存器(复制N次)内的N个线程的结果,复制处理器寄存器:通用寄存器、浮点寄存器、条件寄存器、浮点状态与控制寄存器、计数寄存器、链路寄存器、异常寄存器、保存/恢复寄存器、专用寄存器等。如果没有,可以复制诸如段旁视寄存器的专用缓冲器,可以利用线程号标记每个项目,而且清仓各消除转换器上的每个项目。此外,还可以复制某些分支预测机构,例如,相关寄存器和返回堆栈。不需要对每个线程复制所有的处理器特征,存在一些共享的和一些复制的寄存器,以及/或者在流水线上存在一些单独并行级,或者存在该流水线的其它共享级。不需要复制处理器的某些较高级功能,例如,缓存器、指令缓冲器、存储队列、指令分配程序、功能单元或者执行单元、流水线、转换旁视缓冲器(TLB)或者分支历史表。
有利的是,在SMT处理器设计中可以顺序本发明,以通过增强将指令分配到各种执行单元的方式,提高分配带宽。利用每个指令将编码的资源字段传送到分配单元70,以指出在每次分配时,每个特定指令分别使用什么资源。对给定指令的资源字段进行编码,然后,将它写入指令缓存器与MMU 46(“ICache”),而且使它与该指令本身一起存储到该ICache。资源可以是任意功能单元或者建造的设施,特别是指诸如FXU 56、LSU 58、FPU 60以及BPU 61的执行单元。
图3示出指令82的资源字段80的一种实现。资源字段80包括“开始”位和要求的资源位(在该例子中是3位)。开始位用于将指令组织在一起,以便同事分配多个指令。换句话说,可以利用组分配多个指令。正如下面进一步说明的那样,可以在写入ICache之前,在预解码级形成组。在解码资源字段时,被解码的位指出该指令的资源要求(即,资源矢量82)。在该例子中,资源位被解码为5个可能值之一,以指出下面的5个资源要求:“1 FXU”;“1 LSU”;“1 FPU”;“1 BPU”;或者“2FXU”之一。“1 FXU”矢量表示该指令需要使用一个(需要一个且仅需要一个)FXU执行单元;如果该值是0,则该操作不需要定点单元。“1LSU”矢量表示该指令需要使用一个LSU执行单元;如果该值是0,则该操作不需要装载/存储单元。“1 FPU”矢量表示该指令需要使用一个FPU执行单元;如果该值是0,则该操作不需要浮点单元。“1 BPU”矢量表示该指令需要一个BPU执行单元;如果该值是0,则该操作不需要分支处理单元。“2 FXU”矢量表示该指令需要使用两个FXU执行单元;如果该值是0,则该操作不需要,或者需要一个定点单元,如“1 FXU”位规定的那样。因此,该例子指具有两个FXU 56(“FXU0”和“FXU1”)的处理器。根据该实现和指令的类型,被解码的资源字段的多个位可以是获得的,以表示该指令所需资源的其它变化。
这样形成指令组,以致可以一起分配同一个线程上的同一个组中的所有指令。该命令意味着(i)该组内的指令之间不能相关;以及(ii)该组的资源要求不能超过可用资源。例如,如果微处理器具有两个FXU,则该指令组不能要求两个以上的FXU来完成。对于给定的线程,在第二FXU指令之后,为了保证在一组中最多有两个FXU指令,可以在该指令上插入开始位,以终止该组。在另一个例子中,如果在微处理器上有5个执行单元(任意类型的),则如果在同一个正确内可以将先前(旧的)的所有5个指令分配到5个执行单元,则将开始位插入第六指令。因此,如果指令是组中的第一指令,则忽略开始位,而认为该指令和要求的资源字段有效(认为该指令本身有效)。如果指令不是该组中的第一指令,则评估该开始位,而且如果该开始位是获得的(1),则认为该指令和任意新指令无效,而且这些指令要求的资源字段也无效。还将开始位插入对旧指令相关的任意指令中,以确保相关指令与产生该结果的指令在不同组中。
图4示出对于SMT模式,支持在同一个周期内将两个线程分配到FXU的数据流和资源字段计算过程。对每个指令产生资源位和开始位的预解码电路76检验L2缓存器,然后,将利用指令将该信息写入ICache46。在取指令时间,将指令和这些指令的资源字段发送到指令队列54中的指令缓冲器(IBUF),以存储要分配的指令。在SMT模式下,每个线程有一个IBUF。在该例子中,在SMT模式下有两个线程要执行,“thread0”和“thread1”。在任意给定时间,一个线程具有较高分配优先权(该线程被称为主线程),而另一个线程具有较低分配优先权(该线程被称为辅助线程)。当从IBUF读出指令供分配单元70分配时,还读出这些指令的资源字段。在同一个时间读两个IUF。逻辑电路90分别对每个线程的资源字段进行解码,以确定每个线程分别需要什么资源。还读开始位。忽略该组中第一指令的开始位。如果特定指令X的开始位是获得的,而且指令X不是该组中的第一个,则该指令以及比X新的任意指令的资源字段无效,如上所述(即,该组中比指令X旧的指令的资源字段仍有效)。然后,逻辑电路92将每个线程的解码资源字段(资源矢量)合并在一起,以计算两个线程所需的总资源。逻辑电路92产生复用器选择信号,用于正确分配指令,该复用器选择信号保存在锁存器94中。如果用于同时分配两个线程的资源不足,则对线程之一产生“保持”信号,并将该“保持”信号存储到单独锁存器96中。然后,将指令发送到FXU分配复用器98,逻辑92产生的选择信号控制该FXU分配复用器98。复用器98将选择的指令传送到各FXU 56。
根据两个线程的总资源要求,可以识别几种情况。如果两个线程要求的总资源等于或者小于可用资源数,则可以同时分配这两个线程的所有指令。例如,如果微处理器具有两个可用FXU执行单元,thread0仅需要一个FXU,而thread1仅需要一个FXU,则可以在同一种周期分配两个线程中的所有指令。如果两个线程需要的总资源大于可用资源数,则主线程将占用它所需要的所有资源,而辅助线程将占用任意剩余资源。例如,如果微处理器还具有两个可用FXU执行单元,thread0需要一个FXU,thread1需要两个FXU,thread0是主线程,则仍可以在同一个周期分配两个线程,其中thread0分配一个FXU指令,因为它是主线程,而thread1只能分配其两个FXU指令之一。辅助线程中的第二FXU指令将等待,直到适合进行资源计算和分配的下一个周期。在另一个例子中,还是对于具有两个可用FXU执行单元的微处理器,如果thread0需要两个FXU,thread1需要一个FXU,thread0是主线程,则仅分配thread0。thread0能够分配其两个FXU指令,因为它是主线程,而thread1不能分配任何FXU指令。辅助线程中的FXU指令将等待,直到适合进行资源计算和分配的下一个周期。
图3和4所示实施例的描述的体系结构仅是举例说明,而没有限制性意义,由于可以有比同一种类型仅两个执行单元多的执行单元,因此,多个执行单元可以是定点单元之外的单元。例如,在一个处理器核心中可以有4个FXU、4个LSU、4个FPU以及4个BPU。相反,可以在没有备用执行单元,即,仅有一个FXU、一个LSU、一个FPU以及一个BPU的系统内采用本发明,因为,本发明可以同时将多个指令分配到这些单元之任一。
图5是示出在SMT模式下,分配两个线程的逻辑处理流程的示意图。该处理过程以从L2缓存器计算指令开始(100)。预解码各指令,以产生其资源位和开始位(101),然后,将该信息与该指令一起写入指令缓存器(102)。然后,对IBUF取指令(103)。进行检验,以确定涉及哪个线程(thread0或者thread1)(104)。如果该指令来自thread0,则将它们写入IBUF0(104),然后,分配单元70从IBUF0读取该指令(106)。对每个指令的资源字段进行解码(108),然后,计算该指令要求的资源(110)。返回步骤102,如果该指令不是来自thread0(即,它们是thread1的一部分),则将它们写入IBUF1(112),然后,分配单元70从IBUF1读取这些指令(114)。以同样的方法,对每个指令的资源字段进行解码(116),然后,计算该指令要求的资源(118)。从两个线程解码的资源矢量合并在一起,以计算两个线程的总资源要求(120)。然后,分配逻辑确定两个线程要求的资源是否等于或者小于可用资源(122)。如果是这样,则分配两个线程中的所有指令。如果不是这样,则检验哪个线程是主线程(126)。如果thread0是主线程,则分配thread0中的所有指令,而如果存在剩余可用资源,则分配thread1中的附加指令,同时在下一个周期内保存不能从thread1分配的指令(128)。如果thread0不是主线程(即,thread1是主线程),则对所分配的、线程1的所有指令的优先权颠倒,而且尽可能分配thread0的附加指令,同时,在下一个周期保存thread0内的未分配附加指令(130)。
因此,通过更有效利用现有处理器硬件,本发明显著改善SMT环境下的分配带宽。这种改善仅引起在ICache 46的预解码级少量附加硬件以及在分配单元70附加资源逻辑。
尽管参考具体实施例对本发明进行了描述,但是并不能将本发明理解为具有限制性意义。通过参考对本发明所做的描述,所公开实施例的各种修改以及本发明的变换实施例对于本技术领域内的技术人员是显而易见的。
例如,尽管本发明特别适合高端多处理器计算机系统,但是,它也可以用于单处理器系统。因此,可以预料,在不脱离所附权利要求限定的本发明实质范围的情况下,可以进行各种修改。

Claims (29)

1.一种在具有多个硬件资源的计算机处理器内处理指令的方法,包括:
至少接收第一和第二程序指令;
使第一和第二资源字段分别与第一和第二程序指令相关联,其中资源字段表示执行相应程序指令需要哪个硬件资源;
根据第一和第二资源字段,计算合并第一和第二程序指令的资源要求;以及
根据所计算的资源要求,确定可以用于同时执行第一和第二程序指令的资源可用性。
2.根据权利要求1所述的方法,其中:
所述相关联包括将第一和第二资源矢量分别编码为第一和第二资源字段;以及
所述计算包括解码第一和第二资源字段,以获得第一和第二资源矢量。
3.根据权利要求1所述的方法,进一步包括将第一和第二资源字段与相应第一和第二程序指令一起存储到指令缓存器中。
4.根据权利要求1所述的方法,其中处理器以同时多线程模式工作,其中第一程序指令是第一线程的一部分,而第二程序指令是第二线程的一部分。
5.根据权利要求1所述的方法,进一步包括根据确定的资源可用性,同时将第一和第二程序指令分配到硬件资源。
6.根据权利要求1所述的方法,其中硬件资源是执行单元,至少包括定点单元、装载/存储单元、浮点单元以及分支处理单元。
7.根据权利要求1所述的方法,其中所述确定包括将计算的资源要求与该多个硬件资源中与所述资源要求对应的可用资源的数目进行比较。
8.根据权利要求1所述的方法,进一步包括通过检验第一和第二资源字段,形成至少包括要同时执行的第一和第二程序指令的指令组。
9.根据权利要求8所述的方法,进一步包括将开始位至少插入程序指令之一中,以确定该指令组。
10.一种处理器,包括:
多个硬件资源;以及
分配单元,用于将程序指令分配到所述硬件资源,所述分配单元包括指令组形成逻辑,该指令组形成逻辑计算至少合并第一和第二程序指令的资源要求,并根据所计算的资源要求,确定可以用于同时执行合并的程序指令的资源可用性。
11.根据权利要求10所述的处理器,进一步包括预解码逻辑,用于使资源字段与相应程序指令相关,以指出需要哪个所述硬件资源执行相应程序指令。
12.根据权利要求11所述的处理器,其中:
通过将资源矢量编码为相应资源字段,所述预解码逻辑使各资源字段与相应程序指令相关;以及
所述指令组形成逻辑解码资源字段,以获得相应资源矢量。
13.根据权利要求11所述的处理器,进一步包括缓存器,用于存储程序指令,并将它们送到所述分配单元,而且用于存储与相应程序指令相关的资源字段。
14.根据权利要求10所述的处理器,其中该处理器以同时多线程模式工作,其中合并程序指令中的第一程序指令是第一线程的一部分,而合并程序指令中的第二程序指令是第二线程的一部分。
15.根据权利要求10所述的处理器,其中根据确定的资源可用性,所述分配单元同时将合并的程序指令分配到硬件资源。
16.根据权利要求10所述的处理器,其中硬件资源是执行单元,至少包括定点单元、装载/存储单元、浮点单元以及分支处理单元。
17.根据权利要求10所述的处理器,其中通过将计算的资源要求与该多个硬件资源中与所述资源要求对应的可用资源的数目进行比较,所述指令组形成逻辑确定资源可用性。
18.根据权利要求11所述的处理器,其中通过检验第一和第二资源字段,所述指令组形成逻辑形成至少包括要同时执行的第一和第二程序指令的指令组。
19.根据权利要求18所述的处理器,其中所述预解码逻辑将开始位至少插入合并程序指令之一中,以确定该指令组。
20.一种计算机系统,包括:
系统存储器件;
缓存器,连接到所述系统存储器件;以及
至少一个处理器,用于从所述缓存器接收程序指令,所述处理器具有:多个硬件资源;以及指令组形成逻辑,该指令组形成逻辑计算至少合并两个程序指令的硬件资源要求,并根据计算的资源要求,确定可以用于同时执行合并的程序指令的硬件资源可用性。
21.根据权利要求20所述的计算机系统,其中所述缓存器包括预解码逻辑,用于使资源字段与相应程序指令相关,以指出需要哪个所述硬件资源执行相应程序指令。
22.根据权利要求21所述的计算机系统,其中:
通过将资源矢量编码为相应资源字段,所述预解码逻辑使各资源字段与相应程序指令相关;以及
所述指令组形成逻辑解码资源字段,以获得相应资源矢量。
23.根据权利要求21所述的计算机系统,其中所述缓存器进一步存储与相应程序指令相关的资源字段。
24.根据权利要求20所述的计算机系统,其中所述处理器以同时多线程模式工作,其中合并程序指令中的第一程序指令是第一线程的一部分,而合并程序指令中的第二程序指令是第二线程的一部分。
25.根据权利要求20所述的计算机系统,其中所述处理器进一步具有分配单元,根据确定的资源可用性,该分配单元同时将合并的程序指令分配到所述硬件资源。
26.根据权利要求25所述的计算机系统,其中所述硬件资源是执行单元,至少包括定点单元、装载/存储单元、浮点单元以及分支处理单元。
27.根据权利要求20所述的计算机系统,其中通过将所计算的资源要求与该多个硬件资源中与所述资源要求对应的可用资源的数目进行比较,所述指令组形成逻辑确定硬件资源可用性。
28.根据权利要求21所述的计算机系统,其中通过检验第一和第二资源字段,所述指令组形成逻辑形成至少包括要同时执行的第一和第二指令的指令组。
29.根据权利要求28所述的计算机系统,其中所述预解码逻辑将开始位至少插入合并程序指令之一中,以确定该指令组。
CNB2005100819663A 2004-10-14 2005-07-08 用于处理指令的方法、处理器以及系统 Expired - Fee Related CN100357884C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/965,143 2004-10-14
US10/965,143 US7237094B2 (en) 2004-10-14 2004-10-14 Instruction group formation and mechanism for SMT dispatch

Publications (2)

Publication Number Publication Date
CN1760826A CN1760826A (zh) 2006-04-19
CN100357884C true CN100357884C (zh) 2007-12-26

Family

ID=36317706

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100819663A Expired - Fee Related CN100357884C (zh) 2004-10-14 2005-07-08 用于处理指令的方法、处理器以及系统

Country Status (3)

Country Link
US (1) US7237094B2 (zh)
JP (1) JP2006114036A (zh)
CN (1) CN100357884C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108400866A (zh) * 2018-03-01 2018-08-14 中国人民解放军战略支援部队信息工程大学 一种粗粒度可重构密码逻辑阵列

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8860737B2 (en) * 2003-10-29 2014-10-14 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US7836276B2 (en) * 2005-12-02 2010-11-16 Nvidia Corporation System and method for processing thread groups in a SIMD architecture
US8174531B1 (en) 2003-10-29 2012-05-08 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
JPWO2006134693A1 (ja) * 2005-06-15 2009-01-08 松下電器産業株式会社 プロセッサ
US7434032B1 (en) 2005-12-13 2008-10-07 Nvidia Corporation Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators
KR100837400B1 (ko) * 2006-07-20 2008-06-12 삼성전자주식회사 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
US9069547B2 (en) * 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US20080229062A1 (en) * 2007-03-12 2008-09-18 Lorenzo Di Gregorio Method of sharing registers in a processor and processor
US7707390B2 (en) * 2007-04-25 2010-04-27 Arm Limited Instruction issue control within a multi-threaded in-order superscalar processor
WO2008155839A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 命令処理装置
US20090210664A1 (en) * 2008-02-15 2009-08-20 Luick David A System and Method for Issue Schema for a Cascaded Pipeline
US7870368B2 (en) 2008-02-19 2011-01-11 International Business Machines Corporation System and method for prioritizing branch instructions
US7984270B2 (en) 2008-02-19 2011-07-19 International Business Machines Corporation System and method for prioritizing arithmetic instructions
US7996654B2 (en) * 2008-02-19 2011-08-09 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US8108654B2 (en) * 2008-02-19 2012-01-31 International Business Machines Corporation System and method for a group priority issue schema for a cascaded pipeline
US8095779B2 (en) * 2008-02-19 2012-01-10 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US7865700B2 (en) 2008-02-19 2011-01-04 International Business Machines Corporation System and method for prioritizing store instructions
US7877579B2 (en) * 2008-02-19 2011-01-25 International Business Machines Corporation System and method for prioritizing compare instructions
US20090210672A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US20090210666A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7882335B2 (en) * 2008-02-19 2011-02-01 International Business Machines Corporation System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline
GB2466984B (en) * 2009-01-16 2011-07-27 Imagination Tech Ltd Multi-threaded data processing system
US8108655B2 (en) * 2009-03-24 2012-01-31 International Business Machines Corporation Selecting fixed-point instructions to issue on load-store unit
US8127115B2 (en) * 2009-04-03 2012-02-28 International Business Machines Corporation Group formation with multiple taken branches per group
GB2469822B (en) 2009-04-28 2011-04-20 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor
US8140760B2 (en) * 2009-05-28 2012-03-20 International Business Machines Corporation I-cache line use history based done bit based on successful prefetchable counter
US8171224B2 (en) * 2009-05-28 2012-05-01 International Business Machines Corporation D-cache line use history based done bit based on successful prefetchable counter
US8332587B2 (en) * 2009-05-28 2012-12-11 International Business Machines Corporation Cache line use history based done bit modification to I-cache replacement scheme
US8291169B2 (en) * 2009-05-28 2012-10-16 International Business Machines Corporation Cache line use history based done bit modification to D-cache replacement scheme
JP5463076B2 (ja) * 2009-05-28 2014-04-09 パナソニック株式会社 マルチスレッドプロセッサ
CN101957744B (zh) * 2010-10-13 2013-07-24 北京科技大学 一种用于微处理器的硬件多线程控制方法及其装置
US9304774B2 (en) * 2011-02-04 2016-04-05 Qualcomm Incorporated Processor with a coprocessor having early access to not-yet issued instructions
WO2013012435A1 (en) 2011-07-18 2013-01-24 Hewlett-Packard Development Company, L.P. Security parameter zeroization
TWI447646B (zh) 2011-11-18 2014-08-01 Asmedia Technology Inc 資料傳輸裝置及多個指令的整合方法
US8856193B2 (en) * 2011-12-20 2014-10-07 Sap Se Merge monitor for table delta partitions
US9798548B2 (en) 2011-12-21 2017-10-24 Nvidia Corporation Methods and apparatus for scheduling instructions using pre-decode data
CN102662632B (zh) * 2012-03-14 2015-04-08 北京思特奇信息技术股份有限公司 一种利用信号量实现的序列号生成方法和生成器
US9513915B2 (en) * 2012-03-28 2016-12-06 International Business Machines Corporation Instruction merging optimization
EP3373105B1 (en) * 2012-03-30 2020-03-18 Intel Corporation Apparatus and method for accelerating operations in a processor which uses shared virtual memory
US9336057B2 (en) 2012-12-21 2016-05-10 Microsoft Technology Licensing, Llc Assigning jobs to heterogeneous processing modules
US9665372B2 (en) * 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
CN105446700B (zh) * 2014-05-30 2018-01-02 华为技术有限公司 一种指令执行方法以及顺序处理器
US9715392B2 (en) * 2014-08-29 2017-07-25 Qualcomm Incorporated Multiple clustered very long instruction word processing core
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
US11275590B2 (en) * 2015-08-26 2022-03-15 Huawei Technologies Co., Ltd. Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
US10423423B2 (en) 2015-09-29 2019-09-24 International Business Machines Corporation Efficiently managing speculative finish tracking and error handling for load instructions
US20170300361A1 (en) * 2016-04-15 2017-10-19 Intel Corporation Employing out of order queues for better gpu utilization
US11314516B2 (en) * 2018-01-19 2022-04-26 Marvell Asia Pte, Ltd. Issuing instructions based on resource conflict constraints in microprocessor
CN112445619A (zh) * 2020-11-30 2021-03-05 海光信息技术股份有限公司 在多线程系统中动态共享有序资源的管理系统和方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1429361A (zh) * 2000-03-24 2003-07-09 英特尔公司 用于在一个多线程处理器内在多个线程之间划分资源的方法和装置
US6601120B1 (en) * 2000-07-13 2003-07-29 Silicon Graphics, Inc. System, method and computer program product for implementing scalable multi-reader/single-writer locks
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
US5828895A (en) * 1995-09-20 1998-10-27 International Business Machines Corporation Methods and system for predecoding instructions in a superscalar data processing system
US5958042A (en) * 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor
US6163840A (en) * 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
CN1429361A (zh) * 2000-03-24 2003-07-09 英特尔公司 用于在一个多线程处理器内在多个线程之间划分资源的方法和装置
US6601120B1 (en) * 2000-07-13 2003-07-29 Silicon Graphics, Inc. System, method and computer program product for implementing scalable multi-reader/single-writer locks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108400866A (zh) * 2018-03-01 2018-08-14 中国人民解放军战略支援部队信息工程大学 一种粗粒度可重构密码逻辑阵列
CN108400866B (zh) * 2018-03-01 2021-02-02 中国人民解放军战略支援部队信息工程大学 一种粗粒度可重构密码逻辑阵列

Also Published As

Publication number Publication date
JP2006114036A (ja) 2006-04-27
US7237094B2 (en) 2007-06-26
US20060101241A1 (en) 2006-05-11
CN1760826A (zh) 2006-04-19

Similar Documents

Publication Publication Date Title
CN100357884C (zh) 用于处理指令的方法、处理器以及系统
US5630149A (en) Pipelined processor with register renaming hardware to accommodate multiple size registers
US6138230A (en) Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
US10061588B2 (en) Tracking operand liveness information in a computer system and performing function based on the liveness information
EP0649085B1 (en) Microprocessor pipe control and register translation
US8069340B2 (en) Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions
CN100407137C (zh) 推测性地执行程序指令的方法、微处理器及系统
US7526583B2 (en) Method and apparatus to launch write queue read data in a microprocessor recovery unit
CN100478871C (zh) 从队列处理指令刷新的生存期计数器设计的系统和方法
US9811340B2 (en) Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
KR101594502B1 (ko) 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법
US7093106B2 (en) Register rename array with individual thread bits set upon allocation and cleared upon instruction completion
US10437638B2 (en) Method and apparatus for dynamically balancing task processing while maintaining task order
US6073231A (en) Pipelined processor with microcontrol of register translation hardware
CN103635875A (zh) 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
JP2004326738A (ja) 同時マルチスレッド化プロセッサ
CN103562866A (zh) 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
US6981128B2 (en) Atomic quad word storage in a simultaneous multithreaded system
KR19980079722A (ko) 데이타 처리 시스템 및 무질서 명령을 완성하기 위한 방법
CN101176067A (zh) 基于专用处理单元的使用动态修改系统参数
US11954491B2 (en) Multi-threading microprocessor with a time counter for statically dispatching instructions
Chiu et al. A unitable computing architecture for chip multiprocessors
Song Reducing register pressure through LAER algorithm

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
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: 20071226

Termination date: 20110708