南京的网站制作公司,wordpress怎么设置关键字,东莞市门户网站建设怎么样,安徽省建设部网站一、实验目的
加深对指令调度技术的理解。加深对延迟分支技术的理解。熟练掌握用指令调度技术来解决流水线中的数据冲突的方法。进一步理解指令调度技术对CPU性能的改进。进一步理解延迟分支技术对CPU性能的改进。
二、实验内容和步骤 首先要掌握MIPSsim模拟器的使用方法。见…一、实验目的
加深对指令调度技术的理解。加深对延迟分支技术的理解。熟练掌握用指令调度技术来解决流水线中的数据冲突的方法。进一步理解指令调度技术对CPU性能的改进。进一步理解延迟分支技术对CPU性能的改进。
二、实验内容和步骤 首先要掌握MIPSsim模拟器的使用方法。见文档《MIPSsim使用手册》。
启动MIPSsim。根据2.5节的相关知识中关于流水线各段操作的描述进一步理解流水线窗口中各段的功能掌握各流水寄存器的含义双击各段就可以看到各流水寄存器的内容。选择“配置”→“流水方式”选项使模拟器工作于流水方式下。用指令调度技术解决流水线中的结构冲突与数据冲突。 1启动MIPSsim。 2用MIPSsim的“文件”→“载入程序”选项来加载schedule.asm在模拟器所在文件夹下的“样例程序”文件夹中。 3关闭定向功能。这是通过在“配置”菜单中关闭“定向”使该项前面没有“√”号来实现的。 4执行所载入的程序。通过查看统计数据和时钟周期图找出并记录程序执行过程中各种冲突发生的次数、发生冲突的指令组合以及程序执行的总时钟周期数。 执行周期总数33RAW停顿16 占周期总数的百分比48.48485%其中load停顿6 占所有RAW停顿的百分比37.5%自陷停顿1 占周期总数的百分比3.030303%停顿周期总数17 占周期总数的百分比51.51515%发生冲突的指令组合
ADDIU $r1,$r0,56LW $r2,0($r1)
LW $r2,0($r1) ADD $r4,$r0,$r2
ADD $r4,$r0,$r2 SW $r4,0($r1)
SW $r4,0($r1) LW $r6,4($r1)
LW $r6,4($r1)ADD $r8,$r6,$r1
MUL $r12,$r10,$r1ADD $r16,$r12,$r1
ADD $r16,$r12,$r1 ADD $r18,$r16,$r1
ADD $r18,$r16,$r1 SW $r18,16($r1)
LW$r20,8($r1)MUL $r22,$r20,$r14
MUL $r22,$r20,$r14 MUL $r24,$r26,$r145采用指令调度技术对程序进行指令调度消除冲突。将调度后的程序保持到 after-schedule.asm中。 6载入after-schedule.asm。
.text
main:
ADDIU $r1,$r0,A
MUL $r22, $r20, $r14
LW $r2,0($r1)
MUL $r24, $r26, $r14
ADD $r4,$r0, $r2
LW $r6,4($r1)
SW $r4,0($r1)
ADD $r8,$r6,$r1
MUL $r12,$r10,$r1
ADD $r18,$r16,$r1
ADD $r16,$r12,$r1
SW $r18,16($r1)
LW $r20,8($r1)
TEQ $r0,$r0
.data
A:
.word 4,6,87执行该程序观察程序在流水线中的执行情况记录程序执行的总时钟周期数
执行周期总数21ID段执行了15条指令硬件配置内存容量4096 B加法器个数1 执行时间周期数6乘法器个数1 执行时间周期数7 除法器个数1 执行时间周期数10 定向机制不采用停顿周期数RAW停顿4 占周期总数的百分比19.04762%其中load停顿1 占所有RAW停顿的百分比25%浮点停顿0 占所有RAW停顿的百分比0%WAW停顿0 占周期总数的百分比0%结构停顿0 占周期总数的百分比0%控制停顿0 占周期总数的百分比0%自陷停顿1 占周期总数的百分比4.761905%停顿周期总数5 占周期总数的百分比23.80952%8根据记录结果比较调度前和调度后的性能。论述指令调度对于提高CPU性能的作用。
指令调度可以消除部分的数据冲突提高了CPU的使用率减少了指令冲突的次数提高了CPU性能性能提高为调度前的33/211.57倍。用延迟分支减少分支指令对性能的影响。 1启动MIPSsim。 2载入branch.asm。 3关闭延迟分支功能。这是通过在“配置”→“延迟槽”选项来实现的。 4执行该程序。观察并记录发生分支延迟的时刻
分支延迟发生的时刻6、9、13、21、24、285记录执行该程序所花的总时钟周期数。
执行周期总数386假设延迟槽为一个对branch.asm进行指令调度然后保存到“delayed-branch.asm”中。
.text
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
ADD $r7, $r0, $r6
TEQ $r0, $r07载入delayed-branch.asm。 8打开延迟分支功能。 9执行该程序观察其时钟周期图。 10记录执行该程序所花的总时钟周期数。
执行周期总数2611对比上述两种情况下的时钟周期图。 12根据记录结果比较没采用延迟分支和采用了延迟分支的性能。论述延迟分支对于提高CPU性能的作用。
通过比较两者时钟周期数可得在使用延迟槽后时钟周期数比没有使用延迟槽情况耗费得少。指令在运行到BGEZAL跳转指令时很可能不会出现延迟等待能够在一定程度上提高CPU的性能。