WinDLX实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WinDLX实验报告(I)
1.实验目的:
1)熟悉计算机流水线基本概念
2)了解DLX基本流水线的各段的功能了解各种不同指令在流水线中的实际流动情况
3)对流水线做性能分析
4)了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类
5)了解决数据相关的方法
2.实验内容:
1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU 指令,记录它们在流水线中的执行情况
2)仿真器运行一段无相关的程序,记录执行情况,计算流水线的加速比、吞吐率与效率。
3)在仿真器运行一段程序,统计该程序在流水线中出现的各种相关个数,及其引起的流水线暂停周期数
4)在流水线中设置定向路径来消除数据相关,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数
5)通过对程序进行编译优化并结合其他相关解决方法——分支预测与延迟槽,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数。
3.实验步骤:
1.)熟悉WinDLX的使用
用WinDLX模拟器执行求最大公约数程序gcm.s。这个程序说明浮点指令的使用。该程序从标准输入读入两个个整数,求其最大公约数,然后将结果存放在R2寄存器中。该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
实验结果:
在载入gcm.s和input.s之后,不设置任何断点运行。
a.不采用重新定向技术,得到的结果
b.采用定向技术,得到的结果:
从上面的数据我们可以看出定向的作用:
在定向技术存在的情况下Statistics 窗口中的各种统计数字:总的周期数(186)和暂停数(48 RAW, 17 Control, 18 Trap; 83 Total)
在定向技术不存在时候,控制暂停和Trap 暂停仍然是同样的值,而RAW暂停从48变成了72,总的模拟周期数增加到217。所以定向技术带来的加速比:217/186=1.167
DLX forwarded比DLX not forwarded快16.7%。
我们得出结论:使用定向技术可以较明显减少周期暂停提高系统执行效率
2)不相关的程序
以下给出一段代码,为数条不相关指令构成。
ADDI R5, R5, 20
SUBI R4, R4, 0xffffffff
AND R3, r5, R4
XOR R7, R3, R7
ADDI R8, R8, 1
ADDI R9, R9, 1
trap 0
在WinDLX中执行的结果如下:
如上图所示:
6条指令一共执行了10个周期,而每个指令都需要5个周期来完成。(trap返回指令不计入其中)
故可得加速比:5*6/10=3
实际吞吐率:流水线由5段组成,完成6条指令,m=5,n=6
T=5△t+(6-1) △t=10△t
Tp=n/T=3/(5△t),即为实际吞吐率。
效率:E=1/(1+(m-1)/n)=TP*△t=3/5
3)存在相关的程序
a.数据相关
先给出一个存在数据相关的程序:
addi r3,r3,150
sw 0x800,r3
addi r2,r2,0x500
lw r1,0x300(r2)
loop: sub r1,r1,1
bnez r1,loop
addi r1,r1,555
sw 0(r2),r1
trap 0
执行结果时空图:
没有采用定向技术时运行该程序:得到
程序执行了708个周期,数据相关引起的时钟周期RAW stall为308个。暂停时钟周期数占总执行周期数的百分比=40.10%
采用定向技术时运行该程序:得到
程序执行了611个周期,数据相关引起的时钟周期RAW stall为152个。
暂停时钟周期数占总执行周期数的百分比=24.88%
可见通过定向技术,减少了数据相关,缩短了程序的执行周期,整个性能为原来的1.158倍。
b.结构相关
下面这段程序存在结构相关
addi r1,r1,5
addi r2,r2,6
addi r3,r3,7
addi r4,r4,11
mult r1,r2,r1
mult r3,r4,r2
add r2,r1,r1
trap 0
执行之后得到的clock cycle programe
Statistics:
可见2个结构相关引起了4个stall,占总共20个CYCLE 的21.05%
为了避免结构相关,可以考虑采用资源重复的方法,比如,在流水线机器中设置相互独立的指令存储器和数据存储器,也可以将CACHE分割成指令CACHE 和数据CACHE。
实验总结:
通过本实验,基本掌握了WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点,对于体系结构这门课程的学习和后面的实验还是很有帮助的。
心得体会
通过本次系统结构实验,我对DLX的流水线运行分析,包括流水线单步执行、每个流水段功能、理解流水线停顿、流水线建立和排空、定向技术等内容有了很好的掌握;知道其运行情况,能够根据程序段分析其运行位置及存储情况,会用内存地址等查看所输入数值的存储,在寄存器中找到相应输入数值,理解其运行断点的含义;我还会观察程序中出现的数据相关、控制相关和结构相关现象,并能找出程序中出现上述现象的指令;我对DLX指令的语法和语义也有一定了解,会编写简单程序解决基本问题,对课堂所学知识有了更深入的理解,在以后的学习中要勤于动手,将所学知识在实践中运用,以便理解更清晰、透彻。
一周时间,了解一个软件应该不算难,但必须是在自我动手实验的基础上,合理安排时间巩固学习成果才能做到。计算机毕竟是个工科学科,需要的不仅仅是学习,更多的是实践。