课程名称实验项目名称学院专业指导教师计算机系统处理器结构实验*1>*1«*1«*1«*1«*1«*1«*1«*1«*1«*1«*1«*1«*1«*1«*1«*1«报告人:学号:班级:**深圳大学实验报告实验时间:2017年11月19日星期日实验报告提交时间:2017年11月30日星期四教务处制一、实验目标1.了解MIPS的五级流水线,和在运行过程中的所产生的各种不同的流水线冒险2.通过指令顺序调整,或旁路与预测技术来提高流水线效率3.更加了解流水线细节和其指令的改善方法4.更加熟悉MIPS指令的使用二、实验内容1.观察一段代码并运行,观察其中的流水线冒险,并记录统计统计信息。2.对所给的代码进行指令序列的调整,以期避免数据相关,并记录统计信息。3.启动forward功能,以获得性能提升,并且记录统计信息。(选做:用perf记录x86中的数据相关于指令序列调整后的时间统计、调整指令,以避免连续乘法间的阻塞。)三、实验环境1.硬件:桌面PC2.软件:Windows,WinMIPS64仿真器四、实验步骤及说明首先,我们给出一段C代码,该段代码实现的是两个矩阵相加。设有4*4矩阵A和4*4矩阵B相加,得到4*4矩阵C:for(inti=0;i<4;i++)For(intj=0;j<4;j++)C[i][j]=A[i][j]+B[i][j];根据上述的C代码,我们将其转换成MIPS语言,然后运行,并进行分析。MIPS代码如下:深圳大学学生实验报告用纸.dataa:.word1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4b:.word4,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1c:.word0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0len:.word4control:.word320x10000data:.word320x10008.textstart:daddir17,r0,0daddir21,r0,adaddir22,r0,bdaddir23,r0,cldr16,len(r0)loop1:sltr8,r17,r16beqr8,r0,exit1深圳大学学生实验报告用纸Mrl』[网M(2,引口Mril,飢聊幽曲1r3,r1,r2sdr3,afri}}£addr5r1,r4-sdr5,bat事EoLbblaEoLbtlaEr-uidiTorg&tEubKLaI'^lbClrl-HKI=IIICRFIdaddirl9,r0,0loop2:sltr8,rl9,rl6beqr8,r0,exit2dsllr8,rl7,2daddr8,r8,rl9dsllr8,r8,3daddr9,r8,r21daddrl0,r&r22daddrll,r&r23ldr9,0(r9)ldrlO,O(rlO)daddrl2,r9,rl0sdrl2,0(rll)daddirl9,rl9,ljloop2exit2:daddirl7,rl7,ljlooplexitl:halt实验前请保证winMIPS64配置中“EnableForwarding”没有选中。将这段代码加载到WinMIPS64中,运行后观察结果(提供Statistic窗口截图)。从Statistic窗口记录:本程序运行过程中总共产生了多少次RAW的数据相关。接下来,我们对产生数据相关的代码逐个分析,请列出产生数据相关的代码,并在下一步中进行分析和优化。调整指令序列在这一部分,我们利用指令调整的方法对数据相关代码进行优化,规避数据相关。通过调整序列来规避这个数据相关,在statics窗口中记录其效果。将此结果与初始的结果进行对比,报告RAW相关的次数减少的数量。Forwarding功能开启接下来,我们要展示Forwarding功能的优化效果。首先,我们要知道如何开启Forwarding功能。法如下:点开configure下拉窗口,给EnableForwarding选项左侧点上勾。开启了Forwarding功能之后,我们再运行,查看结果,解释哪些数据相关的问题得到深圳大学学生实验报告用纸解决,并以截图说明问题解决前后的差异所在。三、结构相关优化流水线中的结构相关,指的是流水线中多条指令在同一时钟周期内争用同一功能部件现象。即因硬件资源满足不了指令重叠执行的要求而发生的冲突。在WinMIPS64中,我们可以在除法中观察到这种现象。要消除这种结构相关,我们可以采取调整指令位置的方法进行优化。在这个部分,我们首先给出几条C代码,然后将该代码翻译成MIPS代码(为了观察的方便,我们这里MIPS代码并不是逐一翻译,而是调整代码,使得其他部分数据相关已经优化,而两条除法指令连续出现),运行并查看结果。接着,调整代码序列,重新运行。观察优化效果。下面是给出的C代码:a=a/bc=c/de=e+1f=f+1g=g+1h=h+1i=i+1j=j+1根据上述的C代码,我们给出数据相关优化的指令如下:.dataa:.word12b:.word3c:.word15d:.word5e:.word1f:.word2g:.word3h:.word4i:.word5.textstart:ldr16,a(r0)ldr17,b(r0)ldr18,c(r0)ldr19,d(r0)ldr20,e(r0)ldr21,f(r0)ldr22,g(r0)ldr23,h(r0)ldr24,i(r0)ddivr16,r16,r17ddivr1...