机器周期的设置
为了方便流水线设计,每个阶段耗时都设置成一样的,以最长耗时为准
影响流水线的因素
结构相关(资源冲突)
多条指令在同一个时间争夺使用同一个资源而形成的冲突称为结构相关
例子在书本第257页第一张图
这种冲突的解决方案是:1.让后一个相关的指令暂停一周期
2.资源重复配置:数据存储器+指令存储器 (Data cache 和 Instruction cache)
分别放在这两个存储体中,就可以防止冲突
【与操作系统的互斥是一个路子】
数据相关(数据冲突)
指令相关指在一个程序中,存在必须等前一条指令执行完,才能执行后一条指令的情况,则这两条指令即为数据相关
例子在257页的最下方的图
解决方法:
1.把遇到数据相关的指令以及后续指令都暂停1至n个时钟周期,知道数据相关问题消失后再继续执行,课分为硬件阻塞stall和软件插入NOP两种方法
2.数据旁路技术
3.编译优化:通过编译器调整指令顺序来解决数据相关【比起等待,先做后面的事情更加效率】
控制相关(控制冲突)
当流水线遇到转移指令和其它改变pc值当指令而造成断流时,会引起控制相关
Pg259
解决方法:
1.转移指令分支预测
简单预测(永远猜true 或者false)动态预测(根据历史情况动态调整)
2.预取转移成功和不成功两个控制流方向上的目标指令
3.加快和提前形成条件码
4.优化第一种方法,提高猜准率
流水线多发技术
1.超标量技术
每个时钟周期可以并发多条独立指令
要配置多个功能部件
不能调整指令的执行顺序
通过编译优化技术,把可以并行执行的指令搭配起来
2.超流水技术
把一个时钟周期再分三段
再一个时钟周期内 一个功能部件可能被使用多次
3.超长指令字
由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字(可达到几百位)
采用多个处理部件