用于微处理器的重发停靠的系统和方法
【技术领域】
[0001]本发明一般涉及在微处理器中重发指令,而且更具体地,涉及用于避免与再重发指令相关的低效率的重发停靠的系统和方法。
【背景技术】
[0002]许多现代微处理器是超标量的,其中它们包括多个执行单元,并且能够在单个时钟周期中向执行单元发射多个指令。许多现代微处理器还执行乱序执行。即,微处理器可以不按照由包括这些指令的程序指定的顺序执行指令。超标量乱序执行处理器通常试图维持相对大的未决指令池,以便它们可以受益于大量的指令并行。
[0003]微处理器执行诸如x86指令集架构等指令集架构的指令。在许多这样的微处理器中,指令集构架的指令(常常被称为宏指令)首先被翻译为微指令(或者微操作或“ μ op”),后者被发射到保留站模块,其将指令分派到执行单元。这里将微指令更一般地简单称为指令。指令也被发射到重排序缓冲器,其确保指令的按序引退。
[0004]保留站模块包括一个或多个队列,并且如果任何队列充满,则保留站模块无法接收发射的任何指令。在重发(re-1ssue)配置中,微处理器恢复到重发模式,在重发模式下必须从重排序缓冲器(Reorder Buffer, ROB)重发被拒绝的指令。如果保留站模块仍然充满,则必须再次重发指令。在再重发(re-reissue)过程中,指令在重发流水线路径中反复循环直到保留站模块不充满为止,此时可以最后将指令提交到保留站模块以便最终分派用于执行。
[0005]再重发过程由于多种原因而不利。判断保留站模块是否充满是在流水线的某个级(stage)处进行的,如果充满,则重发的指令在被再次再重发到保留站模块之前必须穿越多个级。以这种方式,再重发过程引起延迟并降低微处理器的性能。
【发明内容】
[0006]这里描述一种用于微处理器的重发指令停靠系统,其中该微处理器包括:保留站模块,其分派指令用于执行;以及重排序缓冲器,其在重发状态期间向该保留站模块重发指令。该重发指令停靠系统包括至少一个第一流水线级和至少一个第二流水线级。该至少一个第一流水线级在重发状态期间从重发数据路径向该保留站模块提供第一重发指令,并且当第一充满信号被声明时停靠第一重发指令,其中一旦该保留站模块在重发状态期间被判定为充满则声明第一充满信号。该至少一个第二流水线级向该重排序缓冲器提供由该重排缓冲器选择的指针,其中该重排序缓冲器提供与选择的指针对应的第一重发指令到该重发数据路径上,其中当第二充满信号被声明时将该至少一个第二流水线级置于保持状态。
[0007]根据实施例的一种微处理器包括:至少一个执行单元;保留站模块,其分派指令用于由该至少一个执行单元执行;重排序缓冲器,其在重发状态期间向该保留站模块重发指令;以及这里所述的重发指令停靠系统。
[0008]这里描述一种用于包括保留站模块和重排序缓冲器的微处理器的停靠重发指令的方法。该保留站模块分派指令用于执行,并且该重排序缓冲器在重发状态期间向该保留站模块重发指令。该方法可以包括:从该重排序缓冲器向该保留站模块提供第一重发指令;检测该保留站模块的充满条件并提供第一充满信号;寄存第一充满信号并提供第二充满信号;以及当第一充满信号被声明时停靠第一重发指令。而且在第二充满信号被声明期间,该方法可以包括保持与向该保留站模块提供第一重发指令的重排序缓冲器相关联的流水线的状态。
[0009]本发明所揭露的用于微处理器的重发停靠的系统和方法避免了再重发过程的低效率,不会有经由流水线从重排序缓冲器向保留站模块再重发指令的延迟,取而代之的是,在保留站模块之前停靠指令,并且持续地进行充满判定,直到保留站模块不再充满为止。将与重排序缓冲器相关联的流水线级置于保持状态。当不充满时,被停靠的指令可以立即进入而没有任何延迟,并且流水线在一个或两个时钟周期内有效地重启。
【附图说明】
[0010]通过结合附图的以下描述,本发明的益处、特征、和优点将变得更好理解,其中:
[0011]图1是根据本发明的一个实施例实现的超标量的、流水线的微处理器的简化框图;
[0012]图2是根据重发配置的图1的保留站模块与ROB之间的流水线的简化示意图和框图;
[0013]图3是示出用于重发和再重发过程的图2的流水线的操作的流程图;
[0014]图4是根据本发明的一个实施例的图1的保留站模块与ROB之间的流水线的简化不意图和框图;以及
[0015]图5-9是示出根据本发明的一个实施例的重发停靠过程的在连续的时钟周期中处于不同状态的流水线的图。
[0016]附图符号说明
[0017]102指令缓存
[0018]104指令翻译器
[0019]106寄存器别名表(RAT)
[0020]108 保留站(RS)
[0021]110重排序缓冲器(ROB)
[0022]114 整型
[0023]116 浮点
[0024]118存储器排序缓冲器(MOB)
[0025]200、400 流水线
[0026]202 主 MUX
[0027]204重发数据路径
[0028]206、207 数据路径
[0029]208主寄存器
[0030]209主数据路径
[0031]210RAT 充满
[0032]212、216、220 寄存器
[0033]214REISSUE 充满
[0034]218 充满 MUX
[0035]222指针选择MUX
[0036]224指针寄存器
[0037]226重发寄存器
[0038]228、230、232、234 再重发寄存器
[0039]402门控重发MUX
[0040]403第二重发数据路径
[0041]404门控寄存器
[0042]405门控数据路径
[0043]406充满寄存器
[0044]407反馈数据路径
[0045]408保持寄存器
[0046]410 保持 MUX
【具体实施方式】
[0047]发明人已经认识到与从重排序缓冲器向保留站模块再重发指令相关联的低效率。因而他们开发了避免指令不得不穿越多级流水线的各个级的用于重发停靠(re-1ssueparking)的系统和方法。替代地,当保留站模块充满时,已经被重发的一个或多个指令被有效地停靠(parking)在保留站模块的入口,直到保留站模块有空间接收指令为止。
[0048]图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提供它们的结果到R0B110,其确保指令的按序引退。
[0049]从RAT 106发射的微指令(ISSUE INST)可以典型地称为微指令,但是这里更一般地简单称为“指令”。所示的实施例中,RAT 106—次(例如,每时钟周期)发射最多3个指令。虽然执行单元112被示出为仅包括一个整型执行单元114和一个浮点执行单元116,但是本领域技术人员可以理解,可以包括任何数目的整型执行单元和浮点执行单元。MOB 118通常处理存储器型指令,诸如加载和存储指令执行流水线(未示出)等。在一个实施例中,以分布的方式将保留站模块108配置为包括多个RS队列(未示出),其中每个队列分派一个或多个指令给相应的执行单元112。
[0050]在所示的配置中,当保留站模块108内的任何一个(或多个)RS队列充满时,则保留站模块108被认为充满并且无法接收额外的指令。ROB 110为从RAT 106发射的每个指令存储一表项(entry)。初始未能进入保留站模块108的已发射指令在稍后不再充满时由ROB 110重发射(示出为REISSUEINST)到保留站模块108。如这里进一步描述的,ROB 110为未进入保留站模块108并且从ROB 110重发的ROB 110中的每个指令(或指令集合)产生并使用一重发指针。
[0051]图2是根据重发配置的保留站模块108与ROB 110之间的流水线200的简化示意图和框图。流水线200包括5个连续的级,图示出为级A、B、C、D和E,由寄存器分隔开。每个寄存器或寄存器集