5.5指令流水线

一、指令流水线的基本概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、指令流水线的影响因素和分类

在这里插入图片描述
取指令 译码 执行 访存 写回
取指令和访存阶段一般都是联系的cache,因为cache的命中率很高,而且cache有两类,一类专门用来存指令,另一类用来存取数据,这样取指令和访存可以并行执行。

译码阶段:完成指令译码和取数操作(把指令所用到的操作数从通用寄存器中取出来,然后放到锁存器A和B中,之前的指令的操作数会直接来自主存,但是在精简指令集系统RISC之下,进行运算的操作数一定来自通用寄存器,或者就算来自主存,也会将其先放到通用寄存器中)
执行阶段:会使用ALU对译码阶段取出来的操作数进行一个运算。imm指的是存放立即数的锁存器(有的会使用立即寻址方式,指令的地址码直接说明了一个立即数,那么可以将指令中的立即数取出放到imm锁存器中,所以有的时候,执行阶段会有两个数,一个来自通用寄存器,另一个来自imm锁存器)
最后结果可能放到主存中,或者放到通用寄存器中
译码阶段会对通用寄存器进行一个读操作,写回阶段可能会对通用寄存器进行一个写操作 ,这样可能会出现有些问题。

在这里插入图片描述
资源冲突(操作系统中的互斥问题),数据冲突(指令一前一后的问题)
在这里插入图片描述

在这里插入图片描述
add命令是r2+r3=r1,在最后的写回阶段才会将r1进行写回
但是sub命令在译码阶段进行读r1,此时r1还没有写回去,这就是同步问题,此后的and or命令都存在问题

在这里插入图片描述
nop是空指令,空指令也会完整经过所哟有阶段
在这里插入图片描述
在这里插入图片描述
其实r1的运算结果在执行阶段完成之后,可以从ALU直接拿到结果,而不用等写回阶段从寄存器中拿到。
在这里插入图片描述
把后面的不被前面指令影响的,先给拿到前面执行
在这里插入图片描述
在这里插入图片描述
程序的顺序执行流改变
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、五段式指令流水线

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
996是偏移量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值