CN104346223B - 基于类型的优先化指令 - Google Patents

基于类型的优先化指令 Download PDF

Info

Publication number
CN104346223B
CN104346223B CN201410374099.1A CN201410374099A CN104346223B CN 104346223 B CN104346223 B CN 104346223B CN 201410374099 A CN201410374099 A CN 201410374099A CN 104346223 B CN104346223 B CN 104346223B
Authority
CN
China
Prior art keywords
instruction
queue
functional unit
selection
ready
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.)
Active
Application number
CN201410374099.1A
Other languages
English (en)
Other versions
CN104346223A (zh
Inventor
A·霍特
H·杰克逊
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.)
Hai Luo Software Co ltd
Mex Technology Co ltd
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Priority to CN201810036547.5A priority Critical patent/CN108170471B/zh
Publication of CN104346223A publication Critical patent/CN104346223A/zh
Application granted granted Critical
Publication of CN104346223B publication Critical patent/CN104346223B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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
    • 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
    • G06F9/3888Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel

Abstract

本申请公开了一种基于类型优先化指令,具体是用于选择指令以发布给无序处理器的功能单元的方法和保留站。所述方法包括:基于指令类型将每个指令分类到多个类别中的一个。一旦被分类,指令存储在对应于其被分类的类别的指令队列中。然后,基于多种指令类型的相对优先级来从一个或多个指令队列中选择指令以发布给功能单元。这允许一些类型的指令(例如,控制转移指令、标记设定指令和/或地址生成指令)优先于其他类型的指令,即使它们更年轻。

Description

基于类型的优先化指令
技术领域
本发明涉及一种处理器,具体涉及一种用于选择指令的方法和保留站。
背景技术
超标量处理器设计成在每个时钟周期发布多于一个的指令。通常,这些处理器包括一个或多个保留站,保留站接收并存储指令,直到指令准备就绪发布到无序管线以便执行。当其全部的输入操作数可供使用时,视为指令准备发布就绪。
在每个时钟周期,保留站选择多个就绪指令(例如,每个无序管线各一个)并且将它们发布到无序管线以便执行。然而,在任何既定时钟周期内,会存在多个准备发布就绪的指令。因此,必须存在某种用于选择就绪指令以便发布到无序管线的机制。
通常地,对最老的就绪指令赋予最高的优先级,而对最年轻的就绪指令赋予最低的优先级。尽可能快速地发布最老指令确保了重排序缓冲器不会填满并拖延指令的分发。然而,仅仅该策略并不能确保最优的处理器性能。
下面描述的实施例不限于解决已知处理器的任意一个或全部缺点的实施方案。
发明内容
提供该概述是为了以简化的形式介绍构思的选择,下面在发明详述中将进行进一步说明。该概述不意在鉴定权利要求主题的关键特征或重要特征,也不意在用作确定权利要求主题的范围的辅助。
本文中描述了用于选择指令以便发布到无序处理器的功能单元的方法和保留站。该方法包括:基于指令的类型,将每个指令分类到多个类别中的一个。一旦被分类,指令存储在对应于其被分类的类别的指令队列中。然后,从一个或多个指令队列中选择指令以基于指令类型的相对优先级而发布到功能单元。这允许某些类型的指令(例如,控制转移指令、标记设定指令和/或地址生成指令)优先于其他类型的指令,即使它们较年轻。
第一方案提供了一种选择指令以发布给无序处理器中的功能单元的方法,所述方法包括:在保留站处接收多个指令,每个指令是多种类型的指令中的一种并且基于指令类型被分类到多个类别中的一个;在所述保留站中,将每个指令存储在多个指令队列中的一个中,每个指令队列与多个类别中的一个相关联;以及在所述保留站中,基于多种指令类型的相对优先级来从一个或多个所述指令队列中选择指令以发布给功能单元。
第二方案提供了一种选择指令以发布给无序处理器中的功能单元的保留站,所述保留站包括:指令分类器,其配置为接收多个指令,每个指令是多种指令类型中的一种并且基于指令类型被分类到多个类别中的一个;多个指令队列,其与所述指令分类器通信,每个指令队列配置为接收来自所述指令分类器的已经分类到特定类别的指令并且存储所接收到的指令;以及指令调度器,其与多个指令队列中的每一个通信,所述指令调度器配置为基于多种指令类型的相对优先级来从一个或多个指令队列中选择指令以发布给功能单元。
第三方案提供了包括本文所描述的保留站的处理器。
另一方案提供了如参照图1大致描述的单线程无序处理器、如参照图2大致描述的保留站、如参照图4大致描述的选择指令以发布给功能单元的方法,以及如参照图5大致描述的多线程无序处理器。
本文中所描述的方法可通过有形存储介质上的机器可读形式的软件来实施,例如,包括计算机可读程序代码的计算机程序的形式,当程序在计算机上运行时,所述计算机可读程序代码适于实施本文所描述的任意方法的所有步骤,并且其中计算机程序可具体实现于计算机可读存储介质上。有形(或非暂态)存储介质的例子包括磁盘、拇指驱动器、存储卡等,而不包括传播信号。软件可适合于在并行处理器或串行处理器上执行,使得可以任何适当的次序或者同时地执行方法步骤。
本文所描述的硬件部件可通过在其上具有编码的计算机可读程序代码的计算机可读存储介质来生成。
这确认了,固件和软件可以是有价值的、可单独交易的商品。意在涵盖在“非智能(dumb)”或标准硬件上运行或者控制“非智能”或标准硬件以执行期望功能的软件。还意在涵盖“描述”或限定硬件的配置的软件,诸如HDL(硬件描述语言)软件,用于设计硅芯片,或者用于配置通用可编程芯片,从而执行期望功能。
优选的特征可以适当的结合,这对于技术人员是显然的,并且可以与本发明的任意方案进行结合。
附图说明
参考下面的附图,通过举例的方式对本发明的实施例进行说明,其中:
图1是示例性单线程无序处理器的示意图;
图2是图1的示例性保留站和关联的功能单元的示意图;
图3是图2的示例性指令队列的示意图;
图4是用于选择指令以发布给功能单元的示例方法的流程图;
图5是示例性多线程无序处理器的示意图;
图6是示出用于多线程无序处理器的示例队列的示意图;以及
图7是示出用于多线程无序处理器的示例性交错队列的示意图。
在这些图中共同的附图标记用来表示相似的特征。
具体实施方式
下面仅通过举例的方式对本发明的实施例进行说明。这些示例代表了当前申请人所知的实践本发明的最佳方式,但是这些示例不是可实现本发明的唯一方式。说明书阐述了示例的功能以及用于构造和操作示例的步骤的序列。然而,可以通过不同的示例来实现相同或等同的功能和序列。
经确证,尽可能快速地执行一些类型的指令(例如,控制转移指令、标记设定指令和地址生成指令),即使这些指令比其他就绪的指令年轻,也可以显著地提高处理器的性能。这是因为,一旦这些类型的指令已经发布,它们就释放出能够由其他指令使用的其他资源。
因此,本文所描述的实施例涉及即使一些类型的指令比其他就绪指令年轻也优先这些类型的指令的方法、保留站和处理器。特别地,在本文所描述的实施例中,基于指令类型在保留站中将指令分类到多个指令队列中的一个中。然后,保留站基于多种指令类型的相对优先级从指令队列中选择用于执行的指令。这允许一些类型的指令优先于其他指令,即使它们比其他就绪的指令更年轻。以此方式选择指令确保了优先于更低优先级的指令选择更高优先级的指令来发布,从而保障更高优先级指令功能单元资源(例如,管线)并且提高处理器的性能。
此外,以这种方式选择指令不会在处理器中引入任何额外的延迟。特别地,即使在将不同类型的指令分离到单独的指令队列之后,选择和发布过程也能够在单个周期中完成。
现在参照图1,图1示出了单线程无序处理器100,其中将为一些类型的指令赋予优于其他指令的优先级。
处理器100包括:提取级102,其配置为从如程序计数器(PC)所指示的程序(按程序的次序)提取指令;以及解码与重命名级104,其布置成解释指令并且执行寄存器重命名。如本领域技术人员所公知的,通过去除一些相关性,诸如读后写(WAR)相关性,寄存器重命名使更多的指令能够被无序地执行。
在指令通过了解码与重命名级104之后,指令被:(a)插入重排序缓冲器106(ROB)中;以及(b)分发给保留站108a、108b或108c中的一个。
重排序缓冲器106是一种能够使得指令被无序地执行但是有序地提交的缓冲器。重排序缓冲器106按程序次序保持插入其中的指令,但是ROB 106内的指令能够通过功能单元110a、110b和110c不按顺序地执行。在指令由功能单元110a、110b和110c执行之后,按程序次序将指令从重排序缓冲器106a输出到提交级112。提交级112随后将指令的结果提交给寄存器/存储器。
在一些示例中,重排序缓冲器106能够形成为循环缓冲器,其具有指向ROB 106中的最老指令(头指令)的头指针,以及指向ROB 106中的最年轻指令(尾指令)的尾指针。在这些示例中,当头指令已经由功能单元110a、110b和110c执行时,这些头指令从ROB 106的头部输出,并且头指针增量而指向ROB 106中的下一指令。
每个保留站108a、108b和108c都接收来自解码与重命名级104的指令并且将指令发布到对应的功能单元110a、110b或110c以便执行。虽然图1的处理器100包括三个保留站108a、108b和108c,但其他处理器可以具有更多或更少的保留站。
此外,虽然图1分别示出了保留站108a、108b和108c与功能单元110a、110b和110c之间的一对一关系,但在其他情况下,在保留站108a、108b和108c与功能单元110a、110b和110c之间可能存在一对多关系。例如,在一些情况下,保留站108a、108b或108c中的至少一个可配置为将指令提供给多个功能单元110a、110b和/或110c。在其他情况下,可以仅存在单个保留站108a、108b或108c,其被配置为将指令提供给所有的功能单元110a、110b和110c。
在本文所描述的实施例中,各保留站108a、108b和108c配置成基于指令类型将从解码与重命名级104接收到的指令分类到多个指令队列中。在每个时钟周期,保留站108a、108b或108c试图从指令队列中选择多个指令以发布给对应的功能单元110a、110b或110c以便执行。在一些情况下,保留站108a、108b或108c配置成从指令队列中选择指令以使一些类型的指令优先于其他指令。
各功能单元110a、110b和110c负责执行指令,并且可以包括一个或多个功能单元管线。功能单元110a、110b和110c可配置成执行特定类型的操作或者它们可以是通用的功能单元。例如,一个或多个功能单元110a、110b和110c可以是装载/存储单元、整数单元、浮点单元(FPU)、数字信号处理(DSP)/单指令多数据(SIMD)单元、或乘累加(MAC)单元。装载/存储单元执行装载和存储存储器操作,整数单元执行整数运算,FPU执行浮点运算,DSP/SIMD单元具有多个处理元件,其同时对多个数据点执行相同的操作,并且MAC单元计算两个数的乘积并且将该乘积与累加器相加。功能单元110a、110b和110c以及其中的管线可具有不同的长度和/或复杂度。例如,FPU管线通常比整数执行管线长,因为其通常执行更复杂的操作。
将参照图2对示例性保留站108和关联的功能单元110进行说明。
处理器100还包括分支预测器114,其配置为预测在为已知引起可能的流程变化的指令(诸如分支指令)的情况下程序流将采取哪个方向。分支预测是有用的,因为其使得能够在分支指令的结果已知之前通过处理器100推测地执行指令。分支预测器114可与提取级102、解码与重命名级104和/或功能单元110a、110b和110c通信。例如,提取级102可以使用来自分支预测器114的信息来确定接着提取哪个指令;解码与重命名级104可以将指示哪些指令是分支指令的信息提供给分支预测器114(在其他情况下,可以在提取级102中将指令解码);并且功能单元110a、110b和110c可以为分支预测器114提供指示程序计数器的更新的信息。
当分支预测器114精确地预测出程序流时,这提高了处理器100的性能。然而,如果分支预测器114没有正确地预测出分支方向,则出现了误预测,在程序能够继续之前,需要校正误预测。为了校正误预测,送到ROB106的推测指令被抛弃,并且提取级102开始从正确的程序分支提取指令。
现在参照图2,图2示出了图1的示例性保留站108和关联的功能单元110。如上所述,保留站108以使得一些类型的指令优先于其他类型的指令的方式将指令发布给功能单元110以便执行。
保留站110包括:指令分类器202,其基于指令类型将从解码与重命名级104接收到的指令分类成多个类别中的一个;多个指令队列204-210,用于在具体类别存储指令;以及指令调度器212,用于从指令队列204-210中选择就绪指令并且将它们发布给功能单元110以便执行。
如上文简要描述的,指令分类器202从解码与重命名级104接收指令;基于指令类型将每个指令分类成多个类别中的一个;并且将每个分类的指令发送到对应于所分配类别的指令队列204-210。在一些情况下,解码与重命名级104使用指令的操作代码(“操作码”)来确定指令类型。解码与重命名级104随后在提供给保留站108的数据中提供指令类型的指示。在其他情况下,解码与重命名级104将操作码提供给保留站108,并且指令分类器202使用操作码来标识指令类型。
在一些情况下,指令分类器202使用从解码与重命名级104接收到的信息(例如,指示符或操作码)来标识以下类型指令中的至少一个:控制转移指令、地址生成指令、以及标记设定指令。控制转移指令是修改程序计数器(PC)以改变程序的控制流的指令,诸如分支指令。地址生成指令是解决装载和存储指令的存储器地址的指令。仅仅在这些指令执行之后,才能够成功地执行装载或存储操作。标记设定指令是修改存储在标记寄存器中的指示处理器状况的状态标记的指令。
在其他情况下,指令分类器202可以使用从解码与重命名级104接收到的信息(例如,指示符或操作码)来标识更多、更少或其他的指令类型。
在一些情况下,对于所标识的每个指令类型可有一个类别(例如,控制转移指令类别、地址生成指令类别、以及标记设定指令类别),而对于所有其他指令有一个总类别。在其他情况下,对于所标识的一个或多个类型的指令可有一个类别(例如,控制转移指令、地址生成指令和标记设定的指令类别;或控制转移指令的类别和地址生成与标记设定指令的类别),而对于所有其他指令有一个总类别。
虽然在本文中描述了指令分类器202执行指令的分类,但是在其他示例中,可以通过处理器100的另一部件来执行分类,诸如解码与重命名级104。在这些示例中,除了从解码与重命名级104接收指令本身之外,指令分类器202还可以接收指示指令已分类成哪个类别的信息。指令分类器202随后基于从解码与重命名级104接收到的分类信息而将接收到的指令发送到适当的指令队列。
各个指令队列204-210从指令分类器202接收特定类别的指令,并且将各指令存储在可用条目或槽中。指令可以按它们从指令分类器202接收到的次序而存储在指令队列中。因为指令分类器202通常按程序次序从解码与重命名级104接收并处理指令,所以指令可以按程序次序存储在指令队列204-210中。
通常每个类别存在一个指令队列204-210。在图2的示例性保留站108中,存在四个指令类别(例如,上述标识的每个指令类型各一个),因此存在四个指令队列204-210。例如,第一指令队列204(指令队列0)可以用于控制转移指令,第二指令队列206(指令队列1)可用于地址生成指令,第三指令队列208(指令队列2)可用于标记设定指令,而第四指令队列210(指令队列3)可用于所有其他指令。然而,在其他示例中,保留站108可以具有更多或更少的指令队列。
指令在指令队列中等待,直到其输入操作数值可用。特别地,保留站108可以监控功能单元110的输出以为指令队列中每个指令找到丢失操作数(就绪位设定为0的操作数)的匹配。一旦保留站108找到丢失操作数的匹配,其将该操作数的就绪位设定为1。在一些情况下,保留站108还将来自功能单元110输出的操作数复制到指令队列。在其他情况下,在指令已经发布到功能单元110之后,从适当的寄存器文件读取操作数值。例如,管线214-220的第一级可以配置为从适当的寄存器文件读取操作数值。相对于从功能单元110输出复制操作数值的情况,这可以减少功能单元110与保留站108之间的连接的数量。
一旦指令的所有操作数值可用,则将指令视为准备执行就绪,并且该指令的就绪位可以设定成指示该指令准备就绪发布给功能单元110。指令的操作数值可在较早的、较老的指令的操作数值之前可用,允许其在那些较早的、较老的指令之前离开指令队列。
将参照图3来描述示例性指令队列204。
图2的示例性保留站108还包括指令调度器212,其将来自指令队列204-210的就绪指令发布到功能单元110以便执行。
功能单元110包括用于执行指令的一个或多个类似管线214-220。图2的示例性功能单元110包括编号为0至3的四个管线214-220;然而,在其他示例中,功能单元110可以包括更多或更少的管线。
在每个时钟周期,指令调度器212试图为每个管线214-220提供来自指令队列204-210中的一个的指令。例如,在功能单元110包括如图2所示的四个管线214-220的情况下,指令调度器212试图从指令队列204-210中选择四个就绪指令并且将所选指令之一发布给各管线214-220。
在许多无序处理器中,保留站仅包括单个指令队列,并且选择队列中的最老的就绪指令以发布给管线214-220。尽可能快速地发布队列中的最老指令确保了重排序缓冲器106不会填满并且拖延解码与重命名级104发送指令。然而,这不能确保处理器的最优性能。特别地,已经确证,尽可能快速地执行一些类型的指令(例如,控制转移指令、标记设定指令和地址生成指令),可以显著地提高处理器的性能,即使它们比其他就绪指令更年轻。这是因为,一旦这些指令已经发布,它们就释放出可由其他指令使用的其他资源。
特别地,已经观察到,误推测(即,不正确地预测)的控制转移指令具有成本高的恢复开支,因此尽可能快速地执行控制转移指令可以使得性能显著提高,即使它们比其他就绪指令更年轻。对于标记设定指令和地址生成指令做出了类似的观察。
因此,图2的指令调度器212配置为以即使一些类型的指令比其他就绪指令年轻也优先这些指令的方式从指令队列204-210中选择就绪指令。在一些情况下,指令队列204-210从最高优先级到最低优先级优先排列,并且指令调度器212按优先级次序从指令队列中选择就绪指令。例如,如果指令队列204-210被从最高优先级到最低优先级按如下次序优先化,即,指令队列0、指令队列1、指令队列2和指令队列3,则指令调度器212可以首先从指令队列0中选择就绪指令,然后是指令队列1,然后是指令队列2,然后是指令队列3。
在一些情况下,指令队列204-210的优先级可以预先确定或固定,在其他情况下,可以动态地调节优先级。
特别地,在一些情况下,指令队列204-210的优先级可以通过离线测试和/或性能分析来确定,然后在处理器中预先确定或固定。例如,本领域技术人员已知的是,无论怎样仔细选择指令集体系结构(ISA)和微型体系结构,一些指令(例如,控制转移指令)会导致性能瓶颈。通过对所选微型体系结构对所关注的基准应用的性能的影响进行详细分析,可以按个案的基础视适合的情况来优先化指令。在一些情况下,可通过检查指示处理器在任意既定时间的状况的多个参数来确定一些指令的相对优先级。
详细分析已表明,在一些情况下,如果与控制转移指令相关联的指令队列被赋予最高优先级、与标记设定指令相关联的指令队列被赋予次高优先级、与地址生成指令相关联的指令队列被赋予第三高优先级、且与所有其他指令相关联的指令队列被赋予最低优先级,则能够实现最优性能。
在其他情况下,处理器可以包括附加的部件,诸如自动MIPS分配器(AMA),其监控处理器的整体性能,并且对指令调度器212生成规定指令队列204-210的优先级来实时优化指令执行的适当的控制信号。
在一些情况下,如果指令调度器212能够从一个或多个较高优先级队列中选择足够的就绪指令,则其甚至可以不试图从较低优先级队列中选择指令。例如,在如图2所示的关联的功能单元110中存在四个管线且指令调度器212能够从最高优先级队列(例如,指令队列0)和次高优先级队列(例如,指令队列1)中集体地获得四个就绪指令的情况下,则指令调度器甚至可以不试图从两个较低优先级指令队列(例如,指令队列2和指令队列3)中选择就绪指令。
指令调度器212通常配置成从任何特定指令队列204-210中选择最老的就绪指令,但是,在一些情况下,指令调度器212可配置成利用其他标准从特定的指令队列中选择指令。然而,如果使用规则和例外的复杂集,则利用其他标准来选择指令会使得指令调度器212放缓(并且超过单个时钟周期的时间段)。在一些情况下,指令调度器212可以利用不同的标准从不同的指令队列中选择指令(即,其可以从一个队列中选择最老的就绪指令并且利用其他标准来从另一队列中选择指令),然而,这会增加指令调度器212的复杂度和/或使其更慢。
在一些情况下,可以对在时钟周期中可从特定指令队列中选择的指令的数量进行限制。可以这样做的原因在于:(a)因为优先化某类型的多于一个的指令,存在最小性能益处;和/或(b)抢先一个或多个低优先级队列被饿死的可能性(例如,特定队列中的指令永不被发布给功能单元110)。例如,在保留站108具有专用于控制转移指令的指令队列的情况下,指令调度器212可配置成在任意时钟周期中从控制转移指令队列选择最多一个就绪指令。这是因为,经确证,由于第二控制转移指令极可能比第一控制转移指令更年轻,所以与从另一指令队列中发布更老的指令相比,优先化多于一个的控制转移指令的性能益处不大。
当选择指令以发布给功能单元时,指令调度器212评定多个指令以判定它们是否有资格发布。通常,如果指令就绪且尚未发布,则该指令就有资格发布。判定指令是否就绪且尚未发布可以包括:查看指令队列的就绪列和已发布列(如参照图3所描述的)。然而,指令调度器212通常仅能够根据处理器100的时钟频率来评定每个时钟周期内的指令的最大数量Wmax
在一些情况下,为确保指令调度器能够在一个时钟周期内评定来自全部指令队列204-210的指令,将在任意既定指令队列中所能够评定的指令数量限制为最大数量Wi,其中i是指令队列号。例如,在第一指令队列204(指令队列0)中可以评定最多W0个指令,并且在第二指令队列206(指令队列1)中可评定最多W1个指令。对指令队列204-210施加的限制可以相同或不同。
无论最大数在各指令队列中是相同还是不同,最大数(Wi)之和不能超过在任意一个周期中指令调度器212所能够评定的指令的最大数量(Wmax)。这由显示于下面的等式(1)表示,其中X是指令队列的数量。
在对特定指令队列204-210中所能够评定的指令数量存在限值(Wi)的情况下,当指令调度器212正从特定指令队列204-210选择就绪指令时,当指令调度器212已经对该特定指令队列评定了指令的最大数量(Wi)时,指令调度器212可以停止在该特定指令队列中评定指令。一旦停止在特定队列中评定指令,指令调度器212可以移至次高优先级指令队列以查找指令以发布给功能单元110。
参照图4对可以通过指令调度器212来实现的从多个指令队列中选择指令的方法进行说明。
现在参照图3,图3示出了图2的示例性指令队列204。指令队列204可以配置为具有多个行302-332以及列334-338的表。每行或条目302-332可保持与单个指令有关的信息。在一些情况下,指令按它们被接收到的次序存储在指令队列204中。因为指令分类器202通常按程序次序从解码与重命名级104接收和处理指令,所以指令队列204可以按程序次序来接收和存储指令。因此,较老的指令将被插入到较年轻的指令之前。在图3所示的示例中,指令0是最老指令,指令15是最年轻指令。
列334-338用来为每个指令存储特定信息。在图3所示的示例中,存在三个列:指令列、就绪列和已发布列,然而在其他示例中,可存在更多、更少或不同的列。例如,在一些实施例中(例如,在指令一被发布就从指令队列中去除的情况下),指令队列可不包括已发布列。
指令列334用来保持描述由功能单元110(例如,管线)使用来执行指令的指令的信息。该信息可以包括指令代码以及用于该指令的输入和输出操作数。指令列334可以通过任何适当的方式来实现。
就绪列336用来指示指令是否就绪以发布给功能单元110。如上所述,当其全部输入操作数可用时,将指令视为准备就绪以发布给功能单元110。就绪列336可以通过任何适当的方式来实现。例如,在一些情况下,就绪列336可以实现为单一位,在其他情况下,就绪列336可以实现为布尔值。当指令最初从指令分类器202接收到时,其操作数值通常不可用。因此,就绪列可以初始地被设定(例如,设定成“0”或“假”)以指示指令未准备就绪。当输入操作数随后变得可用时,就绪列可被设定(例如,设定成“1”或“真”)以指示指令准备就绪以发布给功能单元110。
已发布列338用于指示指令是否已发布给功能单元110。已发布列338可通过任何适当的方式来实现。例如,在一些情况下,已发布列338可以实现为单一位,在其他情况下,已发布列338可以实现为布尔值。当指令最初从指令分类器202接收到时,已发布列可以被设定(例如,设定成“0”或假)以指示指令尚未发布给功能单元110。一旦指令已发布,则已发布列338可被设定(例如,设定成“1”或“真”)以指示指令已发布给功能单元110。
指令可保留在指令队列204中,直至(i)其已发布;或者(ii)直至其已发布且随后被另一指令覆写。
如果指令就绪且其尚未发布给功能单元110,则通常仅选择指令发布给功能单元110。
在一个时钟周期中可通过指令调度器212评定的指令队列204(指令队列0)中的指令数量W0受限制的情况下,可以建立窗口以限定待评定的W0个指令。该窗口可由指向头指令(也称为起始指令)的头指针和指向尾指令(也称为结束指令)的尾指针来限定。在一些情况下,头指令可以是指令队列204中尚未发布的最老指令,尾指令可以是指令队列204中的在紧接着头指令之后的第(W0-1)个指令。
第一个示例用于阐述该构思。特别地,如果在图3的指令队列204中能够评定最多四个指令(例如,W0=4),则窗口的头指针340可指向指令2(头指令),因为该指令是指令队列204中最老的未发布指令,并且窗口的尾指针342可以指向指令5(尾指令),因为其是紧接着头指令之后的第三(例如,W0-1=4-1=3)个指令。在该示例中,当指令调度器212试图从该指令队列204(例如,指令队列0)中选择指令时,指令调度器212评定指令2至5,一次评定一个,直到:(a)其已经选择了足够的就绪指令来填充管线(例如,每个管线各一个),(b)其已经从该队列选择了最大数量的指令(如果已经为该指令队列分配了最大值),或者(c)其已经评定了指令5(例如,其已经评定了该指令队列的最大编号的指令)。一旦满足这些条件之一,则指令调度器212停止在指令队列204中搜索要发布的指令。如果满足条件(a),则指令调度器212可以将已选指令发布给功能单元110。然而,如果满足条件(b)或(c),则指令调度器212可以移至下一较低优先级的指令队列(如果存在较低优先级的指令队列)以继续查找要发布给功能单元110的指令。
在其他情况下,窗口的头指令可以是指令队列204中最老的就绪而未发布指令,窗口的尾指令可以是指令队列中紧接着头指令之后的第(Wi-1)个指令。这些情况可能比窗口的头指令是指令队列204中的最老而未发布指令的情况需要更多的逻辑,但是这会使得更高效地利用指令调度器212的资源,因为指令调度器212没有浪费时间来评定尚未准备发布就绪的较老指令。
第二个示例用来阐述该构思。特别地,如果在图3的指令队列204中能够评定最多七个指令(例如W0=7),则窗口的头指针344可指向指令3(头指令),因为该指令是指令队列204中最老的准备就绪而未发布的指令,并且窗口的尾指针346可指向指令9(尾指令),因为该指令是指令队列204中紧接在头指令之后的第六(W0-1=7-1=6)个指令。在该示例中,当指令调度器212试图从该指令队列204(例如,指令队列0)中选择指令时,指令调度器212评定指令3至9,一次评定一个,直到满足以下条件之一:(a)其已经选择了足够的就绪指令来填充管线(例如,每个管线各一个),(b)其已经从该队列中选择了最大编号的指令(如果已经为该指令队列分配了最大值),或者(c)其已经评定了指令9(例如,其已经评定了该队列的最大编号的指令)。一旦这些条件之一满足,指令调度器212就停止在该指令队列中搜索待发布指令。如果满足条件(a),则指令调度器212可以将所选指令发布给功能单元110。然而,如果满足条件(b)或(c),则指令调度器212可以移至下一较低优先级的指令队列(如果存在较低优先级的指令队列)以查找要发布给功能单元110的额外指令。
现在参照图4,图4示出了通过图2的指令调度器212执行的用于从指令队列204-210中选择指令以发布给功能单元110的方法400。在图4的方法400中,指令调度器212按就绪指令的优先级次序搜索指令队列204-210以发布给功能单元110。
如果满足以下条件中任一个,则指令调度器212可停止搜索特定队列:(a)已经选择了最大数量的指令(例如,所选指令数量等于功能单元中管线的数量);(b)已经选择了特定队列的最大数量的指令(例如,指令队列可对能够从该指令队列选择的指令数量设有限制);以及(c)已经评定了该特定队列的最大数量的指令(例如,指令队列可对能够在一个时钟周期中评定的该指令队列中的指令数量设有限制)。如果满足条件(a),则指令调度器212可以将所选指令发布给功能单元110。然而,如果满足条件(b)或(c),则指令调度器212可以进行到次高优先级的指令队列以搜索准备发布就绪的指令。
条件(b)仅在将所选指令数量的限制已施加到正在搜索的特定队列上的情况下才适用。类似地,条件(c)仅在将可评定的指令数量的限制已施加到正在搜索的特定队列上的情况下才适用。
下面参照步骤402至426来更详细地描述这种情况。
在步骤402中,指令调度器212访问具有最高优先级的指令队列。利用图2作为例子,如果指令队列204-210被从最高优先级到最低优先级按以下次序优先化,即,指令队列0、指令队列1、指令队列2和指令队列3,则指令调度器212访问指令队列0。一旦指令调度器212访问了具有最高优先级的指令队列,则方法400进行到步骤404。
在步骤404中,指令调度器212评定起始指令或头指令以判定是否应当选择它来发布给功能单元110。如上文参照图3所述的,在一些情况下,头指令可以是指令队列中最老的未发布指令(例如,图3的指令2)。在其他情况下,头指令可以是指令队列中最老的就绪而未发布的指令(例如,图3的指令3)。一旦指令调度器已经评定了头指令,则方法400进行到步骤406。
在步骤406中,指令调度器212判定在步骤404中评定的指令是否就绪(例如,其是否准备就绪以发布给功能单元110以便执行)而未发布(例如,其尚未发布给功能单元110以便执行)。如果指令准备就绪而未发布,则方法进行到步骤408。然而,如果指令未准备就绪或已经发布,则方法进行到步骤420。
在步骤408中,指令调度器212选择了在步骤404中评定的指令以发布给功能单元110并且更新指令队列计数器。指令队列计数器跟踪已从当前正评定的指令队列(“当前指令队列”)中选择的指令数量。在一些情况下,更新指令队列计数器可以包括将指令队列计数器增量。一旦指令队列计数器更新,则方法400进行到步骤410。
在步骤410中,指令调度器212更新所选的指令计数器。所选的指令计数器对已经从所有指令队列中选择用来发布的指令的数量进行跟踪。在一些情况下,更新所选的指令计数器包括将所选的指令计数器增量。一旦所选的指令计数器更新,则方法400进行到步骤412。
在步骤412中,指令调度器212判定是否已从所有的指令队列中选择了最大数量的指令。在任一时钟周期中能够选择的指令的最大数量通常与关联的功能单元110中的管线(例如,管线214-220)的数量相等。这是因为,在一个时钟周期中仅一个指令能够发布给每个管线(例如,管线214-220)。因此,如果功能单元110具有如图2所示的四个管线214-220,则指令的最大数量可等于四个。
判定是否已选择了最大数量的指令可以包括:将所选指令计数器与管线数量进行比较。如果所选指令计数器等于管线的数量,则指令调度器212停止查找更多的指令并且将所选指令发布给管线。然而,如果所选指令计数器小于管线数量,则指令调度器212可以继续查找指令以发布给功能单元110。
如果判定出已经选择了最大数量的指令,则方法400进行到步骤414。然而,如果判定出尚未选择最大数量的指令,则方法400进行到步骤418。
在步骤414中,所选指令发布给功能单元110以便执行。在一些情况下,指令调度器212试图将一个所选指令发布给功能单元110的管线214-220中的每一个。例如,如果存在如图2所示的四个管线且选择了四个指令,则一个所选指令发布给每个管线。然而,如果存在四个管线且仅选择了三个指令,则一个所选指令发布给三个管线中的每一个。
哪个指令发布给哪个管线通常无关紧要。然而,在一些情况下,将需要额外或特殊资源的指令发布给特定的管线或管线组是有益的。
例如,在一些情况下,有益的是,将诸如分支指令的控制转移指令发布给特定的管线或管线组以降低簿记(book-keeping)和可用管线之间的同步的成本。特别地,控制转移指令可以发布给特定管线,从而最小化和/或消除簿记以及管线之间跟踪控制转移指令的‘挤入’(在此情况下,在执行时这些指令的输入操作数实际上未准备就绪)所需的同步;并且防止较年轻的控制转移指令超过较老的控制转移指令。
在步骤416中,所选的指令计数器被复位(例如,归零)。一旦指令计数器已经复位,则方法400结束。
在步骤418中,在已选择指令以进行发布且已经判定出尚未选择来自所有指令队列的最大数量的指令之后,指令调度器212判定是否已从当前正评定的指令队列中选择了最大数量的指令。
判定是否已选择了当前正评定的指令队列的最大数量的指令可以包括:将指令队列计数器与可从当前指令队列中选择的指令的最大数量进行比较。如果指令队列计数器等于指令的最大数量,则指令调度器212可停止从该指令队列中查找更多的指令。然而,如果指令队列计数器小于指令的最大数量,则指令调度器212可以继续从该指令队列中查找指令以发布给功能单元110。
如果判定出已经从该指令队列中选择了最大数量的指令,则方法400进行到步骤424,在该步骤中指令调度器212可以继续从另一指令队列中查找指令。然而,如果判定出尚未从该指令队列中选择最大数量的指令,则方法400进行到步骤420,在该步骤中指令调度器212可以继续从当前指令队列中搜索指令。
步骤418是任选的。特别地,该步骤仅适用于在特定时钟周期中可从该指令队列选择的指令数量受限制的指令队列。如果可从当前指令队列中选择的指令数量未受限制,则步骤418可以不执行,并且方法400可直接进行到步骤420。
在步骤420中,在已经选择了指令以进行发布且已经判定出尚未选择来自所有指令的最大数量的指令、且尚未选择来自当前指令队列的最大数量的指令之后,或者,在已经评定了指令而未选择之后,指令调度器212判定最近期评定的指令是否是尾指令。如上文所描述的,尾指令是继头指令之后的第(Wi-1)个指令,其中Wi是在一个时钟周期中在第i指令队列中能够评定的指令的最大数量。如果最近期评定的指令是尾指令,则已经达到了可在当前指令队列中评定的指令的最大数量。
如果判定出已经评定了最大数量的指令,则方法400进行到步骤424,在该步骤中指令调度器212可以继续从另一指令队列中搜索指令。然而,如果判定出尚未评定最大数量的指令,则方法400进行到步骤422,在该步骤中指令调度器212继续从该指令队列中查找指令。
步骤420是任选的。特别地,该步骤仅适用于已对在一个时钟周期中可评定的指令的数量施加了限制的那些指令队列。如果未对可在当前指令队列中评定的指令数量进行限制,则步骤420可不执行,并且方法可直接进行到步骤422。
在步骤422中,对当前指令队列中的下一指令进行评定。在一些情况下,下一指令是当前指令队列中紧接在最近期评定的指令之后的指令。一旦已经评定了下一指令,则方法返回到步骤406。
在步骤424中,(a)在已经选择了指令以进行发布且已经判定出尚未选择来自所有指令队列的最大数量的指令、但是已经选择了用于当前指令队列的最大数量的指令之后,或者(b)在已经评定了当前指令队列的最大数量的指令之后,指令调度器212判定是否存在优先级比当前指令队列低的任何指令队列。
如果存在优先级比当前指令队列低的至少一个指令队列,则方法400进行到步骤426,在该步骤中指令调度器212在次高优先级的指令队列中查找指令。然而,如果不存在优先级比当前指令队列低的更多的指令队列,则方法400进行到步骤414,在该步骤中,所选的指令发布给功能单元110。
在步骤426中,指令调度器212访问相对于当前指令队列的次高优先级的指令队列。一旦指令调度器212已经访问了次高优先级的指令队列,则方法进行到步骤404,在该步骤中,评定指令队列中的指令以判定它们是否适合发布到功能单元110。
在每个时钟周期,可以重复方法400。
虽然方法400描述了指令调度器212基于优先级顺序地访问队列并且顺序地评定特定队列中的指令,但是在其他示例中,指令调度器可以包括如下硬件:(i)通过允许指令调度器212在评定当前指令的同时确定关于队列中下一指令的信息,加速特定队列中的指令的评定;(ii)允许其并行地评定队列中的多个指令;和/或(iii)允许其并行地访问且评定多个队列中的指令。
在其他示例中,指令调度器212可以使用标准选择逻辑(例如,如Yamaguchi等人的‘Delay Evaluation of Issue Queue in Superscalar Processors with Banking TagRAM and Correct Critical Patch Identification’所描述的,该文献于2012年9月公开于IEICE TRANS.INF.&SYST.第E95-D卷第9期)来从每个队列内选择指令,使得每个周期选择共N个指令(每个管线各一个)。虽然上面描述的示例涉及到单线程无序处理器,但是本文所描述的方法和原理可同等地应用于多线程无序处理器。
现在参照图5,图5示出了多线程无序处理器500的示意图。处理器500包括两个线程502和504,这两个线程在本文分别称为线程0和线程1。每个线程502和504都包括提取级506或508、解码与重命名级510或512、重排序缓冲器514或516、提交级518或520、以及分支预测器522或524,如上文参照图1所描述的。线程502和504共享如上文参照图1所述的保留站526a、526b和526c,以及功能单元528a、528b和528c。而且,如上所述,每个功能单元528a、528b和528c可以包括用于执行发布给功能单元528a、528b或528c的指令的一个或多个管线(未示出)。
每个解码与重命名级510和512分析每个提取的指令,然后将指令分发到适合的保留站526a、526b或526c。依照上文参照图2至图4所描述的原理和方法,每个保留站510和512基于指令类型将接收到的指令分类成多个类别;将每个类别的指令存储到单独的指令队列中;以即使一些类型的指令比其他指令更年轻也使得该类型的指令优先于其他指令的方式从指令队列中选择指令;以及将所选指令发布给关联的功能单元528a、528b或528c。
在一些情况下,每个线程可具有单独的一组类别和关联的指令队列,但是对于每个线程类别组可相同(例如,控制转移指令类别、地址生成指令类别、标记设定指令类别、以及通用指令类别)。这些不同队列的示例显示在图6中的上方示意图601中。在该示例中,存在两个线程,即线程0和线程1,以及对于每个线程有三个队列602a-606a、602b-606b,一个队列用于分支指令(队列602a、602b),一个队列用于地址生成指令(队列604a、604b),一个用于通用(GP)指令(队列606a、606b)。在这些情况中,对于每个线程可存在一个依照上面参照图2至图4描述的原理从其关联的指令队列中选择指令的指令调度器。在这些情况中,保留站526a、526b和526c还可以包括仲裁单元(未示出),其依照一组规则从两个线程中选择指令。例如,该仲裁单元可以基于推测性的每个线程的指令如何如递交于2013年1月21日的、Jackson等人的共同未决英国专利申请“ALLOCATING RESOURCES TO THREADS BASED ONSPECULATION METRIC”中所描述的那样来从两个线程中选择指令。
在多线程处理器(或处理器核)的示例方案中,可存在两个线程(线程0和线程1)以及用于线程0的四个队列和用于线程1的4个队列(例如,四个类别中的每一个各一个队列:控制转移指令、地址生成指令、标记设定指令、以及通用指令)。在该示例中,存在四个管线,它们在线程0和线程1之间共享,因此通常2个管线可用于线程0,2个管线可用于线程1。
以线程0开始,来自每个队列的一个指令可发布到可用于线程0的2个管线中的每一个中,或者如果在更高优先级的队列中存在额外的就绪指令,则可以存在从该队列发布的多于一个的指令,使得不从一个或多个最低优先级队列发布任何指令(例如,来自最高优先级队列的1个指令、来自次高优先级队列的1个指令,以及没有来自其余两个较低优先级队列的指令)。类似地,基于这些队列的相对优先级,从用于线程1的4个队列中的一个或多个中发布用于线程1的指令。如果任一线程都不具有充足的就绪指令,则另一线程占据其管线(例如,如果线程0仅具有1个就绪指令,则线程1可以发布3个指令)。
虽然这是从按优先级次序从单独的队列中发布就绪指令的方面来描述的,但是这在构思上等同于将对于线程而言所有有资格的指令组合到一个队列中,指令按其类别的优先级次序布置并且从该队列中发布。该过程对于每个线程来进行并且在图6中的下方示意图610中通过图形方式表征。在该下方图中,用于每个线程的每个合并队列611a、611b包括来自单独的队列602a-606a、602b-606b(在上方图601中)的每个的就绪指令,指令基于单独的队列的相对优先级定序,例如,就绪的分支指令612a、612b(来自队列602a、602b),之后是就绪的地址生成指令614a、614b(来自队列604a、604b),之后是就绪的通用指令616a、616b(来自队列606a、606b)。
一般地,哪个指令发布给哪个管线无关紧要。然而,在一些情况下,来自特定线程的指令可按预定次序发布给管线。例如,如果存在编号为0至3的四个管线,则从第一线程(例如,线程0)选出的任意指令可首先发布给第一管线(例如,管线0),然后按升序发布给后续管线(例如,管线1);并且从第二线程(例如,线程1)选出的任意指令可首先发布给最后一个管线(例如,管线3),然后按降序发布给后续的管线(例如,管线2)。
因为功能单元528a、528b和528c中的每个管线能够以来自多于一个线程的指令告终,所以当指令调度器将指令发布给管线时,其还可以为管线提供指令与哪个线程相关联的指示。然后,如果不正确预测的指令出现而需要管线反绕,则管线能够反绕或清除仅那些与具有不正确预测的指令的线程相关联的指令而不是反绕全部的指令。在一些情况下,可允许不正确预测的指令在管线中继续,直到所有指令上行,直到不正确预测的指令已经执行。在该点上,来自特定线程的管线和保留站526a、526b或526c中的所有指令已经出现在不正确预测的指令之后并且需要反绕或清除。
在上面所描述且针对多线程处理器(或处理器核)的方法的变型例中,相同类别但是用于不同线程的指令可组合以通过将来自每个类别的单独队列的指令交错而形成用于该类别的单个队列。这可以参照图7来描述。在图6的上方图601(上面已说明)中,每个线程以及每个类别存在一个队列;然而,如图7的上方图701所示,对于所有线程对于每个类别存在一个队列:一个队列用于分支指令602c,一个队列用于地址生成指令604c,一个队列用于通用指令606c。如图7中的每个队列602c、604c、606c上的横线所指示,这些队列包括来自两个线程即线程0和线程1的交错指令。
通过以此方式组合线程的队列(即,通过交错),可以将特定类别的指令(来自线程0和线程1)优先于来自任一线程的所有其他指令。当选择指令进行调度时,指令调度器按优先级减小次序评定交错的队列并且利用上述方法来选择用于发布的指令。
这能够利用与上文相同的示例方案来进一步描述,2个线程(线程0和线程1),4个管线,线程0有4个队列,线程1有4个队列。4个管线在线程0与线程1之间共享,但是线程0的2个管线以及线程1的2个管线没有保留。
在判定要发布哪些指令时,按优先级减小次序评定交错的队列,因此,例如,如果来自线程0的1个分支指令和来自线程1的3个分支指令准备发布,则该周期将发布全部4个分支指令。相反,不通过交错,将从线程0发布1个分支指令,然后从线程0发布地址生成指令,并将从线程1发布2个分支指令。
通过将来自每个线程的指令交错,两个线程具有同等的优先级,并且基于队列的相对优先级(或者限定队列的类别)来发布指令。
以与之前的示例类似的方式,虽然这是从按优先级次序从单独的队列(602a、604c、606c)发布就绪指令这方面来描述的,但这在构思上等同于将所有线程的所有有资格的指令组合到一个队列中,指令按其类别的优先级次序布置且交错(对于每个类别内的不同线程)并且从该队列发布。该过程在图7的下方示意图710中以图形方式表示。在该下方图中,每个合并的队列包括来自每个单独的队列602c-606c的就绪指令(在上方图701中),基于单独队列的相对优先级来对指令定序,例如,交错的就绪分支指令702(来自队列602c),之后是交错的就绪地址生成指令704(来自队列604c),之后是交错的就绪通用指令706(来自队列606c)。
利用如上所述的来自各线程的指令的交错,资源可以是专用的并且基于指令类型(例如,基于类别)来优先化指令;同时仍赋予每个线程在类别内的同等优先级。否则,如果不使用交错,则来自一个线程的不太重要的指令可在来自另一线程的较高优先级的指令之前发布,因为指令调度器试图在线程之间同等地共享资源,除非就绪指令不充足。如参照图6和图7所描述的,交错因此可以使得处理器性能提高。
将理解的是,当实现上述方法时,在硬件中可能不存在真实的交错队列;然而,交错队列在构思上描述了指令调度器选择用于发布的就绪指令的方式。
本文给出的任何范围或设备值可扩大或改变,而不失去所追求的效果,这对本领域技术人员是显而易见的。
将理解的是,上述的益处和优点可涉及到一个实施例或者可以涉及到多个实施例。实施例不限于那些解决了任意或全部所陈述问题的实施例或者那些具有任意或全部的所陈述益处和优点的实施例。
对“一”项的任何提及是指那些项中的一个或多个。术语“包括”在此处用来表示包含所标识出的方法框或要素,但是这样的框或要素不包括排他列表,装置可以包含额外的框或要素,并且方法可以包含额外的框或操作。
对“逻辑”的特定指代是指执行一项或多项功能的结构。逻辑的示例包括布置成执行那些功能的电路。例如,这样的电路可以包括在制造过程中可用的晶体管和/或其他硬件元件。这种晶体管和/或其他元件可以用来形成实现和/或包含存储器的电路或结构,例如是寄存器、触发器、锁存器,逻辑运算器,诸如布尔运算、数学运算器,诸如加法器、乘法器或移位器,并且互连,这仅是举例说明。这些元件可提供作为定制电路或标准单元库、宏或其他抽象级。这些元件可以在具体布置中相互连接。逻辑可以包括为固定功能的电路,并且电路可被编程以执行一项或多项功能;这些编程可从固件或软件更新或控制机制来提供。标识为执行一项功能的逻辑还可以包括实现构成功能或子过程的逻辑。在示例中,硬件逻辑具有实现固定功能操作、或多个操作、状态机或过程的电路。
本文所描述的方法的步骤可以按任何适合的次序来执行,或者在适当情况下同时执行。另外,单个的框可以从任意方法中删除,而不偏离本文所描述的主题的精神和范围。上述任何示例的方案可以与被描述为形成其另外的示例的其他任意示例的方案相结合,而不丧失所追求的效果。在图中的要素显示通过箭头连接的情况下,将理解的是这些箭头仅显示了要素之间的一个示例的通信流(包括数据和控制消息)。要素之间的流可以沿任一方向或沿两个方向。
将理解的是,仅通过举例的方式给出了优选实施例的上述说明,本领域技术人员可以得到各种变型例。虽然上面已经在一定的特殊程度上描述了各个实施例,或者是参照了一个或多个单个的实施例,但本领域技术人员可以对所公开的实施例进行多方面改动,而不偏离本发明的精神或范围。

Claims (18)

1.一种选择指令以发布到无序处理器中的功能单元的方法,所述方法包括:
在保留站接收多个指令,每个指令是多种指令类型中的一种并且基于所述指令类型被分类到多个类别中的一个;
在所述保留站处将每个指令存储到多个指令队列中的一个中,每个指令队列与所述多个类别中的一个相关联,每个指令队列被分配了优先级和在时钟周期中被评定的指令的最大数量;以及
在所述保留站处从一个或多个所述指令队列中选择指令以按所分配优先级的次序发布给所述功能单元,从而基于所述多种指令类型的相对优先级来选择指令(400);
其中,从特定指令队列中选择指令包括:在时钟周期内,评定所述特定指令队列中的一个或多个指令中的每一个直至评定了该特定指令 队列的最大数量的指令,以判定所述指令是否就绪且之前尚未发布(404,406,420,422)。
2.根据权利要求1所述的方法,其中,所述方法还包括:在所述保留站和解码与重命名级中的一者处,基于指令类型将每个指令分类到所述多个类别中的一个。
3.根据权利要求1所述的方法,其中,按优先级的次序从所述指令队列中选择指令直到已经选择了最大数量的指令(412)。
4.根据权利要求3所述的方法,其中,所述功能单元包括一个或多个管线,并且所选的指令的最大数量等于管线的数量。
5.根据权利要求1所述的方法,其中,从特定指令队列中选择指令还包括:建立覆盖特定队列中待评定的指令的窗口,所述窗口由指向头指令的头指针和指向尾指令的尾指针来限定。
6.根据权利要求5所述的方法,其中,所述头指令是所述特定指令队列中尚未发布的最老指令。
7.根据权利要求5所述的方法,其中,所述头指令是所述特定指令队列中就绪且尚未发布的最老指令。
8.根据权利要求5至7中任一项所述的方法,其中,所述尾指令是所述特定指令队列中继所述头指令之后的第(X-1)个指令,其中X是在所述特定指令队列中被评定的指令的最大数量。
9.根据权利要求1至7中任一项所述的方法,其中,从特定指令队列中选择指令包括:从所述特定指令队列中选择指令直至选择了最大数量的指令。
10.根据权利要求1至7中任一项所述的方法,其中,所述多个类别包括控制转移指令、标记设定指令和地址生成指令中的至少一个的类别。
11.根据权利要求1至7中任一项所述的方法,其中,所述多个类别包括控制转移指令类别、标记设定指令类别和地址生成指令类别。
12.根据权利要求10所述的方法,其中,与所述控制转移指令类别相关联的指令队列被分配有最高优先级。
13.根据权利要求1至7中任一项所述的方法,还包括:在所述保留站处,将所选指令发布给所述功能单元以便执行。
14.根据权利要求13所述的方法,其中,所述功能单元包括一个或多个管线,并且将所选指令发布给所述功能单元包括将每个所选指令发布给所述管线之一。
15.根据权利要求1至7中任一项所述的方法,其中,所述无序处理器是多线程处理器,并且基于所述多种指令类型的相对优先级来从指令队列中选择指令,并且在指令类型内,从所述多线程处理器中的所有线程中选择指令。
16.一种选择指令以发布给无序处理器(100)中的功能单元(110)的保留站(108),所述保留站(108)包括:
指令分类器(202),其配置为接收多个指令,每个指令是多种指令类型中的一种并且基于所述指令类型被分类到多个类别中的一个;
多个指令队列(204-210),其与所述指令分类器(202)通信,每个指令队列(204-210)配置为接收来自所述指令分类器(202)的已经被分类到特定类别的指令并且存储所接收到的指令,每个指令队列(204-210)被分配了优先级和在时钟周期中被评定的指令的最大数量;以及
指令调度器(212),其与所述多个指令队列(204-210)中的每一个通信,所述指令调度器(212)配置为从一个或多个所述指令队列(204-210)中选择指令以按所分配优先级的次序发布给所述功能单元(110),从而基于所述多种指令类型的相对优先级来选择指令;
其中,从特定指令队列(204-210)中选择指令包括:在时钟周期内,评定所述特定指令队列(204-210)中的一个或多个指令中的每一个直至评定了该特定指令 队列的最大数量的指令,以判定所述指令是否就绪且之前尚未发布。
17.一种包括如权利要求16所述的保留站(108)的处理器(100)。
18.一种计算机可读存储介质,其上存储有计算机可读程序代码;所述计算机可读程序代码在由处理器执行时使得所述处理器执行权利要求1-15中任一项所述的方法。
CN201410374099.1A 2013-07-31 2014-07-31 基于类型的优先化指令 Active CN104346223B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810036547.5A CN108170471B (zh) 2013-07-31 2014-07-31 基于类型的优先化指令

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1313674.2 2013-07-31
GB201313674A GB2510655B (en) 2013-07-31 2013-07-31 Prioritizing instructions based on type

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201810036547.5A Division CN108170471B (zh) 2013-07-31 2014-07-31 基于类型的优先化指令

Publications (2)

Publication Number Publication Date
CN104346223A CN104346223A (zh) 2015-02-11
CN104346223B true CN104346223B (zh) 2018-02-13

Family

ID=49167245

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201410374099.1A Active CN104346223B (zh) 2013-07-31 2014-07-31 基于类型的优先化指令
CN201810036547.5A Active CN108170471B (zh) 2013-07-31 2014-07-31 基于类型的优先化指令

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201810036547.5A Active CN108170471B (zh) 2013-07-31 2014-07-31 基于类型的优先化指令

Country Status (4)

Country Link
US (2) US9558001B2 (zh)
CN (2) CN104346223B (zh)
DE (1) DE102014011332B4 (zh)
GB (1) GB2510655B (zh)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015101827A1 (en) * 2013-12-31 2015-07-09 Mosys, Inc. Integrated main memory and coprocessor with low latency
US10031758B2 (en) * 2014-03-31 2018-07-24 Netronome Systems, Inc. Chained-instruction dispatcher
WO2016097811A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on fuse array access in out-of-order processor
US10108420B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
US10089112B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor
US10108421B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude shared ram-dependent load replays in an out-of-order processor
US10120689B2 (en) 2014-12-14 2018-11-06 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
US10209996B2 (en) 2014-12-14 2019-02-19 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
US10146539B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd. Load replay precluding mechanism
US10108430B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
KR101837817B1 (ko) 2014-12-14 2018-03-12 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 페이지 워크에 따라 로드 리플레이를 억제하는 메커니즘
WO2016097815A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor
US9703359B2 (en) 2014-12-14 2017-07-11 Via Alliance Semiconductor Co., Ltd. Power saving mechanism to reduce load replays in out-of-order processor
US10114646B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
JP6286067B2 (ja) * 2014-12-14 2018-02-28 ヴィア アライアンス セミコンダクター カンパニー リミテッド アウトオブオーダープロセッサでの長いロードサイクルに依存するロードリプレイを除外するメカニズム
US10146540B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
US10228944B2 (en) 2014-12-14 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
US9804845B2 (en) 2014-12-14 2017-10-31 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor
US10114794B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
WO2016097814A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude shared ram-dependent load replays in out-of-order processor
US10088881B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude I/O-dependent load replays in an out-of-order processor
WO2016097790A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor
KR101837816B1 (ko) 2014-12-14 2018-03-12 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 i/o­의존 로드 리플레이를 불가능하게 하는 메커니즘
WO2016097797A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Load replay precluding mechanism
US10127046B2 (en) 2014-12-14 2018-11-13 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
KR101819315B1 (ko) 2014-12-14 2018-01-16 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법
KR101819316B1 (ko) * 2014-12-14 2018-01-16 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 캐시 불가­의존 로드 리플레이를 억제하는 메커니즘
US10175984B2 (en) 2014-12-14 2019-01-08 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
US10083038B2 (en) 2014-12-14 2018-09-25 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on page walks in an out-of-order processor
CN104657114B (zh) 2015-03-03 2019-09-06 上海兆芯集成电路有限公司 并行化的多分派系统和用于排序队列仲裁的方法
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
CN105117202B (zh) * 2015-09-25 2018-11-27 上海兆芯集成电路有限公司 具有融合保留站结构的微处理器
US10191748B2 (en) * 2015-11-30 2019-01-29 Intel IP Corporation Instruction and logic for in-order handling in an out-of-order processor
KR102526104B1 (ko) * 2016-03-25 2023-04-27 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10089114B2 (en) * 2016-03-30 2018-10-02 Qualcomm Incorporated Multiple instruction issuance with parallel inter-group and intra-group picking
US20170286114A1 (en) * 2016-04-02 2017-10-05 Intel Corporation Processors, methods, and systems to allocate load and store buffers based on instruction type
US20170364356A1 (en) * 2016-06-16 2017-12-21 International Business Machines Corporation Techniques for implementing store instructions in a multi-slice processor architecture
US10318294B2 (en) 2016-06-20 2019-06-11 International Business Machines Corporation Operation of a multi-slice processor implementing dependency accumulation instruction sequencing
CN106227507B (zh) * 2016-07-11 2019-10-18 北京深鉴智能科技有限公司 计算系统及其控制器
US11086628B2 (en) * 2016-08-15 2021-08-10 Advanced Micro Devices, Inc. System and method for load and store queue allocations at address generation time
CN106484519B (zh) * 2016-10-11 2019-11-08 东南大学苏州研究院 异步线程重组方法及基于该方法的simt处理器
US11054884B2 (en) * 2016-12-12 2021-07-06 Intel Corporation Using network interface controller (NIC) queue depth for power state management
JP2018173747A (ja) * 2017-03-31 2018-11-08 パナソニック デバイスSunx株式会社 電子機器、センサシステム、コントローラ及びセンサユニット
US10977045B2 (en) 2017-11-29 2021-04-13 International Business Machines Corporation Priority instruction handling with optimized issue queue design
US10564976B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Scalable dependency matrix with multiple summary bits 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
US10564979B2 (en) * 2017-11-30 2020-02-18 International Business Machines Corporation Coalescing global completion table entries 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
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
US10884753B2 (en) * 2017-11-30 2021-01-05 International Business Machines Corporation Issue queue with dynamic shifting between ports
US10572264B2 (en) 2017-11-30 2020-02-25 International Business Machines Corporation Completing coalesced global completion table entries in an out-of-order processor
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
US10901744B2 (en) 2017-11-30 2021-01-26 International Business Machines Corporation Buffered instruction dispatching to an issue queue
US11669333B2 (en) * 2018-04-26 2023-06-06 Qualcomm Incorporated Method, apparatus, and system for reducing live readiness calculations in reservation stations
US11294678B2 (en) * 2018-05-29 2022-04-05 Advanced Micro Devices, Inc. Scheduler queue assignment
US10963392B1 (en) 2018-07-30 2021-03-30 Apple Inc. Victim allocations in shared system cache
US10649922B2 (en) 2018-08-06 2020-05-12 Apple Inc. Systems and methods for scheduling different types of memory requests with varying data sizes
US11422821B1 (en) * 2018-09-04 2022-08-23 Apple Inc. Age tracking for independent pipelines
US11182167B2 (en) * 2019-03-15 2021-11-23 International Business Machines Corporation Method to determine the oldest instruction in an instruction queue of a processor with multiple instruction threads
KR20220038694A (ko) * 2019-07-03 2022-03-29 후아시아 제너럴 프로세서 테크놀러지스 인크. 가속기 회로의 조작을 위한 명령어
US11567555B2 (en) * 2019-08-30 2023-01-31 Intel Corporation Software assisted power management
CN110633105B (zh) * 2019-09-12 2021-01-15 安徽寒武纪信息科技有限公司 指令序列处理方法、装置、电子设备和存储介质
EP3812891A1 (en) * 2019-10-21 2021-04-28 ARM Limited Decoupled access-execute processing
US20210157638A1 (en) * 2019-11-22 2021-05-27 Huawei Technologies Co., Ltd. Method and apparatus for functional unit assignment
US11334384B2 (en) * 2019-12-10 2022-05-17 Advanced Micro Devices, Inc. Scheduler queue assignment burst mode
CN111221575A (zh) * 2019-12-30 2020-06-02 核芯互联科技(青岛)有限公司 一种乱序高性能处理器的寄存器重命名方法及系统
US11392410B2 (en) * 2020-04-08 2022-07-19 Microsoft Technology Licensing, Llc Operand pool instruction reservation clustering in a scheduler circuit in a processor
TWI755744B (zh) * 2020-05-28 2022-02-21 芯鼎科技股份有限公司 控制命令列隊的裝置及方法
US11327766B2 (en) * 2020-07-31 2022-05-10 International Business Machines Corporation Instruction dispatch routing
US20230385065A1 (en) * 2020-10-14 2023-11-30 Telefonaktiebolaget Lm Ericsson (Publ) Apparatus and Method for Simultaneous Multithreaded Instruction Scheduling in a Microprocessor
US11948000B2 (en) 2020-10-27 2024-04-02 Advanced Micro Devices, Inc. Gang scheduling for low-latency task synchronization
US20220374237A1 (en) * 2021-05-21 2022-11-24 Telefonaktiebolaget Lm Ericsson (Publ) Apparatus and method for identifying and prioritizing certain instructions in a microprocessor instruction pipeline
CN113923120B (zh) * 2021-09-29 2023-08-18 广州鲁邦通物联网科技股份有限公司 一种无线通信模块的模块id重命名方法以及终端设备
CN114489479B (zh) * 2021-12-23 2023-06-09 北京云宽志业网络技术有限公司 数据存储磁盘上下电的方法及装置
CN115269014B (zh) * 2022-09-26 2022-12-30 上海登临科技有限公司 一种指令调度方法、芯片及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107433B1 (en) * 2001-10-26 2006-09-12 Lsi Logic Corporation Mechanism for resource allocation in a digital signal processor based on instruction type information and functional priority and method of operation thereof
CN101334766A (zh) * 2008-06-30 2008-12-31 东软飞利浦医疗设备系统有限责任公司 一种并行微处理器及其实现方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0177742B1 (ko) * 1994-12-15 1999-05-15 윤종용 마이크로 콘트롤러의 칩내에 합체 가능한 마이크로 콘트롤러 디벨롭먼트 시스템
US5644742A (en) * 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
US5710902A (en) * 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier
US6105128A (en) * 1998-04-30 2000-08-15 Intel Corporation Method and apparatus for dispatching instructions to execution units in waves
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6678840B1 (en) * 2000-08-31 2004-01-13 Hewlett-Packard Development Company, Lp. Fault containment and error recovery in a scalable multiprocessor
JP2002108703A (ja) * 2000-10-02 2002-04-12 Fujitsu Ltd キャッシュ制御装置及びプロセッサ
US6857060B2 (en) * 2001-03-30 2005-02-15 Intel Corporation System, apparatus and method for prioritizing instructions and eliminating useless instructions
US7032101B2 (en) * 2002-02-26 2006-04-18 International Business Machines Corporation Method and apparatus for prioritized instruction issue queue in a processor
US20040181651A1 (en) * 2003-03-11 2004-09-16 Sugumar Rabin A. Issue bandwidth in a multi-issue out-of-order processor
US8190863B2 (en) * 2004-07-02 2012-05-29 Intel Corporation Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US8392590B2 (en) * 2004-09-10 2013-03-05 Cavium, Inc. Deterministic finite automata (DFA) processing
US20060200648A1 (en) * 2005-03-02 2006-09-07 Andreas Falkenberg High-level language processor apparatus and method
US20080063384A1 (en) * 2006-09-08 2008-03-13 Masahide Tanaka Recording device, printing system, and disc medium
CN101344842B (zh) * 2007-07-10 2011-03-23 苏州简约纳电子有限公司 多线程处理器及其多线程处理方法
US8285926B2 (en) * 2010-05-03 2012-10-09 Oracle America, Inc. Cache access filtering for processors without secondary miss detection
US8972700B2 (en) * 2011-02-28 2015-03-03 Freescale Semiconductor, Inc. Microprocessor systems and methods for latency tolerance execution
US8880857B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9110656B2 (en) * 2011-08-16 2015-08-18 Freescale Semiconductor, Inc. Systems and methods for handling instructions of in-order and out-of-order execution queues
JP2013206095A (ja) * 2012-03-28 2013-10-07 Fujitsu Ltd データ処理装置及びデータ処理装置の制御方法
US9645819B2 (en) * 2012-06-15 2017-05-09 Intel Corporation Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107433B1 (en) * 2001-10-26 2006-09-12 Lsi Logic Corporation Mechanism for resource allocation in a digital signal processor based on instruction type information and functional priority and method of operation thereof
CN101334766A (zh) * 2008-06-30 2008-12-31 东软飞利浦医疗设备系统有限责任公司 一种并行微处理器及其实现方法

Also Published As

Publication number Publication date
US9558001B2 (en) 2017-01-31
DE102014011332B4 (de) 2024-04-25
GB2510655A (en) 2014-08-13
DE102014011332A1 (de) 2015-02-05
CN108170471A (zh) 2018-06-15
CN104346223A (zh) 2015-02-11
GB2510655B (en) 2015-02-25
US20150106595A1 (en) 2015-04-16
CN108170471B (zh) 2022-03-29
US20170102949A1 (en) 2017-04-13
US10001997B2 (en) 2018-06-19
GB201313674D0 (en) 2013-09-11

Similar Documents

Publication Publication Date Title
CN104346223B (zh) 基于类型的优先化指令
CN103250131B (zh) 包括用于早期远分支预测的影子缓存的单周期多分支预测
EP2972844B1 (en) Method and apparatus for efficient scheduling for asymmetrical execution units
CN104049938B (zh) 间接分支预测
CN106648553B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
CN104471529B (zh) 用以扩展软件分支目标提示的方法及设备
CN101681259A (zh) 用于使用局部条件码寄存器以加速管线处理器中的条件指令执行的系统和方法
EP0762270A2 (en) Microprocessor with load/store operation to/from multiple registers
CN101281460B (zh) 处理多个线程的方法和设备
US10514919B2 (en) Data processing apparatus and method for processing vector operands
US20160011876A1 (en) Managing instruction order in a processor pipeline
WO2014090091A1 (en) Tracking multiple conditions in a general purpose register and instruction therefor
CN107038020A (zh) 支持端序不可知simd指令的处理器和方法
US11900120B2 (en) Issuing instructions based on resource conflict constraints in microprocessor
CN107918547A (zh) 在并行化处理器中的刷新
US20160011877A1 (en) Managing instruction order in a processor pipeline
CN102890624B (zh) 用于管理无序毫码控制操作的方法和系统
US11803388B2 (en) Apparatus and method for predicting source operand values and optimized processing of instructions
US9058179B2 (en) Retirement serialisation of status register access operations
US8055883B2 (en) Pipe scheduling for pipelines based on destination register number
US7337304B2 (en) Processor for executing instruction control in accordance with dynamic pipeline scheduling and a method thereof
US20100217961A1 (en) Processor system executing pipeline processing and pipeline processing method
US11194577B2 (en) Instruction issue according to in-order or out-of-order execution modes
Shah et al. Comprehensive study of the features, execution steps and microarchitecture of the superscalar processors
US20040128488A1 (en) Strand switching algorithm to avoid strand starvation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Hertfordshire

Patentee after: Mex Technology Co.,Ltd.

Address before: Hertfordshire

Patentee before: Hai Luo Software Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20180720

Address after: California, USA

Patentee after: Imagination Technologies Ltd.

Address before: Hertfordshire

Patentee before: Mex Technology Co.,Ltd.

Effective date of registration: 20180720

Address after: Hertfordshire

Patentee after: Hai Luo Software Co.,Ltd.

Address before: Hertfordshire

Patentee before: Imagination Technologies Ltd.

TR01 Transfer of patent right