迄今为止,ARM公司定义了8种主要的ARM ISA(Instruction Set Architecture,指令集体系结构),指令集有了巨大的改进,功能不断扩大,版本号分别为ARMv1~ARMv6、ARMv7 A&R、ARMv7 M。同时,各版本中还有一些变种,这些变种定义了指令集中不同的功能。对于相同的ARM体系结构,基于它们的应用软件是兼容的。如图1.1所示为ARM体系结构升级路线56FE。
图1.1 ARM体系结构升级路线56FE
ARM微处理器现用的体系结构中至少支持两种指令集:32位ARM指令集和16位Thumb指令集。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,使用Thumb指令集可以得到密度更高的代码。ARM指令集体系结构与扩展如图1.2所示。
图1.2 ARM指令集体系结构与扩展
ARMv4是目前所支持的最老的版本,之前的版本不再使用。某些ARM7系列和Intel的StrongARM处理器采用该版本指令集。ARMv4指令集可以在32位地址空间执行32位ARM指令集,并且有了T变种,可以在Thumb状态下支持16位的Thumb指令集。与32位指令相比可以节省35%的存储空间,依旧保留32位系统的优势。
ARMv5是在1999年发布的,与ARMv4相比,提升了ARM和Thumb两种指令的交互工作能力,改进了在T变量中ARM/Thumb状态之间的切换效率。同时有了E变种,可以支持DSP指令,在音频数字信号处理中可以提高70%的性能。2000年增加了J变种,可以运行Java指令。
ARMv6版本于2001年发布,其主要特点是增加了SIMD功能扩展,同时拓展了Thumb-2和TrustZone技术。SIMD用于视频编解码与三维绘图等数字信号处理,为音频视频在内的应用系统提供了优化功能,可以使音频视频的处理能力提高4倍。Thumb-2是一种新型混合指令集,融合了16位和32位指令,用于实现密度和性能的最佳平衡。TrustZone技术作为ARM体系结构的扩展,是一种新的硬件安全技术。第一款ARMv6处理器是ARM1136J(F)-STM,在2002年春季发布。
ARMv7在相当于ARM11下一代的CPU内核Cortex系列上采用,针对用途不同,定义了三大分工明确的系列。A系列面向尖端的基于虚拟内存的操作系统和用户应用,R系列针对实时系统,M系列对微控制器和低成本应用提供优化。ARMv7的M采用了Thumb-2技术,A系列和R系列还采用了NEON技术,将DSP和媒体处理能力提高了近4倍,并支持改良的浮点运算,满足下一代3D图形和游戏应用及传统的嵌入式控制应用的需求。
ARMv7 A注重提高运算性能,主要面向手机、PDA、便携式游戏机等产品的微控制器。通过强化浮点运算,提高了三维图形游戏所必需的画像处理性能。可以在Windows CE、Symbian OS、Linux等比较大型复杂的OS上运行。与ARMv6相比,其最大的区别就是增强了SIMD型指令,推出的名为NEON技术具有可进行64位数据或128位数据运算的混合型SIMD指令集,可将与VFP协处理器共享的寄存器按64位×32条或128位×16条来处理。此外,VFP的版本也由VFPv2提升到了最新的VFPv3。
ARMv7 R重视实时处理,可以减少数据输入/输出延迟时间,以及提高指令预测精度等,主要面向打印机与网络终端和汽车等领域;同ARMv7 A一样,支持NEON和VFPv3。
ARMv7 M面向廉价微控制器。v7 A与v7 R都是v6的功能强化版,而v7 M则是特意降低制造成本的一种选择;未加入NEON和VFPv3等新功能,省略了SIMD指令集与缓存等,即便是与v6相比功能也显得有些简单了。
ARM处理器体系结构在支持32位ARM指令集合16位Thumb指令集的同时,在不同指令体系结构的基础上做了扩展。
Thumb指令集是将ARM指令集的一个子集重新编码而形成的一个指令集。ARM和Thumb指令码分别运行于各自的处理器状态。Thumb指令集有两个版本,版本1运行于ARMv4的T变种,版本2运行于ARMv5以后的T变种。
Thumb指令集版本2通过增加或对已有指令的修改,提高ARM指令和Thumb指令混合使用时的效率,可以利用Thumb代码的密度获得ARM指令水平的性能。
增强型DSP指令通常称为E变种,首先在ARM体系ARMv5TE中使用,包含一些附加的指令,这些指令用于增强处理器对一些典型的DSP算法的处理性能。
采用Jazelle技术的J变种首先在ARMv5TEJ中使用。Jazelle是一种体系结构扩展技术,为ARM处理器引入了第三套指令集——Java虚拟机器码。Jazelle技术提供了Java加速功能,可以得到比普通Java虚拟机高得多的性能,将Java的优势和先进的32位RISC芯片完美地结合在一起。
采用Jazelle技术与基于软件的Java虚拟机相比,可以提高8倍的性能。Jazelle技术能在移动电话和消费电子产品等众多应用终端上显著地降低Java应用程序对内存的占用空间,同时提高性能并降低功耗。
ARM的Jazelle扩展集在移动设备上实现了非常高速的性能表现,快速的响应和顺畅的软件运行,给用户带来了全新的使用体验。
SIMD(Single Instruction Multiple Data,单指令多数据)技术提供了高性能的音频/视频处理技术。ARMv7推出的NEON是一种64/128位单指令多数据流(SIMD)指令集,可以在低于10 CPU MHz的速度下执行MP3音频解码功能、在13 CPU MHz下运行GSM多速率语音编解码功能;支持8、16、32和64位整数和单精度浮点SIMD运行,适合手持音频/视频处理,以及图形和游戏处理。作为ARM的OptimoDE数据引擎的补充技术,NEON将运用到ARM未来的处理器中。
TrustZone技术是在嵌入式领域实现安全计算的软硬件集成保密系统,通过对硬件和软件部分的合理组合,ARM的TrustZone技术提供了一种具有高度安全性的系统架构,而对于内核的功耗,性能和面积的影响微乎其微。TrustZone是一个安全的执行环境,使半导体厂商和OEM开发者可以在各自的软/硬件IP上开发和应用有关的保密措施。TrustZone的软件是一系列部件的成功组合,包括软件安全专家系统、可信任的逻辑电路、安全的代码执行环境和基本的安全服务,如密码系统、保险箱,保护器件和平台安全的完整性检验。通过器件级的安全性,TrustZone提供了一个平台,用以解决应用和用户级的安全问题。
TrustZon硬件提供代码隔离的保密环境,保密软件提供基本的安全服务和其他安全环节上各部件(如智能卡、操作系统和普通的应用程序)间的接口。TrustZone隔离了两个平行的执行环境:普通的非保密执行环境,安全的需认证的保密环境。