20世纪80年代初,美国大学研究者对使用大型控制存储中的微程序的复杂指令集计算机(Complex Instruction Set Computers,CISC)进行过几次调查。Unix的广泛应用也证明了连操作系统都可以使用高级语言编写,所以关键问题就变成了“编译器会生成什么指令”而不是“程序员能使用什么汇编语言”,这极大地改善了软硬件的交互界面,为体系结构创新创造了机会。
图灵奖获得者约翰·科克(John Cocke)和他的同事为小型计算机开发了更简单的指令集架构和编译器。作为一项实验,他们重新确定了研究目标,即编译器只使用IBM 360指令集中的简单寄存器-寄存器操作指令和加载/存储数据指令。他们发现,使用这一指令子集的程序运行速度提高了三倍。埃默(Emer)和克拉克(Clark)发现,20%的VAX指令需要60%的微程序,仅占执行时间的0.2%。戴维·帕特森发现,如果微处理器制造商要遵循大型计算机的CISC指令集设计,就需要一种方法来修复微代码错误。帕特森就此问题写了一篇论文,但被Computer期刊拒稿。审稿人认为构建这样复杂的ISA且支持在线错误修复的微处理是一个糟糕的想法,因为这需要在现场进行修复。这引发了对CISC价值的疑问。具有讽刺意味的是,现代CISC微处理器确实包含微代码修复机制。这篇论文被拒引发的另一个结果是,激励了帕特森着手研究复杂度较低的指令集架构—精简指令集,以及使用精简指令集的计算机(Reduced Instruction Set Computers,RISC)。
编程人员由汇编语言向高级语言的转变,为CISC向RISC的过渡创造了条件。首先,RISC指令经过简化,不再需要微程序解释器。RISC指令通常与微指令一样简单,硬件能够直接执行;其次,以前用于CISC ISA微程序解释器的快速存储器被重新用作RISC指令集的高速缓存;第三,基于格里高里·蔡廷(Gregory Chaitin)的图着色方案的寄存器分配方法,使编译器能够更高效地使用寄存器国;最后摩尔定律意味着在20世纪80年代能够诞生有足够数量晶体管的芯片,可以容纳一个完整的32位宽的指令集和数据高速缓存。
加州大学伯克利分校和斯坦福大学分别在1982年和1983年开发的RSC-I和MIPS微处理器,体现了RISC的优点,并发表于1984年的IEEE固态电路国际会议上。这是一个了不起的时刻,伯克利和斯坦福的一些研究生也可以构建微处理器了,甚至比行业内的产品更为优秀。
这些由学术机构研发的芯片,激励了许多企业开始发力RISC微处理器的研发,并成为此后15年中发展最快的领域。DEC公司的工程师后来表明,更复杂的CISC指令集每个程序执行的指令数大约为RISC的75%,不过在类似的技术下,CISC的每个指令执行时间约为五到六个时钟周期,使RISC微处理器的运算速度达到CISC的大约4倍。
领取专属 10元无门槛券
私享最新 技术干货