天玑 9400 是联发科的第二代全大核 SoC,搭载了 1 个 Cortex-X925 超大核、3 个 Cortex-X4 准超大核、4 个 Cortex-A720 大核。
Cortex-X925 作为最新的 ARM 内核,在规格上支持 ARM V9.2、SVE/SVE2(可选)等特性,但是受到 Android ABI 的限制,目前在安卓下实际上只支持 arm64-v8a。ARM 官方提供了一个在三星 Galaxy S22 上的 SVE2 实现样例,经过实测,目前在该样例里启用 SVE2 的话,程序会马上闪退回桌面。
Apple 的 M4 确认支持 ARM-V9 和 SME,网上也有人根据 GeekBench 6.3 测试结果推测 A18 支持 ARM-V9 和 SME。
让我们回到 Cortex-X925 或者更准确地说天玑 9400 版的 Cortex-X925 上,得益于 台积电 3nm 制程,X925 的频率比 X4 的 3.4GHz 提升了大约 6%,L2 Cache 增加了一倍达到 2MiB,L3 Cache(严格来说不属于 X925,L3 Cache 属于核间总线 DSU-120 的一部分)增加了 50% 达到 12MiB。
更大的 cache、更高的频率、更先进的工艺以及改进的流水线,让 Cortex-X925 的性能和能耗比更出色。
天玑 9400 搭载了 ARM 最新的 Immortalis-G925 MC12 GPU,相对于天玑 9300 的 Immortalis-G720 MC12 进行重大升级:
峰值性能提高 41%;
光线追踪速度提高 40%;
能效提高 44%。
Immortalis-G925 提供了透明度微映射 (OMM) 的支持,类似于我们在 Nvidia 的 Ada Lovelace上看到的。透明度微映射是一种通过识别完全不透明或透明的 alpha 测试网格或三角形来减少光线追踪工作负载的方法,GPU 可以跳过这些区域的着色器计算,由于 Alpha 评估是一个性能成本高昂的过程,这个技术可以提高光线追踪性能。
为了充分利用 OMM,Android 设备需要支持 Vulkan VK_EXT_opacity_micromap 扩展的 SoC,而天玑 9400 就是其中的第一款。
SPEC CPU2017 是由 Standard Performance Evaluation Corporation (SPEC) 提供的最新 CPU 性能评估基准,用于衡量和比较计算密集型任务的性能。
作为 CPU 业界性能评估的重要参考指标,SPEC CPU2017 对业界有着深远的影响,主要体现在以下几个方面:
性能评估标准:SPEC CPU2017 提供了一组行业标准的基准测试,用于评估和比较计算密集型任务的性能。这使得不同硬件和软件系统之间的性能可以有一个统一的衡量标准,有助于用户和开发者选择最适合的硬件和软件配置。
硬件优化:硬件制造商和设计师可以使用 SPEC CPU2017 基准测试来优化处理器、子系统和编译器的性能。通过了解基准测试中的性能瓶颈,硬件制造商可以改进设计,提高系统性能。
软件开发:软件开发者可以使用 SPEC CPU2017 基准测试来评估和优化他们的应用程序。这有助于确保应用程序在不同硬件平台上的性能一致性和可靠性。
市场竞争:SPEC CPU2017 基准测试结果被广泛用于市场营销和竞争分析。
研究和教育:在学术界和研究机构中,SPEC CPU2017 基准测试被用于研究计算机体系结构、编译器优化和性能分析。这有助于推动技术的发展和创新。
命名:
5xx 是 SPECrate 版本,用于评估单线程、较轻负载或者是多任务吞吐时的性能。
6xx 是 SPECspeed 版本,用于评估更重负载和多线程应用时的处理器性能。
工作负载和编译标志:
尽管名称相似,工作负载和编译标志常常不同。SPECrate 通常允许选择 32 位或 64 位编译,而 SPECspeed 通常需要 64 位编译。
内存使用:
SPECrate 可以选择 32 位或 64 位编译(例如 -m32 或 -m64 标志)。
SPECspeed 通常需要 64 位编译(-m64)。
OpenMP 指令:
SPECrate 从不使用 OpenMP 指令,它们在构建时被抑制(对编译器不可见)。
SPECspeed 可选地使用 OpenMP 指令,适用于所有 SPECspeed 2017 浮点基准和一个 SPECspeed 2017 整数基准(657.xz_s)。
禁用旗标:
SPECrate 禁止编译器并行化,包括 OpenMP 和编译器自动并行化。
其他差异:
有些对通过编译标志启用不同的源代码。例如,627.cam4_s 包含 -DUSE_COSP 标志,用于启用与 527.cam4_r 不同的云建模方法;而国际象棋程序 deepsjeng 则使用标志来指定其主要数据结构的大小(-DSMALL_MEMORY 或 -DBIG_MEMORY)。
SPEC CPU2017 缺乏能直接用于 Android 的测试工具集,我们在 Termux 下使用 GCC 14.2 编译器执行编译和静态链接,性能旗标为:
-Ofast -march=armv8-a -static
以及若干完全遵循 SPEC CPU2017 测试规则的兼容性旗标。
测试环境为 adb shell 内以命令行方式执行,由于 CPU2017 自带的测试工具需要 perl 支持,adb shell 缺乏相应支持,因此我测试时使用了自己编写的脚本,每个测试都运行三遍取其中耗时最短的测试结果,然后根据官方 CPU2017 参考平台结果计算出性能得分。
我们的测试结果取值没有遵循 SPEC CPU2017 要求的取三次测试结果中值的要求,这是因为我们考虑到后台有大量服务运行,容易造成影响性能干扰。
不过即使我们使用最短耗时作为测试结果,其实三次测试结果之间的差异也是极少,这是因为我们在测试的时候使用了 27 瓦的黑鲨 4 散热背夹。这个措施是为了确保测试结果稳定,否则三次结果的波动会达到 30% 的水平,使用散热背夹后,三次测试结果的差别不会超过 5%,具有高度的可复现性。
采用 3nm 后的 X4(MCP,大核)在整数和浮点方面比上一代采用 4nm 的 X4(MCP,大核)分别快 23% 和 17%。
新制程下的 A720 对比上一代 A720 则分别快 18% 和 19%。
需要注意的是,对于安卓设备来说,耗电测试是一个很容易受到后台干扰的项目,这里的测试值仅供参考。
从测试结果来看:
Cortex-X925(bcpu)的功率要比 Cortex-X4(bcpu)高大约 9%~18%,但是耗能低 6~11%。
Cortex-X4(3nm mcpu)的功率要比 Cortex-X4(4nm mcpu)高大约 32~33%,耗能高 7~13%。
但是另一方面,和 4nm Cortex-X4 bcpu 相比,Cortex-X4(3nm mcpu)的功耗表现要好很多,后者功率比前者低 11%~26%,耗能低 6%~31%。
X925 比同为超大核的上代 X4 提升了 8%~12%;
3nm 的 MCPU Cortex-X4 要比上代超大核改善了 6%~44%,这主要是两者的性能非常接近(整数性能更是优于上代),而前者的功耗要低不少。
3nm A720 的能耗比有所改善,但是基本属于同一水平。
动态分支预测在现代 CPU 中扮演着至关重要的角色,是一种提高处理器性能的重要手段,通过预测分支指令(即跳转指令)的目标地址,CPU 可以提前加载和执行下一步的指令。这样可以减少因分支指令导致的流水线中断,提高 CPU 的整体效率。
分支预测 MPKI 是每 1000 条指令的分支预测缺失指令数,比较容易反映分支预测缺失对整体的影响,适合用于不同处理器、系统之间的分支预测表现。
天玑 9400 内各内核对比:
X200 天玑 9400 新引入的 X925 整数 IPC 要比 3nm X4(mcpu) 高大约 8.3%,比A720 高大约 49.6%;
3 nm X4(mcpu) 整数 IPC 要比 3nm A720(scpu) 高大约 38%.
在浮点 IPC 方面,X925 IPC 值要比 X4 提升 32%,X4 比 A720 高大约 16.5%。
天玑 9400 各内核和天玑 9300+ 各内核对比:
X925 比 X4 4nm (bcpu) 的整数和浮点 IPC 各提升了 12% 和 20%。
X4 3nm(mcpu) 比 X4 4nm (mcpu) 的整数和浮点 IPC 各提升了 6% 和 3%。
天玑 9400 和 天玑 9300+ 里的 A720 IPC 没啥变化。
为了方便大家参考,我这里也提供每 GHz 得分,需要注意的是,这里给的每 GHz 其实源自于名义上的 CPU 频率,并非真实的 CPU 运作频率。
什么意思?这是因为现在的 CPU 都采用了 DVFS 动态调频技术,调频粒度也非常细,实际的 CPU 频率值并非 CPU 性能调节器提供的信息那样。
造成这个名义频率和实际频率差异的原因可能是温度、功耗、I/O 等。
测试都是在前台开着 Geekbench 的情况下执行。
从测试结果来看,X925 的 L1D 时延比天玑 9300+ 的 X4 BCPU 增加了的大约一个周期,可能因为 TLB 设计的缘故,在 L2 Cache 阶段 X925 的时延看来更好。
X925 访存阶段的时候如果小于 128MiB,时延要比其他内核低不少,同样可能是因为 TLB 的缘故。
两个内核的 MLP 并没有大的差别,都是在大约 12 个并发访存操作的时候不再提供显著带宽性能提升。
分支预测是乱序执行处理器非常重要的组成,最早好像是 IBM 的分立元件处理器 360/91 上实现,当年 Cyrix 的 5x86 可能是第一款号称支持动态分支预测的 x86 处理器,但是该功能居然在最终版本被禁用,同年稍后推出的 Pentium Pro 则应该是真正将动态分支预测落地实用的 x86 处理器。
分支预测常见的类型有 Direction Prediction 和 Indirection Prediction,前者最常见的有 if else,其跳转的目标是确定的(跳转的方向 A 或者 B 设定好的),而后者虽然也有 if else 等形式,但是跳转的方向则是不确定的(A 和 B 的位置是不确定的)。
以生活中的例子来举例。
例如你在早上出门的时候要判断是否带雨伞,如果天气预报说下雨,那你就会带雨伞,否则不带。对这种分支做预测,就是方向预测。
如果你要在一个大型商场找某个特定的商店,虽然知道商店的名字,但是商店位于哪里你本人并不知道,你需要查找商场地图才能获知。对这种分支做预测,就是间接预测。
下面让我们对这部分进行更深入的测试。
左下方属于最简单的分支序列,右上方则是最复杂的分支序列,理想的状态应该是完全平坦的底部或者说一马平川,曲面上升越陡峭,意味着分支预测器越容易发生预测缺失。具体个别点位上的变化不需要特别关注,主要看整体。
高通骁龙 8 Gen3 内的小核共享 L2 Cache,所以表现出这两个小核的时延较低。
Vivo X200 搭载的天玑 9400 集成了 NPU 890 提供了 9847 的总分,较上一代提升了 35%,现在手机也都部署端侧大模型了,Vivo X200 的用户无疑可以从中受益。NPU AI 加速测试。
相对于去年各大手机厂商纷纷推出各自的 AI 大模型应用而言,今年的 AI 应用能力更强的同时,还可以更浅层地调用,这些需要强大处理器能力来支撑。
天玑 9400 是今年最先推出的新旗舰,以目前的测试表现来看,性能、功耗等方面都做到了很好的平衡,全大核的成功再次得到了验证。
对于手机这种产品来说,单纯处理器强大其实是不够的,必须经过手机厂商深度调优并在软件层面上做优化才能充分发挥其能力。