计算机体系结构-hw8

计算机体系结构-hw8

Problem 1

img
注:做这道题需要了解一些前置的知识
img
上图表明了一些指令在一些阶段做了什么事情。

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

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

Problem 2

img
对于分支跳转的语句,往往存在控制相关,因为在获取结果之前,下一条要进入流水线的指令是不确定的。如果我们在获取结果前,停止取指令,那么一定会停顿。所以,我们需要解决这种情况:

  • 猜测执行(猜测下一条进入流水线的指令,如果成功,不会浪费周期,如果失败,需要冲刷流水线,浪费周期)
  • 分支延迟槽(从分支之前找到一条不存在数据相关性的指令,放入到延迟槽执行,使其不会浪费周期)

题解:

  • 对于第一种情况,由于获取结果之前,停止取指令,因此无论结果如何,一定会停顿。100%
  • 对于第二种情况,由于采用猜测执行的策略(默认分支不执行),然而分支却有80%的概率执行,因此停顿:80%
  • 对于第三种情况,我们分情况进行讨论:
    • 如果找不到放入延迟槽的指令,那么100%停顿
    • 因为可从前面寻找到一个具有无关性的指令,放入到延迟槽,所以一定不会停顿。0%。
    • 因为从分支执行的方向,找一条指令放入到延迟槽。所以,停顿:20%
    • 因为从分支不执行的方向,找一条指令放入到延迟槽。所以,停顿:80%

Problem 3

img

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

7次展开:

img

5次展开:

img
img
img

致谢

    [1] 以上图片来自于计算机体系结构刘珂老师的课程
posted @ 2024-01-16 19:39  夏目^_^  阅读(42)  评论(0)    收藏  举报