1、 计算机系统结构实验报告2011 年 3 月目录实验一 WINDLX 模拟器安装及使用 一、 实验类别: .4二、 实验目的: .4三、 实验学时: .4四、 人组数: 4五、 实验设备环境 .4六、 实验原理: .4七、 教学要点: .4八、 实验内容和要求: .5九、 实验步骤: .5(1) WINDLX 模拟器安装 .5(2) 熟悉模拟器的配置 .5(3) 熟悉各工具的使用 .7十、 WINDLX 模拟器结构和功能: .8十一、可研究与探索的问题: 12实验二 指令流水线相关性分析 .一、 实验类别: .13二、 实验目的: .13三、 实验学时: .13四、 人组数: .13五、 实验
2、设备环境 .13六、 实验原理: .13七、 教学要点: .13八、 实验内容和要求: .14九、 实验步骤: .14(1)程序中的数据相关 14(2)程序中的控制相关: 15(3)程序中的结构相关: 16(4)考察增加浮点运算部件对性能的影响。 .17(5) 考察增加 forward 部件对性能的影响。 .18(6) 观察转移指令在转移成功和转移不成功时候的流水线开销。 19十、 试验总结: .19十一、 可研究与探索的问题: 20实验一 WINDLX 模拟器安装及使用一、 实验类别: 综合实验二、 实验目的:建立实验环境,了解 WINDLX 模拟器的结构及使用三、 实验学时:2四、 人组数
3、:1/1五、 实验设备环境:WINDLX 要求的硬件平台是 IBM PC 兼容机,WINDLX 是一个 Windows 应用程序,运行于 Windows 3.0 以上的操作系统。六、 实验原理:通过阅读 WINDLX 软件包中带有说明文件,对该软件进行了安装。 七、 教学要点:软件包中还有 WINDLX 教程和联机帮助,可以通过它们进一步了解模拟器的使用方法和 DLX 处理器的原理。八、 实验内容和要求:阅读模拟器 Help 文档和相关资料,利用 Fact.s 及 Input.s 代码熟悉模拟器的配置、各项工具使用、寄存器设置及指令系统。九、 实验步骤:(1) WINDLX 模拟器安装WIND
4、LX 包含 windlx.exe 和 windlx.hlp 文件。同时,还需要一些扩展名为.s 的汇编代码文件。由于后续试验中将使用 fact.s 和 input.s 这两个汇编代码文件。为WINDLX 创建目录,例如 D:WINDLX。解压 WINDLX 软件包或拷贝所有的 WINDLX 文件(至少包含 windlx.exe, windlx.hlp, fact.s 和 input.s )到这个 WINDLX 目录。(2) 熟悉模拟器的配置通过双击 WinDLX 图标 启动WinDLX,将出现一个带有六个图标的主窗口,双击这些图标将弹出子窗口。通过试验help文档和网上相关文档,了解各个窗口的
5、功能和配置。首先初始化模拟器, 点击 File 菜单中的 Reset all 菜单项,弹出一个“Reset DLX”对话框。然后点击窗口中的“确认”按钮即可。WinDLX可以改变流水线的结构和时间要求、存储器大小和其他几个控制模拟的参数。点击 Configuration / Floating Point Stages(点击 Configuration打开菜单,然后点击 Floating Point Stages菜单项),选择如下标准配置:Count DelayAddition Units: 1 2Multiplication Units: 1 5Division Units: 1 19然后,点
6、击 OK 返回主窗口。点击 Configuration / Memory Size ,可以设置模拟处理器的存储器大小。应设置为0x8000,然后,点击 OK 返回主窗口。在 Configuration 菜单中的其他三个配置也可以设置,它们是:Symbolic addresses, Absolute Cycle Count 和 Enable Forwarding。 点击相应菜单项后, 在它的旁边将显示一个小钩。 (3) 熟悉各工具的使用通过 fact.s 和input.s 程序的运行,了解各个工具的如何使用。选择 File / Load Code or Data,窗口中会列出目录中所有汇编程序。
7、 按如下步骤操作,可将这两个文件装入主存。 点击 fact.s 点击 select 按钮 点击 input.s 点击 select按钮 点击 load按钮选择文件的顺序很关键,它决定了文件在存储器中出现的顺序。对话框中会显示信息“File(s) loaded successfully. Reset DLX?”, 点击“是(Y)” 按钮确认。这样,文件就已被装入到存储器中了。 现在可以开始模拟工作了。分析WINDLX模拟器的功能与结构。十、 WINDLX 模拟器结构和功能:(1) Pipeline 窗口Pipeline窗口显示 DLX处理器的内部结构。窗口中用图表形示显示了DLX的五段流水线。你
8、应尽可能地扩大此窗口,以便处于不同流水段的指令都能够在图表中显示。 此图显示DLX处理器的五个流水段和浮点操作 (加 / 减, 乘和除) 的单元。(2) Code 窗口该窗口代表存储器内容的三栏信息,从左到右依次为:地址 (符号或数字)、命令的十六进制机器代码和汇编命令。 现在,点击主窗口中的 Execution开始模拟。在出现的下拉式菜单中,点击Single Cycle或按 F7键。这时,窗口中带有地址“$TEXT ”的第一行变成黄色。按下 F7 键,模拟就向前执行一步,第一行的颜色变成橘黄色,下一行变成黄色.。这些不同颜色指明命令处于流水线的哪一段。(3) Clock Cycle Diag
9、ram 窗口该窗口使所有子窗口图标化,然后打开 Clock Cycle Diagram 窗口。它显示流水线的时空图。该时空图中显示了每一个时隙内的运行情况。对准 Clock cycle diagram窗口中相应命令所在行,然后双击它,弹出一个新窗口。窗口中会详细显示每一个流水段处理器内部的执行动作。(4) Breakpoint 窗口通过 Code 窗口可以观察代码 (如果未打开,双击图标 Code),可以通过Breakpoint 来观察代码运行的情况。单击 Set Breakpoint ,将弹出一个新的“ Set Breakpoint“ 窗口。通过此窗口,可以选择命令运行到流水线的哪一阶段时,
10、程序停止执行。缺省为ID段。点击 OK 关闭窗口。在 Code 窗口中,相应行上出现 了“BID“ ,它表示当本指令在译码段时,程序中止执行。如果想查看已定义的断点,你只要单击图标 Reakpoints,将弹出一个小窗口,其中显示了所有断点。重新使窗口图标化。点击 Execution / Run 或按 F5,模拟就继续运行。会出现一个对话框提示“ID-Stage: reached at Breakpoint #1“,按“确认”按钮关闭。(5) Register 窗口Register窗口显示寄存器中的内容。为此,双击主窗口中的 Register 图标。Register 窗口会显示各个寄存器中的内
11、容。看一下R1 到 R5的值。按 F5使模拟继续运行到下一个断点处,有些值将发生改变。(6) Statistics 窗口该窗口是对运行程序中数据的分析。 Statistics 窗口提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、 Load/Store 指令、浮点指令和 traps。窗口中给出事件发生的次数和百分比。在静态窗口中我们可以比较一下不同配置对模拟的影响。十一、可研究与探索的问题:(1) trap 指令有什么作用,为什么程序中存在 trap 指令?Trap 指令在 DLX 程序用来和系统 I/O 之间建立了接口。在 WinDLX 中共定义了 5 种陷入。0 对于陷入指令来
12、说是无效参数,用来结束程序。无论何时遇到一条 trap 指令时,DLX 处理器中的流水线将被清空(2) 什么叫定向,不定向操作,区别在哪里?在发生数据相关时,等待前面计算结果的指令并不一定真的马上就用到该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令需要它的地方,就可以避免暂停。这叫做定向技术。流水线中通过设置定向路径来消除数据相关。两者区别在于加速比不同。实验二 指令流水线相关性分析一、 实验类别:验证实验二、 实验目的:通过使用 WINDLX 模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和 RISC 处理器的特
13、点的理解。三、 实验学时:4四、 人组数:1/1五、 实验设备环境:WINDLX 模拟器可以装入 DLX 汇编语言程序,然后单步、设置断点或者连续执行该程序。CPU 的寄存器、流水线、I/O 和存储器都可以使用图形的方式表示出来。模拟器还提供了对流水线操作的统计功能。该模拟器对理解流水线和 RISC 处理器的特点很有帮助。六、 实验原理:指令流水线中主要有结构相关、数据相关、控制相关。相关影响流水线性能。 七、 教学要点:三种相关及其解决办法八、 实验内容和要求:使用 WINDLX 模拟器,对求阶乘程序 Fact.s 做分析九、 实验步骤:(1)观察程序中出现的数据相关在第 21 个周期里,P
14、IPELINE 窗口中的流图出现了橘黄色的 R-Stall点击该条指令发现 。lbu r3,0x0(r2)要在 WB 周期写回 r3 中的数据,而下一条指令 seqi r5,r3,0xa 要在intEX 周期中读取 r3 中的数据。发生了写读相关。所以为了避免冲突,seqi r5,r3,0xa的 intEX 指令延迟了一个周期进行。相关指令组合:lbu r3,0x0(r2)seqi r5,r3,0xa(2)控制相关:在第四时钟周期,第一条命令正在MEM段,第二条命令在 intEX段,第四条命令在IF段。而第三条命令指示为“aborted“。其原因是:第二条命令( jal)是无条件分支指令, 但
15、只有在第三个时钟周期, jal 指令被译码后才知道,这时,下一条命令movi2fp已经取出,但需执行的下一条命令在另一个地址处,因而,movi2fp 的执行应被取消,在流水线中留下气泡。此处发生了控制相关。相关的指令组合:addi r1, r0 , 0x1000jal InputUnsignedmovi2fp f10,r1sw SaveR2r0,r2(3)结构相关。指出程序中出现上述现象的指令组合。在这个流水图中可以发现指令 Stall 了 4 个周期。点击该条指令显示如下:addi r2, r2, 0x1 该指令与它前面的一天指令 add r1,r1, r3 发生了结构相关。由于上一条指令由
16、于数据相关需要停 4 个周期,在 ID 段后停滞,不能进入 intEX 段,故 addi r2,r2,0x1 就不能进入 ID 段,译码部分已经被占用。故发生了结构相关。相关指令组合:add r1,r1, r3addi r2, r2, 0x1(4)考察增加浮点运算部件对性能的影响。N=10 时,浮点运算部件均为 1 时:N=10。, 浮点运算器都变成 2 时:比较各个数据,发现没有变化。对于该程序,指令组合涉及不到多个浮点器的结构相关。(5) 考察增加 forward 部件对性能的影响。在载入 fact.s 和 input.s 之后,不设置任何断点运行。a. 不采用重新定向技术,我们得到的结果
17、b.采用定向技术,我们得到的结果:从上面的数据我们可以看出定向的作用:在定向技术存在的情况下 Statistics 窗口中的各种统计数字:总的周期数(112) 和暂停数 (16 RAW, 12 Control, 9 Trap; 37 Total)在不定向技术存在的情况下 Statistics 窗口中的各种统计数字:总的周期数(131) 和暂停数 (16 RAW, 12 Control, 18 Trap; 46 Total)131/112=1.169DLX forwarded 比 DLX not forwarded 快 16.9%。(6) 观察转移指令在转移成功和转移不成功时候的流水线开销。转移
18、成功的情况:在一条由 4 个流水段组成的流水线中,第 I-1 条指令要等到第 I+2 条指令进入流水线时才能形成条件码。如果形成的条件码是“转移不成功”的,则猜测正确,流水线的吞吐率和效率没有降低;如果形成的条件码是“转移成功”的,则猜测错误,必须沿下面分支方向进行。此时,首先作废流水线已经执行的第 I+1,I+2 条指令,然后再从分支点开始,执行第 P,P+1, 各条指令。在这种情况下,每执行一条条件转移指令,一条 4 段流水线就有 2 个流水段被浪费。吞吐率下降为:D=3pq/1+3pq十、 试验总结:这次实验中,通过对 N 的阶乘的程序的模拟和分析,根据 pipeline 图和 cloc
19、k图和相关的数据对三种相关进行了逐个的分析。让我在对流水线的认识变得很生动形象。WINDLX 很生动的将指令执行过程中冲突如何产生,指令如何被无冲突的执行的。分析过程中,遇到的问题是不知道如何分析是哪种相关问题,后来发现只要点击每条指令的时候就可以显示在哪个周期发生了什么的相关,比如 STUCTURE 或者RAW 相关等。 解决了这个问题。由于对于该模拟软件的不熟悉,结果造成了很多浪费时间的做法。最终都被改正过来。我认为流水线技术确实可以提高计算机的执行效率,但是它的不足之处也是很多的。比如发生一些相关的时候就需要延迟,当浮点运算部件,前向部件,条件转移等问题都会对吞吐率有很大的影响。如果要将流水线的效率做到最大,就需要对代码进行优化处理,而这个并没有什么唯一的方法,只能通过个人的分析,手工进行。十一、 可研究与探索的问题:何种条件下可以让流水线达到最好的效率(浮点运算部件的个数,延迟时间,相关指令如何控制,指令的执行顺序如果改变)?流水线效率与数据相关,结构相关,控制相关有关。如果通过调整代码的顺序,减少相应的相关。同时,如果涉及到浮点运算等问题,增加浮点运算部件的个数,减少延迟时间都会使相应的效率提高。