一文帮你梳理ARM基础概念

文摘   2024-09-01 19:15   上海  


目录

  • 1、PE - processing element

  • 2、RISC架构

  • 3、AArch64和AArch32概念

  • 4、ARM的A/R/M系列

  • 5、AArch64特点

  • 6、AArch32特点

  • 7、AArch32和AArch64的切换

  • 8、A64/A32/T32

  • 9、 System registers

  • 10、ARMv8 architecture extensions

  • 11、ARM的crypto扩展

  • 推荐


(关注"Arm精选"公众号,备注进ARM交流讨论区。)

1、PE - processing element

ARM体系结构定义了抽象机器的行为,称为处理元素(processing element),通常缩写为PE。与ARM体系结构兼容的实现必须符合处理元素所描述的行为。

2、RISC架构

ARM架构是一个精简指令集计算机(RISC)架构,具有以下RISC架构特征:

  • 一个大的统一寄存器文件。

  • 一种加载/存储架构,其中数据处理操作只对寄存器内容进行操作,而不是直接对内存内容进行操作。
    简单的寻址模式,所有的加载/存储地址仅由寄存器内容和指令字段决定。

3、AArch64和AArch32概念

ARMv8体系结构的一个重要特性是向后兼容,并且可以在各种标准和更专门的用例中自由地进行优化实现。ARMv8架构支持:

  • A 64-bit Execution state, AArch64.

  • A 32-bit Execution state, AArch32, 这与以前版本的ARM架构兼容

通用名AArch64和AArch32描述64位和32位执行状态:

  • AArch64是64位执行状态,这意味着地址保存在64位寄存器中,基本指令集中的指令可以使用64位寄存器进行处理。AArch64状态支持A64指令集。

  • AArch32是32位执行状态,这意味着地址保存在32位寄存器中,基本指令集中的指令使用32位寄存器进行处理。AArch32状态支持T32和A32指令集。

4、ARM的A/R/M系列

ARM定义了三个架构概要:

  • A:Application架构,支持基于内存管理的虚拟内存系统体系结构(VMSA),支持A64、A32和T32指令集

  • R:Real-time架构,支持基于内存保护的受保护内存系统架构(PMSA),支持A32和T32指令集。

  • M:Microcontroller架构,支持T32指令集的变体

5、AArch64特点

AArch64,64位执行状态:

  • 提供31个64位通用寄存器,其中X30用作过程链接寄存器。

  • 提供64位程序计数器(PC)、堆栈指针(SPs)和异常链接寄存器(ELRs)。

  • 为SIMD向量和标量浮点支持提供32个128位寄存器。

  • 提供单个指令集A64

  • 定义了ARMv8异常模型,有四个异常级别,EL0 - EL3,提供了一个执行特权层次结构,

  • 提供对64位虚拟寻址的支持。

  • 定义许多包含PE状态的进程状态(PSTATE)元素。A64指令集包括直接操作各种PSTATE元素的指令

  • 使用表示可以访问寄存器的最低异常级别的后缀来命名每个系统寄存器。

6、AArch32特点

AArch32,32位执行状态:

  • 提供13个32位通用寄存器,以及一个32位PC、SP和link寄存器(LR)。LR同时用作ELR和过程链接寄存器。其中一些寄存器具有多个存储实例,用于不同的PE模式。

  • 为从Hyp模式返回的异常提供一个ELR。

  • 为高级SIMD向量和标量浮点支持提供32个64位寄存器。

  • 提供两个指令集,A32和T32。

  • 支持基于PE模式的ARMv7-A异常模型,并将其映射到基于异常级别的ARMv8异常模型。

  • 提供对32位虚拟寻址的支持。

  • 定义许多包含PE状态的进程状态(PSTATE)元素。A32和T32指令集包括直接操作各种PSTATE元素的指令,以及使用应用程序状态寄存器(APSR)或当前程序状态寄存器(CPSR)访问PSTATE的指令。

7、AArch32和AArch64的切换

在AArch64和AArch32执行状态之间转移控制称为互处理(interprocessing)。PE只能在异常级别发生变化时在执行状态之间移动,并且必须遵守文中给出的规则。这意味着不同的软件层,例如应用程序、操作系统内核和管理程序,在不同的异常级别执行,可以在不同的执行状态中执行。

8、A64/A32/T32

在ARMv8中,可能的指令集取决于执行状态:

  • AArch64状态只支持一个名为A64的指令集。这是一个使用32位指令编码的固定长度指令集。

  • AArch32状态支持以下指令集:
    A32,这是一个使用32位指令编码的固定长度指令集。
    T32,这是一个可变长度的指令集,同时使用16位和32位指令编码。在以前的文档中,这些指令集被称为ARM和Thumb指令集。ARMv8扩展了这些指令集。在AArch32状态中,指令集状态决定PE执行的指令集。

9、 System registers

系统寄存器提供了体系结构特性的控制和状态信息, The System registers 包含:

  • General system control registers.

  • Debug registers.

  • Generic Timer registers.

  • Optionally, Performance Monitor registers.

  • Optionally, the Activity Monitors registers.

  • 可选地,在其他ARM架构规范中定义的一组或多组寄存器:
    跟踪系统寄存器,如嵌入式跟踪宏单元体系结构规范中定义的,ETMv4。
    可伸缩向量扩展系统寄存器(Scalable Vector Extension System registers),定义在ARM®架构参考手册补充,可伸缩向量扩展(SVE),用于ARMv8-A。
    统计分析扩展系统寄存器,定义在ARM®架构参考手册的补充,统计分析的扩展,为ARMv8-A。
    通用中断控制器(GIC)系统寄存器,

  • RAS扩展系统寄存器,在ARM®可靠性(Reliability)、可用性(Availability)和可服务性(Serviceability)(RAS)中定义ARMv8规范,用于ARMv8- a架构配置文件。RAS扩展是对ARMv8.2体系结构的强制扩展,也是对ARMv8.0和ARMv8.1体系结构的可选扩展。

10、ARMv8 architecture extensions

ARMv8 architecture extensions

  • ARMv8加密扩展

  • 可靠性、可用性和可服务性(RAS)扩展

  • 事件监视器

  • IVIPT扩展

  • 基于PC示例的概要分析扩展。

  • 统计分析扩展(SPE) SPE是ARMv8.2的一个可选扩展。也就是说,SPE需要实现ARMv8.2。

  • 可伸缩向量扩展(SVE) SVE是ARMv8.2的可选扩展。也就是说,SVE需要实现ARMv8.2。

  • 活动监视器扩展(AMU) AMU是ARMv8.4的可选扩展。也就是说,AMU需要实施ARMv8.4。

  • 内存分区和监视扩展(MPAM) MPAM是ARMv8.2的一个可选扩展。也就是说,MPAM需要实现ARMv8.2。

11、ARM的crypto扩展

ARMv8加密扩展

  • 包括AESD和AESE指令的ARMv8.0-AES。

  • 包括SHA1和SHA256指令。



ARM研习社
嵌入式软件、C语言、ARM、Linux、内核、驱动、操作系统
 最新文章