本文翻译自 Arm A-Profile Architecture Developments 2024
作者:Martin Weidmann
Arm CPU是当今AI赋能软件的关键,它解释,处理和执行指令。Arm指令集作为硬件和软件的接口,它指示处理做什么和怎么做。Arm指令持续进化以满足现代计算的需求,包括AI的兴起,机器学习和芯粒技术的使用,高级安全威胁。持续创新保证了arm的普及,普适性能,能效,安全和开发者灵活性。
为了确保开发工作与快速发展的市场保持一致,Arm 投入了大量时间审查未来的计算需求,并通过其庞大的、独一无二的生态系统确认其理解。在创建和发布更新的指令集架构 (ISA) 时,专业知识与反馈的结合确保了针对性。
这篇博文每年发布一次,概述了当年(2024 年为 Armv9.6-A)Arm A-Profile 架构的主要新增功能,并随附完整的指令集和系统寄存器文档。
发布新架构只是第一步。Arm 与众多合作伙伴密切合作,在 Linux 内核和发行版等使用最广泛的软件上游社区中启用 Arm ISA,为全球最广泛的开发人员生态系统提供支持。
让我们来看看我们今年新增的一些功能。
利用structured sparsity(结构化稀疏) 和quarter tile (四分块) 操作提高SME效率
矩阵运算用于加权特征和计算预测值。它们是当今许多重要工作负载(包括人工智能和机器学习 (ML))的基础。
Armv9-A 中的可扩展矩阵扩展(SME)大大提高了 Arm CPU 上矩阵乘法的处理速度和效率。有了 SME,可以同时对多个值进行计算,数据整理和重用的效率更高,而且支持更多的数据类型和更有效的数据压缩。
SME 还使用量化技术,降低了 ML 模型的计算复杂度。这降低了对内存的需求,节省了能耗,并使模型适用于移动设备。SME2 在量化方面又向前迈进了一步,它为任何需要在CPU 上运行以吞吐量为导向的操作的应用引入了Streaming模式。
2024 扩展以 SME2 为基础,新增了对 2:4 结构稀疏性和四分块操作的支持。
从四分块操作开始,这些操作旨在提高 SME 处理小矩阵时的效率。现有的 SME 运算支持外积运算,使用一对输入向量来计算结果矩阵:
为了更好地支持较小的矩阵,四分运算允许将输入视为来自 4 个不同的矩阵:
2024 扩展带来的另一项改进与稀疏性有关。在下面的示例中,一个包含激活数据的输入矩阵与另一个包含权重的矩阵相乘。权重矩阵中的一些元素是未使用的(零),不会影响输出。
这带来了两个效率低下的问题:
- 获取不需要的数据;以及
- 执行不改变结果的乘法累加。
新的结构化稀疏性指令可以解决这两个问题。
在前面的例子中,权重可以用元数据标签进行压缩,它描述如何解压缩数据。
这种方法的优点是既能优化权重的内存占用,又能优化获取权重进行处理所需的带宽。权重可以在处理器中解压缩,然后用于计算。不过,为了避免不必要的多重累积,新指令允许将压缩数据直接用作输入。
利用 MPAM domain支持芯粒和多芯片 SoC 上的共享内存系统
芯粒具有更高的系统可组合性和性能扩展性,因此对人工智能和加速计算具有吸引力。要想大规模采用,芯粒必须具有互操作性。互操作性通过芯粒接口和协议的标准化来实现。
Arm 正在通过旨在提供通用语言和降低碎片化风险的标准,加速生态系统向基于芯粒的 SoC 演进。Arm 的芯粒系统架构 (Arm’s Chiplet System Architecture, CSA)将基于 Arm 的系统划分为多个芯粒,包括其高级属性,以定义可标准化和重复使用的芯粒类型。AMBA CHI C2C 利用了现有的片上AMBA CHI协议,并定义了其打包方式,使其能够在芯粒间传输。
这些举措将加速向提供专用和可互操作芯粒的多供应商市场发展。开放的芯粒市场将使OEM能够享受更高水平的定制和集成,而无需承担开发和制造单芯片设计所带来的成本。目前,芯粒的优势是通过垂直集成设计实现的。Armv9-A 的 2024 扩展考虑了这种新的芯片方法以及如何在它们之间管理资源。
当今的许多计算需求都是通过共享内存计算机系统来满足的,在这些系统中,多个应用程序或多个虚拟机(VM)同时运行。为支持此类系统,Armv8.4-A 引入了内存系统资源分区和使用监控(memory-system resource partitioning and usage monitoring, MPAM)扩展。MPAM 提供了对共享资源的使用进行监控和分区的控制。
MPAM 使用分区编号 (PARTID) 来识别每次内存访问与哪个软件实体相关联。该 PARTID 与内存访问一起传输,以便下游内存系统组件 (MSC) 实施分区策略。
2024 年增加了 MPAM Domain,以更好地支持多芯片和多芯片系统上的共享内存计算机系统。MPAM Domain允许系统的不同部分使用不同的 PARTID 命名空间,并在访问跨越域边界时进行 PARTID 转换。
不要求整个系统具有统一的 PARTID 宽度,可使系统更容易组成。MPAM domain还有助于降低成本,因为系统的每个部分都可以只支持所需数量的 PARTID。
虚拟机上用于Trace和Statistical Profiling的Hypervisor内存控制
Armv9-A 的Trace(ETE 和 TRBE)和Statistical Profiling(SPE)扩展为开发人员提供了了解软件性能所需的信息,使开发人员能够最大限度地利用硬件平台。
Trace和 SPE 数据可以在系统运行时以非侵入方式收集,数据写入虚拟内存中软件分配的缓冲区。运行虚拟机时,重要的是这些缓冲区的内存页不能被hypervisor换出去,否则会丢失Profiling数据。同时,通常也不希望hyperviso将虚拟机的所有内存都pin进来。
2024 扩展为 TRBE 和 SPE 引入了虚拟机接口。这些接口允许虚拟机和hypervisor就Profiling缓冲区的大小和位置达成一致。这确保让虚拟机Profiling数据不会丢失,同时允许hypervisor控制虚拟机内存中需要Pin的内存大小。
改进缓存(cache)和数据放置
2024 的 A-profile 扩展引入了两项增强功能,以提高缓存效率。
第一个功能是生产者-消费者数据放置提示。新的写提示指令允许生产线程向处理器提示写或原子操作的数据将被不同的线程使用。而对于消费线程,则有一条新的预取指令,提示数据是由另一个线程生成的,可能还不存在。这些提示共同显著提高了并行软件的可扩展性,增强了消息传递、锁传递和线程barrier的性能。
例如:
系统可能包括连接到不同高速缓存层次结构(Cache)级别的设备或加速器。例如,在下面的系统中,设备 A 可以访问系统级高速缓存 (SLC),而设备 B 则绕过 SLC。
为了让设备 A 或设备 B 能够看到数据,CPU 上运行的软件需要将数据推送到内存系统中。当前,软件会使用缓存操作将数据推送到一致性点 (PoC),在示例系统中,一致性点位于 SLC 之外。这对设备 B 来说是正确的,但对设备 A 来说,将数据推送到 SLC 就足够了。
2024 扩展增加了针对outer cache的高速缓存维护操作。这为知道高速缓存拓扑结构的软件提供了更大的灵活性,使开发人员能够根据使用该数据的设备的需求,将数据推送到系统的合适位置。
利用Graular数据隔离构建机密计算(Confidential Compute)
Armv9-A 为开发人员提供了编程工具和环境,使他们能够在快速发展的人工智能市场中加快创新步伐。此类应用所使用的模型和数据尤为宝贵,因此安全性至关重要。Arm 的保密计算架构 (CCA)利用硬件和软件来保护使用中的数据和应用。
Armv9.1-A 引入了 “Realm Management Extension”(RME),在设备上创建了一个独立的计算世界,用于运行和保护应用程序和数据。使用Realm可以防止来自以更高权限级别运行的软件的攻击。Realm的内容或进程无法访问。数据在使用、传输和复位时均保持加密。Armv9.4-A 引入了一项更新,使Realm可以与加速器交互并保持其完整性。
Granular Data Isolation (粒度数据隔离,GDI) 建立在 Armv9-A 的 RME 基础之上。GDI 增加了 2 个新的物理地址空间 (PAS),可将内存位置分配到这些空间:
• 非安全保护 (Non-Secure Protected, NSP)
• 系统代理 (System Agent, SA)
这两个新的 PAS 与现有选项的不同之处在于,处理器无法访问它们。这样,软件就可以将内存缓冲区分配给其他设备,而硬件则维护这些缓冲区内数据的机密性。例如,可信加速器可以使用 NSP PAS 来处理数据,同时保证软件无法访问这些数据。
其他功能
作为 2024 扩展的一部分引入的其他增强功能包括
• 对 EL1 系统寄存器进行位锁定 (Bitwise Locking)。
• 针对大型内存系统改进了Granular Protect Tables(GPT) 的可伸缩性。
• 用于扩展/压缩和查找第一个/最后一个active元素的新 SVE 指令。
• 新增非特权读取和存储指令,使操作系统能与应用内存交互。
• 新的比较和分支指令
• 从 EL3 注入Undfined指令异常
即将推出: 下一代中断控制器
Generic Interrupt Controller(GIC)是 A-profile Arm 系统的标准解决方案,在整个 Arm 生态系统中被广泛使用。当前版本的 GICv3 和 GICv4 于 2013 年与 Armv8-A 一起推出。从那时起,系统的结构和运行工作负载都发生了变化。Arm 正在开发新版本的 GIC 架构,我们期待在 2025 年初分享预览版。
总结
本博文简要介绍了 Arm 架构中的最新功能 Armv9.6-A。更多详细信息请访问我们的开发人员网站 。
在接下来的几个月中,Arm 将与我们的合作伙伴合作,确保软件生态系统能够在未来处理器上市后尽快利用这些功能。
分享一张和Arm构架部门的构架师们一起的照片:)
由左至右分别为,Martin Weidmann (Director,Product Manager), Richard Grisenthwaite (EVP Chief Architect, Arm Fellow), Me(Senior Principal Applications Engineer), Nigel Stephens (Lead A-Profile Architect & Fellow), Alex Chadwick (Memory System Architect and Distinguished Engineer)