ARM 的概念与版本

⚠ 转载请注明出处:作者:ZobinHuang,更新日期:Sept.5 2022


知识共享许可协议

    本作品ZobinHuang 采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可,在进行使用或分享前请查看权限要求。若发现侵权行为,会采取法律手段维护作者正当合法权益,谢谢配合。


目录

有特定需要的内容直接跳转到相关章节查看即可。

正在加载目录...

ARM: 首先它是一家公司

    ARM 的全称是 Advanced RISC Machines,它是一家英国的芯片企业。这家企业的特点是只设计 CPU 芯片,而不生产。它的盈利模式是向外界提供 ARM 技术知识产权 (IP) 核,将技术授权给世界上许多著名的半导体、软件和 OEM 厂商,并提供服务。

    值得一提的是,作为设计 GPU 芯片的巨头 NVIDIA,前段时间尝试对 ARM 公司发起收购,但是被英国政府以反垄断为由拒绝 nividia_acquire_arm

ARM: 它是一种指令集架构

    ARM 公司设计的 CPU 芯片是一种 RISC (精简指令集) 的处理器,他们为他们的芯片设计了对应的指令集架构 —— 名称同样为 ARM。

    具体版本特性说明如下。

ARMv1 版 ISA

    该版架构只在原型机 ARM1 出现过,只有 26 位的寻址空间,没有用于商业产品。其基本性能有:

  • 基本的数据处理指令 (无乘法);
  • 基于字节、半字和字的 Load/Store 指令;
  • 转移指令,包括子程序调用及链接指令;
  • 供操作系统使用的软件中断指令 SWI;
  • 寻址空间: 64MB ($2^{26}$);

ARMv2 版 ISA

    该版架构对 V1 版进行了扩展,包含了对 32 位乘法指令和协处理器指令的支持。版本 V2a 是版本 V2 的变种,ARM3 芯片采用了版本 V2a,是第一片采用片上 Cache 的 ARM 处理器。ARM V2 指令集同样为 26 位寻址空间,现在已经废弃不再使用。

    V2 版架构与版本 V1 相比,增加了以下功能:

  • 乘法和乘加指令;
  • 支持协处理器操作指令;
  • 快速中断模式;
  • SWP/SWPB 的最基本存储器与寄存器交换指令;

ARMv3 版 ISA

    ARM 公司在 1990 年设计的第一个微处理器采用的是应用了 ARM V3 版 ISA 的 ARM6 系列处理器。它作为 IP 核 (独立的处理器),是具有片上高速缓存、MMU 和写缓冲的集成 CPU。变种版本有 V3G 和 V3M。版本 V3G 是不与版本 V2a 向前兼容的版本 3,版本 V3M 引入了有符号和无符号数乘法和乘加指令,这些指令产生的是 64 位结果。整体来说,V3 版架构 (目前已废弃) 对 ARM 体系结构作了较大的改动:

  • 寻址空间增至 32 位 (4GB);
  • 当前程序状态信息从原来的 R15 寄存器移到当前程序状态寄存器 CPSR (Current Program Status Register) 中;
  • 增加了程序状态保存寄存器 SPSR (Saved Program Status Register);
  • 增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常;
  • 增加了 MRS/MSR 指令,以访问新增的 CPSR/SPSR 寄存器;
  • 增加了从异常处理返回的指令功能

ARMv4 版 ISA

    V4 版架构在 V3 版上作了进一步扩充,V4 版架构是目前应用最广的 ARM 体系结构,ARM7、ARM8、ARM9 和 StrongARM 系列处理器都采用该架构。 V4 不再强制要求与 26 位地址空间兼容,而且还明确了哪些指令会引起未定义指令异常。V4 版指令集架构中增加了以下功能:

  • 符号化和非符号化半字及符号化字节的存/取指令;
  • 增加了 T 变种,处理器可工作在 Thumb 状态,增加了 16 位 Thumb 指令集;
  • 完善了软件中断 SWI 指令的功能;
  • 处理器系统模式引进特权方式时使用用户寄存器操作;
  • 把一些未使用的指令空间捕获为未定义指令;

ARMv5 版 ISA

    V5 版架构是在 V4 版基础上增加了一些新的指令,ARM10 和 Xscale 系列处理器都采用该版架构。这些新增命令有:

  • 带有链接和交换的转移 BLX 指令;
  • 计数前导零 CLZ 指令; BRK 中断指令;
  • 增加了数字信号处理指令 (V5TE 版);
  • 为协处理器增加更多可选择的指令;
  • 改进了 ARM/Thumb 状态之间的切换效率;
  • E --- 增强型 DSP 指令集,包括全部算法操作和 16 位乘法操作;
  • J ---- 支持新的 JAVA,提供字节代码执行的硬件和优化软件加速功能

ARMv6 版 ISA

    V6 版架构是 2001 年发布的,首先在 2002 年春季发布的 ARM11 系列处理器中使用。在降低耗电量地同时,还强化了图形处理性能。通过追加有效进行多媒体处理的 SIMD (Single Instruction, Multiple Data,单指令多数据) 功能,将语音及图像的处理功能提高到了原型机的 4 倍。此架构在 V5 版基础上增加了以下功能:

  • THUMBTM: 35% 代码压缩;
  • DSP 扩充: 高性能定点 DSP 功能;
  • JazelleTM: Java 性能优化,可提高 8 倍;
  • Media 扩充: 音/视频性能优化,可提高 4 倍

ARMv7 版 ISA

    V7 架构是在 ARMv6 架构的基础上诞生的。该架构采用了 Thumb-2 技术,它是在 ARM 的 Thumb 代码压缩技术的基础上发展起来的, 并且保持了对现存 ARM 解决方案的完整的代码兼容性。Thumb-2 技术比纯 32 位代码少使用 31% 的内存,减小了系统开销,同时能够提供比已有的基于 Thumb 技术的解决方案高出 38% 的性能。ARMv7 架构还采用了 NEON 技术,将 DSP 和媒体处理能力提高了近 4 倍,并支持改良的浮点运算,满足下一代3D图形、游戏物理应用以及传统嵌入式控制应用的需求。此外,ARMv7 还支持改良的运行环境,以迎合不断增加的 JIT(Just In Time) 和 DAC(Dynamic Adaptive Compilation) 技术的使用。

ARMv8 版 ISA

    v8 架构是在 32 位 ARM ISA 架构上进行开发的,将被首先用于对扩展虚拟地址和 64 位数据处理技术有更高要求的产品领域,如企业应用、高档消费电子产品。ARMv8 架构包含两个执行状态:AArch64 和 AArch32。AArch64 执行状态针对 64 位处理技术,引入了一个全新指令集 A64;而 AArch32 执行状态将支持现有的 ARM 指令集。目前的 ARMv7 架构的主要特性都将在 ARMv8 架构中得以保留或进一步拓展,如:TrustZone 技术、虚拟化技术及 NEON advanced SIMD 技术等。

ARM: ARM 公司设计的处理器核心

    上文提到,ARM 公司盈利的模式是对外提供他们设计的处理器核心 IP,其它的微处理器制造商会在他们制造的处理器中集成 ARM 公司的 IP,一般称为 ARM 内核 或者 ARM 核心。不同时代发布的 ARM 处理器核心应用的 ARM ISA 对应情况简化如下图所示,具体可见 Wikipedia wiki_arm

    各代 ARM 内核的特性如下所示。

ARM 7 内核

    该系列主要针对某些简单的 32 位设备,作为目前较旧的一个系列,ARM7 处理器已经不建议继续在新品中使用。主要包括 ARM7TDMI-S (ARMv4T架构) 和 ARM7EJ-S (ARMv5TEJ 架构)。

ARM 9 内核

    主要针对嵌入式实时应用,主要包括 ARM926EJ-S、ARM946E-S 和 ARM968E-S。

ARM 11 内核

    主要应用在高可靠性和实时嵌入式应用领域,主要包括 ARM11MPCore、ARM1176、ARM1156、ARM1136。

ARM Cortex-R 内核

    Cortex-R,代表实时的意义 (Real-Time),目标是实时任务处理,主要应用领域包括汽车、相机、工业、医学等。该系列处理器主要包括 Cortex-R4、Cortex-R5、Cortex-R7、Cortex-R8、Cortex-R52、Cortex-A17。

ARM Cortex-M 内核

    Cortex-M,代表微处理器的意义 (Microcontrollers),目标是最节能的嵌入式设备,主要应用领域包括汽车、能源网、医学、嵌入式、智能卡、智能设备。传感器融合、穿戴设备等。该系列处理器主要包括 Cortex-M0、Cortex-M0+、Cortex-M3、Cortex-M4、Cortex-M7、Cortex-M23、Cortex-M33、Cortex-M35P。

ARM Cortex-M 内核

    Cortex-A,代表的是先进意义 (Advanced),目标是以最佳功耗实现最高性能,主要应用领域包括汽车、工业、医学、调制解调器、存储等。Cortex-A 也是目前应用最广的处理器版本。该系列处理器主要包括 Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A15、Cortex-A17、Cortex-A32、Cortex-A35、Cortex-A53、Cortex-A57、Cortex-A72、Cortex-A73。其中,Cortex-A8 只支持单核。

    在对 ISA 的支持上,Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A15、Cortex-A17 基于 ARMv7-A 架构;Cortex-A32、Cortex-A35、Cortex-A53、Cortex-A57、Cortex-A72、Cortex-A73 基于 ARMv8-A 架构,除了 Cortex-A32 为 32 位结构,其它的均支持64位结构。

    总的来说,Cortex-A 处理器从高到低可排序为:Cortex-A73、Cortex-A72、Cortex-A57、Cortex-A53、Cortex-A35、Cortex-A32、Cortex-A17、Cortex-A15、Cortex-A7、Cortex-A9、Cortex-A8、Cortex-A5。