WinDLX实验报告
1.实验目的:
1)熟悉计算机流水线基本概念
2)了解DLX基本流水线的各段的功能
3) 了解各种不同指令在流水线中的实际流动情况
4) 对流水线做性能分析
5) 了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类
6) 了解解决数据相关的方法
2.实验内容:
1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU指令,
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
它们在流水线中的执行情况
2) 仿真器运行一段无相关的程序,记录它的执行情况,计算流水线的加速比、吞吐率与效率。
3) 在仿真器运行一段程序,统计该程序在流水线中出现的各种相关个数,及其引起的流水线暂停周期数
4) 通过在流水线中设置定向路径来消除数据相关,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数
5) 通过对程序进行编译优化并结合其他相关解决方法——分支预测与延迟槽,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数。
3.实验步骤:
整个实验分三部分来做:
1.)熟悉WinDLX的使用
用WinDLX模拟器执行求阶乘程序fact.s 。这个程序说明浮点指令的使用。该程序从
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
实验结果:
在载入fact.s和input.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),即为实际吞吐率。
效率: E=1/(1+(m-1)/n)=TP*△t=3/5
3)存在相关的程序
a.数据相关
先给出一个存在数据相关的程序:
LHI R2, (A>>16) & 0xFFFF
ADDUI R2, R2, A & 0xFFFF
LHI R3, (B>>16)&0xFFFF
ADDUI R3, R3, B&0xFFFF
loop:
LW R1, 0 (R2)
ADD R1, R1, R3
SW 0(R2), R1
LW R5, 0 (R1)
ADDI R5, R5, #10
ADDI R2, R2, #4
SUB R4, R3, R2
BNEZ R4, loop
TRAP #0
A: .word 0, 4, 8, 12, 16, 20, 24, 28, 32, 36
B: .word 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
没有采用定向技术时运行该程序:得到
程序执行了202个周期,10个数据相关引起的时钟周期RAW stall为104个。
暂停时钟周期数占总执行周期数的百分比=51.48%
采用定向技术时运行该程序:得到
程序执行了128个周期,共有6个数据相关引起的时钟周期RAW stall为30个。
暂停时钟周期数占总执行周期数的百分比=23.44%
可见通过定向技术,减少了数据相关,缩短了程序的执行周期,整个性能为原来的1.57倍。
b.结构相关
下面这段程序存在结构相关
ADDI R5, R5, 1
SUBI R4, R4, 1
AND R3, R3, R3
XOR R7, R7, R7
ADDI R8, R8, 1
ADDI R9, R9, 1
MULT R1,R5,R4
MULT R2,R3,R7
执行之后得到的clock cycle programe
Statistics:
可见1个结构相关引起了4个stall,占总共20个CYCLE 的20%
为了避免结构相关,可以考虑采用资源重复的方法,比如,在流水线机器中设置相互独立的指令存储器和数据存储器,也可以将CACHE分割成指令CACHE 和数据CACHE。
c.指令调度:
首先,通过Configuration菜单中的“Floating point stages”选项,把除法单元数设置为3,把加法﹑乘法﹑除法的延迟设置为3个时钟周期。
给出调度前的程序sch_bef:
.data
.global ONE
ONE: .word 1
.text
.global main
main:
lf f1,ONE ;turn divf into a move
cvti2f f7,f1 ;by storing in f7 1 in
nop ;floating-point format
divf f1,f8,f7 ;move Y=(f8) into f1
divf f2,f9,f7 ;move Z=(f9) into f2
addf f3,f1,f2
divf f10,f3,f7 ;move f3 into X=(f10)
divf f4,f11,f7 ;move B=(f11) into f4
divf f5,f12,f7 ;move C=(f12) into f5
multf f6,f4,f5
divf f13,f6,f7 ;move f6 into A=(f13)
Finish:
trap 0
运行之后可以得到结果:
调度之后的程序sch_aft:
.data
.global ONE
ONE: .word 1
.text
.global main
main:
lf f1,ONE ;turn divf into a move
cvti2f f7,f1 ;by storing in f7 1 in
nop ;floating-point format
divf f1,f8,f7 ;move Y=(f8) into f1
divf f2,f9,f7 ;move Z=(f9) into f2
divf f4,f11,f7 ;move B=(f11) into f4
divf f5,f12,f7 ;move C=(f12) into f5
addf f3,f1,f2
multf f6,f4,f5
divf f10,f3,f7 ;move f3 into X=(f10)
divf f13,f6,f7 ;move f6 into A=(f13)
Finish:
trap 0
运行之后得到:
可以看出经过调度之后
运行周期从27减少到21,而且减少了相关。
实验
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
:
通过本实验,基本掌握了WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点,对于体系结构这门课程的学习和后面的实验还是很有帮助的。