《计算机系统结构》指令级并行及限制 (1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(4)确认:当一条指令不是预测错误的分支转移指令到达 ROB的出口(FIFO)且结果有效时,将结果回写到目的寄存器。 如果是存操作,则将结果写入存储器。指令的前瞻执行过 程结束,然后将指令从ROB中清除。
21
如果分支预测正确则此分支执行完毕。一些机器称这
个过程为完成(Completion或Graduation)。 当预测错误的分支指令到达ROB的出口时,将指出前
➢对于SPEC89基准测试程序,使用有4096个入口的转移 预测缓存会获得82%-99%的准确率。此外,一个有4K个 入口的缓存与一个无限大的缓存相比,在准确率上差 不多。
10
2. 转移目标缓存
为了减小流水线的转移代价,必须确定当前正在译 码的指令是否是转移指令,如果是,那么下一条指令的 地址是什么。如果是转移指令且知道下一条指令的地址, 那么就可以将转移代价降为0。把为转移的后继指令保 存预测地址的转移预测Cache称为转移目标缓存或转移 目标Cache。
通常将指令由前瞻转化为非前瞻这一步骤加到执行阶段 以后,称为指令的确认(Instruction commit)。
实现前瞻的关键思想是:
允许指令乱序执行,但必须顺序确认。只有确认以后的 结果才是最终的结果,从而避免不可恢复的行为,如更新机 器状态或执行过程发生异常。
16
加入前瞻后,需要将指令的执行和指令的确认区分开, 允许指令在确认之前就执行完毕。
➢通常使用2bit预测法来弥补这个缺陷,在这种预测法中,
仅当错误两次时才改变预测方向,图为2bit预测法的有限
状态机。
转移 被选中
转移未 被选中
预测转移被选中 11
转移 被选中
预测转移不被选中 01
转移 被选中
预测转移被选中 10
转移未 被选中
预测转移不被选中 00
研究发现, 2bit几乎与n bit预测方法 的效果相同,
指令确认阶段需要一套额外的硬件缓冲,来保存那些执 行完毕但未经确认的指令及其结果。这种硬件的缓冲称为再 定序缓冲(ReOrder Buffer,ROB),它同时还用来在前瞻 执行的指令之间传送结果。
在指令执行完毕到确认的这段时间里,由ROB提供所有 其他指令需要的作为操作数的数据。为了简便,这里将存缓 冲的功能集成到再定序缓冲。其实ROB还可以取代取缓冲区, 因为结果在写入寄存器之前由ROB保存。 在实际机器中,存 /取缓冲可以独立出来。
1
第四章 指令级并行及限制
4.1 指令级并行的概念 4.2 指令的动态调度 4.3 转移预测技术 4.4 Intel Pentium 4 实例分析
2
4.3 转移预测技术
前面讨论基本块时,知道程序中平均5-7条指令就会遇到
转移指令,因此控制相关也是造成流水线停顿的一种主要原 因。 R4000流水线的基本分支延迟为3个时钟周期
23
24
• 前瞻执行,允许乱序执行,必须顺序确认,如上表的 SUBD指令已执行完但必须等MULD确认后才能确认。
• 前瞻执行可以做到精确异常处理。如,上例MULTD引 起异常,可以等到它到达ROB出口,再进行异常处理,而 将其后等待确认的指令清除掉。
基于硬件的前瞻和动态调度相结合,解决了几种 相关问题。可以做到系统结构相同但不同的机器仍能 够使用相同的编译器。而前瞻执行的主要缺点是,所 需的硬件太复杂。
为提高转移预测的准确率或者甚至提前执行转移预 测的指令,则需要采用动态转移技术。
6
4.3.2 动态转移预测
动态分支预测技术:通过硬件技术,在程序执行时根据 近期转移是否成功的历史记录来预测下一次转移的方向。 提前对分支操作做出反应,减少或消除控制相关导致的 流水线停顿。
它能够随程序的执行过程动态地改变转移的预测方向。
因此大多数 系统使用2bit 方法。
转移 被选中
转移未 被选中
9
➢转移预测缓存可以作为一个在IF流水阶段通过指令地 址访问的专用Cache来实现,也可以附属于指令Cache 中的每一块随指令一起读取。
➢如果经过译码后发现指令为转移指令,并且预测转移 将被选中,则应立刻从预测方向上开始取指令,否则 继续按顺序取指令和执行。
前瞻执行在很多机器中得到应用,如Power PC多 种型号、MIPS多种型号、Intel P6以后的32位处理器 等。
25
4.3.3 动态调度、多发射和推测
到目前为止,我们已经看到了动态调度机制、多发 射机制和推测机制各自是如何工作的。要提高处理器的 性能,希望CPI能够尽量小,最好能够小于1。如果指令流 水线每个时钟周期只能流出一条指令,则CPI就不可能小 于1。只有处理器能够在一个时钟周期流出多条指令时, 才有可能使CPI小于1。
基于硬件的前瞻执行结合了以下3种思想: (1)采用动态的转移预测技术来选择后续执行语句 (2)通过推测技术允许指令在控制相关消除之前开 始执行(能够消除错误推测序列的影响) (3)对基本块采用动态调度。
15
将Tomasulo算法加以扩展就可实现支持指令前瞻执行。 要前瞻执行,不但要将前瞻执行的结果供给其他指令使用, 还要明确这些结果不是实际完成的结果,使用这些结果的任 何指令也是在前瞻执行。这些前瞻执行的指令产生的结果要 一直到指令处于非前瞻执行状态时,才能确定为最终结果, 才允许最终写到寄存器或存储器中。
从简单到复杂的动态转移预测技术如下:
1.转移预测缓存 2.转移目标缓存 3.基于硬件的前瞻执行
以上预测机制的性能随着复杂性与硬件的增加而有 效地提高。
7
1. 转移预测缓存
转移预测缓存,是一小块由转移指令低位地址索引的存 储单元,用来记录转移指令在最近的一次执行中是否被 选中。可能有几条转移指令都映射到了同一个预测缓存 表项。
5
4.3.1 静态转移预测
静态预测方法:无论是采用编译器还是硬件预测, 其预测方向是固定不变的。
* 最简单的方法是预测分支总是命中,错误率平均34%
* 另一种稍好的方法是根据分支的方向来预测分支是 否命中,向后转移的分支预测为选中,向前转移的分 支预测为不选中。 错误率很难低于30%。
* 一个更精确的技术是基于以前运行时得到的配置文 件信息。错误率约14% 左右。花费时间代价。
可能的实现办法:
➢1bit预测在性能上有不足之处,假设一个转移几乎总是被选
中,而当他偶尔未被选中时,错误预测会使预测位空翻,
从而使预测错误两次而不是一次。
带有箭头的线表示 状态转换的方向,线旁 边的T表示指令实际执行 结果为转移成功,而N表 示指令实际执行结果为 转移不成功。
8
可能的实现办法(续):
在这一节中,我们要将三者结合到一起,这将是一 个与现代微处理器十分相似的微系统结构。
考察下面4.的8动循环态在调推度测,和无多推发测射的和情况推下测,方在法双发射处
理器上的报告过程。该循环递增一个定点数组中的所有
元素:
Loop:
LD
R2,0(R1) ;R2= 数组元素
DADDIU R2,R2,#1;递增R2
SD
R2,0(R1);保存结果
DADDIU R1,R1,#8;指针加8
BNE R2, R3,Loop;不是最后一个元素
时转移
假设有单独的定点功能单元进行有效地址计算、ALU运 算和条件转移计算。
否
在转移目标缓存中发
是
现了匹配的入口?
指令是
是
被选中
的转移?
将转移指令地址 和下一条指令的 指令地址输入分
支目标缓存
发送预测 指令地址
在缓存中
存在匹配
的转移入
否
转移被
是 口且预测
选中?
正确的情
况下,是
不存在转
移延迟的;
转移预测错误撤销已 取的指令;从另一目 标开始取指令;删除
转移预测正确; 否则,将 不停顿继续执行 至少付出2
个时钟周
目标缓存中的入口
期的转移
代价。
13
3.基于硬件的前瞻执行(猜测执行、预测执行)
当我们试图进一步开发指令级并行时,维护控制相关性便 成为一个严重的负担。
转移预测技术减少了直接由转移引起的停顿,但是要想使 处理器在一个时钟周期内执行多条指令,仅靠转移预测恐怕无 法使我们获得期望的指令级并行度。
时间(时钟周期)
1
2
3
4
5
6
7
8
9
10
11
BZ 指令存储器
Reg
数据存储器
Reg
指令1
指令存储器
Reg
数据存储器
Reg
ALU ALU ALU ALU ALU
指令2
指令存储器
Reg
数据存储器
Reg
指令3
指令存储器
Reg
数据存储器
Reg
目标
指令存储器
Reg
数据存储器
3
基于单周期延迟分支方法,R4000流水线处理分支指令的时空图
为了保持最高性能,一个宽发射处理器可能需要每个时钟 周期都执行一条转移指令。
因此,要想进一步开发并行度,就必须克服控制相关带来 的问题。可以通过推测转移的结果,并按照推测正确的情况执 行指令,以达到克服控制相关的目的。
14
3.基于硬件的前瞻执行(推测执行)
为了得到更高的并行性,设计者研究出了前瞻执行方 法,即在处理器还未判断指令能否执行就提前执行,如果 前瞻正确,就能够消除控制相关的延迟。
EX
DF
4
前面介绍的循环展开通过减少转移指令数量来减少 其带来的流水线性能损失,本节介绍通过转移预测技术 来减少流水线性能损失。
采用转移预测,就是提前猜测分支的走向,让流水 线按猜测走向连续执行指令,消除或减少分支指令造成 的流水线停顿。
转移预测可通过编译阶段的静态方式和在执行阶段 的硬件动态预测两种方式。
预取指令地址 查找
转移目标 缓存中的 入口数目
11
预测的指令地址
=
不匹配:认为不是转移 指令;继续正常执行
匹配:认为转移是转移指令,预测 指令地址将作为下一条指令地址
转移预测为被选中或者 不被选中
使用转 IF 移目标 缓存的 详细步 骤图。
否
ID
正常指 令执行
EX
12
将指令地址发往存储器和转 移目标缓存
瞻执行错误;刷新ROB并从分支的正确入口重新开始执行。 因此,分支预测的准确性是很重要的,不正确的预测
会导致已经前瞻执行的指令全部作废,降低CPU性能。
ROB的每个项主要包含3个域:
(1)指令的类型:分支(尚无结果)、存操作(目的地址为存储 器)或寄存器操作(ALU操作或目的地址是寄存器的取操作)。 (2)目的地址:该域给出结果应写入的目的寄存器号(对于取操 作和ALU指令)或存储器的地址(存操作)。 (3)值:该域用来保存指令前瞻执行的结果,直到指令得到确认。
22
例: 假设浮点流水线中执行的延迟如下: 加法需2个时钟周期 乘法需10个时钟周期 除法需40个时钟周期
给出下面代码段当指令MULTD要确认时的状态。
LD
F6 , 34(R2)
LD
F2 , 45(R3)
MULTD F0 , F2 , F4
SUBD F8 , F2 , F6
DIVD F10 , F0 , F6
ADDD F6 , F8 , F2
指令
LD F6,34(R2) LD F2,45(F3) MULTD F0, F2 ,F4 SUBD F8,F2,F6 DIVD F10,F0,F6 ADDD F6,F8,F2
指令状态表 流出 执行 写结果
√√√ √√√ √√ √√√ √ √√√
下表中,Qj、Qk中存的是产生操作数的ROB编号。
如果保留站或ROB全满,则是结构阻塞,停止流出 指令,直到两者均有空项。
(2)执行:如果有一个或多个操作数无效,就等待并不 断检测CDB。这一步检测先写后读相关。当保留站中的 两个操作数全有效后就可以执行这个操作。
20
(3)写结果:结果有效后将其写到CDB上,结果附带ROB项 号,然后从CDB写到ROB。等待此结果保留站从ROB直接读 到结果而不从CDB读结果。这一段完成后,就可以释放保 留站。 这个阶段的存操作与原始Tomasulo算法不同,原始算 法的存操作在此阶段就向存储器写结果了。
指令序列
分支指令 延迟槽 暂停 暂停
分支目标
时钟周期
12
3
4
5
6
7
8
9
IF ISRF来自EXDFDS
TC
WB
IF
IS
RF
EX
DF
DS
TC
WB
stall stall stall stall stall stall stall
stall stall stall stall Stall stall
IF
IS
RF
17
18
采用Tomasulo算法的DLX浮点部件的原始基本结构
19
使用再定序技术,DLX浮点指令的执行包含以下4步: (1)流出:指令队列取一条指令,如果有空保留站和 ROB项就流出指令,并分配保留站和ROB项。
如果所需操作数在寄存器或ROB中,则将它送入保 留站中。分配给本指令的ROB编号也要送入保留站,当 本指令执行的结果放到CDB上时用它来标示。
21
如果分支预测正确则此分支执行完毕。一些机器称这
个过程为完成(Completion或Graduation)。 当预测错误的分支指令到达ROB的出口时,将指出前
➢对于SPEC89基准测试程序,使用有4096个入口的转移 预测缓存会获得82%-99%的准确率。此外,一个有4K个 入口的缓存与一个无限大的缓存相比,在准确率上差 不多。
10
2. 转移目标缓存
为了减小流水线的转移代价,必须确定当前正在译 码的指令是否是转移指令,如果是,那么下一条指令的 地址是什么。如果是转移指令且知道下一条指令的地址, 那么就可以将转移代价降为0。把为转移的后继指令保 存预测地址的转移预测Cache称为转移目标缓存或转移 目标Cache。
通常将指令由前瞻转化为非前瞻这一步骤加到执行阶段 以后,称为指令的确认(Instruction commit)。
实现前瞻的关键思想是:
允许指令乱序执行,但必须顺序确认。只有确认以后的 结果才是最终的结果,从而避免不可恢复的行为,如更新机 器状态或执行过程发生异常。
16
加入前瞻后,需要将指令的执行和指令的确认区分开, 允许指令在确认之前就执行完毕。
➢通常使用2bit预测法来弥补这个缺陷,在这种预测法中,
仅当错误两次时才改变预测方向,图为2bit预测法的有限
状态机。
转移 被选中
转移未 被选中
预测转移被选中 11
转移 被选中
预测转移不被选中 01
转移 被选中
预测转移被选中 10
转移未 被选中
预测转移不被选中 00
研究发现, 2bit几乎与n bit预测方法 的效果相同,
指令确认阶段需要一套额外的硬件缓冲,来保存那些执 行完毕但未经确认的指令及其结果。这种硬件的缓冲称为再 定序缓冲(ReOrder Buffer,ROB),它同时还用来在前瞻 执行的指令之间传送结果。
在指令执行完毕到确认的这段时间里,由ROB提供所有 其他指令需要的作为操作数的数据。为了简便,这里将存缓 冲的功能集成到再定序缓冲。其实ROB还可以取代取缓冲区, 因为结果在写入寄存器之前由ROB保存。 在实际机器中,存 /取缓冲可以独立出来。
1
第四章 指令级并行及限制
4.1 指令级并行的概念 4.2 指令的动态调度 4.3 转移预测技术 4.4 Intel Pentium 4 实例分析
2
4.3 转移预测技术
前面讨论基本块时,知道程序中平均5-7条指令就会遇到
转移指令,因此控制相关也是造成流水线停顿的一种主要原 因。 R4000流水线的基本分支延迟为3个时钟周期
23
24
• 前瞻执行,允许乱序执行,必须顺序确认,如上表的 SUBD指令已执行完但必须等MULD确认后才能确认。
• 前瞻执行可以做到精确异常处理。如,上例MULTD引 起异常,可以等到它到达ROB出口,再进行异常处理,而 将其后等待确认的指令清除掉。
基于硬件的前瞻和动态调度相结合,解决了几种 相关问题。可以做到系统结构相同但不同的机器仍能 够使用相同的编译器。而前瞻执行的主要缺点是,所 需的硬件太复杂。
为提高转移预测的准确率或者甚至提前执行转移预 测的指令,则需要采用动态转移技术。
6
4.3.2 动态转移预测
动态分支预测技术:通过硬件技术,在程序执行时根据 近期转移是否成功的历史记录来预测下一次转移的方向。 提前对分支操作做出反应,减少或消除控制相关导致的 流水线停顿。
它能够随程序的执行过程动态地改变转移的预测方向。
因此大多数 系统使用2bit 方法。
转移 被选中
转移未 被选中
9
➢转移预测缓存可以作为一个在IF流水阶段通过指令地 址访问的专用Cache来实现,也可以附属于指令Cache 中的每一块随指令一起读取。
➢如果经过译码后发现指令为转移指令,并且预测转移 将被选中,则应立刻从预测方向上开始取指令,否则 继续按顺序取指令和执行。
前瞻执行在很多机器中得到应用,如Power PC多 种型号、MIPS多种型号、Intel P6以后的32位处理器 等。
25
4.3.3 动态调度、多发射和推测
到目前为止,我们已经看到了动态调度机制、多发 射机制和推测机制各自是如何工作的。要提高处理器的 性能,希望CPI能够尽量小,最好能够小于1。如果指令流 水线每个时钟周期只能流出一条指令,则CPI就不可能小 于1。只有处理器能够在一个时钟周期流出多条指令时, 才有可能使CPI小于1。
基于硬件的前瞻执行结合了以下3种思想: (1)采用动态的转移预测技术来选择后续执行语句 (2)通过推测技术允许指令在控制相关消除之前开 始执行(能够消除错误推测序列的影响) (3)对基本块采用动态调度。
15
将Tomasulo算法加以扩展就可实现支持指令前瞻执行。 要前瞻执行,不但要将前瞻执行的结果供给其他指令使用, 还要明确这些结果不是实际完成的结果,使用这些结果的任 何指令也是在前瞻执行。这些前瞻执行的指令产生的结果要 一直到指令处于非前瞻执行状态时,才能确定为最终结果, 才允许最终写到寄存器或存储器中。
从简单到复杂的动态转移预测技术如下:
1.转移预测缓存 2.转移目标缓存 3.基于硬件的前瞻执行
以上预测机制的性能随着复杂性与硬件的增加而有 效地提高。
7
1. 转移预测缓存
转移预测缓存,是一小块由转移指令低位地址索引的存 储单元,用来记录转移指令在最近的一次执行中是否被 选中。可能有几条转移指令都映射到了同一个预测缓存 表项。
5
4.3.1 静态转移预测
静态预测方法:无论是采用编译器还是硬件预测, 其预测方向是固定不变的。
* 最简单的方法是预测分支总是命中,错误率平均34%
* 另一种稍好的方法是根据分支的方向来预测分支是 否命中,向后转移的分支预测为选中,向前转移的分 支预测为不选中。 错误率很难低于30%。
* 一个更精确的技术是基于以前运行时得到的配置文 件信息。错误率约14% 左右。花费时间代价。
可能的实现办法:
➢1bit预测在性能上有不足之处,假设一个转移几乎总是被选
中,而当他偶尔未被选中时,错误预测会使预测位空翻,
从而使预测错误两次而不是一次。
带有箭头的线表示 状态转换的方向,线旁 边的T表示指令实际执行 结果为转移成功,而N表 示指令实际执行结果为 转移不成功。
8
可能的实现办法(续):
在这一节中,我们要将三者结合到一起,这将是一 个与现代微处理器十分相似的微系统结构。
考察下面4.的8动循环态在调推度测,和无多推发测射的和情况推下测,方在法双发射处
理器上的报告过程。该循环递增一个定点数组中的所有
元素:
Loop:
LD
R2,0(R1) ;R2= 数组元素
DADDIU R2,R2,#1;递增R2
SD
R2,0(R1);保存结果
DADDIU R1,R1,#8;指针加8
BNE R2, R3,Loop;不是最后一个元素
时转移
假设有单独的定点功能单元进行有效地址计算、ALU运 算和条件转移计算。
否
在转移目标缓存中发
是
现了匹配的入口?
指令是
是
被选中
的转移?
将转移指令地址 和下一条指令的 指令地址输入分
支目标缓存
发送预测 指令地址
在缓存中
存在匹配
的转移入
否
转移被
是 口且预测
选中?
正确的情
况下,是
不存在转
移延迟的;
转移预测错误撤销已 取的指令;从另一目 标开始取指令;删除
转移预测正确; 否则,将 不停顿继续执行 至少付出2
个时钟周
目标缓存中的入口
期的转移
代价。
13
3.基于硬件的前瞻执行(猜测执行、预测执行)
当我们试图进一步开发指令级并行时,维护控制相关性便 成为一个严重的负担。
转移预测技术减少了直接由转移引起的停顿,但是要想使 处理器在一个时钟周期内执行多条指令,仅靠转移预测恐怕无 法使我们获得期望的指令级并行度。
时间(时钟周期)
1
2
3
4
5
6
7
8
9
10
11
BZ 指令存储器
Reg
数据存储器
Reg
指令1
指令存储器
Reg
数据存储器
Reg
ALU ALU ALU ALU ALU
指令2
指令存储器
Reg
数据存储器
Reg
指令3
指令存储器
Reg
数据存储器
Reg
目标
指令存储器
Reg
数据存储器
3
基于单周期延迟分支方法,R4000流水线处理分支指令的时空图
为了保持最高性能,一个宽发射处理器可能需要每个时钟 周期都执行一条转移指令。
因此,要想进一步开发并行度,就必须克服控制相关带来 的问题。可以通过推测转移的结果,并按照推测正确的情况执 行指令,以达到克服控制相关的目的。
14
3.基于硬件的前瞻执行(推测执行)
为了得到更高的并行性,设计者研究出了前瞻执行方 法,即在处理器还未判断指令能否执行就提前执行,如果 前瞻正确,就能够消除控制相关的延迟。
EX
DF
4
前面介绍的循环展开通过减少转移指令数量来减少 其带来的流水线性能损失,本节介绍通过转移预测技术 来减少流水线性能损失。
采用转移预测,就是提前猜测分支的走向,让流水 线按猜测走向连续执行指令,消除或减少分支指令造成 的流水线停顿。
转移预测可通过编译阶段的静态方式和在执行阶段 的硬件动态预测两种方式。
预取指令地址 查找
转移目标 缓存中的 入口数目
11
预测的指令地址
=
不匹配:认为不是转移 指令;继续正常执行
匹配:认为转移是转移指令,预测 指令地址将作为下一条指令地址
转移预测为被选中或者 不被选中
使用转 IF 移目标 缓存的 详细步 骤图。
否
ID
正常指 令执行
EX
12
将指令地址发往存储器和转 移目标缓存
瞻执行错误;刷新ROB并从分支的正确入口重新开始执行。 因此,分支预测的准确性是很重要的,不正确的预测
会导致已经前瞻执行的指令全部作废,降低CPU性能。
ROB的每个项主要包含3个域:
(1)指令的类型:分支(尚无结果)、存操作(目的地址为存储 器)或寄存器操作(ALU操作或目的地址是寄存器的取操作)。 (2)目的地址:该域给出结果应写入的目的寄存器号(对于取操 作和ALU指令)或存储器的地址(存操作)。 (3)值:该域用来保存指令前瞻执行的结果,直到指令得到确认。
22
例: 假设浮点流水线中执行的延迟如下: 加法需2个时钟周期 乘法需10个时钟周期 除法需40个时钟周期
给出下面代码段当指令MULTD要确认时的状态。
LD
F6 , 34(R2)
LD
F2 , 45(R3)
MULTD F0 , F2 , F4
SUBD F8 , F2 , F6
DIVD F10 , F0 , F6
ADDD F6 , F8 , F2
指令
LD F6,34(R2) LD F2,45(F3) MULTD F0, F2 ,F4 SUBD F8,F2,F6 DIVD F10,F0,F6 ADDD F6,F8,F2
指令状态表 流出 执行 写结果
√√√ √√√ √√ √√√ √ √√√
下表中,Qj、Qk中存的是产生操作数的ROB编号。
如果保留站或ROB全满,则是结构阻塞,停止流出 指令,直到两者均有空项。
(2)执行:如果有一个或多个操作数无效,就等待并不 断检测CDB。这一步检测先写后读相关。当保留站中的 两个操作数全有效后就可以执行这个操作。
20
(3)写结果:结果有效后将其写到CDB上,结果附带ROB项 号,然后从CDB写到ROB。等待此结果保留站从ROB直接读 到结果而不从CDB读结果。这一段完成后,就可以释放保 留站。 这个阶段的存操作与原始Tomasulo算法不同,原始算 法的存操作在此阶段就向存储器写结果了。
指令序列
分支指令 延迟槽 暂停 暂停
分支目标
时钟周期
12
3
4
5
6
7
8
9
IF ISRF来自EXDFDS
TC
WB
IF
IS
RF
EX
DF
DS
TC
WB
stall stall stall stall stall stall stall
stall stall stall stall Stall stall
IF
IS
RF
17
18
采用Tomasulo算法的DLX浮点部件的原始基本结构
19
使用再定序技术,DLX浮点指令的执行包含以下4步: (1)流出:指令队列取一条指令,如果有空保留站和 ROB项就流出指令,并分配保留站和ROB项。
如果所需操作数在寄存器或ROB中,则将它送入保 留站中。分配给本指令的ROB编号也要送入保留站,当 本指令执行的结果放到CDB上时用它来标示。