WinDLX 实验报告 1.实验目的: 1)熟悉计算机流水线基本概念 2)了解DLX 基本流水线的各段的功能了解各种不同指令在流水线中的实际流动情况 3)对流水线做性能分析 4)了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类 5)了解决数据相关的方法 2.实验内容: 1)在仿真器上分别运行单条指令:Load 指令、Store 指令、分支指令、寄存器 ALU 指令、 立即数ALU 指令,记录它们在流水线中的执行情况 2)仿真器运行一段无相关的程序,记录执行情况,计算流水线的加速比、吞吐率与效率。 3)在仿真器运行一段程序,统计该程序在流水线中出现的各种相关个数,及其引起的流水线暂停周期数 4)在流水线中设置定向路径来消除数据相关,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数 5)通过对程序进行编译优化并结合其他相关解决方法——分支预测与延迟槽,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数。 3.实验步骤: 1.)熟悉Win DLX 的使用 用 WinDLX 模拟器执行求阶乘程序 fact.s 。这个程序说明浮点指令的使用。该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。该程序中调用了inpu t.s 中的输入子程序,这个子程序用于读入正整数。 实验结果: 在载入 fact.s 和 inpu t.s 之后,不设置任何断点运行。 a.不采用重新定向技术,我们得到的结果 b.采用定向技术,我们得到的结果: 从上面的数据我们可以看出定向的作用: 在定向技术存在的情况下 Statistics 窗口中的各种统计数字:总的周期数(215) 和暂停数 (17 RAW, 25 Control, 12 Trap; 54 Total) 在定向技术不存在时候,控制暂停和 Trap 暂停仍然是同样的值,而RAW 暂停从17 变成了53,总的模拟周期数增加到236。所以定向技术带来的加速比:236 / 215 = 1.098 DLXforwarded 比 DLXnot forwarded 快9.8%。 2 )不相关的程序 下面是一段不相关的程序,一共6 条指令 ADDI R5, R5, 1 SUBI R4, R4, 1 AND R3, R3, R3 XOR R7, R7, R7 ADDI R8, R8, 1 ADDI R9, R9, 1 在WinDLX 中执行的结果如下: 如上图所示: 6 条指令一共执行了10 个周期,而每个指令都需要5 个周期来完成。 故可得加速比:5*6/10=3 实际吞吐率:流水线由5 段组成,完成6 条指令,m=5,n=6 T=5△t+(6-1) △t=10△t Tp=n/T=3/(5△t),...