您的当前位置:首页正文

WINDLX模拟器安装及使用

2020-03-30 来源:好走旅游网
WINDLX模拟器安装及使⽤

实验类别:综合实验⼀、实验⽬的

建⽴实验环境,了解WINDLX 模拟器的结构及使⽤⼆、实验学时:2三、实验组⼈数:1/1四、实验设备环境

实验设备环境:WinDLX 要求的硬件平台是IBM PC 兼容机,WinDLX是⼀个Windows 应⽤程序,运⾏于Windows 3.0 以上的操作系统。五、实验原理

WinDLX是⼀个基于Windows的模拟器。它能够演⽰DLX流⽔线是如何⼯作的。

六、实验内容和要求

阅读模拟器Help⽂档和相关资料,利⽤Fact.s及Input.s代码熟悉模拟器的配置、各项⼯具使⽤、寄存器设置及指令系统。七、实验过程与分析1.WINDLX模拟器安装

WinDLX 包含windlx.exe 和windlx.hlp ⽂件。同时,还需要⼀些扩展名为.s 的汇编代码⽂件。我们先将其解压到⼀个指定的⽬录,然后执

⾏⾥⾯的windlx.exe 即可。做实验时直接双击WinDLX 图标就可进⼊Windlx 模拟器。

这⾥需要注意的是,解压后的⽂件要放在磁盘的根⽬录下,因为软件不识别中⽂名字的路径。2.熟悉模拟器的配置

双击启动WINDLX,将出现如图1所⽰的带有六个⼩窗⼝的主窗⼝。下⾯将熟悉WINDLX的主要配置

图1 WINDLX的六个⼩窗⼝位置

为了初始化模拟器, 点击File 菜单中的Reset all 菜单项,弹出⼀个“Reset DLX”对话框。然后点击窗⼝中的“确认”按钮即可。WinDLX可以在多种配置下⼯作。我们可以改变流⽔线的结构和时间要求、存储器⼤⼩和其他⼏个控制模拟的参数。点击Configuration / Floating Point Stages,选择如图2所⽰标准配置:

图2 Floating Point Stages标准配置3.熟悉各⼯具的使⽤

下⾯以fact.s和load.s的模拟程序为例,说明六个⼯具(⼩窗⼝)的使⽤。⾸先装载两个汇编程序,操作如下:

选择File/Load Code or Data,窗⼝中会列出⽬录中所有汇编程序。按如下步骤操作,可将这两个⽂件装⼊主存。点击fact.s、点击select 按钮、点击input.s、点击select按钮、点击load 按钮,点击“是”即可成功装载。如图3

图3 装载汇编程序代码

装载成功后,我们就可以了解主窗⼝下的6个⼩窗⼝(1)Pipeline窗⼝

图4 Pipeline 窗⼝

窗⼝中⽤图表形式显⽰了DLX 的五段流⽔线,应尽可能地扩⼤此窗⼝,以便处于不同流⽔段的指令都能够在图表中显⽰。可以看出,DLX 执⾏指令的流⽔线是⼀个5 段流⽔线,包括取指段(IF)、译码段(ID)、执⾏段(EX)、访存段(MEM)和写回段(WB)。

显然,不同指令在执⾏段的操作是不同的,⽽且不同操作在该段的延迟也是不同的。为此,DLX 流⽔线的执⾏段分为4 个单元,它们分别是:intEX 单元(整数操作),faddEX 单元(浮点加减),fmulEX(浮点乘法),fdivEX(浮点除法),每个单元设置的个数和其延迟时间已经在前⾯通过Configuration / Floating Point Stages 进⾏了设置,其中intEX 的延迟为1(IF段,ID 段,MEM 段和WB 段的延迟均为1),faddEX、fmulEX和fdivEX 的延迟分别为2、5 和19。我们可以修改其设置,然后再观察程序的执⾏结果,从⽽得到所需要的结论。(2)Clock Cycle Diagram 窗⼝

双击Clock Cycle Diagram⼦窗⼝,它显⽰DLX流⽔线的时空图。

图5 Clock Cycle Diagram 窗⼝(3)Code窗⼝

双击Code窗⼝图标,我们可以看到代表存储器内容的三栏信息,从左到右依次为:地址(符号或数字)、命令的⼗六进制机器代码和汇编命令。

图6 Code 窗⼝

代码⼦窗⼝⾥⾯显⽰的内容是两个程序(fact.s和input.s)加载到内存中的情况。我们⾸先来看第⼀⾏,最右边显⽰的是程序fact.s的第⼀条指令(addi r1,r0,0x1000),fact.s的第⼀条语句,可以看出,变量Prompt被代替以0x1000,这说明变量Prompt在程序被加载到内存中的实际地址就是0x1000,也即程序的数据区被加载到内存地址0x1000开始的地⽅,这⾥“0x”表⽰⼗六进制。

我们按下F7(单步执⾏),窗⼝的颜⾊会不停的变化,这表明程序在执⾏,黄⾊表⽰在IF阶段,橘黄⾊表⽰在ID阶段,红⾊在intEX阶段,绿⾊表⽰在MEM 阶段,蓝⾊表⽰WB阶段,如图7所⽰

图7 代码执⾏时Code窗⼝颜⾊的变化(4)Breakpoint窗⼝

打开窗⼝后是空的,我们可以⽤它来设置断点。

图8 Breakpoint 窗⼝

在Code窗⼝中找到要设置断点的指令,然后单击code-set breakpoint

图9 设置断点(5)Register窗⼝

双击Register⼦窗⼝,可以看到DLX的全部寄存器及其内容,观察左上⾓的PC寄存器,其值为0x00000150,也就是说程序会

从内存0x00000150处开始执⾏。(这是在已执⾏过⼏条指令之后的内存地址)在程序执⾏过程中,我们随时可以点击Register⼦窗⼝来观察各个寄存器内容的变化。

图10 Register 窗⼝(6)Statistics窗⼝

Statistics窗⼝提供各个⽅⾯的信息:模拟中硬件配置情况、暂停及原因、条件分⽀、Load/Store指令、浮点指令和traps。窗⼝中给出事件发⽣的次数和百分⽐,如RAW stalls:3(10.34 % of all Cycles)

如图11,我们可以看到该窗⼝提供了各个⽅⾯的信息:模拟中硬件配置情况、暂停及原因、条件分⽀、Load/Store指令、浮点指令和traps。窗⼝中给出事件发⽣的次数和百分⽐。利⽤这些数据,我们可以定量的⽐较各种改善流⽔线性能的技术对程序运⾏的影响情况。。

图11 Statistics 窗⼝⼋、实验⼼得与总结遇到的问题

在安装软件的过程中,第⼀次是直接解压缩在默认的下载⽬录下。但是装载汇编源程序时,提⽰加载失败。查找原因后发现是有由于软件

不能识别中⽂名字的路径。之后我将软件压缩包移到D盘的根⽬录下,解压缩后打开,问题得到解决,⼼得与总结

这次实验主要是熟悉MINDLX,知道MINDLX的操作,了解各个窗⼝的作⽤。在实验中,借助模拟器HELP⽂档和相关资料,结合课堂上

学习的知识,我还是⽐较顺利的完成了MINDLX的各项操作,对MINDLX也算⽐较熟悉了,这样对后⾯的实验有了很好的基础。

因篇幅问题不能全部显示,请点此查看更多更全内容