CN101706715A - 指令调度装置和方法 - Google Patents
指令调度装置和方法 Download PDFInfo
- Publication number
- CN101706715A CN101706715A CN200910242083A CN200910242083A CN101706715A CN 101706715 A CN101706715 A CN 101706715A CN 200910242083 A CN200910242083 A CN 200910242083A CN 200910242083 A CN200910242083 A CN 200910242083A CN 101706715 A CN101706715 A CN 101706715A
- Authority
- CN
- China
- Prior art keywords
- instruction
- emission
- register
- instructions
- emission type
- 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
Images
Landscapes
- Advance Control (AREA)
Abstract
对指令的发射进行动态调度的装置和方法,包括:判断在执行之前无法识别出与其它指令的数据相关性的特殊指令是否为等待发射型指令以及是否为堵塞发射型指令,其中,等待发射型指令的源寄存器的值将根据目的寄存器并不是该源寄存器的另一指令的执行结果而改变,而堵塞发射型指令将根据执行结果改写除其目的寄存器之外的其它寄存器的值;以及,基于指令间数据相关性和上述判断结果进行指令发射,以等到位于等待发射型指令之前的指令均提交后才发射该等待发射型指令,并等到堵塞发射型指令提交后才发射位于该堵塞发射型指令之后的指令。本发明不仅仅基于指令间数据相关性进行动态调度,同时还考虑了无法识别出与其它指令的数据相关性的特殊指令。
Description
技术领域
本发明涉及微处理器的体系结构,特别涉及用于对指令的发射进行动态调度的装置和方法,其不仅仅基于指令之间的数据相关性,同时还考虑了在被执行之前无法识别出指令之间的数据相关性的情形。
背景技术
现代的微处理器通常采用流水线技术来提高微处理器的处理速度。通过流水线技术,在各个不同阶段并行执行不同的指令以提高处理器的性能。然而,指令之间的数据相关会严重影响指令的并行性,从而降低流水线的利用率以及处理器的性能。
为了解决指令之间的数据相关对指令并行性的影响,很多微处理器选择使用对指令进行动态调度的流水线结构。比如Tomasulo算法,其中:译码后的指令以先进先出(FIFO)的方式保存到操作队列中,使得操作队列中的指令顺序发射到保留站;并且,基于指令之间的数据相关性对将指令从保留站发射出去进行动态调度,使得保留站中的指令能够乱序发射到相应的功能部件。
再比如本申请人于2009年10月27日提交的名称为“指令调度装置和方法”的发明专利申请中所提供的技术方案,其中:译码的指令保存到操作队列中,并基于指令之间的数据相关性对将从操作队列向保留站发射指令进行动态调度,使得进入保留站的指令为所有操作数均已准备好的指令;并且,保留站直接将指令发射到相应的功能部件中,就此能够相对提高流水线的效率。
如上所述,基于指令之间的数据相关性对指令进行动态调度,可以降低指令之间的数据相关性对并行处理的影响,从而能够在一定程度上提高流水线的效率以及处理器的整体性能。
然而,存在某些特殊的指令,在这些指令被执行之前,很难识别出这些指令与其它指令之间的数据相关性。并且,这些特殊指令是否能够正确执行,将严重影响微处理器的程序执行的正确性。由此使得,在设计采用上述指令调度技术的微处理器结构时,不仅仅需要考虑指令之间的数据相关性,还有必要特别注意这些特殊指令。
发明内容
有鉴于此,本发明目的在于提供一种用于对指令的发射进行动态调度的装置和方法,其不仅仅基于指令之间的数据相关性,同时还考虑了在被执行之前无法识别出与其它指令的数据相关性的特殊指令,以能够确保微处理器的程序执行正确性。
为了实现上述目的,本发明提供了一种指令调度装置,用于基于动态调度指令的类型对指令进行不同策略地发射,其包括:指令类型判断器,用于针对在被执行之前无法识别出与其它指令的数据相关性的特殊指令,判断其是否为等待发射(wait head)型指令,以及判断其是否为堵塞发射(stall issue)型指令;以及指令发射器,用于基于指令之间的数据相关性和所述指令类型判断器的判断结果对指令进行发射。
另外,本发明还提供了一种指令调度方法,用于基于动态调度指令的类型对指令进行不同策略地发射,其包括:指令类型判断步骤,针对在被执行之前无法识别出与其它指令的数据相关性的特殊指令,判断其是否为等待发射型指令,以及判断其是否为堵塞发射型指令;以及指令发射步骤,基于指令之间的数据相关性和所述指令类型判断步骤的判断结果对指令进行发射。
通过不仅仅基于指令间的数据相关性,同时还针对在被执行之前无法识别出与其它指令的数据相关性的特殊指令,根据所属的指令类型(具体包括等待发射型指令和堵塞发射型指令)分别设计了不同的发射策略(具体为,等待发射机制和堵塞发射机制),从而能够有效确保微处理器的程序执行的正确性。
附图说明
图1A示出了根据本发明实施例的wait head型指令的示例;
图1B示出了根据本发明实施例的stall issue型指令的示例;
图2示出了根据本发明实施例的指定调度装置的框图;
图3示出了可应用于本发明指令调度装置和方法的、操作队列中用于保存指令的相关信息的操作队列项域构成的示意图;以及
图4-0~图4-13根据本发明指令调度方法的一个应用示例。
具体实施方式
如上所述,本发明旨在进一步优化基于指令间数据相关性对指令进行动态调度、乱序发射的现有技术,以很好地确保微处理器的程序执行正确性。为了实现该目的,本发明提供的一种指令调度技术,其主要思路是不仅仅基于指令之间的数据相关性,同时还考虑了与在被执行之前无法识别出与其它指令的数据相关性的特殊指令相关的发射策略。
本发明的上述及其他技术特征和有益效果,将通过参照附图进行的优选实施例介绍得到更充分的阐述。
在判断操作队列中的指令是否与其它指令存在数据相关时,要判断该指令的源寄存器是否与操作队列中位于该指令之前的目的寄存器相同,如果相同则存在数据相关,如果不同则不存在数据相关。然而,存在一些特殊指令,这些指令与其它指令的相关性在该指令被执行之前很难被识别。有鉴于此,本发明提供的指令调度装置和方法,将所涉及到的特殊指令具体可分为两类,一类是等待发射(wait head)型指令,一类是堵塞发射(stall issue)型指令。
一方面,wait head型指令是指,该指令的操作数所使用的源寄存器会被其它指令修改,但是被修改的寄存器并不作为该其它指令的目的寄存器。这样,由于无法判断wait head型指令的操作数是否与操作队列中位于该指令之前的指令存在数据相关,因此,wait head型指令与操作队列中位于该wait head型指令之前的指令之间的数据相关性无法识别。
本发明针对wait head型指令提出了一种等待发射(wait head)机制:将wait head型指令保留在操作队列中,直到该wait head型指令之前的所有指令都提交后,该wait head型指令才能被发射。这样能够保证wait head型指令发射时所读取的源寄存器的值是最新写回的值,从而保证了程序执行的正确性.
根据上述等待发射机制,wait head型指令并不影响其后续指令的发射。换言之,wait head型指令只是堵塞自己被发射,但并不堵塞其后续指令的发射。位于wait head型指令之后的指令如果满足被发射的条件,就可以被动态调度、乱序发射,就此既保证了程序执行的正确性,对处理器性能的影响也不会很大。
参考图1A具体而言:单精度除法指令DIV.S的源寄存器是fs、ft,目的寄存器是fd。CFC1指令的源寄存器是浮点控制寄存器fcr31,目的寄存器是通用寄存器rt,用于将浮点控制寄存器的值拷贝到某个定点寄存器中。在判断指令是否存在数据相关时,由于CFC1的源寄存器不同于DIV.S的目的寄存器,因此将CFC1指令判断为可以先于DIV.S指令执行。但在执行DIV.S指令时有可能会发生例外,如果发生例外就需要修改浮点控制寄存器fcr31的值,由此使得,在CFC1指令先于DIV.S指令发射的情况下,若DIV.S的例外信息还没写进浮点控制寄存器fcr31中,则执行CFC1指令将得到错误的结果。换言之,图1A所示的单精度除法指令CFC1属于wait head型指令。
针对这种情况,本发明采用的发射策略是等待发射:等待操作队列中位于CFC1指令之前的指令都提交了,才发射CFC1指令。位于CFC1指令之前的指令都提交了,可以保证浮点控制寄存器fcr31的值是最新的值,从而可以确保CFC1指令能够正确执行。
类似于CFC1的指令,需要等到成为操作队列第一条指令才能够发射的指令还包括INSV、PICK、RDDSP、WRDSP、ADDWC、EXTPDP、EXTP、MTHLIP、BPOSGE32等指令,其中:
INSV rt,rs 用于通过使用DSP控制寄存器的某些域作为变
量,从通用寄存器rt、rs中选取某些数据段,将
数据段链接写入到rt中,其中rt既是目的寄存
器也是源寄存器;
PICK rd,rs,rt 用于根据DSP控制寄存器的ccond域,判断从源
寄存器rs、rt中选取某些数据段,将数据段链接
写入到rd中;
RDDSP rd,mask 用于根据指令的mask域来判断是将DSP控制寄
存器的某些域写入到目的寄存器rd中,还是将0
写入到目的寄存器rd中;
WRDSP rs,mask 用于根据指令的mask域来判断是将源寄存器的
某些域写入到DSP控制寄存器对应域中,还是
保持DSP控制寄存器的某些域值不变;
ADDWC rd,rs,rt 用于将rs、rt及DSP控制寄存器的第13比特相
加,并将结果写入到rd中;
EXTPDP rt,ac,size 用于根据DSP控制寄存器的pos域和size域,
从由ac指令的HI-LOW累加器中选取相应的数
据段并写入到rt寄存器中,并且根据结果判断是
否修改DSP控制寄存器的pos域和EFI域;
EXTP rt,ac,size 用于根据DSP控制寄存器的pos域和size域,
从由ac指令的HI-LOW累加器中选取相应的数
据段并写入到rt寄存器中,并且根据结果修改
DSP控制寄存器的EFI域,而不修改pos域;
MTHLIP rs,ac 用于将rs寄存器的值与由ac指定的HI_LOW累
加器的值拼接成新的值,写入到由ac指定的
HI-LOW累加器中,并判断DSP控制寄存器的
pos域,增加pos域的值;以及
BPOSGE32offset 用于判断DSP控制寄存器的pos域,根据判断结
果判定是否转移。
这些指令均属于MIPS32-DSP指令集。这些指令需要读DSP控制寄存器的值;然而有如下的其它指令,虽然其目的寄存器并不是DSP控制寄存器,但还是会根据其执行结果改写DSP控制寄存器的值。所以上述需要读DSP控制寄存器值的指令需要等到成为操作队列中的第一条指令后才能够发射,以确保DSP控制寄存器的值为最新的写入值。
此外,MIPS32-DSP指令集中的WRDSP,MTHLIP,ADDSC等指令,要根据执行结果修改DSP控制寄存器的值。由于没法判断执行时需要读DSP控制寄存器的值的指令与写DSP控制寄存器的值的指令之间的数据相关性,因此,对于INSV、PICK、RDDSP、WRDSP、ADDWC、EXTPDP、EXTP、MTHLIP、BPOSGE32等指令,必须等到成为操作队列的第一条指令时才能被发射。
需要说明的是,尽管以“源寄存器为浮点控制寄存器的指令”以及“在执行时需要读DSP控制寄存器的指令”作为等待发射型指令的示例介绍本发明所提出的等待发射机制如上,但本领域技术人员应能理解,可应用等待发射机制的指令并不局限于此,并可在设计处理器时根据实际需要将灵活定义适用等待发射机制的具体指令。
另一方面,stall issue型指令是指,该指令会根据其执行结果修改某些寄存器的值,但是被修改的寄存器并不作为该指令的目的寄存器。被stall issue型指令修改的寄存器并不是该stall issue型指令的目的寄存器,但却会被操作队列中位于该stall issue型指令之后的指令用作操作数的源寄存器。这样,stall issue型指令与操作队列中位于该stall issue型指令之后的指令之间的数据相关性就无法识别。
本发明针对stall issue型指令提出了一种堵塞发射(stall issue)机制:stall issue型指令堵塞其后续指令的发射。换言之,只有stall issue型指令提交后,操作队列中位于该stall issue型指令之后的指令才能被发射。但是,stall issue型指令并不影响操作队列中位于该stall issue型指令之前的指令的发射,也即,位于该stall issue型指令之前的指令如果满足被发射的条件,就可以被动态调度、乱序发射。
根据上述堵塞发射机制,操作队列中位于stall issue型指令之后的指令必须等到该stall issue型指令都提交后才能够被发射,就此保证了stallissue型指令的后续指令在发射时能够从源寄存器中读取到正确的值。
参考图1B具体而言:ADDSC指令的源寄存器是rs、rt,目的寄存器是rd,用于将rs与rt寄存器的值相加,加法结果保存在rd寄存器中,并根据加法结果修改DSP控制寄存器的第13比特;ADDWC指令的源寄存器是rs、rt,目的寄存器rd.在发射指令时会判断ADDSC指令与ADDWC指令不存在数据相关性,这是因为ADDSC的两个源寄存器与ADDWC指令的目的寄存器不相同.但实际上,ADDSC指令根据执行结果可能需要修改DSP控制寄存器的值,而ADDWC在执行加法操作时需要使用DSP控制寄存器的值,也即图1B所示的ADDSC指令属于stallissue型指令.因此,必须严格按照指令在操作队列中的顺序来执行ADDSC与ADDWC指令.
针对这种情况,本发明采取的发射策略是堵塞发射:操作队列中的ADDSC指令将堵塞操作队列中位于该ADDSC指令之后的指令的发射,直到该ADDSC指令提交后,其后续指令才能被发射以及执行。
类似于ADDSC指令,需要堵塞后续指令发射的指令还包括WRDSP、MTHLIP等指令,其中:
WRDSP rs,mask 用于根据指令的mask域来判断,是将源寄存器
的某些域写入到DSP控制寄存器对应域中,还
是保持DSP控制寄存器的某些域值不变;以及
MTHLIP rs,ac 用于将rs寄存器的值与由ac指定的HI_LOW累
加器的值拼接成新的值,写入到由ac指定的
HI-LOW累加器中;并判断DSP控制寄存器的
pos域,增加pos域的值。
ADDSC指令、WRDSP指令、MTHLIP指令都会修改DSP控制寄存器的值,而这些指令的后续指令在执行时可能需要使用DSP控制寄存器的值,而DSP控制寄存器并不作为该后续指令的源操作数寄存器。因此,为了保证后续指令能够使用正确的DSP控制寄存器的值,这些指令必须堵塞后续指令的发射。
需要说明的是,尽管以“根据执行结果修改DSP控制寄存器的指令”作为堵塞发射型指令的示例介绍本发明所提出的堵塞发射机制如上,但本领域技术人员应能理解,可应用堵塞发射机制的指令并不局限于此,并可在设计处理器时根据实际需要将灵活定义适用堵塞发射机制的具体指令;此外,尽管本发明中所举实例是基于MIPS32指令集(包括MIPS32-DSP指令)的,然而,本领域技术人员应能理解,对于基于其它指令集的微处理器结构,在碰到类似的问题时,完全可以通过上述等待发射机制和堵塞发射机制来保证程序执行的正确性。
基于以上针对在被执行之前无法识别与其它指令之间的数据相关性的特殊指令而设计的等待发射机制和堵塞发射机制,本发明提供了一种指令调度装置。图2给出了根据本发明实施例的指令调度装置的框图。
如图2所示,本发明的指令调度装置200用于基于指令之间的数据相关性对指令的发射进行动态调度,其包括指令类型判断器210和指令发射器220。其中:
指令类型判断器210,用于针对待发射指令100中的、在被执行之前无法识别出与其它指令的数据相关性的特殊指令110,判断待发射的特殊指令110是否为需要等到成为操作队列的第一条指令才能够发射的等待发射型指令111,以及判断待发射的特殊指令是否为将堵塞后续指令的发射的堵塞发射型指令112。其中,等待发射型指令111是指该指令的源寄存器的值将根据另一指令的执行结果而改变,尽管该源寄存器并不是该另一指令的目的寄存器;而堵塞发射型指令112是指该指令将根据执行结果改写其它寄存器的值,尽管被改写的寄存器并不是该堵塞发射型指令112的目的寄存器。
指令发射器220,用于基于待发射指令100之间的数据相关性和所述指令类型判断器210的判断结果对指令100的发射进行动态调度,使得在将待发射指令100乱序发射出去成为发射指令300以提高流水线效率的同时,还能够有效保证程序执行的正确性.其中,指令发射器220针对等待发射型指令111应用等待发射机制,使得等待发射型指令111必须等到操作队列中位于该等待发射型指令111之前的待发射指令110均提交后才能被发射;而针对堵塞发射型指令应用堵塞发射机制,使得操作队列中位于堵塞发射型指令112之后的待发射指令110均必须等到该堵塞发射型指令112提交后才能被发射出去.
具体而言,等待发射型指令111必须等到操作队列中其前面的指令110都已经提交,使得其成为操作队列中的第一条指令时才能够发射;并且,等待发射型指令111只是要求自己必须等到操作队列中其前面的指令100都提交了才能够被发射,但并不影响操作队列中其他指令100的发射。由此使得,在发射操作队列中的待发射指令时,必须判断该指令是否为等待发射型指令111,也即是否需要等到成为操作队列的第一条指令才能够被发射,如果是,则将该指令保留在操作队列中,直到其前面的指令100都提交了才能发射。
另一方面,堵塞发射型指令112会堵塞操作队列中其后续所有指令100的发射,也即操作队列中的指令100在发射时必须满足其前面没有堵塞发射型指令;然而,堵塞发射型指令并不影响操作队列中其前面指令100的发射。由此使得,在发射操作队列中的待发射指令100时,必须判断该指令100之前是否存在堵塞发射型指令112,如果存在,则该指令100被堵塞,直到该堵塞发射型112提交后才能被发射。
另外,本发明还提供了与上述指令调度装置相对应的指令调度方法。该指令调度方法包括:指令类型判断步骤,针对在被执行之前无法识别出与其它指令的数据相关性的特殊指令,判断其是否为等待发射型指令,以及判断其是否为堵塞发射型指令,其中,等待发射型指令的源寄存器的值将根据目的寄存器并不是该源寄存器的另一指令的执行结果而改变,而堵塞发射型指令将根据执行结果改写除该堵塞发射型指令的目的寄存器之外的其它寄存器的值;以及指令发射步骤,基于指令之间的数据相关性和所述指令类型判断步骤的判断结果进行指令的发射,以使得等待发射型指令等到操作队列中位于该等待发射型指令之前的指令均提交后才能被发射,而操作队列中位于堵塞发射型指令之后的指令均等到该堵塞发射型指令提交后才能被发射。
对于上述指令调度方法,本领域技术人员应能理解:实现上述方法实施例的全部或部分步骤可通过程序指令相关的硬件来完成;所述程序可以存储于计算机可读取存储介质中,该程序在执行时包括上述方法实施例中的全部或部分步骤;所述的存储介质包括ROM/RAM(Read OnlyMemory/Random-Access Memory,只读存储器/随机访问内存)、磁碟或光盘等。
下面将参考图3、图4-0~图4-13描述根据本发明指令调度方法的一个应用示例,以具体解释本发明的技术原理。
首先,参考图3说明可应用于本发明指令调度装置的、操作队列中用于保存指令相关信息的操作队列项域构成。如图3所示,构成操作队列项的域至少包括有:
Opcode:操作码域,表示指令所要执行的具体操作类型,比如加法ADD、减法SUB、乘法MUL、除法DIV等操作。
State:指令在操作队列中的状态位,可以如下设置该状态位:
“00”表示操作队列项处于空闲状态,可以接收新的指令;
“01”表示操作队列项中存放有有效指令,该指令尚未发射到保留站;
“10”表示该操作队列项中的有效指令已经发射到保留站中。
其中,只要state域不等于“00”,即表示该指令为有效指令。
Src1:操作数1所在的源寄存器号。
Src2:操作数2所在的源寄存器号。
Dest:存放指令的执行结果的目的寄存器号。
Qid1:表示操作数1的相关指令所在的操作队列项号。操作队列中存在某条指令,其目的寄存器号与操作数1的寄存器号相等,则认为该条指令与操作数1相关;并且,将与操作数1相关的所有指令中距离当前指令最近的指令确定为操作数1的相关指令。例如:
指令a“ADD R1,R2,R3”、指令b“ADD R1,R2,R4”、指令c“ADD R3,R2,R1”是操作队列中的有效指令,指令a是操作队列的第一条指令。尽管指令c的操作数2所在的源寄存器R1是指令b的目的寄存器,也是指令a的目的寄存器,由于指令b距离指令c最近,使得指令c的操作数2(R1)的值来自于指令b的指令执行结果,因此指令c的操作数2(R1)的相关指令为指令b。
Qid2:表示操作数2的相关指令所在的操作队列项号。
Rdy1:如果在操作队列中位于该指令之前的有效指令中,不存在操作数1的相关指令,则操作数1的值来自于读寄存器的值,即指令的操作数1准备好。
Rdy2:如果在操作队列中位于该指令之前的有效指令中,不存在操作数2的相关指令,则操作数2的值来自于读寄存器的值,即指令的操作数2准备好。
Wb1:表示操作数1的相关指令的执行结果已经写回。
Wb2:表示操作数2的相关指令的执行结果已经写回。
Wb:表示指令已经执行完,并且指令的执行结果已经写回。
其次,在本应用实例中,使用的发射策略是从操作队列中选取操作数均已准备好的指令发射到保留站中,具体内容可参考本申请人于2009年10月27日提交的名称为“指令调度装置和方法”的发明专利申请。其中,操作数准备好包括三种情形:一、该指令与前面的指令不存在数据相关,其操作数来自于读寄存器所得;二、该指令与前面的指令存在数据相关,但相关指令已经执行完且执行结果已写回到操作队列,从而使得该操作数的值来自于保存在操作队列中的相关指令的执行结果;三、该指令与前面的指令存在数据相关,相关指令已经执行完但执行结果尚未写回到操作队列中,也即正通过结果总线写回相关指令的执行结果,从而使得该操作数的值来自于侦听结果总线所得的有效值。
并假定在本应用实例中,访存类指令发射后,需要2个时钟周期(Cycle)才返回结果;加、减指令发射后,需要1个时钟周期才返回结果;乘法指令发射后,需要2个时钟周期才返回结果。下面通过详细描述每一拍(每个时钟周期)所执行的操作来实例化根据本发明的指令调度装置和方法中的wait head发射机制和stall issue发射机制。
最后,如图4-0所示,假定要执行的指令序列为:
SW 4(R1), R0
LW R3, 4(R4),
ADDSC R2, R1, R3
MUL R7, R5, R6
ADDWC R7, R1, R0
SUB R5, R4, R6
如图4-1所示,在第1时钟周期,SW指令写入到操作队列中,第0项的state置为“01”。
如图4-2所示,在第2时钟周期,LW指令写入到操作队列中,第1项的state置为“01”。SW指令的操作数准备好,从操作队列中发射,其state置为“10”。
如图4-3所示,在第3时钟周期,ADDSC指令写入到操作队列中,第2项的state置为“01”。LW指令的操作数准备好,在此拍LW指令从操作队列中发射,其state置为“01”。
如图4-4所示,在第4时钟周期,MUL指令写入到操作队列中,第3项的state置为“01”。SW指令的执行完,其Wb域置为“1”。ADDSC指令的操作数相关于LW指令,但LW指令在此拍执行完,结果总线上有有效数据,ADDSC指令侦听结果总线,判断操作数准备好可以发射。
如图4-5所示,在第5时钟周期,ADDWC指令写入到操作队列中,第4项的state置为“01”。SW指令提交,其Wb域置为“0”,其state域置为“00”。LW指令结果写回到操作队列中,其Wb域置为“1”。ADDSC指令的操作数准备好,从队列中发射。
如图4-6所示,在第6时钟周期,SUB指令写入到操作队列中,第5项的state置为“01”。LW指令提交,其Wb域置为“0”,其state域置为“00”。ADDSC指令结果写回到操作队列中,其Wb域置为“1”。ADDSC指令要堵塞后续指令的发射,虽然MUL指令、ADDWC指令的操作数都准备好了,但是必须等到ADDSC指令提交后才能够发射。
如图4-7所示,在第7时钟周期,ADDSC指令提交;在第8时钟周期,MUL指令被发射。
如图4-8所示,在第9时钟周期,MUL指令继续执行,ADDWC指令和SUB指令的操作数都准备好了,但ADDWC指令必须等到其前面的指令提交后才能发射,所以ADDWC指令没有发射,SUB指令被发射。
如图4-9所示,在第10时钟周期,MUL指令的结果写回到操作队列中,其Wb域置为“1”。SUB指令单拍执行完,其结果也写回到操作队列中。ADDWC指令仍然没有被发射。
如图4-10所示,在第11时钟周期,MUL指令提交,其Wb域置为“0”,其state域置为“00”。
如图4-11所示,在第12时钟周期,ADDWC指令被发射;在第13时钟周期,ADDWC指令的结果写回到操作队列中,其Wb域置为“1”。
如图4-12所示,在第14时钟周期,ADDWC提交,其Wb域置为“0”,state域置为“00”。
如图4-13所示,在第15时钟周期,SUB提交,其Wb域置为“0”,state域置为“00”。
需要声明的是,上述发明内容及具体实施方式仅旨在证明本发明所提供技术方案的实际应用,不应解释为对本发明保护范围的限定。本领域技术人员在本发明的精神和原理内,当可作各种修改、等同替换、或改进。本发明的保护范围以所附权利要求书为准。
Claims (6)
1.一种指令调度装置,用于根据动态调度指令的类型对指令进行不同策略地发射,其特征在于,包括:
指令类型判断器,用于针对在被执行之前无法识别出与其它指令的数据相关性的特殊指令,判断其是否为等待发射型指令,以及判断其是否为堵塞发射型指令;以及
指令发射器,用于基于指令之间的数据相关性和所述指令类型判断器的判断结果对指令进行发射。
2.根据权利要求1所述的指令调度装置,其特征在于,所述等待发射型指令的源寄存器的值将根据目的寄存器并不是该源寄存器的另一指令的执行结果而改变,所述堵塞发射型指令将根据执行结果改写除该堵塞发射型指令的目的寄存器之外的其它寄存器的值。
3.根据权利要求1所述的指令调度装置,其特征在于,所述指令发射器的发射策略是:所述等待发射型指令需要等到操作队列中位于该等待发射型指令之前的指令均提交后才被发射,所述堵塞发射型指令使得操作队列中位于其后的指令均等到该堵塞发射型指令提交后才被发射。
4.一种指令调度方法,用于根据动态调度指令的类型对指令进行不同策略地发射,其特征在于,包括:
指令类型判断步骤,针对在被执行之前无法识别出与其它指令的数据相关性的特殊指令,判断其是否为等待发射型指令,以及判断其是否为堵塞发射型指令;以及
指令发射步骤,基于指令之间的数据相关性和所述指令类型判断步骤的判断结果对指令进行发射。
5.根据权利要求4所述的指令调度方法,其特征在于,所述等待发射型指令的源寄存器的值将根据目的寄存器并不是该源寄存器的另一指令的执行结果而改变,所述堵塞发射型指令将根据执行结果改写除该堵塞发射型指令的目的寄存器之外的其它寄存器的值。
6.根据权利要求4所述的指令调度方法,其特征在于,所述指令发射步骤的发射策略是:所述等待发射型指令需要等到操作队列中位于该等待发射型指令之前的指令均提交后才被发射,所述堵塞发射型指令使得操作队列中位于其后的指令均等到该堵塞发射型指令提交后才被发射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910242083 CN101706715B (zh) | 2009-12-04 | 2009-12-04 | 指令调度装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910242083 CN101706715B (zh) | 2009-12-04 | 2009-12-04 | 指令调度装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101706715A true CN101706715A (zh) | 2010-05-12 |
CN101706715B CN101706715B (zh) | 2013-01-23 |
Family
ID=42376941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910242083 Active CN101706715B (zh) | 2009-12-04 | 2009-12-04 | 指令调度装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101706715B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017016255A1 (zh) * | 2015-07-29 | 2017-02-02 | 深圳市中兴微电子技术有限公司 | 微引擎的多发射指令并行处理方法及装置、存储介质 |
WO2017201693A1 (zh) * | 2016-05-25 | 2017-11-30 | 华为技术有限公司 | 内存访问指令的调度方法、装置及计算机系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5872986A (en) * | 1997-09-30 | 1999-02-16 | Intel Corporation | Pre-arbitrated bypassing in a speculative execution microprocessor |
US7350053B1 (en) * | 2005-01-11 | 2008-03-25 | Sun Microsystems, Inc. | Software accessible fast VA to PA translation |
CN101593096B (zh) * | 2009-05-22 | 2011-11-16 | 西安交通大学 | 一种共享寄存器相关性消除的实现方法 |
-
2009
- 2009-12-04 CN CN 200910242083 patent/CN101706715B/zh active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017016255A1 (zh) * | 2015-07-29 | 2017-02-02 | 深圳市中兴微电子技术有限公司 | 微引擎的多发射指令并行处理方法及装置、存储介质 |
CN106406820A (zh) * | 2015-07-29 | 2017-02-15 | 深圳市中兴微电子技术有限公司 | 一种网络处理器微引擎的多发射指令并行处理方法及装置 |
CN106406820B (zh) * | 2015-07-29 | 2019-01-15 | 深圳市中兴微电子技术有限公司 | 一种网络处理器微引擎的多发射指令并行处理方法及装置 |
WO2017201693A1 (zh) * | 2016-05-25 | 2017-11-30 | 华为技术有限公司 | 内存访问指令的调度方法、装置及计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101706715B (zh) | 2013-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9733945B2 (en) | Pipelining out-of-order instructions | |
JP3096427B2 (ja) | 複数ロード命令の実行方法、複数ストア命令の実行方法およびマイクロプロセッサ | |
JP3093639B2 (ja) | プロセッサ内の資源割当て追跡方法及びそのシステム | |
TWI658407B (zh) | 管理處理器流水線中的指令順序 | |
US20100131742A1 (en) | Out-of-order execution microprocessor that selectively initiates instruction retirement early | |
WO1993018450A1 (en) | Register file backup queue | |
JP2004145903A (ja) | スーパースケーラマイクロプロセサ | |
JP5180285B2 (ja) | プロセッサにおいて実行ステージに先立って命令を実行するためのシステムおよび方法 | |
US20160011877A1 (en) | Managing instruction order in a processor pipeline | |
CN101706714A (zh) | 指令发射系统及方法、处理器及其设计方法 | |
JP3611304B2 (ja) | 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法 | |
JP2004520657A (ja) | データ処理装置におけるソースレジスタのロッキング | |
JP3816845B2 (ja) | プロセッサ及び命令制御方法 | |
CN101706715B (zh) | 指令调度装置和方法 | |
CN110515656B (zh) | 一种casp指令的执行方法、微处理器及计算机设备 | |
JP3096429B2 (ja) | 複数の命令の非整順完了をサポートする方法およびスーパースカラ・マイクロプロセッサ | |
US5784606A (en) | Method and system in a superscalar data processing system for the efficient handling of exceptions | |
JP3948615B2 (ja) | プロセッサ及び命令制御方法 | |
US6266761B1 (en) | Method and system in an information processing system for efficient maintenance of copies of values stored within registers | |
CN118295712B (zh) | 数据处理方法、装置、设备和介质 | |
JP7102840B2 (ja) | プロセッサコア、命令制御方法、プログラム | |
JPH10283178A (ja) | 命令を発行するための方法及びシステム | |
Shah et al. | SPSIM: SuperScalar Processor SIMulater CS305 Project Report | |
Changwatchai et al. | Optimizing instruction execution in the powerpc 603e superscalar microprocessor | |
JP3743155B2 (ja) | パイプライン制御型計算機 |
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 | ||
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. |