Arm 刚刚发布的新架构 A78 与 X1,多核性能超过了苹果 A13。高通骁龙 875 和三星猎户座 1000 估计明年初会用上,麒麟 1020 还不确定。
2019 年对于 Arm 来说是振奋人心的一年,在移动端这家公司仍像往常一样如日中天,而在云服务领域,越来越多公司(如亚马逊、华为等)推出了基于 Arm 架构的服务器芯片,而英伟达也已宣布旗下 GPU 可以配合 ARM 处理器进行深度学习加速。但正如我们所知,Arm 芯片仍有其不足之处:过去几年中,Arm 的移动端 Cortex 内核一直活在苹果高度定制版 CPU 微体系结构的阴影之下,苹果的「黑科技」总是有办法能展现超出人们预期的能力——即使前年的 A12 单核性能也比骁龙 865 高出 15%(当然,多核性能是后者更好了)。这些差距尽管有技术上的原因,当然也有 Arm 在商业上的考量。不过这一切在下一代 Arm 芯片上看起来要有变化了,在昨天 Arm 2020 TechDay 活动上,人们期待已久的 Cortex-A78 确实终于面世了,而且这次 Arm 还放了一个大招:推出了 Cortex-X1 CPU 作为该公司的新旗舰架构。此举不仅令人惊讶,也标志着 Arm 向多种设备妥协的理念正在产生变化。首先我们还要从 Cortex-A78 来看起。两年前 Arm 提出的未来路线图就透露了代号为 Hercules 的架构,它就是 A78 的前身,其代表了最新 Austin 系列 CPU 微体系结构的第三次迭代,这一系列自 A76 开始。全新 Cortex-A78 很大程度上还是按照 Arm 传统的设计理念来打造的,它严格遵循着性能、功率和面积之间的平衡(PPA)来设计。在保持功耗不爆炸的前提上,A78 有了 20% 的性能提升——这是结合微体系结构改进和全新的 5 纳米制程工艺带来的改进。新一代 Cortex-A78 在 Arm 的路线图上已经存在了几年,一直被认为会是 Austin 系列中最小的一代微体系结构升级。作为 Arm 的 Austin 核心设计的第三次迭代,A78 遵循了 Arm 在 Cortex-A76 和 A77 上实现的 25-30%的 IPC 改进。由于 X1 CPU 架构的出现,A78 这次可以更加专注于效率的提升,我们自然地看到 Arm 的目标在于合理地提升性能。它仍然是 Arm 8.2 CPU,与 Cortex-A55 CPU 分享 ISA 兼容性。在 Arm 给出的设计模板上,我们可以看到每个 DSU(DynamIQ Shared Unit)可有 4 个核心,L3 缓存最多可扩展到 4MB。在核心的很多地方我们都可以找到微架构改进的痕迹。在前端最大的变化是分支预测器,它现在能够在每个周期处理最多两个分支,去年的 Cortex-A77 本质上每个周期只能解决一个。在 L1I 缓存方面,现在我们可以看到 Arm 提供了 32KB 的实现选项,它可以使客户进一步缩小内核面积,对性能的影响不大,但效率却有不少提升。在中核与执行流水线中,大部分工作都在于改善设计的面积和功率效率。我们看到了更多的指令融合案例,这不仅有助于提高内核性能,也还提高了电源效率,因为在相同的工作量下,它消耗的资源越来越少,能耗也变得更小。总体而言,如果单独发布 Cortex-A78,恐怕人们会感到有些失望,因为我们看到的是大量减少结构尺寸、牺牲少许性能提高效率的设计。考虑到 X1 的出现,这自然是有道理的。精准定义期待的性能,新的 Cortex-A78 应达到的功率和 X1 内核的面积增益。在 Cortex-A78 上,第一组对比数据代表 2021 年目标系统在台积电 5 纳米制程节点上 A78 将达到的提升。就性能而言,当内核的 ISO 功率目标是 1W 时,Arm 表示 A78 的实现将有 20% 的性能提升。同时,通过 ISO 性能比较,与 N7 上的 2.3GHz 的 A77 相比,A78 可以将功耗和能耗减少一半。查看和具有相似内核配置的 ISO 进程节点的比较,会发现 A78 的性能比 Cortex-A77 提升了大约 7%,同时功耗降低 4%,面积减小 4%。看起来制程对于性能的提升还是贡献了大头。有趣的是,这是 Arm 首次公布微架构的性能/功率曲线。对比 Cortex-A77 和 Cortex-A78,在较高的操作频率下成本较高,并且为了达到更高的操作频率,所需的电压也随功率的平方增加(P = f * V^2)。A78 达到 A77 的性能峰值点,将降低 36% 的功耗。在中间性能水平上,功耗降低 30%。在相同的功耗水平上,A78 的性能提升了 7%。Arm 现有的业务模型一直在尝试构建最广泛用户所需要的芯片,但这也产生了一个悖论:性能、功率和面积三者只能取其二。尽管可以肯定的是,苹果的 CPU 内核在技术上是强大的,但 Arm 性能劣势的一个重要因素是其业务需求不支持构建一个「超大核」。但随着公司业务的扩展,看起来新一代微架构已经和 Cortex-A76 时代有了显著的变化。粗略地看 Cortex-X1,你会发现它要比 Arm 天梯图上的任何其他核心都要高。X1 显然是基于 A78 打造的,他们都来自于 Austin CPU 设计团队,但 X1 最大的不同在于打破了以往对于功耗和面积的枷锁,专注于获得最高性能。就最终性能表现来说,与前代 Cortex-A77 相比,Cortex-X1 的整数性能提升了 30%;与同步推出的 Cortex-A78 相比,整数性能提升了 22%;机器学习性能更是较 Cortex-A77/78 提升了 100%。另一个值得注意的地方在于,Cortex-X1 的设计遵循 Arm 的新许可体系「Cortex-X Custom Program」,其允许客户在新微体系结构的设计阶段早期进行协作,并要求对芯片配置进行高度的自定义化。没错,高通就是这套许可之前版本的主要受益者。这款具有全新架构的 Cortex-X1 完全脱离了 Arm 往常追求「性能平衡」的设计哲学,转而追求纯粹性能,即使牺牲掉一些能耗和空间效率也在所不惜。与 Cortex-A78 相比,Cortex-X1 整体的提升情况是怎样的呢?需要注意的是,Cortex-A78 和 Cortex-X1 都基于 ARMv8.2 指令集,指令集是兼容的,但 Cortex-X1 是自定义 CPU 核心;
从解码带宽来看,Cortex-A78 是 4 路,Cortex-X1 增加到了 5 路,提升了 25%;
NEON 浮点从 2 条 128b 提升到了 4 条 128b,这意味着浮点运算性能实现了翻番;
从缓存方面来看,Cortex-X1 的 L1 缓存为 64K、L2 缓存为 1M、L3 缓存为 8M,这些都较 Cortex-A78 提升了一倍。
Cortex-X1 与 Cortex-78 的架构的整体对比详情。接下来一一分析 Cortex-X1 相对于前代 CPUs 和 Cortex-A78 都在哪些方面做了提升。首先,Cortex-X1 具有一个更强大的核心,主要体现在以下几个方面:L0-BTB 容量从 64 提升到了 96,增加了 50%;
可用指令取出带宽增加,具体来说,L1I 的取出带宽从 4 条指令增加至 5 条,提升了 25%,同时解码带宽也相应增加;基于 Mop-cache 的取出和重命名带宽提升了 33%,每周期指令从 6 条增加至 8 条;
2x Mop 高速缓存容量较 Cortex-A77 增加一倍。
其次,Cortex-X1 突破了带宽和深度的极限,主要体现在以下几个方面:与 Cortex-A78 相比,Cortex-X1 的分配带宽提升 33%,达到了每周期 8 指令;
无序窗口大小(out-of-order window size)提升了 40%,从 160 增加至 224 entry;
FP/ASIMD 执行带宽提升一倍,具体来说,Cortex-X1 的总带宽达到了 4×128b,相当于英特尔 Sunny Cove 或者 AMD Zen2 台式机核心。
最后,Cortex-X1 集成大带宽和高性能,具体体现在以下几个方面:L1I 和 L1D 的缓存配置为 64K,L2 最大缓存达到 1M;
提升存储子系统(memory subsystem)性能,以支持更大的动态负载和存储(in-flight loads and stores),将窗口大小提升了 33%;
L2-TLB 的大小较 Cortex-A78 增加一倍,较 Cortex-A77 增加 66%,覆盖了 2000 entry,在 4K 页面上提供最高 8M 的内存。
此外,与 Cortex-A77 相比,Cortex-X1 有 30% 的 IPC 提升,涵盖了 SPEC2006 的整数和浮点运算套件。Arm 在 Cortex-X1 的功率和面积效率方面相对模糊。如果供应商能够执行良好的实现,并且即将推出的 5nm 制程不会有坏消息的话,那么就会得到以下功耗预测:最后,如果你想要具体性能对比的数字,虽然从 Arm 的设计到最终手机跑分还有一段距离,但过去的经验表明这基本是八九不离十的:这一代厂商使用的 Cortex-X1 核心预计可以达到 Arm 宣称的 3GHz 目标,Cortex-A78 估计跑不到这么高。基于 A78 的核心,其功耗预计与使用 A77 的(如骁龙 865)核心相同,性能提升大约有 7%,加上少许的时钟频率提升,总体而言改进不甚明显,但也符合预期。X1 系统的性能提升将极具竞争力,甚至可以比骁龙 865 多出 37%,这会让它单核水平接近 A13,多核能力超出。不过,它的竞争对手也将是苹果还没发布的 A14。更有意思的是,X1 可以让 Arm 在性能层面上接近英特尔和 AMD 目前的桌面系统。如果说之前人们对于手机芯片打 X86 嗤之以鼻,现在倒是可以认真考虑一下了。功耗方面,保守地看 Cortex-X1 将使用 A78 的 1.5 倍功率,但即使 X1 的功耗是 A77/A78 的两倍,它在能效方面仍然可以与苹果竞争——核心性能提升很大程度上弥补了它功耗方面的不足。功耗的增加让 X1 的能耗效率比 A78 低 23%,比目前的骁龙 865 低 11-14%。这样的数字,看起来是可以接受的。多年以来,我们一直希望 Arm 能够获得不妥协的性能,而 Cortex-X1 似乎正是这样,实在令人兴奋。牺牲功耗提升性能,在手机上自然不是完美的选择。Arm 确实也提醒人们,在移动端上我们几乎不可能看到两个以上 X1 大核的设计。而对于追求效率的客户,只用 Cortex-A78 而不选择 X1 也是有可能的。看起来,带有 Cortex-X1 的手机 SoC 将会是 X1、A78 和 A55 三种核心混用。在发布活动中,Arm 也展示了高通常用的 1+3+4 核心配置,下一代的骁龙 875 很可能也将如此设计。与此同时,三星电子 SoC 设计团队副总裁 Joonseok Kim 也对新设计表示欢迎,或许下一代旗舰 Exynos 芯片也将出现 X1 的身影。不过三星是否会采用两块 X1 大核,以及三星的 5 纳米制程进度都是未知数。而正受到贸易战影响的华为海思,今年下半年的麒麟芯片采用最新 Cortex-X1 设计的可能性则更小。而且华为最近几代也倾向于不使用最新的 Arm 架构。刚刚发布的 Cortex-A78 和 Cortex-X1 给我们带来的感觉非常不同。A78 显然是最近一代架构中升级幅度最小的,与之相对的是,Cortex-X1 对 Arm 来说是一个巨大的改变,其 30% 的 IPC 提升大大超过了人们对于新架构每年 20-25% 左右提升的期待。这一步伐远远超过了竞争对手的能力范围。而且这一预测性能还在极度接近 X86 架构高端芯片的水平,着实令人兴奋。明年各家的旗舰系列手机,让我们充满期待。https://www.anandtech.com/show/15813/arm-cortex-a78-cortex-x1-cpu-ip-diverging