学习架构 - A 系列

架构基础知识

Arm 架构简介

本指南提供了 Arm 架构的非技术性介绍。

AArch64 异常模型

本指南介绍了 AArch64 中的异常模型和特权模型,涵盖异常级别(EL0、EL1、EL2、EL3)以及同步和异步异常(包括 Serror、IRQ、FIQ 中断)与虚拟异常。

AArch64 指令集架构 (ISA)

本学习架构指南介绍了 AArch64 中使用的 A64 指令集。

AArch64 虚拟化

本指南介绍了 Armv8-A 和 Armv9-A AArch64 中的虚拟化支持,包括虚拟化基础理论、第 2 阶段转换、虚拟异常和捕获。此外还涵盖 Arm 嵌套虚拟化、Arm VHE、Secure EL2 和 Arm VMID。

AArch64 通用定时器

本指南介绍了 Arm 通用定时器和 A 系列 PE 的定时器框架。

Armv7-A Cortex-A 程序员指南

本书介绍了 Arm 技术,旨在帮助程序员使用符合 Armv7-A 架构规范的 Arm Cortex-A 系列处理器。

了解 Armv8.x 和 Armv9.x 扩展

本指南介绍了 Arm 架构的扩展,并提供了有关如何读取和使用扩展的指导。本指南还介绍了 Armv9-A 与 Armv8-A 之间的差异。

内存管理和内存模型

AArch64 内存管理

本《学习架构》指南介绍了用于控制虚拟到物理地址转换的 Arm MMU。

AArch64 内存属性和特性

本指南介绍了 Armv8-A 和 Armv9-A 中的内存属性和特性。

内存系统、排序和障碍

本指南介绍了 Armv8-A 和 Armv9-A 架构定义的内存排序模型。

使用内存模型工具

了解有关 Arm 内存模型工具的更多信息,浏览有效示例,并了解如何自动生成 litmus 测试。

向量和矩阵处理

Neon 程序员指南

本系列指南介绍 Neon,展示如何使用内部函数优化 C 代码,并概述如何使用编译器自动生成包含 Armv8-A 高级 SIMD 指令的代码。

SVE 和 SVE2 编程示例

本指南深入介绍了可伸缩向量扩展 (SVE) 和可伸缩向量扩展 V2 (SVE2),并提供大量代码示例,向软件开发者展示如何在软件中解释 SVE 或 SVE2。

SME 程序员指南

本指南介绍了 Arm 为加速矩阵运算提出的架构解决方案——可伸缩矩阵扩展 (SEM),其中具体介绍了 SME 和 SME2。

Neon 简介

本指南介绍了 Arm Neon 技术,即用于 Armv8–A、Armv9-A 和 Armv8–R 实现的高级 SIMD(单指令多数据)架构扩展。

使用 Neon 内部函数优化 C 代码

本指南介绍了如何在 C 或 C++ 代码中使用 Arm Neon 内部函数,以利用 Armv8-A 和 Armv9-A 架构中的高级 SIMD 技术。

使用自动向量化功能进行 Neon 编译

本指南介绍了如何使用 Arm Compiler 6 和 CLANG 中的自动向量化功能,以自动生成包含 Armv8-A 和 Armv9-A 高级 SIMD 指令的代码。

从 Neon 迁移到 SVE

本指南展示了 SVE 与 Neon 的对比结果,描述 Armv8-A 和 Armv9-A 指令集的可伸缩向量扩展 (SVE) 与高级 SIMD 架构扩展 (Neon) 之间的区别。此外,指南中还介绍了二者的最佳编程实践。

SVE 和 SVE2

本指南介绍了 Armv9-A 架构中采用的可伸缩向量扩展 (SVE2) 的第 2 版,其中描述了扩展概念、主要特性、应用领域以及如何为 SVE2 开发程序。

SVE 优化指南

本指南展示了如何在 C 和 C++ 代码中使用 SVE,以及如何执行一些基本优化。

SVE 与 Neon 编程比较

本指南汇总了可伸缩向量扩展 (SVE) 编程和 Neon 编程之间的重要区别。本指南还重点介绍了将应用移植到 SVE 时需要考虑的主要差异,适合已经将应用移植到 Armv8-A Neon 硬件的用户。

GIC 和 SMMU

通用中断控制器 v3 和 v4 概述

本指南概述了通用中断控制器 (GIC),介绍了符合 Arm GICv3 标准的中断控制器的操作,并提供了在裸机环境中使用的配置信息。

通用中断控制器 v3 和 v4 - LPI

本指南介绍了 GICv3/v4 中引入的一种中断类型,即特定于位置的外设中断 (LPI)。

通用中断控制器 v3 和 v4 - 虚拟化

本指南介绍了 GICv3 和 GICv4 架构中对虚拟化的支持,涵盖了可供虚拟机管理程序用来生成和管理虚拟中断的控制方式。

SMMU 软件指南

本指南介绍了 Arm 系统内存管理单元版本 3 (SMMUv3) 的基本操作及用例。

安全机制

AArch64 的 TrustZone

本指南介绍了 Arm TrustZone 架构。此架构是一种高效的系统范围安全实现方案,在 CPU 中内置了硬件强制隔离功能。

为复杂软件提供保护

本指南介绍了 Armv8-A 和 Armv9-A 中有助于抵御 ROP 和 JOP 等软件攻击的功能,其中涵盖指针验证、分支目标认证和内存标记等内容。

适用于 Android OS 的 MTE 用户指南

本指南介绍了内存标记扩展 (MTE),并向开发者展示如何使用 MTE 来提高软件的稳健性和安全性。

Arm 机密计算架构简介

本指南解释了机密计算的原理,并描述 Arm 机密计算架构 (Arm CCA) 如何在 Arm 计算平台中实现机密计算。

机密领域管理扩展 (RME)

本指南介绍了 Armv9-A 中引入的 Arm 机密领域管理扩展 (RME),RME 是 Arm 机密计算架构的硬件组件。

Arm 机密计算架构软件栈

本指南介绍了 Arm 机密计算架构为提供机密计算环境而引入或更改的几个关键软件功能。

调试和跟踪

AArch64 自托管调试

本指南介绍了 Arm 应用类处理器架构中采用的 Armv8-A 和 Armv9-A 调试架构。

AArch64 外部调试

本指南概述了 Armv8-A 和 Armv9-A 外部调试,并描述了 AArch64 架构支持的外部调试功能。

CoreSight 简介:调试和跟踪基础设施

本指南介绍了 Arm CoreSight 架构提供的调试和跟踪基础设施支持。

在 Armv8-A 上调试之前

本指南介绍了调试 Armv8-A 处理器之前需要了解的概念,包括不同类型的调试、目标类型和目标状态。

Armv8-A 上的调试器用法

本指南重点介绍了适用于 Armv8-A 架构的各种裸机调试器的共同特征,并说明了使用调试器时需掌握的要点,以及使用调试器可能引发的各类后果。

了解 Armv9-A 跟踪功能

本指南概述了 Armv9-A 系统中的跟踪功能,包括跟踪功能的工作原理和使用方法。

使用统计分析扩展 (SPE) 进行 SoC 遥测和性能分析

本博客面向软件开发者、性能分析师和芯片工程师,介绍使用 SPE 进行性能分析和根本原因分析的概念。

MPAM

内存系统资源分区和监控 (MPAM) 概述

本指南介绍了内存系统资源分区和监控 (MPAM)。MPAM 是 Arm 架构的一个可选附加功能,用于支持内存系统分区。

内存系统资源分区和监控 (MPAM) 软件指南

本指南介绍了内存系统资源分区和监控 (MPAM) 中的固件和软件。

内存系统资源分区和监控 (MPAM) 硬件指南

本指南涵盖了 MPAM 系统的系统级设计考虑因素,并介绍了 Arm MPAM IP 中的管理接口。

RAS

可靠性、可用性和可维护性 (RAS) 概述

本指南介绍了强大可靠的计算机系统应具备的三个关键属性:可靠性、可用性和可维护性 (RAS)。

RAS 软件指南

本指南概述了 A 系列架构的 RAS 扩展和 RAS 系统架构的软件模型。

RAS 硬件指南

本指南简要概述了 Arm A 系列架构的 RAS 扩展和 Arm RAS 系统架构的硬件实现方式,重点介绍了用于检测、报告硬件故障和从硬件故障恢复的相关机制。

软件开发

构建您的第一个嵌入式映像

本指南介绍了如何创建嵌入式映像,包括编译程序、指定内存映射、使用模型运行映像。

启动:裸机

我们正在编写一份新指南。在编撰完成之前,您可先阅读应用笔记:Armv8-A 处理器的裸机启动代码。

使用 DOT 指令加速 DSP 功能

本博客介绍 Armv8.4-A 点积指令的三个用例,并展示如何使用这些指令来提高 VP9 的 libvpx 实现方案性能。

手册

Arm 还提供了有关 Arm 架构和 CPU 主题的书籍,可通过以下链接进行注册并下载。