流水线冲突及解决办法

一、结构相关

由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关,解决办法如下:

1、前一指令访存时,使后一 条相关指令(以及其后续指令)暂停一 个时钟周期。

2、单独设置数据存储器和指令存储器,使两项操作各自在不同的存储器中进行,这属于资源重复配置。

二、数据相关

数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关。当多条指令重叠处理时就会发生冲突,解决办法如下:

1、把遇到数据相关的指令及其后续指令都暂停 一至 几个时钟周期,直到数据相关问题消失 后再继续执行,可分为硬件阻塞(sta ll) 和软件插入“ NOP ”指令两种方法。

2、设置相关专用通路,即不等前一条指令把计算结果写回寄存器组,下一条指令也不再读 寄存器组, 而是直接把前一 条指令的 ALU 的计算结果作为自己的输入数据开始计算过程,使本 来需要暂停的操作变得可以继续执行,称为数据旁路技术。

3、通过编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相 关。

三、控制相关

当流水线遇到转移指令和其他改变 PC 值的指令而造成断流时,会引起控制相关。解决办法如下:

1、对转移指令进行分支预测,尽早生成转移目标地址。分支预测分为简单(静态)预测和 动态预测。静态预测总是预测条件不满足,即继续执行分支指令的后续指令。动态预测根据程序 执行的历史情况,进行动态预测调整,有较高的预测准确率。

2、预取转移成功和不成功两个控制流方向上的目标指令。

3、加快和提前形成条件码。

4、提高转移方向的猜准率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值