1 Y2 U% V$ W% ]$ ^8 g( t
CISC和RISC之争又是一个大话题。简单地说,他们哪个更优反映了不同时期技术进步的方向和速度。最早的CPU很原始,根本就没有几条指令,也就无所谓CISC与RISC。后来技术进步了,可以更大规模地集成电路,速度也快了很多。这时候人们发现把一些复杂的工作打包交给CPU去做,效率会提高很多。比如说(这里只是打一个容易被一般人理解的比喻,并非CISC和RISC真正的区别点),假设CPU只有累加器(最早的CPU也确实如此),那么当人需要做4×3的时候只能写成4+4+4。现在可以给这个原始的CPU增加一条乘法指令,只告诉它乘数和被乘数,至于CPU内部怎么把数最后算出来,那是CPU内部的事情。因为CPU内部的速度远远快于外围电路,这种增加CPU指令的做法可以极大地提高整个系统的性能。& w- @4 M! x; D n8 I: v/ E% X
; Z9 {# m) M% W, H5 A. t/ a
那么RISC呢?电路的速度不能无限地提高。曾几何时,为了求快超级计算机甚至用上了ECL(发射极耦合逻辑)电路,再大幅度的提速几无空间。于是人们的眼光转向了挖潜,把CPU需要完成的复杂工作分解成一项项简单的任务,模仿制造业流水线那样分步完成。比如说某某汽车厂号称一分钟生产一辆汽车,并不是真的装配这一辆汽车只需要一分钟,而是成千上万辆汽车在流水线上滚动起来,平均就可以每分钟有一辆汽车出厂。当这种流水线模式大规模应用起来,人们发现如果每次交给CPU的工作更加简单而且整齐划一,更有利于流水线的优化,从而获得更高的速度。这就是RISC的动机,它化繁为简,砍掉CISC中很多不常用的指令,并对剩余的指令格式上规整化。有人可能会问当初那些复杂的工作怎么办?在RISC构架下,许多过去由一条复杂指令完成的工作被软件(比如说高级语言的编译器)分解和优化,转换成多条简单指令。/ V, Y, D' S% M# n0 v