实验二结构相关一、实验目的通过本实验,加深对结构相关的理解,了解结构相关对CPU性能的影响。二、实验原理1.WinDLXWinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线是如何工作的。该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设断点或是连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来,以形象生动的方式描述DLX流水线的工作过程。模拟器还提供了对流水线操作的统计功能,便于对流水线进行性能分析。2.结构相关是指因为程序的执行方向可能被改变而引起的相关。可能改变程序执行方向的指令通常有无条件转移、一般条件转移、复合条件转移、子程序调用、中断等。3.结构相关是指因为程序的执行方向可能被改变而引起的相关。可能改变程序执行方向的指令通常有无条件转移、一般条件转移、复合条件转移、子程序调用、中断等。4.查看Statistics窗口信息,找出存在结构相关的指令对以及导致结构相关的部件,计算暂停时钟周期数占总执行周期数的百分比。5.WinDLX模拟器中的Statistics窗口:Statistics窗口提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、Load/Store指令、浮点指令和traps。窗口中给出事件发生的次数和百分比。三、实验内容1、用WinDLX模拟器运行程序structure_d.s,程序代码见附录。2、模拟器运行环境如下:3、通过模拟,找出存在结构相关的指令对以及导致结构相关的部件。4、记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。5、论述结构相关对CPU性能的影响,讨论解决结构相关的方法。四、实验步骤1、双击WinDLX图标运行WinDLX。装入测试程序之前,先初始化WinDLX模拟器:点击File菜单中的Resetall菜单项,弹出一个“ResetDLX”对话框。然后点击窗口中的“确认”按钮即可。2、选择File/LoadCodeorData,按如下步骤操作,可将stucture_d.s程序装入主存:点击stucture_d.s-点击select按钮点击load按钮3、按F7键程序顺序执行观察6个子窗口的情况。五、截图分析【分析1】截图中,在发生数据相关时,采用了定向技术。相关指令对分别是lhir2,0x0adduir2,r2,0x138和lhir3,0x0adduir3,r3,0x188除此之外,发生数据相关的指令对还有:adduir3,r3,B&0xFFFF与addur4,r0,r3adddf0,f0,f4与adddf2,f0,f2等【分析2】截图中,1,2条指令因为RAW延迟导致数据相关,第2条指令不能立即译码而延迟,且不能用定向技术解决。第3条指令,因为第2条指令在译码段延迟而产生结构相关。综上所述,产生结构相关的功能部件是译码段。【分析3】截图中,第2条指令因为RAW产生数据相关,造成延迟,不能用定向技术解决。第3条指令,因为第2条指令在译码段延迟而产生结构相关。综上所述,产生结构相关的功能部件是译码段。【分析4】截图中,第1,2条指令分别在执行和译码的时候,都要使用A寄存器,从而产生结构相关,产生延迟;第3条指令,因第2条指令产生结构相关而延迟。故产生相关的功能部件是寄存器A和译码段。ldf4,0x0(r3)addf0,f0,f4addf2,f0,f2addf0,f0,f4addf2,f0,f2addir2,r2,0x8addir2,r2,0x8addir3,r3,0x8subr5,r4,r2【分析5】截图中,第2条指令因为跳转指令,而被废弃。【分析6】程序执行完毕,各种统计数据如图所示。六、实验结论改变指令的执行顺序,减少连续相同指令的执行,器件的个数的合理分配,可以减少结构相关,提高流水线的效率,但有时单方面的减少结构相关并不能整体的减少总的相关数的减少,可能会附带的引起其他的相关,从而会在一定程度上降低效率。通常需要采用流水化功能单元的方法或资源重复的方法。bnezr5,looptrap0x0…………七、实验总结通过本次实验,我有如下收获:1.加深了对结构相关的理解,了解结构相关对CPU性能的影响;2.学会了减少结构相关的一些方法;3.增强了运用所学知识解决实际问题的能力;4.更加深入的了解计算机系统流水线的工作过程;八、附录structure_d.s源码如下:LHIR2,(A16)&0xFFFFADDUIR2,R2,A&0xFFFFLHIR3,(B16)&0xFFFFADDUIR3,R3,B&0xFFFFADDUR4,R0,R3loop:LDF0,0(R2)LDF4,0(R3)ADDDF0,F0,F4ADDDF2,F0,F2;-Astallisfound(anexampleofhowtoansweryourquestions)ADDIR2,R2,#8ADDIR3,R3,#8SUBR5,R4,R2BNEZR5,loopTRAP#0;;Exit-thisisacomment!!A:.double1,2,3,4,5,6,7,8,9,10B:.double1,2,3,4,5,6,7,8,9,10