计算机体系结构-hw8
计算机体系结构-hw8
Problem 1

注:做这道题需要了解一些前置的知识

上图表明了一些指令在一些阶段做了什么事情。
- 如果存在旁路硬件:
- 如果该指令不是访存指令,且存在真数据相关,那么相关的寄存器的值是在ALU阶段完成后取得
- 如果该指令是访存指令,且存在真数据相关,那么相关的寄存器的值是在DM阶段完成后取得
- 如果不存在旁路硬件:
- 无论是什么指令,只要存在数据相关,都在RW(写回到寄存器)阶段取得。

注:第四对指令由于不需要根据R2计算地址,所以跟第三对指令有所不同。
Problem 2

对于分支跳转的语句,往往存在控制相关,因为在获取结果之前,下一条要进入流水线的指令是不确定的。如果我们在获取结果前,停止取指令,那么一定会停顿。所以,我们需要解决这种情况:
- 猜测执行(猜测下一条进入流水线的指令,如果成功,不会浪费周期,如果失败,需要冲刷流水线,浪费周期)
- 分支延迟槽(从分支之前找到一条不存在数据相关性的指令,放入到延迟槽执行,使其不会浪费周期)
题解:
- 对于第一种情况,由于获取结果之前,停止取指令,因此无论结果如何,一定会停顿。100%
- 对于第二种情况,由于采用猜测执行的策略(默认分支不执行),然而分支却有80%的概率执行,因此停顿:80%
- 对于第三种情况,我们分情况进行讨论:
- 如果找不到放入延迟槽的指令,那么100%停顿
- 因为可从前面寻找到一个具有无关性的指令,放入到延迟槽,所以一定不会停顿。0%。
- 因为从分支执行的方向,找一条指令放入到延迟槽。所以,停顿:20%
- 因为从分支不执行的方向,找一条指令放入到延迟槽。所以,停顿:80%
Problem 3

7次展开或5次展开都可以,具体请看以下的汇编代码:
7次展开:

5次展开:



致谢
[1] 以上图片来自于计算机体系结构刘珂老师的课程

浙公网安备 33010602011771号