- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告
学 院: 计算机学院
课程名称: 计算机系统结构
实验名称: WINDLX 模拟器实验
班 级:
姓 名:
学 号:
实验一 WINDLX 模拟器安装及使用
略
实验二 指令流水线相关性分析
一. 实验类别
验证实验
二. 实验目的
通过使用 WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专
用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和 RISC处理器的特点的理解。
三. 实验环境
Windows XP操作系统
WinDLX模拟器
四. 实验原理
指令流水线中主要有结构相关、 数据相关、控制相关。相关影响流水线性能。
(1) 数据相关
定义:原有先后顺序的两条指令( I1,I2)在对共享变量(位置)进行读、写时,指令流水线中实际完成的读、 写顺序与原有顺序不一致,
导致流水线输出错误。
三类数据相关 :
写读 (WR)相关
读写 (RW)相关
写写 (WW)相关
解决方法技术 :
使某些流水线指令延迟、停顿一或多个周期。
双端口存储器 :如果指令和数据放在同一个存储器。
设置两个存储器:一个数据存储,一个为指令存储器。
软件优化编译:通过指令重新排序,消除数据相关。
定向技术:又称旁路技术或专用通路技术,是使后续指令提前得到前指令的运算结果 (适合 ALU类指令)
2)结构相关
定义:如果某指令在流水线重叠执行过程中,硬件资源满足不了指令重叠执行的要求,会产生资源冲突或竞争,称为流水线结构相关
解决方法技术:
延迟技术:使某些指令延迟、停顿一或多个时钟周期
双端口存储器:允许同时读两个数据或指令
设置双存储器(哈弗结构):一个数据存储,一个指令存储。
软件优化编译:通过指令重新排序消除结构相关。
(3)控制相关
定义:控制相关是指因程序执行转移类指令而引起的冲突相关。包括无条件转移、条件转移、子程序调用、中断等,它们属于分支指令,执行中可能改变程序方向,造成流水线断流。
解决方法技术:
1、 静态分支技术
静态转移预测技术 (猜测法 ) ;
延迟转移;
提前形成条件码,生成转移目标地址;
改进循环程序 ;
2、 动态分支预测技术
转移历史表 BHT;
转移目标缓冲栈( BTB);
转移目标指令缓冲栈 BTIB;
五. 实验步骤
1) 观察程序中出现的数据 / 控制 / 结构相关。指出程序中出现上述现象的指令组合。
2) 考察增加浮点运算部件对性能的影响。
3) 考察增加 forward 部件对性能的影响。
4) 观察转移指令在转移成功和转移不成功时候的流水线开销。
注意:除( 2)以外,浮点加、乘、除部件都只有一个;
本问题中所有浮点运算部件的延时都请设定为 4 个周期。
六. 实验过程
在开始模拟之前,将和加载至 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 指令延迟了一个周期进行。
则发生数据相关的指令为
控制相关
可知第 0条指令为循环指令,指令在 EX时刻才能判别指令是否发生转移,此时发生了控制相关。如下所示,此时指令跳转成功,故顺序取出的指令必须中断,并且转向取出转移到的指令。
在 EX 时发现跳转成功,则在 EX 阶段马上结束指令顺序取出的指令 sd PrintfValue(r0),f0,转而执行 led f0/4 指令的取指阶段 ID。由于此控制相关使得流水线断流一个时钟周期。
结构相关
上图表明了 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后,数据对比如下:
比较各个数据, 发现没有变化。 无论怎么增加浮点运算部件, 统计结果都一样。原因在于此程序中浮
文档评论(0)