本文同时参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
上篇文章介绍了指令流水线,这篇文章继续深入了解指令流水线的性能,带读者认识下不同的指令流水线
流水线的分类
-
部件功能级、处理机级和处理机间级流水线
- 部件功能级:将复杂的算术逻辑运算分为多个过程
- 处理机级:一条指令分为多个过程
- 处理机间级流水线:宏流水,每个处理机完成专门的任务,结果存放在下一个处理机中
-
单功能流水线和多功能流水线
-
动态流水线和静态流水线
- 一段时间内的连接方式的不同
-
线性流水线和非线性流水线
- 按流水线的各个功能段之间是否有反馈信号
- 线性流水线中不存在反馈回路
影响流水段的因素
-
结构相关(资源冲突):由于多条指令在同一时刻争用同一资源
- 后一相关指令暂停一周期
- 资源重复配置:数据指令分开存储
-
数据相关(数据冲突):前一条指令的结果是后一条指令的输入
-
数据相关的指令都暂停几个周期,可分为硬件阻塞(stall)和软件插入"NOP"(空指令)两种方法
-
数据旁路技术
-
编译优化调整指令顺序
-
冲突基本类型,RAW、WAR、WAW
- WAR主要是因为乱序发射
- WAW主要是因为第一个指令操作复杂,导致第二个指令先完成
- ”按序发射,按序完成“只可能出现RAW相关
-
-
控制相关(控制冲突):当流水线遇到转移指令或其他改变PC值得指令而造成断流时,会引起控制相关
-
👇尽早判别转移是否发生,尽早生成转移目标地址
-
预取转移成功和不成功两个控制流方向上的目标指令
-
☝️加快和提前形成条形码
-
提高转移方向的猜准率
-
流水线性能指标
- 吞吐率TP:单位时间内流水线所完成的任务数量
- 加速比S:不使用流水线所用时间比使用流水线所用时间
- 效率E:平行四边形/矩形
锁存器,由于理想化(方便计算),机器周期为各阶段周期最大值,但实际并不是这样,因此需要锁存器保存当前阶段(流水段)的结果,并供给下一流水段使用
流水线的多发技术
-
超标量技术:每个时钟周期可并发多条独立指令
-
需要配置多个功能部件
-
不能调整指令的执行顺序
- 需要编译优化将可并行指令搭配起来
-
-
超流水线技术:一个时钟周期内再分段
-
一个时钟周期内一个功能部件被使用多次
-
不能调整指令的执行顺序
- 需要编译优化将可并行指令搭配起来
-
-
超长指令字
- 需要编译优化挖掘指令间潜在的并行性
- 将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字
- 需要多个功能部件