指令调度装置和方法

文档序号:6585071阅读:415来源:国知局
专利名称:指令调度装置和方法
技术领域
本发明涉及微处理器的体系结构,特别涉及用于对指令的发射进行动态调度的装
置和方法,其不仅仅基于指令之间的数据相关性,同时还考虑了在被执行之前无法识别出 指令之间的数据相关性的情形。
背景技术
现代的微处理器通常采用流水线技术来提高微处理器的处理速度。通过流水线技
术,在各个不同阶段并行执行不同的指令以提高处理器的性能。然而,指令之间的数据相关
会严重影响指令的并行性,从而降低流水线的利用率以及处理器的性能。 为了解决指令之间的数据相关对指令并行性的影B向,很多微处理器选择使用对
指令进行动态调度的流水线结构。比如Tomasulo算法,其中译码后的指令以先进先出
(FIFO)的方式保存到操作队列中,使得操作队列中的指令顺序发射到保留站;并且,基于
指令之间的数据相关性对将指令从保留站发射出去进行动态调度,使得保留站中的指令能
够乱序发射到相应的功能部件。 再比如本申请人于2009年10月27日提交的名称为"指令调度装置和方法"的发 明专利申请中所提供的技术方案,其中译码的指令保存到操作队列中,并基于指令之间的 数据相关性对将从操作队列向保留站发射指令进行动态调度,使得进入保留站的指令为所 有操作数均已准备好的指令;并且,保留站直接将指令发射到相应的功能部件中,就此能够 相对提高流水线的效率。 如上所述,基于指令之间的数据相关性对指令进行动态调度,可以降低指令之间 的数据相关性对并行处理的影响,从而能够在一定程度上提高流水线的效率以及处理器的 整体性能。 然而,存在某些特殊的指令,在这些指令被执行之前,很难识别出这些指令与其它 指令之间的数据相关性。并且,这些特殊指令是否能够正确执行,将严重影响微处理器的程 序执行的正确性。由此使得,在设计采用上述指令调度技术的微处理器结构时,不仅仅需要 考虑指令之间的数据相关性,还有必要特别注意这些特殊指令。

发明内容
有鉴于此,本发明目的在于提供一种用于对指令的发射进行动态调度的装置和方
法,其不仅仅基于指令之间的数据相关性,同时还考虑了在被执行之前无法识别出与其它
指令的数据相关性的特殊指令,以能够确保微处理器的程序执行正确性。 为了实现上述目的,本发明提供了一种指令调度装置,用于基于动态调度指令的
类型对指令进行不同策略地发射,其包括指令类型判断器,用于针对在被执行之前无法识
别出与其它指令的数据相关性的特殊指令,判断其是否为等待发射(wait head)型指令,以
及判断其是否为堵塞发射(stall issue)型指令;以及指令发射器,用于基于指令之间的
数据相关性和所述指令类型判断器的判断结果对 令进行发射。
另外,本发明还提供了一种指令调度方法,用于基于动态调度指令的类型对指令 进行不同策略地发射,其包括指令类型判断步骤,针对在被执行之前无法识别出与其它指 令的数据相关性的特殊指令,判断其是否为等待发射型指令,以及判断其是否为堵塞发射 型指令;以及指令发射步骤,基于指令之间的数据相关性和所述指令类型判断步骤的判断 结果对指令进行发射。 通过不仅仅基于指令间的数据相关性,同时还针对在被执行之前无法识别出与其 它指令的数据相关性的特殊指令,根据所属的指令类型(具体包括等待发射型指令和堵塞 发射型指令)分别设计了不同的发射策略(具体为,等待发射机制和堵塞发射机制),从而 能够有效确保微处理器的程序执行的正确性。


图1A示出了根据本发明实施例的wait head型指令的示例;
图IB示出了根据本发明实施例的stall issue型指令的示例;
图2示出了根据本发明实施例的指定调度装置的框图; 图3示出了可应用于本发明指令调度装置和方法的、操作队列中用于保存指令的 相关信息的操作队列项域构成的示意图;以及 图4-0 图4-13根据本发明指令调度方法的一个应用示例。
具体实施例方式
如上所述,本发明旨在进一步优化基于指令间数据相关性对指令进行动态调度、 乱序发射的现有技术,以很好地确保微处理器的程序执行正确性。为了实现该目的,本发明 提供的一种指令调度技术,其主要思路是不仅仅基于指令之间的数据相关性,同时还考虑 了与在被执行之前无法识别出与其它指令的数据相关性的特殊指令相关的发射策略。
本发明的上述及其他技术特征和有益效果,将通过参照附图进行的优选实施例介 绍得到更充分的阐述。 在判断操作队列中的指令是否与其它指令存在数据相关时,要判断该指令的源寄 存器是否与操作队列中位于该指令之前的目的寄存器相同,如果相同则存在数据相关,如 果不同则不存在数据相关。然而,存在一些特殊指令,这些指令与其它指令的相关性在该指 令被执行之前很难被识别。有鉴于此,本发明提供的指令调度装置和方法,将所涉及到的 特殊指令具体可分为两类,一类是等待发射(wait head)型指令,一类是堵塞发射(stall issue)型指令。 —方面,wait head型指令是指,该指令的操作数所使用的源寄存器会被其它指令 修改,但是被修改的寄存器并不作为该其它指令的目的寄存器。这样,由于无法判断冊it head型指令的操作数是否与操作队列中位于该指令之前的指令存在数据相关,因此,wait head型指令与操作队列中位于该wait head型指令之前的指令之间的数据相关性无法识 别。 本发明针对wait head型指令提出了一种等待发射(wait head)机制将wait head型指令保留在操作队列中,直到该wait head型指令之前的所有指令都提交后,该 wait head型指令才能被发射。这样能够保证wait head型指令发射时所读取的源寄存器
4的值是最新写回的值,从而保证了程序执行的正确性。 根据上述等待发射机制,wait head型指令并不影响其后续指令的发射。换言之, wait head型指令只是堵塞自己被发射,但并不堵塞其后续指令的发射。位于wait head型 指令之后的指令如果满足被发射的条件,就可以被动态调度、乱序发射,就此既保证了程序 执行的正确性,对处理器性能的影响也不会很大。 参考图1A具体而言单精度除法指令DIV. S的源寄存器是fs、 ft,目的寄存器是 fd。 CFCl指令的源寄存器是浮点控制寄存器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、 BP0SGE32等指令,其中 INSV rt, rs 用于通过使用DSP控制寄存器的某些域作为变 量,从通用寄存器rt、rs中选取某些数据段,将 数据段链接写入到rt中,其中rt既是目的寄存 器也是源寄存器; PICKrd,rs,rt 用于根据DSP控制寄存器的ccond域,判断从源
寄存器rs、 rt中选取某些数据段,将数据段链接 写入到rd中; RDDSPrd,mask 用于根据指令的mask域来判断是将DSP控制寄 存器的某些域写入到目的寄存器rd中,还是将0 写入到目的寄存器rd中; WRDSPrs,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累加器中选取相应的数







MTHLIP rs, ac
BP0SGE32offset
据段并写入到rt寄存器中,并且根据结果修改 DSP控制寄存器的EFI域,而不修改pos域; 用于将rs寄存器的值与由ac指定的HI_L0W累 加器的值拼接成新的值,写入到由ac指定的 HI-LOW累加器中,并判断DSP控制寄存器的 pos域,增加pos域的值;以及 用于判断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、 BP0SGE32等指令,必须等到成为操作队列的第一条指令时才能被发射。
需要说明的是,尽管以"源寄存器为浮点控制寄存器的指令"以及"在执行时需要 读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控制寄存器的值,也即图IB所示的ADDSC指令属于stallissue型指令。因此,必须严格按照指令在操作队列中的顺序来执行ADDSC与ADDWC 指令。 针对这种情况,本发明采取的发射策略是堵塞发射操作队列中的ADDSC指令将 堵塞操作队列中位于该ADDSC指令之后的指令的发射,直到该ADDSC指令提交后,其后续指 令才能被发射以及执行。 类似于ADDSC指令,需要堵塞后续指令发射的指令还包括WRDSP、 MTHLIP等指令, 其中 WRDSP rs, mask 用于根据指令的mask域来判断,是将源寄存器 的某些域写入到DSP控制寄存器对应域中,还 是保持DSP控制寄存器的某些域值不变;以及 MTHLIP rs,ac 用于将rs寄存器的值与由ac指定的HI_L0W累 加器的值拼接成新的值,写入到由ac指定的 HI-LOW累加器中;并判断DSP控制寄存器的 pos域,增加pos域的值。 ADDSC指令、WRDSP指令、MTHLIP指令都会修改DSP控制寄存器的值,而这些指令 的后续指令在执行时可能需要使用DSP控制寄存器的值,而DSP控制寄存器并不作为该后 续指令的源操作数寄存器。因此,为了保证后续指令能够使用正确的DSP控制寄存器的值, 这些指令必须堵塞后续指令的发射。 需要说明的是,尽管以"根据执行结果修改DSP控制寄存器的指令"作为堵塞发 射型指令的示例介绍本发明所提出的堵塞发射机制如上,但本领域技术人员应能理解,可 应用堵塞发射机制的指令并不局限于此,并可在设计处理器时根据实际需要将灵活定义适 用堵塞发射机制的具体指令;此外,尽管本发明中所举实例是基于MIPS32指令集(包括 MIPS32-DSP指令)的,然而,本领域技术人员应能理解,对于基于其它指令集的微处理器结 构,在碰到类似的问题时,完全可以通过上述等待发射机制和堵塞发射机制来保证程序执 行的正确性。 基于以上针对在被执行之前无法识别与其它指令之间的数据相关性的特殊指令 而设计的等待发射机制和堵塞发射机制,本发明提供了一种指令调度装置。图2给出了根 据本发明实施例的指令调度装置的框图。 如图2所示,本发明的指令调度装置200用于基于指令之间的数据相关性对指令 的发射进行动态调度,其包括指令类型判断器210和指令发射器220。其中
指令类型判断器210,用于针对待发射指令100中的、在被执行之前无法识别出与 其它指令的数据相关性的特殊指令IIO,判断待发射的特殊指令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的发射。由此使得,在发射操作队列中的待发射指令时,必须判断该指令 是否为等待发射型指令lll,也即是否需要等到成为操作队列的第一条指令才能够被发射, 如果是,则将该指令保留在操作队列中,直到其前面的指令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 :指令在操作队列中的状态位,可以如下设置该状态位 "OO"表示操作队列项处于空闲状态,可以接收新的指令; "01"表示操作队列项中存放有有效指令,该指令尚未发射到保留站;
" 10"表示该操作队列项中的有效指令已经发射到保留站中。 其中,只要state域不等于"00",即表示该指令为有效指令。 Srcl :操作数1所在的源寄存器号。 Src2 :操作数2所在的源寄存器号。 Dest :存放指令的执行结果的目的寄存器号。 Qidl :表示操作数1的相关指令所在的操作队列项号。操作队列中存在某条指令, 其目的寄存器号与操作数1的寄存器号相等,则认为该条指令与操作数1相关;并且,将与 操作数1相关的所有指令中距离当前指令最近的指令确定为操作数1的相关指令。例如
指令a "ADD Rl, R2, R3,,、指令b "ADD Rl, R2, R4,,、指令c "ADD R3, R2, Rl"是操 作队列中的有效指令,指令a是操作队列的第一条指令。尽管指令c的操作数2所在的源 寄存器Rl是指令b的目的寄存器,也是指令a的目的寄存器,由于指令b距离指令c最近, 使得指令c的操作数2 (Rl)的值来自于指令b的指令执行结果,因此指令c的操作数2 (Rl) 的相关指令为指令b。 Qid2 :表示操作数2的相关指令所在的操作队列项号。 Rdyl :如果在操作队列中位于该指令之前的有效指令中,不存在操作数1的相关
指令,则操作数1的值来自于读寄存器的值,即指令的操作数1准备好。 Rdy2 :如果在操作队列中位于该指令之前的有效指令中,不存在操作数2的相关
指令,则操作数2的值来自于读寄存器的值,即指令的操作数2准备好。 Wbl :表示操作数1的相关指令的执行结果已经写回。 Wb2 :表示操作数2的相关指令的执行结果已经写回。 Wb :表示指令已经执行完,并且指令的执行结果已经写回。 其次,在本应用实例中,使用的发射策略是从操作队列中选取操作数均已准备好 的指令发射到保留站中,具体内容可参考本申请人于2009年IO月27日提交的名称为"指 令调度装置和方法"的发明专利申请。其中,操作数准备好包括三种情形一、该指令与前 面的指令不存在数据相关,其操作数来自于读寄存器所得;二、该指令与前面的指令存在数 据相关,但相关指令已经执行完且执行结果已写回到操作队列,从而使得该操作数的值来 自于保存在操作队列中的相关指令的执行结果;三、该指令与前面的指令存在数据相关,相 关指令已经执行完但执行结果尚未写回到操作队列中,也即正通过结果总线写回相关指令 的执行结果,从而使得该操作数的值来自于侦听结果总线所得的有效值。
并假定在本应用实例中,访存类指令发射后,需要2个时钟周期(Cycle)才返回结 果;加、减指令发射后,需要1个时钟周期才返回结果;乘法指令发射后,需要2个时钟周期 才返回结果。下面通过详细描述每一拍(每个时钟周期)所执行的操作来实例化根据本发 明的指令调度装置和方法中的wait head发射机制和stall issue发射机制。
最后,如图4-0所示,假定要执行的指令序列为sw4(R1),R0R3,4(R4),ADDSCR2,Rl,R3MULR7,R5,R6ADDWCR7,Rl,R0
SUB R5, R4, R6 如图4-1所示,在第1时钟周期,SW指令写入到操作队列中,第0项的state置为 "01"。 如图4-2所示,在第2时钟周期,LW指令写入到操作队列中,第1项的state置为 "01"。 SW指令的操作数准备好,从操作队列中发射,其state置为"IO"。
如图4-3所示,在第3时钟周期,ADDSC指令写入到操作队列中,第2项的state置 为"01"。 LW指令的操作数准备好,在此拍LW指令从操作队列中发射,其state置为"Ol"。
如图4-4所示,在第4时钟周期,MUL指令写入到操作队列中,第3项的state置 为"01"。 SW指令的执行完,其Wb域置为"l"。 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域置为"O",其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域置为"O",其state域置 为"OO"。 如图4-11所示,在第12时钟周期,ADDWC指令被发射;在第13时钟周期,ADDWC指 令的结果写回到操作队列中,其Wb域置为"1 "。 如图4-12所示,在第14时钟周期,ADDWC提交,其Wb域置为"O", state域置为 "00"。 如图4-13所示,在第15时钟周期,SUB提交,其Wb域置为"O", state域置为"OO"。
需要声明的是,上述发明内容及具体实施方式
仅旨在证明本发明所提供技术方案 的实际应用,不应解释为对本发明保护范围的限定。本领域技术人员在本发明的精神和原 理内,当可作各种修改、等同替换、或改进。本发明的保护范围以所附权利要求书为准。
10
权利要求
一种指令调度装置,用于根据动态调度指令的类型对指令进行不同策略地发射,其特征在于,包括指令类型判断器,用于针对在被执行之前无法识别出与其它指令的数据相关性的特殊指令,判断其是否为等待发射型指令,以及判断其是否为堵塞发射型指令;以及指令发射器,用于基于指令之间的数据相关性和所述指令类型判断器的判断结果对指令进行发射。
2. 根据权利要求1所述的指令调度装置,其特征在于,所述等待发射型指令的源寄存 器的值将根据目的寄存器并不是该源寄存器的另一指令的执行结果而改变,所述堵塞发射 型指令将根据执行结果改写除该堵塞发射型指令的目的寄存器之外的其它寄存器的值。
3. 根据权利要求1所述的指令调度装置,其特征在于,所述指令发射器的发射策略是 所述等待发射型指令需要等到操作队列中位于该等待发射型指令之前的指令均提交后才 被发射,所述堵塞发射型指令使得操作队列中位于其后的指令均等到该堵塞发射型指令提 交后才被发射。
4. 一种指令调度方法,用于根据动态调度指令的类型对指令进行不同策略地发射,其 特征在于,包括指令类型判断步骤,针对在被执行之前无法识别出与其它指令的数据相关性的特殊指 令,判断其是否为等待发射型指令,以及判断其是否为堵塞发射型指令;以及指令发射步骤,基于指令之间的数据相关性和所述指令类型判断步骤的判断结果对指 令进行发射。
5. 根据权利要求4所述的指令调度方法,其特征在于,所述等待发射型指令的源寄存 器的值将根据目的寄存器并不是该源寄存器的另一指令的执行结果而改变,所述堵塞发射 型指令将根据执行结果改写除该堵塞发射型指令的目的寄存器之外的其它寄存器的值。
6. 根据权利要求4所述的指令调度方法,其特征在于,所述指令发射步骤的发射策略 是所述等待发射型指令需要等到操作队列中位于该等待发射型指令之前的指令均提交后 才被发射,所述堵塞发射型指令使得操作队列中位于其后的指令均等到该堵塞发射型指令 提交后才被发射。
全文摘要
对指令的发射进行动态调度的装置和方法,包括判断在执行之前无法识别出与其它指令的数据相关性的特殊指令是否为等待发射型指令以及是否为堵塞发射型指令,其中,等待发射型指令的源寄存器的值将根据目的寄存器并不是该源寄存器的另一指令的执行结果而改变,而堵塞发射型指令将根据执行结果改写除其目的寄存器之外的其它寄存器的值;以及,基于指令间数据相关性和上述判断结果进行指令发射,以等到位于等待发射型指令之前的指令均提交后才发射该等待发射型指令,并等到堵塞发射型指令提交后才发射位于该堵塞发射型指令之后的指令。本发明不仅仅基于指令间数据相关性进行动态调度,同时还考虑了无法识别出与其它指令的数据相关性的特殊指令。
文档编号G06F9/38GK101706715SQ20091024208
公开日2010年5月12日 申请日期2009年12月4日 优先权日2009年12月4日
发明者徐翠萍, 李祖松, 汪文祥, 郝守青 申请人:北京龙芯中科技术服务中心有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1