2.2 ARM体系结构版本概述
2.2.1 ARM体系结构版本
ARM体系结构版本迄今为止共出现7个,分别命名为v1~v7。此外还有基于这些体系结构版本的变种版本。目前主要在用的ARM处理器的体系结构版本是v4、v5、v6和v7。每一个版本都继承了前一个版本的基本设计,指令集向下兼容。
目前实际使用的ARM处理器核有20 多种,每一种处理器核依据一个体系结构版本设计,这些ARM核的共同特点是:字长32位、RISC结构、低功耗、附加16位高密度Thumb指令集,获得广泛的嵌入式操作系统支持,包括Windows CE、Palm OS、Symbian OS、Linux以及其他的主流RTOS,含有嵌入式跟踪宏单元ETM(Embedded Trace Macro)。
下面对ARM已发布的体系结构版本做一简单介绍。
(1)ARMv1
ARMv1具有26位寻址空间,包括下列指令:
① 基本数据处理指令(不包括乘法指令);
② 基于字节、字和多字的存储器访问操作指令(Load/Store);
③ 包括子程序调用指令BL在内的跳转指令;
④ 实现系统调用的软件中断指令SWI。
ARMv1只在原型机ARM1中出现过,现已不用。
(2)ARMv2
ARMv2对ARMv1进行了扩展,但寻址空间仍只26位,增加了下列指令:
① 乘法和乘加指令;
② 支持协处理器操作的指令;
③ 对于FIQ模式,提供了额外的影子寄存器;
④ 存储器与寄存器交换指令SWP及SWPB。
ARMv2只在ARM2与ARM3使用,现已不用。
(3)ARMv3
ARMv3地址(寻址)空间扩展到了32位,除了ARMv3G外,其他ARMv3版本向前兼容,支持26位地址空间。ARMv3具有如下特点:
① 增加了当前程序状态寄存器CPSR(Current Program Status Register)和程序状态保存寄存器SPSR(Saved Program Status Register),SPSR用于在程序异常中断时保存CPSR的内容;
② 增加了中止(Abort)和未定义(Undifined)两种异常模式;
③ 增加了MRS和MSR指令用于完成对CPSR和SPSR寄存器的读/写;
④ 修改了原来的从异常中断返回的指令。
ARMv3在ARM6、ARM600、ARM610、ARM7、ARM700、ARM710中使用过,现已过时不用。
(4)ARMv4
ARMv4在ARMv3基础上增加了下列指令:
① 有符号、无符号的半字和有符号字节的Load和Store指令;
② T变种,即16位的Thumb指令集;
③ 增加了一种处理器特权模式,在该模式下,可以使用用户模式下的寄存器。
ARMv4在ARM7TDMI、ARM710T、ARM720T、ARM740T、StrongARM、ARM8、ARM810中使用。
(5)ARMv5
ARMv5主要由两个变型版本5T与5TE组成。与ARMv4相比,ARMv5的指令集有了如下的变化:
① 提高了T变种中ARM/Thumb混合使用的效率;
② 增加前导零记数(CLZ)指令,该指令可使整数除法和中断优先级排队操作更为有效;
③ 增加了BKPT(软件断点)指令;
④ 为协处理器设计提供了更多的可供选择的指令;
⑤ 对乘法指令如何设置标志进行了严格的定义。
ARMv5在ARM9E-S、ARM10TDMI、ARM1020E中使用。
(6)ARMv6
ARMv6是2001年发布的版本,在降低耗电量的同时还强化了图形处理性能。通过追加有效进行多媒体处理的SIMD功能,将语音及图像的处理功能提高到了原机型的4倍。ARMv6首先在2002年春季发布的ARM11处理器中使用。除此之外,ARMv6还支持多微处理器内核。
ARMv6主要在ARM11、ARM1156T-S、ARM115T2F-S、ARM1176JZ-S与ARM11JZF-S核中使用。
(7)ARMv7
ARMv7是2005年3月发布的,相比以前版本,增加了以下特征:
① 扩展了Thumb指令集,更名为Thumb-2。Thumb-2指令集具有130条指令,指令长度不完全是16位,有部分为32位;
② NEON媒体引擎,该引擎具有分离的单指令多数据(SIMD)执行流水线和寄存器堆,可共享访问L1和L2高速缓存,因此提供了灵活的媒体加速功能并简化了系统带宽设计;
③ TrustZone技术,可以对电子支付和数字版权管理之类的应用业务提供可靠的安全措施。
ARMv7主要在ARM Cortex-A、ARM Cortex-M与ARM Cortex-R系列核上使用。
ARM体系结构版本及其对应的ARM核总结如表2.1所示。
表2.1 ARM核与版本号