您好,欢迎访问三七文档
实验三数据相关一、实验目的通过本实验,加深对数据相关的理解,掌握如何使用定向技术来减少数据相关带来的暂停。二、实验内容1.在不采用定向技术的情况下(通过Configuration菜单中的EnableForwarding选项设置),用WinDLX模拟器运行程序data_d.s;2.记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;3.在采用定向技术的情况下,用WinDLX模拟器再次运行程序data_d.s;4.记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比;5.根据上面记录的数据,计算采用定向技术后性能提高的倍数。三、实验原理WinDLX相关知识,在报告二中,以描述,在此不再赘述。数据相关当某一条指令需要访问某个寄存器时,此时这个寄存器正被另一条指令所使用,从而产生数据相关。四、实验步骤1.双击WinDLX图标运行WinDLX。装入测试程序之前,先初始化WinDLX模拟器:点击File菜单中的Resetall菜单项,弹出一个“ResetDLX”对话框。然后点击窗口中的“确认”按钮即可。2.选择File/LoadCodeorData,按如下步骤操作,可将data_d.s这个程序装入主存:点击data_d.s点击---select按钮---点击load按钮3.通过如图选项,设置为不采用定向技术,按F7键执行程序,观察各窗口情况,直到程序执行完毕;4.采用定向技术,重复执行程序,观察各窗口情况。五、截图分析至于哪些指令因为什么原因产生各种相关,在报告二中,有详细分析。此报告截图分析,重点在于分析数据相关的相关指令在使用和不使用定向技术有什么不同(使用相同代码)。下面,请看截图与分析:图1不采用定向技术图2采用定向技术【分析1】从图1图1、图2均执行lhir0,0x0和adduir2,r2,0x134两条指令。但图1未使用了定向技术,产生了延迟,完成两条指令需要8个周期;图2使用了定向技术,只需要6个周期。从而可得,定向技术可以解决数据相关问题,从而提高CPU效率。图3使用定向技术却产生数据相关【分析2】图3执行的是lwr1,0x0(r2)和addr1,r1,r3两条指令。在执行时,虽然采用了定向技术,但还是产生了数据相关。说明,不是所有的数据相关问题都可以用定向技术解决。图4未采用定向技术统计【分析3】从图4可知,在不使用定向技术时,执行代码用了202个CPU时钟周期,数据相关的延迟情况如下:RAW相关:104个周期,占51.48%WAW相关:0个周期,占0总共延迟:116个周期,占57.42%图5采用定向技术统计结果【分析4】从图5可知,在使用定向技术时,执行代码用了128个CPU时钟周期,数据相关的延迟情况如下:RAW相关:30个周期,占23.44%(其中,LD延迟20个周期,占66.67;分支延迟10个周期,占33.33%)WAW相关:0个周期,占0总共延迟:42个周期,占32.81%【分析5】将图4、图5两者结合起来分析,发现虽然定向技术不能完全解决数据相关问题,但还是解决了问题,能提高CPU的效率。在此实验中,定向技术将CPU的效率提高了57%。六、实验总结通过本次实验,我有如下收获:1.加深了对数据相关的理解,了解数据相关对CPU性能的影响;2.学会了解决数据相关问题的一些方法,如定向技术,调整指令顺序;3.增强了运用所学知识解决实际问题的能力。4.加深对指令调度的理解,了解指令调度技术对CPU性能改进的好处。七、附录data_d.s源码如下:LHIR2,(A16)&0xFFFFADDUIR2,R2,A&0xFFFFLHIR3,(B16)&0xFFFFADDUIR3,R3,B&0xFFFFloop:LWR1,0(R2)ADDR1,R1,R3SW0(R2),R1LWR5,0(R1)ADDIR5,R5,#10ADDIR2,R2,#4SUBR4,R3,R2BNEZR4,loopTRAP#0A:.word0,4,8,12,16,20,24,28,32,36B:.word9,8,7,6,5,4,3,2,1,0
本文标题:数据相关
链接地址:https://www.777doc.com/doc-5795971 .html