体系结构实验二解读.docx
- 文档编号:29435735
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:16
- 大小:344.81KB
体系结构实验二解读.docx
《体系结构实验二解读.docx》由会员分享,可在线阅读,更多相关《体系结构实验二解读.docx(16页珍藏版)》请在冰豆网上搜索。
体系结构实验二解读
深圳大学实验报告
实验课程名称:
计算机体系结构
实验项目名称:
WinDLX汇编及流水线观察实验
学院:
计算机与软件学院专业:
计算机科学与技术
报告人:
学号:
班级:
1
同组人:
指导教师:
实验时间:
2015-05提交时间:
2015-05
声明:
本次实验内容由报告人和同组人独立完成,所有涉及到他人的工作均已说明。
报告人和同组人均同意教师及学校为教学活动而引用本实验的内容,且无需事先征得同意和特别说明。
教务处制
一、实验目的
观察数据相关、结构(功能)相关、跳转、中断(系统调用)对流水线的影响;
利用调整指令序列、采用直接通路(定向技术)、资源重复的方法提高流水线效率;
加深对影响流水线性能的各因素和相应解决方法的认识;
理解指令调度的概念;
了解指令调度对系统性能的影响
二、实验说明和实验环境
编写DLX汇编语言程序,产生出数据相关、结构功能相关、跳转、中断(系统调用)得情况。
在windlx的各个观察窗口观察出现流水线断流的情况;
采用调整指令序列、直接通路和资源重复的方法提高流水线效率;
课前可以先浏览阅读DLX的RISC指令集。
3、测试与结果
1、运行样例程序
1)
addir2,r0,0
addir3,r0,200
loop:
lwr1,0(r2)
addir1,r1,1
sw0(r2),r1
addir2,r2,4
subr4,r3,r2
bnezr4,loop
Finish:
trap0
在指令之间出现了红和绿的箭头。
红色箭头表示需要一个暂停,箭头指向处显示了暂停的原因。
R-Stall(R-暂停)表示引起暂停的原因是RAW。
绿色箭头表示定向技术的使用。
思考:
Addir2,r2,0x4
Subr4,r3,r2
这个时候怎么没出现stall就intEx了?
答:
虽然有数据相关,但是因为寄存器有直接通路,addi的运算结果直接送给了sub指令。
按F5后查看Statistics窗口中的各种统计数字:
总的周期数(496)和暂停数(100RAW,49Control,3Trap;152Total)
2)样例程序2:
addir2,r0,0
addir3,r0,200
loop:
lwr1,0(r2)
addir2,r2,4
subr4,r3,r2
addir1,r1,1
bnezr4,loop
sw0(r2),r1
Finish:
trap0
运行过程中流水线上CLOCKCycleDiagram这个显示如下:
按F5后查看Statistics窗口中的各种统计数字:
总的周期数(307)和暂停数(0RAW,49Control,3Trap;52Total),可以查看下图:
2、分析程序观察流水线执行
运行functionalcomponents.s,将断点设置在bnezr3,loop,运行两次(即循环两次)
关闭定向通路技术。
说明哪些指令间发生了哪种类型的相关。
根据统计窗口的数据或自己观察计算流水线效率、加速比。
addr2,r2,4和subr4,r3,r2。
此处发生数据相关。
subr4,r3,r2
addir1,r1,1
bnezr4,loop。
此处发生二次相关。
流水线效率=1-41.18%(stall(暂停)占总周期的比例)=58.82%
加速比=执行的指令数*5(cycles)/流水线作业的周期数(cycles)=20*5/34=2.94
运行insductionRearrange.s,将断点设置在bnezr3,loop,运行两次(即循环两次)
关闭定向通路技术。
循环内共有三处数据相关,不一一详细截图。
流水线效率=1-37.84%(stall(暂停)占总周期的比例)=62.16%
加速比=执行的指令数*5(cycles)/流水线作业的周期数(cycles)=23*5/37=3.11
3、提高流水线效率
运行functionalcomponents.s,将断点设置在bnezr3,loop,运行两次(即循环两次)
1)调整指令顺序结果:
发生新的数据相关
流水线效率=1-40.00%=60.00%
加速比=100/30=3.33
2)开启定向通路技术结果:
流水线效率=1-37.50%=62.50%
加速比=100/32=3.125
3)启用2个乘法部件
流水线效率=1-23.08%=76.92%
加速比=100/26=3.85
由时空图可以看出,由于启用了两个部件,因此连续两个乘法指令的第二条指令并不会出现S-STALL,也就是不会出现等待(暂停),并且很明确的给出了执行乘法计算的过程中所使用的部件序号,如第一条使用了1号部件。
提高了流水线效率和加速比。
运行insductionRearrange.s,将断点设置在bnezr3,loop,运行两次(即循环两次)
1)调整计算顺序结果:
并未出现任何数据相关
流水线效率=1-8.00%=92.00%
加速比=115/25=4.6
2)开启定向通路技术结果:
流水线效率=1-14.81%=85.19%
加速比=115/27=4.26
比较资源重复前后的时空图差异,并分析该方法解决的部件冲突的能力,比如以乘法器为例:
乘法器节拍数、部件重复份数、所需的流水线延迟节拍之间的关系;得出在什么时候无限长连续乘法指令不需要停顿的充分条件。
所需延迟节拍=乘法节拍数-部件重复份数
充分条件:
所需延迟节拍为0时,即部件重复份数等于乘法节拍数时,
4、X86架构程序性能优化
1)第一段代码出现数据相关,第二段代码出现数据相关,第三段代码出现部件相关
2)第二段代码运行时间:
第二段代码改进及改进后的时间:
第三段代码运行时间:
第三段代码改进及改进后的时间:
3)对编程有哪些启示?
理论上从程序员的角度对代码进行优化是一种积极的事情,但是似乎编译器要比人强大的多。
怎么感觉有时候会越优化越慢的感觉,也有可能会是我的某个地方出了问题还需要改正。
更底层的一些优化或许对于普通程序员来说并不那么容易,编译器这个汇聚了众多优秀程序员智慧的东西真的是比个人要强大很多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 体系结构 实验 解读