第4章 流水线

流水线

通过在组合逻辑后加入流水线寄存器实现流水线,有了流水线能在一个时钟周期中发射一条指令并完成一条指令

流水线的断流叫做流水线冒险主要有1)数据冒险2)控制冒险

数据冒险

数据冒险是指下一条流水线用到上一条指令写入的数据,也就是写后读。

处理方法

  • 用暂停来避免数据冒险
  • 用转发来避免数据冒险:不写入寄存器,直接将结果作为下一条指令的输入

控制冒险

例如ret返回指令和call跳转指令会是流水线产生控制冒险

处理方法

  • 暂停避免

在第3个周期执行ret的时候我们在DEM三个阶段插入三个bubble空指令,一旦ret执行到写入阶段,我们就知道了下一条指令的PC地址,我们开始正常执行下一条指令流水行(在第7个周期)

一般情况下,我们都是执行条件分支,当条件分支是错误的时候,在周期4发现预测错误之前,已经取出了两条指令,此时,跳转指令正在通过执行阶段。在周期5中,流水线往译码和执行阶段中插入气泡,取消了两条预测分支指令,同时去除跳转后面的那条指令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值