我一直都觉得三星 Exynos 还是挺有趣的 SoC:我记得之前翻译 AnandTech 的苹果 A12 和三星 Exynos 9810 评测文章的时候,有句话我印象特别深刻:“采用 M3 核心的三星 Exynos 9810,能耗达到苹果 A11 的两倍,性能却落后了 55%(注意,是 A11)!”
尔后,AnandTech 通过魔改 Exynos 9810 系统层面调度机制的方案,达成了系统性能相较原版的一个显著提升。这些其实都表明,三星在移动 SoC 设计和制造上都可以认为是整体掉队的。所以也不难理解,三星为什么决定放弃自研 CPU 架构。Exynos 990 是三星最后一款采用自研架构的 SoC。
想必很多同学也已经听说了,这次 Exynos 990 相比竞争对手依然有差距的事实。这里我将 AnandTech 的一些评论和测试做了综合,分享给各位。本文的绝大部分数据和内容均来自 AnandTech,若需查看英文原文,可拉至本文末尾。我觉得这篇文章能够非常到位地阐释,为什么三星放弃了自研架构,因为无论从哪个层面来看,其自研架构不仅问题极多,而且还远远及不上 Arm 的架构。
请注意,注意区分本文的几个词汇:能耗 energy,是指跑测试消耗的能量,单位焦耳;功耗(或功率)power,是指单位时间内消耗的能量,单位瓦特;功效 power efficiency,一般是指每瓦性能;能效 energy efficiency,这里特别指每焦耳的性能——这个性能可以是跑的分值,也可以是游戏帧率。
这里需要强调一点,我们日常所说的“能效比”,或者“效率”指的其实是这里的 power efficiency。本文的能效,严格意义上都不是用的这个通俗的意义。
综述
三星 LSI 的这颗旗舰 SoC 是在去年 10 月份宣布推出的:它在 CPU 大核心上采用了三星新一代的 M5 架构;中型规模的核心则升级到了 Cortex-A76;采用新的 Mali-G77 GPU。Exynos 990 采用 7nm LPP 制造,即芯片的某些部分采用 EUV 光刻。
Exynos 9820
这里看一下上一代的 Exynos 9820,,也就是 Galaxy S10 采用的 SoC。以此可了解 Exynos 990 做了怎样的提升和变化。
Exynos 9820 的大核心簇是三星定制的 M4 架构,它跟 Arm 公版架构的差异还是比较大的:从互联到缓存一致性,都采用三星的 Coherent Interconnect。Andrei Frumusanu(AnandTech 著名博士编辑)对这种结构有做核心到核心的延迟测试,起码它比 Arm 公版架构的延迟是要大出很多,当然也比骁龙 865 明显更糟糕。
Exynos 990
Exynos 990 相较 Exynos 9820 的改进其实还是比较多的。首先三星这次终于在小核心上,将 A55 的 L2 cache 推升到了 64KB。要知道 Exynos 9810 和 9820 在这方面就差一截,所以这两款 SoC 相比以前的骁龙 SoC,在效率上就有差距。不过 64KB L2 cache,这个容量仍然只有骁龙 865 的一半(128KB),三星在 Arm 核的 cache 配置上还是比较保守。
中核心从先前的 Arm Cortex-A75 升级到了 A76,频率也有提升,从 2.3GHz 提到了 2.5GHz,基于负载不同性能提升可达 38%-50%,也是 Exynos 990 大部分工作的主要动力来源。中核心的 L2 cache 仍然是每个核心 256KB,共享的 L3 cache 也是比较保守的 1MB。
大核心部分,早前代号为 Cheetah(猎豹)的 M4 这次升级到了代号为 Lion(狮子)的 M5——也就是三星的自研架构。其最高频率仍然是 2.73GHz,三星宣称会有 20% 的提升,应该主要是来自 IPC 提升。
外部可以观察到的最大变化,在于 M5 大核心不再享有各自的 L2 cache,而是 2MB 的核心共享 L2 cache。现如今,这样的微架构设计变化还是比较少见的。这一变化,从核心到核心的延迟降低能看得出来,毕竟这次的缓存一致性是在更低的 cache 层级发生的,和 CPU 也靠的近。
Exynos 990 采用三星 7LPP 工艺制造,部分采用了 EUV 光刻。TechInsights 提到,Exynos 990 是首个采用完整 7LPP PDK(Process Design Kit)设计的芯片,这一点和先前的 Exynos 9825 还是有不同的)。
三星宣称,7LPP 工艺相比之前的 8LPP 有 7% 的性能提升,应该也意味着同频功耗的降低。实际是个什么情况呢?我把 AnandTech 的内容做个概括:
一
Exynos 990 的 binning(可以理解为根据不同的芯片体质,对芯片进行等级分组)看起来是比较糟糕的,而且绝大部分芯片都位列相对较差的体质分组,甚至可能更糟,这表明这颗芯片的良率可能很不理想。
二
M5 的核心电压不是很乐观,不仅在同频下相比上一代 M4(8LPP)没有提升,而且随频率升高还表现更差了。M5 需要更高的电压,才能达到先前相同的频率:同样 2.75GHz 最高频率,M5 的峰值电压为 1118mV,而先前的 M4 为 1068mV。
三
从功耗与效率曲线来看,纵观性能变化周期内,M5 核心显然在效率上弱于 Cortex-A76(同一个 Exynos 990 SoC 上的);Exynos 990 A55 小核心的效率比先前的 Exynos 9820 要理想很多;
四
Exynos 9820 时期,三星引入了一种更为复杂的 scheduler,基于应用跑的 ISA(指令集结构)选择不同的功耗模型。这种机制会分别追踪 32bit 和 64bit app,然后根据不同 CPU 在不同执行模式下的微架构性能和功耗特性,做出调度决策。三星宣称这种机制能够提升效率,更多的工作可能会分派给 Arm 中核心——因为 A76 在 32bit 执行效率上会更好。
从 SPECint2006 的综合成绩来看,其实很难看出这种执行模式有什么大差别。但某些个别的测试子项,比如说 456.hmmer——这是个偏向执行能力的测试,就能看出 A76 核心的优势——A76 核在这个项目的成绩上的确领先于 M5 核。从这个角度来看,三星的调度策略是合理的。
另一个例子是,400.perbench 在 32bit 模式下,A76 核心同样优于 M5 核心,所用功耗还低了超过一半。不过更偏存储性能的负载,M5 在跑分上还是有优势的,这可能与两者的 cache size 差异有关。
AnandTech 在文章中提到,这是 AnandTech 首次针对 AArch32 和 AArch64 两种执行模式,分别公布跑分成绩。
五
在存储延迟测试方面,Exynos 990 相比 Exynos 9820 还是有提升的,但和骁龙 865 比起来却有差距。
下面这几张图是 Exynos 990 M5(大核心)、Exynos 990 A76(中核心)、Exynos 9820 M4,以及骁龙 865 A77(大核心)的存储子系统延迟对比。很显然,相比 Exynos 9820,可以看到 Exynos 990 的 L2 cache 在尺寸上变大。M5 核心当然还是会有一些优势,比如说 3 周期的 L1 延迟设计,Arm 核心都是 4 周期。
去年的 M4 核心其实就存在 TLB 问题(Translation Lookaside Buffer,一种页表的 cache,是一个内存管理单元,用于提升虚拟地址到物理地址转换速度),今年的 M5 这个问题并未得到合理解决。
这会导致一些比较无语的问题,比如说随机访问超过 2MB 的区块,可能还比 1MB 尺寸内的速度更快。相比 L2 cache 区域,L3 的 cache line 访问,TLB 未命中惩罚的访问延迟还更低…(这也可能是 16-64MB 区块内,Exynos 990 弱于 9820 的原因)。
而 A76 核心部分显然就比较符合预期了。A76 的 prefetcher 原本就有比较大的提升,在 Exynos 990 之上也有体现,两个 A76 中核心在某些数据访问模式上是优于 M5 核心的。实际上,三星自 M3 设计以来,在存储子系统方面就有比较大的问题,到 M5 也依旧未能解决。
六
从 SPECint2006 的测试结果来看,Galaxy S20 的两个不同 SoC 版本,骁龙 865 相比 Exynos 990,各方面都有优势。
主要表现在骁龙 865 显然在能效/功效方面有着比较大的提升。
早前 Arm 曾表示,A77 核心相比 A76 会在性能上有进步,但两者的功效(energy efficiency)其实是差不多的——也就意味着 A77 需要以功耗换性能。但骁龙 865 则显然超出了 Arm 的预期,不仅使用更少能耗(energy),而且功耗(power)也更低。
这可能和骁龙 865 相比上一代改用台积电 N7P 工艺有关,这或许表明 N7P 工艺相比 N7 的确有显著提升。
Exynos 990 相比上一代当然也有性能提升,但肯定比不上骁龙的步子。其中有一些成绩比较诡异,比如说 403.gcc 的成绩还不如上一代。更悲伤的是功耗(power)和能耗(energy)。Exynos 990 的能耗其实跟 Exynos 9820 很相近,有时略好,有时又略差。但在有性能提升的情况下,功耗却也明显发生了飙升。
其实功耗高,有时问题也不算大,只要能换得所需的性能即可,苹果即是个中翘楚——至少能效比是不错的,而峰值性能对于提升体验也是有帮助的。但这并不适用于 Exynos 990,因为 Exynos 990 显然性能也并不怎么样。
SPECfp2006 测试情况类似,虽然 Exynos 990 的性能有提升,但却是以高很多的功耗换来的——这个代价其实是得不偿失的。某些测试,比如 447.dealII 和 470.lbm,在能效(energy efficiency)方面甚至还有 30-40% 的倒退。也有好的一面,433.milc 这个子项,M5 的成绩比 M4 提升超过一倍,但功耗也就提升 50%。
在整数测试的综合成绩中,Exynos 990 相比 Exynos 9820 有 17% 的性能提升;浮点测试综合成绩,则有 36% 的提升。但 Exynos 990 相较骁龙 865,在这两个大项上仍然分别落后了 11% 和 3%。
绝对性能可能还不是什么大问题,悲剧的其实主要是能耗(energy)问题。Exynos 990 付出了双倍的能耗,性能却还略弱于骁龙 865!
六
很多同学可能会想,三星的 7LPP 工艺是不是严重不给力。有个对比对象,高通骁龙 765G 用的就是三星 7LPP 工艺。骁龙 765G 的 A76 核心频率 2.4GHz,而 Exynos 990 中核心的 A76 频率是 2.5GHz。这两者的性能和能耗非常相近,都明显弱于台积电造的 A76 SoC(尤其是 Kirin 990)。
可见三星 7LPP 的确不如台积电的 N7/N7P/N7+ 工艺,AnandTech 给的数据是,在功耗表现上差距可能达到了 20%-30%。
七
不过就算把 7LPP 的差距算上,三星 M5 核心依然被 A77 核心远远甩在身后。Frumusanu 说,虽然没有看到骁龙 865 和 Exynos 990 的 die shot,不过他认为 M5 核心在面积上至少比 A77 大了 3 倍。
综合来说,Exynos 990 相比骁龙 865,效率差 2 倍,性能差 10%,PPA 总体就差了 6-7 倍。
八
在 AI 方面,三星宣称 Exynos 990 的 AI 性能为 10 TOPS,综合了 NPU 和 DSP。理论上,Mali G77 应该也是可以参与 AI 运算的。这其实一直也不是三星的长项。不过 Exynos 990 相比前代在 AI 算力上的提升很大。
从 AnandTech 的测试结果来看,NNAPI 的 INT8 测试,骁龙 865 更强。不过这一点其实仍有待商榷,因为它和软件层面关联很大,Frumusanu 也认为三星很有可能面向 NNAPI 时只给了 GPU 资源。在 NNAPI FP16 这样的测试里,Mali G77 就有优势;FP32 测试,Exynos 990 也表现很好。总体上,AI 性能这部分,Exynos 990 表现是十分出色的。
九
GPU 部分,这个其实也是我个人一直想要去仔细看一看的。Exynos 990 应该是首款采用 Mali G77 GPU 的 SoC(也可能是天玑?),而且也是首款采用 Valhall 架构的 GPU。去年我写移动 GPU 对比的时候有提到,Mali G77 很可能会在性能上实现对 Adreno 阵营的反超。
Exynos 990 在 GPU 方面选择了 11 个核心的 Mali G77,频率提升到 800MHz,电压也随之提高了。由于 Exynos 990 也支持了 LPDDR5,图形计算面对 3D 渲染这类带宽要求比较高的工作时,理论上会有更高的效率。
十
GPU 性能测试,除了骁龙 865 版 Galaxy S20 Ultra 在 3DMark Sling Shot 3.1 Extreme Unlimited - Graphics 的测试中,有作弊的嫌疑,这里就不放出具体成绩了。后续测试则极大程度免除了作弊问题,所以我们着重看一些图形测试的子项。
峰值性能上,Exynos 990 和骁龙 865 比较接近,但持续性能前者就会明显比较弱了。这里面不知道有没有系统散热设计的锅,但这是基于同一个散热设计。Basemark GPU 1.2 测试里,Galaxy S20 Ultra 骁龙 865 版的图形性能,持续状态也只损失了峰值性能的 22%。而 Galaxy S20+ 的 Exynos 990 版则在持续性能上还比不过上一代的 Galaxy S10+。
但这里面的温控机制其实也很迷,Galaxy S20 Ultra 的 Exynos 990 在持续性能上表现最糟糕——还比不上 S20+,可能应该从其他层面来找问题根源。
GFXBench 图形测试绝对性能的情况也类似,骁龙 865 和 Exynos 990 的图形计算峰值性能差不多,而 Exynos 990 显然没办法持续稳定,很快因为温控而产生性能较大程度的滑坡,其实这个滑坡幅度比 Exynos 9820 还要大。
而这项测试的功效(power efficiency)表现,也是今年高通 Adreno 被盛赞的一个点,即 Adreno 650 的效率跨越甚大,虽然绝对性能比不上苹果,但效率已经追上苹果 A13 了。至于 Exynos 990,情况就比较悲剧——尤其跟进步这么大的 Adreno 比起来,实在是有点拿不出手。我觉得光从每瓦帧率来看,情况还算不上太糟,Aztec Ruins - Normal - Offscreen 测试,骁龙 865 比 Exynos 990 有 35% 的效率优势。
Manhattan 3.1 与 T-Rex 测试也比较类似,Exynos 990 的 Mali G77 都可以用悲惨来形容,持续性能都只有峰值性能的一半,而且功耗还很高,甚至要高于上一代。
整体来说,Exynos 990 的图形性能似乎和上一代 Exynos 9820 一个水平。三星可能是有意抬高 Mali GPU 的频率,令峰值性能可与高通的 Adreno 差不多,但代价就是高得多的功耗和悲惨的持续性能。其实上面的表格中有出现联发科的天玑 1000L,都是 Mali G77,它的表现是好于 Exynos 990 的。
十一
续航测试部分,其实也没什么意外吧。Exynos 990 与骁龙 865 版本续航的差距大约在 10-13%,是大于三星、高通上一代的差距的。
这里我没有加入 AnandTech 的系统性能测试,有兴趣的可以去看一看 AnandTech 测试全文。不过我觉得,涉及到堆了很多软件的整个系统,则三星肯定会有意削弱两者的这种差距(虽然续航的差距还是无法避免)。
其实从上面的很多点滴都不难发现,三星不存在任何继续自研 CPU 架构的必要性(尤其传说 M6 还支持超线程),因为问题太多了。而且在某些决策上,三星 LSI 自己都没有对于 M5 核心的信心,比如针对 32 位、64 位不同 app 的 scheduler 机制;以及缓存方面的决策。
但我觉得,放弃自研核心,就爱好者的角度,仍然是件值得惋惜的事情。这样一来,移动 SoC 主战场上,自研 CPU 架构,也就剩苹果一人了。
阅读原文:
pidaneng 2020-9-4 01:47
T.b.K 2020-6-17 09:15