改善乱序超纯量执行单元的微处理器及方法转让专利

申请号 : CN200910222642.5

文献号 : CN101706713B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吉拉德·M·卡尔布兰特·比恩布莱恩·伟恩·伯格

申请人 : 威盛电子股份有限公司

摘要 :

一种改善乱序超纯量执行单元的微处理器及方法,其使用一相对小的在序指令引退缓冲器并且通过选择性地提早初始指令引退来实现,微处理器包括多个执行单元与一引退单元。每一执行单元用以计算一指令的结果,指令为例外类别指令或非例外类别指令,例外类别指令可在被发送至执行单元后令微处理器取得例外状况,而非例外类别指令无法在被发送至执行单元后令微处理器取得例外状况。引退单元耦接于执行单元,用以判断指令在微处理器中是否为存放最久的指令以及指令是否已准备好利用其结果来更新微处理器的结构状态,引退单元用以在执行单元输出非例外类别指令的结果前执行判断操作,引退单元用以在执行单元输出例外类别指令的结果后执行判断操作。

权利要求 :

1.一种改善乱序超纯量执行单元的微处理器,其特征在于,其使用一相对小的在序指令引退缓冲器并且通过选择性地提早初始指令引退来实现,该微处理器包括:多个执行单元,每一执行单元用以计算一指令的结果,其中该指令为一例外类别指令或一非例外类别指令,其中该例外类别指令能在被发送至该执行单元以计算其结果后令该微处理器取得一例外状况,而该非例外类别指令无法在被发送至该执行单元以计算其结果后令该微处理器取得一例外状况,当所述执行单元执行完该例外类别指令时,所述执行单元产生一般完成信号及一般例外状态信号;

一发布单元,耦接于所述执行单元以发送指令给所述执行单元,并能够确认该指令是否为例外类别指令,且在所述执行单元输出该非例外类别指令的结果的三个时脉周期前,输出早期完成信号及早期例外状态信号;以及一引退单元,耦接于所述执行单元及所述发布单元,该引退单元用以判断一指令在该微处理器中是否为存放最久的指令,并能够根据一般完成信号与一般例外状态信号、或者早期完成信号与早期例外状态信号判断该指令是否已准备好利用该结果来更新该微处理器的结构状态,其中该引退单元用以在该执行单元输出该非例外类别指令的结果前执行该判断操作,其中该引退单元用以在该执行单元输出该例外类别指令的结果后执行该判断操作;其中该引退单元包括该在序指令引退缓冲器及控制单元。

2.根据权利要求1所述的改善乱序超纯量执行单元的微处理器,其特征在于,该非例外类别指令具有固定的执行延迟。

3.根据权利要求1所述的改善乱序超纯量执行单元的微处理器,其特征在于,执行该非例外类别指令所需的时脉周期数目,在该非例外类别指令准备好发送给该执行单元时能得知。

4.根据权利要求1所述的改善乱序超纯量执行单元的微处理器,其特征在于,该在序指令引退缓冲器耦接于所述执行单元,并具有多个通道,每一通道用以储存与一指令相关的一指示器,而该指示器用以表示该指示器相关的指令是否准备好根据对应结果更新该微处理器的结构状态;

其中该引退单元还在该执行单元输出该非例外类别指令的该结果前更新对应该非例外类别指令的通道;及其中该引退单元还在该执行单元输出该例外类别指令的该结果后更新对应该例外类别指令的通道。

5.根据权利要求4所述的改善乱序超纯量执行单元的微处理器,其特征在于,该控制单元耦接于该在序指令引退缓冲器,该控制单元用以在该执行单元输出该非例外类别指令的该结果之前的多个时脉周期更新该非例外类别指令相关的指示器,以表示该非例外类别指令已准备好根据对应结果更新该微处理器的结构状态。

6.根据权利要求4所述的改善乱序超纯量执行单元的微处理器,其特征在于,该引退单元比该例外类别指令更早释放而重新使用该在序指令引退缓冲器的所述通道中对应于该非例外类别指令的一通道。

7.根据权利要求4所述的改善乱序超纯量执行单元的微处理器,其特征在于,当该微处理器根据该通道中的结果更新该微处理器的结构时,该引退单元还释放而重新使用该在序指令引退缓冲器的对应通道。

8.一种改善乱序超纯量执行单元的方法,其特征在于,其使用一相对小的在序指令引退缓冲器,并且通过选择性地提早初始指令引退来实现,该方法包括下列步骤:计算一指令的结果,其中该指令为一例外类别指令或一非例外类别指令,其中该例外类别指令能在被发送至一执行单元以计算其结果后令微处理器取得一例外状况,而该非例外类别指令无法在被发送至该执行单元以计算其结果后令该微处理器取得一例外状况;

判断一指令在该微处理器中是否为存放最久的指令以及该指令是否已准备好利用该指令的该结果来更新该微处理器的结构状态;

其中该判断操作包括在该执行单元输出该非例外类别指令的该结果前执行该判断操作;

其中该判断操作包括在该执行单元输出该例外类别指令的该结果后执行该判断操作。

9.根据权利要求8所述的改善乱序超纯量执行单元的方法,其特征在于,该非例外类别指令具有固定的执行延迟。

10.根据权利要求8所述的改善乱序超纯量执行单元的方法,其特征在于,执行该非例外类别指令所需的时脉周期数目,在该非例外类别指令准备好发送给该执行单元时能得知。

11.根据权利要求8所述的改善乱序超纯量执行单元的方法,其特征在于,该微处理器包括该在序指令引退缓冲器,该在序指令引退缓冲器具有多个通道,每一通道用以储存与一指令相关的一指示器,而该指示器用以表示该指示器相关的指令是否准备好根据对应结果更新该微处理器的结构状态,该方法还包括下列步骤:在该执行单元输出该非例外类别指令的该结果前更新对应该非例外类别指令的通道;

以及

在该执行单元输出该例外类别指令的该结果后更新对应该例外类别指令的通道。

12.根据权利要求11所述的改善乱序超纯量执行单元的方法,其特征在于,还包括下列步骤:在该执行单元输出该非例外类别指令的该结果之前的多个时脉周期更新该非例外类别指令相关的指示器,以表示该非例外类别指令已准备好根据对应结果更新该微处理器的结构状态。

13.根据权利要求11所述的改善乱序超纯量执行单元的方法,其特征在于,还包括下列步骤:比该例外类别指令更早释放而重新使用该在序指令引退缓冲器的所述通道中对应于该非例外类别指令的一通道。

14.根据权利要求11所述的改善乱序超纯量执行单元的方法,其特征在于,还包括下列步骤:当该微处理器根据该通道中的结果更新该微处理器的结构时,还释放而重新使用该在序指令引退缓冲器的对应通道。

说明书 :

改善乱序超纯量执行单元的微处理器及方法

技术领域

[0001] 本发明有关于一种乱序(out-of-order)执行微处理器,且特别有关于一种处理器中的指令引退(Retirement)。

背景技术

[0002] 超纯量微处理器(Superscalar Microprocessor)具有多个执行单元,其用以执行微处理器的指令集。超纯量微处理器通过纳入多个执行单元来改善执行效能,故在每个时脉中可并行执行多个指令。要实现潜在执行效能获益的关键是保持指令可供给执行单元来执行,否则使用超纯量(Superscalar)的执行效能不会比使用纯量(Scalar)来的好,但却增加许多的硬件成本。举例来说,执行单元要载入与储存微指令运算元、计算地址、执行逻辑与算术操作并且还要解析分支指令。当执行单元的数量与种类愈多,回归到程序指令串流(Program instruction stream)的距离就越远,而处理器就必须有能力找到每一执行单元在每一时脉周期所将执行的指令,此即处理器的预看(lookahead)能力。 [0003] 在一乱序的超纯量微处理器中,虽然指令可乱序执行(out-of-order execution),但必须以一程序顺序(program order)来引退。进行乱序执行的微处理器需要一缓冲器使微指令在执行过后以一程序顺序来引退。在某些微处理器中,该缓冲器称为重排序缓冲器(reorder buffer,以下简称为ROB)。ROB具有固定数量的通道,并且可暂存微指令以及与每一微指令相关的状态信息。引退ROB中的微指令包括储存微指令的结果至微处理器的结构暂存器,并且使微指令占用的ROB通道被释放 (free),故可将新的微指令分派在ROB中的一通道中。
[0004] ROB的大小,亦即通道数量(number of entries),限制处理器的预看能力。特别的是,由于在指令准备好被发布前,必须分派一ROB通道给该指令,故ROB的大小会限制可准备被发布(issued)以被执行的指令的数量。当ROB的所有通道都已满(full)时,存放最久的指令(oldest instruction)必须被引退,亦即根据其结果更新结构状态,使得该存放最久的指令的ROB通道可被释放以重新配置新的指令。增加微处理器的预看能力的其中一个方法是增加ROB中的通道数。然而,每一ROB通道需要微处理器中相对大量的空间与功率以储存其信息,例如,指令本身、储存结果的暂存空间以及有关指令的其它信息。因此,令ROB的尺寸变大与增加微处理器的预看能力相比,其代价是相对较高的。 [0005] 因此,需要尽可能的将ROB以一较高效率的方式来使用,以在良好使用执行单元的情况下改善执行效率,同时尽可能地将ROB的大小维持在小尺寸。
[0006] 发明内容
[0007] 基于上述目的,本发明实施例揭露了一种改善乱序超纯量执行单元(Out-of-Order Superscalar Execution Unit)的微处理器,其使用一相对小的在序(in-order)指令引退(Retirement)缓冲器并且通过选择性地提早初始指令引退来实现,该微处理器包括多个执行单元、一发布单元与一引退单元(Retire Unit)。每一执行单元用以计算一指令的结果,其中该指令为一例外类别(excepting type)指令或一非例外类别(non-excepting type)指令,其中该例外类别指令可在被发送至该执行单元以计算其结果后令该微处理器取得一例外状况(exception),而该非例外 类别指令无法在被发送至该执行单元以计算其结果后令该微处理器取得一例外状况,当所述执行单元执行完该例外类别指令时,所述执行单元产生一般完成信号及一般例外状态信号。该发布单元耦接于所述执行单元以发送指令给所述执行单元,并能够确认该指令是否为例外类别指令,且在所述执行单元输出该非例外类别指令的结果的三个时脉周期前,输出早期完成信号及早期例外状态信号。该引退单元耦接于所述执行单元及所述发布单元,该引退单元用以判断一指令在该微处理器中是否为存放最久的指令,并能够根据一般完成信号与一般例外状态信号、或者早期完成信号与早期例外状态信号判断该指令是否已准备好利用其结果来更新该微处理器的结构状态(architectural state),其中该引退单元用以在该执行单元输出该非例外类别指令的结果前执行该判断操作,其中该引退单元用以在该执行单元输出该例外类别指令的结果后执行该判断操作;其中该引退单元包括该在序指令引退缓冲器及控制单元。 [0008] 本发明所述的改善乱序超纯量执行单元的微处理器,该非例外类别指令具有固定的执行延迟。
[0009] 本发明所述的改善乱序超纯量执行单元的微处理器,执行该非例外类别指令所需的时脉周期数目,在该非例外类别指令准备好发送给该执行单元时能得知。 [0010] 本发明所述的改善乱序超纯量执行单元的微处理器,该在序指令引退缓冲器耦接于所述执行单元,并具有多个通道,每一通道用以储存与一指令相关的一指示器,而该指示器用以表示该指示器相关的指令是否准备好根据对应结果更新该微处理器的结构状态;其中该引退单元还在该执行单元输出该非例外类别指令的该结果前更新对应该非例外类别指令的通道;及其中该引退单元还在该执行单元输出该例外类别指令的该结果后 更新对应该例外类别指令的通道。
[0011] 本发明所述的改善乱序超纯量执行单元的微处理器,该控制单元耦接于该在序指令引退缓冲器,该控制单元用以在该执行单元输出该非例外类别指令的该结果之前的多个时脉周期更新该非例外类别指令相关的指示器,以表示该非例外类别指令已准备好根据对应结果更新该微处理器的结构状态。
[0012] 本发明所述的改善乱序超纯量执行单元的微处理器,该引退单元比该例外类别指令更早释放而重新使用该在序指令引退缓冲器的所述通道中对应于该非例外类别指令的一通道。
[0013] 本发明所述的改善乱序超纯量执行单元的微处理器,当该微处理器根据该通道中的结果更新该微处理器的结构时,该引退单元还释放而重新使用该在序指令引退缓冲器的对应通道。本发明实施例还揭露了一种改善乱序超纯量执行单元的方法,其使用一相对小的在序指令引退缓冲器,并且通过选择性地提早初始指令引退来实现。计算一指令的结果,其中该指令为一例外类别指令或一非例外类别指令,其中该例外类别指令可在被发送至一执行单元以计算其结果后令微处理器取得一例外状况,而该非例外类别指令无法在被发送至该执行单元以计算其结果后令该微处理器取得一例外状况。判断一指令在该微处理器中是否为存放最久的指令以及该指令是否已准备好利用其结果来更新该微处理器的结构状态。该判断操作包括在该执行单元输出该非例外类别指令的结果前执行该判断操作。该判断操作包括在该执行单元输出该例外类别指令的结果后执行该判断操作。 [0014] 本发明所述的改善乱序超纯量执行单元的方法,该非例外类别指令具有固定的执行延迟。
[0015] 本发明所述的改善乱序超纯量执行单元的方法,执行该非例外类别指令所需的时脉周期数目,在该非例外类别指令准备好发送给该执行单元时能得知。
[0016] 本发明所述的改善乱序超纯量执行单元的方法,该微处理器包括该在序指令引退缓冲器,该在序指令引退缓冲器具有多个通道,每一通道用以储存与一指令相关的一指示器,而该指示器用以表示该指示器相关的指令是否准备好根据对应结果更新该微处理器的结构状态,该方法还包括下列步骤:在该执行单元输出该非例外类别指令的该结果前更新对应该非例外类别指令的通道;以及在该执行单元输出该例外类别指令的该结果后更新对应该例外类别指令的通道。
[0017] 本发明所述的改善乱序超纯量执行单元的方法,还包括下列步骤:在该执行单元输出该非例外类别指令的该结果之前的多个时脉周期更新该非例外类别指令相关的指示器,以表示该非例外类别指令已准备好根据对应结果更新该微处理器的结构状态。 [0018] 本发明所述的改善乱序超纯量执行单元的方法,还包括下列步骤:比该例外类别指令更早释放而重新使用该在序指令引退缓冲器的所述通道中对应于该非例外类别指令的一通道。
[0019] 本发明所述的改善乱序超纯量执行单元的方法,还包括下列步骤:当该微处理器根据该通道中的结果更新该微处理器的结构时,还释放而重新使用该在序指令引退缓冲器的对应通道。
[0020] 本发明实施例还揭露了一种使用运算装置的计算机程序产品,该计算机程序产品包括一计算机可使用储存介质。该计算机可使用储存介质包括载入至该计算机可使用储存介质的计算机可读取程序码,用以说明一种改善乱序超纯量执行单元的微处理器,其使用一相对小的在序指令引退缓冲器并且通过选择性地提早初始指令引退来实现。该计算机可读取程序码包括第 一程序码与第二程序码。第一程序码用以说明(specifying)多个执行单元,每一执行单元用以计算一指令的结果,其中该指令为一例外类别指令或一非例外类别指令,其中该例外类别指令可在被发送至该执行单元以计算其结果后令该微处理器取得一例外状况,而该非例外类别指令则无法在被发送至该执行单元以计算其结果后令该微处理器取得一例外状况。第二程序码用以说明一引退单元,该引退单元耦接于所述执行单元,用以判断一指令在该微处理器中是否为存放最久的指令以及该指令是否已准备好利用其结果来更新该微处理器的结构状态,其中该引退单元用以在该执行单元输出该非例外类别指令的结果前执行该判断操作,其中该引退单元用以在该执行单元输出该例外类别指令的结果后执行该判断操作。
[0021] 本发明可增加预看能力与执行单元的使用性,从而增加乱序执行的微处理器的执行效能。

附图说明

[0022] 图1是显示本发明实施例的微处理器的架构示意图。
[0023] 图2是显示本发明实施例的图1的ROB中的微指令通道的架构示意图。 [0024] 图3a是显示本发明实施例的非早期引退微指令的发布与执行阶段(issue and execute stage)以及引退阶段(retirement stage)的架构示意图。
[0025] 图3b是显示本发明实施例的早期引退微指令的发布与执行阶段以及引退阶段的架构示意图。
[0026] 图4a是显示本发明实施例的三个非早期引退微指令序列的表格示意图。 [0027] 图4b是显示本发明实施例的图4a的非早期引退微指令序列 的进展的时序图。 [0028] 图5a是显示本发明实施例的九个早期引退微指令序列的表格示意图。 [0029] 图5b是显示本发明实施例的根据图3b的阶段所呈现的图5a的早期引退微指令序列的进展的时序图。
[0030] 图6是显示本发明实施例的图1中微处理器操作的步骤流程图。

具体实施方式

[0031] 为了让本发明的目的、特征及优点能更明显易懂,下文特举较佳实施例,并配合所附图式图1至图6,做详细的说明。本发明说明书提供不同的实施例来说明本发明不同实施方式的技术特征。其中,实施例中的各元件的配置是为说明之用,并非用以限制本发明。且实施例中图式标号的部分重复,是为了简化说明,并非意指不同实施例之间的关联性。 [0032] 本发明实施例揭露了一种改善乱序超纯量执行单元的微处理器与方法以及使用运算装置的计算机程序产品。
[0033] 图1是显示本发明实施例的微处理器100的架构示意图。微处理器100包括一重命名(rename)/分派(allocate)/派送(dispatch)单元104、耦接于重命名/分派/派送单元104的保留站(reservation stations)106、耦接于保留站106的执行单元108、耦接于保留站106与执行单元108的发布逻辑112、耦接于重命名/分派/派送单元104及执行单元108与发布逻辑112的重排序缓冲器(ROB)114、耦接于执行单元108与发布逻辑112的推测暂存器(Speculative Register)116、耦接于执行单元108及重排序缓冲器114与推测暂存器116的多工器118、以及耦接于多工器118与发布逻辑112的结构暂存器122。 [0034] 在了解硬件成本与增加ROB大小相关的额外复杂性时,本发明发明人也了解在微处理器中,部份从重排序缓冲器114中所引退指令所执行的操作需耗费多个时脉周期来进行。上述操作包括更新指令的状态至其在重排序缓冲器114中的通道,并且接着分析重排序缓冲器114中存在最久的指令的状态以分辨是否已准备好要引退命令。一般来说,重排序缓冲器114在执行单元108输出指令的执行结果与信号完成之后以及在重排序缓冲器114更新结构状态之前执行上述操作,并且释放重排序缓冲器114中的该通道。本发明发明人认为,当引退单元开始执行引退指令的程序时,只要该指令不产生一例外状况,亦即没有产生指令结果之时,重排序缓冲器114可在指令执行的同时,并行地执行一些上述的引退操作。
[0035] 因此,本发明实施例修改微处理器100,对具有固定执行延迟(latency)的非例外指令产生一早期完成信号(early completion signal)156。微处理器100取得该非例外指令的固定执行延迟,并且根据其执行指令的时脉周期数目产生早期完成信号156时,可使得执行单元108提供结果144以及时更新结构暂存器122,并释放重排序缓冲器114的通道给新的指令。在一实施例中,非例外指令可比具有相同的执行延迟且在相同时脉周期被发布的例外指令早三个时脉周期被引退。在一实施例中,发布逻辑112发布指令给执行单元108来执行,并且产生早期完成信号156。
[0036] 再参考图1,重命名/分派/派送单元104接收包括早期引退微指令126与非早期引退微指令124的微指令。如下文详述的,发布逻辑112产生早期引退微指令126的早期完成信号156,并且执行单元108产生非早期引退微指令124的一般完成信号138。 [0037] 早期引退微指令126在发布给执行单元108后无法产生一例 外状况。许多指令可产生例外状况。举例来说,指令可产生运算元相关的例外状况(operand-related exception)(例如,除以零(divide-by-zero)错误)或者指令可产生地址相关错误,例如,分页错误。当微指令产生错误时,如果可能的话,微处理器100必须中断程序以检视例外状况与修正错误。微处理器100通过储存微处理器100的离开状态(away state)来管理例外状况,包括引起例外状况的指令的地址。微处理器100接着清除存在时间短于该例外指令的任何指令,并且将控制权转移至与特定类别的例外状况相关的微代码例行程序(microcode routine)。对于结构例外状况来说,该微代码例行程序最终将控制权转移给操作系统中例外类别的例外处理机例行程序(exception handler routine)。对于部分例外类别而言,例外处理机例行程序最后执行一指令(例如,IA-32结构中的IRET指令)以将控制权移转回该例外指令或包括该例外指令的程序中的另一指令序列。然而,在部分案例中,例外处理机例行程序不会将控制权移转回引发例外状况的程序,取而代之的是完全中止该程序。当引发例外状况时,微处理器100清除存在时间短于该例外指令的指令,故不保证新的指令会不会被重新执行。此外,若新的指令被重新执行,则其接收的输入运算元值不同于前次执行期间所接收的输入运算元值,故可能产生不同于初始执行的结果值。基于上述理由,微处理器100不会在早期引退例外指令。例外状况的其中一种类别为重播(replay),其为非结构微例外状况(non-architectural micro-exception)。也就是,重播为微处理器的微结构(microarchitecture)所认可但不被微处理器的巨结构(macroarchitecture)所认可的例外状况。当处理器执行指令重播或设定,其将自指令管线清除指令并且重新发布上述指令以被执行。当上述指令被重新执行,则其源运算元被重新提取 (re-fetch)并且提供给执行单元,且在重新执行期间的处理器状态是不同于第一次执行时的状态。 [0038] 在一实施例中,早期引退微指令126的另一特色为需要固定的时脉周期数来执行,且在发布逻辑112发布指令的时间点得知指令的固定执行延迟。在产生重排序缓冲器114的早期完成信号156之前,若有的话,发布逻辑112精确得知有多少时脉在等待。因此,发布逻辑112不产生具有变动执行时间的指令的早期完成信号156,例如,执行时间根据其输入值而改变的指令。
[0039] 重命名/分派/派送单元104接收微指令124/126并且判断其运算元相依性。重命名/分派/派送单元104亦分派重排序缓冲器114中的一释放通道给每一微指令134,并且将微指令134写入该分派通道的一微指令栏位204(如图2所示)。不幸的是,若重排序缓冲器114已满,即若重排序缓冲器114中没有闲置的通道,则因为没有地方可储存微指令124/126,故重命名/分派/派送单元104无法继续提供指令来执行,其对于执行单元108的使用可能有不好的影响。因此,本发明实施例的早期引退特色,可令重排序缓冲器114中的通道比一般使用情形被提前释放(如上文所述),从而明显的提高执行单元108的使用率。
[0040] 在一实施例中,保留站106为一队列,其将指令暂存在该队列的每一储存位置中。 [0041] 执行单元108包括用以执行微处理器100的微指令集中的每一微指令124/126的各个执行单元。举例来说,微处理器100可能具有用以执行整数与逻辑运算、浮点数运算、多媒体运算、数据载入运算、数据储存运算、分支指令解析以及其它函数的各个执行单元。 [0042] 重排序缓冲器114引退微指令124/126。特别的是,虽然微指令124/126可被执行单元108以乱序的方式(即,非以程序顺 序)执行,但重排序缓冲器114可对其进行确认,并使其得以在序的方式(即,以程序顺序)引退。重排序缓冲器114可暂存微指令以及与微指令相关的状态信息。重排序缓冲器114包括固定数目的通道,其中每一通道储存一微指令以及与微指令相关的状态。在一实施例中,重排序缓冲器114具有48个通道。然而,在其他实施例中,重排序缓冲器114可能具有较少或较多的通道。重排序缓冲器114亦包括控制逻辑,其用以执行与指令引退有关的不同功能,如本文所述,特别的是有关图3a至图5b的(A)阶段318、(B)阶段322与(C)阶段324所示。
[0043] 图2是显示本发明实施例的图1的重排序缓冲器114中的微指令通道的架构示意图。每一微指令通道包括一微指令栏位204、完成旗标206以及例外旗标208。重命名/分派/派送单元104分派重排序缓冲器114中的通道给每一微指令124/126,并接着将微指令124/126写入至微指令栏位204。当完成旗标206为真(true)时,其实际上表示微指令栏位204已完成执行且准备好自重排序缓冲器114引退以及表示将微指令204的结果更新至微处理器100的结构状态中是安全的。此对于非早期引退微指令124来说完全是合乎标准的,且对于早期引退微指令126来说实际上也是合乎标准的,关于这点将在后面详加描述。
当例外旗标208为真(true)时,表示微指令已产生一例外状况。
[0044] 再参考到图1,对应重排序缓冲器114的每一通道的是推测暂存器116中的推测暂存器148,其用以暂存对应执行微指令的结果。对于图1中的通道38来说,推测暂存器116中的推测暂存器148用以储存该结果。
[0045] 若重排序缓冲器114中具有一有效通道,则重命名/分派/派送单元104将微指令134写入重排序缓冲器114的该有效通道的微指令栏位204中。若重排序缓冲器114中不具有有效通道时, 则重命名/分派/派送单元104开始等待,直到重排序缓冲器114中的一通道变成有效。在图1中,该有效通道如总数48个通道中的通道38所示。然而,实际上该通道可以是重排序缓冲器114中的任何通道。在并行将微指令134写入重排序缓冲器114中的情况下,重命名/分派/派送单元104将微指令134传送给对应将执行微指令134的执行单元的保留站106中的保留站。微指令134可以是早期引退126或非早期引退类别的微指令。
[0046] 发布逻辑112耦接于保留站106、执行单元108与重排序缓冲器114,并且当微指令具有所有有效的来源运算元且执行单元可执行该微指令时,将保留站106的微指令传送给执行单元108。发布逻辑112亦对微指令的早期引退进行确认、以及与重排序缓冲器114沟通以完成其早期引退,后续的图示将针对这些内容进行讨论。
[0047] 微处理器100包括结构暂存器122,其可储存常数、地址以及其它做为微指令134的运算元的数据。由执行单元108而来的中介(Intermediate)结果则写入推测暂存器116中。发布逻辑112自结构暂存器122、推测暂存器116与自执行单元转送的数据中取得微指令运算元。
[0048] 对于非早期引退微指令124来说,执行单元产生一般标签(normal tag)136给重排序缓冲器114,其表示重排序缓冲器114中的通道会被执行单元108更新。执行单元108亦当非早期引退微指令124完成执行时,产生一般完成信号(normal completion signal)138与一般例外状态信号(normal exception status)142。如果例外状况与非早期引退微指令124相关,在执行单元108产生一般完成信号138与一般例外状态信号142的时脉周期中,重排序缓冲器114会设定完成旗标206,并且写入例外旗标208。 [0049] 对于早期引退微指令126来说,发布逻辑112产生早期标签 158给重排序缓冲器114,其表示重排序缓冲器114中的通道会被发布逻辑更新。发布逻辑112亦在早期引退微指令126完成执行时产生早期完成信号(early completion signal)156与早期例外状态信号(early exception status)162。在发布逻辑112产生早期完成信号156与早期例外状态信号162的后续时脉周期中,由于早期引退微指令126无法引发例外状况,故重排序缓冲器114设定完成旗标206并且清除例外旗标208。
[0050] 结果144由执行单元108基于非早期引退微指令124与早期引退微指令126而产生。结果144写入至推测暂存器116并且提供给多工器118。多工器118根据结果选择168以在结果144与推测结果166两者之间进行选择。多工器118的输出为选择数据172,并且提供给结构暂存器122以更新微处理器100的结构状态。多工器118的操作以及非早期引退微指令124与早期引退微指令126的处理将根据剩余的图式详述于下文。 [0051] 图3a是显示本发明实施例的非早期引退微指令124的发布与执行阶段(issue and execute stage)以及引退阶段(retirement stage)的架构示意图。非早期引退微指令124的一般流程(即,正常流程)经由6个发布与执行阶段以及三个引退阶段来完成。在时脉周期0之前,重命名/分派/派送单元104将不同的微指令134传送至保留站106中的一保留站,其是发布逻辑112确认微指令为非早期引退微指令124之处。 [0052] 第一阶段为派送阶段(D)304,其执行于时脉周期0中。发布逻辑112自每一保留站106选择存在最久的准备微指令并且派送该微指令。
[0053] 第二阶段为队列阶段(Q)306,其执行于时脉周期1中。发布逻辑112取得非早期引退微指令124的指令数据。指令数据包括微指令124的标签,该标签用以确认微指令124在重排序缓冲器 114中的通道以及与该非早期引退微指令124相关的常数与确认符(identifier)。
[0054] 第三阶段为暂存器文件阶段(R)308,其执行于时脉周期2中。发布逻辑112利用队列阶段(Q)306中取得的标签,来取得非早期引退微指令124的来源运算元。上述运算元可自结构暂存器122、推测暂存器116或转送自执行单元108的相同或不同执行单元取得。 [0055] 第四阶段为发布阶段(I)312,其执行于时脉周期3中。在发布阶段(I)312中,发布逻辑112将非早期引退微指令124以及所提取的运算元与数据传送至执行单元108。 [0056] 第五阶段为执行阶段(E)314,其执行于时脉周期4中。在执行阶段(E)314中,执行单元108执行非早期引退微指令124以产生非早期引退微指令124的结果。虽然为了容易理解,执行阶段314仅以单一时脉的持续期间来显示,但实作上可以显示为多个时脉。执行最快的微指令仅需单一时脉,但执行其它微指令则需要多个时脉。要执行有些较高复杂度的微指令还要多达10个时脉。因此,对于需要大于1个时脉的执行阶段(E)314来说,后续阶段将会根据执行时间而延迟一定数目的时脉。
[0057] 第六阶段为写回阶段(W)316,其执行于时脉周期5中。在写回阶段(W)316中,执行单元108将非早期引退微指令124的执行结果写回推测暂存器116中。执行单元108亦产生一般标签136、一般完成信号138以及一般例外状态信号142给重排序缓冲器114。一般标签136用来确认一般完成信号138以及一般例外状态信号142会被写回至重排序缓冲器114中的通道中。
[0058] 第七阶段为更新ROB阶段(A)318,其执行于时脉周期6中。重排序缓冲器114将执行单元108在写回阶段(W)316中产生的一般完成信号138与一般例外状态信号142写回对应一般标签 136的重排序缓冲器114的通道中。当在时脉周期6接收到一般完成信号138时,重排序缓冲器114设定重排序缓冲器114中的完成旗标206,以表示重排序缓冲器
114的通道38中的微指令已准备好引退。一般例外状态信号142储存在重排序缓冲器114的例外旗标208中,以表示非早期引退微指令124是否产生例外状态。
[0059] 第八阶段为找出存在最久通道阶段(B)322,其执行于时脉周期7中。在找寻存在最久通道阶段(B)322中,重排序缓冲器114窥探(snoop)重排序缓冲器114中的存在最久的微指令,若有的话,则判断有多少个微指令在后续时脉周期中被引退。可能被同时引退的最大数量的微指令,视微处理器100的设定而定,但在一实施例中,可同时被引退的微指令的最大数量为3个。只有在设定完成旗标206且清除例外旗标208时,微指令才会被引退。所有微指令必须依序被引退。因此,若存在最久的微指令尚未准备好被引退之时,则没有其它微指令会在它之前被引退。
[0060] 第九阶段为引退阶段(C)324,其执行于时脉周期8中。在引退阶段(C)324中,重排序缓冲器114释放所有正被引退的微指令的通道,并且将微指令的各自的推测暂存器116中的结果写至适当的结构暂存器122。重排序缓冲器114产生结果选择168给多工器
118以选择推测结果166。多工器118接着输出选择数据172至结构暂存器122。此时,微指令已被引退,且执行的结果已被写入至结构暂存器122。虽然引退阶段A 318、B 322与C
324用管线阶段来描述,但在一实施例中,它们可以是重排序缓冲器114的控制逻辑中的状态机,在连续时脉周期期间所执行的操作。
[0061] 图3b是显示本发明实施例的早期引退微指令126的发布与执行阶段以及引退阶段的架构示意图。早期引退微指令126的早期流程(即,早期引退流程),经由6个发布与执行阶段以及与图3a中的非早期引退微指令124相同的三个引退阶段来完成。然 而,早期引退微指令126的特色允许发布与执行阶段与某些引退阶段同时发生,故可以并行方式执行的。发布与执行阶段在图3b中对早期引退微指令126所执行的操作,与图3a中对非早期引退微指令124所执行的操作相同,除了下述不同点以外。
[0062] 第一个不同点为在图3b中,引退阶段A 318、B 322与C 324在时脉周期3、4、5期间分别执行其操作,而非在图3a中的阶段6、7、8中。图3b是描述早期引退微指令126为一单一时脉周期的执行指令,即早期引退微指令126在E阶段314中仅需要单一时脉周期来执行。然而,对于在E阶段314中需要多个时脉周期来执行的早期引退微指令126来说,引退阶段A 318、B 322与C324执行其操作的时脉周期,会根据额外时脉周期的数量及时移出。因此,举例来说,在需要3个时脉周期来执行的早期引退微指令126的范例中,引退阶段A 318、B 322与C 324在时脉周期5、6、7的期间分别执行其操作,而在需要3个时脉周期来执行的非早期引退微指令124的范例中,引退阶段A 318、B 322与C 324在时脉周期8、9、10的期间分别执行其操作。因此,不管一个指令需要多少数量的时脉周期来执行,本发明实施例的早期引退的特色,令早期引退微指令126可能会比需要相同数量的时脉周期来执行的非早期引退微指令124早引退,其中在一实施例中提早3个时脉周期。 [0063] 第二个不同点为在大多数的早期引退微指令126(其仅需要执行阶段(E)314中的单一时脉)的范例中,暂存器文件阶段(R)308另外产生早期完成信号156、早期标签158以及早期例外状态信号162等信号。暂存器文件阶段(R)308为最早期阶段(earliest stage),其中发布逻辑112根据早期引退微指令126用来执行的时脉周期数目而产生早期完成信号156。发布逻辑112持续搜寻需要用来执行每一早期引退微指令126的时脉周期数 目,且若早期引退微指令126需要一个以上的时脉来执行时,发布逻辑112依据执行早期引退微指令126所需的时脉周期数目,以延迟其产生早期完成信号156、早期标签158以及早期例外状态信号162的阶段。因此,举例来说,对于需要3个时脉来执行的早期引退微指令126来说,发布逻辑112会在执行阶段(E)314的第1个时脉才产生早期完成信号156、早期标签158以及早期例外状态信号162,并非如仅需单一时脉周期即可执行引退的微指令126一般,在暂存器文件阶段(R)308中就产生。
[0064] 第三个不同点是在写回阶段(W)316中,由于发布逻辑112先前产生了早期引退微指令126的早期完成信号156、早期标签158、以及早期例外状态信号162(如上文所述,起始于暂存器文件阶段(R)308(在使用单一时脉执行指令的范例中)或后续阶段(在使用多个时脉执行指令的范例中)),故执行单元108不产生早期引退微指令126的一般标签136、一般完成信号138以及一般例外状态信号142给重排序缓冲器114。
[0065] 第四个不同点为更新ROB阶段(A)318根据早期引退微指令126的早期完成信号156、早期标签158以及早期例外状态信号162来更新完成旗标206与例外旗标208,而不像非早期引退微指令124,依据一般标签136、一般完成信号138以及一般例外状态信号142做更新。
[0066] 第五个不同点为引退阶段(C)324直接将经由多工器118而来且自执行单元108所取得的结果144写入结构暂存器122,而非如写入非早期引退微指令124一般,写入由推测暂存器116所取得的结果。
[0067] 图4a是显示本发明实施例的三个非早期引退微指令124序列的表格示意图。三个非早期引退微指令124分别标示为m1、m2、m3,图中亦显示用来执行每一指令所需的时脉周期数目(亦 即图3a与图3b的执行阶段(E)314中的指令的时脉周期数目),即微指令m1仅需要1个执行周期,微指令m2需要3个执行周期,微指令m3需要2个执行周期。 [0068] 图4b是显示本发明实施例图4a所述的非早期引退微指令124,在图3a各阶段下的序列进展时序图。图4b描述时脉周期1-11。在图4b的范例中,图1所示的执行单元108包括标示为EU#1 314与EU#2 314的各个执行单元。图4a中的微指令m1与m3为非早期引退微指令124的其中一类型,其由执行单元EU#1314来执行,而图4a中的微指令m2亦为非早期引退微指令124的其中一类型,其由执行单元EU#2314来执行。虽然可在微处理器100于时脉周期1-11的不同阶段中,启动比图4a中所示的三个微指令更多微指令来执行,但在本发明实施例仅显示微指令m1-m3做说明。
[0069] 在时脉周期1中,由于每个时脉周期中只能派送一个微指令至一个执行单元,故派送阶段(D)304将选择微指令m1以分派至执行单元EU#1314,并且选择微指令m2以分派至执行单元EU#2314。
[0070] 在时脉周期2中,微指令m1与m2被送至队列阶段(Q)306,其中发布逻辑112取得两个微指令的指令数据。此外,派送阶段(D)304选择微指令m3以分派至执行单元EU#1314。
[0071] 在时脉周期3中,微指令m1与m2被送至暂存器文件阶段(R)308,其中发布逻辑112取得非早期引退微指令124的来源运算元。此外,m3被送至队列阶段(Q)306。 [0072] 在时脉周期4中,微指令m 1与m2被送至发布阶段(I)312,其中发布逻辑112将微指令m1与m2、伴随所提取的指令数据与运算元传送至其各自的执行单元108。此外,微指令m3被送至暂存器文件阶段(R)308。
[0073] 在时脉周期5中,微指令m1开始执行于执行单元EU#1 314中,而微指令m2开始执行于执行单元EU#2 314中。此外,微指令m3被送至发布阶段(I)312。如图4a所示,微指令m1仅需要单一时脉即可执行,微指令m2需要3个时脉来执行,而微指令m3需要2个时脉来执行。
[0074] 在时脉周期6中,微指令m1已完成执行并且进入写回阶段(W)316。在写回阶段(W)316中,执行单元EU#1 314产生微指令m1的一般标签136、一般完成信号138以及一般例外状态信号142给重排序缓冲器114,如图4b所示。执行单元EU#1 314亦产生结果144。此外,微指令m2继续在执行单元EU#2 314中执行3个时脉中的第2个时脉,而微指令m3开始在目前已可使用的执行单元EU#1 314执行。
[0075] 在时脉周期7中,微指令m1进入更新ROB阶段(A)318,并于重排序缓冲器114中,依据一般标签136所指定并分派给微指令m1的通道更新完成旗标206与例外旗标208。此外,微指令m2进入执行单元EU#2 314中执行3个时脉中的第3个时脉,而微指令m3进入执行单元EU#1 314中执行2个时脉中的第2个时脉。
[0076] 在时脉周期8中,在找寻存在最久通道阶段(B)322中,重排序缓冲器114检查其中的存在最久微指令(包括m1)以判断找到的指令是否准备好引退。此外,微指令m2与m3二者都进入写回阶段(W)316,且执行单元EU#1与EU#2 314产生对应微指令m3与m2的各个的一般标签136、一般完成信号138以及一般例外状态信号142给重排序缓冲器114,如图4b所示。执行单元EU#1与EU#2 314亦产生对应微指令m3与m2的各个结果144。 [0077] 在时脉周期9中,微指令m1在引退阶段(C)324被重排序缓冲器114引退。也就是重排序缓冲器114内的控制逻辑将产生结果选择168的值,使得多工器118可将微指令m1的结果,从推测 暂存器116写入至结构暂存器122中,而重排序缓冲器114中先前配置给微指令m1的通道将被释放,使得重命名/分派/派送单元104可将重排序缓冲器114中的该通道分派给另一新的微指令。微指令m2与m3二者进入更新ROB阶段(A)318,其中重排序缓冲器114更新微指令m2与m3的各个旗标206/208,如上文所述。
[0078] 在时脉周期10中,在找寻存在最久通道阶段(B)322里,重排序缓冲器114检查其中的存在最久微指令,以判断微指令m2与m3是否准备好引退。
[0079] 在时脉周期11中,微指令m2与m3在引退阶段(C)324被重排序缓冲器114引退,使得重命名/分派/派送单元104可将重排序缓冲器114中的该对应通道分派给二个新的微指令。
[0080] 图5a是显示本发明实施例的九个早期引退微指令126序列的表格示意图。九个早期引退微指令126标示为m1至m9,图中亦显示用来执行每一指令所需的时脉周期数目,即微指令m1与m4至m9仅需要1个执行周期,微指令m2需要3个执行周期,微指令m3需要2个执行周期。
[0081] 图5b是显示本发明实施例中,根据图3b所示的阶段,来呈现图5a的早期引退微指令126的序列进展时序图。如图5b所示,其描述了时脉周期1-11。图5a中的微指令m1、m3、m5、m7、m9为早期引退微指令126中,由执行单元EU#1 314所执行的类型,而图5a中的微指令m2、m4、m6、m8为早期引退微指令126中,由执行单元EU#2 314所执行的类型。 [0082] 在时脉周期1中,由于每个时脉周期中只能派送一个微指令至一个执行单元(per individual execution unit per clock cycle)的方式进行派送,故派送阶段(D)304选择微指令m1以分派至执行单元EU#1 314,并且选择微指令m2以分派至执行单元EU#2314。 [0083] 在时脉周期2中,微指令m1与m2被送至队列阶段(Q)306。此外,派送阶段(D)304则选择微指令m3以分派至执行单元EU#1314。
[0084] 在时脉周期3中,微指令m1与m2被送至暂存器文件阶段(R)308。值得注意的是,发布逻辑112产生微指令m1的早期完成信号156、早期标签158以及早期例外状态信号162给重排序缓冲器114,如图5b所示,其比图4b所示执行单元108产生非早期引退微指令124的一般标签136、一般完成信号138以及一般例外状态信号142要早3个时脉周期。此外,微指令m3被送至队列阶段(Q)306。虽然微指令m2亦在暂存器文件阶段(R)308中,由于微指令m2需要3个时脉周期来执行,故发布逻辑112在产生微指令m2的早期完成信号156、早期标签158以及早期例外状态信号162之前,必须等待2个以上的时脉周期。 [0085] 在时脉周期4中,微指令m1与m2被送至发布阶段(I)312。此外,微指令m3被送至暂存器文件阶段(R)308。虽然微指令m3在暂存器文件阶段(R)308中,由于微指令m3需要2个时脉周期来执行,故发布逻辑112在产生微指令m3的早期完成信号156、早期标签158以及早期例外状态信号162之前,必须等待1个以上的时脉周期。新的微指令m4与m5进入派送阶段(D)304。
[0086] 在时脉周期5中,微指令m1开始在执行单元EU#1 314中执行而微指令m2开始在执行单元EU#2 314中执行。此外,微指令m3被送至发布阶段(I)312。发布逻辑112产生微指令m2与m3的早期完成信号156、早期标签158以及早期例外状态信号162至重排序缓冲器114中。微指令m3所延迟的1个时脉与微指令m2所延迟的2个时脉,分别注明在上述的时脉周期3、4中。此外,微指令m1被送至阶段(B)322,微指令m4与m5被送至队列阶段(Q)306,以及新的微指令m6与m7进入派送阶段(D)304。
[0087] 在时脉周期6中,微指令m1已完成执行并且进入写回阶段(W)316。在写回阶段(W)316中,执行单元EU#1 314产生微指令m1的结果144给推测暂存器116。同时,重排序缓冲器114亦在引退阶段(C)324引退微指令m1。也就是重排序缓冲器114内的逻辑产生结果选择168的值,使得多工器118将自执行单元108而来的微指令m1的结果144写入至结构暂存器122。此外,微指令m2继续在执行单元EU#2 314中执行3个时脉中的第2个时脉,而微指令m3开始在目前已可使用的执行单元EU#1 314执行。由于发布逻辑112在时脉周期5产生微指令m2与m3的早期完成信号156、早期标签158以及早期例外状态信号162给重排序缓冲器114,故微指令m2与m3二者都进入更新ROB阶段(A)318。此外,微指令m4与m5被送至暂存器文件阶段(R)308。发布逻辑112产生微指令m4与m5的早期完成信号156、早期标签158以及早期例外状态信号162给重排序缓冲器114,如图5b所示。此外,微指令m6与m7被送至队列阶段(Q)306,而新的微指令m8与m9进入派送阶段(D)304。 [0088] 在时脉周期7中,微指令m2在执行单元EU#2 314中执行3个时脉中的第3个时脉,而微指令m3在执行单元EU#1 314中执行2个时脉中的第2个时脉。微指令m2与m3亦进入阶段(B)322。此外,微指令m4与m5进入发布阶段(I)312,同时进入更新ROB阶段(A)318。此外,微指令m6与m7进入暂存器文件阶段(R)308。发布逻辑112产生微指令m6与m7的早期完成信号156、早期标签158以及早期例外状态信号162给重排序缓冲器114。
此外,微指令m8与m9被送至队列阶段(Q)306。
[0089] 在时脉周期8中,微指令m2与m3进入写回阶段(W)316,且执行单元EU#2 314与EU#1 314分别产生微指令m2与m3的结果144。此外,重排序缓冲器114引退微指令m2与m3,并且将微指 令m2与m3各自在执行单元108中的结果144写入结构暂存器122,而分别由EU#2与EU#1所执行的m4与m5则同时进入阶段(B)322。此外,微指令m6与m7进入发布阶段(I)312与更新ROB阶段(A)318。此外,微指令m8与m9进入暂存器文件阶段(R)308,以及发布逻辑112产生微指令m8与m9的早期完成信号156、早期标签158以及早期例外状态信号162给重排序缓冲器114。
[0090] 在时脉周期9中,微指令m4与m5进入写回阶段(W)316,且执行单元EU#2 314与EU#1 314分别产生微指令m4与m5的结果144。此外,重排序缓冲器114引退微指令m4与m5,并且将微指令m4与m5分别在执行单元108中的结果144写入结构暂存器122。此外,微指令m6与m7分别由执行单元EU#2 314与EU#1314执行,且微指令m6与m7进入阶段(B)322。此外,微指令m8与m9进入发布阶段(I)312与更新ROB阶段(A)318。 [0091] 在时脉周期10中,微指令m6与m7进入写回阶段(W)316,且执行单元EU#2 314与EU#1 314分别产生微指令m6与m7的结果144。此外,重排序缓冲器114引退微指令m6与m7,并且将微指令m6与m7分别在执行单元108中的结果144写入结构暂存器122。此外,微指令m8与m9分别由执行单元EU#2 314与EU#1314执行,且微指令m8与m9进入阶段(B)322。
[0092] 在时脉周期11中,微指令m8与m9进入写回阶段(W)316,且执行单元EU#2 314与EU#1 314分别产生微指令m8与m9的结果144。此外,微指令m8与m9进入引退阶段(C)324,其中重排序缓冲器114引退微指令m8与m9,并且将微指令m8与m9各自在执行单元108中的结果144写入结构暂存器122。
[0093] 比较图4b与图5b,可发现在引退微指令方面有很大的好处。在时脉周期6与11之间的6个时脉周期的执行期间,与仅引退3个非早期引退微指令124(如图4b所示)相比,微处理器100可 引退9个早期引退微指令126(如图5b所示)。重排序缓冲器114中已被引退的微指令所增加的数目,使得更多微指令可被分派至重排序缓冲器114,其允许更多微指令可被看到而进行排程以发布出去被执行,且因此明显的将执行单元108的使用性最大化。
[0094] 图6是显示本发明实施例的图1中微处理器100操作的步骤流程图。流程起始于步骤604。
[0095] 在步骤604中,发布逻辑112读取保留站106的微指令,其为了判断该微指令为早期引退微指令126或非早期引退微指令124,接着执行步骤606。
[0096] 在步骤606中,发布逻辑112判断微指令是否为早期引退微指令126。若微指令为非早期引退微指令124,则接着执行步骤608。若微指令为早期引退微指令126,则接着执行步骤628与648。
[0097] 在步骤608中,发布逻辑112判断微指令为非早期引退微指令124,并且自结构暂存器122、推测暂存器116或转送自执行单元108的数据取得非早期引退微指令124的运算元数据,接着执行步骤612。
[0098] 在步骤612中,发布逻辑112发布非早期引退微指令124至执行单元108中的其中一执行单元,接着执行步骤614。
[0099] 在步骤614中,执行单元108中被指定执行单元将执行非早期引退微指令124。执行单元执行非早期引退微指令124所需的时脉周期数量,会依据微指令的类别而有所不同。当许多微指令执行于1-3时脉周期时,某些算术指令可要求更多时脉周期来执行,接着执行步骤616。
[0100] 在步骤616中,非早期引退微指令124已完成执行。执行单元108将结果144写入推测暂存器116,并且将一般标签136、一 般完成信号138以及一般例外状态信号142写入重排序缓冲器114,接着执行步骤618。
[0101] 在步骤618中,重排序缓冲器114分别根据在步骤616所产生的一般完成信号138以及一般例外状态信号142的值,将完成旗标206与例外旗标208更新至一般标签136指定的通道,接着执行步骤622。
[0102] 在步骤622中,重排序缓冲器114检查其中的存在最久微指令以判断是否有任何指令准备好引退。重排序缓冲器114检查存在最久微指令的完成旗标206与例外旗标208。在实施例中,将分析存在最久的三个微指令。若设定完成旗标206且清除例外旗标208,则微指令已准备好被引退。只有当所有存在较久的微指令在相同时脉周期被引退时,才可引退重排序缓冲器114中的较新的微指令。若重排序缓冲器114中存在最久的微指令尚未准备引退,则重排序缓冲器114必须等待引退该微指令,直到该微指令准备好被引退,如完成旗标206所示,接着执行步骤624。
[0103] 在步骤624中,通过产生结果选择168给多工器118,以将推测结果166传送给选择数据172,于是重排序缓冲器114便可将推测暂存器116中的推测结果166写入结构暂存器122。重排序缓冲器114亦利用宣告无效(invalidate)的方式,来释放重排序缓冲器114中正被引退的微指令的通道,故重排序缓冲器114中被宣告无效的通道可由重命名/分派/派送单元104分派给新的微指令。然而,若例外旗标208表示非早期引退微指令124已产生例外状况,则微处理器100反而要处理该例外状况,然后结束本流程。 [0104] 在步骤628中,发布逻辑112判断微指令为早期引退微指令126,并且自结构暂存器122、推测暂存器116或转送自执行单元108的数据取得早期引退微指令126的运算元数据,接着执行步骤632。
[0105] 在步骤632中,发布逻辑112发布早期引退微指令126至执行单元108,接着执行步骤634。
[0106] 在步骤634中,执行单元108执行早期引退微指令124,接着执行步骤636。 [0107] 在步骤636中,早期引退微指令126已完成执行。执行单元108将结果144写入推测暂存器116,然后结束本流程。
[0108] 步骤648、652、654、656可与步骤628、632、634、636以并行方式执行的。步骤间的时间相依视执行早期引退微指令126的时脉周期数目而定,如步骤648所述。 [0109] 在步骤648中,在执行单元输出早期引退微指令126的结果144的三个时脉周期前,发布逻辑112即输出早期完成信号156与早期标签158并且清除早期例外状态信号162。由于早期引退微指令126不会导致例外状况,故要清除早期例外状态信号162。发布逻辑112继续追踪每一早期引退微指令126需要多少时脉周期来执行,并且在该早期引退微指令126的整个执行期间,对已执行的周期总数进行维持与记录。延迟三个时脉周期可确保在完成执行早期引退微指令126后早期引退微指令126将准备好被引退。在其它实施例中,可能需要比图3a与图3b所需较多或更多的发布与执行阶段与/或引退阶段。因此,对其它实施例来说,在执行单元108输出早期引退微指令126的结果前,发布逻辑112产生多于或少于三个时脉周期的早期完成信号156、早期标签158以及早期例外状态信号162的值,接着执行步骤652。
[0110] 在步骤652中,重排序缓冲器114依据发布逻辑112所产生的早期完成信号156、早期标签158以及早期例外状态信号162来进行数据更新,接着执行步骤654。 [0111] 在步骤654中,重排序缓冲器114检查其中的存在最久微指令,以判断是否有任何指令准备好引退。由于早期引退微指令 126不会产生例外状况,故总是要清除早期引退微指令126的例外旗标208,接着执行步骤656。
[0112] 在步骤656中,重排序缓冲器114将执行单元108的结果144写入结构暂存器122,其通过产生结果选择168,以将执行单元108的结果144传送给选择数据172。重排序缓冲器114亦利用宣告无效(invalidate)的方式,来释放重排序缓冲器114中正被引退的微指令的通道,故重排序缓冲器114中被宣告无效的通道可由重命名/分派/派送单元104分派给新的微指令,本流程在步骤656结束。
[0113] 需注意到,为了增加乱序执行的微处理器的执行效能,增加微指令引退率是有效的。通过上文所述的早期引退微指令124,重排序缓冲器中的通道可在一般引退微指令执行之前即被释放,故可很快的将微指令分派到重排序缓冲器中可用的通道。如此一来,通过增加保留站中的微指令的数量、以及增加当执行单元可开始执行另一微指令时保留站中的微指令准备好执行的可能性,可增加预看能力与执行单元的使用性。
[0114] 本发明所揭露的实施例已如上文所述,但这些实施例仅做说明,并非做为本发明限缩之用。从事计算机相关工作且本领域技术人员,皆可在不脱离本发明精神之下,对本发明实施例进行修改或完成相关细节。例如,除了使用硬件(例如执行于中央处理器(CPU)、微控制器、数字信号处理器或其他硬件装置之中或通过与这些硬件耦合获得实施)之外,亦可使用软件(例如计算机可读取的编码(Code)、程序码或以任何形式所呈现的指令,例如原始码、目的码或机器码等)来实现或通过储存在计算机可使用(例如,读取)介质中的软件等方式来实施。而这些软件可用来启动本发明实施例装置或方法的功能(Function)、制造(Fabrication)、模型化(Modeling)、模拟(Simulation)、描述 (Description)及/或测试(Testing)等。例如,本发明可通过一般的程序语言编码(如C、C++)、硬件描述语言(Hardware Description Languages,HDL),包括Verilog HDL、VHDL等等或任何其它程序型态的程序语言来实现。相关软件程序则可以包含于实体介质,如半导体或磁性盘或光盘中。本发明实施例可包含一实施方法,其是提供微处理器一描述本发明实施例微处理器设计架构的软件来实施、而软件可通过一通讯网络(communication network,例如因特网(the Internet)或企业内部网络(intranet))传送包含该软件的计算机数据信号来达成。值得注意的是,本发明所述的装置与方法可以被包含在半导体知识产权核(semiconductor intellectual property core),诸如微处理器核心(microprocessor core,例如包含在HDL中)之中,其可以在集成电路制造过程中转换成硬件。此外,本发明所述的装置与方法亦可通过结合硬件与软件等方式来达成。是以,本发明将不受限于任何描述于本说明书中的实施例,而应以前述的申请专利范围以及其等效范围来定义。本发明可实施于所有一般用途计算机系统中的微处理器之中。
[0115] 以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
[0116] 附图中符号的简单说明如下:
[0117] 100:微处理器;104:重命名/分派/派送单元;106:保留站;108:执行单元;112:发布逻辑;114:重排序缓冲器;116:推测暂存器;118:多工器;122:结构暂存器;124:非早期引退微指令;126:早期引退微指令;134:微指令;136:一般标签;138:一般完成信号;142:一般例外状态信号;144:结果; 148:推测暂存器;156:早期完成信号;158:早期标签;162:早期例外状态信号;166:推测结果;168:结果选择;172:选择数据;204:微指令栏位;206:完成旗标栏位;208:例外旗标栏位;304:派送阶段(D);306:队列阶段(Q);
308:暂存器文件阶段(R);312:发布阶段(I);314:执行阶段(E);316:写回阶段(W);318:
更新ROB阶段(A);322:存在最久通道阶段(B);324:引退阶段(C);604、606、608、612、
614、616、618、622、624、628、632、634、636、648、652、654、656:流程步骤。