CN116508010A - 在发布时间的微处理器寄存器标签的分配 - Google Patents
在发布时间的微处理器寄存器标签的分配 Download PDFInfo
- Publication number
- CN116508010A CN116508010A CN202180073134.4A CN202180073134A CN116508010A CN 116508010 A CN116508010 A CN 116508010A CN 202180073134 A CN202180073134 A CN 202180073134A CN 116508010 A CN116508010 A CN 116508010A
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- register
- issue
- tag
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 49
- 230000004044 response Effects 0.000 claims abstract description 14
- 238000004590 computer program Methods 0.000 claims description 13
- 239000000872 buffer Substances 0.000 claims description 6
- 230000001419 dependent effect Effects 0.000 claims 6
- 238000010586 diagram Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 230000008901 benefit Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 239000013598 vector Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 102100033047 G-protein coupled receptor 3 Human genes 0.000 description 3
- 101000871088 Homo sapiens G-protein coupled receptor 3 Proteins 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 2
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 2
- 101001044053 Mus musculus Lithostathine-1 Proteins 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- QGVYYLZOAMMKAH-UHFFFAOYSA-N pegnivacogin Chemical compound COCCOC(=O)NCCCCC(NC(=O)OCCOC)C(=O)NCCCCCCOP(=O)(O)O QGVYYLZOAMMKAH-UHFFFAOYSA-N 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 101100310513 Botryococcus braunii SMT-2 gene Proteins 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
- Communication Control (AREA)
Abstract
提供了一种用于在发布时间将寄存器标签分配给指令的方法。该方法包括接收由微处理器执行的指令。该方法还包括将指令分派到发布队列,而不将寄存器标签分配给指令。该方法还包括确定该指令准备好发布。响应于确定该指令准备好发布,该方法包括将可用的寄存器标签分配给该指令。该方法还包括发布指令。
Description
背景技术
本公开一般涉及计算领域,尤其涉及在发布时间将寄存器标签分配给由微处理器执行的指令。
微处理器是在一个或多个集成电路(IC)上结合了中央处理单元的功能的计算机处理器。处理器基于时钟周期执行指令(例如,存储指令)。时钟周期,或简称为“周期”,是处理器的单个电子脉冲。
发明内容
本公开的实施例包括用于在发布时间向指令分配寄存器标签的方法、计算机程序产品和系统。
根据一个方面,该方法包括接收由微处理器执行的指令。该方法还包括将指令分派到发布队列,而不将寄存器标签分配给指令。该方法还包括确定该指令准备好发布。响应于确定该指令准备好发布,该方法包括将可用的寄存器标签分配给该指令。该方法还包括发布指令。
根据另一方面,提供了一种包括处理器的系统,所述处理器被配置为执行一种方法,所述方法包括:接收由微处理器执行的指令;将所述指令分派到发布队列,而不向所述指令分配寄存器标签;确定所述指令准备好发布;响应于确定所述指令准备好发布,将可用寄存器标签分配给所述指令;发布指令。
根据另一方面,提供了一种计算机程序产品,包括一个或多个计算机可读存储介质,所述计算机可读存储介质具有随其体现的程序指令,所述程序指令可由处理器执行以执行一种方法,所述方法包括:接收由所述处理器执行的指令;将所述指令分派到发布队列,而不向所述指令分配寄存器标签;确定所述指令准备好发布;响应于确定所述指令准备好发布,将可用寄存器标签分配给所述指令;以及发布指令。
以上发明内容并非旨在描述本公开的每个所示实施例或每种实施方式。
附图说明
本公开中包括的附图并入说明书中并形成说明书的一部分。它们示出了本公开的实施例,并且与说明书一起用于解释本公开的原理。附图仅是典型实施例的说明,而不限制本公开。
图1示出了可以实现本公开的说明性实施例的处理器核心的框图。
图2示出了根据本公开的实施例的示例处理器微架构的各种组件的高级框图。
图3示出了根据本公开的实施例的被配置为在发布时间分配寄存器标签的处理器的示例微架构的框图。
图4示出了根据本公开的实施例的用于在发布时间将寄存器标签分配给指令的示例方法的流程图。
图5示出了根据本公开的实施例的可以用于实现本文描述的方法、工具和模块中的一个或多个以及任何相关功能的示例计算机系统的高级框图。
虽然本文所述的实施例可具有各种修改和替代形式,但其细节已在附图中以实例的方式示出并将详细描述。然而,应当理解,所描述的特定实施例不应被理解为限制性的。相反,本发明覆盖落入本发明的精神和范围内的所有修改、等效和替换。
具体实施方式
本公开一般涉及计算领域,尤其涉及在发布时间将寄存器标签分配给由微处理器执行的指令。虽然本公开不一定限于此类应用,但是通过使用此上下文的各种示例的讨论可以理解本公开的各个方面。
微处理器架构利用多种寄存器来存储数据以供指令执行/操纵。为了追踪哪些寄存器(或寄存器内的位置)存储特定指令的数据,微处理器利用寄存器文件(或一个以上寄存器文件)。寄存器文件保存由超切片中的硬件线程执行的各种指令所需的寄存器位置。在一些处理器中,寄存器文件可被分解成块。例如,在一些处理器中,寄存器文件被称为切片目标寄存器文件(STF),并且它由四个较小的STF块组成,所述四个较小的STF块一起工作以向核心提供大的寄存器文件。(POWER是国际商业机器公司所拥有的注册商标)。
为了确保多个指令不试图在相同位置存储不同的数据,微处理器将寄存器标签(例如STF标签)分配给指令。未使用的寄存器标签可以被保存在空闲列表(例如STF空闲列表)中。当在分派时接收到指令时,处理器检查可用寄存器。如果寄存器可用,则处理器将来自空闲列表的寄存器标签分配给指令,并且指令能够继续处理相关联的标签。一旦分配了寄存器标签,就将其从空闲列表中移除,并且不能将其在寄存器文件中的对应条目(以及因此寄存器位置)分配给新指令。寄存器标签和寄存器文件的使用允许处理器确保指令不冲突(例如,重写另一指令仍然需要的数据)。
在传统的处理器架构中,寄存器标签(以及相应地,寄存器文件中的条目)在流水线中相对早地被分配给指令,通常在指令分派期间,并且在任何情况下是在指令被发送到发布队列(ISQ)之前。结果,寄存器标签被分配给指令,因此在相对长的时间内不可用于其它指令。这可能导致高寄存器文件使用,并且一些指令可能必须等待不必要的长时间量以使寄存器标签变为空闲。
本公开的实施例通过在发布时间分配寄存器文件来解决传统微处理器架构的这些和其它问题。因此,这些实施例缩小了必须指派寄存器的窗口。这允许指令被分派到发布队列中并等待寄存器标签。
在一些实施例中,处理器中的分派逻辑可以将用于接收的指令的指令标签(ITAG)写入映射器。另外,旧的ITAG可以推送到保存和恢复缓冲器(SRB)。SRB跟踪给定寄存器的先前映射。例如,如果处理器五次写入特定通用寄存器(GPR),例如GPR3,则映射器仅具有最年轻的一个,而SRB将存储五个历史ITAG。SRB的目的是在处理器必须执行刷新(flush)的情况下备份处理器状态。分派逻辑还将指令分派到ISQ。在一些实施例中,在不将寄存器标签分配给指令的情况下执行这些操作。
指令没有寄存器标签地在ISQ中等待,直到它接近发布时间为止。在发布时间,处理器中的寄存器标签分配逻辑将空闲寄存器标签分配给指令。处理器还向ISQ和映射器广播指令的ITAG和寄存器标签。映射器使用接收的ITAG识别匹配的位置,并写入分配的寄存器标签。映射器还为指令设置就绪位(W,例如,通过设置W=1)。就绪位指示数据是否在寄存器中以及指令是否准备好执行。类似地,在ISQ处,识别匹配位置,在源位置处写入所分配的寄存器标签,且设置就绪位。寄存器标签也被写入SRB中的匹配位置,并且就绪位被设置在SRB中。然后执行该指令。
如果指令到达发布时间并且没有寄存器标签可用,则阻止该指令发布,直到寄存器标签可用。在一些实施例中,寄存器文件中的某个条目保持空闲,以防止下一条要完成(NTC)指令不具有可用的寄存器条目的情况。若该NTC指令不具有寄存器标签,则可将该保留条目分配给该NTC指令,以允许其发布。如果确实发生挂起(例如,没有寄存器标签通过发布指令而被释放),则执行刷新以清除和回收进行中的寄存器标签。在一些实施例中,可以通过仅清除一些寄存器标签而不是执行完全刷新,来执行小型挂起清除(mini-hangbuster)。
与现有架构相比,在发布时执行寄存器标签分配具有许多优点。例如,由于在分派期间不需要考虑寄存器文件可用性,所以可以降低分派的复杂性。另外,寄存器标签的较晚分配导致寄存器文件条目的更有效使用,因为处理器知道结果将通过发布指令而返回。此外,可以减少所需的寄存器文件条目的数量,并因此减少寄存器文件的物理大小,或者,如果寄存器文件的大小没有减小,则可以允许更深的推测。换句话说,本公开的实施例可使得具有相同寄存器文件大小的系统能够具有更深的无序窗口,或在解析所预测分支路径之前沿着所述路径向下行进得更深。空闲列表也可以在物理上放置得更靠近ISQ和/或矢量/标量单元(VSU),并且ITAG空闲列表不再需要关心寄存器文件空洞计数,这将帮助分派以完成整个流水线。最后,本公开的实施例可重新使用已设定ISQ中的有效位的逻辑。
现在将参考附图讨论本公开的实施例。应当理解,尽管本公开的实施例通常是参考处理器来讨论的,但是这是为了说明的目的。本公开可以由其他处理器架构来实现,并且本公开不限于POWER处理器。
如在此所使用的,“产生者”是所分派的指令所依赖的操作/指令。举例来说,如果第一操作写入GPR3且接着第二操作从GPR3读取,那么第一操作被视为第二操作的产生者。因此,产生者ITAG是产生者指令的ITAG。
如这里所使用的,“源STF标签”是标识指令正在读取什么物理寄存器以执行它们的操作的STF标签。在开始发布指令之前,源STF标签在ISQ 330内。“目的地STF标签”是与指令实际写入的寄存器相关联的STF标签。对于没有发布出并依赖于它的指令,目的地STF标签被反馈到ISQ 330、映射器320和SRB 340。例如,假设存在使用特定寄存器(REG1)的背靠背指令。第一指令写入REG1,并且第二指令从REG1读取,并且对从REG1读取的数据执行一些操作。第一指令的目的地STF标签被反馈到ISQ 330、映射器320和SRB 340中,使得第二指令可以识别从其读取数据的适当寄存器。换句话说,第一指令的目的地STF标签充当第二指令的源STF标签。
类似地,特定指令的“源ITAG”是该特定指令所依赖的指令的ITAG。换句话说,源ITAG是产生者的ITAG。同样,“目的地ITAG”是指令本身的ITAG。这样,第一指令的目的ITAG充当依赖于第一指令(例如,读取第一指令存储的数据)的任何指令的源ITAG。
现在转到附图,图1示出了根据本公开的实施例的处理器核心100的框图。在一些实施例中,处理器核心100可以是多核中央处理单元(CPU)的一部分。在其它实施例中,处理器核心100可为单核CPU的一部分。处理器核心100可支持同时多线程(SMT)。因此,每个处理器核心100能够执行多个硬件线程。例如,图1所示的处理器核心100支持SMT-4模式(例如,每个核心具有四个硬件线程)。
在核心内,硬件线程可被划分成超切片,超切片是共享一些硬件的切片的组。例如,SMT-4处理器可以包括被分成两个不同的超切片的四个硬件线程,其中每个超切片具有两个硬件线程独立于在不同超切片中发现的硬件线程而操作所必需的硬件和架构化资源。换句话说,每个超切片可以独立于其他超切片而操作。因此,每个超切片可以维护其自己的寄存器文件。
处理器核心100包括两个超切片100A、100B。第一超切片100A(也称为超切片0)可以包括内部硬件121A(也称为微架构资源)和两个硬件线程101A、111A。类似地,第二超切片100B(也称为超切片1)可以包括内部硬件121B和两个硬件线程101B、111B。内部硬件121A、121B(在此共同地或单独地称为内部硬件121)对于每个超切片可以是基本上类似的或相同的。类似地,每个超切片100A、100B中的第一硬件线程101A、101B(在此共同或单独地称为(一个或多个)第一硬件线程101)和第二硬件线程111A、111B(在此共同或单独地称为(一个或多个)第二硬件线程111)对于每个超切片可以是基本上相似或相同的。另外,虽然图1中未示出,但是处理器核心100可以包含在超切片100A、100B外部(即,共用)的一些部件。例如,处理器核心100可以包含馈送两个超切片100A、100B的指令提取单元(IFU)。
内部硬件121可以包括执行单元125。执行单元125可以包括一个或多个定点单元(FXU)125A、加载-存储单元(LSU)125B、向量/标量单元(VSU)125C、浮点单元(FPU)125D和十进制浮动单元(DFU)125E。在一些实施例中,处理器核心100可包含其它执行单元,例如密码单元、条件寄存器单元及/或分支寄存器单元等。
内部硬件121还可以包括例如一个或多个高速缓存122、发布队列123、缓冲器124和/或分支预测单元(未示出)。高速缓存122可以是多级分层高速缓存。例如,处理器中的每个核心(例如,处理器核心100)可具有其自己的L1高速缓存。L1高速缓存可以由处理器核心内的所有硬件线程(例如,第一硬件线程101和第二硬件线程111)共享。核心还可以访问L2和L3高速缓存,其可以与其他处理器核心和/或在相同核心内的超切片之间共享。
内部硬件121还包括映射器130,其负责管理硬件线程101、111的STF标签。
硬件线程101和111可以各自分别具有它们自己的一组架构化资源102和112。架构化资源102和112可以包括专用于特定硬件线程的一个或多个寄存器。例如,架构化资源102和112可以包括一组或多组通用寄存器(GPR)103和113、浮点寄存器(FPR)104和114以及专用寄存器(SPR)105和115。在一些实施例中,FPR 104和114可支持存储浮点向量。在这些实施例中,FPR 104和114可以是向量/标量寄存器(VSR)。
因为该处理器核心100支持具有四个硬件线程的SMT,所以其可被称为支持SMT-4或为SMT-4处理器核心。虽然图1中所示的处理器核心100是SMT-4处理器核心,但是可以预期以其它方式与本公开一致的其他类型的处理器核心。例如,在一些实施例中,SMT-2(每个核心两个硬件线程)或SMT-8(每个核心八个硬件线程)处理器可用于实现本文公开的一个或多个方法。
现在参照图2,其显示依照本公开的实施例的范例微处理器200的各种组件的高阶方块图。微处理器200包括指令提取单元(IFU)202、指令定序单元(ISU)204、加载-存储单元(LSU)
208、向量/标量单元(VSU)206以及完成和异常处理逻辑210。
IFU 202是负责组织程序指令的处理单元,所述程序指令将以适当的顺序从存储器中取出并执行。IFU 202通常被认为是中央处理单元(CPU)的控制单元(例如,负责指导处理器的操作的单元)的一部分。
ISU 204是计算单元,负责将指令分派到发布队列、重命名寄存器以支持无序执行、将指令从发布队列发布到执行流水线、完成执行指令以及处理异常。ISU 204包括一旦解决了依赖性就发布所有指令的发布队列。ISU 204还可以包括用于在发布时间将STF标签分配给发布队列中的指令的逻辑。
VSU 206是维护切片目标文件(STF)的所有权的计算单元。STF保存以指令为来源的所有寄存器数据。以不具有目标的存储指令为例,STF保存存储地址操作数和发送到LSU208以供执行的存储数据所需的寄存器。VSU 206包括FXU(例如FXU 125A)、VSU(例如VSU125C)、FPU(例如FPU 125D)和DFU(例如DFU 125E)。
LSU 208是执行单元,其负责执行所有加载和存储指令、使用统一高速缓存管理处理器的核心与系统的其余部分的接口、以及执行地址转换。例如,LSU 208生成加载和存储操作的虚拟地址,并且其从存储器加载数据(对于加载操作),或者从寄存器向存储器存储数据(对于存储操作)。LSU 208可以包括存储器指令的队列,并且LSU 208可以独立于其他单元操作。
完成和异常处理逻辑210(下文中称为“完成逻辑”210)负责完成指令。如果指令引起异常,则完成逻辑210刷新指令并向IFU发信号以重新取出指令。
应当理解,图2中所示的组件202-210是出于说明性目的而提供的,并且用于解释本公开的实施例的原理。一些处理器架构可以包括更多、更少或不同的组件,并且在一些实施例中,组件202-210的各种功能可以由不同的组件来执行。例如,异常和完成处理可以由ISU 204执行。
此外,处理器可以包括组件202-210中的多于一个组件。例如,多核处理器可以包括每个核心一个或多个指令提取单元(IFU)202。此外,尽管本公开的实施例一般是参考处理器来讨论的,但这是为了说明的目的。本公开可以由其他处理器架构来实现,本公开不限于POWER处理器。
现在参考图3,示出了根据本公开的实施例的被配置为在发布时间将STF标签分配给指令的示例微处理器300的框图。微处理器300包括分派310、映射器320、发布队列(ISQ)330、保存和恢复缓冲器(SRB)340、STF标签指派逻辑350、执行逻辑360和比较逻辑370、380。虽然图3中的各种组件被示为独立组件,但是应当理解,各种组件实际上可以是较大组件的子组件。例如,分派310和映射器320可以是ISU 204的一部分。
在当前设计中,STF标签在分派时间被分配,这可能对分派310的STF空洞计数定时施加显著压力。这还需要更深的STF标签池,因为STF标签在流水线中被较早分配,并且因此可能在长得多的时间内保持使用。
然而,在本公开的实施例中,STF标签在发布时间被分配。这减少了STF标签必须存在于流水线中的时间。这种设计导致与分派的STF标签空洞计数有关的定时压力的减少,并且还可以导致更小的STF寄存器文件(RF)设计,因为执行流水线所需的STF标签的数量也减少了。
分派310包括用于分派指令(例如,FXU/VSU)的两个分派通道310A和310B。分派310将指令分派到ISQ 330。分派310还将逻辑寄存器发送到映射器320以映射到STF标签。由指令写入的逻辑寄存器及其ITAG在分派时间被写入映射器320。另外,逻辑寄存器(例如GPR)的先前写入器被移动到SRB 340。这包括移动旧的ITAG及其W(写入)位和其STF标签(如果已经写入)。当指令被分派时,写新的ITAG,并把旧的ITAG推送到SRB,目的地STF标签还没有指派给指令。
分派310读取映射器320,以便识别产生者ITAG和源STF标签。如果就绪位(W)被设置(例如,=1),那么所述产生者已经执行,且已经指派所述产生者的源STF标签。在这种情况下,从映射器320读出产生者的源STF标签,然后将其写入ISQ 330作为指令的源STF标签。如果就绪位(W)未被设置(例如,=0),则所述产生者尚未执行,并且所述源STF标签处的数据未准备好供当前指令使用(例如,因为所述产生者指令尚未完成执行)。在这种情况下,源STF标签在ISQ 330中无效。因此,指令将在ISQ 330中等待直到其产生者被执行并且用于它的STF标签被指派。应当理解,这是出于说明目的简化示例,并且通常存在多于一个源寄存器,并且每个源寄存器可以具有不同的产生者指令。
分派310照常将指令写入ISQ 330。在发布时间,如果STF标签可用,则将指令发送到执行逻辑360以便执行。另外,STF标签指派逻辑350将STF标签指派给指令。STF标签指派逻辑350可以包含STF空闲列表,其使用该STF空闲列表来确定STF标签是否可用以及什么STF标签可用。然后,执行逻辑360发布指令。
在执行该指令之后,在执行写回时,将产生者ITAG和指派的STF标签(即,用于发布指令的目的地STF标签)广播到映射器320、ISQ 330和SRB 340。映射器320和SRB 340必须包含所指派的STF标签,以便相关指令可以获得有效的源STF以进行分派。在接收到产生者ITAG和指派的STF标签之后,在映射器320、ISQ 330和SRB 340执行以下动作:
在映射器320,将GPR/VSR产生者ITAG与映射器320中的ITAG进行比较。这是使用比较逻辑(例如,比较逻辑370或比较逻辑380)来完成的。在匹配的位置(即,产生者ITAG与映射器320中的指令的ITAG匹配的位置),将STF标签写入映射器320条目,并设置就绪位(例如,设置W=1),以表示该指令所需的数据存储在寄存器中。
在ISQ 330,GPR/VSR产生者ITAG与ISQ 330中的源ITAG进行比较。这是使用比较逻辑370来完成的。在匹配的位置(即,产生者ITAG与ISQ 330中的指令的源ITAG匹配的位置),将STF标签写入源STF标签字段,并设置就绪位(例如,设置W=1)。
在SRB 340,将GPR/VSR产生者ITAG与SRB 340中的ITAG进行比较。这是使用比较逻辑380完成的。在匹配的位置(即,产生者ITAG与SRB 340中的指令的ITAG匹配的位置),STF标签被写入SRB 340,并且设置就绪位(例如,设置W=1)。
在发布时间,如果没有STF标签可用,则ISQ 330将停止指令的发布,并等待STF标签变为可用。如果由于缺少可用的STF标签而不能发布队列中最旧的指令,从而发布被挂起,则可以执行刷新以排出较年轻的(即,较新的)指令,以收回一些STF标签。当STF标签被收回并可供ISQ 330使用时,ISQ 330可以继续发布指令。
在一些实施例中,完成逻辑(例如,其可以是与STF标签指派逻辑350相同的逻辑)不执行NTC刷新,因为这将清除流水线中的所有指令,并可导致浪费的工作。对于这种类型的刷新(这里也称为小型挂起清除),完成逻辑将只需要从头指针-N(其中N是要排出的指令的数量)排出一些最年轻的指令,以清除足够的STF标签,以便ISQ 330继续进行发布指令。
在一些实施例中,当准备发布的指令不具有可用的STF标签时,可以发布刷新请求。刷新请求可导致刷新某一数量的较年轻指令。在一些实施例中,微处理器300可具有许多刷新模式。例如,微处理器300可被配置成在NTC指令在给定数目的周期内未接收到标签之后执行刷新。微处理器300可以附加地或替换地被配置成如果确定指令没有以预期速率执行(例如,指令正在从ISQ 330中移出,这可以指示缺少可用的STF标签),则执行刷新。在一些实施例中,微处理器300可以被配置为响应于在空闲列表中可用的STF标签的数量低于阈值而执行刷新。在一些实施例中,当确定是否执行刷新时,微处理器300可以考虑上述内容的组合(有或没有其他考虑)。可以基于满足哪种刷新标准和/或所识别的问题的程度来确定刷新的类型(例如,完全刷新对小型挂起清除)。
在刷新之后,数据可以从SRB 340被读取到映射器320,以恢复微处理器300的先前状态。
现在参考图4,示出了根据本公开的实施例的用于在发布时间分配STF标签的示例方法400的流程图。方法400可由硬件、固件、在处理器上执行的软件或其任何组合来执行。例如,方法400的一个或多个操作可以由处理器(例如,图3中所示的微处理器300)执行。方法400可开始于操作402,其中分派逻辑将特定指令写入ISQ。该特定指令可以在从指令提取单元接收之后被写入ISQ。
在操作404,处理器读取映射器,以便识别产生者ITAG及其目的地STF标签。产生者是产生特定指令所依赖的一个或多个源的较旧指令。例如,产生者可以将数据写入寄存器,并且所接收的指令然后可以读取该数据以便执行其操作。
在决策框406处,处理器确定是否设定用于特定指令的就绪位。如果就绪位没有被设置(判定框406处的否),则产生者还没有执行。这样,在操作408,特定指令等待产生者执行。特定指令在ISQ中等待。当产生者已经执行时,产生者目的地STF标签被写为特定指令的源STF标签。这在操作410示出。如果就绪位被设置(在判定框406处为是),则在操作412,将产生者STF标签写为特定指令的源STF标签。
在特定指令的发布时间,处理器确定是否有任何空闲STF标签可用。这在判决框414示出。处理器可以检查STF空闲列表以确定是否有任何STF标签可用。如果存在可用的STF标签(在判定块414为是),这意味着在STF中存在可用的条目,则将可用的STF标签之一指派给特定指令,并且执行该特定指令。这在操作416示出。
在操作416执行特定指令之后,处理器在操作418执行写回操作。这样做是为了使依赖于特定指令的任何指令接收它们的源STF标签,以便它们也能够执行。写回操作可以包括,将特定指令的目的地ITAG与存储在ISQ、映射器和SRB中的源ITAG进行比较。对于在ISQ、映射器和SRB中识别的每个匹配条目,将特定指令的目的地STF标签写为源STF标签,并且设置就绪位。在操作418执行写回之后,方法400可结束。
如果在发布时间没有STF标签可用于特定指令(在判定块414为否),则处理器在判定块420确定是否满足刷新标准。刷新标准可以包括确定是否刷新映射器和ISQ的一个或多个标准。刷新标准还可确定要执行的刷新的类型。如果不满足刷新标准(判定框420处的否),则方法400返回到判定框414。如果满足刷新标准(判定框420处的是),则在操作422,处理器排出来自ISQ的至少一些指令。这释放了用于特定指令的STF标签,该特定指令现在可以被执行。
在一些实施例中,在操作422排出指令之后,可以使用SRB中存储的数据来恢复处理器的先前状态。这在操作424示出。在恢复处理器的状态之后,方法400可返回到决策框414。如果该刷新成功地释放了STF标签(现在在判定块414为是),则该方法然后可以通过操作416和418进行。然而,如果刷新未能释放STF标签(在判定框414处仍然为否),则方法400可再次前进通过判定框420以及操作422和424。
现在参考图5,示出了根据本公开的实施例的示例计算机系统501的高级框图,该计算机系统可以用于实现本文描述的方法、工具和模块中的一个或多个以及任何相关功能(例如,使用计算机的一个或多个处理器电路或计算机处理器)。在一些实施例中,计算机系统501的主要组件可以包括一个或多个CPU502、存储器子系统504、终端接口512、存储接口516、I/O(输入/输出)设备接口514和网络接口518,所有这些组件可以直接或间接地通信耦合,以便经由存储器总线503、I/O总线508和I/O总线接口单元510进行组件间通信。
计算机系统501可以包含一个或多个通用可编程中央处理单元(CPU)502A、502B、502C和502D,在此一般称为CPU 502。在一些实施例中,计算机系统501可以包含相对大的系统的典型的多个处理器;然而,在其它实施例中,计算机系统501可以替代地是单CPU系统。每个CPU 502可以执行存储在存储器子系统504中的指令,并且可以包括一级或多级板载高速缓存。
系统存储器504可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)522或高速缓冲存储器524。计算机系统501还可以包括其它可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统526可被提供用于从不可移动、非易失性磁介质(诸如“硬盘驱动器”)读取和向其写入。尽管未示出,可提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,或可提供用于从可移动、非易失性光盘读取或向其写入的光盘驱动器,诸如CD-ROM、DVD-ROM或其它光学介质。另外,存储器504可以包括闪存,例如,闪存棒驱动器或闪存驱动器。存储器设备可以通过一个或多个数据介质接口连接到存储器总线503。存储器504可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,这些程序模块被配置成用于执行不同实施例的功能。
一个或多个程序/实用程序528可以存储在存储器504中,每个程序/实用程序具有至少一组程序模块530。程序/实用程序528可以包括系统管理程序(也称为虚拟机监视器)、一个或多个操作系统、一个或多个应用程序、其他程序模块和程序数据。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。程序模块530一般执行各实施例的功能或方法。
尽管存储器总线503在图5中被示为在CPU502、存储器子系统504和I/O总线接口510之间提供直接通信路径的单个总线结构,但是在一些实施例中,存储器总线503可以包括多个不同的总线或通信路径,其可以以各种形式中的任何形式来布置,诸如分层、星形或网状配置中的点对点链路、多层总线、并行和冗余路径、或任何其他适当类型的配置。此外,虽然I/O总线接口510和I/O总线508被示为单个相应的单元,但是在一些实施例中,计算机系统501可以包含多个I/O总线接口单元510、多个I/O总线508或两者。此外,虽然示出了将I/O总线508与通向各种I/O设备的各种通信路径分开的多个I/O接口单元,但是在其他实施例中,一些或所有I/O设备可以直接连接到一个或多个系统I/O总线。
在一些实施例中,计算机系统501可以是多用户大型计算机系统、单用户系统、或者服务器计算机或具有很少或没有直接用户接口但从其它计算机系统(客户端)接收请求的类似设备。此外,在一些实施例中,计算机系统501可以被实现为台式计算机、便携式计算机、膝上型或笔记本计算机、平板计算机、袖珍计算机、电话、智能电话、网络交换机或路由器、或任何其他适当类型的电子设备。
注意,图5旨在描绘示例性计算机系统501的代表性主要组件。然而,在一些实施例中,各个组件可以具有比图5中所表示的更大或更小的复杂度,可以存在不同于图5中所示的那些组件或除其之外的组件,并且这些组件的数量、类型和配置可以变化。此外,根据实施例说明性地列出和描述模块,并且模块不意在指示特定模块的必要性或其他潜在模块(或应用于特定模块的功能/目的)的排他性。
本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和过程编程语言(例如“C”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以作为一个步骤来实现,同时、基本同时、以部分或全部时间重叠的方式执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
应当理解,上述优点是示例性优点,并且不应当被解释为限制。本公开的实施例可以包含所有、一些前述优点,或者不包含前述优点,同时保持在本公开的精神和范围内。
本文所使用的术语仅用于描述特定实施例的目的,且不希望限制各种实施例。如本文所用,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。在各种实施例的示例实施例的先前详细描述中,参考了附图(其中相同的标号表示相同的元件),附图形成了本发明的一部分,并且其中通过图示示出了其中可以实践各种实施例的特定示例实施例。这些实施例被足够详细地描述以使本领域技术人员能够实践这些实施例,但是可以使用其他实施例,并且可以在不偏离各种实施例的范围的情况下做出逻辑、机械、电气和其他改变。在之前的描述中,阐述了许多具体细节以提供对各种实施例的透彻理解。但是,没有这些具体细节也可以实现各种实施例。在其它实例中,为了不使实施例模糊,没有详细示出公知的电路、结构和技术。
如本文所用,当用于物品时,“多个”是指一个或多个物品。例如,“多个不同类型的网络”是一个或多个不同类型的网络。
当不同的参考数字包括共同的数字,其后跟随不同的字母(例如100a、100b、100c)或标点符号,其后跟随不同的数字(例如100-1、100-2或100.1、100.2)时,仅在没有字母或后面的数字的情况下使用参考字符(例如100)可以指作为整体的元件组、该组的任何子集、或该组的示例样本。
此外,当与列出的项目一起使用时,短语“至少一个”意味着可以使用所列项目中的一个或多个的不同组合,并且可能仅需要列表中的每个项目中的一个。换句话说,“至少一个”是指项目的任意组合,并且可以使用来自列表的项目的数量,但是不是列表中的所有项目都是必需的。项目可以是特定对象、事物或类别。
例如,但不限于,“项目A、项目B或项目C中的至少一个”可以包括项目A、项目A和项目B或项目B。该示例还可以包括项目A、项目B和项目C或项目B和项目C。当然,可以存在这些项目的任何组合。在一些说明性示例中,“至少一个”可以是例如但不限于项目A的两个;项目B之一;和项目C的十个;项目B的四个和项目C的七个;或其它合适的组合。
在前文中,参考了各种实施例。然而,应当理解,本公开不限于具体描述的实施例。相反,无论是否涉及不同的实施例,所描述的特征和元件的任何组合都被预期实现和实践本公开。在不背离所描述的实施例的范围和精神的情况下,许多修改、变更和变化对于本领域的普通技术人员来说是显而易见的。此外,尽管本公开的实施例可以实现优于其他可能的解决方案或优于现有技术的优点,但是给定实施例是否实现特定优点不是对本公开的限制。因此,所描述的方面、特征、实施例和优点仅仅是说明性的,并且不被认为是所附权利要求的元素或限制,除非在权利要求中明确地陈述。另外,下面的权利要求应被解释为覆盖了所有这些落入本发明的真实精神和范围内的改变和修改。
Claims (21)
1.一种方法,包括:
接收由微处理器执行的指令;
将所述指令分派到发布队列,而不向所述指令分配寄存器标签;
确定所述指令准备好发布;
响应于确定所述指令准备好发布,将可用寄存器标签分配给所述指令;以及
发布所述指令。
2.根据权利要求1所述的方法,其中所述指令依赖于产生者指令,并且其中确定所述指令准备好发布包括:
确定用于所述指令的就绪位被设置。
3.如权利要求2所述的方法,其中,所述指令的源寄存器标签标识包含所述指令需要执行的寄存器位置的寄存器文件中的条目。
4.根据权利要求2所述的方法,其中所述就绪位标识所述产生者指令是否已经执行。
5.根据权利要求1所述的方法,所述方法进一步包括:
在发布该指令之后,将该指令的ITAG与发布队列中其它指令的源ITAG进行比较;
基于所述比较来标识依赖于所述指令的第二指令;以及
将分配给所述指令的所述寄存器标签写入所述发布队列中的所述第二指令的条目的源寄存器标签字段、映射器中的所述第二指令的条目以及保存和恢复缓冲器中的所述第二指令的条目。
6.根据权利要求1所述的方法,所述方法进一步包括:
响应于确定寄存器标签不可用于下一要完成(NTC)指令,确定是否已满足刷新标准;
响应于已满足所述刷新标准,刷新来自所述发布队列的一个或多个指令,其中所述一个或多个指令是比所述NTC指令更新的指令,并且其中刷新所述一个或多个指令使得回收所述一个或多个指令的寄存器标签;
将回收的寄存器标签之一分配给NTC指令;以及
发布NTC指令。
7.根据权利要求1所述的方法,其中确定所述指令准备好发布包括:
确定所述指令所依赖的所有指令都已经发布。
8.一种包括处理器的系统,所述处理器被配置为执行包括以下步骤的方法:
接收由微处理器执行的指令;
将所述指令分派到发布队列,而不向所述指令分配寄存器标签;
确定所述指令准备好发布;
响应于确定所述指令准备好发布,将可用寄存器标签分配给所述指令;以及
发布所述指令。
9.根据权利要求8所述的系统,其中所述指令依赖于产生者指令,并且其中确定所述指令准备好发布包括:
确定用于所述指令的就绪位被设置。
10.如权利要求9所述的系统,其中所述指令的源寄存器标签标识包含所述指令需要执行的寄存器位置的寄存器文件中的条目。
11.根据权利要求9所述的系统,其中所述就绪位标识所述产生者指令是否已经执行。
12.根据权利要求8所述的系统,其中所述方法还包括:
在发布该指令之后,将该指令的ITAG与发布队列中其它指令的源ITAG进行比较;
基于所述比较来标识依赖于所述指令的第二指令;以及
将分配给所述指令的所述寄存器标签写入所述发布队列中的所述第二指令的条目的源寄存器标签字段、映射器中的所述第二指令的条目以及保存和恢复缓冲器中的所述第二指令的条目。
13.根据权利要求8所述的系统,其中所述方法还包括:
响应于确定寄存器标签不可用于下一要完成(NTC)指令,确定是否已满足刷新标准;
响应于已满足所述刷新标准,刷新来自所述发布队列的一个或多个指令,其中所述一个或多个指令是比所述NTC指令更新的指令,并且其中刷新所述一个或多个指令使得回收所述一个或多个指令的寄存器标签;
将回收的寄存器标签之一分配给NTC指令;以及
发布NTC指令。
14.根据权利要求8所述的系统,其中确定所述指令准备好发布包括:
确定所述指令是下一要完成的指令;以及
确定所述指令所依赖的所有指令都已经发布。
15.一种计算机程序产品,包括一个或多个计算机可读存储介质,所述计算机可读存储介质具有随其体现的程序指令,所述程序指令可由处理器执行以执行一种方法,所述方法包括:
接收由所述处理器执行的指令;
将所述指令分派到发布队列,而不向所述指令分配寄存器标签;
确定所述指令准备好发布;
响应于确定所述指令准备好发布,将可用寄存器标签分配给所述指令;以及
发布所述指令。
16.根据权利要求15所述的计算机程序产品,其中所述指令依赖于产生者指令,并且其中确定所述指令准备好发布包括:
确定用于所述指令的就绪位被设置。
17.如权利要求16所述的计算机程序产品,其中用于所述指令的源寄存器标签标识包含所述指令需要执行的寄存器位置的寄存器文件中的条目。
18.根据权利要求16所述的计算机程序产品,其中所述就绪位标识所述产生者指令是否已经执行。
19.根据权利要求15所述的计算机程序产品,其中所述方法进一步包括:
在发布该指令之后,将该指令的ITAG与发布队列中其它指令的源ITAG进行比较;
基于所述比较来标识依赖于所述指令的第二指令;以及
将分配给所述指令的所述寄存器标签写入所述发布队列中的所述第二指令的条目的源寄存器标签字段、映射器中的所述第二指令的条目以及保存和恢复缓冲器中的所述第二指令的条目。
20.根据权利要求15所述的计算机程序产品,其中所述方法进一步包括:
响应于确定寄存器标签不可用于下一要完成(NTC)指令,确定是否已满足刷新标准;
响应于已满足所述刷新标准,刷新来自所述发布队列的一个或多个指令,其中所述一个或多个指令是比所述NTC指令更新的指令,并且其中刷新所述一个或多个指令使得回收所述一个或多个指令的寄存器标签;
将回收的寄存器标签之一分配给NTC指令;以及
发布NTC指令。
21.一种计算机程序,包括程序代码装置,当所述程序在计算机上运行时,所述程序代码装置适于执行权利要求1至7中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/093,757 US11500642B2 (en) | 2020-11-10 | 2020-11-10 | Assignment of microprocessor register tags at issue time |
US17/093,757 | 2020-11-10 | ||
PCT/IB2021/060215 WO2022101744A1 (en) | 2020-11-10 | 2021-11-04 | Assignment of microprocessor register tags at issue time |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116508010A true CN116508010A (zh) | 2023-07-28 |
Family
ID=81453443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180073134.4A Pending CN116508010A (zh) | 2020-11-10 | 2021-11-04 | 在发布时间的微处理器寄存器标签的分配 |
Country Status (8)
Country | Link |
---|---|
US (2) | US11500642B2 (zh) |
JP (1) | JP2023549058A (zh) |
KR (1) | KR20230074256A (zh) |
CN (1) | CN116508010A (zh) |
AU (1) | AU2021378104A1 (zh) |
DE (1) | DE112021005908T5 (zh) |
GB (1) | GB2615709A (zh) |
WO (1) | WO2022101744A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11500642B2 (en) | 2020-11-10 | 2022-11-15 | International Busines Machines Corporation | Assignment of microprocessor register tags at issue time |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7765384B2 (en) | 2007-04-18 | 2010-07-27 | International Business Machines Corporation | Universal register rename mechanism for targets of different instruction types in a microprocessor |
US9207995B2 (en) | 2010-11-03 | 2015-12-08 | International Business Machines Corporation | Mechanism to speed-up multithreaded execution by register file write port reallocation |
US9286072B2 (en) | 2011-10-03 | 2016-03-15 | International Business Machines Corporation | Using register last use infomation to perform decode-time computer instruction optimization |
US9286068B2 (en) | 2012-10-31 | 2016-03-15 | International Business Machines Corporation | Efficient usage of a multi-level register file utilizing a register file bypass |
US10073699B2 (en) | 2015-10-14 | 2018-09-11 | International Business Machines Corporation | Processing instructions in parallel with waw hazards and via a distributed history buffer in a microprocessor having a multi-execution slice architecture |
US20200042322A1 (en) | 2018-08-03 | 2020-02-06 | Futurewei Technologies, Inc. | System and method for store instruction fusion in a microprocessor |
US10860328B2 (en) * | 2018-09-21 | 2020-12-08 | Qualcomm Incorporated | Providing late physical register allocation and early physical register release in out-of-order processor (OOP)-based devices implementing a checkpoint-based architecture |
US10949205B2 (en) | 2018-12-20 | 2021-03-16 | International Business Machines Corporation | Implementation of execution compression of instructions in slice target register file mapper |
CN111638911A (zh) * | 2019-03-01 | 2020-09-08 | 阿里巴巴集团控股有限公司 | 一种处理器、指令执行设备及方法 |
US11243775B2 (en) | 2019-03-26 | 2022-02-08 | Intel Corporation | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues |
US11500642B2 (en) | 2020-11-10 | 2022-11-15 | International Busines Machines Corporation | Assignment of microprocessor register tags at issue time |
-
2020
- 2020-11-10 US US17/093,757 patent/US11500642B2/en active Active
-
2021
- 2021-11-04 WO PCT/IB2021/060215 patent/WO2022101744A1/en active Application Filing
- 2021-11-04 AU AU2021378104A patent/AU2021378104A1/en active Pending
- 2021-11-04 GB GB2307349.7A patent/GB2615709A/en active Pending
- 2021-11-04 KR KR1020237014125A patent/KR20230074256A/ko active Search and Examination
- 2021-11-04 DE DE112021005908.4T patent/DE112021005908T5/de active Pending
- 2021-11-04 JP JP2023524922A patent/JP2023549058A/ja active Pending
- 2021-11-04 CN CN202180073134.4A patent/CN116508010A/zh active Pending
-
2022
- 2022-10-31 US US18/051,175 patent/US11995445B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11995445B2 (en) | 2024-05-28 |
US11500642B2 (en) | 2022-11-15 |
DE112021005908T5 (de) | 2023-08-31 |
US20230077629A1 (en) | 2023-03-16 |
AU2021378104A1 (en) | 2023-05-25 |
JP2023549058A (ja) | 2023-11-22 |
WO2022101744A1 (en) | 2022-05-19 |
GB2615709A (en) | 2023-08-16 |
GB202307349D0 (en) | 2023-06-28 |
KR20230074256A (ko) | 2023-05-26 |
US20220147359A1 (en) | 2022-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9489207B2 (en) | Processor and method for partially flushing a dispatched instruction group including a mispredicted branch | |
US7363467B2 (en) | Dependence-chain processing using trace descriptors having dependency descriptors | |
EP0682789B1 (en) | System and method for register renaming | |
US5996068A (en) | Method and apparatus for renaming registers corresponding to multiple thread identifications | |
US8099582B2 (en) | Tracking deallocated load instructions using a dependence matrix | |
EP0677188B1 (en) | System and method for assigning tags to instructions to control instruction execution | |
US7475225B2 (en) | Method and apparatus for microarchitecture partitioning of execution clusters | |
US20070043934A1 (en) | Early misprediction recovery through periodic checkpoints | |
US11188332B2 (en) | System and handling of register data in processors | |
US10007521B1 (en) | Banked physical register data flow architecture in out-of-order processors | |
US9652246B1 (en) | Banked physical register data flow architecture in out-of-order processors | |
JP2023504652A (ja) | マイクロプロセッサにおけるアキュムレータ・レジスタ結果のチェックポイント化 | |
US11995445B2 (en) | Assignment of microprocessor register tags at issue time | |
US6298435B1 (en) | Methods and apparatus for exploiting virtual buffers to increase instruction parallelism in a pipelined processor | |
US20220027162A1 (en) | Retire queue compression | |
US7562206B2 (en) | Multilevel scheme for dynamically and statically predicting instruction resource utilization to generate execution cluster partitions | |
CN109564510B (zh) | 用于在地址生成时间分配加载和存储队列的系统和方法 | |
US11321088B2 (en) | Tracking load and store instructions and addresses in an out-of-order processor | |
US11157276B2 (en) | Thread-based organization of slice target register file entry in a microprocessor to permit writing scalar or vector data to portions of a single register file entry | |
US20060095738A1 (en) | Back-end renaming in a continual flow processor pipeline | |
KR20080065733A (ko) | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 |
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 |