Nvidia Vera 白皮书中的纰漏

Hacker News Top 新闻

摘要

对 NVIDIA Vera 白皮书的一篇分析性评论,审视了 Olympus 核心令人印象深刻的架构,同时认为该论文的反 x86 叙事和基准测试主张被夸大了,而独立测试表明该硬件确实强大。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/08/05 22:57

# NVIDIA 的 Vera 白皮书有一根线头松了 来源:https://chipsandcheese.com/p/nvidias-vera-whitepaper-has-a-thread 各位互联网朋友,你们好, NVIDIA 发布了一份 45 页的白皮书,介绍 Vera(https://nvdam.widen.net/s/nmw5vblpqd/nvidia_vera_cpu_architecture_whitepaper?nvid=nv-tblg-543584),这是其首款基于自家 Olympus 核心的服务器 CPU。从纸面上看,Vera 是一款非常有趣的芯片:一颗 88 核的单片计算 die,Olympus 是一个 10 宽 Arm v9.2 核心,具有值预测、图预取器、每核心 2 MB 私有 L2、164 MB 共享末级缓存,以及八个 LPDDR5X 内存接口,带宽承诺高达 1.2 TB/s。 不幸的是,NVIDIA 也在论文中花了很大篇幅试图将这些有趣的设计选择变成一场关于 x86 的道德剧。传统的同步多线程被描绘成时间切片,可配置的 NUMA 拓扑被呈现为一个不可避免的 32 节点迷宫,四个 SPEC 组件变成了“智能体基准测试”,未定义的性能计数器比率被当作因果证据,而一个没有标注的 pictogram 则变成了 1.8 倍的强化学习结果。 令人沮丧的是,Vera 并不需要这种夸大。早期的独立测试表明 Olympus 确实非常强大。白皮书最有力的论据是硬件本身;最薄弱的论据是围绕它编织的故事。那么,让我们来拆解一下这个故事。 在拿出奶酪刨丝器之前,先讲讲好东西。Olympus 是一个非常宽的超标量乱序执行 Arm 核心。(https://nvdam.widen.net/s/nmw5vblpqd/nvidia_vera_cpu_architecture_whitepaper?nvid=nv-tblg-543584) [](https://substackcdn.com/image/fetch/$s_!o1nY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bf7fee6-a173-429e-87e9-7c1fba499e5a_1895x1493.png) 它的前端每周期可以解码十条指令,并且每周期能处理最多两个条件分支。NVIDIA 描述了神经分支预测器、值预测、内存重命名、大型指令窗口、六个 128 位 SVE 流水线、四个加载流水线、两个存储流水线、一个 96 KB L1 数据缓存,以及大约 10 个周期访问 2 MB 私有 L2 的延迟。其中八十八个核心位于一个 3.4 TB/s 的一致性互连和分布式 164 MB 系统级缓存之后。 仔细看核心内部,值预测是 Olympus 较为独特的增补功能之一。这一直是一个长期的研究领域,值预测允许 Olympus 做的是:如果核心正确预测了一个结果,依赖指令可以继续推进,而不是堆积在长延迟操作之后。研究人员发现 Apple 在其核心中使用了值预测(https://www.usenix.org/system/files/usenixsecurity25-kim-jason.pdf),AMD 也曾在 Family 17h(Zen 1 和 2)中讨论过他们可以预测某些浮点指令的值(https://www.amd.com/content/dam/amd/en/documents/resources/bulletin/1924930.pdf)。然而,AMD 的 Family 17h 实现相当有限,而 Olympus 似乎有更广泛的值预测实现,更接近 Apple 的方案。 不过,图预取器并非 NVIDIA 独有。Intel 有一个类似的机制,称为数据相关预取器(Data-Dependent Prefetcher),至少从 2022 年起就已出现在量产芯片中。Intel 最新的数据中心 CPU Granite Rapids 还有一个指针数组预取器(Array of Pointers prefetcher)(https://www.intel.com/content/www/us/en/content-details/671488/intel-64-and-ia-32-architectures-optimization-reference-manual-volume-1.html),它“将为恒定步长加载预取的数据视为指针,并可能向该指针值所对应的内存地址发出预取请求”。这本质上与 NVIDIA 为其图预取器描述的生产者-消费者思路相同。Intel 的实现相当受限,因此 NVIDIA 的实现或许能够处理比 Intel 实现更复杂的链。所以,尽管 Vera 的图预取器可能是一个能处理更多工作负载的实现,但生产者-消费者预取并非新概念。 “神经分支预测器”也不是新概念。早在 2012 年,AMD 就在 Piledriver 微架构中实现了感知器分支预测器(https://web.archive.org/web/20120517123516/http://www.anandtech.com/show/5831/amd-trinity-review-a10-4600m-a-new-hope),并在 Zen 1 中继续使用基于感知器的分支预测器(https://www.amd.com/en/newsroom/press-releases/2016-12-13-amd-takes-computing-to-a-new-horizon-with-ryzen-tm.html)。然而,从 Zen 2 开始,AMD 仅将感知器 BPU 用于初始方向预测,并用 TAGE 预测器覆盖它,因为 TAGE 能减少 30% 的预测错误(https://www.computer.org/csdl/magazine/mi/2020/02/09000513/1hx2FVM4mUo)。到了 Zen 5,AMD 很可能已经完全转向 TAGE 预测器(https://hc2024.hotchips.org/assets/program/conference/day2/24_HC2024.AMD.Cohen.Subramony.final.pdf),如果它在 Zen 3 或 Zen 4 时还没有这样做的话。 转到 SoC 层面,考虑到 Olympus 核心如此强大,NVIDIA 为 Vera 配备了同样强大的内存子系统。Vera 搭配八个 SOCAMM2 LPDDR5X 模块,最高可达 1.5 TB 容量和 1.2 TB/s 带宽。NVIDIA 声称,装满的内存子系统仅消耗约 50 瓦。传统的 EPYC 或 Xeon 平台可以提供容量更高且更易于更换的 DIMM,但代价是更大的板卡面积和功耗。 最重要的是,我们不仅仅只有 NVIDIA 的数据可看。今年 5 月,Phoronix 的 Michael Larabel 将一台早期的 Vera 系统与当前的 Arm 和 x86 服务器进行了对比。在 NVIDIA 允许的测试集内,Vera 的几何平均成绩比 5 GHz 的 EPYC 9575F 高出 10%(https://www.phoronix.com/review/nvidia-vera-benchmarks/11),是 Xeon 6980P 的 1.55 倍,是 Grace 的 1.63 倍,这使得 Vera 成为我们在公开测试中见过的性能最强的 Arm 服务器 CPU。测试存在重大注意事项,例如 NVIDIA 选择了允许的工作负载范围,并且不允许监控频率或功耗。Phoronix 测试的系统是预生产的,测试窗口只有一天,这给他们的测试内容带来了相当严格的限制,无论 NVIDIA 设置了什么限制。这意味着更广泛的测试要等 Vera 真正出现在现实环境中,而不仅仅是在 NVIDIA 的实验室里。 尽管如此,结果已经足够有力,我们可以排除白皮书中的图表全是虚构的解释。Olympus 看起来是一个快速的 CPU 核心,那么我们现在可以问:白皮书是否证明了它声称要证明的内容? 这里是文档中的第一个重大技术错误。 图 5 对比了“传统 SMT(x86)”与 NVIDIA 的“空间多线程”(Spatial Multithreading)。x86 一侧将分支预测器、解码、执行、加载/存储和内存阶段描绘为在两个线程之间交替。图注称,Vera 通过将其两个硬件线程之间的资源进行分区,避免了“机会性时间共享”。 [](https://substackcdn.com/image/fetch/$s_!Xx_0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1703b33-5941-482e-8f6f-aee3974f9551_975x655.png) NVIDIA 的图示给人一个错误的印象,让人以为 SMT 通常就是这样实现的——无论是对 x86-64 还是其他 ISA。SMT 实现(https://cs.ucr.edu/~bhuyan/cs203A/hyperthreading.pdf)通过每周期选择一个线程来服务,或以与线程无关的方式运行,来共享执行流水线中的各个阶段。取指、解码和分配通常按每周期轮流服务线程,而执行和内存访问阶段与线程无关,可以在同一周期内服务来自两个线程的微操作。当两个线程都能被喂饱时,线程需要仲裁的阶段并不会像 NVIDIA 图示所暗示的那样让资源闲置。静态分区和每周期选择在没有每线程停顿的情况下,为两个线程提供相同的平均吞吐量。如果存在停顿,每周期选择可以将原本闲置的吞吐量让给未停顿的线程。 [](https://substackcdn.com/image/fetch/$s_!gTXh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f8b00f3-6af7-438f-813e-0c8b44b4f0d0_761x321.png)一个假设示例,展示了对 SMT 静态分区解码资源的处理器,以及一个每周期选择线程服务的 8 宽处理器的解码阶段活动。每周期线程选择可以有效隐藏一个线程中的停顿,而静态分区则会浪费吞吐量 同样的思路也适用于与线程无关的阶段,如执行和缓存访问。每个线程都可以使用它所能喂饱的尽可能多的执行单元或缓存端口。相比之下,NVIDIA 所建议的静态分区资源可能导致一个线程受计算限制,却无法使用核心一半的执行资源,因为这些资源被保留给另一个线程。 NVIDIA 论文中的文字强调“确定性、隔离性和服务质量”是 NVIDIA 空间多线程方法的优势。性能显然没有被提及。对于 NVIDIA 的目标市场而言,QoS 可能比吞吐量更重要,空间多线程也可能不是一个糟糕的设计点。但 NVIDIA 的图示让垂直空间看起来代表时间,给人一个误导性的印象,即空间多线程旨在带来比传统 SMT 更大的性能提升。 > 通过减少线程之间的资源干扰,空间多线程相比传统 SMT 方法提高了确定性、隔离性和服务质量。其结果是一种 CPU 架构,可以运行大量并发智能体任务,同时保持更一致的延迟和吞吐量。—— NVIDIA 的 Vera 白皮书 当然,Vera 的实际 SMT 性能是未知的,影响 SMT 收益的因素除了取指、解码、执行和内存访问阶段的分区策略外,还有很多变量。诸如重排序缓冲区、寄存器文件和内存排序队列等乱序资源可以被复制、静态分区、设置水位线或竞争性共享。分区结构在多线程模式下被拆分给两个逻辑处理器,并在单线程模式下重新合并给一个线程,这一点在 2002 年就已记录在案(https://www.intel.com/content/dam/www/public/us/en/documents/research/2002-vol06-iss-1-intel-technology-journal.pdf)。不同的 SMT 实现会对每种结构采用不同的策略,而这些选择可能对 SMT 收益产生重大影响。 另外值得注意的是,一个 Olympus 核心(https://lore.kernel.org/all/[email protected]/)显然需要 10,000 个周期才能在其上的兄弟线程完成后切换回单线程模式。这意味着软件必须非常谨慎地决定是否在 Olympus 核心上启动第二个线程,因为不仅要承担分区方案带来的惩罚,还要承担切换回单线程的延迟。 看看 Vera 采用何种策略来分区其乱序资源,以及它的 SMT 性能与其他现代核心相比如何,将会很有趣。NVIDIA 的白皮书没有提供任何相关信息。它所做的只是呈现一个误导性的图示,暗示传统 SMT 容易让资源闲置,而实际上传统 SMT 在保持核心喂饱方面可能比 NVIDIA 的空间多线程更好。 接下来,NVIDIA 告诉我们,一个大型双插槽 x86 系统可以暴露“多达 32 个 NUMA 域”,而 Vera 每个插槽只呈现一个。这个数字并非凭空捏造。在一个多 chiplet 的 EPYC 系统上,管理员可以将缓存本地区域暴露为独立的 NUMA 节点。如果你把每一个局部性旋钮都调到最大粒度,节点数量就会变得很大。 [](https://substackcdn.com/image/fetch/$s_!aonq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06b68ff6-283b-45bd-a57f-465424cf6815_2047x932.png) NVIDIA 没有提到的是,这是可配置的。AMD 的调优指南列出了 NPS4、NPS2、NPS1 甚至 NPS0 模式(https://docs.amd.com/v/u/en-US/58479_amd-epyc-9005-tg-hpc)。可选的“LLC as NUMA”设置可以分别暴露每个末级缓存域。所以“32 个 NUMA 节点”并不是 chiplet CPU 不可避免的用户体验,而是局部性控制频谱的一端。NVIDIA 将一种可选的高粒度配置呈现得像是 x86 系统不可避免的现实。 Vera 的每插槽一个域简化了调度和内存放置,而多个域则让经过调优的软件能够利用物理局部性。Vera 选择了更简单的呈现方式,NVIDIA 当然可以争辩说这更符合其目标软件栈。但操作系统可见的 NUMA 节点是一种抽象,而不是虫洞。Vera 仍然有 88 个核心、分布式缓存和 home 节点、围绕大 die 分布的内存控制器,以及一个分组交换的一致性互连。平坦的软件拓扑可以让这些围绕大型单片计算 die 的距离变得更加一致,但不能让它们消失。 [](https://substackcdn.com/image/fetch/$s_!4br5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ff77a3e-cb3a-4fc7-870a-218fd5c4598a_1104x613.png) 论文中的核心到核心热力图本可以是一个量化这种优势的好地方。然而,NVIDIA 只提供了彩色方块,没有核心标识,没有最小值/中位数/最大值表格,没有分布,也没有测量方法。“最高降低 50%”捕捉的是 NVIDIA 的最佳结果,而不是 Vera 的典型行为。 每插槽一个 NUMA 节点确实更简单,但白皮书将它与可选的 32 域 x86 配置相比较,并将这种边缘情况作为基线。这里的反论点在于,Intel 拥有与 Vera 类似的 Mesh NoC。这两种设置之间的真正区别在于,EPYC 的集群式设置具有较高的跨集群延迟,但集群内部延迟较低;而 Vera 和 Xeon 的 Mesh 设置具有均匀的平均延迟;不同的配置只是工程权衡而已。 基准测试部分是这个本应关于 CPU 的白皮书开始佩戴它在地上捡到的 AI 会议徽章的地方。 [](https://substackcdn.com/image/fetch/$s_!He3D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76b6cb81-db9d-43bf-8430-2d88ef47e6dd_1117x687.png) NVIDIA 选择了四个 SPEC CPU 2026 整数工作负载——CPython、GCC、LLVM 和 Cppcheck,并将它们称为“智能体基准测试”。SPEC 自己将它们描述为(https://www.spec.org/cpu2026/Docs/):一个 Python 解释器、两个优化编译器,以及一个 C/C++ 静态分析器。这些是合法的 CPU 程序。它们考验大指令足迹、高度分支的代码、内存分配和依赖链。智能体完全可以调用这类程序。 但它们并不是智能体:没有模型在服务 token,没有智能体运行时在选择工具,没有沙盒在启动、阻塞于 I/O、检索上下文、评估答案,或将观察结果反馈给策略。这些工作负载或许可以作为智能体流水线中代码密集部分的代理。然而,称它们为“智能体基准测试”就把这种部分重叠变成了一种声称,即它们代表了完整的端到端工作负载。 论文确实正确地将 SPEC 结果标记为估算值,因为 Vera 参考硬件在运行时尚未普遍可用。图 15 显示了四个选定组件 1.7 倍到 1.8 倍的优势,按满载双插槽系统下的每物理核心归一化。翻到配置页面,完整的估算 SPECrate 2026 Integer Ba

相似文章

NVIDIA刚刚发布了全新的Vera CPU——据称比x86快两倍

Reddit r/ArtificialInteligence

NVIDIA宣布了采用全新Vera架构的CPU,该架构从头开始为智能代理AI和强化学习而设计,声称性能达到x86替代方案的两倍。Vera Rubin NVL72平台集成了72个GPU和36个CPU,主要客户包括Meta、Oracle和Alibaba。