1. 课程导入

各位好,我是老周。今天咱们聊聊 ARMv9。说实话,ARMv9 发布那会儿,我正带着团队做一个手机 SoC 的底层适配。当时看到新架构文档,第一反应是:嗯,又得加班了。但仔细读完,我发现这次升级确实有料。

ARMv9 不是一次简单的版本号递增。它是在 v8 这个成熟地基上,针对未来十年计算需求做的一次重构。你想想看,从 2011 年 ARMv8 发布到 2021 年 v9 登场,中间隔了整整十年。这十年里,移动设备从双核发展到十六核,AI 从实验室走向了终端,虚拟化从服务器下沉到了嵌入式。v8 的架构设计,说实话,有点扛不住了。

1.1 从 v8 到 v9:到底改了啥?

很多人问我:v9 和 v8 最大的区别是什么?我的回答很简单——安全、可扩展、高性能。这三个词,基本概括了 v9 的设计哲学。

咱们先看一张对比表,把关键差异列清楚:

特性维度 ARMv8 ARMv9
指令集 AArch64 (基础) AArch64 + SVE2 + SME
安全架构 TrustZone (双世界) CCA (机密计算架构)
虚拟化 VHE (虚拟化主机扩展) RME ( realms 管理扩展)
向量处理 NEON (128-bit 固定长度) SVE (可变长度, 128-2048-bit)
内存模型 VMSA (基本) VMSA + 颗粒度转换表 (FEAT_GT)
调试与追踪 CoreSight v1/v2 CoreSight v3 + 嵌入式追踪宏单元增强

这张表里,我最想强调的是 SVE2 和 CCA。为什么?因为这两个特性,直接决定了你在实际项目中能做什么、不能做什么。

核心观点:ARMv9 不是 v8 的替代品,而是 v8 的进化版。v8 的代码可以在 v9 上跑,但 v9 的新特性,v8 永远用不了。向后兼容是 ARM 的底线,但新特性才是你升级的理由。

1.2 核心特性深度解析

咱们挑几个关键特性,展开聊聊。我在项目中踩过的坑,也一并分享出来。

1.2.1 SVE2:向量处理的新纪元

SVE2 是 ARMv9 最亮眼的技术之一。它继承了 SVE 的可变向量长度设计,但扩展了指令集,覆盖了 NEON 的所有功能。

说白了,SVE2 让你写一次代码,就能在不同宽度的硬件上自动适配。128-bit 的 IoT 芯片能跑,2048-bit 的服务器 CPU 也能跑。代码不用重写,性能自动提升。

我记得有个项目,客户要求在手机和服务器上跑同一套 AI 推理库。用 NEON 的话,得维护两套汇编代码。换成 SVE2 后,一套 C 代码加 intrinsic,搞定。编译时指定 -march=armv9-a+sve2,编译器自动生成适配目标硬件的向量指令。

实战技巧:如果你现在开始写新代码,建议优先用 SVE2 intrinsic,而不是 NEON。虽然 SVE2 的 intrinsic 函数名更长,但可移植性更好。等未来硬件升级,你的代码直接受益。

1.2.2 CCA:机密计算架构

CCA 是 ARMv9 在安全领域的重头戏。它引入了 Realm 的概念——一个比 TrustZone 更灵活的安全执行环境。

TrustZone 只有两个世界:安全世界和普通世界。CCA 则允许你创建多个 Realm,每个 Realm 独立运行,彼此隔离。这意味着,你可以让一个 Realm 跑 AI 模型,另一个 Realm 处理支付,互不干扰。

我曾经帮一家金融科技公司做安全方案设计。他们需要在同一台设备上运行多个客户的敏感数据。用 TrustZone 的话,所有安全代码都挤在安全世界里,隔离性不够。换成 CCA 后,每个客户一个 Realm,硬件级隔离,审计也方便。

注意:CCA 需要硬件支持。目前只有 ARMv9.2 及以上的核心才完整支持 CCA。选型时务必确认芯片的 ARMv9 版本号,别只看“支持 ARMv9”就下单。

1.2.3 RME:虚拟化再升级

RME(Realm Management Extension)是 CCA 的底层支撑。它扩展了异常级别,在 EL2 和 EL3 之间插入了 EL2 的变体——RME 引入了 R-EL2 和 R-EL3 的概念。

简单说,RME 让虚拟化监控器(Hypervisor)能管理 Realm 的创建和销毁。以前,Hypervisor 只能管理虚拟机。现在,它还能管理机密计算 Realm。这对云原生场景特别重要。

我建议你记住这张异常级别图:

EL0: 应用程序 (App / Realm App)
EL1: 操作系统 (Linux / Realm OS)
EL2: Hypervisor (KVM / Realm Manager)
EL3: 安全监控器 (TF-A / Secure Monitor)
R-EL2: Realm 管理 (RMM)
R-EL3: 机密计算根 (CCA Root)

嗯,这里要注意:R-EL2 和 R-EL3 不是新增的异常级别,而是 EL2 和 EL3 在 Realm 上下文中的特殊模式。理解这一点,对后续调试 RME 相关代码很有帮助。

1.3 生态现状:谁在用 ARMv9?

截至 2025 年,ARMv9 的生态已经相当成熟。我列几个关键节点:

  • Cortex-X3/X4/X5 系列:ARM 的旗舰性能核,全面支持 ARMv9.2
  • Cortex-A715/A720/A725 系列:能效核,支持 ARMv9.0 及以上
  • Neoverse V2/V3 系列:服务器 CPU,支持 SVE2 和 CCA
  • Apple M3/M4 系列:自研 ARMv9 兼容核心,性能标杆
  • 高通 Snapdragon 8 Gen 3/4:移动端 ARMv9 主力
  • 联发科 Dimensity 9300/9400:全大核 ARMv9 架构

从服务器到手机,从汽车到 IoT,ARMv9 已经全面铺开。我个人判断,2025 年之后的新芯片,基本都会以 ARMv9 为起点。v8 会逐渐退守到低端和存量市场。

生态现状总结:ARMv9 不是未来,是现在。如果你还在用 v8 做新项目,建议认真评估迁移成本。越早迁移,技术债越少。

1.4 知识体系总览

下面这张图,是我自己整理的 ARMv9 知识体系。它涵盖了架构、安全、虚拟化、性能调优四大模块。咱们这门课,就是按照这个结构展开的。

ARMv9 知识体系总览 ARMv9 知识体系总览 架构基础 AArch64 / 异常级别 安全架构 CCA / Realm / TrustZone 虚拟化 RME / VHE / 嵌套虚拟化 性能调优 SVE2 / PMU / 缓存优化 指令集演进 SVE2 / SME / NEON 内存模型 VMSA / 颗粒度转换 机密计算 Realm / 数据隔离 安全启动 信任链 / 测量启动 Realm 管理 RMM / 生命周期 虚拟化扩展 VHE / 嵌套虚拟化 性能监控 PMU / 事件计数 缓存优化 预取 / 一致性 说明:本课程按四大模块展开,每模块包含 2-3 个核心子主题 建议按顺序学习,架构基础是后续模块的必备前提

1.5 避坑指南:我踩过的三个坑

最后,分享几个我在 ARMv9 项目中踩过的坑。希望能帮你少走弯路。

  1. 误以为所有 ARMv9 核心都支持 SVE2:不是的。ARMv9.0 只支持 SVE,SVE2 是 ARMv9.1 才引入的。选型时一定要看核心的 ARMv9 版本号。
  2. CCA 的 Realm 数量有限:硬件支持的 Realm 数量是固定的,通常 4-8 个。别想着创建几百个 Realm,那是软件模拟的。
  3. 调试工具链滞后:ARMv9 的调试工具在早期版本中 bug 较多。我建议用 ARM DS 2024 以上版本,或者开源工具链的最新版。

我的建议:如果你刚开始接触 ARMv9,先别急着上 CCA 和 RME。先把 SVE2 和异常级别搞明白。这两个是基础,基础打牢了,后面学起来就快了。