在 20 世纪 70 年代,Intel 的 CISC 处理器占据了市场。这是因为硬件存储速度极慢,广泛使用的慢速磁带存储设备以及大容量内存的缺乏,让计算机对每一字节空间的应用都很珍惜。因此,人们倾向于在一条指令中完成更多的工作,所以 CISC 大受欢迎。
但是 IBM 研究院的 John Cocke(后来因为 RISC 获得了图灵奖)意识到了 ISA 指令的二八定律,即 20% 的指令承担了 80% 的工作,而 80% 的指令只承担了 20% 的工作,大量的根本在程序中不会用到,为了实现这些指令,浪费了大量的硬件资源,同时,也增加了编译器的开发难度。
如果去掉 CISC 中的大量复杂指令,改成简单的指令组合,那么虽然在直观上效率上会降低(原本的一条复杂指令要拆成多条简单指令),但是对于硬件和编译器的开发和优化都会有明显的促进作用。随即,UC Berkeley 的 Patterson、Standford大学的 Hennessy 等几位科学家开始尝试设计精简指令集。
1981 年,Hennessy 带领团队研发出第一个 MIPS 架构处理器,这个至今被视为教科书一般的顶级指令集架构自此现世。1983年,“RISC 派”的另一位代表人物 Patterson 和他学生们的成果登陆当年的国际固态电子电路大会(ISSCC),区区几十条指令竟胜过指令数目多达数百条的商业级芯片(应该就是 Intel 的 80286)。RISC 向世人证明了自己。
1983 年英国 Acorn 公司开启了基于加州大学伯克利分校 RISC 项目的新处理器架构研发项目 Acorn RISC Machine (ARM),这就是如今统治嵌入式市场的 ARM 架构的肇始。次年,Hennessy 离开斯坦福大学,创立 MIPS 科技公司。1987 年,最成功的早期商业 RISC 系统之一 Sun 公司的 SPARC 正式发布。1992 年,DEC 公司专为高端台式机、工作站和服务器设计的微处理器架构 Alpha 问世…… RISC 的凌厉攻势,甚至让“CISC派”代表 Intel 不惜投入数十亿美元开发安腾。可惜安腾处理器最终成为英特尔的败笔。
在 90 年代,Intel 实现了微指令 microop 解码操作,这种解码器可以将一条复杂的 CISC 指令在解码阶段翻译成多条简单的指令。P6 微架构是 Intel 第一个实现乱序执行和原生 x86-micro-op 解码器的微架构。P6 是作为奔腾 Pro 出货的,它演变成了奔腾 II、奔腾 3,以及更多。它是现代 X86 CPU 的祖先。可以看到,此时的 CISC 已经借鉴了 RISC 的很多设计思想了。
而 RISC 这边呢?可以看看 ARM 的指令集,它其实已经很背离最初的 RISC 设计了,具有很多比较复杂的指令,更像是 CISC 的设计。
总的来说,CISC 和 RISC 并不是单纯的商业之争或者理念之争,二者反映的是一组硬件设计的客观矛盾,并不存在完全正确的一方。