《考察报告》连载七|从v8到v9,Arm服务器10年路

ARM:3A大作

将 CPU 的设计与制造相分离的代工模式,给 AMD 提供了高度的灵活性。第二、三代 EPYC 处理器可以相对自由的选择不同的制程来匹配芯片设计的具体需求,客观上起到了帮助 AMD“以小博大”,从英特尔手中持续抢下市场份额的作用。

不过,这个灵活性的获益者更多在于 AMD 自身。超大规模用户如 AWS 和阿里云不满足于主要调整核心数、运行频率和 TDP 等指标的传统定制,希望对 CPU 设计有更多的自主权;又或者,新兴 CPU 供应商如 Ampere(安晟培)要选择适用的技术路线……Arm 几乎是服务器 CPU 市场上唯一的答案。

如果说台积电帮助解决 CPU 的制造问题,那么 Arm 帮助解决 CPU 的设计问题。

Cortex 孵化 Neoverse

对亚马逊(Annapurna Labs)、阿里巴巴(平头哥)和 Ampere 这有足够芯片设计能力的“3A”客户来说,Arm 的 Neoverse 平台提供了设计一款服务器 CPU 的基础,包括 CPU 核心的微架构和配套的制程。

Arm 对服务器 CPU 市场的正面进攻可以回溯到 2011 年 10 月,Arm 发布加入可选 64 位架构(AArch64)的 ARMv8-A。一年后,Arm 发布实现 ARMv8-A 64 位指令集的微架构 Cortex-A53 和 Cortex-A57,AMD 表态将推出相应的服务器产品——后者多年的服务器市场经验正是当时的 Arm 阵营所稀缺的。

此后的几年中,芯片供应商如 Cavium、高通(Qualcomm)和国内的华芯通,超大规模用户如微软,都曾积极的推动 64 位 Arm 进入数据中心市场。但是,真正比较成规模化的部署,应当始自 2018 年 11 月 AWS 预览其首个 Arm 服务器 CPU —— Graviton。

Graviton 基于 2015 年推出的 Cortex-A72(A57 的继任者),16nm 制程,16 核、16 线程, 与同时期的 x86 服务器 CPU 比起来,颇有些‘“平平无奇”,最大的仰仗是亚马逊“自家的孩子”,可以充分优化。

Cortex-A 家族已经是 Cortex 三兄弟里最追求性能的了,但毕竟不是面向服务器平台的产品,不能放宽功耗限制去飙性能。于是,在Graviton 公开之前一个月,Arm 发布了面向云计算和边缘基础设施的 Neoverse 平台,起点便是 16nm 的 A72 和 A75,代号 Cosmos。

△ Neoverse可伸缩计算平台

仅仅 4 个月之后,2019 年 2 月,Arm 更新了 Neoverse 平台的路线图,推出 7nm 的 Neoverse N1,性能比之前的目标又有 30% 以上的提升。

代号 Ares 的 Neoverse N1,基础是 2018 年推出的 Cortex-A76,两者的流水线结构相同, 均为 11 级短流水线设计,前端都是 4 宽的读 取 / 解码器。Arm 将其称为“手风琴”管道,因为根据指令长度不 同,它可以在延迟敏感的情况下将第二预测阶段与第一获取阶段重 叠,将调度阶段与第一发布阶段重叠,将流水线长度减少到 9 级。L2 Cache 也新增可选的 1MiB 容量,是 A76 的 2 倍。

△ 4 vCPU 配置,Neoverse N1 相对 Cortex-A72的整数性能提升

相较于上一代的 A72 平台,Neoverse N1 平台带来了显著的性能提升, 许多项目的成绩翻倍,尤其是在标志性的机器学习项目中,成绩接 近上一代产品的 5 倍。虽然 A72 的年头早了点儿,但这样的性能差 距也说明 Neoverse N1 确实有了质的飞跃。

Graviton2 与 Altra 系列

Neoverse N1 平台带给数据中心市场的冲击很大,因为所有人都看 到了它的巨大潜力和价值,以及这背后的机会。如果说之前的 A72 还只是在数据中心市场崭露头角的话,那么 Neoverse N1 则让更多 人相信 Arm 有能力在这个领域分一杯羹。

两款分别来自云服务商和独立 CPU 供应商的 7nm CPU,都基于 Neoverse N1。

2019 年 11 月,AWS 官宣 Graviton2 处理器:

  • 核数暴涨至 64,是一代的 4 倍;
  • 晶体管数更有 6 倍,达到 300 亿之多;
  • 64MiB L2 Cache,是一代的 8 倍;
  • DDR4-3200 内存接口,(频率)是一代的 2 倍;
  • 运行频率 2.5GHz,略高于一代的 2.3GHz。

△ 2020 年 AWS 新增的 EC2 实例中, Gravtion2 占据半壁江山, Intel 和 AMD 的比例也耐人寻味

基于 Graviton2 的 EC2(Elastic Compute Cloud,弹 性 计 算 云)实 例类型迅速增多,包括但不限于通用型(M6g、T4g)、计算优化 型(C6g)、内存优化型(R6g、X2gd),部署的区域(Region)和数量也从 2020 年中起稳定增长——据统计,2020 年全年,AWS EC2 实例增量中的 49% 基于 AWS Graviton2。

2020 年 4 月,Ampere 更进一步,推出多达 80 核的 Ampere Altra 处 理 器。Altra 系列使用的核心代号为 Quicksilver,是基于 Arm Neoverse N1 修改的版本,支持 ARM v8.2+ 指令集,即在 ARM v8.2基础上,引入了来自 ARM v8.5 的 Meltdown 与 Spectre 漏洞的修复以及其他重要特性。

Ampere Altra 系列与 AWS Graviton2 都采用台积电的 7nm 制程,不仅核数更多,一致性最大主频也更高,可达 3.3GHz,所以最高 TDP 为 250 瓦,明显超出后者。Altra 系列共有 10 个型号(SKU),其中 4 款 80 核,4 款 64 核。

内存方面,Ampere Altra 系列与 AWS Graviton2 都支持 8 通道 DDR4-3200 内存,每插槽带宽的理论峰值为 204GB/s,最大内存容量可达 4TB。

作为一款面向通用市场的 CPU,Altra 系列更注重扩展能力,单 CPU 提供多达 128 个 PCIe 4.0(Gen4)通道,其中两条兼容 CCIX 协议的专用 PCIe Gen4 x16 链路可以 25GT/s 的速率与另一个 CPU 互连,实现双路配置,2 个 CPU 对外提供 192 个 PCIe 4.0 通道。

在 Altra 发布一年之后,国内的阿里云、UCloud(优刻得)、腾讯云,国外的 Oracle 云(Oracle Cloud Infrastructure,OCI),相继推出了采用 Ampere Altra 处理器的产品。2022 年 4 月初,微软宣布推出基于 Ampere Altra 处理器的 Dpsv5 和 Epsv5 系列 Azure 虚拟机(VM)预览版。至此,全球前两大和国内前两大的公有云,都提供了基于 Arm 的云主机(虚拟机、实例) ,其中 3 家是 Ampere 的用户。

在这些公有云中,除了 OCI 提供双路 160 核的配置,看起来都是单路方案,Ampere Altra 系列处理器中排第二顺位的 Q80-30(80 核,TDP 210W)最受欢迎,表现在云主机上为主频 2.8GHz、最大主频 3.0GHz,最多 64 核,典型如腾讯云 SR1 实例、UCloud 快杰 O 型 Ampere 版云主机。阿里云的通用型实例 g6r 和计算型实例 c6r 只列出 2.8GHz 主频,而 GPU 计算型弹性裸金属服务器实例 ebmgn6ia 为 2.8GHz 主频、最大频率 3.0GHz,80 核。

腾讯云公布了包括计算性能、加解密性能、AI 推理性能、Redis 数据库性能等测试的结果,所有项目中 Altra 系列均具备明显的优势,性能提升最多可达 3 倍,最少的 Java 电商场景下也有 20% 以上的性能改善。这足以证明 Altra 系列乃至于 Arm 平台在数据中心应用的能力,尤其是对在乎性价比的用户来说,可以花更少的投入获得更好的性能体验。

时至今日,Altra 系列依然是 Ampere 公司在数据中心市场的主打产品。

Armv9:继往开来

2011 年 11 月公布的 Armv8,将 Arm 带入了 64 位时代。在 Arm 与生态合作伙伴的共同努力下,经过数次产品迭代,Arm 阵营用了十年的时间,在服务器市场站稳了脚跟。

2021 年 3 月底,Armv9 发布,在 Armv8 的基础上,着重升级了安全性、 机器学习(Machine Learing,ML)和数字信号处理(Digital Signal Processing,DSP)方面的能力。

在新架构所带来的三大特性中,机器学习或许是大众最熟悉也是最关心的内容。伴随着异构应用的崛起,以机器学习为代表的人工智能(Artificial Intelligence,AI)技术已经深入我们生活的方方面面,无论是在后端的数据中心还是在终端、边缘侧,机器学习都大有用武之地。

为了更好地提升 AI 和 DSP 所需的算力,ARMv9 将原本支持的可伸缩矢量扩展(Scalable Vector Extension,SVE)升级到了 2.0 版本。这项技术可以改善机器学习和数字信号处理应用的性能表现,有助于对 5G 系统、VR/AR、机器学习等一系列工作负载的处理。

SVE2 提供了可调节的向量(Vector,矢量)大小,范围从 128b(bit, 位)到 2048b,从而允许向量的可变粒度为 128b,这种变化并不会受到硬件平台的影响。这就意味着,软件开发人员将只需要编译一次其代码,就可以适用于 Armv9 乃至于后续产品中,实现“编写一次,到处运行”。同样,相同的代码将能够在具有较低硬件执行宽度能力的更保守的设计上运行,这对于 Arm 设计从物联网、移动到数据 中心的 CPU 而言至关重要。

SVE2 扩展还增加了压缩和解压缩 CPU 核心内的代码和数据的能力,因为将数据移入和移出芯片的过程耗电很大,尽可能多使用芯片内的数据可以减少这种数据移动,从而降低能耗。

更值得一提的是 Confidential Compute Architecture(CCA),中文名称为机密计算架构,这也是 Arm 本次版本更新最重要的内容。其实安全问题近些年变得愈演愈烈,勒索病毒与黑客攻击无时无刻不在活动。面对层出不穷的网络攻击问题,既需要网络服务商、软件公司的努力,也需要包括 Arm 在内的硬件基础设施提供商从源头上封堵可能存在的漏洞,就促成了 CCA 的出现。这是一种基于架构层面的安全防护能力,通过打造基于硬件的安全运行环境来执行计算,保护部分代码和数据,免于被存取或修改,乃至不受特权软件的影响。

△ Arm 机密计算架构(左),Android 11 和 OpenSUSE 引入的内存标签扩展技术(右)

为此 CCA 引入了动态创建机密领域(Realms)的概念——这是一个安全的容器化执行环境,支持安全的数据操作,可将数据与 hypervisor 或操作系统隔离。Hypervisor 的管理功能由“领域管理器” (realms manager)承担,而 hypervisor 本身只负责调度和资源分配。使用“领域”的优势在于极大地减少了在设备上运行给定应用程序的信任链,操作系统在很大程度上对安全问题变得透明,也允许需要监督控制的关键任务应用程序能够在任何设备上运行。

在实际应用中,内存是非常容易被攻击的一环,内存安全也一直成为行业的关注点,如何在内存安全漏洞被利用之前就能发现问题,是提高全球软件安全的重要一步。为此,Arm 与 Google 持续合作开发的“内存标签扩展”(MTE)技术也成为 Armv9 的一个组成部分,可在软件中查找内存的空间和时间安全问题,将指向内存的指针和标签建立联系,并在使用指针时检查这个标签是否正确。如果存取超过范围,标签检查就会失败,从而可以在第一时间发现内存安全漏洞并进行封堵。

上一篇
下一篇