👆如果您希望可以时常见面,欢迎标星🌟收藏哦~
来源:内容由半导体行业观察(ID:icbank)编译自chipsandcheese,谢谢。
2023 年 10 月,高通发布了其最新的笔记本电脑 SOC 系列,称为 Snapdragon X Elite (SDXE)。从那时起,这款芯片就引起了人们的广泛关注,因为它使用了高通于 2021 年初收购的 Nuvia 团队的定制 ARM 内核。

这使得该芯片在 ARM SOC 领域(Apple 之外)成为相当独特的产品,因为大多数公司选择从 ARM 自己购买现成的核心 IP。随着 SDXE 笔记本电脑在 Computex 上发布的预期,人们对该芯片感到非常兴奋,但有关内核本身的信息却很少。
幸运的是,不久前上传了一个 LLVM 补丁,讨论了 Snapdragon X Elite 中 Oryon 核心的一些结构布局,所以让我们深入了解一下。
Pipeline说明
从分支错误预测惩罚(Branch Mispredict penalty)开始,Oryon 核心的错误预测惩罚为 13 个周期。Zen 4 的平均损失也是 13 个周期,但这取决于 Zen 4 从 Op Cache 中获取数据的频率。
按照AMD Zen4 微架构软件优化指南所说,分支错误预测惩罚的范围为 11 到 18 个周期,具体取决于错误预测分支的类型以及指令是否从 Op Cache 馈送。常见情况的惩罚是 13 个周期。
继续讨论 L1 数据缓存,遗憾的是该补丁中没有说明 L1D 的大小,但确实说明了 L1D 的加载使用延迟为 4 个周期。这对于主频在 4.2GHz 左右的现代核心来说相当标准,并且使 L1D 的绝对延迟在一纳秒以下。这一绝对延迟与 Apple 的 Firestorm 核心相当,但 Firestorm 具有约 3.2GHz 的 3 周期 L1D。
宽度、管道和调度程序
Oryon 每个周期最多可以发出 14 个操作,其中整数侧有 6 个管道,矢量侧有 4 个管道,内存侧有 4 个管道。
整数方面:从整数侧开始,共有 6 个管道和 6 个 ALU。
与其他高性能核心相比,Oryon 的整数吞吐量与 Firestorm 最相似。一个区别是 Oryon 上每个周期 4 个吞吐量的比较,而 Firestorm 上每个周期 3 个吞吐量的比较。
Oryon 的 120 个条目整数调度程序与其 x86 同类调度程序相比相当大。Zen 4 的整数调度器中共有 96 个条目,但是这 96 个条目还必须处理所有内存操作。Golden Cove 的统一数学调度程序中有 97 个条目,但顾名思义,该调度程序必须处理整数和向量运算。
与其他 ARM 内核相比,Oryon 处于较大范围,Cortex X2 的整数调度器有 96 个条目,而 Neoverse V1 的整数调度器有 124 个条目。然而,Apple 的 Firestorm 和 M3 P-Core 在各自的整数调度程序中总共有 156 和 160 个条目,比 Oryon 的调度程序大约 30-33%。
现在,将我们的目光转向核心的 Vector 一侧,与 Firestorm 和 M3 P-Core 的相似之处变得更加明显。
Oryon 和 Firestorm 的矢量指令吞吐量和延迟几乎相同;唯一的区别是 Oryon 对于 SIMD INT MUL 有 2 个周期延迟,而对于 Firestorm 则有 3 个周期。
Oryon、Firestorm 和 M3 P-Core 共有的另一件事是缺乏 SVE 或 SVE2。这意味着这 3 个核心可以执行的唯一 SIMD 操作是 NEON 操作。与 Zen 4 或 Server Golden Cove 支持的 AVX512 操作相比,NEON 是一组更加有限的操作。
现在转向调度程序布局,Oryon 再次与 Firestorm 和 M3 P-Core 相似。
Oryon 的矢量调度程序非常大,有 192 个组合条目,即使与 x86 对应程序相比也是如此。Zen 4的向量调度器和非调度队列加起来只有128个条目。转向 ARM 领域,Cortex X2 的组合向量调度程序和非调度队列只有 75 个条目。
转到 Apple 方面,这里的情况与整数方面相反:Oryon 具有更大的向量调度程序,每个调度程序有 48 个条目。Firestorm 和 M3 P-Core 也有 4 个大小相等的向量调度程序,但 Firestorm 每个调度程序只有 36 个条目,而 M3 P-Core 每个调度程序有 41 个条目。
转到 CPU 的最后一个主要部分——存储方面,我们将首先从调度程序布局开始。
LLVM 补丁表示内存调度程序有 4 个端口,并且存储管道与加载管道共享端口。
LSU 有 4 个端口 p6 ~ p9(ls0 ~ ls3), p10/p11(std0, std1) 必须与 ls0~ls3 配合使用
Qualcomm Oryon 调度程序 LLVM 补丁线 44
这表明 Oryon 有 4 个管道,所有管道都可以处理加载操作,但其中只有 2 个管道可以同时处理存储操作。稍后在 LLVM 补丁中强化了这一点,这意味着存储指令可以填充内存调度程序中的所有 64 个条目。
存储 STA/STD 管道组合的说明
def ORYONST : ProcResGroup<[ORYONST0, ORYONST1]> {
让缓冲区大小= 64;
Qualcomm Oryon Scheduler LLVM 补丁行 167-169
现在转向内存吞吐量和延迟,Oryon 每个周期总共可以执行 4 次加载,无论它们是标量加载还是矢量加载。这比该系列中的任何其他 CPU 都要多。与其他 ARM 内核相比,Oryon 可以处理多 33% 的负载带宽。与 x86 相比,Oryon 的负载带宽与 Zen 4 相同,但负载带宽仅为 Golden Cove 的 2/3。
过渡到存储方面,Oryon 具有与其他 ARM 内核以及 Zen 4 相同的存储带宽,但同样只有 Golden Cove 的一半。就总带宽而言,Oryon 可能与其他 ARM 内核具有相同的带宽,但仅为 Zen 4 和 Golden Cove 总带宽的 66%。
根据这个LLVM补丁,与Firestorm有很多相似之处。考虑到 Nuvia 团队的很多成员都参与了 Firestorm 的工作,这并不令人意外。但这并不是说 Oryon 是 Firestorm 的复制品,LLVM 补丁强调了两个内核之间的一些关键差异。我们期待在使用 Snapdragon X Elite 的笔记本电脑上架时看到 Oryon,因为除了苹果和现在的高通之外,目前只有华为正在尝试为客户端设备制造高性能定制 ARM 内核。
参考链接
https://chipsandcheese.com/2024/05/15/qualcomms-oryon-llvm-patches/
点这里👆加关注,锁定更多原创内容
END
*免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。
今天是《半导体行业观察》为您分享的第3771期内容,欢迎关注。
推荐阅读
『半导体第一垂直媒体』
实时 专业 原创 深度
公众号ID:icbank
喜欢我们的内容就点“在看”分享给小伙伴哦
继续阅读
阅读原文