《计算机体系结构实验(共11页).docx》由会员分享,可在线阅读,更多相关《计算机体系结构实验(共11页).docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实验3用MIPS指令实现求两个数组的点积 班级 姓名 学号 1.实验目的(1)通过实验熟悉实验 1 和实验 2 的内容(2)增强汇编语言编程能力(3)学会使用模拟器中的定向功能进行优化(4)了解对代码进行优化的方法2.实验原理本次实验通过MIPS语句实现对应的功能,通过代码在指令级和流水线操作级模拟器MIPSsim上执行,根据加载的文档代码中对应操作的通用寄存器,来观察执行的结果是否正确;然后通过观察统计一栏中汇总的执行周期总数,来判断优化和定向前后执行的效率高低,并判断静态调度的情况。3.实验内容和步骤:(1)自行编写一个计算两个向量点积的汇编程序,该程序要求可以实
2、现求两个向量点积计算后的结果。向量的点积:假设有两个 n 维向量 a、b,则 a 与 b 的点积为:两个向量元素使用数组进行数据存储,要求向量的维度不得小于 10(2)启动 MIPSsim。(3)载入自己编写的程序,观察流水线输出结果。注意:不要使用浮点指令及浮点寄存器!使用 TEQ $r0 $r0 结束程序!代码如下:.textmain:ADDIU $r1,$r0,array1ADDIU $r2,$r0,array2ADDIU $r3,$r0,10ADDIU $r7,$r0,0loop:LW $r4,0($r1)LW $r5,0($r2)MUL $r6,$r4,$r5ADD $r7,$r7,
3、$r6 #r7存放的是点积结果ADDI $r1,$r1,4ADDI $r2,$r2,4ADDI $r3,$r3,-1BGTZ $r3,loopTEQ $r0,$r0.dataarray1: .word 0,1,2,3,4,5,6,7,8,9array2: .word 0,1,2,3,4,5,6,7,8,9运行结果如下:汇总情况如下:时钟周期图如图所示:(中间部分省略)(4)使用定向功能再次执行代码,与刚才执行结果进行比较,观察执行效率的不同。使用定向功能执行,汇总如下:由此可见,定向后的执行效率为定向前的134.%,同时,所少的执行周期为RAW停顿周期。时钟周期图如图所示:(5)采用静态调度方
4、法重排指令序列,减少相关,优化程序代码如下:.textmain:ADDIU $r1,$r0,array1ADDIU $r2,$r0,array2ADDIU $r3,$r0,10ADDIU $r7,$r0,0loop:LW $r4,0($r1)LW $r5,0($r2)MUL $r6,$r4,$r5ADDI $r1,$r1,4ADDI $r2,$r2,4ADDI $r3,$r3,-1ADD $r7,$r7,$r6 #此处进行了优化BGTZ $r3,loopTEQ $r0,$r0.dataarray1: .word 0,1,2,3,4,5,6,7,8,9array2: .word 0,1,2,3,
5、4,5,6,7,8,9运行结果如下:汇总情况如下:时钟周期如下:(中间部分省略)与进行优化前相比,效率为原来的157/127 = 123.62205%,所少的周期数为RAW停顿周期数。(6)对优化后的程序使用定向功能执行,与刚才执行结果进行比较,观察执行效率的不同。采用定向优化后,执行结果如下:时钟周期如图所示:(中间部分省略)由此可见,定向后的执行效率为定向前的127/107 = 118.6916%所少的周期数为RAW停顿周期数。4.分析结果代码优化后的性能要比代码优化前的性能提高很大。代码优化之前,需要397个时钟周期,而优化后需要316个时钟周期,停顿周期也从237个时钟周期减少到了134个时钟周期,数据相关和控制相关都有所减少。但是代码优化后因为trap停顿的时钟周期数有所增加5.实验总结通过本次实验更进一步了解了代码优化的重要性,实际应用中一个优化的代码可以提高工作效率,减少不必要的开销,代码优化最重要的工作时分析各种相关性,这样才有可能进一步将代码优化。平时学习时更应该注意对代码优化的学习。专心-专注-专业