2.1.2 ARM技术特征
ARM架构属RISC(Reduced Instruction Set Computer)体系架构,即精简指令集计算机体系架构。ARM架构是世界上首个商用RISC架构,在此之前,计算机的体系架构为复杂指令集计算机体系架构,即CISC(Complex Instruction Set Computer)架构。故要理解RISC,还得先从CISC说起。
CISC是20世纪70年代晚期在小型计算机基础上发展起来的一种单片计算机体系架构。其主要特点有三个:
(1)指令功能复杂,开发成本高。如Intel 80386耗资达1.5亿美元,开发时间长达3年多;IBM FS高速机耗资数亿美元开发仍未获成功。
(2)指令多、长度不等,大量微码。如IBM370有208种指令、长度16位至48位,微程序420 K;DEC VAX-11/780有303种指令、长度16位至456位、微程序480 K。
(3)不利于VLSI实现。
实际上,人们通过统计发现,计算机系统中20%的简单指令(取数、运算、转移等)占据了CPU动态执行时间的80%~90%,而80%的复杂指令却只占据CPU动态执行时间的20%。也就是说,在计算机系统中简单指令运行的机会多,复杂指令运行的机会少。既然如此,人们就没有必要花那么大的代价来设计复杂指令了,一条复杂指令的功能可通过多条简单指令来实现。这样既可简化设计的复杂度,又可降低硬件实现的成本,这就是RISC产生的原因。
1980年,Patterson、Ditzel的论文《精简指令集计算机》提出了RISC的设计思想:精简指令集的复杂度,简化指令实现的硬件设计,硬件只执行使用频度最高的那部分简单指令,大部分复杂的操作则由简单指令的组合完成。不久,伯克利分校据此设计出了RISC原型机RISCI与RISCII,ARM则是第一个采用RISC结构的商用微处理器。
RISC与CISC的主要区别如下:
(1)RISC指令格式和长度固定,类型少,功能简单,寻址简单方式少;CISC指令长度不等,类型多,功能复杂。
(2)RISC使用硬连线指令译码逻辑,易于流水线实现;CISC采用微码ROM译码。
(3)RISC大多数指令单周期完成;CISC指令多为多周期完成。
(4)RISC除Load/Store指令外,所有指令只对寄存器操作;大多数CISC指令皆可对主存及寄存器操作。
当然,RICS也有其不足之处,主要是RISC代码密度没有CISC高,CISC中的一条指令在RISC中有时要用一段子程序来实现;RISC不能执行x86代码;RISC给优化编译程序带来了困难。
ARM的RISC体系结构采用了若干Berkeley(伯克利)RISC处理器设计中的一些特征,如:
(1)Load/Store体系结构;
(2)固定的32位指令;
(3)3地址指令格式。
但ARM并没有完全照搬Berkeley RISC,做了一些改进,如:
(1)ARM用少量的影子寄存器取代Berkeley RISC的寄存器窗口;
(2)ARM的RISC未采用延迟转移;
(3)ARM不强求所有的指令单周期执行,允许有多周期指令。