指令调度装置和方法

文档序号:6584548阅读:261来源:国知局
专利名称:指令调度装置和方法
技术领域
本发明涉及微处理器的体系结构,特别涉及对微处理器中从操作队列向保留站发
射指令进行动态调度的装置和方法。
背景技术
现代的微处理器通常采用流水线技术来提高微处理器的处理速度。通过流水线技
术,在各个不同阶段并行执行不同的指令以提高处理器的性能。然而,指令之间的数据相关
会严重影响指令的并行性,从而降低流水线的利用率以及处理器的性能。 为了解决指令之间的数据相关对指令并行性的影B向,很多微处理器选择使用对指
令进行动态调度的流水线结构,比如Tomasulo算法。译码后的指令保存到操作队列中,而
操作队列中的指令顺序发射到保留站。其中,所谓的顺序发射是指,指令从操作队列中发射
的顺序与指令写入到操作队列中的顺序是一致的,即按照先进先出(FIFO)的方式进行发
射。只要保留站中有空闲项时,不管操作队列中的第一条指令的操作数是否已准备好均将
其发射到对应的保留站中。然后,由保留站侦听结果总线,判断指令的操作数是否准备好,
并将操作数准备好的指令发射到功能部件中以开始执行指令。每个功能部件对应于一个保
留站,每个功能部件执行与其相对应的保留站中操作数已准备好的指令。 对于上述对指令进行动态调度的技术,所有指令译码后写入同一个操作队列,不
同类型的指令从操作队列中顺序发射到不同类型的保留站,由于操作队列的项数比保留站
的项数要多(因硬件开销方面的考虑,保留站的项数一般不多),由此使得,操作队列中操
作数准备好的指令理论上比保留站中操作数准备好的指令要多,并因此存在以下问题当
与操作队列中的第一条指令相对应的保留站长时间处于饱和状态(即保留站没有空闲项)
时,则第一条指令将一直保存在操作队列中而不被发射到保留站中,从而使得,即使与操作
队列中的其它指令相对应的保留站有空闲项,所述其它指令也不能被发射。
参照图1具体而言如果访存保留站已满,即访存保留站中的所有项都处于
"BUSY(忙)"状态,也即没有空闲的项可用来接收操作队列发射过来的新指令;其中,保留
站项的"忙"状态表示该保留站项已经存放了指令,并且该指令尚未被执行或者正在被执行
但结果尚未写回。此时,在操作队列的第一条指令是LW指令(存数访存指令)的情况下,由
于访存保留站已满将使得访存指令LW不能被发射,因此,即使此时定点保留站有空闲项,
操作队列中的定点指令MUL、ADD因被访存指令LW堵塞而不能被发射。进一步,如果此时访
存指令发生了例外且需要很多周期处理该例外,则此时与定点指令相对应的功能部件将处
于空闲状态,这显然会降低流水线的利用率和处理器的性能。 另外,上述对指令进行动态调度的技术还存在的问题是当保留站没有空闲项,且 保留站中的指令操作数尚未准备好时,即使操作队列中存在操作数已准备好的指令,也不 能执行该指令。 参照图2具体而言如果操作队列中的LW、MUL、ADD指令均已发射到保留站中。由 于MUL、 ADD指令与LW指令存在数据相关(均涉及操作数Rl),只要LW指令的结果尚未写回,就不能执行MUL, ADD指令。此时,MUL、 ADD指令将因操作数Rl尚未准备好而一直占用 保留站项,使得没有空闲的保留站项可用来接收SUB指令,因此不能发射SUB、FADD指令,即 使它们的操作数已准备好且它们与LW指令及保留站中的其它指令均不存在数据相关。换 言之,即使SUB指令的操作数已准备好也不能被执行,这显然也将导致流水线效率降低。

发明内容
有鉴于此,本发明目的在于提供一种用于对微处理器中从操作队列向保留站发射
指令进行动态调度的装置和方法,以基于微处理器指令之间的数据相关性来实现将操作数
已准备好的指令发射到保留站,从而能够提高微处理器的流水线效率以及整体性能。 为了实现上述目的,本发明提供了一种指令调度装置,用于对微处理器中从操作
队列向保留站发射指令进行动态调度,其包括指令写入器,用于基于要写入所述操作队列
的译码后指令与所述操作队列中的有效指令之间的数据相关性、已经写回和正在写回至所
述操作队列的指令执行结果,来设置所述译码后指令的各操作数的状态,并将设置后的所
述译码后指令作为待写入指令写入所述操作队列;操作数状态更新器,用于基于所述操作
队列中各未发射指令与指令执行结果正在写回的指令之间的数据相关性,更新各所述未发
射指令的操作数的状态;待发射判断器,用于基于各所述未发射指令的各操作数的状态,
判断所述操作队列中是否存在所有操作数均已准备好的待发射指令;以及指令发射器,用
于在所述保留站有空闲时,将经由所述待发射判断器所判定的待发射指令发射至所述保留站。 另外,本发明还提供了一种指令调度方法,用于对微处理器中从操作队列向保留 站发射指令进行动态调度,其包括指令写入步骤,用于基于要写入所述操作队列的译码后 指令与所述操作队列中的有效指令之间的数据相关性、已经写回和正在写回至所述操作队 列的指令执行结果,来设置所述译码后指令的各操作数的状态,并将设置后的所述译码后 指令作为待写入指令写入所述操作队列;操作数状态更新步骤,用于基于所述操作队列中 各未发射指令与指令执行结果正在写回的指令之间的数据相关性,更新各所述未发射指令 的操作数的状态;待发射判断步骤,用于基于各所述未发射指令的各操作数的状态,判断 所述操作队列中是否存在所有操作数均已准备好的待发射指令;以及指令发射步骤,用于 在所述保留站有空闲时,将经由所述待发射判断步骤所判定的待发射指令发射至所述保留 站。 通过上述指令调度装置和方法,本发明能够获得以下有益技术效果由于进入保 留站的指令都是操作数准备好的指令,所以保留站不需要侦听结果总线,不需要判断指令 的操作数是否准备好,而可将指令直接发射到功能部件中。这能够有效解决因某个保留站 无空闲而使得顺序发射操作队列中的指令时,即使操作队列中的指令的操作数已准备好也 不能被执行的问题。因此,本发明能够有效减少指令发射中因保留站无空闲而堵塞流水线 的次数,从而提高流水线的效率和微处理器的整体性能。 对于上述指令调度装置和方法,优选地,通过侦听结果总线来确定指令执行结果 以及指令执行结果正在写回的指令的操作队列项号,并根据所述操作队列项号将所述指令 执行结果写回到所述操作队列中所述指令所在的操作队列项内。由此使得,可将上述指令 调度装置实现为通过从操作队列读取操作队列项内所保存的信息以及向操作队列中的操
6作队列项写入信息来实施上述指令调度方法。


图1示出了现有指令调度技术的一个示例; 图2示出了现有指令调度技术的另一个示例; 图3示出了根据本发明实施例的指令调度装置的框图; 图4示出了本发明指令调度装置中指令写入器的优选实施例的框图; 图5示出了本发明指令调度装置中操作数状态更新器的优选实施例的框图; 图6示出了可应用于本发明指令调度装置的,操作队列中用于保存指令的相关信
息的操作队列项域构成的示意图; 图7示出了本发明指令调度装置中指令写入器的处理流程的示意图;
图8示出了本发明指令调度装置中操作数状态更新器的处理流程的示意图;
图9示出了本发明指令调度装置中待发射判断器的处理流程的示意图;
图10示出了本发明指令调度装置中指令发射器的处理流程的示意图;以及
图11A 图lll根据本发明指令调度方法示出了指令从译码到发射过程的一个应 用示例。
具体实施例方式
如上所述,本发明旨在解决由保留站侦听结果总线、并根据侦听结果对指令进行 动态调度的现有技术中指令发射效率低的问题,并提供了一种指令调度技术,以提高指令 发射流水线的效率及微处理器的整体性能。该指令调度技术的主要思路是,基于指令之间 的数据相关性,在保留站有空闲项时选择所有操作数均已准备好的指令发射到保留站,由 此能够有效提高指令发射的流水线效率。 本发明的上述及其他技术特征和有益效果,将通过参照附图进行的优选实施例介 绍得到更充分的阐述。
图3给出了根据本发明实施例的指令调度装置的框图。 如图3所示,本发明的指令调度装置300用于对微处理器中从操作队列100向保 留站200发射指令进行动态调度,包括指令写入器310、操作数状态更新器320、待发射判断 器330和指令发射器。其中 指令写入器310用于基于要写入操作队列100的译码后指令411与已存在于操作 队列100中的有效指令420之间的数据相关性以及已经写回和正在写回至操作队列100的 指令执行结果,来设置译码后指令411的各操作数的状态,并将设置后的译码后指令411作 为待写入指令412写入操作队列100 ; 操作数状态更新器320用于基于操作队列100中各未发射指令421与指令执行结
果正在写回的指令之间的数据相关性,更新各未发射指令421的操作数的状态; 待发射判断器330用于基于操作队列100中各未发射指令421的各操作数的状
态,判断操作队列100中是否存在所有操作数均已准备好的待发射指令422 ;以及 指令发射器340用于在保留站200中存在空闲项时,将经由待发射判断器330判
定的待发射指令422发射至保留站200。
其中,操作队列100中有效指令420包括尚未发射的未发射指令421和已发射但 尚未提交的已发射指令423,已经写回至操作队列100的指令执行结果通过查看有效指令 420获知,而正在写回至操作队列100的指令执行结果通过侦听用以写回指令执行结果的 结果总线500而获知。 图3所示的指令调度装置通过由指令写入器310和操作数状态更新器320基于指 令之间的数据相关性实时更新操作队列中未发射指令的操作数状态,能够有效确保进入保 留站的指令都是各操作数均已准备好的指令,进而能够有效提高指令发射的流水线效率。
下面将分别参考图4、图5详细描述本发明指令调度装置300中指令写入器310和 操作数状态更新器320的优选实施例。 如图4所示,指令写入器310可优选为包括第一判断器311、第一设置器312、相关 指令确定器313、第二判断器314以及第二设置器315。其中 第一判断器311用于将译码后指令411的操作数的源寄存器与操作队列100中各 有效指令420的指令执行结果的目的寄存器进行比较,以判断操作队列100中是否存在目 的寄存器与译码后指令的操作数的源寄存器为同一寄存器的有效指令,也即判断操作队列 100中是否存在与译码后指令411的操作数相关的有效指令; 第一设置器312用于在经由第一判断器311判定操作队列100中不存在与译码 后指令411的操作数相关的有效指令时,将译码后指令411的操作数的状态设置为已准备 好; 相关指令确定器313用于在经由第一判断器311判定操作队列100中存在与译码 后指令411的操作数相关的有效指令时,将与该操作数相关的全部有效指令中距离译码后 指令411最近的有效指令确定为译码后指令411的该操作数的相关指令430 ;
第二判断器314用于判断相关指令430的指令执行结果是否已经写回或正在写 回;以及 第二设置器315,用于在经由第二判断器314判定相关指令430的指令执行结果已 经写回或正在写回时,将译码后指令411中相应的操作数的状态设置为已准备好。
如图5所示,操作数状态更新器320可优选为包括第三判断器321和第三设置器 322。其中 第三判断器321,用于判断指令执行结果正在写回的指令是否为所述未发射指令 的操作数的相关指令;以及 第三设置器,用于在经由所述第三判断器判定指令执行结果正在写回的指令是所 述未发射指令的所述操作数的相关指令时,将所述未发射指令的所述操作数的状态设置为 已准备好。 下面将具体到对操作队列中用于保存指令的相关信息的操作队列项的各个域进 行的操作,对上述指令调度装置300进行更详细的说明。 图6示出了可应用于本发明指令调度装置的,操作队列中用于保存指令相关信息 的操作队列项域构成的示意图。 如图6所示,构成操作队列项的域至少包括有 Opcode :操作码域,表示指令的具体操作类型,比如加法ADD、减法SUB、乘法MUL、 除法DIV等操作。
8
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的值来自于读寄存器的值。 Rdy2 :如果在操作队列中位于该指令之前的有效指令中,不存在操作数2的相关 指令,则操作数2的值来自于读寄存器的值。 Wbl :表示操作数1的相关指令的指令执行结果已经写回至操作队列。 Wb2 :表示操作数2的相关指令的指令执行结果已经写回至操作队列。 Wb :表示指令已经执行完,并且指令执行结果已经写回至操作队列。该指令等待成
为操作队列中的第一条指令后提交。 基于上述用于保存指令信息的操作队列项的域构成,在将译码后指令411写入操 作队列100时,指令写入器310中的第一判断器311将该指令的操作数1、操作数2的源寄 存器分别与操作队列100中各有效指令420的目的寄存器进行比较(操作队列100中的有 效指令420是指state域不为"00"的指令),比较是否是同一个寄存器,以使得第一设置 器312和/或相关指令确定器313、第二判断器314、第二设置器315能够相应根据比较结 果给Rdyl、Rdy2、 Qidl、Qid2、 Wbl、Wb2等域赋值。 其中,第一设置器312和相关指令确定器313通过设置译码后指令411中与操作 数l相对应的Qidl域和Rdyl域来设置操作数1的状态。具体为在经由第一判断器311判 定操作队列100中不存在目的寄存器与操作数1的源寄存器为同一寄存器的有效指令420 时,第一设置器312将Rdyl域设置为1,以表示操作数1来自于寄存器且已准备好;以及在 经由第一判断器311判定操作队列100中存在目的寄存器与操作数1的源寄存器为同一寄 存器的有效指令420时,相关指令确定器313将与Rdyl域设置为0,并将与Qidl域设置为 相关指令430的操作队列项号qid,以表示操作数1来自于相关指令430的指令执行结果,
9且操作数1的状态决定于相关指令430的指令执行结果是否已经写回或正在写回。
此外,第二设置器315通过设置译码后指令411中与操作数1相对应的Wbl域来设置操作数1的状态。具体为在经由第二判断器314判定相关指令430的指令执行结果已经写回或正在写回时,第二设置器315将与Wbl域设置为l,以表示操作数l已准备好。
将参考图7所示指令写入器310的处理流程的优选示例进行更详细的说明如下
步骤S1,经由第一判断器311判断操作队列100中是否存在目的寄存器与操作数1的源寄存器为同一寄存器的有效指令,并基于判断结果选择性执行下述步骤SIN或S1Y。
步骤S1N,在经由第一判断器311判定操作队列100中不存在操作数1的相关指令时,第一设置器312将与操作数1相对应的Rdyl域设置为1 ,以表示操作数1的值来自于寄存器且已准备好。 步骤S1Y,在经由第一判断器311判定操作队列100中存在目的寄存器与操作数1的源寄存器为同一寄存器的有效指令时,相关指令确定器313将与操作数1相关的有效指令中距离当前指令最近者确定为相关指令430,并将与操作数1相对应的Rdyl域设置为0,同时将与操作数1相对应的Qidl域设置为相关指令430的操作队列项号qid,以表示操作数1的值来自于相关指令430的指令执行结果,也即操作数1的状态决定于相关指令430的指令执行结果是否已经写回或正在写回,就此执行以下步骤S2(包括步骤S2-l和S2-2)。
步骤S2-1,经由第二判断器314判断相关指令430的指令执行结果是否已经写回;步骤S2-2,经由第二判断器314判断结果总线500的Qid域值是否等于相关指令430的qid号,也即判断相关指令430的指令执行结果是否正在写回。并且,基于步骤S2-l和S2-2的判断结果选择性执行下述步骤S2N或S2Y。 需要说明的是,尽管图7将步骤S2-l绘制为在步骤S2-2之前执行,当本领域技术人员在掌握本发明的技术原理之后应能明白,步骤S2-l和S2-2均旨在于判断操作数1是否准备好,两者之间没有必然的时序先后联系,在具体实施中完全可根据个人喜好任意选择步骤S2-l和S2-2的执行时序。 步骤S2Y,在经由第二判断器314判定相关指令430的指令执行结果已经写回或正在写回时,第二设置器315将与操作数1相对应的Wbl域设置为1,以表示操作数1已准备好。 步骤S2N,在经由第二判断器314判定相关指令430的指令执行结果不仅尚未写回且也没有被正在写回时,第二设置器315保持与操作数1相对应的Wbl域值不变,以继续表示操作数1的值来自于相关指令430的指令执行结果且尚未准备好。 对于图7,应能理解的是,虽然以操作数1为例进行了解释,针对该译码后指令411的其它操作数也需进行类似的判断和域值设置。 另一方面,基于上述用于保存指令信息的操作队列项的域构成,对于已存在于操作队列100中的未发射指令421,操作数状态更新器320中的第三判断器321将该指令中分别与操作数1、操作数2相对应的Qidl、Qid2与结果总线500的Qid域值进行比较,以判断其相关指令的指令执行结果是否正在返回,并使得第三设置器322能够根据比较结果给Rdyl、Rdy2、Wbl、Wb2等域赋值。 其中,第三设置器322通过更新未发射指令421中与操作数1相对应的Wbl域值来更新操作数l的状态,具体为基于未发射指令421中与操作数l相对应的Qidl域值,在
10经由第三判断器321判定指令执行结果正在写回的指令是该Qidl域值所指向的相关指令430时,第三设置器322将与操作数1相对应的Wbl域更新为1,以表示操作数1已准备好。
此外,基于未发射指令421中与操作数1相对应的Qidl域值,在Qidl域值所指向的相关指令430已提交的情况下,第三设置器322将与操作数1相对应的Rdyl域更新为1 。
将参考图8所示操作数状态更新器320的处理流程的优选示例进行更详细的说明如下 步骤S3,经由第三判断器321判断结果总线500的Qid域值是否等于操作数1的相关指令430的qid号,也即判断相关指令430的指令执行结果是否正在写回,并基于步骤S3的判断结果选择性执行下述步骤S3N或S3Y。 步骤S3N,在经由第三判断器321判定相关指令430的指令执行结果尚未正在写回时,第三设置器322保持与操作数1相对应的Wbl域值不变,以继续表示操作数1的值来自于相关指令430的指令执行结果且尚未准备好。 步骤S3Y,在经由第三判断器321判定相关指令430的指令执行结果正在写回时,第三设置器322将与操作数1相对应的Wbl域值更新为1,以表示操作数1的值已准备好。
此外,当操作队列中的指令被提交时,与被提交指令存在数据相关性的未发射指令中相应Rdy域需要相应地更新为1。这是因为,操作队列中提交了的指令的指令执行结果将写回到寄存器中,从而与被提交指令存在数据相关的指令可直接从寄存器中读值,所以Rdy域需要相应地置为1。继续参照图8具体而言 步骤S4,第三判断器321还基于未发射指令421中与操作数1相对应的Qidl域值,判断Qidl域值所指向的相关指令430是否已经提交,并基于判断结果选择性执行以下步骤S4N和S4Y。 步骤S4N,在经由第三判断器321判定相关指令430尚未提交时,第三设置器322保持与操作数1相对应的Rdyl域值不变,以继续表示操作数1的值来自于相关指令430的指令执行结果。 步骤S4Y,在经由第三判断器321判定相关指令430已提交时,第三设置器322将与操作数1相对应的Rdyl域值更新为1,以表示操作数1的值来自于读寄存器。
对于图8,类似地,应能理解的是,虽然以操作数1为例进行了解释,针对该未发射指令421的其它操作数也需进行类似的判断和域值更新。 通过如上所述经由指令写入器310和操作数状态更新器320设置和实时更新操作队列100中各未发射指令421的各操作数的状态,本发明指令调度装置300中的待发射判断器330通过基于各未发射指令421的各操作数的状态,判断操作队列中是否存在所有操作数均已准备好的待发射指令422。参照图9具体而言 指令准备好是指指令的所有操作数都已经准备好。而指令的操作数1准备好是指指令所在的操作队列项的Rdyl域等于1 (参见图9步骤S5),或者Wbl域为1 (参见图9步骤S6),或者有效结果总线的qid号与Qidl号相等(参见图9步骤S7)。其中,如果Rdyl为l,则操作数1的值来自于读寄存器而获得的值;如果Wbl为l,则操作数1的值来自于操作队列中相关指令430的指令执行结果;如果有效结果总线的qid号与qidl号相等,则操作数l的值来自于结果总线上的指令结果。当Rdyl域不为l时再判断Wbl域。指令的其它操作数准备好的概念和上述操作数1准备好的概念一致。
在判断完未发射指令421的操作数是否均已准备好之后,也即在确定待发射指令422之后,上述指令调度装置300中的指令发射器340根据处理器的发射宽度以及处理器的结构选择发射策略。如果不存在待发射指令422,则在当前拍不发射指令;如果只有一条待发射指令422,则只发射一条指令。所述发射策略即可以实现单发射也可以实现双发射,也可以扩展到实现更宽的发射宽度;以及既可以实现单发射,也可以实现双发射或者多发射。
优选地,可以将操作队列100中操作数均已准备好的待发射指令422,根据指令操作类型进行分类,分为非乘、除操作的整型操作,乘、除操作的整型操作,浮点操作以及访存操作。可按照指令进入操作队列的顺序,找到操作队列中每类指令的第一条操作数准备好的指令;然后根据访存优先级最高,非乘、除操作的整型操作优先级第二,乘、除操作的整型操作优先级第三,浮点操作优先级最低的顺序,选择出两条待发射指令422进行发射。具体流程可参见附图ll所示。 需要说明的是,上述指令操作类型及优先级顺序仅旨在进行示例性说明。本领域技术人员应能理解,指令的分类以及优先级的确定,在具体实施中,不同的处理器完全可根据实际需要不同而各自设定 此外,在选择待发射指令发射422时还需要考虑相应的保留站200是否存在空闲项可用来存放从操作队列中发射来的指令。如果保留站中存在空闲项,则将操作队列100中各操作数均已准备好的待发射指令422发射到保留站200中。 另外,本发明还提供了与上述指令调度装置相对应的指令调度方法。该指令调度方法包括指令写入步骤,用于基于要写入操作队列的译码后指令与操作队列中的有效指令之间的数据相关性、已经写回和正在写回至操作队列的指令执行结果,来设置译码后指令的各操作数的状态,并将设置后的译码后指令作为待写入指令写入操作队列;操作数状态更新步骤,用于基于操作队列中各未发射指令与指令执行结果正在写回的指令之间的数据相关性,更新各未发射指令的操作数的状态;待发射判断步骤,用于基于各未发射指令的各操作数的状态,判断操作队列中是否存在所有操作数均已准备好的待发射指令;以及指令发射步骤,用于在保留站有空闲时,将经由待发射判断步骤所判定的待发射指令发射至保留站。 对于上述指令调度方法,前述针对指令调度装置的描述均同样适用。并且,本
领域技术人员还应能理解实现上述方法实施例的全部或部分步骤可通过程序指令相关
的硬件来完成;所述程序可以存储于计算机可读取存储介质中,该程序在执行时包括上
述方法实施例中的全部或部分步骤;所述的存储介质包括ROM/RAM (Read Only Memory/
Random-Access Memory,只读存储器/随机访问内存)、磁碟或光盘等。 下面将参考图11A 图111描述根据本发明指令调度方法的指令从译码到发射过
程的一个应用示例,以具体解释本发明的技术原理。 如图IIA所示译码后的指令写入操作队列,操作队列具有空闲项。在本例中,译码后的指令写入操作队列需要l个时钟周期(l个cycle);操作队列中的指令发射到保留站中需要l个时钟周期;访存部件执行LW指令需要4个时钟周期;定点功能部件执行非乘、除整型指令需要1个时钟周期,执行乘、除整型指令需要2个时钟周期,浮点功能部件执行浮点指令需要2个时钟周期;提交指令需要1个时钟周期。 1、如图IIB所示,在第1时钟周期的时钟上升沿,LW 令写到操作队列的第一项中,其qid号为"000 "(表示操作队列的第1项)。LW的操作数是准备好的,其Rdyl、Rdy2域为l。 2、如图11C所示,在第2时钟周期的时钟上升沿,LW指令从操作队列中发射到保留站,操作数的值来自于读寄存器的值,LW指令所在的操作队列项的状态由"01"变为"10"。LW访存需要4个时钟周期,所以经过第2时钟周期、第3时钟周期、第4时钟周期、在第5时钟周期的尾端结果总线送回访存结果。同时在第2时钟周期,MUL指令写入到操作队列中。MUL指令的操作数R1与LW相关且LW未写回,所以Rdyl为0, Qidl域为"000" (LW指令所在的操作队列项号),Wbl域为0 ;没有与操作数R2相关的指令,Rdy2为1。在此拍,操作队列中只有一条未发射且操作数准备好的指令,没有定点、浮点指令,此时双发射装置只能发射一条有效指令。 3、如图11D所示,在第3时钟周期的时钟上升沿,ADD指令写入到操作队列中。ADD的操作数Rl与LW指令相关且LW指令未写回,所以Rdyl为0, Qidl域为"000 " (LW指令所在的操作队列项号),Wbl域为0 ;ADD的操作数R3与MUL指令相关且MUL指令未写回,所以Rdy2为0, Qid2域为"001 " (ADD1指令所在的操作队列项号),Wb2域为0。在第3时钟周期,没有操作数准备好的指令,在第3时钟周期没有指令发射到保留站中。
4、如图11E所示,在第4时钟周期的时钟上升沿,SUB指令写入到操作队列中。在操作队列中没有与SUB指令的操作数R4、 R5相关的指令,所以SUB指令所在的操作队列项的Rdyl,Rdy2域为1,该指令是操作数准备好的。在第4时钟周期,没有操作数准备好的指令,在第4时钟周期没有指令发射到保留站中。 5、如图11F所示,在第5时钟周期的时钟上升沿,FADD指令写入到操作队列中。在操作队列中没有与FADD指令的操作数Fr7、 Fr8相关的指令,所以FADD指令所在的操作队列项的Rdyl,Rdy2域为1,该指令是操作数准备好的。在第5时钟周期,操作数准备好的SUB指令发射到保留站中,SUB指令所在操作队列项的状态由"01"变为"10"。在第5时钟周期,结果总线送回LW访存指令的结果。将有效结果总线的qid值"000"与操作队列中的有效指令的Qidl、 Qid2域进行比较,得到qid号与MUL指令所在项的Qidl相等,与ADD指令所在项的Qidl相等。MUL指令的Rdy2为l,操作数2是准备好的,其值来自于读寄存器的值Rdyl域和Wbl域为O,但是结果总线送回了 MUL指令的操作数l,所以MUL指令是准备好的,在下个时钟周期可以发射。MUL指令也是操作数准备好的,在下个时钟周期也是可以发射的。在本拍没有未发射且操作数准备好的访存指令、浮点指令,只有一条未发射且操作数准备好的整型指令,所以此拍只有一条指令被发射。 6、如图11G所示,在第6时钟周期的时钟上升沿,LW指令结果写回,LW指令所在队列项的Wb域置为"l"。 MUL, ADD指令的Wbl域相应的置为1。 MUL指令从操作队列中发射到保留站中,MUL指令所在的操作队列项的状态由"01"变为"10"。 SUB指令结果写回,SUB指令所在的队列项的Wb域置为"1"。 7、如图IIH所示,在第7时钟周期的时钟上升沿,LW指令提交,LW指令所在队列项的状态由"10"变为"00"。 MUL,ADD指令的Rdyl域相应的置为1。执行MUL指令需要两拍,第7时钟周期的尾端,MUL、 FADD指令执行结束,整型结果总线送回MUL指令的结果,浮点结果总线送回FADD指令的结果。与MUL指令相关的ADD的操作数R2准备好,其值来自于结果总线返回的结果。在下个时钟周期的上升沿ADD指令可以被发射。
8、如图11I所示,在第8时钟周期的时钟上升沿,ADD指令发射到保留站中,其状 态由"01"变为"10",整型结果总线和浮点结果总线的值分别写回到MUL指令、FADD指令所 在的操作队列项,MUL、FADD指令所在的操作队列项的Wb域置分别为1。 ADD指令发射到保 留站中,ADD指令所在操作队列项的状态域由"01"变为"10"。在第8时钟周期的尾端,结 果总线送回ADD指令的结果。 9、在第9时钟周期的时钟上升沿,MUL指令提交,MUL指令所在队列项的状态由 "10"变为"00"。结果总线送回的ADD指令的结果写入操作队列中,ADD指令所在的操作队 列项的Wb域置为1。在后续的时钟周期里,ADD, SUB、 FADD指令也将相继提交。
需要声明的是,上述发明内容及具体实施方式
仅旨在证明本发明所提供技术方案 的实际应用,不应解释为对本发明保护范围的限定。本领域技术人员在本发明的精神和原 理内,当可作各种修改、等同替换、或改进。本发明的保护范围以所附权利要求书为准。
权利要求
一种指令调度装置,用于对微处理器中从操作队列向保留站发射指令进行动态调度,其特征在于,包括指令写入器,用于基于要写入所述操作队列的译码后指令与所述操作队列中的有效指令之间的数据相关性、已经写回和正在写回至所述操作队列的指令执行结果,来设置所述译码后指令的各操作数的状态,并将设置后的所述译码后指令作为待写入指令写入所述操作队列;操作数状态更新器,用于基于所述操作队列中各未发射指令与指令执行结果正在写回的指令之间的数据相关性,更新各所述未发射指令的操作数的状态;待发射判断器,用于基于各所述未发射指令的各操作数的状态,判断所述操作队列中是否存在所有操作数均已准备好的待发射指令;以及指令发射器,用于在所述保留站有空闲时,将经由所述待发射判断器所判定的待发射指令发射至所述保留站。
2. 根据权利要求1所述的指令调度装置,其特征在于,所述指令写入器和所述操作数 状态更新器通过侦听结果总线来确定指令执行结果以及指令执行结果正在写回的指令的 操作队列项号,并根据所述操作队列项号将所述指令执行结果写回到所述操作队列中所述 指令所在的操作队列项内。
3. 根据权利要求2所述的指令调度装置,其特征在于,所述指令写入器包括 第一判断器,用于将所述译码后指令的操作数的源寄存器与所述操作队列中各有效指令的指令执行结果的目的寄存器进行比较,以判断所述操作队列中是否存在目的寄存器与 所述译码后指令的所述操作数的源寄存器为同一寄存器的有效指令;第一设置器,用于在经由所述第一判断器判定所述操作队列中不存在目的寄存器与所 述译码后指令的所述操作数的源寄存器为同一寄存器的有效指令时,将所述译码后指令的 所述操作数的状态设置为已准备好;相关指令确定器,用于在经由所述第一判断器判定所述操作队列中存在目的寄存器与 所述译码后指令的所述操作数的源寄存器为同一寄存器的有效指令时,将目的寄存器与所 述译码后指令的所述操作数的源寄存器为同一寄存器的全部有效指令中距离所述译码后 指令最近的有效指令确定为所述译码后指令的所述操作数的相关指令;第二判断器,用于判断所述相关指令的指令执行结果是否已经写回或正在写回;以及第二设置器,用于在经由所述第二判断器判定所述相关指令的指令执行结果已经写回 或正在写回时,将所述译码后指令的所述操作数的状态设置为已准备好。
4. 根据权利要求3所述的指令调度装置,其特征在于,所述操作数状态更新器包括 第三判断器,用于判断指令执行结果正在写回的指令是否为所述未发射指令的操作数的相关指令;以及第三设置器,用于在经由所述第三判断器判定指令执行结果正在写回的指令是所述未 发射指令的所述操作数的相关指令时,将所述未发射指令的所述操作数的状态设置为已准 备好。
5. 根据权利要求1 4中任一项所述的指令调度装置,其特征在于,所述指令发射器根 据所述微处理器的宽度选择单发射策略或多发射策略来进行所述待发射指令的发射。
6. 根据权利要求5所述的指令调度装置,其特征在于,当选择所述单发射策略时,所述指令发射器按照时间顺序或者优先级来进行所述待发射指令的发射。
7. 根据权利要求5所述的指令调度装置,其特征在于还包括用于根据操作类型对所 述操作队列中的指令进行分类的指令分类器;并且所述保留站包括分别与各所述操作类型相对应的子保留站;其中,当选择所述多发射策略时,所述指令发射器基于所述指令分类器的分类结果,在 与所述待发射指令的操作类型相对应的子保留站有空闲时,将所述待发射指令发射至与所 属操作类型相对应的子保留站。
8. —种指令调度方法,用于对微处理器中从操作队列向保留站发射指令进行动态调 度,其特征在于,包括指令写入步骤,用于基于要写入所述操作队列的译码后指令与所述操作队列中的有效 指令之间的数据相关性、已经写回和正在写回至所述操作队列的指令执行结果,来设置所 述译码后指令的各操作数的状态,并将设置后的所述译码后指令作为待写入指令写入所述 操作队列;操作数状态更新步骤,用于基于所述操作队列中各未发射指令与指令执行结果正在写 回的指令之间的数据相关性,更新各所述未发射指令的操作数的状态;待发射判断步骤,用于基于各所述未发射指令的各操作数的状态,判断所述操作队列 中是否存在所有操作数均已准备好的待发射指令;以及指令发射步骤,用于在所述保留站有空闲时,将经由所述待发射判断步骤所判定的待 发射指令发射至所述保留站。
9. 根据权利要求8所述的指令调度装置,其特征在于,在所述指令写入步骤和所述操 作数状态更新步骤中,通过侦听结果总线来确定指令执行结果以及指令执行结果正在写回 的指令的操作队列项号,并根据所述操作队列项号将所述指令执行结果写回到所述操作队 列中所述指令所在的操作队列项内。
10. 根据权利要求9所述的指令调度装置,其特征在于,所述指令写入步骤包括 第一判断步骤,用于将所述译码后指令的操作数的源寄存器与所述操作队列中各有效指令的指令执行结果的目的寄存器进行比较,以判断所述操作队列中是否存在目的寄存器 与所述译码后指令的所述操作数的源寄存器为同一寄存器的有效指令;第一设置步骤,用于在经由所述第一判断步骤判定所述操作队列中不存在目的寄存器 与所述译码后指令的所述操作数的源寄存器为同一寄存器的有效指令时,将所述译码后指 令的所述操作数的状态设置为已准备好;相关指令确定步骤,用于在经由所述第一判断步骤判定所述操作队列中存在目的寄存 器与所述译码后指令的所述操作数的源寄存器为同一寄存器的有效指令时,将目的寄存器 与所述译码后指令的所述操作数的源寄存器为同一寄存器的全部有效指令中距离所述译 码后指令最近的有效指令确定为所述译码后指令的所述操作数的相关指令;第二判断步骤,用于判断所述相关指令的指令执行结果是否已经写回或正在写回;以及第二设置步骤,用于在经由所述第二判断步骤判定所述相关指令的指令执行结果已经 写回或正在写回时,将所述译码后指令的所述操作数的状态设置为已准备好。
11. 根据权利要求io所述的指令调度装置,其特征在于,所述操作数状态更新步骤包括第三判断步骤,用于判断指令执行结果正在写回的指令是否为所述未发射指令的操作 数的相关指令;以及第三设置步骤,用于在经由所述第三判断步骤判定指令执行结果正在写回的指令是所 述未发射指令的所述操作数的相关指令时,将所述未发射指令的所述操作数的状态设置为 已准备好。
12. 根据权利要求8 11中任一项所述的指令调度装置,其特征在于,在所述指令发射 步骤中,根据所述微处理器的宽度选择单发射策略或多发射策略来进行所述待发射指令的 发射。
13. 根据权利要求12所述的指令调度装置,其特征在于,当选择所述单发射策略时,在 所述指令发射步骤中按照时间顺序或者优先级来进行所述待发射指令的发射。
14. 根据权利要求12所述的指令调度装置,其特征在于还包括用于根据操作类型对所述操作队列中的指令进行分类的指令分类步骤;并且 所述保留站包括分别与各所述操作类型相对应的子保留站;其中,当选择所述多发射策略时,在所述指令发射步骤中基于所述指令分类步骤的分 类结果,在与所述待发射指令的操作类型相对应的子保留站有空闲时,将所述待发射指令 发射至与所属操作类型相对应的子保留站。
全文摘要
对微处理器中从操作队列向保留站发射指令进行动态调度的装置和方法,包括指令写入步骤,基于要写入操作队列的译码后指令与操作队列中的有效指令之间的数据相关性、已经写回和正在写回的指令执行结果,设置译码后指令的各操作数的状态后将其写入;操作数状态更新步骤,基于操作队列中各未发射指令与指令执行结果正在写回的指令之间的数据相关性,更新各未发射指令的操作数的状态;待发射判断步骤,基于各未发射指令的各操作数的状态,判断是否存在所有操作数均已准备好的待发射指令;以及指令发射步骤,在保留站有空闲时,将所判定的待发射指令发射至保留站。通过基于指令之间的数据相关性来实现操作数已准备好的指令发射到保留站,能够有效提高流水线效率。
文档编号G06F9/38GK101710272SQ20091023669
公开日2010年5月19日 申请日期2009年10月28日 优先权日2009年10月28日
发明者徐翠萍, 李祖松, 汪文祥, 郝守青 申请人:北京龙芯中科技术服务中心有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1