北邮大三计算机体系结构实验二指令流水线相关性分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二指令流水线相关性分析

1、实验目的

通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。

2、实验原理

指令流水线中主要有结构相关、数据相关、控制相关。相关影响流水线性能。 

3、 实验步骤

(1) 观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。

数据相关指令:

lbu r3,0x0(r2)

seqi r5,r3,0xa

不采用定向技术

lbu r3,0x0(r2)要在WB周期写回r3中的数据,而下一条指令seqi r5,r3,0xa 要在intEX周期中读取r3中的数据。发生了写读相关。所以为了避免冲突,seqi r5,r3,0xa的intEX指令延迟了一个周期进行。

控制相关指令:

addi r1, r0 , 0x1000

jal InputUnsigned

movi2fp f10,r1

sw SaveR2[r0],r2

跳转指令,从执行的Fact.s中的movi2fp指令跳至Input.s中的Unsigned标号处。开始输入处理

结构相关指令:

add r1,r1, r3

addi r2, r2, 0x1

addi r2, r2, 0x1 该指令与它前面的一条指令 add r1,r1, r3发生了结构相关。由于上一条指令由于数据相关需要停4个周期,在ID段后停滞,不能进入intEX段,故addi r2,r2,0x1 就不能进入ID段,译码部分已经被占用。故发生了结构相关。

(2) 考察增加浮点运算部件对性能的影响。

1个浮点运算单元 3个浮点运算单元

同一段代码执行相同步,但是经过对比发现浮点运算部件的多少对于程序执行效率并没有什么影响,浮点运算部件的多少对统计结果都不造成影响。可能因为程序中浮点计算指令没有重叠,所以并行度没有增加,性能没有提高。

(3) 考察增加forward 部件对性能的影响。

不使用forwarding 使用forwarding

使用forward部件之后执行相同的代码用的时钟周期比不使用forward部件要少。

使用forward部件使得RAW相关明显减少了,占总的时钟周期比例也减少了。

总之,使用forward部件后,总的时钟周期减少,数据相关减少,流水线的性能得到一定的改善,因为我在这里求阶乘输入的数字比较小,执行的指令数目不是很多,如果代码量比较大使用forward会使机器的处理效率大大提高。

(4) 观察转移指令在转移成功和转移不成功时候的流水线开销。

输入10

若转移不成功,对流水线的执行无影响,流水线的吞吐率和效率没有降低。若转移成功,则要废弃预先读入的指令,重新从转移成功处读入指令,每执行一条条件转移指令,一条x段流水线就有x-2个流水线被浪费掉,执行效率降低,性能有一定的损失。这里求阶乘的程序转移不成功的概率比较大,对性能有一定损失,但是损失不是很大。

注意:除(2)以外,浮点加、乘、除部件都只有一个;

本问题中所有浮点运算部件的延时都请设定为4 个周期。

4、实验总结:

这次实验是对N的阶乘的程序的模拟和分析,分析程序中出现的数据相关、控制相关、结构相关,并考察增加浮点运算部件、forward部件对性能的影响,观察转移指令在转移成功和不成功时的流水线开销。开始的时候不知道怎么load程序执行,不熟悉怎么操作软件,花费了一些时间熟悉软件。

实验过程中出现了一些问题,比如在载入程序的时候要先载入fact.s,再载入input.s才能使程序正确地执行。本次实验浮点运算部件的增加与否对程序执行效率没有什么影响,forward部件对流水线效率的影响比较大,在一定程度上能优化流水线。

通过本次实验对流水线有了深入的了解,软件也从各个角度展示了流水线的工作过程,让我们直观地看到了数据相关,结构相关和控制相关发生的原因以及过程,了解了衡量流水线好坏的指标。

相关文档
最新文档