指令流水线的概念
- 将指令执行过程分解为多个子过程,各子过程并行执行
- 五级流水:取指 IF → 译码 ID → 取操作数 OF → 执行 EX → 写回 WB
- 四级流水:取指 → 译码 → 执行 → 写回(去掉取操作数)
指令集应具备的特征
- 指令长度一致,简化取指和译码
- 指令格式规整
- 采用 Load/Store 架构
- 数据和指令「对齐」存放
流水线的分类
- 按级别:部件功能级、处理机级、处理机间级
- 按功能:单功能流水线、多功能流水线
- 按工作方式:动态流水线、静态流水线
- 按结构:线性流水线、非线性流水线
影响流水线的因素
资源冲突(结构冒险)
- 多条指令争用同一功能部件
- 解决方案:停顿一个时钟周期、资源重复配置
数据冲突(数据冒险)
- 写后读 RAW:后一条指令需要前一条指令的写结果
- 读后写 WAR
- 写后写 WAW
- 解决方案:数据旁路(转发)、停顿、编译器调度
控制冲突(控制冒险)
- 主要由转移指令引起
- 解决方案:分支预测、延迟槽、提前形成条件码
流水线的性能指标
吞吐率 TP
- TP=Tkn(n 为任务数,Tk 为处理 n 个任务的时间)
- 最大吞吐率:TPmax=Δt1
- 实际吞吐率(m 段流水):TP=mΔt+(n−1)Δtn
加速比 SP
- SP=m+n−1nm(m 为流水线段数,n 为任务数)
效率 E
- 流水线中各功能段的利用率
- E=流水线中各段总的时空区流水线各段处于工作时间的时空区
超标量流水线技术
- 超标量流水线:每个时钟周期同时发射多条指令
- 超流水线技术:将流水线进一步细分,提高时钟频率(不调整指令执行顺序)
- 超长指令字(VLIW):由编译器将多条并行操作打包为一条长指令