计算机体系结构-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 @   夏目^_^  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示