CN101151589A - 处理器及其指令发布方法 - Google Patents
处理器及其指令发布方法 Download PDFInfo
- Publication number
- CN101151589A CN101151589A CNA200680002231XA CN200680002231A CN101151589A CN 101151589 A CN101151589 A CN 101151589A CN A200680002231X A CNA200680002231X A CN A200680002231XA CN 200680002231 A CN200680002231 A CN 200680002231A CN 101151589 A CN101151589 A CN 101151589A
- Authority
- CN
- China
- Prior art keywords
- instruction
- operand
- cycle
- issue
- target operand
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 230000008569 process Effects 0.000 claims description 54
- 238000001514 detection method Methods 0.000 claims description 3
- 230000000875 corresponding effect Effects 0.000 description 44
- 230000015572 biosynthetic process Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003442 weekly effect Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
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, 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
-
- 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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, 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, 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
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)
Abstract
一种用于流水线处理器的指令发布方法,包括以下步骤:对要处理的指令进行解码,以得到指令类型;根据所述指令类型,为该指令计算要在执行级处占用的周期个数;根据所述周期个数,在指令进入写回级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,使得将所述目标操作数作为源操作数的后续指令根据所述目标操作数是可获取的这一情况来执行后续操作。
Description
技术领域
本发明涉及一种处理器,更具体地,涉及一种处理器所使用的指令发布方法及其相应的指令发布电路。
背景技术
随着电子技术的发展,如何进一步提高处理器的数据处理速度正成为计算机构造研究中的最热门的问题之一。
IPC(每周期提交的指令)的平均个数是评价处理器的数据处理速度的重要测度。普通的流水线标量处理器可以达到每周期一个指令的最大处理速度(即,IPC=1)。但是在大多数情况下,流水线标量处理器的IPC小于1。
现在应用流水线超标量处理器以提高处理器性能。在流水线超标量处理器中提供多个指令获取单元、多个指令解码单元、多个用于执行相应算法的功能单元和多个结果写入单元,在周期内,通过使用动态调度,可以逐流水线级地移动多个指令,所以流水线超标量处理器可以执行每周期多个指令(IPC>1)。
图1示意性地示出了在表示流水线的七个级的指令执行级中的指令n。七个指令级分别是IF(指令获取)级、ID(指令解码&重命名)级、IS(指令发布)级、RR(读取寄存器)级、EX(指令执行)级、WB(写回)级和RET(指令退出)级。
以下将以七级流水线作为示例,对超标量处理器的操作原理进行简要描述。
首先,多个指令获取单元在IF级从指令高速缓存器中同时获取多个指令;其次,相应的指令解码单元在ID级对多个解码指令分别进行解码和重命名,并将多个解码后的指令放入发布队列;然后,在IS级对多个解码后的指令执行确定过程(或发布逻辑确定过程),以确定是否可以发布所述发布队列中的每个解码后的指令以进入RR级。
为了提高流水线超标量处理器的IPC性能,应当同时发布尽可能多的队列中解码后的指令,从而在后续的EX级执行更多的指令。
影响是否可以发布解码后的指令的因素主要包括:执行解码后指令所需的源操作数是否就绪,以及功能单元(例如,浮点加法单元和乘/除单元)是否可用。与两个因素相对应,要在IS级执行的发布逻辑确定过程包括唤醒逻辑确定过程和选择逻辑确定过程。
1.唤醒逻辑确定过程
通常,将发布队列中要为同时执行而检测的一组指令集称为窗(或发布窗)。在流水线超标量处理器上,通过根据流水线上所执行的指令而生成的目标操作数来确定要在发布窗中检测的指令的源操作数。因此,当每个周期在数据总线上广播在流水线上EX级执行的指令结果(即,执行的指令的目标操作数)时,要在发布窗中检测的每个指令分别将自身的源操作数与广播的目标操作数进行比较,以判断广播的目标操作数是否是所需的源操作数。该比较确定过程是唤醒逻辑确定过程。
当要检测的指令所需的源操作数之一与广播的目标操作数相对应时,将指示要检测的指令的源操作数是否就绪的相应标签设置为“可获取”;当要检测的指令所需的所有源操作数就绪时,即,所有源操作数的标签是“可获取”的,则要检测的指令进入要发布状态。
在唤醒逻辑确定过程的执行期间,发布窗越大,要检测的指令个数就越多,以及进入要发布状态的指令的可能性就越高,这有利于增加发布队列中解码后指令的发布个数。然而,如果盲目地增加发布窗的大小,则用于广播目标操作数的数据总线长度需要相应地更长,因而导致了广播目标操作数所带来的等待时间的延长。此外,随着发布窗内要检测的指令个数的增加,要执行的比较操作的次数也增加,这进一步延长了用于执行唤醒逻辑确定过程的时间。因此,应当正确地设置发布窗的大小以增加指令发布个数。
2.选择逻辑确定过程
在唤醒逻辑确定过程之后进入要发布状态的每个指令在进入下一RR级之前需要选择逻辑确定过程。其原因在于:(1)进入要发布状态的指令个数可能大于处理器中的功能单元的个数;以及(2)可以仅通过功能单元的子集来执行一些指令,例如,如果在处理器中仅存在一个乘法器,则必须由该乘法器执行所有乘法运算。因此,如果通过选择逻辑确定过程,从要发布状态的指令中选择性地发布指令,则可以有效地避免在后续EX级处的资源冲突。
此外,仅在选择逻辑确定过程之后发布了已经进入要发布状态的指令之后,依据该指令的后续指令(例如,执行该后续指令所需的源操作数来自通过执行所发布的指令而生成的目标操作数)才能够启用它的唤醒逻辑确定过程。在流水线超标量处理器上,包括唤醒逻辑确定过程和选择逻辑确定过程的称为“临界循环(critical loop)”的方案可以有效地避免相关指令之间的数据冲突。
关于在IS级通过上述唤醒逻辑确定过程和选择逻辑确定过程同时发布的指令,它们在RR级处,从RR级寄存器文件中的相应物理寄存器中读取他们各自的源操作数,然后在选择逻辑确定过程期间选择的功能单元中,在以下的EX级处执行相应的功能操作,其中,不同的操作会需要不同的周期。例如,执行整数加法运算所需的周期通常比执行浮点乘法运算所需的周期短。因此,同时从RR级移动至EX级的指令可以经历不同的周期来得到在EX级处生成的指令操作的结果。
在相应的EX级处获得操作结果之后,每个执行指令在WB级处,分别将操作结果(即,目标操作数)存储至寄存器文件中的相应物理寄存器中,并在上述数据总线上广播目标操作数,用于流水线上发布窗中IS级处的后续指令,以执行唤醒逻辑确定过程。
在WB级之后,所执行的指令将在RET级处最终终止流水线上的所有操作过程。
从以上描述中可以容易地看出,很明显,通过增加发布窗中要检测的解码后指令的个数是提高IPC的有效方式。但是如上所述,随着解码后指令个数的增加,执行唤醒逻辑确定过程的时间也明显增加,这无疑将会导致IPC性能的下降。
因此,有必要提出一种用于发布指令的新方法来解决该矛盾。这正是本发明的目的。
发明内容
本发明的目的之一是提供一种指令发布方法,利用所述方法,减小了执行唤醒逻辑确定过程的时间,从而提高了处理器的IPC性能。
根据本发明,提供了用于流水线处理器的指令发布方法,包括以下步骤:对要处理的指令进行解码,以得到指令类型;根据所述指令类型,为该指令计算在执行级处要占用的周期个数;根据所述周期个数,在指令进入写回级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,从而将目标操作数作为源操作数的后续指令根据目标操作数是可获取的这一情况来执行后续操作。
根据本发明,提供了一种用于流水线处理器的指令发布设备,所述设备包括:解码单元,用于对要处理的指令进行解码,以得到指令类型;计算单元,用于根据所述指令类型,为该指令计算在执行级处要占用的周期个数;控制单元,用于根据所述周期个数,在指令进入写回级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,从而将目标操作数作为源操作数的后续指令根据目标操作数是可获取的这一情况来执行后续操作。
根据本发明,提供了一种流水线处理器,包括:解码单元,用于对要处理的指令进行解码,以得到指令类型;计算单元,用于根据所述指令类型,为该指令计算在执行级处要占用的周期个数;控制单元,用于根据所述周期个数,在指令进入WB级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,从而将目标操作数作为源操作数的后续指令根据目标操作数是可获取的这一情况来执行后续操作;执行单元,用于执行指令的相应操作,以生成指令的目标操作数。
本发明的以上和其它目的、特征和其它优点将从结合附图的以下详细描述中变得更加显而易见。
附图说明
为了本发明优选实施例的详细描述,现在对附图做出参考,其中:
图1示意性地示出了流水线上执行级处的指令;
图2A示意性地示出了传统超标量处理器流水线上的多个指令;
图2B示意性地示出了查找表中与图2A的一些指令相对应的标签;
图3A示意性地示出了根据本发明实施例的超标量处理器流水线上的多个指令;
图3B示意性地示出了在发布启用表中与图3A的一些指令相对应的标签;以及
图4示出了根据本发明指令发布方法实施例的流程图。
贯穿附图,由相同的附图标记表示相同或相似的元件。
具体实施方式
对于本发明中所提出的指令发布方法,最初,根据解码后指令的操作类型来计算解码后的指令要在EX级处占用的周期个数;然后,在将解码后的指令发布给RR级时,对所占用的周期进行计数,以及在EX级的最后周期之前的周期内,允许仍在指令队列中的、依赖于该指令的后续指令进入要发布状态,而不是允许后续指令仅在进入WB级之后进入要发布状态。
为了更好地阐明在本发明中提出的指令发布方法,将以现有的微处理器MIPS R100(每秒可以执行上百万条指令)作为示例,结合图2A和图2B来描述超标量处理器中唤醒逻辑的执行过程。
图2A示意性地分别示出了10个周期内在流水线上的每一级处的指令n至n+7,其中,指令n+3所需的源操作数分别来自先前执行的指令n+1和n+2的目标操作数。
图2B示意性地示出了在处理器中设置的查找表中的标签组。其中,如果假设指令n、n+1、n+2和n+3的目标操作数分别存储于物理寄存器p、p+1、p+2和p+3中,则标签组分别用于指示指令n、n+1、n+2和n+3的目标操作数是否存储于相应的物理寄存器中。假设标签为0表示相应的目标操作数还没存储于相应的物理寄存器中(即,相应的目标操作数不可获取),相反地,标签为1表示相应的目标操作数已经存储于相应的物理寄存器中(即,相应的目标操作数可获取)。当以硬件实现时,查找表可以是(m×1)比特的多端口RAM(随机存取存储器),其中,m是寄存器文件中物理寄存器的个数。
通常,当将指令派送至发布队列时,在派送时间处,查找表中的相应标签全部处于“不可获取”状态。将保持该状态,直至当在WB级处将操作结果(目标操作数)写入寄存器文件中的相应物理寄存器中时,在指令通过EX级执行了相应操作之后,将该标签设为“可获取”。因此,根据上述超标量处理器的操作原理,基于标签的指示,当所有源操作数就绪时,需要操作数的后续指令进入要发布状态,并通过选择逻辑确定过程将所述指令发布给RR级。
如图2A和2B所示,在每个指令进入相应的WB级之前,相应的标签为0。当指令n、n+1和n+2分别进入第6、第7、第8周期中的WB级时,将相应的标签分别设为1。
通过是否将与指令所需的源操作数相对应的标签在查找表中标记为“可获取”,来确定是否允许指令发布,以及进一步地,通过先前所执行的相关指令是否已在WB级处将目标操作数写入目标寄存器,来确定源操作数是否“可获取”。因此,如图2B所示,指令n+3的源操作数分别来自指令n+1和n+2,以及可以通过唤醒逻辑确定过程来检测直至第8周期、以及在指令n+3进入要发布状态、并被允许通过选择逻辑确定过程进行发布之后获得所有源操作数。所以,指令n+3在第7和第8周期中必须保持在IS级处,在指令n+1生成目标操作数时在第7周期内、以及在指令n+2生成目标操作数时在第8周期内分别执行两个唤醒逻辑确定过程,以获得关于相应的源操作数在查找表中是“可获取”的信息。
但是根据通常用于超标量处理器中的旁路电路的设计原理,如果指令n+1和n=2均是可以在一个周期内执行的指令,则指令n+3可以在第7周期内进入RR级(即,允许在第6周期内发布IS级处的指令n+3)。具体地,当指令n+3在第7周期进入RR级时,由于指令n+1已经进入了WB级,所以指令n+3可以获得由指令n+1通过读取寄存器文件中相应物理寄存器的值而生成的目标操作数;尽管指令n+2仍在EX级处,但是指令n+3可以获得指令n+2通过旁路电路生成的目标操作数。因此,指令n+3可以在RR级处以这种方式获得所需的源操作数之后,在第8周期平滑地执行相应的操作,而无需等待直至第10周期进入EX级。
这里可以看出,如果在确定了可以在图2A和2B的情况下发布指令n+3时,IS级处只有指令n+3不再单独依赖于查找表中的标签指示,即,不再单独依赖于在WB级处由先前的相关指令写回的操作结果,则指令n+3一定可以较早地进入RR级,以及同时,指令n+1和n+2一定无障碍地允许指令n+3进入要发布状态,并甚至在还没有进入WB级的情况下,通过选择逻辑确定过程将指令n+3发布至RR级。
基于这点,本发明提供了一种新的指令发布方法。在这种方法中,建立发布启用表,该发布启用表能够适时地反映IS级处每个指令所需的信息;以及在IS级处的指令执行唤醒逻辑确定过程时,通过获取发布启用表来确定是否允许指令发布。与通过获取查找表的传统指令发布方法相比,本发明减小了执行唤醒逻辑操作的时间,因而降低了执行唤醒逻辑操作所带来的等待时间。
结合图3A和3B,以下将给出对于本发明所提出的指令发布方法的详细描述。
图3A示出了根据本发明的指令发布方法,在流水线上的每一级处的10个周期内的指令n至n+9,其中,指令n+3的源操作数也是分别来自先前执行的指令n+1和n+2的目标操作数。
图3B示出了在根据本发明的指令发布方法的处理器中最新设置的发布启用表中的标签组。也可以使用m×1比特的多端口RAM来实现该发布启用表,其中,m与寄存器文件中的物理寄存器个数相对应。
在图3B中示出的发布启用表中,每个标签的值并不用于指示是否已将相应的目标操作数写入相应的物理寄存器,而是指示先前发布给RR级的指令禁用了针对依据该指令的后续指令的限制,并允许后续指令进入要发布状态。通过将源操作数提供给后续指令的所有先前指令是否允许后续指令进入要发布状态,来确定后续指令是否可以进入要发布状态。以及通过进一步执行选择逻辑确定过程,来确定后续指令是否可以在进入要发布状态之后发布。此外,如果相应标签的指示为1,则表示指令允许相关后续指令进入要发布状态,即,在后续指令将先前发布指令的目标操作数用作源操作数时,如果在发布启用表中与目标操作数相对应的标签是1,则认为后续指令所需的源操作数在“可获取”状态下。
根据本发明的优选实施例,先前发布给RR级的指令应当尽可能早地在发布启用表中设置该指令的标签,以允许相关的后续指令进入要发布状态,因而提高了允许后续指令发布的可能性,并节省了不必要的唤醒逻辑操作。
在进行解码之后,指令可以精确地确定该指令需要多少个周期,以根据在解码后指令中示出的操作类型,在EX级处产生操作结果。例如,在普通处理器的功能单元中,通常仅需要一个周期来执行整数加法运算或减法运算,而对于浮点乘法或除法运算,通常需要多个周期。不同类型的处理器需要不同的周期个数来执行浮点乘法或除法运算,但是每个处理器在相对固定的周期个数内执行浮点乘法或除法运算。因此,先前发布给RR级的指令可以不早于EX级处的最后周期之前的周期,在发布启用表中设置相应的标签,这将在以下进行解释。
根据图3A和3B中示出的本发明的方法,由于仅需要一个周期来完成指令n的执行(即,在EX级处仅存在一个周期),所以指令n在该周期之前的周期(第4周期)内进入RR级时,可以将发布启用表中的相应标签设为1,从而IS级处的后续指令(依据指令n)可以在第4周期摆脱指令n的限制而进入要发布状态。如果每个相关的先前发布指令(向后续指令提供了源操作数)允许后续指令在第4周期进入要发布状态,以及执行后续指令的功能性单元通过选择逻辑确定过程是可用的,则可以在第4周期内发布后续指令。
类似地,指令n+1和n+2在第5和第6周期内在发布启用表中将它们相应的标签设为1。
如上所述,指令n+3依据指令n+1和n+2,即,指令n+3的源操作数分别来自指令n+1和n+2的目标操作数。在第6周期内,由于与指令n+1和n+2相对应的标签均为1,所以根据本发明的方法,尽管此时EX级处的指令n+1和RR级处的指令n+2还没有进入WB级,并且还没有将它们的目标操作数存储于寄存器文件中的相应物理寄存器中,指令n+1和n+2也不会妨碍指令n+3进入要发布状态。
如果允许通过选择逻辑确定过程,在第6周期将指令n+3发布给RR级,则指令n+3在第7周期进入RR级,指令n+1和n+2分别进入流水线上的WB级和EX级。此时,RR级处的指令n+3通过读取与指令n+1相对应的物理寄存器中的值来获得所需的源操作数,并获得通过旁路电路执行指令n+2的操作结果以得到另一源操作数,从而在第8周期使用两个源操作数,在功能性单元中平滑地执行相应操作。
与图2A相比,指令n+3分别提前2个周期进入RR级和EX级,这节省了在流水线上IS级处的指令n+3的气泡(bubble)、以及通过在气泡中执行唤醒逻辑操作而带来的等待时间和功耗。
另一方面,如果不允许指令n+3在第6周期内通过选择逻辑确定过程进入RR级,则指令n+3必须在第7周期内等待,因而第7周期成为气泡。在该气泡中,可以通过再次参照发布启用表中的相应标签来执行指令n+3的唤醒逻辑确定过程。可选地,可以通过参照以上传统的查找表来执行指令n+3的唤醒逻辑确定过程,以及在完成了唤醒逻辑操作之后,继续选择逻辑确定过程,以确定是否允许将指令n+3在第7周期内发布给RR级。
如果允许将指令n+3在第7周期内发布给RR级,则在第8周期内,指令n+1已经进入了RET级,以及指令n+2已经进入了WB级。此时,RR级处的指令n+3获得了读取与指令n+1和n+2相对应的物理寄存器中的值所需的两个源操作数,并在之后的第9周期内,使用这两个源操作数来执行功能性单元中的相应操作。
在以上的图3A中,示例性的指令n、n+1和n+3是可以在一个周期内执行的所有指令。所以,根据本发明,这些指令允许相关的后续指令在其相应的RR级中处于要发布状态。对于其执行需要多个周期的指令,使用以下方法,以适时地禁用针对后续指令进入要发布状态的指令限制。
参照图4,首先根据指令的操作类型,计算指令在EX级处完成相应操作需要的周期个数(步骤S10)。例如,EX级处的指令需要k个周期来得到目标操作数。
然后,针对指令设置计数器,并最初将计数器的值设置为k-1(步骤S20)。
当指令进入RR级时,检查计数器的值是否是0(步骤S30)。如果该值是0,则表示该指令是可以在一个周期内执行的指令,然后通过参照图3A和3B示出的操作过程以在发布启用表中设置与指令相对应的标签(步骤S60)。如果该值不是0,则在周期的结尾处自动地将计数器的值减1(步骤S40)。
当进入下一新周期时,检查计数器递减后的值是否是0(步骤S50)。如果计数器的值是0,则执行步骤S60,以在发布启用表中设置与指令相对应的标签;如果计数器的值不是0,则继续步骤S40以在周期的结尾处自动地将计数器的值减1。
对于超标量处理器,应当在一个周期内执行包括唤醒逻辑确定过程和选择逻辑确定过程的发布逻辑确定过程,从而避免不必要的气泡的插入。因此,尽管指令在第(k-1)周期在发布启用表中设置了相应的标签,即,允许相关后续指令进入要发布状态,以执行选择逻辑确定过程,但是该指令实际上禁用了针对后续指令的限制,以防止在第(k-2)周期内启用唤醒逻辑确定过程,即,在计数器减1时。因此,当第(k-1)周期到来时,后续指令执行唤醒逻辑确定过程,以根据发布启用表中的标签指示,来搜索与同后续指令相关的所有先前发布的指令相对应的标签,从而确定后续指令是否可以进入要发布状态来执行选择逻辑确定过程。
表1列出了需要不同的周期个数来完成的指令;根据基于操作类型而设置的计数器初始值,当将所述指令发布给RR级时,所述指令如何禁用针对后续指令的限制以防止在特定周期内启用唤醒逻辑确定过程;以及所述指令如何在相应周期内,在发布启用表中设置相应的标签。
表1:需要不同周期个数来完成的指令以及相应周期内的相关操作
执行指令所需的周期个数 | 在进入RR级时计数器的初始值 | 指令何时将禁用针对相关后续指令的限制以防止启用唤醒逻辑确定过程 | 何时在发布启用表中设置与指令相对应的标签 |
1 | 0 | IS级,当允许指令通过选择逻辑确定过程发布时 | RR级 |
2 | 1 | RR级 | EX级中的第一周期 |
3 | 2 | EX级中的第一周期 | EX级中的第二周期 |
... | ... | ... | ... |
K | k-1 | EX级中的第(k-2)周期 | EX级中的第(k-1)周期 |
在对本发明的以上优选实施例的描述中,在EX级中的第(k-1)周期内设置发布启用表中指令的标签,以允许相关的后续指令进入要发布状态。可选地,在本发明的另一实施例中,在EX级的第k周期内设置与发布启用表中指令相对应的标签,以允许相关的后续指令进入要发布状态。与在WB级处更新查找表中标签的现有处理器相比,即使在第k周期内更新发布启用表中的相应标签,仍可以有效地减小要在流水线上的IS级处检测的指令等待它的源操作数时所生成的可能气泡。
可以以软件、硬件或其组合来实现本发明的上述指令发布方法。
当以硬件实现时,在指令发布电路中,解码单元、用于存储发布启用表的存储器、用于读取发布启用表中标签值的读取单元、用于检测功能性单元在发布逻辑过程的执行中是否可用的检测单元、以及用于向RR级发布指令的发布单元均可以使用与现有微处理器中的所述单元相同或相似的单元。
本发明的指令发布电路所添加的是计算单元,用于计算根据解码后指令的操作类型来执行指令操作所需的周期个数;计数器(计数器的初始值和工作原理与上述指令发布方法中的相同);以及控制单元,用于在计数器值递减为0时在存储器内设置相应的寄存器值。因此,根据本发明的指令发布电路易于应用,无需对现有的超标量处理器做出重大修改。
在以上对所提出的指令发布方法的描述中提及了要由本发明的指令发布电路中的各种组件所执行的操作,因而在这里省略对它的描述。
本发明的优点
关于以上对于本发明的指令发布方法和指令发布电路的描述,可以容易地看出,以发布启用表来替换现有技术中的查找表。当确定是否允许发布队列中要检测的指令进入要发布状态时,不再依据所执行的指令是否进入了WB级,并将目标操作数写入物理寄存器中。先前发布的指令在进入WB级之前的相应周期内,在发布启用表中设置相应的标签,以禁用针对是否允许要检测的指令进入要发布状态的先前指令限制。与现有的超标量处理器相比,本发明减少了在流水线上的IS级处要检测的指令在等待它的源操作数时所生成的可能气泡,并且避免了通过在气泡中执行唤醒逻辑操作而带来的等待时间和功耗。
本发明的指令发布方法和指令发布电路适用于流水线超标量处理器中,并且也同样可应用于多线程处理器和嵌入式处理器中。
本领域技术人员将会理解,可以在不偏离由所附权利要求所限定的本发明的精神和范围内对本发明中所公开的方法和电路做出各种修改。
Claims (16)
1.一种用于流水线处理器的指令发布方法,包括以下步骤:
(a)对要处理的指令进行解码,以得到指令类型;
(b)根据所述指令类型,为该指令计算在执行级处要占用的周期个数;
(c)根据所述周期个数,在指令进入写回级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,使得将所述目标操作数作为其源操作数的后续指令根据所述目标操作数是可获取的这一情况来执行后续操作。
2.如权利要求1所述的指令发布方法,其中,所述预先定义的周期是生成所述目标操作数的周期的前一周期。
3.如权利要求1所述的指令发布方法,其中,所述预先定义的周期是生成所述目标操作数的周期。
4.如权利要求1至3之一所述的指令发布方法,其中,步骤(c)包括:使用发布启用表来标记指令的目标操作数是否在所述预先定义的周期内是可获取的。
5.如权利要求4所述的指令发布方法,还包括以下步骤:
检测在指令进入发布级时,作为指令的源操作数的相关目标操作数是否在发布启用表中是可获取的;
如果相关目标操作数是可获取的,则指令进入要发布状态以执行选择逻辑确定过程。
6.如权利要求5所述的指令发布方法,还包括以下步骤:
检测在指令进入RR级时是否将相关的目标操作数存储于寄存器文件中;
如果相关目标操作数还未存储于寄存器文件中,则通过旁路方法来获得指令的相应的目标操作数。
7.一种用于流水线处理器的指令发布设备,包括:
解码单元,用于对要处理的指令进行解码,以得到指令类型;
计算单元,用于根据所述指令类型,为该指令计算在执行级处要占用的周期个数;
控制单元,用于根据所述周期个数,在指令进入写回级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,使得所述目标操作数作为其源操作数的后续指令根据所述目标操作数是可获取的这一情况来执行后续操作。
8.如权利要求7所述的指令发布设备,其中,所述预先定义的周期是生成所述目标操作数的周期的前一周期。
9.如权利要求7所述的指令发布设备,其中,所述预先定义的周期是生成所述目标操作数的周期。
10.如权利要求7至9之一所述的指令发布设备,还包括:存储单元,用于存储发布启用表,在发布启用表中,每个指示符指示指令的目标操作数是否是可获取的。
11.如权利要求10所述的指令发布设备,还包括:
读取单元,用于读取在指令进入发布级时,作为指令的源操作数的相关目标操作数在发布启用表中是否是可获取的;
如果相关目标操作数是可获取的,则控制单元控制指令进入要发布状态,以执行选择逻辑确定过程。
12.一种流水线处理器,包括:
解码单元,用于对要处理的指令进行解码,以得到指令类型;
计算单元,用于根据所述指令类型,为该指令计算在执行级处要占用的周期个数;
控制单元,用于根据所述周期个数,在指令进入写回级之前,在预先定义的周期内将指令的目标操作数标记为可获取的,使得将所述目标操作数作为其源操作数的后续指令根据所述目标操作数是可获取的这一情况来执行后续操作。
执行单元,用于执行指令的相应操作,以生成指令的目标操作数。
13.如权利要求12所述的处理器,其中,所述预先定义的周期是生成所述目标操作数的周期的前一周期。
14.如权利要求12所述的处理器,其中,所述预先定义的周期是生成所述目标操作数的周期。
15.如权利要求12至14之一所述的处理器,还包括:
存储单元,用于存储发布启用表,在发布启用表中,每个指示符指示指令的目标操作数是否是可获取的。
16.如权利要求15所述的处理器,还包括:
读取单元,用于读取在指令进入发布级时,作为指令的源操作数的相关目标操作数在发布启用表中是否是可获取的;
如果相关目标操作数是可获取的,则控制单元控制指令进入要发布状态,以执行选择逻辑确定过程。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN20050005709.1 | 2005-01-13 | ||
CN200510005709 | 2005-01-13 | ||
CN200510005709.1 | 2005-01-13 | ||
PCT/IB2006/050082 WO2006075286A2 (en) | 2005-01-13 | 2006-01-10 | A processor and its instruction issue method |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101151589A true CN101151589A (zh) | 2008-03-26 |
CN100590592C CN100590592C (zh) | 2010-02-17 |
Family
ID=36587277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680002231A Expired - Fee Related CN100590592C (zh) | 2005-01-13 | 2006-01-10 | 处理器及其指令发布方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7934079B2 (zh) |
EP (1) | EP1839129A2 (zh) |
JP (1) | JP2008527559A (zh) |
CN (1) | CN100590592C (zh) |
WO (1) | WO2006075286A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530089A (zh) * | 2012-08-31 | 2014-01-22 | 威盛电子股份有限公司 | 微处理器及其操作方法 |
CN107347253A (zh) * | 2015-02-25 | 2017-11-14 | 米雷普里卡技术有限责任公司 | 用于专用处理器的硬件指令生成单元 |
CN111258657A (zh) * | 2020-01-23 | 2020-06-09 | 上海燧原智能科技有限公司 | 流水线控制方法及相关设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4996945B2 (ja) * | 2007-02-28 | 2012-08-08 | 公立大学法人広島市立大学 | データ処理装置、データ処理方法 |
US20140129805A1 (en) * | 2012-11-08 | 2014-05-08 | Nvidia Corporation | Execution pipeline power reduction |
WO2016028410A1 (en) * | 2014-07-14 | 2016-02-25 | Mill Computing, Inc. | Execution and scheduling of software pipelined loops |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0658631B2 (ja) * | 1983-12-19 | 1994-08-03 | 株式会社日立製作所 | デ−タ処理装置 |
US6393550B1 (en) * | 1993-12-30 | 2002-05-21 | Intel Corporation | Method and apparatus for pipeline streamlining where resources are immediate or certainly retired |
US6101597A (en) * | 1993-12-30 | 2000-08-08 | Intel Corporation | Method and apparatus for maximum throughput scheduling of dependent operations in a pipelined processor |
JP3113792B2 (ja) | 1995-04-27 | 2000-12-04 | 松下電器産業株式会社 | 最適化装置 |
US5884059A (en) * | 1996-01-26 | 1999-03-16 | Advanced Micro Devices, Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
US6108769A (en) | 1996-05-17 | 2000-08-22 | Advanced Micro Devices, Inc. | Dependency table for reducing dependency checking hardware |
US6119219A (en) * | 1998-04-30 | 2000-09-12 | International Business Machines Corporation | System serialization with early release of individual processor |
US6609193B1 (en) | 1999-12-30 | 2003-08-19 | Intel Corporation | Method and apparatus for multi-thread pipelined instruction decoder |
US6601162B1 (en) * | 2000-01-19 | 2003-07-29 | Kabushiki Kaisha Toshiba | Processor which executes pipeline processing having a plurality of stages and which has an operand bypass predicting function |
AU2001245511A1 (en) | 2000-03-10 | 2001-09-24 | Arc International Plc | Method and apparatus for enhancing the performance of a pipelined data processor |
US7007270B2 (en) * | 2001-03-05 | 2006-02-28 | Cadence Design Systems, Inc. | Statistically based estimate of embedded software execution time |
EP1462934A1 (en) | 2003-03-29 | 2004-09-29 | Deutsche Thomson-Brandt Gmbh | Method and apparatus for forwarding of results |
US7617385B2 (en) * | 2007-02-15 | 2009-11-10 | International Business Machines Corporation | Method and apparatus for measuring pipeline stalls in a microprocessor |
-
2006
- 2006-01-10 WO PCT/IB2006/050082 patent/WO2006075286A2/en active Application Filing
- 2006-01-10 US US11/813,991 patent/US7934079B2/en active Active
- 2006-01-10 EP EP06710652A patent/EP1839129A2/en not_active Withdrawn
- 2006-01-10 JP JP2007550896A patent/JP2008527559A/ja not_active Withdrawn
- 2006-01-10 CN CN200680002231A patent/CN100590592C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530089A (zh) * | 2012-08-31 | 2014-01-22 | 威盛电子股份有限公司 | 微处理器及其操作方法 |
CN103530089B (zh) * | 2012-08-31 | 2018-06-15 | 威盛电子股份有限公司 | 微处理器及其操作方法 |
CN107347253A (zh) * | 2015-02-25 | 2017-11-14 | 米雷普里卡技术有限责任公司 | 用于专用处理器的硬件指令生成单元 |
CN107347253B (zh) * | 2015-02-25 | 2021-07-06 | 米雷普里卡技术有限责任公司 | 用于专用处理器的硬件指令生成单元 |
CN111258657A (zh) * | 2020-01-23 | 2020-06-09 | 上海燧原智能科技有限公司 | 流水线控制方法及相关设备 |
CN111258657B (zh) * | 2020-01-23 | 2020-11-20 | 上海燧原智能科技有限公司 | 流水线控制方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
EP1839129A2 (en) | 2007-10-03 |
JP2008527559A (ja) | 2008-07-24 |
WO2006075286A3 (en) | 2006-11-16 |
US7934079B2 (en) | 2011-04-26 |
CN100590592C (zh) | 2010-02-17 |
US20080209174A1 (en) | 2008-08-28 |
WO2006075286A2 (en) | 2006-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101373427B (zh) | 程序执行控制装置 | |
US6728866B1 (en) | Partitioned issue queue and allocation strategy | |
CN101681259B (zh) | 用于使用局部条件码寄存器以加速管线处理器中的条件指令执行的系统和方法 | |
US7471574B2 (en) | Branch target buffer and method of use | |
US5611063A (en) | Method for executing speculative load instructions in high-performance processors | |
EP2467776B1 (en) | Methods and apparatus to predict non-execution of conditional non-branching instructions | |
CN100478871C (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
US20120079255A1 (en) | Indirect branch prediction based on branch target buffer hysteresis | |
US7975130B2 (en) | Method and system for early instruction text based operand store compare reject avoidance | |
JP3096427B2 (ja) | 複数ロード命令の実行方法、複数ストア命令の実行方法およびマイクロプロセッサ | |
US7107471B2 (en) | Method and apparatus for saving power in pipelined processors | |
US20010010073A1 (en) | Non-stalling circular counterflow pipeline processor with reorder buffer | |
CN100590592C (zh) | 处理器及其指令发布方法 | |
US20120260072A1 (en) | Register allocation in rotation based alias protection register | |
US10303481B2 (en) | Performance-aware instruction scheduling | |
CN104899181A (zh) | 用于处理向量操作数的数据处理装置和方法 | |
CN101371223B (zh) | 运算数的提早有条件选择 | |
US8117425B2 (en) | Multithread processor and method of synchronization operations among threads to be used in same | |
KR20010077997A (ko) | 단일 사이클 파이프라인 기능 정지를 발생하기 위한파이프라인 프로세서 시스템 및 방법 | |
US10275220B2 (en) | Arithmetic processing device and control method for arithmetic processing device | |
US5784606A (en) | Method and system in a superscalar data processing system for the efficient handling of exceptions | |
CN114661434A (zh) | 用于难以预测的分支的替代路径解码 | |
EP0762271A2 (en) | Early completion of floating-point operations during load/store multiple operations | |
CN109213529B (zh) | 流水线处理器调度指令的方法、装置及流水线处理器 | |
US6157995A (en) | Circuit and method for reducing data dependencies between instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100217 Termination date: 20160110 |