体系结构windlx流水线试验报告_第1页
体系结构windlx流水线试验报告_第2页
体系结构windlx流水线试验报告_第3页
体系结构windlx流水线试验报告_第4页
体系结构windlx流水线试验报告_第5页
免费预览已结束,剩余6页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一基本实验-by王琳PB072104321) 实验目的:1)熟悉计算机流水线基本概念2) 了解DLX基本流水线的各段的功能3) 了解各种不同指令在流水线中的实际流动情况4)对流水线做性能分析5) 了解影响流水线效率的因素一一数据相关、结构相关、控制相关,了解相关的种类6) 了解解决数据相关的方法2 .实验平台:WinDLX仿真器WinDLX简介:是一个图形化、交互式的DLX流水线仿真器。可以装入DLX汇编语言程序,然后单步,设断点或是连续执行该程序.CPU的寄存器,流水线,I/O和存储器都可以用图形表示出来提供了对流水线操作的统计功能.可以装载文件名为*.s的文件.要求的硬件平台是旧M-P

2、C兼容机.WinDLX是一个Windows应用程序,运行以上和以上的操作系统.WinDLX软件包中带有说明文件及教程,可以供使用者进一步了解仿真器的使用方法和DLX处理器的原理.大家再进行实验前应该仔细阅读这些文档.3 .实验内容:1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU指令,记录它们在流水线中的执行情况Lw:FC=OxJdQQDlLCi1DR=OhOQUODOOQR1AAR=UhJQOOCIOzICfiHl-OhCJOOOCUJORIIR-0x3000000mi-OkCODOOOOORlA*0x000DOO00R;AHT三r;.;

3、-irrrirrrir*OmOQQOOiOOORIE=OOOOOOClDoxfionoooaaPlbMl=UxDOODOOJU£4-OkOQOOOOOORIBTA-OiOQODOOOORS-OhOOJOCUOORlALU-OjeJOODOODORS-OkOODQOD3DR2ALUHI-Cz300DC03CB?-OkOOJOCOOO鼠FP5E=0x10000000R8=OKoaDooooaT?2口片占度藁OaOaODOQQiQ吟OKfiodoaoinaR2snR=CKOaDDiOODiDR10=UkCODDCOOCSjHHL=UkJUOUOOjOOkLOOOOOOUf?2Resiste

4、r观察此流水线时空图,可以发现:转移指令引起的延迟仅为1clocks,另2stalls是trap指令引起的,这个执行结果似与不采用forwarding技术的前提相违,只能理解为对于无条件的转移指令,新的PC值在EX阶段即已被写入。Sw。ClockCycleDiqruIndufareJ(jcls讷物T加处1F,iihti中UkJ,j中i闻T中1tlleBorj-l面:口二瓦二疣工丽金加元叫区川匚口匚Q二二Q:而:,:面兀毋,4、T,2.IIIIlliIF|lt>LJMEP|VEn|EM|MEH哂|bef后片0亢4OeOJCDIQIS0x0001102cQiDOOIlOlOfwnnnninM

5、000000DOmOOIOOIOOQkOOODOOOOOsOOOOOODOIkOOOOIOOIDttOOOOOOOO0x00100100QxOOODOOOOOxMODOODOIkOOOOIOOIMD00000DOxfiOOOOOOO能刷顺OkMOMODOIkOOOOIOOIDhOOOOOOODOMOIOQIOOOsDOOQOOQOOxDOODODDOIsOOOOIOOInnnnnnnnnrivnnnnniinnnvnnnnnnnndinnnnnnnnnnmnrBeqz:Instnctinr点i已力beq:(1Jirislib*OkOtrapOkOgp由此图可见,对于分支指令,总是用not-ta

6、ken的策略来处理,并且也认为新的PC值也在EX阶段即已被写入,且cond条件也在EX段被算出(这显然是一个极不合理的假设,究竟为何分支指令的延迟为1stall有待进一步探究)奇存器ALU指令立即数ALU指令OsCOJOCllOLEE=OkOODOODOORli工班器OeOOOOOIOcldehi-OkOODOODODRI:IF=OkOCDCOOOO51-0x00DOC000排OkOODOODOEAH3=OkOODOOOOO於0x00000DOO511Register2)仿真器运行一段无相关的程序,记录它的执行情况,计算流水线的加速比、吞吐率与效率。下面是一段不相关的程序,一共6条指令ADDI

7、R5,R5,1SUBIR4,R4,1ANDR3,R3,R3XORR7,R7,R7ADDIR8,R8,1ADDIR9,R9,1在WinDLX中执行的结果如下:h$lftjiclon>3iQj七跳addir5./5,Ck1tubi4.U1trdrljBjSRil77/7addr8,8*1acts包自.CW二口3鼻了白5jIIIIF|l|乃尸,HEM|WEI|一I口it:.HD1|AE-FE.卬>1F)|F|巾|uF-lMEM|以B1- |IDMM-MEN-nP如上图所示:6条指令一共执行了10个周期,而每个指令都需要5个周期来完成。故可得加速比:5*6/10=3实际吞吐率:流水线由5段

8、组成,完成6条指令,m=5,n=6,T=5At+(6-1)At=10At,Tp=n/T=3/(5At),即为实际吞吐率。效率:E=1/(1+(m-1)/n)=TP*At=3/53)在仿真器运行一段程序在用仿真器模拟前先自己手动分析出程序执行时的相关种类与个数:1. addi-addi关于r2的raw相关:2stalls2. lw-addi关于r1的raw相关:2stalls3. addi-sw关于r1的raw相关:2stalls4. addi-sub关于r2的raw相关:2stalls5. sub-bnez关于r4的raw相关:2stalls6. bnez的控制相关(alwaysnot-tak

9、e):1 stalls(nothit)/0stall(hit)7. j的控制相关:1stalls8. trap:2stalls在DLX上的实际运行结果:统计该程序在流水线中出现的各种相关个数,及其口叱|小”口diriebldgIt&JLlfa:RAW«l-alk:14G.1EMok-alCvoll0(O.M之dallu.扇iSbijoidjil式qll招n(n口口?口F川ICvIbsJtFitrolseIILJt!3.IJ!seyelQ«lTo*gg:251/3NI>I!1.'H.3|.II-.|山I.h|.-dC:onditiczsn1ELi3fiu

10、Iiuh)ToiaI1r11Z*i0"olallIn&rLQtiorn目.Id-I|1IIII>1rill>>>ridFiir>-i".|rvatlAkw:1SO;DQ发3.113nd,HfiknanB*Tr=i®l1-U,IFirn+,二Ttn,t*干*tLi"4my引起的流水线暂停周期数:可见,此执行结果与之前手动分析的结果完全相同4)通过在流水线中设置定向路径来消除数据相关后,仅lw-addi一处会产生关于ri的raw相关,延迟为1stall,转移指令的延迟情况不变:一个循环的执行时间:6+1+1=8(cloc

11、ks)总执行时间:(2)+(8*2-1)+(1+1)+(1+2)=22(clocks)总RAW1关的stall数:1*2=2(clocks)运行程序:LICl«ckCyvltDioeioa;1?!19,19,20I21,23,23IIF|ID,MEb|we|lustiuzii.nsCjjdesmbHj3jt2briEZ"U)0FjFhdhnapQrf)1r叩帆op|IF|dbwted.fTstd_L'_lfhn有出入的原因是windlx认为除了在lw-addi处有1stall的raw相关,sub-bnez处也会有1stall的raw相关(真搞不懂,难道分支指令在IF

12、阶段开始读取寄存器的值了!),按照这种想法重新计算的结果是:一个循环的执行时间:6+1*2+1=9(clocks)总执行时间:2+(9*2-1)+(1+1)+(1+2)=24(clocks)总RAW1关的stall数:2*2=4(clocks)统计在流水线中出现的相关个数,及其引起的流水线暂停周期数:St;stalls:4口600士!allCclealtHereofLDMtali:2(0CC»hFRAWB&bFlirnnhZIjmp.1nils,'PSflofRAX1/Ktrill?sJFloatingpoint冷口版0山.00第ofRAWstalkWAW师川釐ILC

13、IO豆ordllCwlMStructuraletsllt:010,%of刮匚炉日aControlstalls:218.00ofalCyclles)Tidjj式/®2(0.00%erfdllCjclesJTrilliA文川|同WZ口件Qf川口碧CotidxtronffllEzrum匚tius;)Totl:21.12HllScifallthereof,taktn:1bULU-=.ofallcondBranchesInottakeriLIbU.UU*dI-allcond.Branches运行程序:Instructinns/Cycles:14,1S,1G,17,16,1S,20d215)通过

14、对程序进行编译优化并结合其他相关解决方法一一分支预测与延迟槽:由于windlx默认采取了alwaysnot-taken的分支预测策略,且不支持延迟槽的概念,所以唯一可做的调度就是通过分离lw-addi和sub-bnez指令来消除raw相关,调度后的程序如下图所示:一个循环的执行时间:6+1=7(clocks)总执行时间:2+(7*2-1)+(1+1)+(1+2)=20(clocks)总RAW1关的stall数:0(clocks)wOMFo(同m口I4,LOOFFinishirap厮口irap山口nop1TIDI£;:MEMwe|IF|lP:|IF|I-|IWE|;IFlatQUed:

15、|l卜刈|I口|;一统计在流水线中出现的相关个数,及其引起的流水线暂停周期数StnlLs-.HAWstalli.(Q-OOS&ufall口¥以61,Ihcreuf.LD虱al%0UUQ笈ufH#v/就dlaEtranch/Jumipstalls:0(000ofRAW&F1nMingpointstalls:0(0.00ofRAM/殳WAWJtalk:00.00ofoilCyclopStiuctural3toi00,00c%ofallCydn)Control5-tol5:2(9,52?川RICwdcTrapstalls:2(9.62ofallCyclesToMII4

16、63;3II19.05拦ofMCondx-tioma.1Hironohea):T口上日上212L5OWofallInFstructionlthereof:taken:1(blJ.UUohallc=ond.HranclnesnetleP.en:15U.Utlhof占IIesmd-BfanchMj4 .实验步骤:1)运行WinDLX仿真器.2)根据实验内容的要求设计出相应的DLX程序.3)完成所有的实验内容.5 .实验时间:4课时6 .实验要求:1)必做实验。2)自己设计出体现实验要求的程序。比如在进行统计相关种类与个数的步骤中所用到的程序怎么尽可能包含所有种类的相关,建议3)要求学生实际在仿真器

17、运行程序并统计结果,课后形成图表上交实验报告。4)通过实验分析相关对流水线的性能影响,实际掌握各种相关解决策略,比较采用各种策略前后流水线的性能,形成图表上交实验报告。7 .参考材料:计算机体系结构教材、WinDLX仿真器使用指南8 .附录编写代码的要求:1)需要编写代码文件*.s。所有程序均用DLX汇编语言编写.2)文件格式请参照WinDLX自带的例子程序.常见问题:1. Load指令后都是nop注意选择了文件后要Select,或双击,下方SelectFiles显示了相应的文件名才是已经选择了文件。选择之后需再Load.正确的Load会显示:File(s)LoadedSuccessfully

18、,ResetDLX此时在Window->Code窗口里应该能看到你的代码。2. Load时会出现"CodeorDataError”这是因为你的汇编代码有错。DLX汇编的格式请参考帮助文件之TheDLX-AssemblyLanguage&&DLXInstructionsSet&&DLX-Examples。如果是Load自带的GC防口FACT的仞子,请先务必Load。(WinDLX可以一次load多个.s文件).3. 如何初始化内存呢Memory->Change里面可以察看/设置内存的值,指定Address和Value后Set即可。Memory

19、->Display可以显示内存的值。4. 程序运行时会报错"MemError"可能是因为你程序中用到的访存地址没有对齐导致,Memory是按字对齐的,访问地址必须是4的倍数。也可能是地址超过了存储器得地址范围。默认的存储器大小是0x8000Bytes,可以通过Configuration->MemorySize来设置大小。.5. 如何载入立即值可以通过LHI指令和其他指令的组合,或者用ADDI指令来实现。注意LW是访存指令,并非载入立即值指令。具体指令请参考DLXInstructionSet。6. 指令用到了立即数需不需要用“#"用不用不会影响,具体请参

20、考TheDLX-AssemblyLanguage&&DLX-Examples.7. 例子里的.data,.global等是干什么用的这些是编译制导语句,具体含义请参考TheDLX-AssemblyLanguage->Directives.spacesizeMovethecurrentstoragepointerforwardsizebytes(toleavesomeemptyspaceinmemory).dataaddressCausethefollowingcodeanddatatobestoredinthedataarea.Ifanaddresswassupplied

21、,thedatawillbeloadedstartingatthataddress,otherwise,thelastvalueforthedatapointerwillbeused.Ifwewerejustreadingdatabasedonthetext(code)pointer,storethataddresssothatwecancontinuefromtherelater(ona.textdirective).textaddressCausethefollowingcodeanddatatobestoredinthetext(code)area.Ifanaddresswassupplied,thedatawil

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论