windlx系统结构实验报告.doc
!- 课程设计报告书课程名称: 计算机系统结构 题 目: WinDLX模拟器实验 学生姓名: xxx 专 业: 计算机科学与技术(数字媒体) 班 别: x 学 号: x 指导老师: x 日 期: 2011 年 5 月 2 日一、实验目的:熟悉WinDLX的的基本概念和使用,了解各种不同指令在流水线的实际流动情况,对流水线做性能分析,加深对流水线及RISC处理器的理解二、实验环境:WinDLX模拟器可以装入DLX汇编语言程序,然后单步、设置断点或者连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来。模拟器还提供了对流水线操作的统计功能。该模拟器对理解流水线和RISC处理器的特点很有帮助。WinDLX要求的硬件平台是IBM PC兼容机,WinDLX是一个Windows应用程序,运行于Windows 3.0以上的操作系统。三、实验步骤、结果分析:使用WinDLX模拟器,对Fact.s做如下分析:开始模拟之前的准备工作: (1) 通过双击 WinDLX 图标启动WinDLX,将出现一个带有六个图标的主窗口: (2)进行初始化模拟器, 点击File 菜单中的 Reset all 菜单项,弹出一个“Reset DLX”对话框。然后点击窗口中的“确认”按钮即可。(3)在开始模拟之前,至少应装入一个程序到主存。为此,选择File / Load Code or Data,窗口中会列出目录中所有汇编程序。fact.s 计算一个整型值的阶乘; input.s中包含一个子程序,它读标准输入(键盘)并将值存入DLX处理器的通用寄存器R1中。按如下步骤操作,把fact.s和input.s加载入主存。点击 fact.s点击 select 按钮点击 input.s点击 select按钮点击 load按钮得到如下图:弹出一下询问对话框,点击“是”。1. 观察增加浮点运算部件对性能的影响。(1)点击Configuration打开菜单,然后点击Floating Point Stages菜单项,选择如下标准配置: (2)再点击ExecuteRun,输入15点,回车,在弹出的对话框出现消息"Trap #0 occurred" 表明最后一条指令 trap 0 已经执行, Trap指令中编号“0”没有定义,只是用来终止程序。点击确定。按F5进行查看:关闭上面的对话框,在Statistisc中得到结果如下所示: (4) 修改浮点数一次,参数如下图:修改浮点数后,单击OK,再点击ExecuteRun,输入15点,回车,在弹出的对话框中点击确定。然后在Statistisc中得到结果如下所示:(5) 修改浮点数二次,参数如下图:执行程序,输入点数15,然后在Statistisc中得到结果如下所示:结论:从上面几次条件的改变下我们可以看出:增加浮点部件后执行该程序时结果并没有发生变化。由此可见,浮点运算部件的增减对效率无影响,这是因为此程序中浮点计算指令没有重叠,所以并行度并没有增加,性能没有得到提高。2. 观察增加forward部件对性能的影响。(1)增加forward部件情况:在configuration 中使Enable Forwarding 选项前为打钩状态。然后点击Execute > run 运行,在弹出的对话框中输入15,然后回车。在Statistisc中得到的结果图如下图所示:(2) 不增加forward部件情况:点击 Configuration中的Enable Forwarding使定向无效(去掉小钩),打开断点Breakpoints 图标并点击Breakpoints 菜单,删除所有断点,然后按F5,键入15后,按Enter ,模拟程序一直运行到结束。在Statistisc中得到以下的结果,如下图所示:结论: 我们先看一下Statistics 窗口中的各种统计数字:增加Forwarding时,总的周期数(180) 和暂停数 (17 RAW, 20Control, 12 Trap; 49 Total) 。当不增加Forwarding时,重新查看静态窗口,你会看到控制暂停和 Trap 暂停仍然是同样的值,而RAW暂停从17变成了48,总的模拟周期数增加到201。利用这些值,我们能够计算定向技术带来的加速比:201 / 180 = 1.117DLXforwarded比 DLXnot forwarded 快11.7%。可以看得出,增加forward部件对性能有所影响。增加了FORWARD部件后,总时钟周期减少,RAW相关减少,由于该部件的使用,将运算结果值提前传送到有关缓冲寄存器,使后续指令得以不停顿地进入流水线,并及时得到需要的操作数,所以性能有所提高。3. 观察转移指令在转移成功和转移不成功时候的流水线开销。增加forward部件是条件后转移结果如下:数据分析:指令数目百分比转移指令总数1815.00%转移成功指令数211.11%转移不成功指令数16100.00% 由上表的统计结果可以看出,在运行点数为15的情况下,转移不成功的可以达100%,所以将条件转移指令设为选择猜测为转移不成功,若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低;若转移成功,则要废弃先读入的指令,重新从转移成功出读入指令,没执行一条条件转移指令,一条k段流水线就有k-2个流水段被浪费掉,执行效率降低,性能有一定的损失。四、实验总结:1、通过本实验我掌握了WinDLX模拟器的基本操作和使用,了解DLX指令集结构及其特点,更加深入的了解计算机系统流水线的工作过程。2、加深对数据相关的理解,掌握如何使用定向技术来减少数据相关带来的暂停。3、在这次的实验中,开始时候发觉自己对WinDLX模拟器的很多知识都不理解,对系统结构的理解太少,在做实验过程中才渐渐有了个大概的了解和深入,比如在弄增加forward部件对性能的影响这个实验时,数据的如何查看,如何计算上让自己反复弄好好几次,不过在反复试验之后最后终于弄明白了,还有观察转移指令在转移成功和转移不成功时候的流水线开销上,也不明白程序是如何模拟转移的,但最后在同学的帮助下,才得以解决,在这让我明白自己对计算机系统结构的认识有待更好的加强。五.参考资料:WinDLX模拟器使用手册模拟器源代码DLX指令手册