利用AmpereOne设计创新赋能开发者并推动AI应用
Dave Neary
发表于AI专栏·2025年7月30日
Ampere路线图经过精心设计,以满足数据中心和云计算环境不断演进的需求,特别是在AI推理应用几乎遍布所有领域的背景下。
我们的云原生处理器提供了性能、可扩展性和能效的完美结合,使其成为现代工作负载的理想选择。在2024年度路线图视频中,我们展示了超越192核和8通道内存的产品计划,随后在7月向媒体透露了更多路线图细节,并分享了AmpereOne的各种架构特性。
然而对软件开发人员而言,CPU创新有时显得抽象且与自身工作直接关联度不高。本文旨在揭示这些硬件级特性如何直接关系到云原生应用开发者和运维人员的工作。
让我们深入探讨AmpereOne处理器的架构创新如何呈现给用户空间的开发者,以及对新老开发者的实际意义。
内存标记
内存标记扩展(MTE)是Arm架构特性,现已在AmpereOne CPU上可用。该功能通过硅硬件实现,作为检测两类内存安全违规的防御机制。
Arm64内存标记的优势
内存标记通过以下方式提升内存安全性和可靠性:
- 缓冲区溢出:识别并阻止越界内存访问
- 释放后使用(UAF):检测程序尝试访问已释放内存块的行为,减少安全漏洞
- 内存损坏缺陷:在开发周期早期捕获隐蔽问题,提高软件稳定性
- 调试效率:提供硬件级标记,相比实现类似功能的软件工具性能开销更低
通过对内存区域进行标记并强制指针符合这些标记,MTE使开发者能够更有效地识别和解决缺陷,帮助构建更健壮的应用程序。
利用内存标记
内存标记是硬件功能,需要操作系统和系统C库支持该功能并向用户应用程序暴露接口。如果系统C库实现(如glibc)支持内存标记,可按以下方式启用:
确保硬件和内核支持
- 需要AmpereOne CPU或其他支持Armv8.5-A及更高版本的CPU
- 需要编译时启用内存标记支持的Linux内核(CONFIG_ARM64_MTE)
- 可通过检查/proc/cpuinfo中的MTE支持和内核配置来验证
- 某些Linux发行版(包括Fedora 39及以上版本)默认提供内存标记支持
在glibc中启用内存标记
- GNU C库(glibc)从2.38版本开始支持内存标记
- 使用可调参数启用:
export GLIBC_TUNABLES=glibc.mem.tagging=3
- 该设置适用于通过malloc及相关函数分配的内存
- 未经授权的内存访问将导致程序停止并报错
调试和测试
- 启用内存标记的运行环境可作为开发期间识别内存访问违规的有效工具
- 可使用gdb等调试工具在运行时检查内存标记
生产环境运行(可选)
- 内存标记可在生产环境中用于检测和缓解内存安全问题,且性能开销较小
实际应用场景
最终用户和开发者可利用内存标记实现:
- 通过主动捕获内存错误构建更安全的应用程序
- 在增强内存安全性的前提下运行大规模部署
- 以更低运行时开销补充其他内存安全工具
内存标记扩展对内存安全和调试效率至关重要的应用开发和部署领域具有革命性意义,潜在应用领域包括汽车、医疗、电信等行业。
系统级缓存的服务质量保障
系统级缓存(SLC)是比L2缓存延迟高但比系统RAM延迟低的统一缓存池。服务质量保障(QoS Enforcement,也称为内存分区和访问管理)允许系统用户声明特定租户只能访问限定数量的SLC。
使用此功能可帮助应用运维人员和系统管理员管理不同进程和应用程序的内存访问方式,提供对内存分区和隔离的细粒度控制。
Arm64 QoS保障的优势
- 安全性:通过提供内存访问分区能力,帮助缓解旁道攻击或恶意应用程序尝试访问其他进程内存的风险
- 资源管理:提供细粒度内存访问管理和跟踪工具,可确保关键应用始终获得所需资源
- 多租户系统:在云计算和多租户环境中特别有用,可强制实施不同虚拟机间的内存访问边界
- 大规模系统支持:通过实现更有效的内存管理增强系统可扩展性
利用内存分区实现QoS保障
确保硬件和内核支持
- Linux内核需编译支持MPAM Arm特性(CONFIG_ARM_MPAM)
- 该特性在Linux内核5.12及以上版本可用
- 运行
grep CONFIG_ARM_MPAM /boot/config-$(uname -r)
检查支持情况
在内核中启用内存分区
- 挂载resctrl虚拟文件系统:
mount -t resctrl resctrl /sys/fs/resctrl
- 在/sys/fs/resctrl中创建资源组目录
- 通过配置资源组目录中的策略文件实现资源控制
- 可为核心设置SLC带宽分配策略(如为延迟敏感应用分配75%带宽)
实际应用场景
带内存分区的QoS保障对云运营商、虚拟化技术以及构建高性能内存密集型应用的开发者大有裨益,使服务提供商能够提供更好的性能保证,运维人员能够更有效地管理资源。
嵌套虚拟化
嵌套虚拟化允许在hypervisor下运行的虚拟机充当其他虚拟机的主机。AmpereOne支持硬件特性FEAT_NV2(包含在ARMv8.4-A及更高版本中),可实现网络虚拟化,在Ampere基础设施上运行高级工作负载。
Arm64嵌套虚拟化的优势
- 云平台赋能:使云服务提供商能够为客户提供在VM中运行hypervisor的能力
- 测试效率提升:开发者和测试人员可在嵌套环境中验证软件,无需直接访问物理硬件
- 隔离和安全性:通过在深度嵌套的隔离环境中运行应用提升安全性
- 应用沙箱:使使用不同操作系统的应用能在同一云环境中以最小交互和攻击面运行
Linux软件支持现状
Ampere工程师正与生态伙伴合作确保嵌套虚拟化功能尽快向所有客户提供。Linux内核对该功能的支持尚不完整,但完善支持的补丁正在开发中。一旦Linux内核和QEMU完成上游支持,未来Linux发行版将自动包含该功能的软件支持。
实际应用场景
- 托管Kubernetes集群中的VM管理
- 云端操作系统功能测试
- 容器工作负载安全性提升(如FirecrackerVM)
- 基于云的嵌入式应用开发
AmpereOne的创新设计建立在Ampere Altra处理器家族的成功基础之上。本文描述的新特性共同赋能开发者在Arm64平台上构建更安全、高效和可扩展的应用程序,充分利用硬件能力的最新进展。
随着这些技术的成熟,它们将进一步增强各行业应用的开发和部署。特别是在AI计算时代,为开发者提供顶级工具是推动AI应用和数据中心现代化的关键。