15 Fallacies and Pitfalls

Fallacy: Pipelining is easy.

谬论:流水线很容易。

本书证明了正确执行流水线是很微妙的。对应的 Advance Book 在第一版中有一个流水线错误,尽管它被 100 多人审阅并在 18 所大学进行了课堂测试。直到有人尝试构建该书中的计算机时,这个错误才被发现。事实上,用于描述 Intel Core i7 流水线的 Verilog 代码将达到数十万行,这足以说明其复杂性。

Fallacy: Pipelining ideas can be implemented independent of technology.

谬论:流水线的实现可以独立于技术。

当芯片上晶体管的数量和晶体管的速度使五级流水线成为最佳解决方案时,延迟分支跳转是一种控制冒险的简单解决方案。随着更长的流水线、超标量和动态分支预测的出现,这种技术就多余了。在 1990 年代,动态流水线调度需要太多的资源,对于高性能而言,并不是必须的。不过随着晶体管预算下降、逻辑运算速度超过内存速度,多个功能单元和动态流水线就变得越来越重要了。现在,对功耗的考量使得设计更不激进、更高效。

Pitfall: Failure to consider instruction set design can adversely impact pipelining.

陷阱:不考虑指令集会对流水线设计有不利的影响。

设计流水线的很多挑战都是由于复杂指令集造成的。

  • 指令长度和运行时长变化很大,会使得流水线各个阶段不平衡和更复杂的冒险检测。这个问题是在上世纪 80 年代由 DEC VAX 8500 给出来方案,微操作和微流水线,至今还在 Intel I7 上有所应用。当然,翻译和维护指令与微操作的映射开销还是存在的。
  • 复杂的寻址模式可能导致各种问题。更新寄存器的寻址模式使冒险检测变得更复杂。需要多次内存访问的其他寻址模式大大复杂化了流水线控制,并且很难保持指令在流水线中平稳流动。
  • DEC Alpha 和 DEC NVAX 是一个很好的例子。使用的是同类技术,Alpha 使用更新的指令集,使得其实现比 NVAX 快两倍以上。研究院分析了 MIPS M/2000 和 DEC VAX 8700 在 SPEC 基准测试的表现。MIPS M/2000 执行了更多的指令,但是 DEC VAX 8700 时钟周期长 2.7 倍,因此 MIPS M/2000 更快。