CN112015480A - 指令的分配方法和处理器 - Google Patents

指令的分配方法和处理器 Download PDF

Info

Publication number
CN112015480A
CN112015480A CN202010898333.6A CN202010898333A CN112015480A CN 112015480 A CN112015480 A CN 112015480A CN 202010898333 A CN202010898333 A CN 202010898333A CN 112015480 A CN112015480 A CN 112015480A
Authority
CN
China
Prior art keywords
instruction
type
determining
issue queue
determined
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.)
Pending
Application number
CN202010898333.6A
Other languages
English (en)
Inventor
张康康
邹鹏皓
王健斌
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.)
Shanghai Zhaoxin Integrated Circuit Co Ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co 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 Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority to CN202010898333.6A priority Critical patent/CN112015480A/zh
Publication of CN112015480A publication Critical patent/CN112015480A/zh
Pending 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • 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/3802Instruction prefetching
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Abstract

本公开涉及一种指令的分配方法和处理器,该分配方法包括:根据指令的属性,确定指令的类型;将属于第一类型的指令发送到第一发布队列,并将属于第二类型的指令发送到第二发布队列,所述第一发布队列是基于矩阵结构的发布队列,所述第二发布队列是基于记分板‑内容可寻址内存CAM结构的发布队列;以及执行所述第一发布队列和所述第二发布队列中的指令。

Description

指令的分配方法和处理器
技术领域
本公开涉及信息处理领域,尤其涉及一种指令的分配方法和处理器。
背景技术
当前的微处理器被设计成并行且无序地执行指令。在高性能的处理器中,指令被调度进入发布队列等待,直到其操作数就绪且所需的资源可用后被执行。对于处理器的微体系结构,发布队列存储等待执行的指令,并且通过逻辑来监视操作数是否准备就绪并选择准备好的指令来向执行单元发布。发布队列是微体系结构的一个相当复杂的组成部分,它是能源的最大消耗者之一,是功率密度的主要场所,也是性能的关键。
现有的实现发布队列的方式面临发布队列的逻辑的复杂度高和电力消耗大的问题。本申请旨在提供一种改进的发布队列设计方式,通过对指令进行适当分配,来降低发布队列的发布逻辑的复杂度,并减小电力消耗。
发明内容
有鉴于此,本公开提出了一种指令的分配方法,其特征在于,所述分配方法应用于处理器,该分配方法包括:根据指令的属性,确定指令的类型;将属于第一类型的指令发送到第一发布队列,并将属于第二类型的指令发送到第二发布队列,所述第一发布队列是基于矩阵结构的发布队列,所述第二发布队列是基于记分板-内容可寻址内存CAM结构的发布队列;以及执行所述第一发布队列和所述第二发布队列中的指令。
在一种可能的实现方式中,根据指令的属性,确定指令的类型,包括:判断是否需要所述指令在预定周期中背靠背地唤醒另一指令;在判断为需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第一类型;在判断为不需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第二类型。
在一种可能的实现方式中,判断是否需要所述指令在预定周期中背靠背地唤醒另一指令,包括:判断该另一指令的源操作数是否依赖于所述指令的目的操作数;在判断为需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第一类型,包括:在判断为该另一指令的源操作数依赖于所述指令的目的操作数的情况下,确定为所述指令属于所述第一类型。
在一种可能的实现方式中,所述预定周期是指从所述指令被发布起直到其被执行结束的执行延迟。
在一种可能的实现方式中,根据指令的属性,确定指令的类型,包括:判断所述指令的执行延迟是固定的还是可变的;在判断为所述指令的执行延迟是固定的情况下,确定为所述指令属于所述第一类型;在判断为所述指令的执行延迟是可变的情况下,确定为所述指令属于所述第二类型。
在一种可能的实现方式中,判断所述指令的执行延迟是固定的还是可变的,包括:根据所述指令的单位或操作码字段来判断所述指令的执行延迟是固定的还是可变的。
在一种可能的实现方式中,根据指令的属性,确定指令的类型,包括:判断所述指令是否是重要的指令;在判断为所述指令是重要的指令的情况下,确定为所述指令属于所述第一类型;在判断为所述指令不是重要的指令的情况下,确定为所述指令属于所述第二类型。
在一种可能的实现方式中,所述重要的指令包括处理器中存储的较早的指令、指令序列中的X86分支指令和被指定为具有重要性属性的指令。
根据本公开的一方面提供了一种处理器,其特征在于,包括:多个发布队列,包括第一发布队列和第二发布队列,所述第一发布队列是基于矩阵结构的发布队列,所述第二发布队列是基于记分板-内容可寻址内存CAM结构的发布队列;队列分配模块,被配置为根据指令的属性,确定指令的类型,将属于第一类型的指令发送到所述第一发布队列,并将属于第二类型的指令发送到所述第二发布队列;以及多个执行单元,其中,所述第一发布队列和所述第二发布队列将各自的指令发布到所述多个执行单元中的相应的执行单元以供执行。
在一种可能的实现方式中,所述队列分配模块包括:第一子模块,被配置为判断是否需要所述指令在预定周期中背靠背地唤醒另一指令;在判断为需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第一类型;在判断为不需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第二类型。
在一种可能的实现方式中,所述队列分配模块包括:第二子模块,被配置为判断所述指令的执行延迟是固定的还是可变的;在判断为所述指令的执行延迟是固定的情况下,确定为所述指令属于所述第一类型;在判断为所述指令的执行延迟是可变的情况下,确定为所述指令属于所述第二类型。
在一种可能的实现方式中,所述队列分配模块包括:第三子模块,被配置为判断所述指令是否是重要的指令;在判断为所述指令是重要的指令的情况下,确定为所述指令属于所述第一类型;在判断为所述指令不是重要的指令的情况下,确定为所述指令属于所述第二类型。
根据本公开,由于对所有指令进行了分别向着基于矩阵结构的发布队列和基于记分板-CAM结构的发布队列的分配,因此与使用基于单一结构的发布队列(仅使用基于矩阵结构的发布队列或仅使用基于记分板-CAM结构的发布队列)或其它结构的发布队列相比,由于矩阵结构和记分板-CAM结构的优点,使得能够在高时钟速率执行指令的情况下提高了发布队列的利用率。根据本公开,能够缩小矩阵的大小,并减少物理寄存器的数量。并且,使得记分板-CAM可以减少所广播的目的标签的数量,并且减少了比较逻辑。本公开有利于减小电力消耗并提高系统性能。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出使用基于记分板-CAM结构的发布队列的处理方法的示意图。
图2示出使用基于矩阵结构的发布队列的处理方法的示意图。
图3示出根据本申请的示例实施方式的发布队列的配置的示意图。
图4示出根据本申请的示例实施方式的指令分配方法的流程图。
图5示出根据本申请的示例实施方式的处理器的框图。
图6示出根据本申请的另一示例实施方式的处理器的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
基于记分板-CAM结构的发布队列
在当前的处理器中,当设计处理器的发布逻辑时,实现发布队列的方法之一是基于记分板-CAM(内容可寻址内存)结构的方法。图1示出使用基于记分板-CAM结构的发布队列(本文中有时也简称为“记分板-CAM”)的处理方法的示意图。如本申请的图1所例示,该结构保持指令信息和标记。通常,指令访问记分板以检查它是否与其它指令有依赖关系。生成CAM所用的标记。CAM存储目的(dest)标签、源索引和指示源是否准备就绪的源标记。发布指令时,将指令的目的标签广播到“发布队列”中所保存的所有指令。然后,将每个指令的源索引与广播的目的标签进行比较;如果匹配,则操作数标记为准备就绪。处理器可以并行广播和比较多个标签。标签的数量与调度端口相关。在图1中,N是大于等于1的整数。由于当前的微体系结构支持多个执行单元,因此使得在给定的周期内可能生成许多结果,导致标签数越来越多。在每个周期必须执行的多次标签比较使得发布逻辑的复杂度很高且电力消耗很大。基于记分板-CAM结构的发布队列的特点是可能会进行很多次的标签比较,而且这些标签比较必须在每一个周期都执行。该特点使得发布队列成为功率密度的主要场所。同时,虽然利用基于记分板-CAM结构的发布队列实现大的无序发布队列是容易的,但在高时钟速率下来实现却是困难的。
基于矩阵结构的发布队列
在当前的处理器中,当设计处理器的发布逻辑时,基于矩阵结构的发布队列(本文中有时也简称为“矩阵”)是实现发布队列的另一种方法。位矩阵具有与发布队列中的条目数量一样多的行,具有与物理寄存器数量一样多的列。当发布逻辑接收到指令时,该方法将指令行中的所有就绪的物理寄存器的位清零,而该指令行中的未就绪的物理寄存器的位保持为1。当指令行中的所有的物理寄存器的位都为0时,表明该指令准备就绪。图2示出使用基于矩阵结构的发布队列的处理方法的示意图。如本申请的图2所示,矩阵保持指令的目的标签和依赖位向量。当指令访问矩阵时,指令的源索引将与每个条目的目的标签进行比较。如果匹配,指令将记录相应的条目地址。因此,每个指令都将生成一个依赖位向量,用于指示哪个条目的指令与它具有依赖关系。当发布指令时,矩阵为每个条目广播一个唤醒位向量。每个条目的依赖位向量与唤醒位向量执行逻辑。如果依赖位向量全部为零,则指令就绪,可以发布。矩阵对资源的消耗与矩阵的大小有关:依赖位向量和唤醒位向量与矩阵的大小有关,且与物理寄存器的数目成二次方关系。大型无序发布队列的实现需要大量的物理寄存器,这导致矩阵的大小非常大,并且由于在检测指令是否就绪时必须核查与物理寄存器的数量一样多数量的位,从而导致检测逻辑复杂。同时,矩阵需要记录指令的状态,当指令发布时,相应的条目通常不能被直接释放,因此基于矩阵结构的发布队列的利用率不高。
由于在高时钟速率下实现大的无序发布队列是困难的,因此,本申请利用基于记分板-CAM结构的发布队列和基于矩阵的发布队列的特点,将这两种实现发布队列的结构相结合,来实现组合的大的无序发布队列。
如上所述,基于记分板-CAM结构的发布队列的优点是,记分板可以记录指令状态,CAM可以在指令发布时释放指令,能够减少所需的物理寄存器的数量和提高发布队列的利用率。基于矩阵结构的发布队列的优点是,其可以以高时钟速率运行,能够提高指令执行速度。本申请通过将基于记分板-CAM结构的发布队列和基于矩阵结构的发布队列相结合,以发挥各自的优势的同时,降低发布队列的发布逻辑的复杂度,并减小电力消耗。
组合结构的发布队列
图3示出根据本公开一实施例的发布队列的配置的示意图。在处理器中,当设计处理器的发布逻辑时,根据基于记分板-CAM(内容可寻址内存)结构的发布队列和基于矩阵结构的发布队列的特点,将发布逻辑的配置设置为包括:根据指令的属性,对指令进行分类;使得一部分指令被发送至基于矩阵结构的发布队列,而另一部分指令被发送至基于记分板-CAM结构的发布队列;以及由各个发布队列将指令发送至相应的执行单元去执行。
图4示出根据本申请的指令分配方法的流程图。如图4所示,在步骤401中,根据指令的属性,确定指令的类型。当在步骤401中确定指令的类型为第一类型时,处理进入步骤402。在步骤402中,将第一类型的指令发送到基于矩阵结构的发布队列。之后,在步骤404中,执行基于矩阵结构的发布队列中的指令。当在步骤401中确定指令的类型为第二类型时,处理进入步骤403。在步骤403中,将第二类型的指令发送到基于记分板-CAM结构的发布队列。之后,在步骤405中,执行基于记分板-CAM结构的发布队列中的指令。然后,该指令分配方法的流程结束。
在一种可能的实现方式中,根据指令的属性,确定指令的类型,包括:判断是否需要所述指令在预定周期中背靠背地唤醒另一指令;在判断为需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第一类型;在判断为不需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第二类型。
在处理器要处理的指令中,一些指令需要在预定周期中背靠背地唤醒其它指令。需要在预定周期中背靠背地唤醒其它指令的这些指令被分配进入基于矩阵结构的发布队列,这样,背靠背唤醒的动作可以以较高的时钟速率完成。其余的指令可以进入基于记分板-CAM结构的发布队列。
在一种可能的实现方式中,判断是否需要所述指令在预定周期中背靠背地唤醒另一指令,包括:判断该另一指令的源操作数是否依赖于所述指令的目的操作数;在判断为需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第一类型,包括:在判断为该另一指令的源操作数依赖于所述指令的目的操作数的情况下,确定为所述指令属于所述第一类型。
例如,当指令B的源(src)操作数依赖于指令A的目的(dest)操作数时,指令A被确定为属于第一类型,并且被分配进入基于矩阵结构的发布队列;指令B被确定为属于第二类型,并且被分配进入基于记分板-CAM结构的发布队列。指令A在发布后的某个阶段唤醒指令B。这里的“唤醒”意味着消除指令B对指令A的依赖关系。唤醒之后,指令B成为一个就绪的指令,并且也可以通过矩阵或记分板-CAM进行发布。唤醒阶段由指令A的执行延迟决定。所述预定周期是指从所述指令被发布起直到其被执行结束的执行延迟。
唤醒是背靠背的,这意味着指令B将在指令A被调度的周期后立即进行调度。包括基于矩阵结构的发布队列和基于记分板-CAM结构的发布队列这两部分的预留站(RS)根据指令的类型确定某一指令是否需要在其执行延迟的预定周期中背靠背地唤醒另一指令。在这种情况下,预留站(RS)通过检查相应的标记或设置能够判断哪个指令需要在其执行周期中背靠背地唤醒其它指令。该其它指令可能是由于依赖关系而需要被唤醒,也可能是由于设计考虑而被设置为需要被唤醒。这样,被判断为需要在执行周期中背靠背地唤醒其它指令的指令被分配进入基于矩阵结构的发布队列,其它指令被分配进入基于记分板-CAM结构的发布队列。
当指令B的源(src)依赖于指令A的目的(dest)时,在消除指令B对指令A的依赖关系之前,按照上述的判断方式,指令B被分配进入基于记分板-CAM结构的发布队列。在如上所述消除了指令B对指令A的依赖关系之后,指令B可能变为一个不依赖于其它指令的指令。在这种情况下,对指令B的属性进行判断,若指令B需要在其执行周期中唤醒其它指令,则指令B被分配进入基于矩阵结构的发布队列;若指令B不需要在其执行周期中唤醒其它指令,则指令B被分配进入基于记分板-CAM结构的发布队列。
但是,应当理解的是,判断是否需要所述指令在预定周期中背靠背地唤醒另一指令的方式不限于上述示例的方式,该判断也可以根据系统设计需要或者设计者对系统性能要求的偏好而进行,只要能够判断出是否需要指令在预定周期中背靠背地唤醒另一指令即可。
在一种可能的实现方式中,根据指令的属性,确定指令的类型,包括:判断所述指令的执行延迟是固定的还是可变的;在判断为所述指令的执行延迟是固定的情况下,确定为所述指令属于所述第一类型;在判断为所述指令的执行延迟是可变的情况下,确定为所述指令属于所述第二类型。
在处理器要处理的指令中,有一些指令的执行延迟是固定的,这些指令被称为“固定执行延迟指令”。对于固定执行延迟指令,它们可以进入基于矩阵结构的发布队列,使得结构可以更简单、执行速度更快。可变延迟指令可以进入基于记分板-CAM结构的发布队列。包括矩阵和记分板-CAM两部分的预留站(RS)根据指令的类型确定指令的执行延迟是否是固定的。对于一个整数指令,它进行1T(即1个时钟周期)执行,也就是说,整数指令的执行延迟是1T,即1个时钟周期。对于需要大于1T的(N+1)T(其中,N是大于等于1的整数)执行延迟的指令,只要其执行延迟是固定的,预留站(RS)就能够进行相应的判断。预留站能够判断哪一个指令是1T或(N+1)T固定执行延迟指令,哪一个不是1T或(N+1)T固定执行延迟指令。因此,1T或(N+1)T固定执行延迟指令被分配进入基于矩阵结构的发布队列,其它指令被分配进入基于记分板-CAM结构的发布队列。
在处理器要执行的指令中,大多数指令具有固定的执行延迟,它们将被分配进入基于矩阵结构的发布队列。其它具有可变执行延迟的指令被称为“可变执行延迟指令”,它们将被分配进入基于记分板-CAM结构的发布队列。可变执行延迟指令例如是不在缓存中的加载、浮点除法和浮点平方根等。例如,不在缓存中的加载指令需要等待访问缓存。对于可变执行延迟指令,执行单元将在执行完成时通知预留站(RS)。
在一种可能的实现方式中,预留站(RS)根据指令的单位以及/或者操作码字段来判断指令的执行延迟是否固定。
在一种可能的实现方式中,对于执行延迟固定为2T(即2个时钟周期)、3T(即3个时钟周期)、……、NT(即N个时钟周期)等的指令(其中,N是大于等于1的整数),只要其执行延迟是固定的,都可以被分配进入矩阵,而其余的可变执行延迟指令被分配进入记分牌-CAM。
在一种可能的实现方式中,根据指令的属性,确定指令的类型,包括:判断所述指令是否是重要的指令;在判断为所述指令是重要的指令的情况下,确定为所述指令属于所述第一类型;在判断为所述指令不是重要的指令的情况下,确定为所述指令属于所述第二类型。
可以根据指令的重要性对指令进行分类。可以将重要的指令分配进入矩阵,而将其余指令分配进入记分板-CAM。在这种情况下,预留站(RS)判断指令属性以确定哪个指令是重要的。“重要的”指令可以是由系统的设计需要决定的,也可以是系统的性能需要决定的。另一方面,对“重要性”的判断可以是在一定程度上是主观的,由设计者来决定哪个指令是重要的并且在指令的属性中将其标记为“重要”。例如,处理器中的最早的指令可能被确定为是重要的指令,因为它与核心性能有关。指令中的X 86分支指令可能被确定为是重要的指令,因为该分支预测缺失与否决定了处理器的系统性能。系统设计者可以根据自己的设计偏好,将某个指令指定为重要的指令。即,所述重要的指令包括处理器中存储的较早的指令、指令序列中的X86分支指令和被指定为具有重要性属性的指令。
另一方面,在一种可能的实现方式中,公开了一种处理器,包括:多个发布队列,包括第一发布队列和第二发布队列,所述第一发布队列是基于矩阵结构的发布队列,所述第二发布队列是基于记分板-内容可寻址内存CAM结构的发布队列;队列分配模块,被配置为根据指令的属性,确定指令的类型,将属于第一类型的指令发送到所述第一发布队列,并将属于第二类型的指令发送到所述第二发布队列;以及多个执行单元,其中,所述第一发布队列和所述第二发布队列将各自的指令发布到所述多个执行单元中的相应的执行单元以供执行。
在一种可能的实现方式中,所述队列分配模块包括:第一子模块,被配置为判断是否需要所述指令在预定周期中背靠背地唤醒另一指令;在判断为需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第一类型;在判断为不需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第二类型。
在一种可能的实现方式中,所述队列分配模块包括:第二子模块,被配置为判断所述指令的执行延迟是固定的还是可变的;在判断为所述指令的执行延迟是固定的情况下,确定为所述指令属于所述第一类型;在判断为所述指令的执行延迟是可变的情况下,确定为所述指令属于所述第二类型。
在一种可能的实现方式中,所述队列分配模块包括:第三子模块,被配置为判断所述指令是否是重要的指令;在判断为所述指令是重要的指令的情况下,确定为所述指令属于所述第一类型;在判断为所述指令不是重要的指令的情况下,确定为所述指令属于所述第二类型。
图5示出根据本申请的示例实施方式的处理器的框图。图5所示的处理器包括队列分配模块501、第一~N发布队列502以及第一~N执行单元503,其中,N是大于等于1的整数。在一种可能的实现方式中,队列分配模块501根据指令的属性,确定指令的类型,将属于第一类型的指令发送到第一发布队列,并将属于第二类型的指令发送到第二发布队列,所述第一发布队列是基于矩阵结构的发布队列,所述第二发布队列是基于记分板-内容可寻址内存CAM结构的发布队列。每个发布队列502连接至相应的执行单元503,从而使得可以将各个发布队列502中的指令发布到相应的执行单元503以供执行。
图6示出根据本申请的另一示例实施方式的处理器的框图。在图6中,与图5相同的附图标记和例示表示相同的内容,在此不再重复说明。图6与图5的不同之处在于,图6中的队列分配模块501包括用虚线表示的可选的第一子模块5011、第二子模块5012和第三子模块5013。
在一种可能的实现方式中,第一子模块5011被配置为判断是否需要所述指令在预定周期中背靠背地唤醒另一指令;在判断为需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第一类型;在判断为不需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第二类型。
在一种可能的实现方式中,第二子模块5012被配置为判断所述指令的执行延迟是固定的还是可变的;在判断为所述指令的执行延迟是固定的情况下,确定为所述指令属于所述第一类型;在判断为所述指令的执行延迟是可变的情况下,确定为所述指令属于所述第二类型。
在一种可能的实现方式中,第三子模块5013被配置为判断所述指令是否是重要的指令;在判断为所述指令是重要的指令的情况下,确定为所述指令属于所述第一类型;在判断为所述指令不是重要的指令的情况下,确定为所述指令属于所述第二类型。
需要说明的是,尽管以指令的属性作为示例介绍了对指令进行分类的标准,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用需求灵活设定进行分配的标准,只要能够将指令进行分类以分配到基于不同的结构的发布队列即可。
如上所述,在处理器中,当设计处理器的发布逻辑时,基于矩阵结构的发布队列和基于记分板-CAM结构的发布队列可以接受不同的指令并形成一个大的发布队列。这样,能够缩小矩阵的大小,并减少物理寄存器的数量。根据本公开,由于对所有指令进行了分别向着基于矩阵结构的发布队列和基于记分板-CAM结构的发布队列的分配,因此与使用基于单一结构的发布队列(仅使用基于矩阵结构的发布队列或仅使用基于记分板-CAM结构的发布队列)或其它结构的发布队列相比,由于矩阵结构和记分板-CAM机构的上述优点,使得能够在高时钟速率执行指令的情况下提高了发布队列的利用率。并且,记分板-CAM可以广播较少的目的标签,并且减少了比较逻辑。本公开有利于减小电力消耗并提高系统性能。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (12)

1.一种指令的分配方法,其特征在于,所述分配方法应用于处理器,该分配方法包括:
根据指令的属性,确定指令的类型;
将属于第一类型的指令发送到第一发布队列,并将属于第二类型的指令发送到第二发布队列,所述第一发布队列是基于矩阵结构的发布队列,所述第二发布队列是基于记分板-内容可寻址内存CAM结构的发布队列;以及
执行所述第一发布队列和所述第二发布队列中的指令。
2.根据权利要求1所述的分配方法,其特征在于,根据指令的属性,确定指令的类型,包括:
判断是否需要所述指令在预定周期中背靠背地唤醒另一指令;
在判断为需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第一类型;
在判断为不需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第二类型。
3.根据权利要求2所述的分配方法,其特征在于,判断是否需要所述指令在预定周期中背靠背地唤醒另一指令,包括:
判断该另一指令的源操作数是否依赖于所述指令的目的操作数;
在判断为需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第一类型,包括:
在判断为该另一指令的源操作数依赖于所述指令的目的操作数的情况下,确定为所述指令属于所述第一类型。
4.根据权利要求3所述的分配方法,其特征在于,所述预定周期是指从所述指令被发布起直到其被执行结束的执行延迟。
5.根据权利要求1所述的分配方法,其特征在于,根据指令的属性,确定指令的类型,包括:
判断所述指令的执行延迟是固定的还是可变的;
在判断为所述指令的执行延迟是固定的情况下,确定为所述指令属于所述第一类型;
在判断为所述指令的执行延迟是可变的情况下,确定为所述指令属于所述第二类型。
6.根据权利要求5所述的分配方法,其特征在于,判断所述指令的执行延迟是固定的还是可变的,包括:
根据所述指令的单位或操作码字段来判断所述指令的执行延迟是固定的还是可变的。
7.根据权利要求1所述的分配方法,其特征在于,根据指令的属性,确定指令的类型,包括:
判断所述指令是否是重要的指令;
在判断为所述指令是重要的指令的情况下,确定为所述指令属于所述第一类型;
在判断为所述指令不是重要的指令的情况下,确定为所述指令属于所述第二类型。
8.根据权利要求7所述的分配方法,其特征在于,所述重要的指令包括处理器中存储的较早的指令、指令序列中的X86分支指令和被指定为具有重要性属性的指令。
9.一种处理器,其特征在于,包括:
多个发布队列,包括第一发布队列和第二发布队列,所述第一发布队列是基于矩阵结构的发布队列,所述第二发布队列是基于记分板-内容可寻址内存CAM结构的发布队列;
队列分配模块,被配置为根据指令的属性,确定指令的类型,将属于第一类型的指令发送到所述第一发布队列,并将属于第二类型的指令发送到所述第二发布队列;以及
多个执行单元,
其中,所述第一发布队列和所述第二发布队列将各自的指令发布到所述多个执行单元中的相应的执行单元以供执行。
10.根据权利要求9所述的处理器,其特征在于,所述队列分配模块包括:
第一子模块,被配置为判断是否需要所述指令在预定周期中背靠背地唤醒另一指令;在判断为需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第一类型;在判断为不需要所述指令在预定周期中背靠背地唤醒另一指令的情况下,确定为所述指令属于所述第二类型。
11.根据权利要求9所述的处理器,其特征在于,所述队列分配模块包括:
第二子模块,被配置为判断所述指令的执行延迟是固定的还是可变的;在判断为所述指令的执行延迟是固定的情况下,确定为所述指令属于所述第一类型;在判断为所述指令的执行延迟是可变的情况下,确定为所述指令属于所述第二类型。
12.根据权利要求9所述的处理器,其特征在于,所述队列分配模块包括:
第三子模块,被配置为判断所述指令是否是重要的指令;在判断为所述指令是重要的指令的情况下,确定为所述指令属于所述第一类型;在判断为所述指令不是重要的指令的情况下,确定为所述指令属于所述第二类型。
CN202010898333.6A 2020-08-31 2020-08-31 指令的分配方法和处理器 Pending CN112015480A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010898333.6A CN112015480A (zh) 2020-08-31 2020-08-31 指令的分配方法和处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010898333.6A CN112015480A (zh) 2020-08-31 2020-08-31 指令的分配方法和处理器

Publications (1)

Publication Number Publication Date
CN112015480A true CN112015480A (zh) 2020-12-01

Family

ID=73504001

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010898333.6A Pending CN112015480A (zh) 2020-08-31 2020-08-31 指令的分配方法和处理器

Country Status (1)

Country Link
CN (1) CN112015480A (zh)

Similar Documents

Publication Publication Date Title
US8776066B2 (en) Managing task execution on accelerators
TWI497412B (zh) 用於使用相依矩陣追蹤解除配置之載入指令之方法、處理器及裝置
US8180997B2 (en) Dynamically composing processor cores to form logical processors
US8423799B2 (en) Managing accelerators of a computing environment
US8479173B2 (en) Efficient and self-balancing verification of multi-threaded microprocessors
US10437638B2 (en) Method and apparatus for dynamically balancing task processing while maintaining task order
US11360809B2 (en) Multithreaded processor core with hardware-assisted task scheduling
US9626220B2 (en) Computer system using partially functional processor core
EP2270652B1 (en) Priority circuit for dispatching instructions in a superscalar processor having a shared reservation station and processing method
EP4034994B1 (en) Retire queue compression
US10853077B2 (en) Handling Instruction Data and Shared resources in a Processor Having an Architecture Including a Pre-Execution Pipeline and a Resource and a Resource Tracker Circuit Based on Credit Availability
US9703614B2 (en) Managing a free list of resources to decrease control complexity and reduce power consumption
CN113051049A (zh) 任务调度系统、方法、电子设备及可读存储介质
US9959122B2 (en) Single cycle instruction pipeline scheduling
CN112015480A (zh) 指令的分配方法和处理器
US20190190536A1 (en) Setting values of portions of registers based on bit values
US9170819B2 (en) Forwarding condition information from first processing circuitry to second processing circuitry
JP7032647B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20040128484A1 (en) Method and apparatus for transparent delayed write-back
US11829762B2 (en) Time-resource matrix for a microprocessor with time counter for statically dispatching instructions
US11829187B2 (en) Microprocessor with time counter for statically dispatching instructions
US20230273796A1 (en) Microprocessor with time counter for statically dispatching instructions with phantom registers
US20230350680A1 (en) Microprocessor with baseline and extended register sets
US20230244495A1 (en) Conditional Instructions Distribution and Execution
US11221853B2 (en) Method of dispatching instruction data when a number of available resource credits meets a resource requirement

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203

Applicant after: Shanghai Zhaoxin Semiconductor Co.,Ltd.

Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203

Applicant before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.