跳到主要内容

指令流水线

指令流水线的概念​

  • 将指令执行过程分解为多个子过程,各子过程并行执行
  • 五级流水:取指 IF → 译码 ID → 取操作数 OF → 执行 EX → 写回 WB
  • 四级流水:取指 → 译码 → 执行 → 写回(去掉取操作数)

指令集应具备的特征​

  • 指令长度一致,简化取指和译码
  • 指令格式规整
  • 采用 Load/Store 架构
  • 数据和指令「对齐」存放

流水线的分类​

  • 按级别:部件功能级、处理机级、处理机间级
  • 按功能:单功能流水线、多功能流水线
  • 按工作方式:动态流水线、静态流水线
  • 按结构:线性流水线、非线性流水线

影响流水线的因素​

资源冲突(结构冒险)​

  • 多条指令争用同一功能部件
  • 解决方案:停顿一个时钟周期、资源重复配置

数据冲突(数据冒险)​

  • 写后读 RAW:后一条指令需要前一条指令的写结果
  • 读后写 WAR
  • 写后写 WAW
  • 解决方案:数据旁路(转发)、停顿、编译器调度

控制冲突(控制冒险)​

  • 主要由转移指令引起
  • 解决方案:分支预测、延迟槽、提前形成条件码

流水线的性能指标​

吞吐率 TP​

  • TP=nTkTP = \frac{n}{T_k}(n 为任务数,Tk 为处理 n 个任务的时间)
  • 最大吞吐率:TPmax=1ΔtTP_{max} = \frac{1}{\Delta t}
  • 实际吞吐率(m 段流水):TP=nmΔt+(n−1)ΔtTP = \frac{n}{m\Delta t + (n-1)\Delta t}

加速比 SP​

  • SP=nmm+n−1SP = \frac{nm}{m+n-1}(m 为流水线段数,n 为任务数)

效率 E​

  • 流水线中各功能段的利用率
  • E=流水线各段处于工作时间的时空区流水线中各段总的时空区E = \frac{流水线各段处于工作时间的时空区}{流水线中各段总的时空区}

超标量流水线技术​

  • 超标量流水线:每个时钟周期同时发射多条指令
  • 超流水线技术:将流水线进一步细分,提高时钟频率(不调整指令执行顺序)
  • 超长指令字(VLIW):由编译器将多条并行操作打包为一条长指令