|
首先介绍了指令集的设计思想。因为要引出ARM为什么会采用改进过的RISC指令集设计思想,所以这部分主要分析了RISC和CISC之间的区别。因为笔者对RISC和CISC也知之甚少,所以查阅了一些资料,在这里列了出来,欢迎各位看官纠正。
大家都知道,CISC出现的比RISC要早,但是CISC这个概念的出现,却晚于RISC。这个原因说起来比较简单,因为早期的时候只有一种设计原理,并没有精简和复杂之分。既然没有区分,所以也不会有CISC和RISC的概念了。既然要谈这两个概念,我们就从最早期谈起。
早期的时候,指令集的设计主要要遵循下面几个约束:
1。编译器技术没有出现或者不成熟。由于程序都是用机器语言和汇编语言编写,为了方便编写程序,所以在硬件端设计复杂的指令来满足要求。
2。当时存储器容量很小,所以为了存储尽可能多的指令,采用了长度不等的,功能高度集成的指令。
3。处理器的Register极少,这样为了少读取外部的存储器,所以只能采用更复杂的指令。
这上面几点的结果,也就是CISC产生的条件,所以早期的设计都是采用CISC的设计思想。时间慢慢的推移,大家忽然发现CISC需要设计的指令集越来越多,但是真正经常使用到的呢,也就占20%左右。加之编译器技术的发展和存储器技术的改进,以前的制约因素不存在了。于是RISC设计应运而生。要说这个概念的形成,时间地点应该是1979年的美国加州大学伯克利分校。RISC概念早期主要设计原理是选取使用频率最高的简单指令,避免复杂指令;指令长度固定,且寻址方式减少;少用微代码控制。但是直到现在,RISC仍然没有一个明确的定义。一般都认为RISC应该具有以下特点(书中已有类似的描述,这里赘述下):
1。指令集采用固定格式。
2。采用单周期指令,便于流水线技术。
3。大量使用寄存器,处理器只对寄存器操作,采用Load Store技术访问存储器。
但是随着时代的发展,RISC和CISC之间的界限越来越模糊。越来越多的CISC处理器采用了RISC的设计思想,而很多RISC处理器也不完全局限于RISC的条条框框。其设计思想的共性越来越多,性能的差距也越来越小,所以我想,未来的设计方向应该是这二者的融合。
|
|