CN104657145B - 用于微处理器的重发停靠的系统和方法 - Google Patents

用于微处理器的重发停靠的系统和方法 Download PDF

Info

Publication number
CN104657145B
CN104657145B CN201510101450.4A CN201510101450A CN104657145B CN 104657145 B CN104657145 B CN 104657145B CN 201510101450 A CN201510101450 A CN 201510101450A CN 104657145 B CN104657145 B CN 104657145B
Authority
CN
China
Prior art keywords
full
signal
reissue commands
reservation station
pointer
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
CN201510101450.4A
Other languages
English (en)
Other versions
CN104657145A (zh
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 Semiconductor 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 CN201510101450.4A priority Critical patent/CN104657145B/zh
Priority to US14/659,372 priority patent/US9823933B2/en
Publication of CN104657145A publication Critical patent/CN104657145A/zh
Priority to EP15196249.5A priority patent/EP3067794B1/en
Application granted granted Critical
Publication of CN104657145B publication Critical patent/CN104657145B/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 or 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

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)
  • Communication Control (AREA)
  • Traffic Control Systems (AREA)

Abstract

一种用于微处理器的重发指令停靠系统,该微处理器包括:保留站模块,其分派指令用于执行;以及重排序缓冲器,其在重发状态期间向该保留站模块重发指令,其中该重发指令停靠系统包括至少一个第一流水线级和至少一个第二流水线级,其中第一流水线级在重发状态期间从重发数据路径向该保留站模块提供第一重发指令,并且一旦该保留站模块被判定为充满则停靠第一重发指令,而且其中第二流水线级选择指向该重排序缓冲器的指针,该重排序缓冲器提供相应的第一重发指令到该重发数据路径上,其中当第二充满信号被声明时将第二流水线级置于保持状态。

Description

用于微处理器的重发停靠的系统和方法
技术领域
本发明一般涉及在微处理器中重发指令,而且更具体地,涉及用于避免与再重发指令相关的低效率的重发停靠的系统和方法。
背景技术
许多现代微处理器是超标量的,其中它们包括多个执行单元,并且能够在单个时钟周期中向执行单元发射多个指令。许多现代微处理器还执行乱序执行。即,微处理器可以不按照由包括这些指令的程序指定的顺序执行指令。超标量乱序执行处理器通常试图维持相对大的未决指令池,以便它们可以受益于大量的指令并行。
微处理器执行诸如x86指令集架构等指令集架构的指令。在许多这样的微处理器中,指令集构架的指令(常常被称为宏指令)首先被翻译为微指令(或者微操作或“μop”),后者被发射到保留站模块,其将指令分派到执行单元。这里将微指令更一般地简单称为指令。指令也被发射到重排序缓冲器,其确保指令的按序引退。
保留站模块包括一个或多个队列,并且如果任何队列充满,则保留站模块无法接收发射的任何指令。在重发(re-issue)配置中,微处理器恢复到重发模式,在重发模式下必须从重排序缓冲器(Reorder Buffer,ROB)重发被拒绝的指令。如果保留站模块仍然充满,则必须再次重发指令。在再重发(re-reissue)过程中,指令在重发流水线路径中反复循环直到保留站模块不充满为止,此时可以最后将指令提交到保留站模块以便最终分派用于执行。
再重发过程由于多种原因而不利。判断保留站模块是否充满是在流水线的某个级(stage)处进行的,如果充满,则重发的指令在被再次再重发到保留站模块之前必须穿越多个级。以这种方式,再重发过程引起延迟并降低微处理器的性能。
发明内容
这里描述一种用于微处理器的重发指令停靠系统,其中该微处理器包括:保留站模块,其分派指令用于执行;以及重排序缓冲器,其在重发状态期间向该保留站模块重发指令。该重发指令停靠系统包括至少一个第一流水线级和至少一个第二流水线级。该至少一个第一流水线级在重发状态期间从重发数据路径向该保留站模块提供第一重发指令,并且当第一充满信号被声明时停靠第一重发指令,其中一旦该保留站模块在重发状态期间被判定为充满则声明第一充满信号。该至少一个第二流水线级向该重排序缓冲器提供由该重排缓冲器选择的指针,其中该重排序缓冲器提供与选择的指针对应的第一重发指令到该重发数据路径上,其中当第二充满信号被声明时将该至少一个第二流水线级置于保持状态。
根据实施例的一种微处理器包括:至少一个执行单元;保留站模块,其分派指令用于由该至少一个执行单元执行;重排序缓冲器,其在重发状态期间向该保留站模块重发指令;以及这里所述的重发指令停靠系统。
这里描述一种用于包括保留站模块和重排序缓冲器的微处理器的停靠重发指令的方法。该保留站模块分派指令用于执行,并且该重排序缓冲器在重发状态期间向该保留站模块重发指令。该方法可以包括:从该重排序缓冲器向该保留站模块提供第一重发指令;检测该保留站模块的充满条件并提供第一充满信号;寄存第一充满信号并提供第二充满信号;以及当第一充满信号被声明时停靠第一重发指令。而且在第二充满信号被声明期间,该方法可以包括保持与向该保留站模块提供第一重发指令的重排序缓冲器相关联的流水线的状态。
本发明所揭露的用于微处理器的重发停靠的系统和方法避免了再重发过程的低效率,不会有经由流水线从重排序缓冲器向保留站模块再重发指令的延迟,取而代之的是,在保留站模块之前停靠指令,并且持续地进行充满判定,直到保留站模块不再充满为止。将与重排序缓冲器相关联的流水线级置于保持状态。当不充满时,被停靠的指令可以立即进入而没有任何延迟,并且流水线在一个或两个时钟周期内有效地重启。
附图说明
通过结合附图的以下描述,本发明的益处、特征、和优点将变得更好理解,其中:
图1是根据本发明的一个实施例实现的超标量的、流水线的微处理器的简化框图;
图2是根据重发配置的图1的保留站模块与ROB之间的流水线的简化示意图和框图;
图3是示出用于重发和再重发过程的图2的流水线的操作的流程图;
图4是根据本发明的一个实施例的图1的保留站模块与ROB之间的流水线的简化示意图和框图;以及
图5-9是示出根据本发明的一个实施例的重发停靠过程的在连续的时钟周期中处于不同状态的流水线的图。
附图符号说明
102 指令缓存
104 指令翻译器
106 寄存器别名表(RAT)
108 保留站(RS)
110 重排序缓冲器(ROB)
114 整型
116 浮点
118 存储器排序缓冲器(MOB)
200、400 流水线
202 主MUX
204 重发数据路径
206、207 数据路径
208 主寄存器
209 主数据路径
210RAT 充满
212、216、220 寄存器
214REISSUE 充满
218 充满MUX
222 指针选择MUX
224 指针寄存器
226 重发寄存器
228、230、232、234 再重发寄存器
402 门控重发MUX
403 第二重发数据路径
404 门控寄存器
405 门控数据路径
406 充满寄存器
407 反馈数据路径
408 保持寄存器
410 保持MUX
具体实施方式
发明人已经认识到与从重排序缓冲器向保留站模块再重发指令相关联的低效率。因而他们开发了避免指令不得不穿越多级流水线的各个级的用于重发停靠(re-issueparking)的系统和方法。替代地,当保留站模块充满时,已经被重发的一个或多个指令被有效地停靠(parking)在保留站模块的入口,直到保留站模块有空间接收指令为止。
图1是根据本发明的一个实施例实现的超标量的、流水线的微处理器的简化框图。微处理器100包括指令缓存102,其缓存诸如x86指令集架构等指令集构架的宏指令130。可以预期额外的或替换的指令集架构。微处理器100包括指令翻译器104,其接收宏指令130并将其翻译为微指令132。微指令132接着被提供到寄存器别名表(RAT)106,其产生微指令依赖项,并按程序顺序将微指令132发射到保留站模块108和重排序缓冲器(ROB)110。保留站模块108分派微指令到多个执行单元112中适当的一个。执行单元112可以包括:整型执行单元114,诸如整型算术/逻辑单元(ALU);浮点执行单元116,包括诸如MMX和SSE单元等单指令多数据(SIMD)执行单元;以及存储器排序缓冲器(MOB)118。执行单元112提供它们的结果到ROB110,其确保指令的按序引退。
从RAT 106发射的微指令(ISSUE INST)可以典型地称为微指令,但是这里更一般地简单称为“指令”。所示的实施例中,RAT 106一次(例如,每时钟周期)发射最多3个指令。虽然执行单元112被示出为仅包括一个整型执行单元114和一个浮点执行单元116,但是本领域技术人员可以理解,可以包括任何数目的整型执行单元和浮点执行单元。MOB 118通常处理存储器型指令,诸如加载和存储指令执行流水线(未示出)等。在一个实施例中,以分布的方式将保留站模块108配置为包括多个RS队列(未示出),其中每个队列分派一个或多个指令给相应的执行单元112。
在所示的配置中,当保留站模块108内的任何一个(或多个)RS队列充满时,则保留站模块108被认为充满并且无法接收额外的指令。ROB 110为从RAT 106发射的每个指令存储一表项(entry)。初始未能进入保留站模块108的已发射指令在稍后不再充满时由ROB110重发射(示出为REISSUEINST)到保留站模块108。如这里进一步描述的,ROB 110为未进入保留站模块108并且从ROB 110重发的ROB 110中的每个指令(或指令集合)产生并使用一重发指针。
图2是根据重发配置的保留站模块108与ROB 110之间的流水线200的简化示意图和框图。流水线200包括5个连续的级,图示出为级A、B、C、D和E,由寄存器分隔开。每个寄存器或寄存器集合用R表示,并且被实现为由共同的同步时钟信号(未示出)控制的一个或多个同步寄存器等。在一个实施例中,每个寄存器包括用于相应的信息的每个比特的锁存器(例如,SR锁存器)或触发器等,其中寄存器具有依赖于传送的比特数的不同的尺寸。如这里定义的,每个寄存器执行“寄存”的功能,其意味着通过在时钟边沿锁存一个或多个比特来从流水线的一个级向下一级同步地传送数据或信息。C和D级在左方示出而且是与保留站模块108相关的保留站(RS)层级部分,接着是E、A和B级,它们是与ROB 100相关联的ROB层级部分。C级将保留站层级和ROB层级桥接在一起。使用粗体线示出传送指令的数据路径以与关联控制信号的常规(非粗体)线相区分。重叠示出某些组件以指示相似类型数据的多个集合。例如,重叠示出数据路径中的寄存器和复用器以指示多指令的处理。在一个实施例中,例如,RAT 106可以通过数据路径集中处理一次发射多达3条指令。
在C级内,主复用器(MUX)202基于重发控制信号RI而在经由重发数据路径204的来自ROB 110的REISSUE(重发)指令和经由路径206的来自RAT 106(图2中未示出)的新指令之间选择。这里描述的每个MUX执行不同的数据信号或数据集合之间的选择功能,不难理解,也可以使用其他类型的选择逻辑。经由数据路径207将所选择的指令提供到主寄存器208的输入端,其输出端经由主数据路径209耦接到保留站模块108的相应输入端。主寄存器208是C和D级之间的同步接口的一部分。虽然图2中未示出,但是如之前所述,从RAT 106发射的指令也被提供到ROB 110的输入端,ROB 110为从RAT 106发射的每条指令存储一表项。
保留站模块108包括多个队列,并且如果任何一个或多个队列充满,则保留站模块108拒绝来自主寄存器208的指令。当来自RAT 106的指令被保留站模块108拒绝时,第一充满逻辑模块210声明充满信号RAF到寄存器212,并且当来自ROB 110的重发指令被保留站模块108拒绝时,第二充满逻辑模块214声明充满信号REF到寄存器216。寄存器212和216与主寄存器208对齐作为C和D级之间的同步接口的部分,并且其输出端将各自的充满信号提供到由重发控制信号RI控制的D级内的充满MUX 218的相应输入端。充满MUX 218输出控制信号FULL(充满)以提供到寄存器220的输入端,后者输出RI控制信号。应当注意,图2仅示出完整的充满电路的一组(包括充满逻辑模块210和214、寄存器212和216、以及充满MUX218)。在一个实施例中,保留站模块108包括多个RS队列,例如N个队列。于是可以有N组充满电路,每组包括相应的充满逻辑模块210和214、寄存器212和216、以及充满MUX 218。这N组充满电路输出来自N个充满MUX218的N个FULL信号到一个OR(或)逻辑(未示出)以产生RI控制信号。当保留站模块108充满(例如,N个RS队列的任何一个充满)时RI控制信号被声明为高电平,指示操作的重发模式。寄存器220是D和E级之间的同步接口的一部分。
在另一实施例中,可以将充满MUX 218移到C级而不是如图所示在D级中,其中充满MUX 218代之以接收RAF和REF控制信号。该情况下,可以省略提供用于C和D级之间的对齐的寄存器212和216之一,剩下的寄存器(例如,寄存器212)的输入端耦接到充满MUX 218的输出端,并且其输出端向寄存器220的输入端提供FULL信号。
在E级内提供指针选择MUX 222,并且由ROB 110通过控制信号RPLCTL控制。通常,ROB 110跟踪与每个指令(或指令组)相关联的指针或标签,并且在每个重发级中维持这些指针。于是,当RI被寄存器220声明时,ROB 110知晓导致FULL被(由MUX 218)声明的相应指令的指针,并且使用同一指针作为重发指针。指针选择MUX 222基于RPL CTL信号从反馈指针FP、重发指针RIP、重放(replay)指针RPLP、和再重发指针RERIP当中选择,并且输出选择的指针SP到E和A级之间的同步接口处的指针寄存器224的输入端。指针寄存器224同步地输出选择的指针SP到ROB 110,后者输出相应的REISSUE(重发)指令到B和C级之间的同步接口处的重发寄存器226。重发寄存器226通过重发数据路径204输出REISSUE指令到C级的主MUX202。
重放指针RPLP与之前由保留站模块108分派给执行单元112但由于多种原因的任何一种而未能完成的指令相关联。例如,保留站模块108可以乱序地分派指令,其中指令的一个或多个操作数在执行期间需要时可能未被提供。无法完成的指令可以被重放,这不同于被重发的指令。不进一步讨论重放操作。
指针寄存器224的输出端处的选择的指针SP还通过分别位于A/B级、B/C级、C/D级和D/E级之间的同步接口处的再重发寄存器228、230、232和234进行同步,以提供再重发指针RERIP到指针选择MUX 222。
图3是示出用于重发和再重发过程的流水线200的操作的流程图。在第一个块302,经由路径206来自RAT 106的指令试图在保留站模块108充满时进入保留站模块108。在下一个块304,被拒绝的指令开始重发状态,并且重发信号RI被声明。在下一个块306,由ROB 110产生重发指针并提供给指针选择MUX 222。在下一个块308,将重发指针提供给ROB 110,并且从ROB 110读出相应的重发指令。在下一个块310,经由寄存器226沿着重发数据路径204将重发的指令再次提供到主MUX 202,然后到主寄存器208,以便通过主数据路径209再次提供给保留站模块108。在下一个块312,对保留站模块108的每个队列再次进行充满判定。在下一个块314,查询保留站模块108是否仍然充满。如果是,则操作循环回到块306以再次产生重发指针,除了该情况下它是用于再重发过程的再重发指针。操作以该形式循环,连同相应的再重发的指令,直到保留站模块108在块314被判定为不再充满为止,该情况下,指令在块316进入保留站模块108用于分派到执行单元112。以这种方式,根据所述再重发过程,指令在重发数据路径204循环,直到保留站模块108不充满为止,此时指令可以最后进入保留站模块108以便最终被分派执行。
所述再重发过程由于各种原因而不利。判定保留站模块108是否充满是在D级发生,并且如果充满,则重发的指令在被再重发到保留站模块108之前必须再次穿越重发流水线的5个级。以这种方式,所述再重发过程会引起延迟,并且降低微处理器100的性能。
图4是根据本发明另一实施例的的重发停靠的保留站模块108与ROB110之间的流水线400的简化示意图和框图。流水线400包括与流水线200类似的特征,其中类似的组件采用相同的引用数字。流水线400也以类似的方式包括通过用于同步操作的寄存器分隔的5个连续的级A-E。以类似的形式包括和耦接主MUX 202、充满逻辑模块210和214、寄存器208、212和216、充满MUX 218、寄存器220、指针选择MUX 222、寄存器224和226、保留站模块108、以及ROB 110,以形成级A-E。然而,与再重发相关联的再重发寄存器228、230、232和234被移除。对于重发停靠,当在D级保留站模块108被判定为在重发状态期间充满(例如,当RI信号声明时流水线400进入该重发状态)时,MUX 218的输出端处的FULL1信号被声明。当FULL1信号被声明时,主数据路径209上的重发指令被停靠。在一个实施例中,通过FULL1信号将重发指令停靠在主寄存器208中,并且与充满逻辑模块214的计算相关联的数据被反馈到门控重发MUX 402(详情这里进一步讨论),用于充满逻辑模块214来判定与重发指令对应的RS队列是否充满,直到它不充满为止。在另一实施例中,重发指令的全部数据被停靠在门控重发MUX 402(细节这里会进一步讨论)、主MUX 202和主寄存器208的流水线级之间。
在一个实施例中,因为级E、A和B位于ROB 110的层级之下,而级C和D位于RS 108的层级之下,并且在布局上ROB 110模块与RS 108模块之间有一些距离,在级D被声明的FULL1信号可能不能在单个时钟周期内被发送到级E、A和B以将这些级置于保持状态。于是,在一个实施例中,在级D和E之间的同步接口处添加充满寄存器406以产生FULL1信号的一个锁存版本,之后改称为FULL2信号。FULL1信号和FULL2用于在两个时钟周期中控制重发停靠。并且,添加门控寄存器404以在FULL1信号声明时保持从ROB 110和寄存器226沿流水线下到级C的重发指令,因为A和B级尚未被FULL2信号停靠。在一些其他实施例中,如果制造工艺足够先进以将级E、A和B以及级C和D置于FULL1信号能够在单个时钟周期内游历的布局距离内,则可以去除充满寄存器406和门控寄存器404,即,仅仅FULL1信号足以用来在一个时钟周期内控制重发停靠。图4仅示出其中在级C中添加门控重发MUX 402和门控寄存器404、并且还在级D和E之间的同步接口处添加充满寄存器406的重发停靠的实施例。在不改动ROB110设计的实施例中,向A级添加保持寄存器408和保持MUX 410;在其他实施例中,也可以移除保持寄存器408和保持MUX 410。
寄存器208的输出端处的主数据路径209被反馈数据路径407延展,它被反馈到门控重发MUX 402的第一输入端。寄存器226的输出端处的重发数据路径204被反馈到门控重发MUX 402的另一输入端,并且到门控寄存器404的输入端而不是到主MUX 202。门控寄存器404的输出端处的门控数据路径405被提供到门控重发MUX 402的另一输入端,后者的输出端提供第二重发数据路径403到主MUX 202的重发输入端。来自RAT 106的数据路径206被提供到主MUX 202的另一输入端。充满MUX 218的输出端处的FULL信号是FULL1信号,它被提供到主寄存器208的使能输入端、充满寄存器406的输入端、门控重发MUX 402的控制输入端、以及门控寄存器404的控制输入端。充满寄存器406的输出端提供第二信号FULL2,它是FULL1信号的锁存版本,并且被提供到门控重发MUX 402、指针选择MUX222、寄存器224、408和226的控制输入端、以及保持MUX 410的控制输入端。
通常,在正常操作期间当信号FULL1、FULL2和RI被否定时,主MUX202选择数据路径206(来自RAT 106的输出端),并且当保留站模块108不充满时指令被载入保留站模块108。指针选择MUX 222和寄存器224的指针正常运作,并且保持MUX 410选择寄存器224的输出用于提供选择的指针SP给ROB 110。当保留站模块108内的至少一个RS队列变得充满以使得来自RAT 106的下一个或多个的指令将导致溢出时,则第一充满逻辑模块210声明充满信号RAF到寄存器212,接着在下一时钟周期中,RI被声明以进入重发状态,其中根据该被声明的RI信号,主MUX 202经由第二重发数据路径403仅接收来自ROB 110的重发指令。在重发状态期间,如果第二充满逻辑模块214声明充满信号REF到寄存器216,则FULL1再次被声明以停靠重发指令。在一个实施例中,将FULL1提供给主寄存器208以有效地将重发指令停靠在主寄存器208处,同时将FULL1声明到门控重发MUX402,以经由反馈路径407反馈所停靠的重发指令的数据中与充满逻辑模块214的充满计算相关联的的数据,以便不断确定与停靠的重发指令对应的RS队列是否充满,直到其不充满为止。
在另一实施例中,将FULL1仅声明到门控重发MUX 402(而不到主寄存器208,即,不将FULL1提供给主寄存器208),以将重发指令停靠在MUX402和202以及主寄存器208的流水线级之间,同时反馈停靠的重发指令的全部数据以不断确定与停靠的重发指令对应的RS队列是否充满,直到其不充满为止。此外,声明FULL1以开放门控寄存器404的写端口以接收来自重发寄存器226的输出端的另一组重发指令,因为ROB 110的级E、A和B尚未被置于保持状态。在下一个时钟周期中,FULL2被声明以将ROB 110的级E、A和B置于静态保持状态。当保留站模块108不充满时,初始FULL1被否定(同时FULL2保持声明),其中停靠的指令进入保留站模块108。MUX402切换以选择门控寄存器404的输出,以使得其中存储的指令被锁存到主寄存器208。在下一个时钟周期中,FULL2信号被否定以使得ROB 110的级E、A和B被释放用于正常重发,并且被否定的FULL2和被否定的FULL1使MUX 402切换以选择经由重发数据路径204来自寄存器226的重发指令。
以与上面针对图2标注类似的方式,图4中仅示出充满电路的一组(包括充满逻辑模块210和214、寄存器212和216、以及充满MUX 218)。如之前所述,保留站模块108可以包括N个RS队列,以使得有N组对应的充满电路。这些充满电路输出来自N个充满MUX 218的N个FULL信号到一个OR逻辑(未示出)以产生如上所述的FULL1信号,然后该OR逻辑输出FULL1信号到寄存器220的输入端,后者输出RI控制信号。也就是说,如果保留站模块108中的任何RS队列充满,则导致重发停靠,直到导致重发停靠的被停靠的重发指令成功重发到相应的RS队列为止。而且,以与图2描述类似的方式,在另一实施例中,每个充满MUX 218可以被置于级C中以接收RAF和REF控制信号,提供其输出给寄存器212和216之一(例如寄存器212,其中省略寄存器216),其输出端提供FULL1信号到寄存器220的输入端。
如图2描述的一样,指针寄存器224同步输出选择的指针SP到ROB 110,后者输出相应的REISSUE指令到位于B和C级之间的同步接口处的重发寄存器226。在重发停靠过程期间,当FULL2被否定时,保持寄存器408和保持MUX 410提供选择的指针SP到ROB 110,而当FULL2被声明时,保持寄存器408和保持MUX 410提供保持指针(其中该保持指针为旧的选择的指针SP的锁存版本)到ROB 110,以读取停靠在ROB 110中的旧重发指令(如同图6、7、8中所示的重发指令A/B/C)。
图5、6、7、8、9是示出根据本发明的一个实施例的重发停靠过程的在连续的时钟周期中处于不同状态的流水线400的图。每个图中,一组3个重发指令在流水线400中它们相应的位置处加粗显示。如图5所示,例如,流水线400分别在级D、A、B和C中处理指令组1/2/3、A/B/C、7/8/9、和4/5/6。每个图中还示出信号FULL1和FULL2以及指示流水线400的时间位置的时间值的时序图。注意到,在给定配置中,每个组通常包括最多3条指令,其中在任何给定的组中仅可以包括0、1或2个指令。
图5示出在重发停靠的初始时,FULL1第一次被声明的时间T1时的流水线400。该情况下,指令1/2/3被停靠在D级中(主寄存器208),其中保留站模块108充满使得指令1/2/3无法进入。指令4/5/6在级C(重发寄存器226),指令7/8/9在级B(从ROB 110读出),并且指令A/B/C(或至少与其相关联的指针)在A级。如上所述,当FULL1被声明时,门控重发MUX 402选择主路径407(经由主数据路径209从主寄存器208反馈),并且门控寄存器404的写端口被打开以接收重发寄存器226的输出。在一个实施例中,指令1/2/3被声明的FULL1停靠在主寄存器208中,并且指令1/2/3的数据中的与重发充满逻辑模块214的充满计算相关联的数据通过反馈数据路径407被反馈到门控重发MUX 402,然后被重发充满逻辑模块214用于判定重发指令1/2/3所对应的RS队列是否充满,直到其不充满为止。在另一实施例中,FULL1信号未被耦接到主寄存器208的使能输入端,指令1/2/3的全部数据被反馈至门控重发MUX 402,并且当FULL1被声明时指令1/2/3被停靠在门控重发MUX 402、MUX 202以及主寄存器208当中。
图6显示在重发停靠的下一个时钟周期中,FULL1和FULL2二者均被声明的时间T2时的流水线400。指令1/2/3被停靠在D级中(主寄存器208)。指令4/5/6被锁存到门控寄存器404中。指令7/8/9已经被锁存到重发寄存器226中,并且指令A/B/C正被从ROB 110读出。指令D/E/F进入A级。此时MUX 222、410以及寄存器224、408和226由于FULL2被声明而处于保持状态。流水线400已经进入重发停靠状态。
如这里使用的,当寄存器不将其输入端处的新数据或信息锁存到其输出端而是保持当前的锁存的数据时,它处于保持状态。替换地,选择逻辑(例如为一个对应的MUX等)选择反馈路径以使得其输出端处的数据被反馈到其输入端,使得寄存器在连续的时钟周期期间有效地“保持”同一数据,直到保持不再起作用。
图7显示在重发停靠的下一个时钟周期中,FULL1和FULL2二者仍被声明的时间T3时的流水线400。该情况下,流水线400保留在重发停靠状态以使得指令4/5/6、1/2/3、D/E/F、A/B/C和7/8/9保持稳定而不前进到下一级。只要保留站模块108充满,流水线400就在重发停靠状态中有效地保持停滞,示出直到对应于时钟周期“N”的时间TN。
图8显示在下一个时钟周期中,保留站模块108不再充满而且FULL1被撤销声明为低同时FULL2仍为高电平的时间TN+1时的流水线400。该情况下,指令1/2/3进入保留站模块108,并且门控重发MUX 402选择门控数据路径405,则指令4/5/6随时钟进入到主寄存器208中然后进入级D。由于FULL2仍被声明,级E、A和B级保持停滞以使得指令D/E/F、A/B/C和7/8/9分别留在级A、B和C。
图9示出在在下一个时钟周期中,保留站模块108不充满、重发停靠已经完成、并且FULL1和FULL2二者被撤销声明的时间TN+2时的流水线400。指令4/5/6已经进入保留站模块108,并且门控重发MUX 402选择第一重发数据路径204以使得指令7/8/9随时钟进入到主寄存器208中。指令A/B/C已经前进到级C(经由重发寄存器226),指令D/E/F正被从ROB 110读出,并且指令10/11/12随时钟进入到级A中。
重发停靠避免再重发过程的低效率。不会有经由流水线从ROB向保留站模块再重发指令的延迟,取而代之的是,在保留站模块之前停靠指令,并且持续地进行充满判定,直到保留站模块不再充满为止。将与重排序缓冲器ROB相关联的流水线级置于保持状态。当不充满时,被停靠的指令可以立即进入而没有任何延迟,并且流水线在一个或两个时钟周期内有效地重启。
已经给出前面的描述以使得本领域普通技术人员能够完成和使用在特定应用及其需求的背景下提供的本发明。虽然已经参照其特定优选版本相当详细地描述本发明,但是可以设想可能的其他版本和变体。优选实施例的各种变体对本领域技术人员将是显而易见的,并且这里定义的一般原理可以适用于其他实施例。例如,这里描述的电路可以以包括逻辑设备或电路等任何合适的方式实现。
本领域技术人员应当理解,他们可以轻易地使用所公开的构思和具体实施例作为设计或修改用于完成本发明的相同目的的其他结构的基础而不背离本发明的精神和范围。因而,本发明不打算限于这里示出和描述的特定实施例,而是根据符合这里公开的原理和新颖特征的最宽泛的范围。

Claims (14)

1.一种用于微处理器的重发指令停靠系统,其中该微处理器包括:保留站模块,其分派指令用于执行;以及重排序缓冲器,其在重发状态期间向该保留站模块重发指令,所述重发指令停靠系统包括:
至少一个第一流水线级,其在所述重发状态期间从重发数据路径向该保留站模块提供第一重发指令,并且当第一充满信号被声明时停靠所述第一重发指令,其中一旦该保留站模块在所述重发状态期间被判定为充满则声明所述第一充满信号;以及
至少一个第二流水线级,其向该重排序缓冲器提供由该重排序缓冲器选择的指针,其中该重排序缓冲器提供与所述选择的指针对应的所述第一重发指令到所述重发数据路径上,其中当第二充满信号被声明时将所述至少一个第二流水线级置于保持状态,
其中所述第二充满信号是所述第一充满信号的锁存版本。
2.如权利要求1所述的重发指令停靠系统,其中所述至少一个第一流水线级进一步包括:
重发停靠逻辑,其当所述第一充满信号被声明时停靠所述第一重发指令,当所述第一充满信号被否定以及当所述第二充满信号被声明时选择寄存自所述重发数据路径的门控第二重发指令,并且当所述第一和第二充满信号都被否定时从所述重发数据路径选择第三重发指令。
3.如权利要求2所述的重发指令停靠系统,其中所述重发停靠逻辑包括:
门控寄存器,其在所述第一充满信号声明时保持来自所述重发数据路径的第二重发指令,并且输出所述门控第二重发指令;以及
门控重发选择逻辑,其当所述第一充满信号被声明时选择所述第一重发指令,当所述第一充满信号被否定以及当所述第二充满信号被声明时选择所述门控第二重发指令,并且当所述第一和第二充满信号都被否定时从所述重发数据路径选择所述第三重发指令。
4.如权利要求3所述的重发指令停靠系统,其中所述重发停靠逻辑进一步包括:
主寄存器,其具有耦接到所述门控重发选择逻辑的输出端的输入端,并且具有向该保留站模块提供所述第一重发指令的输出端。
5.如权利要求1所述的重发指令停靠系统,其中所述至少一个第一流水线级进一步包括:
主寄存器,其当所述第一充满信号被否定时向该保留站模块提供所述第一重发指令,并且当所述第一充满信号被声明时保持来自所述重发数据路径的所述第一重发指令。
6.如权利要求1所述的重发指令停靠系统,其中所述至少一个第二流水线级包括:
指针保持寄存器逻辑,其具有耦接到由该重排序缓冲器选择的所述指针的输入端,并且产生保持指针,其中所述保持指针为所述选择的指针的锁存版本,其中所述指针保持寄存器逻辑当所述第二充满信号被否定时向该重排序缓冲器提供所述选择的指针,并且当所述第二充满信号被声明时向该重排序缓冲器提供所述保持指针。
7.如权利要求1所述的重发指令停靠系统,其中所述保留站模块包括多个保留站队列,并且如果所述保留站队列的任何一个充满,则所述第一充满信号被声明。
8.一种微处理器,包括:
至少一个执行单元;
保留站模块,其分派指令用于由所述至少一个执行单元执行;
重排序缓冲器,其在重发状态期间向所述保留站模块重发指令;以及
重发指令停靠系统,包括:
至少一个第一流水线级,其在所述重发状态期间从重发数据路径向该保留站模块提供第一重发指令,并且当第一充满信号被声明时停靠所述第一重发指令,其中一旦该保留站模块在所述重发状态期间被判定为充满则声明所述第一充满信号;
至少一个第二流水线级,其向该重排序缓冲器提供由该重排序缓冲器选择的指针,其中该重排序缓冲器提供与所述选择的指针对应的所述第一重发指令到所述重发数据路径上,其中当第二充满信号被声明时将所述至少一个第二流水线级置于保持状态;以及
重发寄存器,具有耦接到所述重排序缓冲器的输出端的输入端,并且具有耦接到所述重发数据路径的输出端,
其中所述第二充满信号是所述第一充满信号的锁存版本。
9.如权利要求8所述的微处理器,其中所述至少一个第一流水线级进一步包括:
重发停靠逻辑,其当所述第一充满信号被声明时停靠所述第一重发指令,当所述第一充满信号被否定以及当所述第二充满信号被声明时选择寄存自所述重发数据路径的门控第二重发指令,并且当所述第一和第二充满信号都被否定时从所述重发数据路径选择第三重发指令。
10.如权利要求9所述的微处理器,其中所述重发停靠逻辑包括:
门控寄存器,其在所述第一充满信号声明时保持来自所述重发数据路径的第二重发指令,并且输出所述门控第二重发指令;以及
门控重发选择逻辑,其当所述第一充满信号被声明时选择所述第一重发指令,当所述第一充满信号被否定以及当所述第二充满信号被声明时选择所述门控第二重发指令,并且当所述第一和第二充满信号都被否定时从所述重发数据路径选择所述第三重发指令。
11.如权利要求10所述的微处理器,其中所述重发停靠逻辑进一步包括:
主寄存器,其具有耦接到所述门控重发选择逻辑的输出端的输入端,并且具有向该保留站模块提供所述第一重发指令的输出端。
12.如权利要求8所述的微处理器,其中所述至少一个第一流水线级进一步包括:
主寄存器,其当所述第一充满信号被否定时向该保留站模块提供所述第一重发指令,并且当所述第一充满信号被声明时保持来自所述重发数据路径的所述第一重发指令。
13.如权利要求8所述的微处理器,其中所述至少一个第二流水线级包括:
指针保持寄存器逻辑,其具有耦接到由该重排序缓冲器选择的所述指针的输入端,并且产生保持指针,其中所述保持指针为所述选择的指针的锁存版本,其中所述指针保持寄存器逻辑当所述第二充满信号被否定时向该重排序缓冲器提供所述选择的指针,并且当所述第二充满信号被声明时向该重排序缓冲器提供所述保持指针。
14.一种用于微处理器的停靠重发指令的方法,其中该微处理器包括:保留站模块,其分派指令用于执行;以及重排序缓冲器,其在重发状态期间向该保留站模块重发指令,所述方法包括:
从所述重排序缓冲器向该保留站模块提供第一重发指令;
检测该保留站模块的充满条件并提供第一充满信号;
寄存所述第一充满信号并提供第二充满信号;
当所述第一充满信号被声明时,停靠所述第一重发指令;以及
在所述第二充满信号被声明期间,保持与向该保留站模块提供所述第一重发指令的重排序缓冲器相关联的流水线的状态。
CN201510101450.4A 2015-03-09 2015-03-09 用于微处理器的重发停靠的系统和方法 Active CN104657145B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201510101450.4A CN104657145B (zh) 2015-03-09 2015-03-09 用于微处理器的重发停靠的系统和方法
US14/659,372 US9823933B2 (en) 2015-03-09 2015-03-16 System and method of reissue parking for a microprocessor
EP15196249.5A EP3067794B1 (en) 2015-03-09 2015-11-25 System and method of reissue parking for a microprocessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510101450.4A CN104657145B (zh) 2015-03-09 2015-03-09 用于微处理器的重发停靠的系统和方法

Publications (2)

Publication Number Publication Date
CN104657145A CN104657145A (zh) 2015-05-27
CN104657145B true CN104657145B (zh) 2017-12-15

Family

ID=53248331

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510101450.4A Active CN104657145B (zh) 2015-03-09 2015-03-09 用于微处理器的重发停靠的系统和方法

Country Status (3)

Country Link
US (1) US9823933B2 (zh)
EP (1) EP3067794B1 (zh)
CN (1) CN104657145B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105426160B (zh) * 2015-11-10 2018-02-23 北京时代民芯科技有限公司 基于sprac v8指令集的指令分类多发射方法
CN110609709B (zh) * 2019-09-11 2023-03-31 上海高性能集成电路设计中心 一种超标量微处理器中重发自陷立即处理方法
US11709752B2 (en) * 2020-04-02 2023-07-25 Sap Se Pause and resume in database system workload capture and replay
US11861217B2 (en) 2020-10-05 2024-01-02 Western Digital Technologies, Inc. DRAM-less SSD with command draining
US11500589B2 (en) 2020-10-05 2022-11-15 Western Digital Technologies, Inc. Command draining using host memory buffer
US12099845B2 (en) 2022-06-16 2024-09-24 International Business Machines Corporation Load reissuing using an alternate issue queue
CN118377538A (zh) * 2024-06-25 2024-07-23 飞腾信息技术有限公司 一种指令处理方法、微处理器及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155832A (en) * 1989-07-05 1992-10-13 Hewlett-Packard Company Method to increase performance in a multi-level cache system by the use of forced cache misses
US5826109A (en) * 1994-01-04 1998-10-20 Intel Corporation Method and apparatus for performing multiple load operations to the same memory location in a computer system
CN1264866A (zh) * 1999-02-26 2000-08-30 国际商业机器公司 合并多个未完成的装入未命中指令的系统和方法
CN101196826A (zh) * 2007-12-29 2008-06-11 中国科学院计算技术研究所 满足SystemC语法要求的多核处理器及获得其执行代码的方法
CN101329702A (zh) * 2008-07-22 2008-12-24 中国科学院计算技术研究所 一种满足SystemC语法的多核处理器的先进先出队列单元组

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6240509B1 (en) * 1997-12-16 2001-05-29 Intel Corporation Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation
US6237081B1 (en) * 1998-12-16 2001-05-22 International Business Machines Corporation Queuing method and apparatus for facilitating the rejection of sequential instructions in a processor
US6192466B1 (en) * 1999-01-21 2001-02-20 International Business Machines Corporation Pipeline control for high-frequency pipelined designs
US6542984B1 (en) * 2000-01-03 2003-04-01 Advanced Micro Devices, Inc. Scheduler capable of issuing and reissuing dependency chains
US7055021B2 (en) * 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
US7725683B2 (en) * 2003-09-25 2010-05-25 Marvell International Ltd. Apparatus and method for power optimized replay via selective recirculation of instructions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155832A (en) * 1989-07-05 1992-10-13 Hewlett-Packard Company Method to increase performance in a multi-level cache system by the use of forced cache misses
US5826109A (en) * 1994-01-04 1998-10-20 Intel Corporation Method and apparatus for performing multiple load operations to the same memory location in a computer system
CN1264866A (zh) * 1999-02-26 2000-08-30 国际商业机器公司 合并多个未完成的装入未命中指令的系统和方法
CN101196826A (zh) * 2007-12-29 2008-06-11 中国科学院计算技术研究所 满足SystemC语法要求的多核处理器及获得其执行代码的方法
CN101329702A (zh) * 2008-07-22 2008-12-24 中国科学院计算技术研究所 一种满足SystemC语法的多核处理器的先进先出队列单元组

Also Published As

Publication number Publication date
EP3067794A3 (en) 2018-05-09
EP3067794B1 (en) 2020-10-07
CN104657145A (zh) 2015-05-27
US9823933B2 (en) 2017-11-21
US20160266906A1 (en) 2016-09-15
EP3067794A2 (en) 2016-09-14

Similar Documents

Publication Publication Date Title
CN104657145B (zh) 用于微处理器的重发停靠的系统和方法
US20220083499A1 (en) Efficient deconfiguration of a reconfigurable data processor
US11275590B2 (en) Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
CN1294484C (zh) 利用重新调度的重放队列中断处理器中的重放依赖关系循环
KR100983786B1 (ko) 데이터 처리장치에서의 파이프라인들간의 동기화
CN100392622C (zh) 具有存储器顺序缓冲器的处理器
CN105117202B (zh) 具有融合保留站结构的微处理器
CN109062604B (zh) 一种面向标量和向量指令混合执行的发射方法及装置
CN101566942B (zh) 一种超标量微处理器中控制乱序发射的飞行记分牌装置
CN105446773B (zh) 高速缓存行的非对齐加载指令的推测并行执行系统和方法
US20210089322A1 (en) Logical register recovery within a processor
US7149880B2 (en) Method and apparatus for instruction pointer storage element configuration in a simultaneous multithreaded processor
US9952872B2 (en) Arithmetic processing device and processing method of arithmetic processing device
CN105242906B (zh) 利用世代数的重命名的处理装置和方法
US11416255B2 (en) Instruction execution method and instruction execution device
CN104615409B (zh) 跳越mov指令的处理器和由该处理器使用的方法
CN104391680B (zh) 一种超标量微处理器中实现存储指令流水提交方法
US7788470B1 (en) Shadow pipeline in an auxiliary processor unit controller
CN105549952A (zh) 一种基于记分牌原理的两级缓置发射的调控装置
JP4021839B2 (ja) 分割データフロースケジューリング機構
EP2639702B1 (en) Circuit and method for software tracing
US6385719B1 (en) Method and apparatus for synchronizing parallel pipelines in a superscalar microprocessor
GB2393811A (en) A configurable microprocessor architecture incorporating direct execution unit connectivity
US9395988B2 (en) Micro-ops including packed source and destination fields
CN100495323C (zh) 保持分离队列功能单元之间的状态一致性的方法及装置

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
CP03 Change of name, title or address

Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203

Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd.

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

Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.

CP03 Change of name, title or address