CN101706714B - 指令发射系统及方法、处理器及其设计方法 - Google Patents
指令发射系统及方法、处理器及其设计方法 Download PDFInfo
- Publication number
- CN101706714B CN101706714B CN200910238045.1A CN200910238045A CN101706714B CN 101706714 B CN101706714 B CN 101706714B CN 200910238045 A CN200910238045 A CN 200910238045A CN 101706714 B CN101706714 B CN 101706714B
- Authority
- CN
- China
- Prior art keywords
- instruction
- operation queue
- class
- static scheduling
- dynamic dispatching
- 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
Links
Images
Abstract
本发明揭示了一种指令发射系统及方法,该系统包括指令分类模块、指令发射模块。指令分类模块将操作队列中的指令进行分类;将操作队列中只能静态调度、顺序执行的指令归为静态调度类指令,将操作队列中可动态调度、乱序执行的指令归为动态调度类指令;指令发射模块将操作数准备好的静态调度类指令、动态调度类指令分别按照静态调度、动态调度的方法从操作队列中发射。本发明指明了数据相关性不易判断的指令,针对这类指令,本发明通过静态调度该类指令,这种执行方法能够严格保证了程序执行的正确性,大大降低了微处理器设计的复杂度。而对于数据相关性好判断的指令,继续采用动态调度指令的方法来充分利用流水线,提高处理器性能。
Description
技术领域
本发明属于计算机技术领域,涉及一种指令发射系统,尤其涉及一种动态调度和静态调度相结合的指令发射系统及方法;此外,本发明还涉及包含上述指令发射系统的处理器及该处理器的设计方法。
背景技术
现代的微处理器通常采用流水线技术来提高微处理器的处理速度。流水线技术将指令执行的过程分成几个阶段,通过在各个不同阶段执行不同的指令,来实现指令的并行执行,从而提高处理器的性能。
如图1所示,根据处理器的具体结构可以将整条指令的执行分为几个阶段,通常将流水线分为5个阶段,分别为:(1)取指令阶段,从内存取到要执行的指令;(2)译码阶段,识别指令的操作码、源寄存器、目的寄存器等指令相关信息;(3)发射阶段,译码后的指令保存在操作队列中,从操作队列中选择不存在数据相关或者数据相关已经解决的指令发射到功能部件中;(4)执行、写回阶段,功能部件执行从操作队列发射到该部件的指令,并将执行结果送回到操作队列中;(5)提交阶段,指令进入操作队列的顺序和程序中的指令顺序是一致的,按照先进先出的原则,顺序提交操作队列中的指令。
流水线的每个阶段都是独立执行,指令按照流水线从A到E的顺序依次执行。如果指令之间不存在相关,不会堵塞流水线,且流水线的每个阶段只需要一个时钟周期就能够完成,那么在第5个时钟周期后第一条指令执行完。如果指令间不存在数据相关,当前指令执行所需要的源操作数不依赖于前面还没有执行完的指令,那么该指令就可以发射。理想情况下,在cycle6(第6个时钟周期)第二条指令执行完,在cycle7第三条指令执行完,每一个时钟周期即可执行完一条指令,如图3-1。如果指令间存数据在相关,如图3-2所示,指令2的源操作数依赖于指令1的运算结果,指令2必须等到指令1执行结束后才能够发射。指令2不能发射,则指令3等译码完的指令也都不能发射,这种情况就会造成流水线的某些阶段闲置,从而降低流水线效率,处理器的性能也会随之下降。针对这种情况就出现了流水线动态调度的方法,在指令发射阶段,后续不存在数据相关的指令可以先发射执行,如图3-3所示。指令3译码结束后,其源操作数与前面的指令1、指令2不存在数据相关,那么指令3可以先于指令2发射、执行,从而减少了流水线的空闲时间,提高了效率。在现代的通用处理器中,一般采用动态调度指令的方法来解决指令间相关造成的流水线堵塞的情况。
在流水线结构中,使用动态调度指令的方法,可以解决指令间的数据相关带来的流水线堵塞、流水线性能降低,从而处理器性能也降低的问题。但是在设计微处理器的结构,采用动态调度指令的流水线方法时,还有很多问题需要考虑,因为还存在很多数据相关性在指令发射阶段不能判断的情况,或者判断比较麻烦的指令。
发明内容
本发明所要解决的技术问题是:提供一种动态调度和静态调度相结合的指令发射系统,可降低微处理器设计的复杂度、提高处理器性能。
同时,本发明提供上述指令发射系统的发射方法。
另外,本发明还提供一种包含上述指令发射系统的处理器。
此外,本发明还提供上述处理器的设计方法。
为解决上述技术问题,本发明采用如下技术方案:
一种指令发射系统,指令在写入操作队列中时做出指令间相关性的判断,且指令间相关性的信息保存在操作队列中;该系统包括指令分类模块、指令发射模块。指令分类模块用以将操作队列中相关性已经判断好的指令进行分类;将操作队列中只能静态调度、顺序执行的指令归为静态调度类指令,将操作队列中可动态调度、乱序执行的指令归为动态调度类指令;指令发射模块用以将操作数准备好的静态调度类指令、动态调度类指令分别按照静态调度、动态调度的方法从操作队列中发射。
作为本发明的一种优选方案,所述指令分类模块包括第一判断逻辑电路、第二判断逻辑电路;第一判断逻辑电路用以根据操作队列中指令的操作码判断操作队列中的指令是否是静态调度类指令,所述静态调度类指令必须严格按照指令在程序中的先后顺序发射;第二判断逻辑电路用以根据操作队列中指令的操作码判断操作队列中的指令是否是动态调度类指令,所述动态调度类指令无需按照指令在程序中的先后顺序执行,可动态调度、乱序执行。
作为本发明的一种优选方案,采用顺序执行的方式执行访存类指令、读写特殊寄存器的指令;所述访存类指令包括读写内存的指令。
一种指令发射方法,指令在写入操作队列中时做出指令间相关性的判断,且指令间相关性的信息保存在操作队列中;该方法还包括如下步骤:
指令分类步骤,将操作队列中相关性已经判断好的指令进行分类;将操作队列中只能静态调度、顺序执行的指令归为静态调度类指令,将操作队列中可动态调度、乱序执行的指令归为动态调度类指令;
指令发射步骤,将操作数准备好的静态调度类指令、动态调度类指令分别按照静态调度、动态调度的方法从操作队列中发射。
作为本发明的一种优选方案,所述指令分类步骤包括:
通过第一判断逻辑电路根据操作队列中指令的操作码判断操作队列中的指令是否是静态调度类指令,所述静态调度类指令必须严格按照指令在程序中的先后顺序发射;
通过第二判断逻辑电路根据操作队列中指令的操作码判断操作队列中的指令是否是动态调度类指令,所述动态调度类指令无需按照指令在程序中的先后顺序执行,可动态调度、乱序执行。
一种处理器,该处理器包括指令发射系统,所述指令发射系统包括:
指令分类模块,指令在写入操作队列中时做出指令间相关性的判断,且指令间相关性的信息保存在操作队列中;该指令分类模块用以将操作队列中相关性已经判断好的指令进行分类;将操作队列中只能静态调度、顺序执行的指令归为静态调度类指令,将操作队列中可动态调度、乱序执行的指令归为动态调度类指令;
指令发射模块,用以将操作数准备好的静态调度类指令、动态调度类指令分别按照静态调度、动态调度的方法从操作队列中发射。
一种处理器设计方法,在设计处理器结构时,将操作队列中相关性难判断的指令归为静态调度、顺序执行的指令;将操作队列中相关性易判断的指令归为动态调度、乱序执行的指令。
本发明的有益效果在于:本发明提出的动态调度和静态调度相结合的指令发射系统及方法,指明了数据相关性不易判断或者说不易识别的指令,针对这类指令,本发明提出了静态调度该类指令的思想,这种执行方法能够严格保证了程序执行的正确性,大大降低了微处理器设计的复杂度。而对于数据相关性好判断的指令,继续采用动态调度指令的方法来充分利用流水线,提高处理器性能。
附图说明
图1为采用流水线技术执行指令的流程图。
图2为本发明指令发射方法的流程图。
图3-1为指令间不存在相关时采用流水线技术执行指令的流程图。
图3-2为指令2依赖于指令1时采用流水线技术执行指令的流程图。
图3-3为指令2依赖于指令1时采用流水线技术执行指令的流程图。
图4-1为针对读、写内存等访存类指令的动态调度示意图。
图4-2为针对于要读写HI-LO寄存器组指令的动态调度示意图。
图5-0至图5-10为本发明一实施例指令发射方法的过程示意图。
图6为本发明指令发射系统的组成示意图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
实施例一
本发明提出了一种动态调度和静态调度相结合的发射策略,不同处理器结构可以按照各自的要求将指令分为不同的类型。将相关性不容易判断或者无法判断的指令归为一类,该类型中的指令只能够静态调度,完全按照指令在源程序中的先后顺序发射,但是该类型指令又不影响其他允许动态调度的指令的发射。
请参阅图6,本发明揭示了一种指令发射系统,该系统包括指令分类模块10、指令发射模块20。
【指令分类模块】
指令在写入操作队列中时做出指令间相关性的判断,且指令间相关性的信息保存在操作队列中。指令分类模块10用以将操作队列中相关性已经判断好的指令进行分类;将操作队列中只能静态调度、顺序执行的指令归为静态调度类指令,将操作队列中可动态调度、乱序执行的指令归为动态调度类指令。静态调度类指令是指相关性不容易判断的指令,也就是说指令写入到操作队列时,被判断的是与其他指令不存在相关,但实际上是存在相关的。指令分类模块10可以在指令写入到操作队列中时就判断该指令是静态调度类指令还是动态调度类指令,也可以在指令写入到操作队列中后判断。
本实施例中,具体地,所述指令分类模块包括第一判断逻辑电路11、第二判断逻辑电路12;第一判断逻辑电路11用以根据操作队列中指令的相关信息(如指令的操作码)判断操作队列中的指令是否是静态调度类指令,所述静态调度类指令必须严格按照指令在程序中的先后顺序发射。第二判断逻辑电路12用以根据操作队列中指令的相关信息判断操作队列中的指令是否是动态调度类指令,所述动态调度类指令无需按照指令在程序中的先后顺序执行,可动态调度、乱序执行。
指令分类模块10判断指令为静态调度类指令或动态调度类指令的方法可以通过判断操作队列中各指令的相关性是否容易判断。
指令相关性能否判断,依赖于处理器结构的设计。通常所说的指令间存在相关是指,后面指令的源操作数寄存器是其前面指令的目的寄存器,也就是写后读相关,即后面指令的源操作数是前面指令执行的结果。前面指令没执行完,后面指令的源操作数就没准备好,所以后面指令就不能执行。这种相关一般就是通过比较后面指令的源寄存器于前面指令的寄存器是否相等来判断的,具体的实现方式是公知的技术,这里不做赘述,仅举一个简单的例子;比如:
指令2的源寄存器r1是指令1的指令结果,指令2与指令1间存在相关。指令3与指令1、指令2都不存在相关。
对于相关性不好判断的指令,绝对不能判断的相关不多,只是在设计处理器时,因为复杂度开销大等原因,不去实现相关性的判断,而是选择静态调度,顺序执行。
【指令发射模块】
指令发射模块20用以将操作数准备好的静态调度类指令、动态调度类指令分别按照静态调度、动态调度的方法从操作队列中发射。
以上介绍了本发明的指令发射系统,本发明在揭示上述指令发射系统的同时还揭示一种指令发射方法。请参阅图2,本发明指令发射方法包括如下步骤:
【指令分类步骤】
将操作队列中相关性已经判断好的指令进行分类;将操作队列中只能静态调度、顺序执行的指令归为静态调度类指令,将操作队列中可动态调度、乱序执行的指令归为动态调度类指令。
所述指令分类步骤包括:
通过第一判断逻辑电路根据操作队列中指令的相关信息判断操作队列中的指令是否是静态调度类指令,所述静态调度类指令必须严格按照指令在程序中的先后顺序发射;
通过第二判断逻辑电路根据操作队列中指令的相关信息判断操作队列中的指令是否是动态调度类指令,所述动态调度类指令无需按照指令在程序中的先后顺序执行,可动态调度、乱序执行。
【指令发射步骤】
将操作数准备好的静态调度类指令、动态调度类指令分别按照静态调度、动态调度的方法从操作队列中发射。
综上所述,本发明提出的动态调度和静态调度相结合的指令发射系统及方法,指明了数据相关性不易判断或者说不易识别的指令,针对这类指令,本发明提出了静态调度该类指令的思想,这种执行方法能够严格保证了程序执行的正确性,大大降低了微处理器设计的复杂度。而对于数据相关性好判断的指令,继续采用动态调度指令的方法来充分利用流水线,提高处理器性能。
实施例二
本实施例与实施例一的区别在于,本实施例中,指令分类模块通过一判断逻辑电路判断操作队列中各指令的相关性是否容易判断得出(或者能否通过该逻辑判断电路得出);若容易判断得出(或者能够判断得出),则将该指令归为动态调度类指令,否则将该指令归为静态调度类指令。由此可知,静态调度类指令是指相关性不容易判断的指令,也就是说指令写入到操作队列时,被判断的是与其他指令不存在相关,但实际上是存在相关的。
具体地,所述判断逻辑电路可判断操作队列中各指令的相关性是否容易(或者能够)通过该判断逻辑电路判断得出;若容易(或者能够)判断得出,则认为该指令为动态调度类指令,否则认为该指令为静态调度类指令。
当然,所述判断逻辑电路也可以判断指令的相关性是否能够通过其他模块判断得出;若判断得出,则认为该指令为动态调度类指令,否则认为该指令为静态调度类指令。
实施例三
本实施例中,指令发射系统包括指令分类模块、指令发射模块。指令分类模块用以将操作队列中相关性已经判断好的指令进行分类;将操作队列中相关性难判断的指令归为静态调度、顺序执行的指令;将操作队列中相关性易判断的指令归为动态调度、乱序执行的指令;指令发射模块用以将操作数准备好的静态调度类指令、动态调度类指令分别按照静态调度、动态调度的方法从操作队列中发射。
与上述指令发射系统对应的指令发射方法,将操作队列中相关性难判断的指令归为静态调度、顺序执行的指令;将操作队列中相关性易判断的指令归为动态调度、乱序执行的指令。
实施例四
本实施例揭示一种处理器设计方法,在设计处理器结构时,将操作队列中相关性难判断的指令归为静态调度、顺序执行的指令;将操作队列中相关性易判断的指令归为动态调度、乱序执行的指令。判断方法同实施例一至实施例三中所述的方法。
本实施例同时揭示一种处理器,该处理器包括本发明的指令发射系统,指令发射系统可以为实施例一至实施例三中的系统。
实施例五
本实施例揭示一种动态调度和静态调度相结合的指令发射系统,该系统包括两个判断逻辑电路,分别用来判断操作队列中的指令是否需要静态调度、操作队列中的指令是否可以动态调度。将操作队列中的指令进行分类,一类是只能静态调度、顺序执行的指令,一类是可以动态调度、乱序执行的指令。
静态调度类指令必须严格按照指令在程序中的先后顺序发射。静态调度类指令在操作队列中判断指令间的相关;相关性解决的指令,也就是操作数准备好的指令从操作队列中发射。静态调度类指令不影响动态调度类指令的动态调度、乱序执行。在设计处理器结构时,可以将操作队列中相关性易判断的指令归为动态调度、乱序执行的指令,减少流水线空闲周期。
动态调度的指令不需要按照指令在程序中的先后顺序执行,可以动态调度、乱序执行。动态调度的指令不受静态调度类指令的影响,可以动态调度、乱序执行。动态调度类指令在操作队列中判断指令间的相关,相关性解决的指令,也就是操作数准备好的指令从操作队列中发射。在设计处理器结构时,可以将操作队列中相关性难判断的指令归为静态调度、顺序执行的指令,减少处理器设计的复杂度。
实施例六
下面将具体指明数据相关性不好判断的指令,以及对该类指令的处理。本发明中所举的实例基于MIPS32指令集,对于基于其它类型指令集结构的微处理器,在碰到同类问题时,也可以通过这种动态调度和静态调度相结合的方法来提高流水线的利用率,降低处理器设计的复杂度。
在实现指令的动态调度时,数据相关性不好判断的情况包括以下两种情况,如图4-1、图4-2所示。
第一种情况是针对读、写内存等访存类指令,如图4-1所示。SW指令与MUL指令存在数据相关,SW指令要等到MUL指令执行完得到运算结果才能够从操作队列中发射。当SW指令因数据相关于MUL指令而不能够从操作队列中发射时,LW指令看似与SW指令不存在写后读相关,看似LW指令可以先于SW发射。如果SW指令写入的地址R3+4与LW指令读取的地址R4+4相等,则LW指令与SW指令存在写后读相关,而这种相关是在执行访存指令进行地址运算后才能够识别到,在发射阶段很难识别。如果不考虑这种发射时很难识别的数据相关而将指令动态发射出去,则在流水线的后续阶段需要更复杂的逻辑来保证访存操作的正确执行。在本发明中,为减少访存操作的复杂度,保证访存操作的正确执行,采用顺序执行读、写内存等访存类指令非方法,在从操作队列发射指令时,访存指令是顺序发射的。在设计处理器结构时,对于那些需要复杂逻辑来判断数据相关性的指令,都可以择静态调度的方法,保证指令能够正确执行。
第二种情况如图4-2所示,针对于要读、写特殊寄存器的指令,比如要读写HI-LO寄存器组的指令。在某些使用32位宽寄存器的处理器中,会将HI,LOW寄存器组看做是两个寄存器。对于MULT等指令,要将两个整数相乘的结果的高32位和低32位分别存放在HI-LOW寄存器中,但在操作队列中的dest域只能记录一个寄存器号。对于MFHI,MFLO等指令,其源寄存器使用HI、LOW等寄存器。如果MULT等指令存入到操作队列中时其dest域是HI寄存器号,那么MFLO等使用LOW寄存器做为源操作数的指令,与MULT等指令存在的数据相关,在操作队列判断指令间的数据相关性时,是无法识别的。针对这种情况,本发明将所有读写HI、LOW寄存器的指令作为同一类指令,在该类中的指令只能够静态调度,顺序发射,这样能够严格保证HI、LOW寄存器的读写顺序与源程序中读、写HI、LOW寄存器的顺序一致。该类中的指令只能静态调度顺序发射,但是该类中的指令不影响其他类型指令的动态调度、乱序发射。对于读、写HI、LOW寄存器的指令要特别注意的是,该类中的指令必须等到其前面的指令都已经提交了才能够被发射,这样能够严格保证HI、LOW寄存器的读写顺序,才能够严格保证程序执行的正确性。
本发明提出了一种动态调度和静态调度相结合的发射策略,不同处理器结构可以按照各自的要求将指令分为不同的类型。将些相关性不容易判断或者无法判断的指令归为一类,该类型中的指令只能够静态调度,完全按照指令在源程序中的先后顺序发射,但是该类型指令又不影响其他允许动态调度的指令的发射。
相关性不好判断的情况可能有很多,这与处理器结构的设计是相关。比如在本处理器设计时,所有相关性不好判断的指令都被归为只允许静态调度、顺序发射的指令。在本发明中列的两种情况不是本处理器设计时所有的静态调度的指令。在设计处理器时,可以根据不同的处理器结构设计需求,将那些如果使用动态调度、乱序发射需要很大开销的指令归为静态调度类指令,这些指令在本发明中并没有完全罗列,但本领域的技术人员可以根据本发明的介绍联想到,在此不多做赘述。
实施例七
下面通过实例说明该方法的具体操作,如图5-0至图5-10所示。
其中访存指令发射后,需要两个时钟周期才返回结果;加、减指令发射后,需要一个时钟周期才返回结果;乘法指令发射后,需要两个时钟周期才返回结果。下面通过详细描述每一拍所执行的操作来实例化本发明提出的动态调度和静态调度结合的方法。
操作队列的各个域包括:
Opcode:指令的操作码,表示该条指令所要执行的操作。
State:指令在操作队列中的状态。“00”表示操作队列空,允许接收新的指令;“01”表示该操作队列项有有效指令,但该指令还没有被发射到保留站中;“10”表示该该操作队列中有效指令已经发射到保留站中。
Src1:指令的源寄存器1。
Src2:指令的源寄存器2。
Dest:指令的目的寄存器。
Rdy1:指令的操作数1准备好,即操作数的值来自于读寄存器。
Rdy2:指令的操作数2准备好,即操作数的值来自于读寄存器。
Qid1:与指令操作数1相关的指令,所在操作队列项的号。
Qid2:与指令操作数2相关的指令,所在操作队列项的号。
Wb1:与指令操作数1相关的指令,结果已经写回。
Wb2:与指令操作数2相关的指令,结果已经写回。
Wb:指令执行完,结果已经写回。
在本实例中,使用的发射策略是从操作队列中选取操作数准备好的指令发射到保留站中。操作数准备好包含三个方面:一、该指令与前面的指令不存在数据相关,其操作数来自于读寄存器所得;二、该指令与前面的指令存在数据相关,但是相关的指令已经执行完且结果已经写回到操作队列,这样操作数的值来自于保存在操作队列中的指令结果;三、该指令与前面的指令存在数据相关,相关的指令的结果还没写回到操作队列中,但是已经执行完结果总线正在送回结果,这样操作数的值来自于侦听结果总线所得的有效值。
如图5-1所示,在Cycle1,SW指令写入到操作队列中,第0项的state置为“01”。
如图5-2所示,在Cycle2,LW指令写入到操作队列中,第1项的state置为“01”。SW指令的操作数准备好,从操作队列中发射,其state置为“10”。
如图5-3所示,在Cycle3,MULT指令写入到操作队列中,第2项的state置为“01”。LW指令的操作数准备好,且LW指令之前的访存指令已经发射,在此拍LW指令从操作队列中发射,其state置为“01”。
如图5-4所示,在Cycle4,MFLO指令写入到操作队列中,第3项的state置为“01”。SW指令的执行完,其Wb域置为“1”。
如图5-5所示,在Cycle5,ADD指令写入到操作队列中,第4项的MFLO指令必须等到MULT指令提交后才能够发射,所以其state一直置为“01”。SW指令提交,其Wb域置为“0”,其state域置为“00”。LW指令结果写回到操作队列中,其Wb域置为“1”。
如图5-6所示,在Cycle6,LW指令提交,其Wb域置为“0”,其state域置为“00”。MULT指令结果写回到操作队列中,其Wb域置为“1”。MFLO指令必须等到MULT指令提交之后才能够发射,所以其状态一直是“01”。ADD指令和操作队列中之前的指令不存在数据相关,而ADD指令不属于静态调度类指令且其操作数准备好,那么ADD指令在此拍发射。
如图5-7所示,在Cycle7,MULT指令提交,MFLO指令发射,ADD指令结果。
如图5-8所示,在Cycle8,MFLO指令结果写回。
如图5-9所示,在Cycle9,MFLO指令提交。
如图5-10所示,在Cycle10,ADD指令提交。
综上所述,本发明提出的动态调度和静态调度相结合的指令发射系统及方法,指明了数据相关性不易判断或者说不易识别的指令,针对这类指令,本发明提出了静态调度该类指令的思想,这种执行方法能够严格保证了程序执行的正确性,大大降低了微处理器设计的复杂度。而对于数据相关性好判断的指令,继续采用动态调度指令的方法来充分利用流水线,提高处理器性能。
这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。
Claims (4)
1.一种指令发射系统,其特征在于,指令在写入操作队列中时做出指令间相关性的判断,且指令间相关性的信息保存在操作队列中;该系统包括:
指令分类模块,用以将操作队列中相关性已经判断好的指令进行分类;将操作队列中只能静态调度、顺序执行的指令归为静态调度类指令,将操作队列中可动态调度、乱序执行的指令归为动态调度类指令;
指令发射模块,用以将操作数准备好的静态调度类指令、动态调度类指令分别按照静态调度、动态调度的方法从操作队列中发射;
所述指令分类模块包括:
第一判断逻辑电路,用以根据操作队列中指令的操作码判断操作队列中的指令是否是静态调度类指令,所述静态调度类指令必须严格按照指令在程序中的先后顺序发射;
第二判断逻辑电路,用以根据操作队列中指令的操作码判断操作队列中的指令是否是动态调度类指令,所述动态调度类指令无需按照指令在程序中的先后顺序执行,可动态调度、乱序执行。
2.根据权利要求1所述的指令发射系统,其特征在于:
采用顺序执行的方式执行访存类指令、读写特殊寄存器的指令;所述访存类指令包括读写内存的指令。
3.一种指令发射方法,其特征在于,指令在写入操作队列中时做出指令间相关性的判断,且指令间相关性的信息保存在操作队列中;该方法包括如下步骤:
指令分类步骤,将操作队列中相关性已经判断好的指令进行分类;将操作队列中只能静态调度、顺序执行的指令归为静态调度类指令,将操作队列中可动态调度、乱序执行的指令归为动态调度类指令;
指令发射步骤,将操作数准备好的静态调度类指令、动态调度类指令分别按照静态调度、动态调度的方法从操作队列中发射;
所述指令分类步骤包括:
通过第一判断逻辑电路根据操作队列中指令的操作码判断操作队列中的指令是否是静态调度类指令,所述静态调度类指令必须严格按照指令在程序中的先后顺序发射;
通过第二判断逻辑电路根据操作队列中指令的操作码判断操作队列中的指令是否是动态调度类指令,所述动态调度类指令无需按照指令在程序中的先后顺序执行,可动态调度、乱序执行。
4.一种处理器,其特征在于,该处理器包括指令发射系统,所述指令发射系统包括:
指令分类模块,指令在写入操作队列中时做出指令间相关性的判断,且指令间相关性的信息保存在操作队列中;该指令分类模块用以将操作队列中相关性已经判断好的指令进行分类;将操作队列中只能静态调度、顺序执行的指令归为静态调度类指令,将操作队列中可动态调度、乱序执行的指令归为动态调度类指令;
指令发射模块,用以将操作数准备好的静态调度类指令、动态调度类指令分别按照静态调度、动态调度的方法从操作队列中发射;
所述指令分类模块包括:
第一判断逻辑电路,用以根据操作队列中指令的操作码判断操作队列中的指令是否是静态调度类指令,所述静态调度类指令必须严格按照指令在程序中的先后顺序发射;
第二判断逻辑电路,用以根据操作队列中指令的操作码判断操作队列中的指令是否是动态调度类指令,所述动态调度类指令无需按照指令在程序中的先后顺序执行,可动态调度、乱序执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910238045.1A CN101706714B (zh) | 2009-11-23 | 2009-11-23 | 指令发射系统及方法、处理器及其设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910238045.1A CN101706714B (zh) | 2009-11-23 | 2009-11-23 | 指令发射系统及方法、处理器及其设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101706714A CN101706714A (zh) | 2010-05-12 |
CN101706714B true CN101706714B (zh) | 2014-03-26 |
Family
ID=42376940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910238045.1A Active CN101706714B (zh) | 2009-11-23 | 2009-11-23 | 指令发射系统及方法、处理器及其设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101706714B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10310860B2 (en) | 2016-07-29 | 2019-06-04 | International Business Machines Corporation | Starting and stopping instruction dispatch to execution unit queues in a multi-pipeline processor |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662629B (zh) * | 2012-04-20 | 2015-09-30 | 西安电子科技大学 | 一种减少处理器寄存器文件的写端口数目的方法 |
CN104714780A (zh) * | 2013-12-16 | 2015-06-17 | 深圳市国微电子有限公司 | 一种超标量流水线保留站处理指令的方法及装置 |
US9665372B2 (en) * | 2014-05-12 | 2017-05-30 | International Business Machines Corporation | Parallel slice processor with dynamic instruction stream mapping |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
US10635487B2 (en) * | 2017-09-29 | 2020-04-28 | Oracle International Corporation | Systems and methods defining thread specifications |
CN111936968A (zh) * | 2018-04-21 | 2020-11-13 | 华为技术有限公司 | 一种指令执行方法及装置 |
CN111538534B (zh) * | 2020-04-07 | 2023-08-08 | 江南大学 | 一种基于指令凋零的多指令乱序发射方法及处理器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1136181A (zh) * | 1995-01-25 | 1996-11-20 | 国际商业机器公司 | 微处理机中的分布式执行控制 |
CN1176426A (zh) * | 1996-05-15 | 1998-03-18 | 摩托罗拉公司 | 在数据处理系统中对计算机指令执行排序的方法和装置 |
CN1851640A (zh) * | 2006-05-25 | 2006-10-25 | 西北工业大学 | 浮点处理单元中面向精确异常的流水线调度方法 |
-
2009
- 2009-11-23 CN CN200910238045.1A patent/CN101706714B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1136181A (zh) * | 1995-01-25 | 1996-11-20 | 国际商业机器公司 | 微处理机中的分布式执行控制 |
CN1176426A (zh) * | 1996-05-15 | 1998-03-18 | 摩托罗拉公司 | 在数据处理系统中对计算机指令执行排序的方法和装置 |
CN1851640A (zh) * | 2006-05-25 | 2006-10-25 | 西北工业大学 | 浮点处理单元中面向精确异常的流水线调度方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10310860B2 (en) | 2016-07-29 | 2019-06-04 | International Business Machines Corporation | Starting and stopping instruction dispatch to execution unit queues in a multi-pipeline processor |
Also Published As
Publication number | Publication date |
---|---|
CN101706714A (zh) | 2010-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101706714B (zh) | 指令发射系统及方法、处理器及其设计方法 | |
US6557095B1 (en) | Scheduling operations using a dependency matrix | |
US5790822A (en) | Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor | |
US7502912B2 (en) | Method and apparatus for rescheduling operations in a processor | |
US6334182B2 (en) | Scheduling operations using a dependency matrix | |
US7793079B2 (en) | Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction | |
JP3730252B2 (ja) | レジスタ名称変更方法及び名称変更システム | |
CN101706713B (zh) | 改善乱序超纯量执行单元的微处理器及方法 | |
US7454598B2 (en) | Controlling out of order execution pipelines issue tagging | |
CN105426160A (zh) | 基于sprac v8指令集的指令分类多发射方法 | |
US20060259742A1 (en) | Controlling out of order execution pipelines using pipeline skew parameters | |
US20060206693A1 (en) | Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU | |
CN103116485B (zh) | 一种基于超长指令字专用指令集处理器的汇编器设计方法 | |
US6463524B1 (en) | Superscalar processor and method for incrementally issuing store instructions | |
CN111399912B (zh) | 一种面向多周期指令的指令调度方法、系统及介质 | |
US6633971B2 (en) | Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline | |
CN114780149A (zh) | 用于乱序超标量处理器的操作依赖性调度方法、部件及处理器 | |
JP3611304B2 (ja) | 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法 | |
US20020056034A1 (en) | Mechanism and method for pipeline control in a processor | |
US20080244224A1 (en) | Scheduling a direct dependent instruction | |
US6351803B2 (en) | Mechanism for power efficient processing in a pipeline processor | |
US20030182538A1 (en) | Method and system for managing registers | |
CN101706715B (zh) | 指令调度装置和方法 | |
CN113946368A (zh) | 一种基于risc-v指令集的三级流水线架构、处理器及数据处理方法 | |
US20050102494A1 (en) | Method and apparatus for register stack implementation using micro-operations |
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 | ||
CP03 | Change of name, title or address |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100080 No. 10 South Road, Haidian District Academy of Sciences, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |