实验3 指令的调度和延迟分布
3.1实验目的
(1)加深对指令调度技术的理解。
(2)加深对延迟分支技术的理解。
(3)熟练掌握用指令调度技术来解决流水线中的数据冲突的方法。
(4)进一步理解指令调度技术对CPU性能的改进。
(5)进一步理解延迟分支技术对CPU性能的改进。
3.2实验平台
实验平台采用指令级和流水线操作级模拟器MIPSsim。
3.3实验内容和实验截图
首先要掌握MIPSsim模拟器的使用方法。详见附录。
- 启动MIPSsim。
2.根据教材中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义(双击各段,就可以看到各流水寄存器的内容)。
3.选择“配置”→“流水方式”选项,使模拟器工作于流水方式下。
4.用指令调度技术解决流水线中的结构冲突与数据冲突。
1)启动MIPSsim。
2)用MIPSsim的“文件”→“载入程序”选项来加载schedule.asm(在模拟器所在文件夹下的“样例程序”文件夹中)。
- 关闭定向功能。这是通过在“配置”菜单中关闭“定向”(使该项前面没有“√”号)来实现的。
- 执行所载入的程序。通过查看统计数据和时钟周期图,找出并记录程序执行过程中各种冲突发生的次数、发生冲突的指令组合,以及程序执行的总时钟周期数。
第1对指令组合
LW$r2,0($r1)
ADD$r4,$r0,$r2
第2对指令冲突
ADD$r4,$r0,$r2
SW$r4,0($r1)
第3对指令冲突
SW$r4,0($r1)
LW$r6,4($r1)
第4对指令冲突
ADD$r8,$r6,$r1
MUL$r12,$r10,$r1
第5对指令冲突
ADD$r16,$r12,$r1
ADD$r18,$r16,$r1
第6对指令冲突
ADD$r18,$r16,$r1
SW$r18,16($r1)
第7对指令冲突
SW$r18,16($r1)
LW$r20,8($r1)
第8对指令冲突
MUL$r22,$r20,$r14
MUL$r24,$r26,$r14
5)采用指令调度技术对程序进行指令调度,消除冲突。将调度后的程序保持到after-schedule.asm中。
6)载入after-schedule.asm。
7)执行该程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数;
8)根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU性能的作用。
通过比较调度前和调度后的性能,可以清晰地看到指令调度对于提高CPU性能的作用。指令调度可以优化指令执行顺序,减少依赖关系带来的性能损失,提高执行单元的利用率,从而显著提升CPU的整体性能。
5.用延迟分支减少分支指令对性能的影响。
1)启动MIPSsim。
- 载入branch.asm。
- 关闭延迟分支功能。这是通过在“配置”→“延迟槽”选项来实现的。
- 执行该程序。观察并记录发生分支延迟的时刻。
分支延迟时刻:6,9,13,21,24,28。
- 记录执行该程序所花的总时钟周期数。
- 假设延迟槽为一个,对branch.asm进行指令调度,然后保存到“delayed-branch.asm”中。
- 载入delayed-branch.asm。
- 打开延迟分支功能。
- 执行该程序,观察其时钟周期图。
- 记录执行该程序所花的总时钟周期数。
- 对比上述两种情况下的时钟周期图。
采用延迟分支的时钟周期短 ,性能高;未采用延迟分支的时钟周期长,性能低 。
2.根据记录结果,比较没采用延迟分支和采用了延迟分支的性能。论述延迟分支对于提高CPU性能的作用。
根据记录结果,对比了采用延迟分支和没采用延迟分支的性能。延迟分支有助于提高CPU性能,因为它能够减少由于分支指令引起的流水线停顿。通过延迟分支,CPU能够在等待分支结果的同时继续执行后续指令,从而提高了指令级并行度,减少了性能损失。