英伟达“另类”芯片,反击AMD
👆如果您希望可以时常见面,欢迎标星🌟收藏哦~
来源:内容来自半导体行业观察(ID:icbank)编译自chipsandcheese,谢谢。
Nvidia 和 AMD 是高性能 GPU 领域最大的参与者。尽管 Nvidia 在 GPU 市场份额上比 AMD 有巨大优势,但后者的 CPU 实力使其成为强大的竞争对手。AMD 可以将 CPU 和 GPU 作为一个单元出售,这种能力让该公司在游戏机和超级计算机领域取得了胜利。橡树岭国家实验室的 Frontier 超级计算机就是这样一个例子。在那里,AMD MI250X GPU 通过 Infinity Fabric 与定制的 EPYC 服务器 CPU 交互。
当然,Nvidia 并没有忽视这种情况。他们也有一个高速内部互连,称为 NVLink。Nvidia 还尝试将 CPU 与 GPU 捆绑在一起。任天堂 Switch 的 Tegra X1 就是一个突出的例子。但 Tegra 使用相对较小的 CPU 和 GPU 来瞄准低功耗移动应用程序。Grace Hopper 试图将 Nvidia 的 CPU 工作带入高性能领域。除了提供服务器级 CPU 核心数和内存带宽外,Grace Hopper 还配备了 Nvidia 的顶级 H100 数据中心 GPU。
我将研究 GH200。GH200 有几种变体。我正在研究的版本在 CPU 端有 480 GB 的 LPDDR5X 内存,在 GPU 端有 96 GB 的 HBM3。我已经在 Graviton 4 中介绍了 Neoverse V2,因此我将重点介绍实现差异,而不是再次讨论核心架构。
系统架构
GH200 将 CPU 和 GPU 捆绑在一起。Grace CPU 包含 72 个 Neoverse V2 内核,最高运行频率为 3.44 GHz,由 144 MB 的 L3 缓存支持。内核和 L3 缓存位于 Nvidia 的可扩展一致性结构 (SCF) 之上。SCF 是一种网格互连,内核和 L3 缓存切片连接到网格停止点。
SCF 的职责包括确保 ache 一致性和正确的内存排序。从核心到核心的延迟测试来看,这些要求都得到了满足,整个网格的延迟相当一致。延迟通常与使用 Arm 的 CMN-700 网格互连的 Graviton 4 相当。
DRAM 访问由 480 位 LPDDR5X-6400 设置处理,可提供 480 GB 的容量和 384 GB/s 的理论带宽。Graviton 4 选择 768 位 DDR5-5200 设置,可提供 500 GB/s 的理论带宽和 768 GB 的容量。Nvidia 可能押注 LPDDR5X 提供更低的功耗,因为 DRAM 功率占服务器功率预算的很大一部分。
GH200 的 H100 GPU 位于 Grace CPU 旁边。尽管两者都作为单个单元出售,但它不是集成的 GPU 设置,因为这两个芯片具有单独的内存池。选择不使用集成 GPU 是一个明智的决定,因为 CPU 和 GPU 具有不同的内存子系统要求。CPU 对内存延迟很敏感,需要大量的 DRAM 容量。GPU 需要高内存带宽,但对延迟不太敏感。在所有这些领域都表现出色的内存设置将非常昂贵。GH200 避免试图解决难题,其 H100 GPU 配备 96 GB 专用 HBM3 内存。这适用于 4 TB/s 的理论带宽,远远超过 LPDDR5X 设置可以提供的带宽。
从概念上讲,GH200 的设计类似于英特尔的 Kaby Lake CPU 和 AMD 的 Radeon RX Vega M 显卡。该设计还将 CPU 和 GPU 封装为一个单元。4 GB 的 HBM2 内存池为 GPU 提供了高内存带宽,而常规 DDR4 内存为 CPU 提供了高内存容量和低延迟。GH200 当然在 CPU 和 GPU 方面都以更大的规模实现了这一点。
但集成 GPU 设计也有好处,主要是可以加快 CPU 和 GPU 之间的通信速度。只要有足够的 VRAM 来处理相关游戏,游戏就不需要 CPU 和 GPU 之间有太多带宽。但计算应用程序不同,可能涉及 CPU 和 GPU 之间的频繁数据交换。因此,Nvidia 使用称为 NVLink C2C 的高带宽专有互连连接两个芯片。NVLink C2C 提供 900 GB/s 的跨芯片带宽,或每个方向 450 GB/s。这比 PCIe Gen 5 x16 链路快一个数量级。
除了更高的带宽外,NVLink C2C 还支持硬件一致性。CPU 可以访问 HBM3 内存,而无需先将其明确复制到 LPDDR5X,底层硬件可以确保正确的内存排序,而不会产生特殊障碍。Nvidia 对其 NVLink C2C 实现非常有信心,HBM3 内存作为 NUMA 节点直接暴露给 CPU 端。
通过 NVLink C2C 访问 HBM3 内存池,可提供与 AMD 当前一代 Zen 4 服务器(采用双插槽配置)相当的带宽。虽然与理论值相比略显不足,但性能表现不错。带宽仍然明显高于 AWS 在两个 Graviton 4 芯片之间实现的带宽,并显示了 Nvidia 专有互连的价值。Grace 本地 LPDDR5X 池的带宽也很稳定,与 AMD 的 Bergamo 的 DDR5-4800 相当。
然而,即使使用 2 MB 页面来最大限度地减少地址转换损失,延迟也非常低,接近 800 纳秒。与访问直接连接的 LPDDR5X 相比,延迟相差 592 纳秒,而 LPDDR5X 本身的延迟并不特别好。
部分原因无疑是因为 HBM 不是一项旨在提供良好延迟特性的技术。但从 H100 GPU 进行的测试显示 DRAM 延迟约为 300 纳秒,这表明 HBM3 延迟只是一个次要因素。因此,NVLink C2C 的延迟似乎比 AMD 的 Infinity Fabric 或 Graviton 4 使用的延迟要高得多。英特尔的 QPI 也提供了更好的延迟。
更糟糕的是,在延迟测试运行期间,系统变得没有响应。第一个麻烦的迹象出现在 vi(一个简单的文本编辑器)需要几秒钟才能加载时。即使是像 Cortex A73 SBC 这样的弱系统通常也会立即加载 vi。然后,系统停止响应通过 SSH 的所有击键。当我尝试建立另一个 SSH 会话时,它可能已经过了 TCP 握手阶段,因为它没有超时。但 shell 从未加载,系统仍然无法使用。我最终设法通过云提供商启动重新启动来恢复它,但这种行为并不理想。
由于 GH200 是独立 GPU,因此将链路延迟与其他独立 GPU 设置进行比较是很有意义的。在这里,我使用 Nemes 的 Vulkan 上行链路延迟测试,该测试用于vkMapMemory将一部分 GPU VRAM 映射到测试程序的地址空间中。然后使用指针追踪访问来测量延迟,就像上面一样。
这种比较更为合理,NVLink C2C 提供的延迟比一些独立 GPU 配置更好。它介于 AMD 的 RX 5700 XT 和 HD 7950 之间。考虑到这一点,延迟相当合理。然而,由于 HBM3 内存的延迟较高,CPU 代码需要小心不要将其简单地视为另一个 NUMA 节点。
Grace 的 Neoverse V2 实现
CPU 核心架构的性能可能因实现方式而异。例如,Zen 4 的表现会因服务器、台式机或移动 CPU 的不同而有很大差异。Neoverse V2 的情况也不例外,甚至可能存在更大差异,因为 Arm 希望为实现者提供尽可能多的灵活性。
Grace 的目标是并行计算应用。为此,Nvidia 选择了大型共享 L3 缓存和更高的时钟速度。工作负载中并行性较低的部分可以从灵活的提升策略中受益,在功率和热条件允许的情况下为各个线程提供更高的性能。当来自同一进程的线程共享数据时,大型 L3 可能会处理得更好。
另一方面,Graviton 4 必须为大量客户提供服务,同时保持一致的性能。Graviton 4 上的 Neoverse V2 核心具有更大的 L2,有助于减少嘈杂的邻居效应。低时钟速度可最大限度地减少依赖于工作负载的热量或功率节流,最后,更高的核心数量使亚马逊能够在单个服务器上容纳更多最小实例。延迟测试很好地显示了内存层次结构的差异。
周期延迟与 L2 相同,因为这是 Neoverse V2 核心设计的一部分。差异开始出现在 L3,并且以戏剧性的方式出现。大型网格互连往往会遭受高延迟,而高容量缓存也往往伴随着延迟成本。在 Grace 上,L3 加载到使用延迟超过 125 个周期。由于 L2 未命中成本如此之高,我更喜欢 2 MB 的 L2 缓存。Graviton 4 和英特尔的 Sapphire Rapids 都使用 2 MB 的 L2 缓存来抵消 L3 延迟。AMD 的 Zen 4 确实有 1 MB 的 L2,但 L2 未命中成本要低得多。
当访问 L1 或 L2 时,更高的时钟速度确实使 Grace 比 Graviton 4 更具优势。但 L3 延迟仍然高达 38 纳秒以上。即使是英特尔的 Sapphire Rapids也通过巨大的网格访问巨大的 L3,其表现也略好一些,L3 延迟为 33 纳秒。
L3 缓存未命中导致 Grace 的 LPDDR5X 控制器出现延迟。此时的延迟超过 200 纳秒。Graviton 4 的 DDR5 更佳,为 114.08 纳秒,与其他服务器 CPU 大致相同。
带宽
更高的时钟频率意味着更高的带宽,因此 Grace 中的 Neoverse V2 核心远远领先于 Graviton 4 中的同类核心。缓存带宽不如 AMD 高,这可能是一个劣势,因为 Nvidia 将 Grace 定位为高度并行工作负载的 CPU。此类工作负载很可能是矢量化的,而 Zen 4 针对这些情况进行了很好的优化。即使两者都从大型 L3 缓存中提取数据,Zen 4 核心也可以获得更多可用带宽。
值得称赞的是,Nvidia 的单个 Grace 核心可以从 L3 获取比 Graviton 4 核心更多的带宽。此测试使用预取器友好的线性访问模式。我怀疑 Grace 有一个非常积极的预取器,愿意将大量来自单个核心的未完成请求排队。单核带宽通常受延迟限制,即使核心的无序执行引擎达到其重新排序限制,L2 预取器也可以创建更多的飞行中请求。但即使是预取器也只能走这么远,无法应对 LPDDR5X 延迟。单核的 DRAM 带宽仅为 21 GB/s,而 Graviton 4 为 28 GB/s。
当所有内核都满载时,Grace 可以实现 10.7 TB/s 的 L1 带宽。L2 带宽约为 5 TB/s。这两个数字都低于 Graviton 4,后者通过拥有更多内核来弥补较低的时钟速度。AMD 的 Genoa-X 兼具两者的优点,具有较高的每周期缓存带宽、更高的时钟速度和 96 个内核。
从这个测试中很难看出 L3 带宽,因为 Grace 和 Graviton 4 的 L2 容量比 L3 大很多。我通常会将测试阵列拆分到各个线程,因为使用共享阵列进行测试往往会高估 DRAM 带宽。不同内核对同一缓存行的请求可能会在某种程度上合并。但使用共享阵列进行测试确实有助于估计 Graviton 4 和 Grace 的 L3 带宽。
Grace 拥有超过 2 TB/s 的 L3 带宽,领先于 Graviton 4 的 750 GB/s。Nvidia 希望 Grace 能够为高带宽的并行计算应用程序提供服务,拥有如此多的 L3 带宽是一件好事。但 AMD 仍然领先。Genoa-X 避开了从统一缓存服务所有内核的问题。相反,每个八核集群都有自己的 L3 实例。这使数据更靠近内核,从而提供更好的 L3 带宽扩展和更低的延迟。缺点是 Genoa-X 拥有超过 1 GB 的最后一级缓存,而单个内核只能分配其中的 96 MB。
一些简单的基准测试
深入的基准测试最好留给预算更充足、有全职员工的主流科技新闻网站。但我确实简要地研究了 Grace 的表现。
libx264 使用大量矢量指令,并且需要大量带宽。我期望 Grace 在这方面表现良好,尤其是在测试锁定到匹配核心数的情况下。但尽管时钟频率更高,Grace 的 Neoverse V2 核心仍无法击败 Graviton 4。
7-Zip 是一款仅使用标量整数指令的文件压缩程序。情况也好不到哪里去,尽管时钟是在云实例时间上运行的,我还是运行了几次测试。
尽管使用相同的命令行参数,7-Zip 最终执行了 2.58 万亿条指令,才在 GH200 上完成测试文件的压缩。在 Graviton 4 上,同样的工作仅需 1.86 万亿条指令。libx264 的指令数量在两个 Neoverse V2 实现中相似,约为 19.8 万亿条指令。这使得 7-Zip 的情况有点可疑,所以我将重点关注 libx264。
按照Arm Neoverse V2 技术参考手册所说,计算由于核心时钟域内最后一级缓存未命中而导致后端停顿,从而导致核心无法将指令从前端发送到后端的周期数。
Neoverse V2 有一个 STALL_BACKEND_MEM 性能监控事件。此事件的描述很清晰,虽然有点冗长。让我们来解释一下。L2 是以核心时钟运行的最后一级缓存。因此,STALL_BACKEND_MEM 仅考虑由 L3 和 DRAM 延迟导致的停顿。将指令从前端发送到后端是重命名器的工作,我们知道重命名器是 Neoverse V2 管道中最窄的部分。因此,该事件正在计算无序引擎无法吸收的 L2 未命中延迟。而且,这些事件造成的吞吐量损失无法通过稍后在管道的其他地方加速来恢复。
libx264 的这些停顿大幅增加。Grace 较小的 L2 与更差的 L3 和 DRAM 延迟相结合并不是一个成功的组合。在重命名阶段测量的总体吞吐量损失仅增加了几个百分点。这很好地展示了 Neoverse V2 的大型后端如何应对额外的延迟。但它无法应对得足够好,抵消了 Grace 的时钟速度优势。
7-Zip 中的相同计数器没有显示出如此巨大的差异,尽管 Grace 再次受到 L2 未命中延迟的影响。Grace 在此工作负载中表现不佳主要是因为 7-Zip 不知何故执行了更多指令来完成相同的工作。
7-Zip 和 libx264 并未从 Nvidia 的实现选择中受益,但这并不意味着 Grace 的设计毫无价值。114 MB 的大型 L3 缓存非常适合缓存阻塞技术,而更高的时钟可以帮助加快程序中并行性较低的部分。一些吞吐量受限的程序可能具有预取器友好的部分,这可以通过 Grace 的预取器来辅助。特定工作负载在 Grace 上的表现可能比在 Graviton 4 上更好,特别是如果它们获得优化以适应 Grace 的内存子系统。但这超出了这篇简短文章的范围。
H100 封装 GPU
GH200 上的 GPU 与 H100 SXM 变体类似,因为芯片上启用了 144 个流式多处理器 (SM) 中的 132 个。VRAM 容量为 96 GB,而单独出售的 H100 卡上只有 80 GB,这表明所有 12 个 HBM 控制器都已启用。每个 HBM 控制器都有一个 512 位接口,因此 GH200 的 GPU 有一个 6144 位内存总线。尽管 GH200 的 GPU 使用带宽更高的 NVLink C2C 接口连接,但它在软件中作为常规 PCIe 设备暴露。
nvidia-smi表示 GH200 的功率限制为 900W。相比之下,H100 的 SXM 变体的功率限制为 700W,而 H100 PCIe 的功率限制为 350-400W。GH200 显然必须在 CPU 和 GPU 之间共享功率,但当 CPU 负载较低时,GPU 可能比其独立同类产品有更大的喘息空间。
与 H100 的 PCIe 版本相比,GH200 的 H100 运行在更高的时钟频率下,从而降低了缓存延迟。除此之外,这里的 H100 看起来与其他 H100 变体非常相似。它有一个大型 L1 缓存,由中等容量的 L2 提供支持。H100 没有像 RDNA 2、CDNA 3 或 Nvidia 自己的 Ada Lovelace 客户端架构那样的庞大最后一级缓存。但它也不是像 Ampere 或其他较旧的 GPU 那样的微型缓存。
VRAM 延迟有了非常明显的改善,从 330 纳秒降至 300 纳秒以下。目前无法判断这在多大程度上来自于更高的时钟速度减少了遍历 H100 片上网络所需的时间,又在多大程度上来自于 HBM3 提供的更好的延迟。
由于启用了更多 SM 和更高的时钟速度,带宽也增加了。不幸的是,测试无法超过 384 MB。这使得 VRAM 带宽难以确定。但如果一切顺利,我假设 GH200 的 GPU 内存带宽将高于独立 H100 卡。
进一步的测试会很有趣。我想使用 GPU 的复制引擎测试 CPU 到 GPU 的带宽。DMA 引擎可以独立于 CPU(或 GPU)核心对内存访问进行排队,并且通常更能容忍延迟。Nemes 确实有一个测试可以用于vkCmdCopyBuffer测试这一点。不幸的是,该测试挂起了,从未完成。
检查dmesg显示内核抱怨 PCIe 错误和图形异常。我尝试在 Linux 源代码中查找其中一些消息,但什么也没找到。它们可能来自闭源 Nvidia 内核模块。总的来说,我在使用 NVLink C2C 时有一段令人沮丧的经历。至少 Vulkan 测试没有挂起系统,这与运行针对 HBM3 内存池的普通内存延迟测试不同。我也无法使用任何 OpenCL 测试。clinfo可以检测到 GPU,但clpeak任何其他应用程序都无法创建 OpenCL 上下文。我在使用 H100 PCIe 云实例时没有遇到同样令人沮丧的经历,其中 GPU 使用 Vulkan 或 OpenCL 代码时的表现与预期基本一致。这是一个很好的提醒,设计和验证像 GH200 这样的定制平台可能是一项极其困难的任务。
最后的话
Nvidia 的 GH200 和 Grace CPU 是一款有趣的 Neoverse V2 实现。由于内核更少、功率预算更高,Grace 的时钟频率可以高于 Graviton 4。但 Grace 可能并未像规格所暗示的那样提供更好的每核性能,而是针对特定应用程序进行了优化。一般消费者工作负载可能不是最佳选择,即使是矢量化程度较高的工作负载。
之前我认为 Arm 的 Neoverse V2 比 Zen 4 更有优势,因为 Arm 可以专注于更窄范围的功率和性能目标。但在研究了 Grace 之后,我认为这并不能反映全貌。相反,由于 Arm 的商业模式,它面临着一系列不同的挑战。他们不像 AMD 和英特尔那样将芯片设计进行到底。那些 x86 供应商可以在设计内核时考虑一组相对狭窄的平台特性。Arm 必须吸引尽可能多的实施者才能获得许可收入。他们的工程师将更难预测最终的平台是什么样子。
因此,Neoverse V2 发现自己必须在与其核心架构不太兼容的环境中运行。Nvidia 选择 1 MB L2、高延迟 L3 和非常高延迟 LPDDR5X,这给 Neoverse V2 带来了严峻的挑战。正如Graviton 4文章中所述,Neoverse V2 具有与 Zen 4 类似的重新排序能力。我认为 Zen 4 也会因 125 个周期的 L3 延迟和超过 200 纳秒的内存延迟而绊倒。我认为每个 Zen 4 实现都有快速的 L3 并非巧合。英特尔是另一个例子,Golden Cove 在 Core i7-12700K 中可以看到 11.8 纳秒的 L3 延迟,在 Xeon Platinum 8480+ 中可以看到 33.3 纳秒。Golden Cove 具有更高的重新排序能力,使其更能容忍延迟。在服务器环境中,Golden Cove 也获得了 2 MB 的 L2 缓存。
GH200 的 GPU 实现也值得评论。它应该是市场上最强大的 H100 变体,具有完全启用的内存总线和更高的功率限制。NVLink C2C 也应该比传统的 PCIe 设置提供更高的 CPU 到 GPU 通信带宽。
但它并不完美。NVLink C2C 理论上的 450 GB/s 很难利用,因为延迟较高。链接错误和系统挂起是一个令人担忧的问题,并指出验证自定义互连的难度。将 VRAM 作为一个简单的 NUMA 节点暴露给软件是一个很好的北极星目标,因为从软件的角度来看,它使 VRAM 访问变得非常容易和透明。但就目前的技术而言,这可能是一座遥不可及的桥梁。
尽管 Grace Hopper 不是 iGPU,但它可能是 Nvidia 与 AMD iGPU 实力竞争的最强对手。Nvidia 已经在亚马逊和英国的 Isambard-AI 超级计算机中取得了胜利。AMD 的 MI300A 正在成为强劲的竞争对手,在劳伦斯利弗莫尔国家实验室即将推出的El Capitan超级计算机中获胜。MI300A 使用集成 GPU 设置,可加快 CPU 到 GPU 的通信速度。但是,它将内存容量限制为 128 GB,这是 Nvidia 的独立 GPU 设置不需要做出的妥协。很高兴看到 Nvidia 和 AMD 在 CPU/GPU 集成领域如此激烈地竞争,事情的发展应该会很令人兴奋。
参考链接
https://chipsandcheese.com/2024/07/31/grace-hopper-nvidias-halfway-apu/
END
*免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。
今天是《半导体行业观察》为您分享的第3844内容,欢迎关注。
推荐阅读
『半导体第一垂直媒体』
实时 专业 原创 深度
公众号ID:icbank
喜欢我们的内容就点“在看”分享给小伙伴哦
微信扫码关注该文公众号作者