跳转至

流水线的通用原理

  • 流水线化的一个特性:提高了系统的吞吐量

计算流水线

  • 在现代逻辑设计中,电路延迟以微微秒或皮秒(\(10^{-12}\)秒)为单位来计算
  • 吞吐量的计算公式:(\(吞吐量=\frac{1000ps}{执行一条指令的延迟}\cdot\frac{1}{1ns}\)\)
    • 单位:每秒千兆条指令(GIPS
  • 对比顺序执行和流水线执行:
    • 顺序执行:
      • 吞吐量=\(\frac{1000 }{300 + 20} \approx 3.12GIPS\)
    • 流水线:
      • 吞吐量=\(\frac{1000}{100 + 20} \approx 8.33GIPS\)
      • 代价:增加了一些硬件,以及延迟的少量增加

流水线操作的详细说明

- 减缓时钟不会影响流水线的行为 - 信号传播到流水线寄存器的输入,但是直到时钟上升时才会改变寄存器的值 - 如果时钟运行的太快,则会发生灾难性的后果: - 值可能会来不及通过组合逻辑,因此当时钟上升时,寄存器的输入还不是合法的值

流水线的局限性

不一致的划分

  • 运行时钟的速率是由最慢的阶段的延迟限制的
    • 这样的设计会使其他阶段出现空闲

流水线过深,收益反而下降

  • 即使提高了吞吐量,但是由于延迟的增大,单位时间内能执行完成的指令数量并没有得到增加
  • 寄存器更新引起的延迟问题
  • 并且,吞吐量存在上限

带反馈的流水线系统

  • 相邻的指令之间存在数据相关:
  • 指令控制流造成的顺序相关:

这两种情况构成了后续的加载/使用数据冒险控制冒险