Reed's News
← 返回精选

NVIDIA Vera 白皮书中松动的线头

Tech 81 pella 2026/8/5 3508 字 原文 ↗

各位亲爱的网友:

NVIDIA发布了一份45页的白皮书,详解其首款基于自研Olympus核心的服务器CPU——Vera。从参数上看,Vera是一款极具亮点的芯片:采用单片式计算die,集成88个核心;每个Olympus核心是支持Arm v9.2指令集的10发射乱序核心,具备值预测、图预取功能,搭配2MB私有二级缓存;芯片还拥有164MB共享末级缓存,以及8个LPDDR5X内存接口,带宽可达1.2TB/s。

遗憾的是,白皮书花费大量篇幅,试图将这些颇具巧思的设计,包装成一场批判x86的“道德叙事”:它把传统同步多线程(SMT)描述成简单的时间切片,把可配置的NUMA拓扑说成是令人无奈的32节点迷宫,把4项SPEC测试组件称作“智能代理基准测试”,用未定义的性能计数器比值充当因果证据,甚至拿一个无标注图标来证明强化学习性能提升1.8倍。

最让人遗憾的是,Vera根本不需要这种营销话术加持。第三方早期测试显示,Olympus核心的性能确实十分强劲。白皮书最扎实的论据是硬件本身,最薄弱的部分却是围绕硬件编造的叙事——接下来我们就拆解这些误导性说法。

Olympus值得更真诚的营销

先抛开争议,聊聊Vera的真材实料。Olympus是一款宽度极高的Arm乱序核心。

它的前端每周期可解码10条指令,每周期最多处理2个已执行分支。NVIDIA介绍称,该核心配备神经分支预测器、值预测、内存重命名、大容量指令窗口,还有6个128位SVE执行管道、4个加载管道、2个存储管道、96KB一级数据缓存,以及延迟约10周期的2MB私有二级缓存。88个这样的核心,通过带宽达3.4TB/s的一致性互连架构,连接至分布式的164MB系统级缓存。

深入看核心设计,值预测是Olympus最具特色的创新之一。这项技术已在学术界研究多年:如果核心能准确预测运算结果,依赖该结果的后续指令就无需等待长延迟操作完成,可直接继续执行。此前有研究发现苹果在自家核心中采用了值预测技术https://www.usenix.org/system/files/usenixsecurity25-kim-jason.pdf,AMD也曾提到在Family 17h(Zen 1和Zen 2)架构中,能预测部分浮点指令的结果https://www.amd.com/content/dam/amd/en/documents/resources/bulletin/1924930.pdf。不过AMD的实现范围相当有限,而Olympus的值预测功能覆盖更广,更接近苹果的方案。

但图预取并非NVIDIA独有。英特尔早在2022年就推出了类似的“数据依赖预取器”(Data-Dependent Prefetcher);其最新数据中心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描述的图预取器一样,都是基于生产者-消费者模型的设计。英特尔的实现存在较多限制,NVIDIA的版本或许能处理更复杂的链式结构,但生产者-消费者预取本身并非全新概念。

“神经分支预测器”同样不是新鲜事。早在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预测器接管,因为后者能将预测错误率降低30%https://www.computer.org/csdl/magazine/mi/2020/02/09000513/1hx2FVM4mUo。到了Zen 5,AMD大概率已全面转向TAGE预测器(可能在Zen 3或Zen 4时就已完成切换)https://hc2024.hotchips.org/assets/program/conference/day2/24_HC2024.AMD.Cohen.Subramony.final.pdf。

再看片上系统(SoC)部分:既然Olympus核心性能如此强劲,NVIDIA也为Vera搭配了同样强悍的内存子系统。Vera支持8颗SOCAMM2 LPDDR5X模块,最大容量1.5TB,带宽1.2TB/s,NVIDIA称该内存子系统的功耗仅约50瓦。传统EPYC或Xeon平台支持容量更大、更易更换的DIMM内存,但这种灵活性是以占用更多主板空间和更高功耗为代价的。

更重要的是,我们并非只能参考NVIDIA自己的测试数据。今年5月,Phoronix网站的Michael Larabel用早期Vera系统,与当前主流Arm和x86服务器进行了对比测试。在NVIDIA允许的测试范围内,Vera的几何平均性能比5GHz的EPYC 9575F高出10%,是Xeon 6980P的1.55倍、Grace的1.63倍https://www.phoronix.com/review/nvidia-vera-benchmarks/11——这是目前公开测试中性能最强的Arm服务器CPU。不过此次测试存在明显局限性:测试负载由NVIDIA选定,且不允许监测频率和功耗;测试所用的是预生产系统,测试窗口仅一天,即便没有NVIDIA的限制,测试范围也会受到很大制约。要获得更全面的性能数据,还需等待Vera正式上市,而非仅依赖NVIDIA实验室的测试结果。

即便如此,现有结果已足够有力,证明白皮书里的图表并非凭空捏造。Olympus确实是一款高性能CPU核心,接下来我们要探讨的是:白皮书是否真能证明NVIDIA的论点?

空间多线程本质仍是SMT

白皮书第一个重大技术误导,出现在对多线程的描述中。

图5对比了“传统SMT(x86)”与NVIDIA的“空间多线程”:x86一侧的示意图显示,分支预测、解码、执行、加载/存储、内存等阶段在两个线程间交替切换;图说称Vera通过在两个硬件线程间划分资源,避免了“机会主义时间共享”。

这张图对SMT实际实现方式的描述存在误导——无论x86-64还是其他指令集架构,SMT都不是这样工作的。SMT实现方式https://cs.ucr.edu/~bhuyan/cs203A/hyperthreading.pdf中,执行流水线的不同阶段通过两种方式共享:要么每周期选择一个线程进行处理,要么以线程无关的方式运行。取指、解码、分配阶段通常按周期为不同线程服务,而执行和内存访问阶段则是线程无关的,同一周期可处理来自两个线程的微操作。正如NVIDIA的图所暗示的,当两个线程都有任务需要处理时,线程竞争的阶段并不会让资源闲置。在无线程停顿的情况下,静态资源划分和按周期选择线程的方式,能为两个线程提供相同的平均吞吐量;若其中一个线程出现停顿,按周期选择的方式可将闲置资源分配给无停顿的线程。

同样的逻辑也适用于执行、缓存访问等线程无关阶段:每个线程可利用其能喂饱的所有执行单元或缓存端口。相比之下,NVIDIA所说的静态资源划分,可能导致一个线程因计算受限,无法使用核心一半的执行资源——因为这些资源被预留给了另一个线程。

英特尔Pentium 4的SMT技术文档https://www.intel.com/content/dam/www/public/us/en/documents/research/2002-vol06-iss-1-intel-technology-journal.pdf,展示了执行阶段如何在同一周期为两个线程提供服务。

白皮书强调,NVIDIA的空间多线程方法在“确定性、隔离性和服务质量(QoS)”方面具有优势,但刻意回避了性能话题。对于NVIDIA的目标市场而言,QoS可能比吞吐量更重要,空间多线程或许是合理的设计选择。但图表将垂直空间等同于时间,给人一种空间多线程性能提升远超传统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性能提升影响显著。

AMD Zen 5优化指南https://docs.amd.com/v/u/en-US/58455_1.00,展示了不同核心资源的共享策略。

另一个值得注意的点是:当Olympus核心的兄弟线程结束后,需要约10000个周期才能切换回单线程模式https://lore.kernel.org/all/20260804151324.918020-1-arighi@nvidia.com/。这意味着软件在启动第二个线程时必须格外谨慎,不仅要考虑资源划分带来的性能损耗,还要承担切换回单线程的延迟成本。

Vera如何划分乱序执行资源,其SMT性能与其他现代核心相比表现如何,这些问题都值得关注,但白皮书并未提供相关信息。它仅用一张误导性图表,暗示传统SMT容易导致资源闲置,而实际上传统SMT可能比NVIDIA的空间多线程更能充分利用核心资源。

32个NUMA节点:刻意树立的假想敌

NVIDIA接着声称,双路x86大型系统最多会暴露“32个NUMA域”,而Vera每个插槽仅对应一个NUMA域。这个数字并非捏造:在多chiplet的EPYC系统中,管理员可将缓存本地区域设置为独立NUMA节点;若将所有 locality 选项调至最高粒度,节点数量确实会变得很大。

但NVIDIA刻意隐瞒了关键信息:这种配置是可调整的。AMD调优指南列出了NPS4、NPS2、NPS1甚至NPS0等模式⟧31⟧,可选的“LLC作为NUMA”设置可将每个末级缓存域单独暴露为NUMA节点。因此,“32个NUMA节点”并非chiplet CPU用户必然面临的体验,而只是 locality 控制范围的一个极端选项。NVIDIA却将这种可选的高粒度配置,描绘成x86系统无法避免的固有问题。

Vera每个插槽对应一个NUMA域的设计,简化了调度和内存分配;而多NUMA域设计则允许经过调优的软件利用物理 locality 优势。Vera选择了更简洁的实现方式,NVIDIA也有权主张这种设计更契合其目标软件栈。但操作系统可见的NUMA节点只是一种抽象概念,并非什么“虫洞”。Vera仍有88个核心、分布式缓存和主节点、围绕大die布局的内存控制器,以及基于分组交换的一致性互连架构。扁平化的软件拓扑可让大型单片die内部的延迟更均匀,但无法消除延迟本身。

白皮书的核心间延迟热图本可以量化这种优势,但NVIDIA仅提供了无核心标识、无最小/中位数/最大值表格、无分布数据、无测量流程的彩色方块。“最高降低50%”只体现了NVIDIA的最佳测试结果,而非Vera的典型表现。

每个插槽一个NUMA节点的设计确实更简洁,但白皮书却将其与x86的可选32域配置对比,还把这种极端情况当作x86的标准形态。需要指出的是,英特尔也采用了与Vera类似的Mesh NoC架构。EPYC的集群化设计,集群间延迟较高但集群内延迟很低;而Vera和Xeon的Mesh架构,延迟则相对均匀——不同配置只是工程上的取舍。

把SPEC测试包装成“智能代理AI”

白皮书的基准测试部分,开始偏离CPU技术文档的定位,蹭起了AI会议的热度。

NVIDIA挑选了SPEC CPU 2026的4项整数测试负载:CPython、GCC、LLVM和Cppcheck,并将它们称为“智能代理基准测试”。但根据SPEC官方描述https://www.spec.org/cpu2026/Docs/,这些分别是Python解释器、两款优化编译器,以及一款C/C++静态分析工具——它们都是标准的CPU测试程序,主要考验大指令 footprint、分支密集型代码、内存分配和依赖链等。智能代理确实可能调用这类程序,但它们本身并非智能代理:没有模型提供token,没有代理运行时选择工具,没有沙箱启动、I/O阻塞、上下文获取、结果评估,也没有将观测结果反馈回策略的过程。这些负载或许能作为代理流水线中代码密集型环节的参考,但将其称为“智能代理基准测试”,是把部分重叠的场景,夸大成能代表完整端到端工作负载。

白皮书确实标注了SPEC结果为估算值,因为测试时Vera参考硬件尚未公开可用。图15显示,在双路满负载系统中,按物理核心归一化后,Vera在这4项测试中的性能比对手高出1.7至1.8倍。但翻到配置页面会发现,双路Vera的SPECrate 2026整数基准总分估算值为925,双路EPYC 9755为898——系统吞吐量仅领先3.0%。

这两个数字并不矛盾:双路Vera共有176个物理核心,而双路EPYC系统有256个。将总分除以物理核心数,Vera在整个整数速率测试套件中的每核心性能领先约50%,在选定的4项测试中领先70%至80%。

白皮书还存在术语混淆问题:图19被称为“单线程IPC”,但描述的却是满负载系统的测试场景。

测试配置为:Vera的176个核心运行352个测试副本,EPYC的256个核心运行512个副本,即每个物理核心对应两个副本。NVIDIA可能是在兄弟线程活跃时采样了一个逻辑线程的IPC,也可能是汇总计数器后取平均值,但白皮书并未说明。SPEC测试结果有一定参考价值,Vera的每核心性能确实强劲,但将这些测试包装成智能代理工作负载,并强调归一化数据,会让其优势看起来比实际结果更广泛。

脱离指令的IPC毫无意义

NVIDIA将Olympus的IPC领先优势归因于四类计数器:根据所选负载,Vera每周期分支预测次数最高可达对手的2.3倍,已执行分支次数为3.5倍,指令取指操作次数为2.4倍,后端操作次数为4.3倍。

这些描述看似技术细节丰富,但没有PMU事件名称和定义、原始计数、采样间隔、时钟频率等信息,根本无法验证。更不用说Arm指令与x86指令的工作单元并不等价,内部后端操作的可比性更低——不同微架构可能将同一条指令拆分为多个微操作,或保持指令融合状态。

跨指令集的IPC数据,只有结合已完成工作计数、时钟频率和代码分析才有意义,无法单独作为性能指标。两个二进制文件完成同一任务的时间相同,却可能报告截然不同的IPC:其中一个可能只是执行了更多指令,但每条指令完成的工作更少;此外,时钟频率的差异也会影响最终结果。IPC描述的是核心运行某段代码时的行为,而非衡量有效工作的通用指标。

看分支预测结果:每周期分支预测次数更多,可能说明预测器性能强劲,也可能是因为Arm二进制文件包含更多分支、基准测试执行代码速度更快,或是NVIDIA的事件计数包含了推测性预测,而EPYC的事件计数未包含此类数据。每周期后端操作次数更高可能与性能相关,但无法说明是哪项特性导致的。要单独评估值预测、图预取或神经预测器的作用,需要进行开关对比实验,至少也要提供事件定义和错误率差值。Vera相比Turin的IPC优势或许真实存在,但白皮书的图表提供的细节不足以证明这一点。

Vera的内存优势真实存在,但归因错误

内存部分包含了白皮书中最扎实的测试结果,同时也是最薄弱的结论之一。

白皮书显示,在负载延迟测试中,双路Vera的内存带宽约为1.1TB/s,而Turin(EPYC 9755)仅约400GB/s;Vera的每核心内存带宽为12.7GB/s,Turin为3.1GB/s。但这些结果与我们对Turin CPU的测试不符。

我们测试Turin时,其12通道DDR5-6400内存子系统达到了约570GB/s的带宽,与NVIDIA宣称的约400GB/s峰值直接矛盾。这也让每核心内存带宽数据存疑:EPYC 9755的每核心带宽应提升至约4.5GB/s。

即便如此,Vera仍保持领先,但我们的测试结果大幅缩小了双方的差距。将Vera的约1.1TB/s与我们测得的570GB/s对比,NVIDIA的带宽领先倍数从白皮书的近3倍降至1.9倍;EPYC 9755的每核心带宽从3.1GB/s修正为约4.5GB/s后,Vera的领先倍数从4.1倍降至约2.8倍。如果对比AMD针对AI头节点主推的SKU——EPYC 9575F,Vera的每核心带宽为12.7GB/s,9575F约为9GB/s,领先幅度约40%。这些数据对Vera来说依然不错,但故事的戏剧性远不如白皮书描述的那样强。

从理论值来看,AMD标注Turin的内存带宽上限为614GB/s(基于12通道DDR5-6400),我们测得的570GB/s达到了理论上限的约93%;Vera的8个LPDDR5X-9600接口提供1.2TB/s的理论带宽,NVIDIA测得的1.1TB/s达到了理论值的约92%。也就是说,两款处理器将理论内存带宽转化为持续带宽的效率非常接近。Vera之所以胜出,是因为其单插槽峰值带宽约为Turin的两倍,且核心数量更少、内存资源竞争更小,而非Turin在利用可用内存带宽方面表现异常糟糕。

尽管如此,白皮书仍反复将Vera的优势归因于单片式计算die,并与“传统chiplet架构CPU”对比。单片die可能减少互连架构遍历、降低负载延迟,但我们的Turin测试结果直接削弱了这一解释:chiplet架构的EPYC 9755能达到理论带宽的约93%,显然并未受到chiplet拓扑的限制。Vera的带宽优势主要来自处理器搭载的内存接口。

此外,这一对比几乎刚发布就过时了:NVIDIA于7月21日发布技术博客和白皮书,而AMD两天后就推出了第六代EPYC处理器。96核心的EPYC 9686F与Vera的88核心数更接近,它配备16个内存通道,支持DDR5-8000或MRDIMM-12800,单插槽带宽可达1024GB/s或1638GB/s——最高MRDIMM速度下,Venice(第六代EPYC)的总内存带宽和每核心内存带宽,甚至可能超过Vera(具体取决于SKU)。

新EPYC的规格以及我们的Turin测试结果表明:NVIDIA宣称的“比最新x86 CPU多3倍内存带宽”,依赖于一个无法代表同代处理器真实带宽水平的Turin测试结果。对比我们的测试数据,Vera的总带宽约为Turin的1.9倍,每核心带宽约为2.8倍——这仍是令人印象深刻的平台级结果,但并非单片Arm处理器优于chiplet架构x86 CPU的证据。

图计算和RL图表缺乏数据支撑

NVIDIA宣称Vera在PageRank测试中性能比EPYC 9755高出2.6倍,且Vera扩展到32核心时性能几乎呈线性增长,而EPYC扩展到32核心时性能仅提升10倍。NVIDIA将这种优势归因于Vera的单片式计算die、高带宽可扩展一致性互连架构、1.2TB/s内存带宽,以及Olympus核心内的图预取器。

不过,尽管白皮书提到了GAP基准测试套件,但未说明NVIDIA使用的变量——这些变量对测试结果影响重大。性能扩展图仅展示到32核心,而测试所用的服务器单插槽分别有88和128核心。2.6倍的结果虽有趣,但没有测试变量,其他研究者几乎无法复现这一结果。

在ClickHouse测试中,NVIDIA直接引用了Phoronix的测试结果https://www.phoronix.com/review/nvidia-vera-benchmarks/10:Vera在处理1亿行数据集的三轮测试中,领先其他被测处理器。白皮书展示的1.2倍性能提升图表仍有选择性(未采用9575F的结果),但至少原始结果由第三方测试者生成,且负载是业界公认的类型。

至于图24“Vera使强化学习训练性能提升1.8倍”,仅展示了一排代表完成任务的小方块。图中没有模型、环境、CPU/GPU分配、框架、批量大小、功耗测量、重复次数或误差棒,我们甚至不知道这些方块代表样本数、步数,还是NVIDIA办公室里随机排列的瓷砖。

这算不上糟糕的基准测试,因为它根本就不是基准测试。

图表周围的文字解释了为何更快的CPU能提升强化学习rollout性能:更快的环境步骤和奖励计算,能更迅速地为加速器提供数据。但图24甚至没有假装去测量这一点。

优秀的CPU无需拙劣的论证

读完45页白皮书,我对Vera的评价比对白皮书本身要正面得多。

Olympus看起来是一款极具竞争力的核心:10发射定长解码器、大容量私有缓存、值预测、激进的分支处理、图感知预取,再加上单片式88核心die——这些设计都指向一款高性能CPU核心。内存子系统也毫不逊色,LPDDR5X提供的1.2TB/s带宽,会让对内存带宽需求极高的服务器工作负载受益;第三方早期基准测试也表明,这款芯片至少能兑现白皮书部分性能承诺。

但白皮书的竞品论证漏洞百出:误导性描述x86的SMT,将可选NUMA配置说成是默认负担,把标准CPU测试重新包装成智能代理工作负载,用1.8倍每核心性能掩盖3%的双路吞吐量领先,对比未定义的跨指令集计数器,将内存接口优势归因于单片架构的优越性,甚至用插图充当性能数据。

这些问题并不会让Vera变慢,只会让NVIDIA的论据远不如营销话术那般华丽。

下一轮Vera测试本应简单直接:向独立评测者提供不受限制的量产硬件,让我们能发布频率、封装功耗、整机功耗数据,测试空间多线程开启/关闭的效果,当然还要能在Vera上运行任意基准测试或工作负载。如果Vera真如其架构设计那般出色,这些测试的说服力,远胜过把x86 SMT描绘成狭窄的双车道红绿灯。目前来看,NVIDIA的营销话术反而可能损害Vera的声誉——既然已经打造出一款足够优秀的CPU,就无需再从营销话术里“借”性能了。