WinDLX教程

上传人:ali****an 文档编号:111001856 上传时间:2019-11-01 格式:DOC 页数:5 大小:69KB
返回 下载 相关 举报
WinDLX教程_第1页
第1页 / 共5页
WinDLX教程_第2页
第2页 / 共5页
WinDLX教程_第3页
第3页 / 共5页
WinDLX教程_第4页
第4页 / 共5页
WinDLX教程_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《WinDLX教程》由会员分享,可在线阅读,更多相关《WinDLX教程(5页珍藏版)》请在金锄头文库上搜索。

1、WinDLX 教程刘 依 张晨曦 编译DLX 处理器 (发音为 DeLuXe)是Hennessy 和Patterson合著一书Computer Architecture - A Quantitative Approach中流水线处理器的例子。WinDLX是一个基于Windows的模拟器。本教程通过一个实例介绍WinDLX的使用方法。WinDLX模拟器能够演示DLX流水线是如何工作的。 本教程使用的例子非常简单,它并没有囊括WinDLX的各个方面,仅仅作为使用WinDLX的入门级介绍。当你阅读完本教程后,请参考帮助文件。通过按F1键,你可以在任何时候获得相关的帮助信息。虽然我们将详细讨论例子中的

2、各个阶段,但你应具备基本的使用Windows的知识。现假定你知道如何启动 Windows,使用滚动条滚动,双击执行以及激活窗口。一、安 装WinDLX 包含windlx.exe和windlx.hlp文件。同时,还需要一些扩展名为.s的汇编代码文件。 在本手册中将使用fact.s 和input.s这两个汇编代码文件。如果你熟悉 Windows 应用程序的安装,那么将 fact.s和input.s 拷贝到WinDLX 文件夹后,你可以直接阅读下一部分。请按以下步骤在Windows下安装WinDLX:1. 为WinDLX创建目录,例如D:WINDLX2. 解压WinDLX软件包或拷贝所有的WinDL

3、X文件(至少包含 windlx.exe, windlx.hlp, fact.s 和input.s )到这个WinDLX 目录。二、一个完整的例子我们使用WinDLX 汇编器中的汇编文件fact.s ,这个程序计算数(通过键盘输入)的阶乘。这需要用到文件input.s,它用于接收从键盘输入的数。1. 开始和配置WinDLX象启动任何Windows应用程序一样,通过双击 WinDLX 图标启动WinDLX,将出现一个带有六个图标的主窗口,双击这些图标将弹出子窗口。后面将解释和介绍如何使用每一个窗口。为了初始化模拟器, 点击File 菜单中的 Reset all 菜单项,弹出一个“Reset DLX

4、”对话框。然后点击窗口中的“确认”按钮即可。OKOKWinDLX可以在多种配置下工作。你可以改变流水线的结构和时间要求、存储器大小和其他几个控制模拟的参数。点击 Configuration / Floating Point Stages(点击Configuration打开菜单,然后点击Floating Point Stages菜单项),选择如下标准配置: CountDelayAddition Units:12Multiplication Units:15Division Units:119如果需要,可以通过点击相应区域来改变设置。然后,点击OK 返回主窗口。点击 Configuration /

5、 Memory Size ,可以设置模拟处理器的存储器大小。应设置为0x8000,然后,点击 OK 返回主窗口。在 Configuration 菜单中的其他三个配置也可以设置,它们是:Symbolic addresses, Absolute Cycle Count 和 Enable Forwarding。 点击相应菜单项后, 在它的旁边将显示一个小钩。 2. 装载测试程序在开始模拟之前,至少应装入一个程序到主存。为此,选择File / Load Code or Data,窗口中会列出目录中所有汇编程序。 我们在前面已经提到,fact.s 计算一个整型值的阶乘; input.s中包含一个子程序,

6、它读标准输入(键盘)并将值存入DLX处理器的通用寄存器R1中。按如下步骤操作,可将这两个文件装入主存。点击 fact.s点击 select 按钮点击 input.s点击 select按钮点击 load按钮选择文件的顺序很关键,它决定了文件在存储器中出现的顺序。对话框中会显示信息“File(s) loaded successfully. Reset DLX?”,点击“是(Y)” 按钮确认。这样,文件就已被装入到存储器中了。 现在可以开始模拟工作了。3. 模 拟在主窗口中,你可以看见六个图标,它们分别为“Register”,“Code”,“Pipeline”,“Clock Cycle Diagra

7、m”,“Statistics” 和“Breakpoints”。点击其中任何一个将弹出一个新窗口(子窗口)。在模拟过程中将介绍每一个窗口的特性和用法。(1) Pipeline 窗口我们首先来看一下DLX处理器的内部结构。为此,双击图标Pipeline,出现一个子窗口,窗口中用图表形示显示了DLX的五段流水线。你应尽可能地扩大此窗口,以便处于不同流水段的指令都能够在图表中显示。 此图显示DLX处理器的五个流水段和浮点操作 (加 / 减, 乘和除)的单元。(2) Code 窗口我们来看一下 Code 窗口。双击图标,你将看到代表存储器内容的三栏信息,从左到右依次为:地址 (符号或数字)、命令的十六进

8、制机器代码和汇编命令。 $TEXT 0x20011000addi r1,r0,0x1000main+0x40x0c00003cjal InputUnsigned现在,点击主窗口中的 Execution开始模拟。在出现的下拉式菜单中,点击Single Cycle或按 F7键。这时,窗口中带有地址“$TEXT ”的第一行变成黄色。按下 F7 键,模拟就向前执行一步,第一行的颜色变成橘黄色,下一行变成黄色.。这些不同颜色指明命令处于流水线的哪一段。如果Pipeline窗口已经关闭,请双击相应图标重新打开它。 如果窗口足够大,你能够看到命令“jal InputUnsigned”在 IF段,“addi

9、r1, r0, 0x1000 ”在第二段ID。其他方框中带有一个“X”标志,表明没有处理有效信息。再次按下F7键,代码窗口中的颜色会再改变, 红色表明命令处入第三段“intEX”。 再按下F7,图形显示将变为:在代码窗口中,黄色出现在更下面的位置,并且可能是唯一彩色行。查看一下Pipeline窗口,你会发现IF, intEX 和MEM 段正在使用而ID段没有。为什么?(3) Clock Cycle Diagram 窗口使所有子窗口图标化,然后打开Clock Cycle Diagram 窗口。它显示流水线的时空图。在窗口中,你将看到模拟正在第四时钟周期,第一条命令正在MEM段,第二条命令在int

10、EX段,第四条命令在IF段。而第三条命令指示为aborted。其原因是:第二条命令(jal)是无条件分支指令, 但只有在第三个时钟周期, jal 指令被译码后才知道,这时,下一条命令movi2fp已经取出,但需执行的下一条命令在另一个地址处,因而,movi2fp的执行应被取消,在流水线中留下气泡。jal 的分支地址命名为InputUnsigned。为找到此符号地址的实际值,点击主窗口中的Memory和 Symbols,出现的子窗口中显示相应的符号和对应的实际值。在 Sort:区域选定name,使它们按名称排序,而不是按数值排序。数字后的G代表全局符号, L代表局部符号。input中的Input

11、Unsigned 是一个全局符号,它的实际值为0x144 ,用作地址。点击OK 按纽关闭窗口。再一次点击 F7 ,第一条命令(addi)到达流水线的最后一段。如果想了解某条命令执行后处理器内部会发生什么?你只要对准Clock cycle diagram窗口中相应命令所在行,然后双击它,弹出一个新窗口。窗口中会详细显示每一个流水段处理器内部的执行动作。这个窗口Information about . 作为将来的Information 窗口。观察完后,点击OK按钮关闭窗口。双击第三行(movi2fp),你会看到它只执行了第一段(IF), 这是因为出现跳转而被取消。 (双击Code窗口中的某一行或者P

12、ipeline 窗口中的某一段,同样可以Information 窗口。)(4) Breakpoint 窗口当通过Code 窗口观察代码时 (如果未打开,双击图标 Code),你会看到接下来的几条指令几近一样,它们都是sw-操作:将寄存器中的数写入存储器中。重复按F7 将很枯燥,因此,我们使用断点加快此过程。现在,请指向Code 窗口中包含命令trap 0x5的0x0000015c行,此命令是写屏幕的系统调用。单击命令行,然后点击主窗口菜单Code,单击Set Breakpoint (确保命令行仍被标记!),将弹出一个新的Set Breakpoint 窗口。通过此窗口,你可以选择命令运行到流水线

13、的哪一阶段时,程序停止执行。缺省为ID段。点击OK 关闭窗口。在Code 窗口中, trap 0x5行上出现 了BID ,它表示当本指令在译码段时,程序中止执行。如果想查看已定义的断点,你只要单击图标Reakpoints,将弹出一个小窗口,其中显示了所有断点。重新使窗口图标化。现在你只要点击Execution / Run 或按F5,模拟就继续运行。会出现一个对话框提示你ID-Stage: reached at Breakpoint #1,按“确认”按钮关闭。点击Clock cycle diagram窗口中的trap 0x5行,你将看到模拟正处于时钟周期14。trap 0x5行如下所示:原因是:

14、无论何时遇到一条trap指令时,DLX 处理器中的流水线将被清空。在Information 窗口(双击trap行弹出)中,在IF段显示消息3 stall(s) because of Trap-Pipeline-Clearing!。 (不要忘了按OK关闭窗口)。指令trap 0x5 已经写到屏幕上,你可以通过点击主窗口菜单条上的Execute / Display DLX-I/O来查看。(5) Register 窗口为进一步模拟,点击Code 窗口,用箭头键或鼠标向下滚动到地址为0x00000194的那一行(指令是lw r2, SaveR2(r0)),点击此行,然后按Ins键,或点击Code /

15、Set Breakpoint / OK,在这一行上设置一个断点。采用同样的方法,在地址0x000001a4(指令jar r31)处设置断点。现在按F5继续运行。这时,会弹出DLX-Standard-I/O 窗口,在信息An integer value 1: 后鼠标闪烁,键入20 然后按 Enter,模拟继续运行到断点 # 2 处。 在Clock cycle diagram 窗口中,在指令之间出现了红和绿的箭头。红色箭头表示需要一个暂停,箭头指向处显示了暂停的原因。R-Stall(R-暂停)表示引起暂停的原因是RAW。绿色箭头表示定向技术的使用。现在我们来看一下寄存器中的内容。为此,双击主窗口中的Register 图标。Register 窗口会显示各个寄存器中的内容。看一下R1到 R5的值。按F5使模拟继续运行到下一个断点处,有些值将发生改变,指令lw从主存中取数到寄存器中。如果你希望不设置断点,而使模拟继续进行。办法是:点击Execute / Multiple Cycles 或者按 F8键,在新出现的窗口中输入1

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号