北邮计算机系统结构-WINDLX模拟器实验 报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
学院:计算机学院
课程名称:计算机系统结构
实验名称: WINDLX模拟器实验
班级:
姓名:
学号:
实验一 WINDLX模拟器安装及使用
略
实验二指令流水线相关性分析
一.实验类别
验证实验
二.实验目的
通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。
三.实验环境
Windows XP操作系统
WinDLX模拟器
四.实验原理
指令流水线中主要有结构相关、数据相关、控制相关。相关影响流水线性能。
(1)数据相关
定义:原有先后顺序的两条指令(I1,I2)在对共享变量(位置)进行读、写时,指令流水线中实际完成的读、写顺序与原有顺序不一
致,导致流水线输出错误。
三类数据相关:
写读(WR)相关
读写(RW)相关
写写(WW)相关
解决方法技术:
1. 使某些流水线指令延迟、停顿一或多个周期。
2. 双端口存储器:如果指令和数据放在同一个存储器。
3. 设置两个存储器:一个数据存储,一个为指令存储器。
4. 软件优化编译:通过指令重新排序,消除数据相关。
5. 定向技术:又称旁路技术或专用通路技术,是使后续指令
提前得到前指令的运算结果(适合ALU类指令)(2)结构相关
定义:如果某指令在流水线重叠执行过程中,硬件资源满足不了指令重叠执行的要求,会产生资源冲突或竞争,称为流水线结构相关
解决方法技术:
1. 延迟技术:使某些指令延迟、停顿一或多个时钟周期
2. 双端口存储器:允许同时读两个数据或指令
3. 设置双存储器(哈弗结构):一个数据存储,一个指令存
储。 4软件优化编译:通过指令重新排序消除结构相关。
(3)控制相关
定义:控制相关是指因程序执行转移类指令而引起的冲突相关。包括无条件转移、条件转移、子程序调用、中断等,它们属于分支指令,执行中可能改变程序方向,造成流水线断流。
解决方法技术:
1、静态分支技术
静态转移预测技术(猜测法) ;
延迟转移;
提前形成条件码,生成转移目标地址;
改进循环程序;
2、动态分支预测技术
转移历史表BHT;
转移目标缓冲栈(BTB);
转移目标指令缓冲栈BTIB;
五.实验步骤
(1)观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。
(2)考察增加浮点运算部件对性能的影响。
(3)考察增加forward部件对性能的影响。
(4)观察转移指令在转移成功和转移不成功时候的流水线开销。
注意:除(2)以外,浮点加、乘、除部件都只有一个;
本问题中所有浮点运算部件的延时都请设定为4个周期。
六.实验过程
在开始模拟之前,将fact.s和input.s加载至WinDLX中。
加载完后点击Code后可以看到如下图所示。证明加载成功,即可进行以下实验。
(1)观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。
1.1.数据相关
如图所示
lbu r3,0×0(r2)
要在WB周期写回r3中的数据;而下一条指令
seqi r5,r3,0×a
要在intEX周期中读取r3中的数据。
上述过程发生了WR冲突,即写读相关。为了避免此类冲突,
seq r5,r4,0×a的intEX指令延迟了一个周期进行。
则发生数据相关的指令为
1.2控制相关
可知第0*00000130条指令jfact.Loop为循环指令,指令在EX时刻才能判别指令是否发生转移,此时发生了控制相关。如下所示,此时指令跳转成功,故顺序取出的指令必须中断,并且转向取出转移到的指令。
jfact.Loop在EX时发现跳转成功,则在EX阶段马上结束指令顺序取出的指令sd PrintfValue(r0),f0,转而执行led f0/4指令的取指阶段ID。由于此控制相关使得流水线断流一个时钟周期。
1.3 结构相关
上图表明了addi r2,r2,0×1的详细信息。该指令与它前一条指令add r1,r1,r3发生了结构相关。并且由于此处的冲突,需要暂停2个周期。在ID段暂停后,则开始进图intEX段。所以这条指令(addi r2,r2,0×1)你不能进入ID流水段,译码部分占用,发生了结构相关。该部分的指令为:
(2)考察增加浮点运算部件对性能的影响。
取N=12
设置浮点运算部件的配置。由于实验手册上面要求Delay=4,所以我们将Delay这一栏改成4,而Count可以任意,为了对比,我们第一次浮点运算部件取全部为2,第二次浮点运算部件取全部为4。
分别运行50个cycles后,数据对比如下:
比较各个数据,发现没有变化。无论怎么增加浮点运算部件,统计结果都一样。原因在于此程序中浮点计算指令没有重叠,所以并行度没有增加,性能没有提高。
所以,浮点运算部件的增减对效率无影响。
(3)考察增加forward部件对性能的影响。
为了对比有无forward部件的性能。需要在勾选enable forwarding,以及不勾选enable configuration来看性能数据的对比。
不使用forward部件:使用forward部件:
从上面的数据我们可以看出增加forward部件后,总的周期数由200减少至158,RAW由原来占总时钟周期的32.5%减少至16.46%,RAW个数由原来的65减少至26。增加forward部件使得控制相关比例增加了。
所以,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善。