随着硬件成本的下降,人们倾向于向中央处理器加入越来越多、越来越复杂的指令;同时,为了兼容老产品,原来的指令也要保留。这样,整个指令系统就向着越来越大、越来越复杂的趋势发展。在计算机处理能力越来越强的同时,中央处理器的设计也越来越复杂,这无疑大大增加了设计周期,更增加了设计失误的可能性。
事物的另外一个方面在于,指令的复杂性和中央处理器功能的增加,似乎不一定是成正比的。人们发现在许多方面存在一个称为20%~80%的定律,即系统中20%的部分发挥了80%的作用。通过对CISC指令系统的研究,发现系统在80%的时间里执行的是20%的指令。
在这种情况下,便出现了精简指令设计思想。这种计算机的指令结构不追求全面和复杂,而是只实现那些经常被执行的指令--由于指令比复杂指令结构的计算机少得多,所以称为精简指令计算机。
先看著名的公式P=I×CPI×T.
式中:
P:计算机执行程序所需要的时间。
I:机器指令数。
CPI:平均每条指令所需要的机器周期数。
T:每个机器周期的时间。
CISC(Complex Instruction Set Computer,复杂指令集计算机)在指令数上占优,而RISC(Reduced Instruction Set Computer,精简指令集计算机)在CPI上则快得多。这是两种结构的两个方向。从这个公式可以发现,在理论上两者都有优势,即不能认为精简指令计算机就好,复杂指令计算机就不好。事实上这两种设计方法很难找到截然不同的界限,而且在实际的芯片中,这两种设计方法也有相互渗透的地方。
CISC和RISC的对比如表1-2所示。
表1-2 CISC和RISC的简单对比