NEE's Blog

ARM Cortex-X925:冲击桌面级性能

March 03, 2026

本文翻译自 Arm’s Cortex X925: Reaching Desktop Performance,原载于 Hacker News。


桌面和笔记本电脑需要在一个非常广泛的负载场景中保持高单线程性能。要打造能满足这些需求的 CPU 核心,绝非易事。AMD 和 Intel 传统上在这个高性能领域占据主导地位,他们使用高频率、高吞吐量的核心,配合庞大的乱序执行引擎来吸收延迟。

ARM 传统上则专注于低功耗和小面积,而非追求极致性能。然而,多年来 ARM 稳步构建了更复杂的核心,并寻找机会向更高性能的细分市场扩张。2012 年,当 ARM 推出其首款 64 位核心 Cortex-A57 时,与 Intel 和 AMD 的顶级产品相匹敌可能还是一个遥远的梦想。如今,这个梦想已经成为现实。

Nvidia GB10 中的 Cortex-X925 在性能上已经与 AMD Zen 5 和 Intel Lion Cove 最快的桌面实现达到了同等水平。这让 ARM 拥有了足够快核心,不仅能参与笔记本市场竞争,甚至可能在最注重性能的桌面应用中也有一席之地。

核心概览

Nvidia 的 GB10 芯片使用了十个 X925 核心,分为两个集群。其中一个 X925 核心可以达到 4 GHz,其他核心则以 3.9 GHz 紧随其后。Dell 在其 Pro Max 系列中使用了 GB10 芯片。

ARM 的 Cortex-X925 是一个庞大的 10 发射核心,几乎在各个方面都进行了加强。它的重排序能力比 AMD Zen 5 更强,L2 缓存容量与 Intel 最近的 P-Core 相当。与 ARM 的 7 系列核心不同,X925 几乎没有为降低功耗和面积做出妥协——这是一个彻头彻尾为最大化性能而设计的核心。

配置选项

按照 ARM 的传统,X925 有多种配置选项。不过,X925 省去了 A725 上的”极限省钱”选项:

  • X925 的所有缓存都采用奇偶校验或 ECC 保护,不再有 A725 可选的”无错误检测”方案
  • L1 缓存固定为 64 KB,取消了 A725 上的 32 KB 选项
  • L2 缓存可选 2 MB 或 3 MB
  • 可选择 128 位或 256 位的 ECC 粒度来权衡面积和可靠性

X925 通过 ARM 的 DSU-120 与系统其他部分接口,DSU-120 作为集群级互连,并承载最大 32 MB 的 L3 缓存。X925 和 DSU 支持 40 位物理地址,这对消费级系统来说已经足够,但显然不是为服务器应用设计的——服务器通常需要更大的 48 位甚至 52 位物理地址空间。

分支预测

性能和能效始于优秀的分支预测。ARM 深知这一点,X925 也没有让人失望。

分支模式识别

X925 的分支预测器能够识别极长的重复模式。在测试中,使用越来越长的随机模式进行分支(taken 或 not-taken),X925 的表现与 AMD Zen 5 非常相似。AMD 自 Zen 2 以来的核心就拥有非常强大的分支预测器,所以 X925 的结果令人印象深刻。

分支目标缓存

X925 的分支目标缓存同样出色:

  • 一级 BTB:容量大,每周期可处理两个 taken 分支。容量随分支间距变化,但似乎能追踪多达 2048 个分支。这个大容量使 X925 的策略更接近 Zen 5,而不是以前使用 32-64 条目微 BTB 的 ARM 核心
  • 更高级别 BTB:可追踪多达 16384 个分支,延迟为 2-3 个周期
  • 可能存在中级 BTB:4096 到 8192 条目,但难以确定

与 AMD Zen 5 相比,X925 在最快 BTB 级别的容量大致相当(取决于分支间距)。Zen 5 有更大的最大分支目标缓存容量,尤其是当它可以用单个 BTB 条目追踪两个分支时。不过,X925 仍然比几年前 ARM 核心有更多的分支目标存储空间——例如 Cortex-X2 最多只能追踪约 10K 个分支目标。

返回栈

一个 29 条目的返回栈帮助预测函数调用的返回(用 ARM 指令术语来说是 branch-with-link)。与 Intel Sunny Cove 及后续核心一样,如果返回点间距不够大,返回栈就无法正常工作。测试中将”函数”间隔设为 128 字节才得到清晰结果。

SPEC CPU2017 表现

在 SPEC CPU2017 中,Cortex-X925 的分支预测准确率在大多数测试中与 AMD Zen 5 大致相当,甚至可能略胜一筹:

  • 505.mcf541.leela:这两个测试一直挑战分支预测器,X925 在这两个测试中都领先
  • Intel Lion Cove 略落后于 Zen 5 和 X925

SPEC 的浮点负载对分支预测器更友好,但 X925 仍然表现出色,同样与 Zen 5 持平或略好。

前端设计

Cortex-X925 放弃了以前 ARM 世代使用的 MOP Cache(微操作缓存),这与其中端核心 A725 类似。虽然 X925 没有 A725 那样的严格功耗和面积限制,但许多相同的理由仍然适用:ARM 已经通过各种措施(如预解码和以较低时钟速度运行)来解决解码成本,MOP Cache 会显得多余。

预解码

在预解码方面,X925 的技术参考手册(TRM)表明 L1I 以 76 位粒度存储数据。ARM 指令是 32 位,所以 76 位将存储两条指令和 12 位开销。与 A725 不同,ARM 没有指明任何位子集对应 aarch64 操作码——可能是文档遗漏,或者 X925 的 L1I 以不保留原始操作码的中间格式存储指令。

前端吞吐量

X925 的前端可以维持每周期 10 条指令的吞吐量,但使用 4 KB 页面时会有奇怪的性能下降。使用 2 MB 页面时,只要测试适合 64 KB 指令缓存,就能达到每周期 10 条指令。

Cortex-X925 可以将 NOP 对融合为单个 MOP,但这种融合不会让吞吐量超过每周期 10 条指令。总的来说,X925 每周期前端吞吐量很高,但考虑到 Zen 5 和 Lion Cove 高得多的时钟速度,实际吞吐量略低。

对于更大的代码足迹,Cortex-X925 继续表现良好,直到测试大小超过 L2 容量。与 X925 相比,AMD Zen 5 依赖于其 op cache 为单线程提供高吞吐量。

重命名与资源分配

来自前端的 MOP 经过寄存器重命名,并为其分配各种簿记资源,让后端能够执行乱序执行,同时确保结果与顺序执行一致。

优化技术

在分配资源时,核心可以执行各种优化来暴露额外的并行性:

  • 移动消除:像以前的 ARM 核心一样,X925 可以消除移动指令
  • 零立即数处理:将零立即值移动到寄存器有特殊处理
  • 限制:与 A725 一样,如果有足够的寄存器到寄存器 MOV 靠近,移动消除机制往往会失败。这些优化都不能以完整的重命名器宽度执行,不过这对于非常宽的核心来说是典型的

与 A725 不同,X925 没有对 PTRUE(将 SVE 谓词寄存器设置为启用所有通道)的特殊处理。A725 可以像消除零化惯用语一样消除 PTRUE,而不分配物理寄存器来处理它。虽然这是一个小细节,但确实显示了 ARM 中端和高端核心线之间的分歧。

乱序执行引擎

CPU 的乱序后端在操作输入就绪时执行它们,让核心在等待长延迟指令完成时保持执行单元忙碌。

重排序窗口

不同来源给出了关于 Cortex-X925 重排序窗口的冲突信息:

  • Android Authority 声称 750 MOPs
  • Wikichip 认为是 768 条指令,基于 ARM 的幻灯片称 Cortex-X925 比 Cortex-X4 翻了一倍
  • 测试显示 X925 可以保持 948 个 NOP 在飞行中

由于 NOP 结果不确定,测试者尝试使用旨在避开其他资源限制的各种指令组合。混合写入整数和浮点寄存器的指令显示 X925 可以在其寄存器文件中最多分配 448 个重命名寄存器。

添加存储显示核心可以有略多于 525 条指令在飞行中。添加 not-taken 分支不会进一步增加重排序容量。因此,很难给 X925 的重排序缓冲区容量一个确切的数字,但可以肯定存在约 525 条指令在飞行的实际限制。这与 Intel Lion Cove(576)处于同一水平,领先于 AMD Zen 5(448)。

执行端口布局

ARM 设计了 Cortex-X925 的整数端以提供高吞吐量,同时控制整数寄存器文件和调度队列的端口数量。

八个 ALU 端口和三个分支单元分布在四个调度器中,这种布局最大化了常见 ALU 操作的对称性:

  • 所有四个调度器都有两个 ALU 端口和 28 个条目
  • 每个调度器都有一个可执行乘法的 ALU 流水线
  • 分支和特殊整数操作有分工:前三个调度器获得分支流水线,第四个调度器获得指针认证和 SVE 谓词操作支持

MADD 指令处理

aarch64 指令集有一个执行整数乘加的 madd 指令。Cortex-A725 和更老的 ARM 核心有专用的整数多周期流水线来处理 madd 和其他复杂整数指令。

Cortex-X925 则将 madd 分解为两个微操作,由其四个可乘法整数流水线中的任何一个处理。ARM 可能希望在不为每个可乘法流水线实现三个寄存器文件读取端口的成本下,增加该指令的吞吐量。

浮点单元

Cortex-X925 的 FPU 有六个流水线:

  • 所六个流水线都可以处理向量浮点加法、乘法和乘加
  • 所有六个流水线也支持向量整数加法和乘法
  • 不太常见的指令(如 addv)仍由四个流水线服务
  • X925 的 FP 调度器令人印象深刻,每个约有 53 个条目

作为参考,X925 的三个 FP 调度器中每一个的容量几乎与 Bulldozer 的 60 条目统一 FP 调度器相同。Bulldozer 使用该调度器为两个线程服务,而 X925 使用其三个 FP 调度器为单个线程服务。

高调度器容量和高流水线数量应该使 X925 在向量化应用中有良好表现,尽管其向量宽度只有 128 位。

内存子系统

内存访问是现代 CPU 上最复杂和最关键的操作之一。对于每次内存访问,加载/存储单元必须将程序可见的虚拟地址转换为物理地址,还要确定加载应该从较旧的存储获取数据还是从缓存层次结构获取。

地址生成单元

Cortex-X925 有四个地址生成单元(AGU)计算虚拟地址,其中两个可以处理存储。

TLB 层次结构

地址转换缓存在标准的两级 TLB 设置中:

  • L1 DTLB:96 条目,全关联
  • L2 TLB:2048 条目,8 路组关联,增加 6 个周期延迟

作为比较,Zen 5 有相同的 L1 DTLB 容量和关联性,但更大的 4096 条目 L2 DTLB(增加 7 个周期延迟)。另一个区别是 Zen 5 有单独的 L2 ITLB 用于指令端转换,而 Cortex-X925 使用统一的 L2 TLB 处理指令和数据。AMD 的方法可能进一步增加 TLB 覆盖范围,因为数据和指令通常驻留在不同的页面上。

存储转发

整数端的存储转发适用于包含在先前存储中的所有加载。这是对以前 ARM 核心(如 Cortex-X2)的改进,X2 只能将 64 位存储的一半转发给 32 位加载。

FP/向量端的转发仍然像旧的 ARM 核心一样工作,只对相对于存储地址的特定加载对齐有效。与最近的 Intel 和 AMD 核心不同,Cortex-X925 在存储和加载地址完全匹配时无法进行零延迟转发。

存储转发行为总结:

  • 整数端:所有包含在先前存储中的加载都可以转发
  • FP/向量端:只对特定对齐有效
  • 无零延迟转发能力

缓存层次

L1 数据缓存:64 KB,4 周期延迟(与 A725 相同),但利用更大的功耗和面积预算使容量发挥更大作用:

  • 使用更复杂的重引用间隔预测(RRIP)替换策略,而不是 A725 使用的伪 LRU 策略
  • 带宽更高:ARM TRM 称 L1D 有”4x128 位读取路径和 4x128 位写入路径”
  • 由于核心只有两个可存储的 AGU,无法维持每周期超过两次存储
  • 加载可以使用所有四个 AGU,可以从 L1 数据缓存达到 64B/周期

这与几年前支持 AVX2 的 x86-64 CPU 相比具有竞争力。然而,更新的 Intel 和 AMD 核心可以利用更宽的向量宽度和更快的时钟实现更高的 L1D 带宽。

L2 缓存:ARM 提供 2 MB 8 路和 3 MB 12 路 L2 缓存选项。MediaTek 和 Nvidia 选择了 2 MB 选项:

  • 延迟:12 周期
  • 这个低周期延迟让 ARM 在以较低时钟速度运行时仍能与 Intel 和 AMD 的 L2 缓存竞争
  • 读取带宽:32 字节/周期
  • 读-修改-写模式:约 45 字节/周期

像 AMD 一样,ARM 使 L2 严格包含 L1 数据缓存,这让 L2 可以作为监听过滤器。如果传入的监听在 L2 中未命中,核心可以确定它在 L1D 中也不会命中。

性能测试结果

SPEC CPU2017 整数套件

Cortex-X925 在 SPEC CPU2017 整数套件中表现出色。其整数套件得分与 Intel 和 AMD 最高性能核心在其最高性能桌面配置中的得分在误差范围内相当。

各测试分析

深入各个负载显示出复杂的图景:

核心受限负载:X925 与更高频率的 Intel 和 AMD 核心各有胜负

  • 548.exchange2500.perlbench:显示了时钟速度扩展的优势,Intel 和 AMD 更高频率的 8 发射核心轻松超越 ARM 的 4 GHz 10 发射核心
  • 525.x264:情况反转。Cortex-X925 能以比 x86-64 同类更少的指令完成该负载,同时保持大的 IPC 优势
  • 541.leela505.mcf:挑战分支预测器的负载,X925 继续表现出色
  • 520.omnetpp:内存受限测试,受核心外部因素影响很大

性能监控计数器数据显示 Cortex-X925 如何利用高 IPC 来弥补时钟速度劣势。IPC 是否足以匹配 Lion Cove 和 Zen 5 取决于具体测试,但总体而言,ARM 选择的 IPC 和时钟速度目标与 Intel 和 AMD 一样可行。

SPEC CPU2017 浮点套件

SPEC CPU2017 的浮点负载带来了挑战。Cortex-X925 在足够多的测试中落后于 Zen 5,使 AMD 的最新旗舰核心获得了明显胜利。不过,ARM 能够跟上 Intel Lion Cove 的步伐。

PMU 数据表明 X925 能够保持相对于竞争对手更高的 IPC。不幸的是,对于 X925,与 x86-64 相比,aarch64 指令集在几个测试中需要更多指令来完成工作。ARM 需要足够大的 IPC 优势来克服时钟速度劣势和工作表示效率较低的双重劣势。Cortex-X925 确实实现了高 IPC,但还不够高。

指令数问题

绘制指令数图表显示了 X925 面临的严峻情况:

  • 507.cactuBSSN
  • 521.wrf
  • 549.fotonik3d
  • 554.roms

这四个测试在 X925 上需要更多指令,而且差距不小。554.roms 是最严重的情况,使 X925 执行的指令是 Zen 5 的两倍多。这四个测试中,所有测试核心的平均 IPC 都远未达到核心宽度,但处理额外指令不是唯一问题。更高的指令数给核心乱序资源带来更大压力,影响其隐藏延迟的能力。

总结

ARM 现在拥有一个性能足以应对笔记本甚至桌面用例的核心。他们还展示了以适度的 4 GHz 时钟速度提供这种性能是可能的。ARM 通过在整个核心流水线中很好地执行基础知识实现了这一目标:

  • X925 的分支预测器快速且处于业界前沿
  • 乱序执行引擎真正庞大
  • 惩罚很少,权衡看起来经过深思熟虑

世界上没有多少公司能够构建这种性能水平的核心,所以 ARM 有很多值得骄傲的地方。

然而,获得高性能核心只是难题的一部分:

  1. 游戏负载:在消费领域非常重要,更多受益于强大的内存子系统而非高核心吞吐量。容量大于 32 MB 的 L3 选项的 DSU 变体可能有所帮助

  2. 软件生态系统:x86-64 强大的软件生态系统是另一个需要应对的挑战

  3. 合作伙伴依赖:ARM 仍然依赖其合作伙伴来实现其愿景

我期待看到 ARM 应对所有这些挑战,同时迭代其核心产品线以跟上 AMD 和 Intel 的改进。希望额外的竞争能为我们所有人带来更好、更实惠的 CPU。


关键要点

  1. 性能里程碑:ARM Cortex-X925 首次在桌面级性能上与 AMD Zen 5 和 Intel Lion Cove 达到同等水平
  2. 设计哲学:10 发射宽度、庞大的乱序执行引擎(~525 条指令重排序窗口)、放弃 MOP Cache 以简化设计
  3. 分支预测:业界领先的分支预测能力,在部分测试中甚至超过 Zen 5
  4. 向量宽度限制:128 位向量宽度是主要短板,在需要大量向量计算的浮点测试中吃亏
  5. 指令效率:aarch64 指令集在某些工作负载中需要执行更多指令,这是 ARM 需要克服的架构层面挑战
  6. 未来展望:ARM 已经证明可以在桌面领域竞争,但游戏性能、软件生态和合作伙伴支持仍是需要解决的挑战
comments powered by Disqus