处理器及其指令发布方法转让专利

申请号 : CN200680002231.X

文献号 : CN100590592C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱霞

申请人 : NXP股份有限公司

摘要 :

一种用于流水线处理器的指令发布方法,包括以下步骤:对要处理的指令进行解码,以得到指令类型;根据所述指令类型,为该指令计算要在执行级处占用的周期个数;根据所述周期个数,在指令进入写回级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,使得将所述目标操作数作为源操作数的后续指令根据所述目标操作数是可获取的这一情况来执行后续操作。

权利要求 :

1、一种用于流水线处理器的指令发布方法,包括以下步骤: (a)对要处理的指令进行解码,以得到指令类型; (b)根据所述指令类型,为该指令计算在执行级处要占用的周期个数; (c)根据所述周期个数,在指令进入写回级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,使得将所述目标操作数作为其源操作数的后续指令根据所述目标操作数是可获取的这一情况来执行后续操作; 其中,步骤(c)包括:使用发布启用表来标记指令的目标操作数是否在所述预先定义的周期内是可获取的。

2、 如权利要求1所述的指令发布方法,其中,所述预先定义的 周期是生成所述目标操作数的周期的前一周期。

3、 如权利要求1所述的指令发布方法,其中,所述预先定义的 周期是生成所述目标操作数的周期。

4、 如权利要求1所述的指令发布方法,还包括以下步骤:检测在指令进入发布级时,作为指令的源操作数的相关目标操作数是否在发布启用表中是可获取的;如果相关目标操作数是可获取的,则指令进入要发布状态以执行 选择逻辑确定过程。

5、 如权利要求4所述的指令发布方法,还包括以下步骤-检测在指令进入RR级时是否将相关的目标操作数存储于寄存器文件中;如果相关目标操作数还未存储于寄存器文件中,则通过旁路方法 来获得指令的相应的目标操作数。

6、 一种用于流水线处理器的指令发布设备,包括: 解码单元,用于对要处理的指令进行解码,以得到指令类型;计算单元,用于根据所述指令类型,为该指令计算在执行级处要占用的周期个数;控制单元,用于根据所述周期个数,在指令进入写回级之前,在 预先定义的周期内将指令的目标操作数标记为可获取的,使得所述目 标操作数作为其源操作数的后续指令根据所述目标操作数是可获取 的这一情况来执行后续操作;所述指令发布设备还包括:存储单元,用于存储发布启用表,在 发布启用表中,每个指示符指示指令的目标操作数是否是可获取的。

7、 如权利要求6所述的指令发布设备,其中,所述预先定义的 周期是生成所述目标操作数的周期的前一周期。

8、 如权利要求6所述的指令发布设备,其中,所述预先定义的 周期是生成所述目标操作数的周期。

9、 如权利要求6所述的指令发布设备,还包括:读取单元,用于读取在指令进入发布级时,作为指令的源操作数 的相关目标操作数在发布启用表中是否是可获取的;如果相关目标操作数是可获取的,则控制单元控制指令进入要发 布状态,以执行选择逻辑确定过程。

10、 一种流水线处理器,包括:解码单元,用于对要处理的指令进行解码,以得到指令类型; 计算单元,用于根据所述指令类型,为该指令计算在执行级处要占用的周期个数;控制单元,用于根据所述周期个数,在指令进入写回级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,使得将所述目标操作数作为其源操作数的后续指令根据所述目标操作数是可获取的这一情况来执行后续操作;执行单元,用于执行指令的相应操作,以生成指令的目标操作数; 所述处理器还包括:存储单元,用于存储发布启用表,在发布启用表中,每个指示符指示指令的目标操作数是否是可获取的。

11、 如权利要求IO所述的处理器,其中,所述预先定义的周期 是生成所述目标操作数的周期的前一周期。

12、 如权利要求10所述的处理器,其中,所述预先定义的周期 是生成所述目标操作数的周期。

13、如权利要求IO所述的处理器,还包括:读取单元,用于读取在指令进入发布级时,作为指令的源操作数 的相关目标操作数在发布启用表中是否是可获取的;如果相关目标操作数是可获取的,则控制单元控制指令进入要 发布状态,以执行选择逻辑确定过程。

说明书 :

处理器及其指令发布方法

技术领域

本发明涉及一种处理器,更具体地,涉及一种处理器所使用的指 令发布方法及其相应的指令发布电路。

背景技术

随着电子技术的发展,如何进一步提高处理器的数据处理速度正 成为计算机构造研究中的最热门的问题之一。
IPC (每周期提交的指令)的平均个数是评价处理器的数据处理
速度的重要测度。普通的流水线标量处理器可以达到每周期一个指令
的最大处理速度(即,IPC=1)。但是在大多数情况下,流水线标量处 理器的IPC小于1。
现在应用流水线超标量处理器以提高处理器性能。在流水线超标 量处理器中提供多个指令获取单元、多个指令解码单元、多个用于执 行相应算法的功能单元和多个结果写入单元,在周期内,通过使用动 态调度,可以逐流水线级地移动多个指令,所以流水线超标量处理器
可以执行每周期多个指令(IPOl)。
图1示意性地示出了在表示流水线的七个级的指令执行级中的指
令n。七个指令级分别是IF (指令获取)级、ID (指令解码&重命名) 级、IS (指令发布)级、RR (读取寄存器)级、EX (指令执行)级、 WB (写回)级和RET (指令退出)级。
以下将以七级流水线作为示例,对超标量处理器的操作原理进行 简要描述。
首先,多个指令获取单元在IF级从指令高速缓存器中同时获取多 个指令;其次,相应的指令解码单元在ID级对多个解码指令分别进 行解码和重命名,并将多个解码后的指令放入发布队列;然后,在IS级对多个解码后的指令执行确定过程(或发布逻辑确定过程),以确定 是否可以发布所述发布队列中的每个解码后的指令以进入RR级。
为了提高流水线超标量处理器的IPC性能,应当同时发布尽可能 多的队列中解码后的指令,从而在后续的EX级执行更多的指令。
影响是否可以发布解码后的指令的因素主要包括:执行解码后指 令所需的源操作数是否就绪,以及功能单元(例如,浮点加法单元和 乘/除单元)是否可用。与两个因素相对应,要在IS级执行的发布逻 辑确定过程包括唤醒逻辑确定过程和选择逻辑确定过程。
1. 唤醒逻辑确定过程
通常,将发布队列中要为同时执行而检测的一组指令集称为窗 (或发布窗)。在流水线超标量处理器上,通过根据流水线上所执行的 指令而生成的目标操作数来确定要在发布窗中检测的指令的源操作 数。因此,当每个周期在数据总线上广播在流水线上EX级执行的指 令结果(即,执行的指令的目标操作数)时,要在发布窗中检测的每 个指令分别将自身的源操作数与广播的目标操作数进行比较,以判断 广播的目标操作数是否是所需的源操作数。该比较确定过程是唤醒逻 辑确定过程。
当要检测的指令所需的源操作数之一与广播的目标操作数相对 应时,将指示要检测的指令的源操作数是否就绪的相应标签设置为"可 获取";当要检测的指令所需的所有源操作数就绪时,即,所有源操作 数的标签是"可获取"的,则要检测的指令进入要发布状态。
在唤醒逻辑确定过程的执行期间,发布窗越大,要检测的指令个 数就越多,以及进入要发布状态的指令的可能性就越高,这有利于增 加发布队列中解码后指令的发布个数。然而,如果盲目地增加发布窗 的大小,则用于广播目标操作数的数据总线长度需要相应地更长,因 而导致了广播目标操作数所带来的等待时间的延长。此外,随着发布 窗内要检测的指令个数的增加,要执行的比较操作的次数也增加,这 进一步延长了用于执行唤醒逻辑确定过程的时间。因此,应当正确地 设置发布窗的大小以增加指令发布个数。
2. 选择逻辑确定过程
6在唤醒逻辑确定过程之后进入要发布状态的每个指令在进入下一 RR级之前需要选择逻辑确定过程。其原因在于:(1)进入要发布
状态的指令个数可能大于处理器中的功能单元的个数;以及(2)可以
仅通过功能单元的子集来执行一些指令,例如,如果在处理器中仅存在一个乘法器,则必须由该乘法器执行所有乘法运算。因此,如果通过选择逻辑确定过程,从要发布状态的指令中选择性地发布指令,则
可以有效地避免在后续EX级处的资源冲突。
此外,仅在选择逻辑确定过程之后发布了己经进入要发布状态的指令之后,依据该指令的后续指令(例如,执行该后续指令所需的源操作数来自通过执行所发布的指令而生成的目标操作数)才能够启用它的唤醒逻辑确定过程。在流水线超标量处理器上,包括唤醒逻辑确定过程和选择逻辑确定过程的称为"临界循环(critical loop)"的方案可以有效地避免相关指令之间的数据冲突。
关于在IS级通过上述唤醒逻辑确定过程和选择逻辑确定过程同时发布的指令,它们在RR级处,从RR级寄存器文件中的相应物理寄存器中读取他们各自的源操作数,然后在选择逻辑确定过程期间选择的功能单元中,在以下的EX级处执行相应的功能操作,其中,不同的操作会需要不同的周期。例如,执行整数加法运算所需的周期通常比执行浮点乘法运算所需的周期短。因此,同时从RR级移动至EX级的指令可以经历不同的周期来得到在EX级处生成的指令操作的结果。
在相应的EX级处获得操作结果之后,每个执行指令在WB级处,分别将操作结果(即,目标操作数)存储至寄存器文件中的相应物理寄存器中,并在上述数据总线上广播目标操作数,用于流水线上发布窗中IS级处的后续指令,以执行唤醒逻辑确定过程。
在WB级之后,所执行的指令将在RET级处最终终止流水线上的所有操作过程。
从以上描述中可以容易地看出,很明显,通过增加发布窗中要检测的解码后指令的个数是提高IPC的有效方式。但是如上所述,随着解码后指令个数的增加,执行唤醒逻辑确定过程的时间也明显增加,
7这无疑将会导致IPC性能的下降。
因此,有必要提出一种用于发布指令的新方法来解决该矛盾。这正是本发明的目的。

发明内容

本发明的目的之一是提供一种指令发布方法,利用所述方法,减小了执行唤醒逻辑确定过程的时间,从而提高了处理器的IPC性能。
根据本发明,提供了用于流水线处理器的指令发布方法,包括以下步骤:对要处理的指令进行解码,以得到指令类型;根据所述指令类型,为该指令计算在执行级处要占用的周期个数;根据所述周期个数,在指令进入写回级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,从而将目标操作数作为源操作数的后续指令根据目标操作数是可获取的这一情况来执行后续操作。
根据本发明,提供了一种用于流水线处理器的指令发布设备,所述设备包括:解码单元,用于对要处理的指令进行解码,以得到指令
类型;计算单元,用于根据所述指令类型,为该指令计算在执行级处
要占用的周期个数;控制单元,用于根据所述周期个数,在指令进入写回级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,从而将目标操作数作为源操作数的后续指令根据目标操作数是可获取的这一情况来执行后续操作。
根据本发明,提供了一种流水线处理器,包括:解码单元,用于对要处理的指令进行解码,以得到指令类型;计算单元,用于根据所述指令类型,为该指令计算在执行级处要占用的周期个数;控制单元,用于根据所述周期个数,在指令进入WB级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,从而将目标操作数作为源操作数的后续指令根据目标操作数是可获取的这一情况来执行后续操作;执行单元,用于执行指令的相应操作,以生成指令的目标操作数。
本发明的以上和其它目的、特征和其它优点将从结合附图的以下详细描述中变得更加显而易见。附图说明
为了本发明优选实施例的详细描述,现在对附图做出参考,其中-
图1示意性地示出了流水线上执行级处的指令;
图2A示意性地示出了传统超标量处理器流水线上的多个指令;
图2B示意性地示出了査找表中与图2A的一些指令相对应的标
签;
图3A示意性地示出了根据本发明实施例的超标量处理器流水线上的多个指令;
图3B示意性地示出了在发布启用表中与图3A的一些指令相对应的标签;以及
图4示出了根据本发明指令发布方法实施例的流程图。贯穿附图,由相同的附图标记表示相同或相似的元件。

具体实施方式

对于本发明中所提出的指令发布方法,最初,根据解码后指令的操作类型来计算解码后的指令要在EX级处占用的周期个数;然后,在将解码后的指令发布给RR级时,对所占用的周期进行计数,以及在EX级的最后周期之前的周期内,允许仍在指令队列中的、依赖于该指令的后续指令进入要发布状态,而不是允许后续指令仅在进入WB级之后进入要发布状态。
为了更好地阐明在本发明中提出的指令发布方法,将以现有的微处理器MIPSR100 (每秒可以执行上百万条指令)作为示例,结合图2A和图2B来描述超标量处理器中唤醒逻辑的执行过程。
图2A示意性地分别示出了 10个周期内在流水线上的每一级处的指令n至n+7,其中,指令n+3所需的源操作数分别来自先前执行的指令n+l和n+2的目标操作数。
图2B示意性地示出了在处理器中设置的查找表中的标签组。其中,如果假设指令n、 n+l、 n+2和n+3的目标操作数分别存储于物理寄存器p、 p+l、 p+2和p+3中,则标签组分别用于指示指令n、 n+l、n+2和n+3的目标操作数是否存储于相应的物理寄存器中。假设标签
9为O表示相应的目标操作数还没存储于相应的物理寄存器中(即,相应的目标操作数不可获取),相反地,标签为1表示相应的目标操作数己经存储于相应的物理寄存器中(即,相应的目标操作数可获取)。当
以硬件实现时,査找表可以是(mXl)比特的多端口 RAM (随机存取存储器),其中,m是寄存器文件中物理寄存器的个数。
通常,当将指令派送至发布队列时,在派送时间处,査找表中的相应标签全部处于"不可获取"状态。将保持该状态,直至当在WB级处将操作结果(目标操作数)写入寄存器文件中的相应物理寄存器中时,在指令通过EX级执行了相应操作之后,将该标签设为"可获取"。因此,根据上述超标量处理器的操作原理,基于标签的指示,当所有源操作数就绪时,需要操作数的后续指令进入要发布状态,并通过选择逻辑确定过程将所述指令发布给RR级。
如图2A和2B所示,在每个指令进入相应的WB级之前,相应的标签为0。当指令n、 n+l和n+2分别进入第6、第7、第8周期中的WB级时,将相应的标签分别设为l。
通过是否将与指令所需的源操作数相对应的标签在査找表中标记为"可获取",来确定是否允许指令发布,以及进一步地,通过先前所执行的相关指令是否已在WB级处将目标操作数写入目标寄存器,来确定源操作数是否"可获取"。因此,如图2B所示,指令n+3的源操作数分别来自指令n+l和n+2,以及可以通过唤醒逻辑确定过程来检测直至第8周期、以及在指令n+3进入要发布状态、并被允许通过选择逻辑确定过程进行发布之后获得所有源操作数。所以,指令n+3在第7和第8周期中必须保持在IS级处,在指令n+l生成目标操作数时在第7周期内、以及在指令n+2生成目标操作数时在第8周期内分别执行两个唤醒逻辑确定过程,以获得关于相应的源操作数在査找表中是"可获取"的信息。
但是根据通常用于超标量处理器中的旁路电路的设计原理,如果指令n+l和n-2均是可以在一个周期内执行的指令,则指令n+3可以在第7周期内进入RR级(即,允许在第6周期内发布IS级处的指令n+3)。具体地,当指令n+3在第7周期进入RR级时,由于指令n+l已经进入了 WB级,所以指令n+3可以获得由指令n+l通过读取寄存 器文件中相应物理寄存器的值而生成的目标操作数;尽管指令n+2仍 在EX级处,但是指令n+3可以获得指令n+2通过旁路电路生成的目 标操作数。因此,指令n+3可以在RR级处以这种方式获得所需的源 操作数之后,在第8周期平滑地执行相应的操作,而无需等待直至第 IO周期进入EX级。
这里可以看出,如果在确定了可以在图2A和2B的情况下发布指 令n+3时,IS级处只有指令n+3不再单独依赖于查找表中的标签指示, 即,不再单独依赖于在WB级处由先前的相关指令写回的操作结果, 则指令n+3 —定可以较早地进入RR级,以及同时,指令n+l和n+2 一定无障碍地允许指令n+3进入要发布状态,并甚至在还没有进入 WB级的情况下,通过选择逻辑确定过程将指令n+3发布至RR级。
基于这点,本发明提供了一种新的指令发布方法。在这种方法中, 建立发布启用表,该发布启用表能够适时地反映IS级处每个指令所需 的信息;以及在IS级处的指令执行唤醒逻辑确定过程时,通过获取发 布启用表来确定是否允许指令发布。与通过获取查找表的传统指令发 布方法相比,本发明减小了执行唤醒逻辑操作的时间,因而降低了执 行唤醒逻辑操作所带来的等待时间。
结合图3A和3B,以下将给出对于本发明所提出的指令发布方法 的详细描述。
图3A示出了根据本发明的指令发布方法,在流水线上的每一级 处的10个周期内的指令n至n+9,其中,指令n+3的源操作数也是分 别来自先前执行的指令n+l和n+2的目标操作数。
图3B示出了在根据本发明的指令发布方法的处理器中最新设置 的发布启用表中的标签组。也可以使用mXl比特的多端口 RAM来 实现该发布启用表,其中,m与寄存器文件中的物理寄存器个数相对 应。
在图3B中示出的发布启用表中,每个标签的值并不用于指示是 否已将相应的目标操作数写入相应的物理寄存器,而是指示先前发布 给RR级的指令禁用了针对依据该指令的后续指令的限制,并允许后
ii续指令进入要发布状态。通过将源操作数提供给后续指令的所有先前 指令是否允许后续指令进入要发布状态,来确定后续指令是否可以进 入要发布状态。以及通过进一步执行选择逻辑确定过程,来确定后续 指令是否可以在进入要发布状态之后发布。此外,如果相应标签的指 示为1,则表示指令允许相关后续指令进入要发布状态,即,在后续 指令将先前发布指令的目标操作数用作源操作数时,如果在发布启用 表中与目标操作数相对应的标签是1,则认为后续指令所需的源操作 数在"可获取"状态下。
根据本发明的优选实施例,先前发布给RR级的指令应当尽可能
早地在发布启用表中设置该指令的标签,以允许相关的后续指令进入 要发布状态,因而提高了允许后续指令发布的可能性,并节省了不必 要的唤醒逻辑操作。
在进行解码之后,指令可以精确地确定该指令需要多少个周期, 以根据在解码后指令中示出的操作类型,在EX级处产生操作结果。 例如,在普通处理器的功能单元中,通常仅需要一个周期来执行整数 加法运算或减法运算,而对于浮点乘法或除法运算,通常需要多个周 期。不同类型的处理器需要不同的周期个数来执行浮点乘法或除法运 算,但是每个处理器在相对固定的周期个数内执行浮点乘法或除法运
算。因此,先前发布给RR级的指令可以不早于EX级处的最后周期 之前的周期,在发布启用表中设置相应的标签,这将在以下进行解释。
根据图3A和3B中示出的本发明的方法,由于仅需要一个周期来 完成指令n的执行(即,在EX级处仅存在一个周期),所以指令n在 该周期之前的周期(第4周期)内进入RR级时,可以将发布启用表 中的相应标签设为1,从而IS级处的后续指令(依据指令n)可以在 第4周期摆脱指令n的限制而进入要发布状态。如果每个相关的先前 发布指令(向后续指令提供了源操作数)允许后续指令在第4周期进 入要发布状态,以及执行后续指令的功能性单元通过选择逻辑确定过 程是可用的,则可以在第4周期内发布后续指令。
类似地,指令n+l和n+2在第5和第6周期内在发布启用表中将 它们相应的标签设为1。
12如上所述,指令n+3依据指令n+l和n+2,即,指令n+3的源操 作数分别来自指令n+l和n+2的目标操作数。在第6周期内,由于与 指令n+l和n+2相对应的标签均为1,所以根据本发明的方法,尽管 此时EX级处的指令n+l和RR级处的指令n+2还没有进入WB级, 并且还没有将它们的目标操作数存储于寄存器文件中的相应物理寄存 器中,指令n+l和n+2也不会妨碍指令n+3进入要发布状态。
如果允许通过选择逻辑确定过程,在第6周期将指令n+3发布给 RR级,则指令n+3在第7周期进入RR级,指令n+l和n+2分别进 入流水线上的WB级和EX级。此时,RR级处的指令n+3通过读取 与指令n+l相对应的物理寄存器中的值来获得所需的源操作数,并获 得通过旁路电路执行指令n+2的操作结果以得到另一源操作数,从而 在第8周期使用两个源操作数,在功能性单元中平滑地执行相应操作。
与图2A相比,指令n+3分别提前2个周期进入RR级和EX级, 这节省了在流水线上IS级处的指令n+3的气泡(bubbk)、以及通过 在气泡中执行唤醒逻辑操作而带来的等待时间和功耗。
另一方面,如果不允许指令n+3在第6周期内通过选择逻辑确定 过程进入RR级,则指令n+3必须在第7周期内等待,因而第7周期 成为气泡。在该气泡中,可以通过再次参照发布启用表中的相应标签 来执行指令n+3的唤醒逻辑确定过程。可选地,可以通过参照以上传 统的査找表来执行指令n+3的唤醒逻辑确定过程,以及在完成了唤醒 逻辑操作之后,继续选择逻辑确定过程,以确定是否允许将指令n+3 在第7周期内发布给RR级。
如果允许将指令n+3在第7周期内发布给RR级,则在第8周期 内,指令n+l已经进入了 RET级,以及指令n+2已经进入了 WB级。 此时,RR级处的指令n+3获得了读取与指令n+l和n+2相对应的物 理寄存器中的值所需的两个源操作数,并在之后的第9周期内,使用 这两个源操作数来执行功能性单元中的相应操作。
在以上的图3A中,示例性的指令n、 n+l和n+3是可以在一个周 期内执行的所有指令。所以,根据本发明,这些指令允许相关的后续 指令在其相应的RR级中处于要发布状态。对于其执行需要多个周期的指令,使用以下方法,以适时地禁用针对后续指令进入要发布状态 的指令限制。
参照图4,首先根据指令的操作类型,计算指令在EX级处完成 相应操作需要的周期个数(步骤SIO)。例如,EX级处的指令需要k 个周期来得到目标操作数。
然后,针对指令设置计数器,并最初将计数器的值设置为k-l (步 骤S20)。
当指令进入RR级时,检査计数器的值是否是O (步骤S30)。如 果该值是0,则表示该指令是可以在一个周期内执行的指令,然后通 过参照图3A和3B示出的操作过程以在发布启用表中设置与指令相对 应的标签(步骤S60)。如果该值不是O,则在周期的结尾处自动地将 计数器的值减l (步骤S40)。
当进入下一新周期时,检査计数器递减后的值是否是0 (步骤 S50)。如果计数器的值是0,则执行步骤S60,以在发布启用表中设 置与指令相对应的标签;如果计数器的值不是0,则继续步骤S40以 在周期的结尾处自动地将计数器的值减1。
对于超标量处理器,应当在一个周期内执行包括唤醒逻辑确定过 程和选择逻辑确定过程的发布逻辑确定过程,从而避免不必要的气泡 的插入。因此,尽管指令在第(k-l)周期在发布启用表中设置了相应 的标签,即,允许相关后续指令进入要发布状态,以执行选择逻辑确 定过程,但是该指令实际上禁用了针对后续指令的限制,以防止在第 (k-2)周期内启用唤醒逻辑确定过程,即,在计数器减l时。因此, 当第(k-l)周期到来时,后续指令执行唤醒逻辑确定过程,以根据发 布启用表中的标签指示,来搜索与同后续指令相关的所有先前发布的 指令相对应的标签,从而确定后续指令是否可以进入要发布状态来执 行选择逻辑确定过程。
表1列出了需要不同的周期个数来完成的指令;根据基于操作类 型而设置的计数器初始值,当将所述指令发布给RR级时,所述指令 如何禁用针对后续指令的限制以防止在特定周期内启用唤醒逻辑确定 过程;以及所述指令如何在相应周期内,在发布启用表中设置相应的
14标签。
表1:需要不同周期个数来完成的指令以及相应周期内的相关操作
table see original document page 15

在对本发明的以上优选实施例的描述中,在EX级中的第(k-l) 周期内设置发布启用表中指令的标签,以允许相关的后续指令进入要 发布状态。可选地,在本发明的另一实施例中,在EX级的第k周期 内设置与发布启用表中指令相对应的标签,以允许相关的后续指令进 入要发布状态。与在WB级处更新查找表中标签的现有处理器相比, 即使在第k周期内更新发布启用表中的相应标签,仍可以有效地减小 要在流水线上的IS级处检测的指令等待它的源操作数时所生成的可 能气泡。
可以以软件、硬件或其组合来实现本发明的上述指令发布方法。 当以硬件实现时,在指令发布电路中,解码单元、用于存储发布于读取发布启用表中标签值的读取单元、用于检 测功能性单元在发布逻辑过程的执行中是否可用的检测单元、以及用 于向RR级发布指令的发布单元均可以使用与现有微处理器中的所述 单元相同或相似的单元。
本发明的指令发布电路所添加的是计算单元,用于计算根据解码
后指令的操作类型来执行指令操作所需的周期个数;计数器(计数器 的初始值和工作原理与上述指令发布方法中的相同);以及控制单元, 用于在计数器值递减为0时在存储器内设置相应的寄存器值。因此, 根据本发明的指令发布电路易于应用,无需对现有的超标量处理器做 出重大修改。
在以上对所提出的指令发布方法的描述中提及了要由本发明的 指令发布电路中的各种组件所执行的操作,因而在这里省略对它的描 述。
本发明的优点
关于以上对于本发明的指令发布方法和指令发布电路的描述,可 以容易地看出,以发布启用表来替换现有技术中的查找表。当确定是 否允许发布队列中要检测的指令进入要发布状态时,不再依据所执行 的指令是否进入了WB级,并将目标操作数写入物理寄存器中。先前 发布的指令在进入WB级之前的相应周期内,在发布启用表中设置相 应的标签,以禁用针对是否允许要检测的指令进入要发布状态的先前 指令限制。与现有的超标量处理器相比,本发明减少了在流水线上的 IS级处要检测的指令在等待它的源操作数时所生成的可能气泡,并且 避免了通过在气泡中执行唤醒逻辑操作而带来的等待时间和功耗。
本发明的指令发布方法和指令发布电路适用于流水线超标量处 理器中,并且也同样可应用于多线程处理器和嵌入式处理器中。
本领域技术人员将会理解,可以在不偏离由所附权利要求所限定 的本发明的精神和范围内对本发明中所公开的方法和电路做出各种修 改。
16