体系结构实验报告
- 格式:doc
- 大小:431.00 KB
- 文档页数:26
北京邮电大学
实验报告
课程名称:高级计算机系统结构
学号:2015140454姓名:罗一皓
实验二指令流水线相关性分析
一.实验类别:
验证试验
二.实验目的:
通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。
三.实验学时:
4
四.实验人数:
1
五.实验设备环境:
WinDLX模拟器可以装入DLX汇编语言程序,然后单步、设置断点或者连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来。模拟器还提供了对流水线操作的统计功能。该模拟器对理解流水线和RISC处理器的特点很有帮助。
六.实验原理:
指令流水线中主要有结构相关、数据相关、控制相关。相关影响流水线性能。
结构相关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突时,将产生“结构相关”。
数据相关:当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中重叠执行时,就可能引起“数据相关”。
控制相关:由条件指令引起的相关。
七.实验内容和要求:
使用WinDLX模拟器,对求阶乘程序Fact.s做分析
八.实验步骤:
(1)观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。
数据相关:
在第24个周期时,在Clock Cycle Diagram 中有橙黄色的R-Stall,
点开之后,我们发现有
相关指令组合:
lbu r3,0x0(r2)
seqi r5,r3,0xa
控制相关:
在第4个时钟周期中,第一条命令正在MEM段,在第二条命令在intEXcellent 段,第四条命令在IF段。而第三条命令指示为“aborted”。
其原因是:在第二条命令(jal)是无条件分支指令,但只有在第三个时钟周期,jal指令被译码后才知道,这时,下一条命令movi2fp已经取出,但须执行的下一条命令在另一个地址处,因而,movi2fp的执行应被取消,在流水线中留下气泡。此处发生了控制相关。
相关的指令组合:
addi r1,r0,0x1000
jal InputUnsigned
movi2fp f10,r1
sw SaveR2[r0],r2
结构相关:
在这个流水线图中可以发现
点开之后,会发现
addi r2,r2,0x1 该指令在它面前的一条指令add r1,r1,r3 发生了结构相关。由于上一条指令由于数据相关需要停4个周期,在ID段后停滞,不能进入intEX段,故addi r2,r2,0x1 就不能进入ID,译码部分已经被占用。故发生了结构相关。
相关指令:
add r1,r1,r3
addi r2,r2,0x1
(2)考察增加浮点运算部件对性能的影响。
N=4时,浮点运算部件均为1时:
N=4,浮点运算器都变为2时:
比较个数据,发现没有发生变化。对于该程序,指令组合涉及不到多个浮点器的结构相关。
(3)考察增加forward部件对性能的影响。
在载入fact.s和input.s之后,不设置任何断点运行。
①不采用重新定向技术,我们得到
② 采用定向技术,我们得到的结果是:
从上面的数据我们可以看出定向的作用:
增加forward 部件后的109个时钟周期比增加前的137个少了28个时钟周期。 增加forward 部件使得RAW 相关变为15个,比增加前的41个减少了26个,RAW 相关的比例从总时钟周期的29.93%减为13.76%。
增加forward 部件使得控制相关比例增加了,由原来占总时钟周期的8.03%增至10.09%。
总之,使用forward 部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善。
(4)观察转移指令在转移成功和转移不成功时候的流水线开销。转移成功的情况:
在一条由4个流水段组成的流水线中,第I-1条指令要等到第I+2条指令进入流水线时才能形成条件码。如果形成的条件码是“转移不成功”的,则猜测正确,流水线的吞吐率和效率没有降低;如果形成的条件码是“转移成功”的,则猜测错误,必须沿下面分支方向进行。此时,首先作废流水线已经执行的第I+1,I+2条指令,然后再从分支点开始,执行第P,P+1,…各条指令。在这种情况下,每执行一条条件转移指令,一条4段流水线就有2个流水段被浪费。吞吐率下降为:
D=3pq/1+3pq
九.实验总结:
本次实验,通过模拟和分析对N的阶乘的程序,根据pipeline图和clock图和相关的数据对数据相关,结构相关,控制相关进行了逐个的分析。分析结果之后,对于老师上课讲到的内容有了更加形象化的理解,对于学习挤塑机体系结构大有帮助。
实验三 DLX处理器程序设计
一、实验目的
学习使用DLX 汇编语言编程,进一步分析相关现象。
二、实验设备环境
DLX汇编语言环境
三、实验内容和要求
自编一段汇编代码,完成一维向量加法运算,并输出结果。观察程序中出现的数据/控制/结构相关。(注:使用一维数组表示一维向量。)
四、代码清单及注释
*双精度浮点加法求和设计*
1、代码及注释
.data
;***store the vector
ReadBuffer1: .space 120 ;store vector in byte
ReadPar1: .word 0,ReadBuffer1,120
ReadBuffer2: .space 120 ;store vector in byte
ReadPar2: .word 0,ReadBuffer2,120
;***msg for output
Prompt0: .asciiz "Add two vector:\n\n"
Prompt1: .asciiz "vector1:(element seperated by space)\n"
Prompt2: .asciiz "vector2:(element seperated by space)\n"
Prompt3: .asciiz "vectorSum: "
;*** Data for Printf-Trap
PrintfFormat: .asciiz "%f " ;used to output the result
.align 4
PrintfPar: .word PrintfFormat
PrintfValue: .space 8
PrintfPar2: .space 4
.text
.global main
main: