流水线冲突问题

流水线的三种相关冲突:资源相关、数据相关和控制相关。

 

资源相关

多条指令进入流水线后,在同一始终周期内争 用同一功能部件。这种冲突的通常解决方式 为: 1.前一个指令访存的时候,后一个指令暂 停一个时钟周期(拖慢一拍),再执行。 2.增设一个功能部件

 

数据相关

后续的指令需要的操作数, 要等到前面的指令 执行完成后并保存结果后才能获得。 数据相关 主要分为三种情况:

-RAW(读后写)

-WAW(写后写) 

-WAR(写后读)

1.后面的指令需要使用到前面的所 写的数据,但是前面还没来得及写入,下一条 据没有写入此内存地址,于是读的是旧数 据),出现读后写。 第二种情况,两个指令同 写一个单元, 写的先后次序颠倒 第三钟情况, 这种情况与第一种情况恰好相反,原本需要先 读取数据再写入,但是现在是先写入后,再读 取相应的数据,也就是现在是本应该读取旧数 据,现在却读取了新的数据。

2. 设置专用的通路,当数据发生数据相关的时 候,第2条指令的操作数直接从数据处理部件 读取而不需要等数据存入再读(这种技术又称 数据旁路技术);

 

控制相关

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

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

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

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

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

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值