您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 求素数程序prim.s计算机体系结构
实验报告课程名称计算机体系结构实验项目__WinDLX模拟器实验_实验仪器个人计算机系别_计算机学院__专业___网络工程班级/学号网工0903/2009011422学生姓名_______张昭_______实验日期______________________成绩______________________指导教师______侯凌燕_________WinDLX模拟器实验实习目的:通过使用WINDLX模拟器,对程序中的三种相关原理进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。实习环境:WinDLX模拟器可以装入DLX汇编语言程序,然后单步、设置断点或者连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来。模拟器还提供了对流水线操作的统计功能。该模拟器对理解流水线和RISC处理器的特点很有帮助。WinDLX要求的硬件平台是IBMPC兼容机,WinDLX是一个Windows应用程序,运行于Windows3.0以上的操作系统。WinDLX软件包中带有说明文件,供安装程序时候使用。软件包中还有WinDLX教程和联机帮助,可以通过它们进一步了解模拟器的使用方法和DLX处理器的原理。大家在进行模拟实验以前应该仔细阅读这些文档。实习步骤:1.一.用WinDLX模拟器执行下列三个程序(按照最后一位学号除3的余数选择):l求素数程序prim.s(余数为2)分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。熟练掌握WinDLX的操作和使用。Prim.s程序的源代码:;***********WINDLXExp.2:Generateprimenumbertable*************;***********(c)1991G黱therRaidl*************;***********Modified1992MaziarKhosravipour*************;-------------------------------------------------------------------;Programbeginsatsymbolmain;generatesatablewiththefirst'Count'primenumbersfrom'Table';-------------------------------------------------------------------.data;***sizeoftable.globalCountCount:.word10.globalTableTable:.spaceCount*4.text.globalmainmain:;***Initializationaddir1,r0,0;IndexinTableaddir2,r0,2;Currentvalue;***Determine,ifR2canbedividedbyavalueintableNextValue:addir3,r0,0;HelpindexinTableLoop:seqr4,r1,r3;EndofTable?bnezr4,IsPrim;R2isaprimenumberlwr5,Table(R3)divur6,r2,r5multur7,r6,r5subur8,r2,r7beqzr8,IsNoPrimaddir3,r3,4jLoopIsPrim:;***WritevalueintoTableandincrementindexswTable(r1),r2addir1,r1,4;***'Count'reached?lwr9,Countsrlir10,r1,2sger11,r10,r9bnezr11,FinishIsNoPrim:;***Checknextvalueaddir2,r2,1;incrementR2jNextValueFinish:;***endtrap0步进:连续:设置断点:(1)观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。(2)考察增加浮点运算部件对性能的影响。(3)考察增加forward部件对性能的影响。(4)观察转移指令在转移成功和转移不成功时候的流水线开销。2.在不采用定向技术的情况下(去掉Configuration菜单中EnableForwarding选项前的勾选符),用WinDLX运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。改变前:改变后:不采用重新定向技术,我们得到的结果采用定向技术,我们得到的结果:数据相关引起的暂停时钟周期总数、程序执行的总时钟周期数、计算暂停时钟周期数占总执行周期数的百分比:总的周期数(2605),暂停数(2021)百分比:2021/2605=77.58%(采用定向技术)总的周期数(3194),暂停数(2334)百分比:2334/3194=73.07%(不采用定向技术)数据相关:Addir1,r0,0x0Addir2,r0,0x2Addir3,r0,0x0Seqr4,r1,r3Bnezr4,lsprimLwr5,table(r3)Divur6,r2,r5Multur7,r6,r5Subur8,r2,r7Beqzr8,lsnoprimAddir3,r3,0x4IloopSwtable(r1),r2Addir1,r1,0x4Lwr9,$data(r0)Srlir10,r1,2Sger11,r10,r9Bnezr11,finishAddir2,r2,0x1InextvalueTrap0x0nop结构相关:Instructions/cyclesSwtable(r1),r2Addir1,r1,0x4Lwr9,$data(r0)Srlir10,r1,2Sger11,r10,r9Bnezr11,finishAddir2,r2,0x1Trap0x0nop1.分析并写出此时全部数据相关的指令、原因、流水线停顿截图、暂停时钟周期数(循环的只写一轮)所有截图如上(截图为整个循环)2.数据相关引起的暂停时钟周期数、程序执行的总时钟周期数、计算采用定向技术后性能提高的倍数。总的周期数(2605),暂停数(2021)百分比:2021/2605=77.58%(采用定向技术)总的周期数(3194),暂停数(2334)百分比:2334/3194=73.07%(不采用定向技术)性能提高倍数:3194/2605-1=22.61%3.在程序逐步执行过程中,对于ClockCycleDiagarm窗口中出现的一些箭头,可否给出一些解释?在Clockcyclediagram窗口中,有时候还可以看到在指令之间出现了红和绿的箭头。红色箭头表示需要一个暂停,箭头指向处显示了暂停的原因。R-Stall(R-暂停)表示引起暂停的原因是RAW。绿色箭头表示定向技术的使用。4.对于产生相关的一些程序,可否有什么方法来避免这些相关?可以考虑采用资源重复的方法,比如,在流水线机器中设置相互独立的指令存储器和数据存储器,也可以将CACHE分割成指令CACHE和数据CACHE。实验总结:在本次试验中,我基本熟练掌握windlx的操作和使用,对程序在流水线中的执行情况基本了解,观察到了cpu中寄存器和存储器的内容变化,清晰掌握数据相关和结构相关的意义。基本上可以独立使用windlx软件进行操作。
本文标题:求素数程序prim.s计算机体系结构
链接地址:https://www.777doc.com/doc-4555382 .html