ARM这个词既代表了一个公司,也代表了微处理器,还代表了一项技术。1991 年,ARM公司成立于英国剑桥,主要出售芯片技术的授权(目前已经授权给多家公司)。利用这种授权关系,ARM公司很快成为许多全球性RISC标准的缔造者。
1.ARM体系结构的版本历史
ARM体系结构是构建每个ARM处理器的基础。ARM体系结构支持跨越多个性能点的实现,并已在许多细分市场中成为主导的体系结构。ARM体系结构支持非常广泛的性能,因而可以利用最新的微体系结构技术获得极小的ARM处理器实现和极有效的高级设计实现。ARM体系结构能够解决实现规模小、性能差和功耗低的问题。
ARM体系结构通常描述为精简指令集计算机(RISC)体系结构,它包含以下典型的RISC体系结构特征。
(1)大的、统一的寄存器文件。
(2)简单的寻址模式。
(3)统一和固定长度的指令域,3 地址指令格式,简化了指令的译码。采用 3 地址指令格式、较多寄存器和对称的指令格式便于生成优化代码。
(4)单周期操作。ARM指令系统中的指令只需要执行简单的和基本的操作,因此其执行过程在一个机器周期内完成。
(5)固定的 32 位长度指令。指令长度固定为 32 位,使得指令译码结构简单,效率提高。
(6)采用指令流水线技术。
ARM处理器对基本 RISC 体系结构进行功能扩展,实现了高性能、较小代码大小、较低功耗和较小硅面积的良好平衡。
ARM体系结构自诞生至今,已经发生了很大的演变,至今已定义了 8 种不同的版本,用版本号V1~V8 表示。
(1)V1 版架构只在原型机ARM1 中出现过,其基本指令包括基本的数据处理指令(无乘法),字节、半字和字的Load/Store指令,转移指令,子程序调用及链接指令,软件中断指令,其寻址空间为 64MB。
(2)V2 版架构对V1 版架构进行了扩展,如ARM2 与ARM3(V2a版)架构,增加的指令包括乘法和乘加指令、支持协处理器操作指令、快速中断模式指令、SWP/SWPB的最基本的存储器与寄存器交换指令,其寻址空间为 64MB。
(3)V3 版架构对ARM体系结构做了较大的改动,把寻址空间增至 32 位(4GB),增加了当前程序状态寄存器CPSR和程序状态保存寄存器SPSR,以便于进行异常处理;增加了中止和未定义 2 种处理器模式。ARM6 就采用了该版架构。该版架构的指令集的变化包括增加了MRS/MSR指令(以访问新增的CPSR/SPSR寄存器)及从异常处理返回的指令。
(4)V4 版架构是目前最广泛应用的ARM体系结构,它对V3 版架构进行了进一步扩充,有的还引进了 16 位的Thumb指令集,使得ARM的使用变得更加灵活。ARM7、ARM9 和StrongARM都采用了该版结构。其指令集中增加的功能包括:增加了符号化和非符号化半字及符号化字节的存/取指令,增加了 16 位Thumb指令集,完善了软件中断SWI指令的功能,处理器系统模式引进特权方式时使用用户寄存器操作,把一些未使用的指令空间捕捉为未定义指令。
(5)V5 版架构在V4 版架构基础上增加了一些新的指令。ARM10 和XScale都采用该版架构。这些新增指令有带有链接和交换的转移BLX指令、计数前导零计数CLZ指令、BRK中断指令、信号处理指令(V5TE版)、协处理器的更多可选择的指令。
(6)V6 版架构是 2001 年发布的。其基本特点包括 100%与以前的体系兼容;SIMD媒体扩展,使媒体处理速度快了 1.75 倍;改进了内存管理,使系统性能提高 30%;改进了混合端(Endian)与不对齐数据支持,使得小端系统支持大端数据(如TCP/IP)。例如,许多RTOS是小端的,为实时系统缩短了中断响应时间,将最坏情况下的 35 周期减小为11 个周期。
(7)V7 版架构是 2005 年发布的。它使用了能够带来更高性能、功耗效率和代码密度的Thumb-2 技术。它首次采用了强大的信号处理扩展集,对H.264 和MP3 等媒体编解码提供了加速功能。Cortex-M3 处理器采用的就是V7 版架构。
(8)V8 版架构开始支持 64 位体系结构,它包括以下部分。
① 64 位通用寄存器、SP(堆栈指针)和PC(程序计数器)。
② 64 位数据处理和扩展的虚拟寻址。
③ 两种主要执行状态。
a.AArch64-64 位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持。
b.AArch32-32 位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持。
④ 支持三个主要指令集。
a.A32(或ARM):32 位固定长度指令集,通过不同体系结构变体增强。部分 32 位体系结构执行环境现在称为AArch32。
b.T32(Thumb):以 16 位固定长度指令集的形式引入,随后在引入Thumb-2 技术时增强为 16 位和 32 位混合长度指令集。
c.A64:提供与ARM和Thumb指令集有类似功能的 32 位固定长度指令集。它随ARMv8-A一起引入,是一种AArch64 指令集。
2.处理器内核的历史
ARM公司开发了多种处理器内核,目前广泛使用的有ARM7 系列、ARM9 系列、ARM9E系列、ARM11 系列、SecurCore系列及Cortex系列。不同处理器内核使用不同的体系结构版本。
如表 1-1 所示是ARM内核与ARM体系结构版本的对应关系。
表 1-1 ARM内核与ARM体系结构版本的对应关系
下面对几种使用广泛的ARM内核做简单介绍。
1)ARM7 系列
ARM7 系列具有三级流水、空间统一的指令与数据Cache、平均功耗为 0.6mW/MHz、时钟速度为 66MHz、每条指令平均执行 1.9 个时钟周期等特性。其中ARM710、ARM720和ARM740 为内带Cache的ARM内核。ARM7 指令集与Thumb指令集扩展组合在一起,可以减少内存容量和系统成本。同时,它还利用嵌入式ICE调试技术来简化系统设计,并用一个DSP增强扩展来改进性能。ARM7 体系结构是小型、快速、低能耗、集成式的RISC内核结构。该产品的典型用途是数字蜂窝电话和硬盘驱动器等。目前主流的ARM7 内核是ARM7TDMI、ARM7TDMI-S、ARM7EJ-S、ARM720T。现在市场上用得最多的ARM7 系列有思智浦公司的LPC2000 系列微控制器、Samsung公司的S3C44BOX与S3C4510 处理器、Atmel公司的AT91FR40162 系列处理器、Cirrus公司的EP73xx系列等。该系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S等。这些处理器提供Thumb 16 位压缩指令集和EmbededICE软件调试方式,适用于更大规模的SoC设计中。
ARM7 系列广泛应用于多媒体和嵌入式设备中,包括互联网设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。
2)ARM9E系列
ARM9 系列采用了ARMV4T(哈佛)体系结构。由于这种体系结构中的程序和数据存储器在两个分开的物理空间中,所以取指和执行能完全重叠。ARM9 采用五级流水处理及分离的Cache结构,平均功耗为 0.7mW/MHz。其时钟速度为 120~200MHz,每条指令平均执行 1.5 个时钟周期。与ARM7 系列相似,ARM9 系列中的ARM920、ARM940 和ARM9E处理器均为含有Cache的CPU核,其性能(速率)为 132MIPS(120MHz时钟,3.3V供电)或 220MIPS(200MHz时钟)。ARM9 系列同时也配备了Thumb指令扩展、调试,以及Harvard总线。在生产工艺相同的情况下,其性能(速率)是ARM7TDMI处理器的两倍。它常用于无线设备、仪器仪表、联网设备、机顶盒设备、高端打印机及数码相机应用中。ARM9E内核在ARM9 内核的基础上增加了紧密耦合存储器TCM及DSP部分。目前主流的ARM9 内核是ARM920T、ARM922T、ARM940。相关的处理器芯片有Samsung公司的S3C2510、Cirrus公司的EP93xx系列等。主流的ARM9E内核是ARM926EJ-S、ARM946E S、ARM966E-S等。
3)SecurCore系列
SecurCore系列提供了基于高性能的 32 位RISC技术的安全解决方案,该系列具有体积小、功耗低、代码密度大和性能高等特点。另外,最为特别的是,该系列提供了安全解决方案。它采用软内核技术,以提供最大限度的灵活性,以及防止外部对其进行扫描探测;提供面向智能卡的和低成本的存储保护单元MPU,可以灵活地集成用户自己的安全特性和其他的协处理器。该系列目前包括SC100、SC110、SC200、SC210 共 4 种产品。
4)ARM11 系列
ARM11 系列可以在使用 130nm工艺技术、芯片面积小至 2.2mm 2 和功率低至0.24mW/MHz的前提下获得高达 500MHz的速率。ARM11 系列处理器以众多消费产品市场为目标,推出了许多新的技术,包括针对媒体处理的SIMD,用以提高安全性能的TrustZone技术,智能能源管理(IEM),以及需要非常高的、可升级的超过 2600 Dhrystone 2.1 MIPS性能的系统多处理技术。主要的ARM11 系列处理器有ARM1136JF-S、ARM1156T2F-S、ARM1176JZF-S、ARM11 MCORE等多种。
5)ARM Cortex系列
ARM Cortex系列基于ARMV7 架构,又分为Cortex-M、Cortex-R和Cortex-A 3 类。ARM Cortex系列的 3 款产品全都集成了Thumb®-2 指令集,可满足各种不同的日益增长的市场需求。ARM Cortex系列的 3 款处理器瞄准的领域如下。
(1)ARM Cortex-A系列:针对复杂操作系统及用户应用设计的应用处理器。
(2)ARM Cortex-R系列:针对实时系统专用嵌入式处理器。
(3)ARM Cortex-M系列:针对微控制器和低成本应用、专门优化的深嵌入式处理器。
Cortex-M3 是首款基于ARMV7-M架构的处理器,专门瞄准对功耗和成本敏感的嵌入式应用,是为使其实现高性能而设计的,它大大简化了可编程的复杂性,使得ARM体系结构成为各种应用方案(即使是最简单的方案)的上佳选择。
注意: NXP公司的LPC17XX系列属于Cortex-M3 的核;LPC11XX系列属于Cortex M0 的ARM核。
Cortex系列处理器并没有开拓新的应用领域,从某种意义上讲,它是对原有应用领域的主流产品的一次大升级,提供了更好的性能。Cortex系列处理器对应于原有的历史上的各种处理核。ARM公司给出了各种产品的替代关系表,如表 1-2 所示。Cortex系列处理器主要是针对ARM11、ARM9、ARM73 款经典处理器的升级。
表 1-2 Cortex-M0/M3 与ARM7/9/11 的替代关系
续表