跳转到主要内容

A.11 结束语

最早的体系结构受当时硬件技术限制,指令集能力有限。硬件技术一旦允许,计算机体系结构设计者便开始寻找支持高级语言的方法。围绕如何高效支持程序,这一探索经历了三个不同的思想阶段。

20 世纪 60 年代,栈式体系结构流行起来。它被认为很适合高级语言;考虑到当时的编译技术,这一判断很可能是正确的。70 年代,设计者主要关心如何降低软件成本,办法主要是用硬件替代软件,或提供能简化软件设计工作的高级体系结构。这催生了高级语言计算机体系结构运动,也催生了 VAX 这样的强大体系结构:寻址方式众多、数据类型丰富,而且高度正交。到了 80 年代,编译技术更加成熟,处理器性能重新受到重视,设计又回到较简单的体系结构,主要是加载—存储型计算机。

20 世纪 90 年代,指令集体系结构出现以下变化:

  • 地址宽度加倍。 大多数桌面和服务器处理器的指令集,从 32 位地址扩展到 64 位地址;寄存器宽度等也扩大为 64 位。附录 K 给出三个从 32 位走向 64 位的实例。
  • 通过条件执行优化条件分支。 第 3 章将说明,条件分支会限制高性能计算机设计。因此,人们希望用有条件地完成操作来替代条件分支,例如多数指令集都增加了条件传送(见附录 H)。
  • 通过预取优化缓存性能。 第 2 章说明,存储层次结构对性能日益重要:某些计算机一次缓存未命中消耗的指令时间,甚至相当于早期计算机一次缺页。为此,新增预取指令,试图通过提前取数隐藏未命中代价(见第 2 章)。
  • 支持多媒体。 大多数桌面和嵌入式指令集都扩展了多媒体应用支持。
  • **加快浮点运算。** 附录 J 介绍为提高浮点性能而新增的操作,例如将乘法和加法合并,以及成对单精度执行;原文称这些都是 RISC-V 的一部分。

1970–1985 年间,许多人认为计算机体系结构设计者的主要工作就是设计指令集。因此,那一时期的教科书强调指令集设计,正如 50、60 年代的体系结构教科书强调计算机算术一样。人们期望受过良好训练的设计者,对流行计算机的优点,尤其是缺点,持有鲜明见解。许多研究者与教材作者没有充分认识二进制兼容性对指令集创新的压制作用,给人一种许多体系结构设计者都有机会设计指令集的印象。

如今,计算机体系结构的定义已经扩展为整个计算机系统的设计与评价,既不只是定义指令集,也不只是设计处理器,因此有大量值得研究的课题。事实上,本附录内容曾是 1990 年本书第一版的核心,如今却主要作为参考资料放在附录中!

对指令集体系结构感兴趣的读者可以阅读附录 K。它介绍目前具有市场影响或具有历史意义的多种指令集,并将九种流行的加载—存储计算机与 RISC-V 比较。