ARMv8\ARMv9架构部分特性总结

todo...


1.Armv9-A 架构

Armv9-A 架构建立在 Armv8-A 架构的基础上并向前兼容。 Armv9-A 架构构成了 Arm 基础系统架构的基础——该规范概述了一种标准,可确保硬件和固件在系统级的广泛应用中具有兼容性。

Armv9-A 架构引入了一些主要的新特性:

  1. SVE2: extending the benefit of scalable vectors to many more use cases
  2. Realm Management Extension (RME): extending Confidential Compute on Arm platforms to all developers. Read more about Confidential Compute and Arm architecture security features
  3. BRBE: providing profiling information, such as Auto FDO
  4. Embedded Trace Extension (ETE) and Trace Buffer Extension (TRBE): enhanced trace capabilities for Armv9
  5. TME: hardware transactional memory support for the Arm architecture

2.Armv8-A 架构

Armv8-A 架构引入了使用 64 位和 32 位执行状态的能力,分别称为 AArch64 和 AArch32。 AArch64 执行状态支持 A64 指令集。 它在 64 位寄存器中保存地址,并允许基本指令集中的指令使用 64 位寄存器进行处理。 AArch32 执行状态是一个 32 位执行状态,它保留了与 Armv7-A 架构的向前兼容性,增强了该配置文件,使其可以支持 AArch64 状态中包含的某些功能。 它支持 T32 和 A32 指令集。

Armv8-A 架构允许不同级别的 AArch64 和 AArch32 支持,例如:

  1. AArch64 only designs
  2. AArch64 designs that also support AArch32 operating systems and virtual machines
  3. AArch64 support with AArch32 at (unprivileged) application level only

3.Armv7-A 架构

Armv7-A 架构引入了架构配置文件的概念,这个概念在 Armv8-A 和 Armv9-A 中得到延续。 Armv7-A架构:

  1. 以多种模式实现传统的Arm架构
  2. 支持基于内存管理单元 (MMU) 的虚拟内存系统架构 (VMSA)
  3. 支持 Arm (A32) 和 Thumb (T32) 指令集

该架构还支持多种扩展:

  1. Security Extensions
  2. Multiprocessing Extensions
  3. Large Physical Address Extension
  4. Virtualization Extensions
  5. Generic Timer Extension
  6. Performance Monitors Extension

所有这些扩展都是可选的,它们提供的大部分功能都包含在 Armv8-A 架构中

6.Armv9-A架构特性总结


Arm Application-profile (A-profile) 架构面向高性能市场,例如 PC、移动、游戏和企业。 A-profile 架构的最新版本是 Armv9-A 和 Armv8-A。 Armv9-A和Armv8-A的特性对比请看下表:

Feature

Architecture
versions

Description

AArch64

Armv8.0-A

Armv9.0-A

AArch64 是 Arm 架构的 64 位执行环境。包括:

(1)、 大物理和虚拟地址空间

(2)、 64 位寄存器

(3)、 高性能的自旋锁

(4)、 高效的缓存管理

(5)、 为 C++11、C11、Java 内存模型设计的 Load-Acquire、Store-Release 指令。

(6)、 Arm 架构的 64 位执行环境。

AArch32

Armv8.0-A

Armv9.0-A(EL0 only)

Arm 架构的 32 位执行环境。 提供与 Armv7-A 及更早版本的兼容性。

Virtualization

Armv8.0-A

Armv9.0-A

支持hypervisors 和virtualization

TrustZone

Armv8.0-A

Armv9.0-A

TrustZone 通过内置于 CPU 中的硬件强制隔离提供了一种高效的、系统范围的安全方法。

Realm Management Extension (RME)

Armv9.0-A

Realm Management Extension (RME) 建立在 TrustZone 之上,具有以下功能:

(1)、两个额外的安全状态

(2)、两个额外的物理地址空间

(3)、在安全状态之间动态移动资源的能力

这些功能支持 Arm 机密计算架构 (Arm CCA) 和动态 TrustZone。

Hardware-accelerated cryptography

Armv8.0-A

Armv9.0-A

ARM cryptography extension

Neon

Armv8.0-A

Armv9.0-A

Neon 技术是一种打包的 SIMD 架构。 Neon 寄存器被视为相同数据类型元素的向量,Neon 指令同时对多个元素进行操作。 该技术支持多种数据类型,包括浮点和整数运算。

Virtualization Host Extension (VHE)

Armv8.1-A

Armv9.0-A

这些增强功能通过减少在host os和guest os之间转换时相关的软件开销来提高 Type 2 hypervisors的性能。 这些扩展允许host os在 EL2 上执行,而不是在 EL1 上执行,而无需进行大量修改。

Privilege Access Never (PAN)

Armv8.1-A

Armv9.0-A

PAN 允许内核阻止访问非特权位置,从而提供更高的健壮性。

Statistical Profiling Extension (SPE)

Armv8.2-A

Armv9.0-A

在指令或微操作的基础上设置采样标准,然后定期采样。 然后,每个样本将与该样本关联的上下文收集到一个分析记录中,在任何给定时间只编译一个记录。 当在长时间运行大型工作负载的系统上连续采样时,分析大型工作样本集可以提供对软件执行及其相关性能的深入了解。

Scalable Vector Extensions (SVE)

Armv8.2-A

SVE 为具有可变矢量长度的 SIMD 提供支持。 SVE 支持向量长度不可知的编码风格,其中代码不需要重新编写或重新编译,因为它动态地适应实现的向量长度。 SVE 架构允许实现向量长度高达 2048 位,其中向量长度必须是 128 位的倍数。 SVE 还支持为固定向量长度编写的代码。

Pointer authentication

Armv8.3-A

Armv9.0-A

计算机攻击正变得越来越复杂。 这方面的示例是利用机制,例如在Return-Orientated Programming(ROP) 和Jump-Orientated Programming(JOP) 中使用gadgets 。 为了缓解此类漏洞,Armv8.3-A 引入了一项功能,可在将寄存器的内容用作间接分支或数据引用的地址之前对其进行身份验证。 对于地址验证,该功能使用 64 位地址值中的高位,通常与地址空间的签名扩展相关联。 这允许在值的高位中引入Pointer Authentication Code (PAC) 作为新字段。

Nested Virtualization

Armv8.3-A

Armv9.0-A

人们对云计算越来越感兴趣,尤其是对日益普遍的用例感兴趣,即用户从基础设施即服务 (IaaS) 提供商处租用虚拟机。 嵌套虚拟化是一个有吸引力的提议,其中打算在此虚拟机上运行的工作负载包括使用管理程序。

Memory Tagging Extension (MTE)

Armv8.5-A

Armv9.0-A

Memory tagging extension(MTE)使开发人员能够识别他们程序中的内存安全违规。

Branch Target Identification (BTI)

Armv8.5-A

Armv9.0-A

BTI 允许软件识别跳转分支的有效目标。 BTI 补充了对指针身份验证的支持,提供了针对 JOP 技术的防御。

GEneral Matrix Multiply (GEMM)

Armv8.6-A

Armv9.0-A

添加新的高级 SIMD (Neon) 和 SVE 指令以加速矩阵运算,大大减少所需的内存访问次数。

BFloat16

Armv8.6-A

Armv9.0-A

支持 BFloat16 数据类型的高级 SIMD (Neon) 和 SVE。 BF16 最近成为一种专门为神经网络的高性能处理量身定制的格式。

High precision timers

Armv8.6-A

Armv9.0-A

通用定时器频率增加到 1GHz 的新标准。

64-byte load and stores

Armv8.7-A

Armv9.0-A

企业系统的一个增长趋势是引入可以使用 64 字节原子加载或存储访问的加速器。 这些用于向队列添加项目,并且在某些情况下可以表示入队操作的成功或失败。

Scalable Vector Extension v2 (SVE2)

Armv9.0-A

SVE2 是 Armv8-A SVE 的超集,具有扩展的功能。 SVE2 指令集增加了全面的定点算术支持。

Transactional Memory Extension (TME)

Armv9.0-A

事务内存扩展为 Arm 架构带来了硬件事务内存 (HTM) 支持。 事务内存用于解决编写高并发、多线程程序的困难,通过减少由于锁争用导致的序列化,粗粒度、线程级并行的数量可以随着 CPU 的数量更好地扩展。

Branch Record Buffer Extensions (BRBE)

Armv9.2-A