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