计算机系统结构实验报告指令调度与延迟分支.docx
《计算机系统结构实验报告指令调度与延迟分支.docx》由会员分享,可在线阅读,更多相关《计算机系统结构实验报告指令调度与延迟分支.docx(9页珍藏版)》请在冰豆网上搜索。
计算机系统结构实验报告指令调度与延迟分支
计算机系统结构实验报告-指令调度与延迟分支
计算机系统结构
实验报告
院系:
09级计算机系
学号:
230xxxxxxxxxxx
姓名:
xxxxxxx
完成日期:
2012.5.20
班级
0xxxxxx
实验日期
201xxx
实验成绩
姓名
xxxxx
学号
2xxxxxxxx
实验名称
指令调度与延迟分支
实
验
目
的
、
要
求
及
器
材
实验目的:
1、加深对指令调度技术的理解;
2、加深对延迟分支技术的理解;
3、熟练掌握用指令调度技术解决流水线中的数据冲突的方法;
4、进一步理解指令调度技术对CPU性能的改进;
5、进一步理解延迟分支技术对CPU性能的改进。
实验平台:
1.采用指令级和流水线操作级模拟器MIPSsim;
2.WindowsxpPC机一台
实
验
内
容
、
步
骤
及
结
果
实验步骤:
1、启动MIPSsim。
2、根据2.5节相关内容关于流水线的描述,进一步理解流水线窗口中各段的功能;
3、选择“配置”--“流水方式”选项;
4、用指令调度解决流水线中的数据冲突
(1)启动MIPSsim;
(2)用MIPSsim的“文件”—“载入程序”选项加载schedule.s;
(3)关闭定向功能,“配置”—“定向”;
(4)执行载入程序,通过查看统计数据与始终周期图,找出并记录程序执行过程中各种冲突的次数没发生冲突的指令组合以及程序执行的总周期数;
程序执行的总周期数:
33
程序冲突的组合:
ADDIU$r1,$r0,A
LW$r2,0($r1)与上条写后读冲突;
ADD$r4,$r0,$r2
SW$r4,0($r1)与上条指令写后读冲突;
LW$r6,4($r1)
ADD$r8,$r6,$r1同样,与上条指令写后读冲突;
MUL$r12,$r10,$r1
ADD$r16,$r12,$r1同样,与上条指令写后读冲突;
ADD$r18,$r16,$r1与上条指令组件冲突
SW$r18,16($r1)同样,与上条指令写后读冲突;;
LW$r20,8($r1)
MUL$r22,$r20,$r14同样,与上条指令写后读冲突;
(5)采用指令调度技术对程序进行指令调度,消除冲突。
将调度后的程序写入afer-schedule.s中。
内容如示:
ADDIU$r1,$r0,A
MUL$r24,$r26,$r14
LW$r2,0($r1)
LW$r20,8($r1)
MUL$r12,$r10,$r1
ADD$r4,$r0,$r2
LW$r6,4($r1)
ADD$r16,$r12,$r1
MUL$r22,$r20,$r14
SW$r4,0($r1)
ADD$r18,$r16,$r1
ADD$r8,$r6,$r1
SW$r18,16($r1)
(6)载入after-schedule.s;
(7)执行该程序。
观察程序在流水线中的执行情况,记录程序执行的总始终周期数。
总始终周期数为:
18
(8)根据记录结果,比较调度前与调度后的性能,论述指令调度对
与提高CPU性能的作用;
很明显,指令调度后时钟总周期数从33降低到18,通过使用指令调度技术显著地提高了CPU的使用率,大大减少了指令冲突的次数,对提高CPU性能有很大的作用。
5、用延迟分支减少分支指令对性能的影响。
(1)启动MIPSsim;
(2)载入branch.s;
(3)关闭延迟分支功能,“配置”—“延迟槽”
(4)执行程序,观察并记录发生分支延迟的时刻;
(5)记录执行改程序所需要的总时钟周期数;
(6)假设延迟槽为一个,对branch.s进行指令调度,然后保存到delayed-branch.s中;
代码如如示:
main:
ADDI$r2,$r0,1024
ADD$r3,$r0,$r0
ADDI$r4,$r0,8
loop:
LW$r1,0($r2)
ADDI$r3,$r3,4
ADDI$r1,$r1,1
SUB$r5,$r4,$r3
SW$r1,0($r2)
BGTZ$r5,loop
LW$r1,0($r2)
ADD$r7,$r0,$r6
TEQ$r0,$r0
(7)载入delayed-branch.s;
(8)打开延迟分支功能;
(9)执行该程序,观察其时钟周期图;
(10)记录执行该程序所用的总时钟周期数;
执行总周期数:
25
ID端执行了19条指令
(11)对比上诉两种情况的时钟周期图;
(12)根据记录结果,比较没采用延迟分支和采用了延迟分支的性能之间的不同,论述延迟分支对于条CPU性能的作用。
对比两种情况的时钟周期总数可知,在使用延迟槽后,指令在运行到跳转指令附近时,在期望概率上很大部分可能不会出现延迟等待,故能够稍微提高CPU性能,但是在跳转指令较多的程序中,此方法更为实用。
6、补充实验
(1)按照要求写程序,但可对样例代码branch改编生成,结果如示:
.text
main:
ADD.D$f2,$f0,$f1
SUB$r0,$r0,$r0
ADDI$r2,$r0,1024
ADDI$r4,$r0,16
ADD$r3,$r0,$r0
loop:
LW$r1,0($r2)
ADDI$r1,$r1,1
SW$r1,0($r2)
ADDI$r3,$r3,4
SUB$r5,$r4,$r3
BGTZ$r5,loop
ADD$r7,$r0,$r6
周期以及停顿信息:
PS:
当定向技术打开和关闭时结果是否有差异?
答:
当定向技术打开时,如果指令调度技术较为理想则不会有太多
的提高,当然如果对指令调度不太成功则会存在较大差异。
Stall是否越少越好?
答:
Stall较少对其性能提高有一定的影响,但是当stall降低到一
定程度后则不会有很大的提高。
总
结
实验小结:
通过这次实验,对指令系统中各种优化方法有了一定的了解,并且在补充实验中使用集中优化策略的综合,让我等对其有了较为总统的认识,对以后编写代码有一定的指导作用。
补充实验中对循环扩展的理解不太充分,只是对大概的流程有了一定的认识,而且对性能的提高不是很好,只减少了20个时钟周期左右,但是CPU使用率明显上升,使得资源得到了跟好的利用。
总之,通过这次实验,对实验教程上的策略有了较为深入的了解,总体上实验难度适中。
附
录