多种主流指令集之间对比
译自《computer architecture, a quantitative approach》附录K《survey of instruction set architectures》。
全书以MIPS基本指令集为基准,对比介绍了主流的十三种指令集。虽然成书年代比较早,但是作为教程,帮助构建基本的指令集认识,还是有一定参考价值。
下面开始是正文:
本书包含了13种指令集,一些已经完成了他们的使命,还有一些依旧是IT产业的重要部分。我们将他们放一起来讨论指令集的历史变迁。
首先我们要介绍10种精简指令集。ARM(包括Thumb),MIPS(包括MIPS16),Power和SPARC,加起来是每年以十亿记的市场,其中,ARM占嵌入式的大头。Alpha和HP PA-RISC的市场则基本被Itanium挤占光了,要步入历史了。
X86现在显然还是一种有优势的指令集,控制了绝大数的桌面和低端服务器市场。这本书上对它的介绍也会比其他的指令集多得多。现在它也有了64位的扩展,这个指令集的生命力不容小觑。
VAX指令集的强调代码密度,而且希望能够提供与编程语言近似的机器语言。架构师为此设计的大量微指令,然而都不容易在单芯片和流水线上实现它们。成功的案例只有一个短命的Alpha。
饱受争议的IBM 360/370显然是个经典作品,也是许多其他指令集的参照对象。比如,1960年代就做出了下面的这些标准:
- 8位一个byte
- 以byte寻址
- 32位一个word
- 32位单精度浮点,64位双精度浮点
- 32位的通用寄存器,64位的独立浮点寄存器
- 在同一系列的计算机中保持二进制兼容
- 体系结构设计与实现分离
第二章中会提到,IBM 370指令集支持虚拟化,所以也是指令集中最适合虚拟机扩展的,现在IBM 360/370都还有64位扩展的大型机版本。