体系结构windlx流水线实验报告_第1页
体系结构windlx流水线实验报告_第2页
体系结构windlx流水线实验报告_第3页
体系结构windlx流水线实验报告_第4页
体系结构windlx流水线实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

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

2、IBM-PC兼容机. l WinDLX是一个Windows应用程序,运行DOS3.3以上和Windows3.0以上的操作系统.l WinDLX软件包中带有说明文件及教程,可以供使用者进一步了解仿真器的使用方法和DLX处理器的原理.大家再进行实验前应该仔细阅读这些文档. 3. 实验内容:1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU指令,记录它们在流水线中的执行情况l Lw:观察此流水线时空图,可以发现:转移指令引起的延迟仅为1 clocks,另2 stalls是trap指令引起的,这个执行结果似与不采用forwarding技术的前提相违,

3、只能理解为对于无条件的转移指令,新的PC值在EX阶段即已被写入。l Sw:l Beqz:由此图可见,对于分支指令,总是用not-taken的策略来处理,并且也认为新的PC值也在EX阶段即已被写入,且cond条件也在EX段被算出(这显然是一个极不合理的假设,究竟为何分支指令的延迟为1 stall有待进一步探究)l 寄存器ALU指令l 立即数ALU指令 2)仿真器运行一段无相关的程序,记录它的执行情况,计算流水线的加速比、吞吐率与效率。下面是一段不相关的程序,一共6条指令ADDI R5, R5, 1SUBI R4, R4, 1AND R3, R3, R3XOR R7, R7, R7ADDI R8,

4、 R8, 1ADDI R9, R9, 1在WinDLX中执行的结果如下:如上图所示:l 6条指令一共执行了10个周期,而每个指令都需要5个周期来完成。故可得加速比:5*6/10=3l 实际吞吐率:流水线由5段组成,完成6条指令,m=5,n=6,T=5t+(6-1) t=10t,Tp=n/T=3/(5t),即为实际吞吐率。l 效率: E=1/(1+(m-1)/n)=TP*t=3/53)在仿真器运行一段程序: 在用仿真器模拟前先自己手动分析出程序执行时的相关种类与个数:1. addi-addi关于r2的raw相关:2 stalls2. lw-addi关于r1的raw相关:2 stalls3. ad

5、di-sw关于r1的raw相关:2 stalls4. addi-sub关于r2的raw相关:2 stalls5. sub-bnez关于r4的raw相关:2 stalls6. bnez的控制相关(always not-take):1 stalls(not hit)/0 stall(hit)7. j的控制相关:1 stalls8. trap:2 stalls在DLX上的实际运行结果:统计该程序在流水线中出现的各种相关个数,及其引起的流水线暂停周期数:可见,此执行结果与之前手动分析的结果完全相同4)通过在流水线中设置定向路径来消除数据相关后,仅lw-addi一处会产生关于r1的raw相关,延迟为1

6、stall,转移指令的延迟情况不变:一个循环的执行时间:6+1+1=8(clocks)总执行时间:(2)+(8*2-1)+(1+1)+(1+2)=22(clocks)总RAW相关的stall数:1*2=2(clocks)运行程序:有出入的原因是windlx认为除了在lw-addi处有1 stall的raw相关,sub-bnez处也会有1 stall的raw相关(真搞不懂,难道分支指令在IF阶段开始读取寄存器的值了!?),按照这种想法重新计算的结果是:一个循环的执行时间:6+1*2+1=9(clocks)总执行时间:2+(9*2-1)+(1+1)+(1+2)=24(clocks)总RAW相关的s

7、tall数:2*2=4(clocks)统计在流水线中出现的相关个数,及其引起的流水线暂停周期数:5)通过对程序进行编译优化并结合其他相关解决方法分支预测与延迟槽:由于windlx默认采取了always not-taken的分支预测策略,且不支持延迟槽的概念,所以唯一可做的调度就是通过分离lw-addi和sub-bnez指令来消除raw相关,调度后的程序如下图所示: 一个循环的执行时间:6+1=7(clocks)总执行时间:2+(7*2-1)+(1+1)+(1+2)=20(clocks)总RAW相关的stall数:0(clocks)运行程序:统计在流水线中出现的相关个数,及其引起的流水线暂停周期

8、数4.实验步骤:1) 运行WinDLX仿真器.2) 根据实验内容的要求设计出相应的DLX程序.3) 完成所有的实验内容.5. 实验时间:4课时6. 实验要求:1) 必做实验。2) 自己设计出体现实验要求的程序。比如在进行统计相关种类与个数的步骤中所用到的程序怎么尽可能包含所有种类的相关,建议3) 要求学生实际在仿真器运行程序并统计结果, 课后形成图表上交实验报告。4) 通过实验分析相关对流水线的性能影响,实际掌握各种相关解决策略,比较采用各种策略前后流水线的性能,形成图表上交实验报告。7. 参考材料:计算机体系结构教材、WinDLX仿真器使用指南8. 附录编写代码的要求:1)需要编写代码文件*

9、.s。所有程序均用DLX汇编语言编写.2)文件格式请参照WinDLX自带的例子程序.常见问题:1 Load指令后都是nop ?注意选择了文件后要Select,或双击,下方Select Files显示了相应的文件名才是已经选择了文件。选择之后需再Load.正确的Load会显示:File(s) Loaded Successfully, Reset DLX?此时在Window-Code窗口里应该能看到你的代码。 2 Load时会出现“Code or Data Error”?这是因为你的汇编代码有错。DLX汇编的格式请参考帮助文件之The DLXAssembly Language & DLX Inst

10、ructions Set & DLX-Examples。如果是Load 自带的GCM和FACT的例子,请先务必Load Input.s。 (WinDLX可以一次load 多个.s文件). 3 如何初始化内存呢?Memory-Change 里面可以察看/设置内存的值,指定Address和Value后Set即可。Memory-Display 可以显示内存的值。 4 程序运行时会报错“Mem Error”可能是因为你程序中用到的访存地址没有对齐导致,Memory是按字对齐的,访问地址必须是4的倍数。也可能是地址超过了存储器得地址范围。默认的存储器大小是0x8000 Bytes,可以通过Configu

11、ration-Memory Size 来设置大小。. 5 如何载入立即值?可以通过LHI指令和其他指令的组合,或者用ADDI指令来实现。注意LW是访存指令,并非载入立即值指令。具体指令请参考DLX Instruction Set。 6 指令用到了立即数需不需要用“#“用不用不会影响,具体请参考 The DLX-Assembly Language & DLX-Examples. 7 例子里的.data, .global等是干什么用的?这些是编译制导语句,具体含义请参考 The DLX-Assembly Language -Directives.l .space sizeMove the curr

12、ent storage pointer forward size bytes (to leave some empty space in memory)l .data addressCause the following code and data to be stored in the data area. If an address was supplied, the data will be loaded starting at that address, otherwise, the last value for the data pointer will be used. If we

13、 were just reading data based on the text (code) pointer, store that address so that we can continue from there later (on a .text directive).l .text addressCause the following code and data to be stored in the text (code) area. If an address was supplied, the data will be loaded starting at that add

14、ress, otherwise, the last value for the text pointer will be used. If we were just reading data based on the data pointer, store that address so that we can continue from there later (on a .data directive).l .global labelMake the label available for reference by code found in files loaded after this file.8 WinDLX能指定定向路径吗?如何指定?WinDLX可以启用和禁止Forwarding。Configuration-Enable Forwarding.定向路径可以显示出来,选中Clock Cycle Diag-Display Forwading 9 如何设置程序代码和数据段在内存中起始位置?有没有类似i386汇编的ORG语句?WinDLX没有 ORG指令,但可以通过Symbo

温馨提示

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

评论

0/150

提交评论