3.4.2 CISC 和 RISC
处理器有一种按照其指令集进行分类的方式。当设计一个处理器时有两个极端。
- 设计出各种特化指令,高级指令。这种架构叫作 CISC (Complete Instruction Set Computer) 架构。
- 只使用一些基本指令,完成的架构叫 RISC (Reduced Instruction Set Computer) 架构。
CISC 指令一般运行比较慢而且会做更多的事情;有时候实现比较复杂的指令也可以比需要组合一大堆 RISC 指令来说更方便(这本书在之后 16 章介绍 SSE (Streaming SIMD Extensions)的时候会有一个例子)。然而,大多数高级语言的程序是依赖编译器的,如果想要实现一个 RISC 指令集的编译器非常得困难。
RISC 简化了编译器的工作,而且对于低级,微代码级别的优化非常友好,比如 pipeline。
■Question 46 查阅微代码和处理器流水线的相关资料
Intel 64 的指令集实际上是一个 CISC 指令集。包含有成千上万的指令---只要你看一眼第二卷[15]就知道了!然而这些指令都会被解码并翻译为一些更简单的微代码指令。这时候各种优化手段就可以起作用了,微代码指令会被重新排序,有一些甚至可以同时执行。这些并不是处理器自带的特性,更合适的说法是一种为了更好的性能而做的“适配”,这种适配对于老的软件也具有很好的兼容性。
不过不幸的是现代处理器的微代码的细节资料相当匮乏。只能通过阅读一些科技资讯例如 [17] 或者 Intel 的优化手册来获得基本的直觉了。