一、结构相关
由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关,解决办法如下:
1、前一指令访存时,使后一 条相关指令(以及其后续指令)暂停一 个时钟周期。
2、单独设置数据存储器和指令存储器,使两项操作各自在不同的存储器中进行,这属于资源重复配置。
二、数据相关
数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关。当多条指令重叠处理时就会发生冲突,解决办法如下:
1、把遇到数据相关的指令及其后续指令都暂停 一至 几个时钟周期,直到数据相关问题消失 后再继续执行,可分为硬件阻塞(sta ll) 和软件插入“ NOP ”指令两种方法。
2、设置相关专用通路,即不等前一条指令把计算结果写回寄存器组,下一条指令也不再读 寄存器组, 而是直接把前一 条指令的 ALU 的计算结果作为自己的输入数据开始计算过程,使本 来需要暂停的操作变得可以继续执行,称为数据旁路技术。
3、通过编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相 关。
三、控制相关
当流水线遇到转移指令和其他改变 PC 值的指令而造成断流时,会引起控制相关。解决办法如下:
1、对转移指令进行分支预测,尽早生成转移目标地址。分支预测分为简单(静态)预测和 动态预测。静态预测总是预测条件不满足,即继续执行分支指令的后续指令。动态预测根据程序 执行的历史情况,进行动态预测调整,有较高的预测准确率。
2、预取转移成功和不成功两个控制流方向上的目标指令。
3、加快和提前形成条件码。
4、提高转移方向的猜准率。