WINDLX 模拟器安装及使用

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验类别:综合实验

一、实验目的

建立实验环境,了解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。窗口中给出事件发生的次数和百分比。利用这些数据,我们可以定量的比较各种改善流水线性能的技术对程序运行的影响情况。

相关文档
最新文档