ARMv8官方手册学习笔记(一):简介一、Architecture Reference Manual手册概述
Architecture Reference Manual手册详细描述了ARM架构的定义,这些定义包括了一些抽象的行为,这些行为被称为processing element(简称PE)。任何符合ARM架构的实现都必须严格遵循PE的定义。同时,该手册还定义了使用PE的软件行为规则,以确保软件能够在ARM架构上正确、高效地运行。
二、ARM架构手册的主要内容
ARM架构手册涵盖了多个关键方面,包括但不限于:
三、Architecture profiles(架构概要)
ARM体系结构自发布以来已经发生了重大变化,迄今为止已发布了8个主要版本(用版本号1到8表示),但前三个版本已废弃。其中,AArch64和AArch32分别描述了64位和32位执行状态:
- AArch64:64位执行状态,地址保存在64位寄存器中,基本指令集中的指令使用64位寄存器进行处理。支持A64指令集。
- AArch32:32位执行状态,地址保存在32位寄存器中,基本指令集中的指令使用32位寄存器进行处理。支持T32和A32指令集。
此外,ARM还定义了三种不同的应用场景:
- A(Application profile):应用,支持Virtual Memory System Architecture (VMSA)和Memory Management Unit (MMU),支持A64、A32和T32指令。
- R(Real-time profile):实时性,支持Protected Memory System Architecture (PMSA),适用于对实时性要求较高的应用场景。
- M(Microcontroller profile):微处理器,适用于嵌入式系统和微控制器。
四、ARMv8架构概念
ARMv8架构引入了多个重要的概念,包括:
- AArch64和AArch32:分别代表了64位和32位的执行状态,如图所示(插入AArch64和AArch32的图片):
- ARM中断控制器:支持GICv3(version 3 of the ARM Generic Interrupt Controller architecture),提供了高效的中断管理和处理机制。
- ARMv8 Debug:支持Self-hosted debug和External debug两种模式,分别提供了用户debugger接口和外部调试器接口。
五、支持的数据类型
ARMv8架构支持多种数据类型,包括但不限于整数、浮点数、向量等,如图所示(插入支持数据类型的图片):
六、ARM内存管理
ARMv8架构的内存管理功能非常强大,包括:
- 访问非对齐的内存或产生异常,提高了内存访问的安全性。
- 可限制应用程序访问指定内存区域,实现了内存访问的权限控制。
- 虚拟地址(VA)转换为物理地址(PA),支持虚拟内存管理。
- 支持大端和小端模式,满足了不同硬件平台的需求。
- 控制对内存的访问顺序,提高了内存访问的效率。
- 控制缓存和地址转换结构,优化了内存访问的性能。
- 同步多个PE对共享内存的访问,保证了内存访问的一致性。
七、ARM扩展特性
ARMv8架构还不断推出扩展特性,以支持更多的应用场景和性能需求。例如:
- ARMv8.1扩展特性:包括ARMv8.1-Atomics、ARMv8.1-SIMD、ARMv8.1-LOR等,提供了原子操作、高级SIMD指令和有限顺序区域等功能。
- ARMv8.2扩展特性:包括ARMv8.2-A64ISA、ARMv8.2-FP16、ARMv8.2-DotProd等,对A64指令集进行了改进,支持半精度浮点数据处理和SIMD点积等功能。
- ARMv8.3扩展特性:包括ARMv8.3-CompNum、ARMv8.3-JSConv、ARMv8.3-RCPC等,提供了SIMD复数支持、Javascript转换指令和更弱的释放一致性等功能。
综上所述,ARMv8架构是一个功能强大、灵活多变的处理器架构,广泛应用于各种嵌入式系统、移动设备、高性能计算等领域。通过深入学习ARMv8官方手册,我们可以更好地理解和应用这一架构,为开发高效、可靠的软件系统提供有力支持。