AmpereOne处理器的设计创新对开发人员有何影响

描述

Ampere 路线图经过精心设计,以满足数据中心和云计算环境不断变化的需求,尤其是随着 AI 推理应用程序在几乎每个领域的增长。Ampere 云原生处理器将性能、可扩展性和能效完美结合,是现代工作负载的理想之选。在 Ampere 2024 年度路线图更新视频中,我们展示了超过 192 个内核和 8 个内存通道的产品计划,并在 7 月下旬向媒体透露了更多路线图相关的信息,以及 AmpereOne 的各种架构细节。

然而,对于软件开发人员来说,CPU 的创新有时会让人感觉很抽象,与他们没有直接的关系。在本文中,我们想分享这些硬件级功能如何与云原生应用程序的开发人员和运营商直接相关。让我们探讨一下 AmpereOne 处理器的一些架构创新是如何向用户空间的开发人员展示的,以及这对新开发人员和经验丰富的开发人员有何影响。

内存标记

内存标记扩展(MTE)是 一项 Arm 架构功能,现可在 AmpereOne CPU 上使用。它在芯片硬件中实现,作为一种防御机制来检测两种类型的内存安全入侵。

Arm64 上内存标记的好处

内存标记旨在通过帮助检测和缓解内存错误来提高内存安全性和可靠性,例如:

•缓冲区溢出:识别并阻止越界内存访问。

•释放后使用 (UAF):检测程序何时尝试访问已释放的内存块,从而减少安全漏洞。

•内存损坏错误:有助于在开发周期的早期发现细微问题,从而提高软件稳定性。

•调试效率:提供硬件级标记,与执行类似功能的基于软件的工具相比,可以减少性能开销。

利用内存标记

内存标记是一项硬件功能,它要求系统和系统 C 库支持此功能并将其开放给用户应用程序。如果您的 system C 库实现(例如 glibc)支持内存标记,则可以按如下方式启用:

确保硬件和内核支持

• 内存标记需要 AmpereOne CPU 或其他支持 Armv8.5-A 或更高版本的 CPU,以及使用内存标记支持 (CONFIG_ARM64_MTE) 编译的 Linux 内核。

• 您可以通过检查 /proc/cpuinfo 中的MTE支持和内核配置来检查您的Linux内核是否已经支持内存标记。

• 默认情况下,内存标记在某些 Linux 发行版(包括 Fedora 39 或更高版本)中可用。

在 glibc 中启用内存标记

• 除了内核支持之外,您的内存分配库 (通常是系统 C 库) 还应支持在分配时进行内存标记。2.38 版引入了对 GNU C 库 (glibc) 中内存标记的支持,包含在最近 Linux 发行的版本中,包括 Fedora 39 及更高版本,以及 Ubuntu 24.04 及更高版本。

• 使用 glibc.mem.tagging 可调参数启用内存标记 – 默认情况下处于禁用状态:export GLIBC_TUNABLES=glibc.mem.tagging=3 启用对所有支持的内存标签检查的支持。

• 这会将标记应用于通过 malloc 和相关函数分配的内存。没有适当标记的未授权内存访问将导致程序停止,并显示未经授权的内存访问错误。

调试和测试

• 在启用内存标记的情况下运行应用程序可能是在开发过程中识别内存访问冲突的有用工具。

• 您可以在运行时使用 gdb 等调试工具检查内存标签。

在生产环境中运行(可选)

• 内存标记可用于生产中,以检测和缓解内存安全问题,而且不会对性能造成重大影响,但用例将取决于应用程序要求。

实际用例

最终用户和开发人员可以利用内存标记来:

• 通过主动捕获内存错误来构建更安全的应用程序。

• 运行具有增强内存安全性的大规模部署。

• 以较低的运行时间开销补充其他内存安全工具。

内存标记扩展对于内存安全和调试效率至关重要的应用程序开发和部署来说,它改变了游戏规则。潜在的应用领域包括汽车、医疗、电信等领域。

系统级缓存的服务质量实施

系统级缓存 (SLC) 是单个缓存内存池,其延迟高于 L2 缓存,但低于系统 RAM 的延迟。服务质量实施(QoS 实施,也称为内存分区和访问管理)允许系统用户声明特定租户只能访问该 SLC 的上限数量。

使用此功能可帮助应用程序作员和系统管理员管理不同进程和应用程序访问内存的方式,从而提供对内存分区和隔离的精细控制。

在 Arm64 上强制实施 QoS 的好处

•安全性:通过提供对内存访问进行分区的功能,内存分区有助于降低侧信道攻击或试图访问其他进程内存的恶意应用程序带来的风险。这提高了运行不受信任或各种工作负载的系统的整体安全性,因为每个应用程序的内存都可以与其他应用程序的内存安全隔离。

•资源管理:内存分区提供了用于在粒度级别管理和跟踪内存访问的工具。操作员可以针对系统的不同部分如何访问内存设置策略,确保关键应用程序始终能够访问所需的资源,同时限制较低优先级任务的内存使用。

•多租户系统:在云计算和多租户环境中,QoS 实施特别有用。它使操作员能够在不同的虚拟机(VM) 或容器之间实施内存访问边界,从而提高整体系统稳定性并防止一个租户的进程影响其他租户的进程,这在共享资源环境中至关重要。

•支持大规模系统:内存分区通过实现更有效的内存管理来增强系统的可扩展性,尤其是在具有复杂工作负载的大型系统中。开发人员可以通过了解和控制其程序与内存的交互方式来创建更高效的应用程序,这可以在数据库或AI 推理等高要求系统中实现更好的性能。

利用内存分区实施QoS

确保硬件和内核支持

• 要在 Linux 上使用内存分区和 SLC 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 中拥有一个顶级资源组,并且可以通过在此文件夹中创建其他目录来创建其他资源组。

• 创建自定义资源组后,此目录中将填充文件,您可以使用这些文件来配置要应用于此资源组的资源策略约束。

• cpus 文件包含哪些 CPU 内核属于此资源组的位掩码,而 schemata 文件定义应用于此资源组的策略控制。例如,您可以确保专用于延迟敏感型应用程序的核心获得 75% 的 SLC 的 100% 带宽,并限制其他资源组共享剩余的 25%。

实际用例

通过内存分区实施 QoS 对于云运营商、虚拟化技术和构建高性能、内存密集型应用程序的开发人员来说是有益的。它使服务提供商能够提供更好的性能保证,并使运营商能够更有效地管理资源,尤其是在多个应用程序共享同一底层硬件的情况下。

嵌套虚拟化

嵌套虚拟化允许在虚拟机管理程序下运行的虚拟机 (VM) 充当其他 VM 的主机。借助 AmpereOne,Ampere CPU 现在支持 FEAT_NV2 硬件功能(包含在 ARMv8.4-A 及更高版本中),允许网络虚拟化,在 Ampere 基础设施上实现高级工作负载。这在多种情况下特别有用。

Arm64 上嵌套虚拟化的好处

• 云平台支持:嵌套虚拟化使云服务提供商能够为其客户提供在 VM 中运行虚拟机管理程序的能力。客户可以部署自定义虚拟机管理程序或进一步虚拟化其工作负载,以提高灵活性。

• 提高测试效率:需要作系统内核的应用程序的开发人员和测试人员,包括 Hypervisor 和内核开发人员,或 eBPF 相关项目的开发人员,可以在嵌套环境中验证他们的软件,而无需直接访问物理硬件,从而降低资源成本。

• 隔离和安全性:嵌套虚拟化允许应用程序在隔离的深度嵌套环境中运行,从而提高安全性。这在机密计算或需要通过 microVM 隔离工作负载的场景中非常有用。

• 应用程序沙箱:在 VM 中运行复杂应用程序,使使用不同作系统的应用程序能够在同一云环境中一起运行,同时最大限度地减少交互和攻击面。

Linux 中软件支持的可用性

与所有新的硬件功能一样,该功能在硬件中的可用性与其在软件中的支持需要一定的时间来实现。Ampere 工程师正在与生态系统合作伙伴合作,以确保所有客户都能尽快使用 Ampere CPU 上的嵌套虚拟化。Linux 内核中对嵌套虚拟化的当前支持状态尚不完整,但正在开发补丁以完成对该功能的支持。

一旦 Linux 内核和 QEMU 在上游完全支持该功能,Linux 发行版的未来版本将自动包含对此功能的软件支持。

实际用例

Ampere CPU 上的嵌套虚拟化在各行各业具有各种实际应用,特别是随着 Ampere 和其他 ARM CPU 在云、边缘和高性能计算环境中越来越重要。

•管理托管 Kubernetes 集群中的 VM:云服务提供商客户除了使用容器应用程序外,还可以使用托管的 Kubernetes 服务来管理其基于 VM 的应用程序。

•在云中测试操作系统功能:虚拟机管理程序、操作系统内核和 eBPF 相关项目的开发人员和测试人员可以在嵌套环境中验证其软件,而无需直接访问物理硬件,从而降低资源成本。- 提高容器工作负载的安全性:FirecrackerVM 等 MicroVM 使容器工作负载能够减少与多租户云环境中的其他租户共享的资源,从而提供更高级别的安全性。

•基于云的嵌入式应用程序开发:嵌套虚拟化使基于 ARM 的嵌入式应用程序(如汽车软件)的开发人员能够使用云基础设施软件运行和测试其软件,并在 VM 中运行自定义作系统。

AmpereOne 的创新设计建立在 Ampere Altra 系列处理器的成功之上。我们在此处介绍的新功能共同使开发人员能够利用硬件功能的最新进展在 Arm64 上构建更安全、更高效和可扩展的应用程序。随着这些技术的成熟,它们将进一步增强各行各业应用程序的开发和部署。特别是在 AI 计算时代,为开发人员提供一流的工具是推动 AI 采用和数据中心现代化的关键。

关于 Ampere Computing

Ampere Computing 是一家现代化半导体企业,致力于塑造云计算的未来,并推出了世界上首款云原生处理器。为可持续云而生,Ampere 云原生处理器兼具最高性能和最佳每瓦性能,助力加速多种云计算应用的交付,为云提供行业领先的性能、能效和可扩展性。

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

全部0条评论

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

×
20
完善资料,
赚取积分