Arm架构是如何开发的

描述

作者:Arm 架构与技术部产品管理总监 Martin Weidmann

随着人工智能 (AI) 的兴起和安全威胁的加剧,计算需求不断提高。全球各种设备所依赖的基础计算架构也必须持续向前推进。为此,我们的工程团队不断地在应用广泛的 Arm 架构中加入新的功能和技术,同时我们的软件团队也在努力让软件能够顺利地适配这些未来的功能和技术。 

Arm 架构是如何开发的

Arm 每年都会发布 Arm 指令集架构 (ISA) 的更新,这些更新是通过与 Arm 生态系统中的各类合作伙伴合作参与创建的。该流程涉及芯片合作伙伴、操作系统供应商、OEM 厂商,以及 Arm 内部的工程团队和多家标准组织。

经过精心设计的 ISA 可确保软件在未来数年内持续兼容新旧硬件。Arm 与 Linaro 等众多合作伙伴紧密协作,让诸如 Linux 内核和发行版等广泛使用的软件上游社区能支持 Arm ISA,以便建立庞大的开发者生态系统。

每年九月,我们都会发表一篇技术博客,分享该年度对 A-Profile 架构所作的一些重要增添。同时,我们也会在 Arm 开发者网站上发布完整的指令集和系统寄存器文档[1]。

完整的 Arm 架构参考手册[2] (Arm Architecture Reference Manual, Arm ARM) 也会每年更新一次。预计 2024 年初会发布包含 2023 年扩展内容的更新版。“学习架构 (Learn the Architecture)”[3]页面同样会在 2023 年和 2024 年更新。

技术博客和文档的发布只是部署新架构的一小步。接下来我们还要同生态合作伙伴一起努力,确保一旦硬件准备就绪,开源软件就能即刻支持新的架构功能。

2023 年,Arm 推出新特性以加强对人工智能 (AI)、机器学习 (ML) 和安全性的支持。Arm 架构的首要任务之一是让安全的 AI 无处不在,而神经网络 (NN) 的训练是 AI 不断进步和发展的关键。因此,2023 年的架构扩展增加了已在神经网络中广泛使用的新八位浮点格式,名为 FP8。为了提高安全性,我们还增加了“经检查的指令运算 (Checked Pointer Arithmetic)”功能,该功能基于 Arm 内存标记扩展 (MTE)[4] 的现有支持而打造,可以帮助开发者快速发现内存安全违规,节省应用开发的成本和时间。

以下为今年新增的功能:

FP8

2022 年,Arm、Intel 和 Nvidia 宣布针对 FP8 展开合作。FP8 是一种交换格式,可以让软件生态系统轻松共享神经网络模型,并让 AI 计算能力不断提高。作为 2023 年扩展的一部分,SME2、SVE2 和 Advanced SIMD (Neon) 增加了对 FP8 的支持。

FP8 支持两种数据格式:E5M2 和 E4M3。这两种格式在精度和范围上有不同的取舍。

ARM架构

使用哪种格式由 FPMR 寄存器中的字段选择。对于一条指令的不同输入,可以选择不同的格式,从而有效地处理各种格式的数据集。我们坚信,围绕八位浮点格式的行业共创将带来一系列好处,同时可使开发者专注于真正重要的创新和差异化。我们非常高兴看到 FP8 将推动未来 AI 的发展。

热迁移

热迁移是指将虚拟机 (VM) 从一台主机移动到另一台主机上,而不影响其可用性和状态。能够高效地进行热迁移对于大规模数据中心管理而言非常重要。

为了实现热迁移,虚拟机管理程序要在 VM 仍在旧主机上运行时,就把它所占用的页面复制到新主机上。这个过程通常要反复进行几次,因为 VM 可能会修改已经复制的页面。解决这个问题有不同的方法,但都要面对三项挑战:

记录:记录 VM 修改过(污染过)的页面。

调查:根据记录判断哪些页面需要重新复制。

清理:每次迭代时重置记录机制。

2023 年的扩展增加了几项功能,可以帮助优化上述的三项挑战。

FEAT_HDBSS 让我们可以记录日志,记录 Stage 2 已被污染的页面或块。该机制解决了“记录”成本问题,因为内存管理单元 (MMU) 可以在不中断 VM 执行的情况下高效创建日志。日志也解决了“调查”成本问题,因为生成的数据是虚拟机管理程序可以有效使用的格式。

ARM架构

为了解决“清理”成本问题,FEAT_HACDBS 增加了一个加速器来清理 Stage 2 转换表中的污染状态。引擎利用污染页面日志来定位需要更新的 Stage 2 转换表描述符。

这些功能结合起来可以大幅提高热迁移的性能和效率。

经检查的指令运算

AArch64 支持多项功能,这些功能让我们可以重新利用保存地址的寄存器高位。例如,Armv8.0-A 中引入的标记指针 (Tagged Pointer) 和 Armv8.5-A 中引入的 MTE。

软件经常需要操作指针,比如给一个基地址加上一个偏移量。这通常是用加法或减法等常规算术运算来完成的。如果地址计算出现溢出,就可能会破坏寄存器中非地址位的信息。例如,如果使用 MTE,地址操作则可能会改变指针中存储的标记。损坏的标记可能会导致处理器无法检测到内存安全违规,如下所示:

ARM架构

2023 年的扩展引入了专门用于指针操作的新指令。这些指令包含多种针对指针的检查,包括检查 bits[63:56] 是否被修改并防止溢出。使用 寻址模式的内存加载和存储指令也可以配置为保留 bits[63:56]。

以前面的 MTE 为例,新功能让处理器能够检测指针的前八位是否已被修改。这意味着,如果 MTE 标记损坏,则会向软件发出报告。

其他功能

其他新引入的增强功能包括: 

当生成或检查指针验证 (PAC) 码时,支持组合使用程序计数器 (Program Counter, PC) 和当前选择的堆栈指针 (Stack Pointer, SP) 作为修饰符。

支持启用了机密领域管理扩展 (RME)[5] 的设计,可以在 Granule Protection Tables 中支持 non-secure only,也可以禁用某些物理地址空间 (PAS)。

EL3 配置写入陷阱。

断点支持地址范围和 mismatch 触发,而无需链接。

支持将 SError 从 EL3 高效委派给 EL2 或 EL1 处理。

在接下来的几个月,Arm 将与合作伙伴一起努力,确保软件生态系统能够在未来处理器上市后尽快利用发挥这些功能的优势。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分