炼数成金 门户 大数据 Linux 查看内容

华为海思 Kirin 970 性能剖析:GPU 还烧吗?NPU 真的那么神?

2018-6-5 14:46| 发布者: 炼数成金_小数| 查看: 17517| 评论: 0|原作者: 欧阳洋葱 译|来自: AnandTech

摘要: 现如今真正拥有垂直整合能力,而且能够完全把控其芯片产品的移动 OEM 厂商只有两家,那就是苹果和华为;甚至某种程度上,华为的整合程度更甚,因为华为具备内部研发 modem 的能力。华为旗下半导体子公司,海思过去几 ...

网络 测试 神经网络 GPU Android

写在前面的话:
这也算是周三科技一次赶时髦,翻一篇近期的文章。这篇评测依然来自国外媒体 AnandTech,原文题为:《HiSilicon Kirin 970 - Android SoC Power & Performance Overview(海思 Kirin 970 - Android SoC 功耗与性能概述)》本文在技术层面的干货其实是比较少的(而且浪费了一些篇幅在没必要的技术内容上),大体上都是分析性内容。但文章就 Kirin 970 这颗 SoC 得出了不少极有价值的结论,各位可以仔细看一看。

另外 AnandTech 在评测 Kirin 970 性能、能效时,拉来了高通和三星的旗舰竞品,所以还从总体上描绘了现如今移动 SoC 领域的现状,此文还是挺具可读性的。

CPU 部分已经不是评测重点,毕竟随着高通去年的骁龙 835 开始采用 ARM 的 BoC 授权形式,加上骁龙 820 的表现其实没那么尽如人意,高通现如今已经基本算是放弃深度定制 CPU 架构的路线了。各位去看骁龙 835 的浮点运算性能,其实比骁龙 820 差了一截——浮点运算原本一直都是以往 Kryo、Krait 之类核心的强项;而骁龙 835 的整数运算性能有较大提升。这基本上已经表明,骁龙 835 的 Kryo 280 本质上只是 A73 的一个小改款,高通已经放弃“胖”核心思路。

于是战场更多转移到了 GPU——高通 Adreno 在整个 Android 阵营的 SoC 中,GPU 表现到目前为止是越来越一骑绝尘了,这也会在文章中提到。去年我也编译了 Kirin 960 的评测,GPU 部分用 AnandTech 的话来说是他们见过能效最差的没有之一,而且功耗发热高到离谱,所以今年 Kirin 970 的 GPU 表现如何就更受关注了。另外 Kirin 970 的 NPU 也算是本文探讨的一个重点,虽然谈得并没有很详细,毕竟有关这颗 NPU 的资料,到现在也还是不多的。

AnandTech 对于 Kirin 970 的总体评价很高,对华为也给出了好评。由于文章篇幅较长,按照常规,我还是把本文一些有趣的结论罗列出来;如果你没耐心看完全文,看这部分罗列即可:

CPU 与 GPU 部分
近 2 年,移动 SoC 的 CPU 部分性能变化都很小,不管三星、华为还是高通都如此;
但近两代 SoC 的 CPU 能效却出现了飞跃,即在实现相同性能的前提下,效率高了非常多;

Kirin 970 的 die size 仅为 96.72mm2,而 960 为 117.72mm2——要知道,这是在 970 的 GPU 多了 4 个核心,另外还增加 NPU 之类单元的前提下;
就性能而言,Kirin 970 的 CPU 相比 960 出现了小幅下滑;

Kirin 970 CPU 部分的性能在某些测试项中,只比 2 年多以前的 Kirin 955 快了 10%;
从测试结果来看,骁龙 835 的 CPU 性能稍强于 Kirin 970,但总体处在同一水平线,高通所用的内存控制器及子系统有着更高的效率,所以前者在对内存有一定要求的测试中有优势;

Exynos 8895 在对内存有一定要求的测试项目中,被华为和高通全面斩杀;
一个冷知识,由于骁龙 820 采用的仍然是高通深度定制的核心,所以其浮点运算性能在测试中默秒全;
所有受测 SoC 的 CPU 相较上代都出现能效飞跃,Kirin 970 的 CPU 相比 960 最多有 30% 的能效提升;骁龙 835 在效率方面在某些测试项中更是比骁龙 820 翻了一倍;

Kirin 970 的 GPU 部分(12 核 Mali-G72),相比 960 的 GPU(8 核 Mali-G71),性能提升最多 20%;
Kirin 970 的 GPU 性能跑分与 Exynos 8895(20 核 Mali-G71)互有胜负;
Kirin 970 的 GPU 能效相比 960 完成飞跃,相同性能下效率提升将近 100%,峰值性能效率提升 55% 左右;
Kirin 970 的 GPU 能效、功耗弱于三星 Exynos 8895,尤其功耗数据依然不够好看;
但总体而言,Kirin 970 的 GPU 已经不再构成其短板(超大胜果);
但是、but、しかし,无论是骁龙 820/821 还是骁龙 835,高通 Adreno GPU 的能效都甩华为和三星九条街,在所有项目中持续领跑;
Kirin 970 GPU 虽然功耗、能效比 960 有极大提升,但平均功耗仍远高于发热控制阈限,所以其持续跑分会出现 GPU 性能的明显下滑;
AnandTech 认为,高通是一家把移动 SoC GPU 做到位的厂商;
AnandTech 声泪俱下声讨现在的厂商毫无责任心,以后再这么搞,以后“我们不公布 GPU 峰值性能了”,玩儿蛋切吧...

NPU 部分(所谓的“人工智能”芯片)
现如今的卷积神经网络 IP 模块(如华为的 NPU),都不参与模型训练过程,而是为加速模型执行而设立的专门硬件;

GPU、DSP 其实也能用于完成 NPU 的工作;
高通也有开发神经网络执行加速的 API——可以利用 DSP 和 GPU 进行硬件加速;
NPU 跑分,AnandTech 采用鲁大师进行,这是因为鲁大师是为数不多的支持华为、高通两家神经网络模块 API 的基准测试工具(鲁大师本局完胜)...
高通骁龙 835 的 Hexagon DSP 的神经网络任务执行性能,相比神经网络跑在 CPU 上,能快出 5-8 倍;

但 Kirin 970 的 NPU 跑神经网络的性能依然比骁龙 835 的 Hexagon DSP 快了 3-4 倍;

一个冷知识:预计骁龙 845 的 Hexagon 685 在性能表现上将是 835 的 3 倍(华为无语凝噎:靠 DSP 想超越我 NPU?...不过 DSP 毕竟不是神经网络工作负载的专用设备,它还需要处理别的工作);

什么人工智能?都是吹!不就卷积神经网络的 inference 工作?
NPU 目前的使用场景还非常有限,但 AnandTech 表示看好;
一个冷知识:Kirin 970 内部所用的 DSP 是 Cadence Tensilica Vision P6 DSP,这颗 DSP 其实也支持高效的神经网络执行......

正文开始

在我看来,现如今真正拥有垂直整合能力,而且能够完全把控其芯片产品的移动 OEM 厂商只有两家,那就是苹果和华为;甚至某种程度上,华为的整合程度更甚,因为华为具备内部研发 modem 的能力。华为旗下半导体子公司,海思过去几年的作为是很多厂商都没有达到的:进入到高端市场,解决方案能够和行业领导者——高通对垒。

我还记得当年荣耀 6 发布时,其 SoC 以全新的品牌 Kirin 920 问世,我们先前也评测过。随后的 Kirin 930 还存在诸如内存控制器非常耗电、ISP/DSP 管线表现不尽如人意等缺憾。我觉得 Kirin 950 是海思产品的一个转折点,这颗 SoC 表现很棒,水准全面提升,在半导体领域也获得了大量关注——包括我们自己在对华为 Mate 8 的评测中也给了这颗 SoC 较高的评价。

过去这些年,移动半导体行业变化很大。像德州仪器这类原本是核心竞争者的企业,现如今也已经不再推移动 SoC 产品。而英伟达一类企业的尝试,也未能获得可观的市场份额。联发科一直在试图用 Helio X 产品线进军高端 SoC 市场,成绩也很不理想,反而是 P 系列成为其主要营收组成部分。

如 Samsung LSI,虽然旗舰的 Exynos 系列的确是很不错的产品,但它甚至未能赢得三星自家移动业务的完全信任。三星始终没能在 Galaxy 系列产品中,彻底摆脱高通骁龙 SoC 的束缚。这也就不难理解,生产高端 SoC 及其半导体组件是个多么复杂的事情。

去年的 Kirin 960 表现喜忧参半:这颗 SoC 相较 Kirin 950 的确有不错的提升,但在与三星和高通旗舰 SoC 的竞争中仍然有短板——后两者甚至有制程工艺方面的优势。华为新一代 SoC 的发布时间线这次和苹果更靠近,和行业常规第一季度推产品的节奏有所不同。

在将 Kirin 和骁龙、Exynos 进行比较时,我们依据工艺结点、IP 等新技术的引入来进行。Kirin 970 是采用 10nm 工艺基于 Cortex-A73 的 SoC,从工艺结点来看是滞后于高通和三星的,论及采用 ARM 计划中的 DynamiQ 和 A75、A55 又有些为时过早。在骁龙 845 和 Exynos 9810 春季问世之前,Kirin 970 现在的竞争对手也应该是骁龙 835 和 Exynos 8895。

这篇文章当然还是主要集中在 Kirin 970 身上,不过另外也期望借由这篇文章来顺便谈谈 Android 设备 SoC 的市场现状。


其实 Kirin 970 在 IP 方面并没有什么大变革,这颗 SoC 所用的 ARM 中央处理器单元 IP 和 Kirin 960 是一样的。而且这次甚至都没有提升 CPU 的频率,A73 核心频率仍然是 2.36GHz,A53 则为 1.84GHz。当初 ARM 发布 A73 的时候,我们乐观预计采用台积电 10nm 工艺,频率至多可推至 2.8GHz,现在看来这个预估还是存在问题的,移动 SoC 频率推高的难度越来越大,能够从工艺节点得到的红利也越来越少。

不过就 GPU 部分,Kirin 970 的变化还是比较大的,这是第一颗用上 12 核心 ARM Mali G72 GPU 的 SoC,核心数目相比 Kirin 960 G71-MP8 多出 50%。GPU 频率方面缩减至 746MHz,之前的 Kirin 960 是 1033MHz。先前 Kirin 960 的评测中,我们就提到其能效比较糟糕。期望这次 G72 架构方面的提升,更低的频率、更新的工艺节点,相较前作能够带来改观。

Kirin 970 采用的新款 modem 实践了 3GPP LTE Release 13,支持下行速率较高至 1200Mbps,这主要得益于 5x20MHz 载波聚合和 256-QAM 调制,就这个数字来看,和高通的 X20 是一样的——也就是高通将整合到骁龙 845 中的那个 modem。

这次 Kirin 970 的重点宣传部分在于其特别集成的 NPU 神经处理单元。NPU 是海思给的名字,这实际上是个专属的加速模块,着力于卷积神经网络(CNN)。很多人在看到 NPU 的介绍时,可能会听到各种有关人工智能的话题,实际上正确的术语应该是机器学习深度学习。这个模块在不同的产品中有不同的名字,但它其实并不进行所谓的深度学习,而是用于加强神经网络模型的执行(inference),实际上模型训练仍然是在云、或者 SoC 的其它模块(如 GPU)中进行的。就现在看来,这一加速模块的引入仍处于早期,本文会简单地谈到 NPU。


图片来自 TechInsights 的拆解

Kirin 970 的一大提升应该是在于转而采用台积电 10FF 制程节点。10nm 对三星的工厂而言应该是个长期节点——我们会看到两代 SoC 采用 10LPE 与 10LPP 生产——但台积电只是将 10FF 制程节点当作是个短期节点,以及往 7FF 节点的过渡方案,后者应该会在 2018 年晚些时间真正出现。所以,采用台积电 10FF 的移动产品目前主要有少量生产的联发科 X30、夏季的苹果 10X、大规模量产的苹果 A11 和 3-4 季度的海思 Kirin 970。Kirin 970 相比三星大规模生产的骁龙 835 与 Exynos 8895 晚了 2-3 个季度。

海思对于新节点的预期比较保守,他们预计相同性能下的效率提升约为 20%,这比 ARM 之前 30% 的预期要低。功耗表现的这一点提升,可能也是海思没有在 Kirin 970 上增加 CPU 频率的原因,相较 Kirin 960,海思选择了降低功耗和 TDP。

在 die size 方面,Kirin 970 从上一代的 117.72mm2 降低到了 96.72mm2——这还需要考虑到这次 GPU 部分多了 4 个核心,整个 SoC 还增加了诸如 NPU 这样的新 IP 模块。TechInsights 先前也已经公布了 Kirin 960 和 Kirin 970 的模块尺寸(block size)对比,970 每个模块尺寸的缩减达到了 30%-38%。其中四个 A73 大核心簇面积仅为 5.66mm2,和苹果 A11 两个大核心簇面积增加两倍的做法完全相反。

CPU 性能:SPEC2006
SPEC2006 算是基准测试分析的重要标准了,甚至有不少芯片供应商都用它来进行架构分析和开发。实际上去年 SPEC2017 就发布了,而 SPEC2006 正式在 1 月 9 日退役,我们测试选择用 SPEC2006 进行,和这个时间点纯粹只是个巧合。

而且现如今 Android SoC 在能效和性能方面都有着不错的提升,针对消费级智能手机,采用 SPEC2006 也算是更为实际的方案。就以前的经验来看,值得关注的是诸如 MCF 这样的存储使用子项测试,当然了还有一些考验运行时间的测试。这几个礼拜,我一直忙着把 SPEC2006 改成为定制版 Android 应用。

译者注:这张图很不好看,而且图例的箭头有误导;注意左边的柱状条表示的是能效(能量/跑分),左边的柱状条越短表示能效约高;右边的柱状表表示性能,越长表示性能越好(下文还将有详细解释)

结果还是挺清楚的,无论是性能还是效率,各 Android SoC 供应商都有提升。其中 Kirin 970 在效率方面和骁龙 835 已经比较接近,把 Kirin 960 和 Exynos SoC 甩在身后。性能方面,Kirin 970 并没有提升,而且实际上相较 Kirin 960 还有略微降低——所有 SoC 厂商近代产品相较上一代都没有太大的性能变化。

看看细节
我们用官方 Android NDK 来编译定制的 SPEC2006。本文所用的 NDK 版本为 r16rc1,编译器采用 Clang/LLVM,带 -Ofast 优化标识(加相应测试可移植标识)。选择 Clang,是因为谷歌已经在 NDK 工具链中弃用了 GCC,预计 2018 年还会全面移除 GCC,我们未来也不会再用 GCC 的结果。需要指出的是,在我的测试中,GCC 4.9 在某些 SPEC 子项测试中,相较 Clang 仍然能够产生更快的代码。不过,选择 Clang 以后也更便于 Android 和苹果间的对比。可能会有人说:SPEC 跑分应该针对每种架构采用较佳编译器标识来进行,但我期望采用相同的二进制代码进行更为一致的比较(这也是实际使用场景中的情况)。所以在这篇文章中,我选择了编译加 -mcpu=cortex-a53 标识,这能够针对所有测试 CPU 给出更为平均的总体成绩。有个例外,Exynos M2 在 perbench 测试项中因此获得了额外 14% 的性能红利。

(译者注:针对这一段做一点简单的普及,所谓的 Android NDK,就是 Android 原生开发套装——应该是谷歌在 Android 2.3 时代就引入的,算是 Android 平台真正支持 C/C++ 开发的开端;Android SDK 原本是基于 Java 实现的(就是传说中的 Dalvik 虚拟机嘛,现在是 ART),而 NDK 可以帮助开发者开发 C/C++ 动态库,然后最后把动态库和 Java 应用一起打包。

GCC 是比较有名的编译器了,Linux 家族就采用 GCC 作为标准编译器;苹果原本也一直默认使用 GCC 编译器;不过听说后来 GCC 对苹果给自家高级语言新增的特性支持不好,所以苹果 2005 年发起了 Clang 项目,Clang 是个编译器前端,整体包含在 LLVM 编译器工具集里面。听闻对 Object-C 的编译,Clang 效率比 GCC 高很多。

如果这段你不能理解,那么只需要知道,AnandTech 的编辑自己做了个定制版的 SPEC2006,用 Clang/LLVM 编译的,这也会是他们未来跑分测试的方向。)

下面得到的 SPEC 跑分并未提交至 SPEC 网站,所以我们需要说明,这些数字只代表大概值,并不能作为正规的有效参考。

除了完整的 CINT2006 之外,我们还跑了 CFP2006 的 C/C++ 子测试项。悲剧的是 CFP2006 的 17 个测试项中,有 10 个都是用 Fortran 写的,只能用 Android 中的 GCC 编译,NDK Clang 缺个 Fortran 前端。

下面这张表对各部分子测试项进行了说明,详情还可以参见 SPEC 官方网站(译者注:想了解这些项目测试侧重点一般英文水平都不会差,我就不翻译了...)。


需要特别指出 SPEC CPU 与其他 CPU 基准测试的差异,比如 GeekBench。SPEC 不光是 CPU 基准测试,更多是个系统基准测试。SPEC CPU 的负载和代码库尺寸明显更为庞大,对内存子系统的压力测试更甚。所以,对内存控制器频率进行限制,其实就能看到子测试项的个体成绩差异。

内存延迟敏感性
主内存延迟从 80ns 提升至 115ns(访问窗口内的随机访问),在 SPEC CPU 对内存访问较为敏感的许多测试项中,产生的影响就会相当大。但同样这么做,对 GeekBench 4 的单核跑分成绩却不会造成影响,只是在某些多线程跑分中出现微小差异。

总的来说,这些测试项可以分成三类:受存储影响的(memory-bound)、内存与执行相对平衡的(balanced memory and execution-bound),以及受执行影响的(execution-bound)。从上面这张内存延迟敏感性图表中,基于性能下滑情况,很容易发现不同测试项属于哪个类别。受内存影响较大的项目包括很多人都知道的 429.mcf,还有 433.milc、450.soplex、470.lbm 和 480.sphinx3。影响最小的有 400.perlbench、445.gobmk、456.hmmer、464.h264ref、444.namd、453.povray;458.sjeng 和 462.libquantum 性能方面的提升表明执行单元利用率很高。其余测试项则比较平衡,性能方面的影响不是很大。当然了,这是个简单的划分,结果还是会根据架构和平台有差异,但从中我们还是可以看到执行和内存访问偏向的测试区分。

除了对性能进行测试(SPECspeed),我还利用设备本身的电流测定数据进行了功耗追踪。下面公布的数值仅代表平台的活跃功耗,也就是在负载期间,从总的加载功率中,减去闲置功率,以期抵消诸如显示屏之类的其他平台组件。我要强调,这里的功率和能耗数字不止代表 CPU,而是整个 SoC 系统,包括互联、内存控制器、DRAM 和 PMIC 开销。

除了 Kirin 970 之外,我也找来了更早的一些 SoC 产品,对比过去两年中 Android 平台,以及 CPU 微架构各代之间发生的变化。由于即便是最快的设备,所有测试运行时间也超过 5 小时,我们用一个外部风扇对这些手机进行主动散热,确保所有子项测试持续的 DVFS 频率——这在我们先前的测试中是不曾采用的做法。

SPEC2006 - 完整测试结果
下面的图表看起来挺拥挤的,不过在比对性能、功耗和效率方面,是比较完整的呈现方式。图表左边部分表现的是能效(相应测试项的总能量(焦耳)/ SPECspeed 得分,另外也包含测试期间的平均活跃功耗(瓦特)。对左边这部分而言,柱状条越短,则表明能效越高;平均功耗虽然是第二量度,但这个值也是比较重要的,应当限定在一定范围内。图表的右边则是相应测试的 SPECspeed 得分,这部分的柱状条越长就表示性能越好。

(译者注:容我吐槽下,这个图还真心的很不好看。这里稍作解释,左边部分的柱状条表示的就是能效情况,越短越好,即-能量(J)/跑分;长条右边有两个数字,逗号后面的数字才表示柱状条的值,也就是能效值;逗号前的数字表示的则是该测试项的平均功率-单位瓦特,也就是文中提到所谓的“第二量度”,大部分人一般都习惯把功率和功耗划等号;右边部分的柱状条是性能,越长越好。)


正好借着这次机会顺便来谈谈高通和三星近两代产品的情况。在几乎所有子项测试中,骁龙 820 和 835 都表现出了较大的能效差异。而且特别值得一提的是,三星 Galaxy S7 有两个版本,分别采用 Exynos 8890 和 骁龙 820,当时针对这两个版本的对比争论就很有趣,我们当时就推测采用 Exynos 8890 的版本会更好,不仅性能更出色,而且续航时间也更长。在这次的测试中,这一点也得到了印证,Exynos 8890 在不少测试中的性能成绩都领先骁龙 820,而且效率还更好,虽然功率也普遍较高。

2017 年,Galaxy S8 的情况则相反,骁龙 835 版本的性能明显更好,而且还有电池续航方面的略微优势。上面的成绩也能表现这一情况,Exynos 8895 明显不是功耗更低的骁龙 835 的对手,虽然 Exynos M2 和 Cortex A73 的性能差异其实比前代 Exynos M1 与 Kryo 的性能差异更大。

再来谈谈 Kirin SoC,先前的 Kirin 955 采用的是 Cortex A72 核心,955 称得上是相当成功的一颗芯片。我们在先前 Cortex A73 微架构的分析文章中提到过,ARM 更多强调核心的浮点运算和内存子系统性能提升。这一点在对内存访问更为敏感的测试中,表现得很明显,A73 的 IPC 成绩高很多。而在纯粹的整数执行输出测试中,A72 的 3-wide 解码器仍然比 A73 的 2-wide 表现更好,从 445.gobmk 和 456.hmmer 子项测试中就能看出来。

不过 Kirin 960 未能完整表现出 ARM A73 的能效提升,在更偏向 execution bound 的测试中,Kirin 955 的效率表现与其持平或稍好。但鉴于 A73 新的内存子系统,在 429.mcf、433.milc、450.soplex 和 482.sphinx3 测试项中,A73 的表现都要明显优于 A72。由于这里的功率数字是整个平台的活跃功耗,所以很可能 Kirin 960 的内存控制器在整体提升方面也扮演了很重要的角色。

Kirin 970(相较 960)并未改换 CPU IP,不过内存控制器引入 LPDDR4X,这可以提升针对 DRAM 的 I/O 功耗表现,将电压从 1.1V 降至 0.6V。虽然性能应该还是一样的,不过按照海思援引台积电 10nm 制程的说法,能效会有 20% 的提升,另 LPDDR4X 有几个百分点的贡献。

这次 Kirin 970 的性能和 960 差异还是很小的,实际上是略微下滑。不过整体在能效方面却有最多 30% 的提升。看来海思这次是打算把制程方面的红利全都放在压低整体功耗上,Kirin 970 无论在整数还是浮点运算测试中,功耗整体都下降了。

拿骁龙 835 和 Kirin 970 做个对比会比较有意思:两者的 A73 CPU 跑在基本相同的频率上(译者注:骁龙 835 的 Kryo 280 可以认为是小改款的 A73),不过骁龙 835 采用的是三星的 10LPE 制程,而 Kirin 970 则采用台积电的 10FF 工艺。从各类型的负载测试中,我们可以因此得到有关 CPU 和内存子系统的更多信息。在 445.gobmk 和 456.hmmer 测试中,两者的性能表现差不多,Kirin 970 有轻微的能效优势。这应该可以说明,台积电的制程在功耗表现上相较三星有一定优势,不过这也没什么奇怪的,骁龙 835 已经上市超过半年了。

如果我们去看 memory bound 偏向内存方面的测试,就会发现骁龙 835 相较 Kirin 970 有大约 20% 的优势。其中成绩差别较大的测试项是 429.mcf,这是所有测试中对内存要求最多的测试项,骁龙 835 在性能方面领先 32%,能效则有更大幅度的领先优势。我们因此基本可以断定,在这两颗芯片中,高通的内存控制器及子系统实施方案更为高效。

而内存子系统看起来是三星 Exynos 8895 的弱项。在 execution bound 偏向执行方面的测试中,Exynos M2 核心尚有竞争力,但在对存储有更多需求的测试中却明显落败。我不确定这种低效是不是内存控制器造成的,更有可能与 M2 的 uncore 部分有关(译者注:据我所知,uncore 最早是 Intel 提出的一个词,uncore 根据维基百科的说法其实是发端于北桥芯片,一颗 CPU 的 uncore 部分包括有 L3 缓存、内存控制器、互联控制器等等;维基百科提到 L1、L2 cache 不属于 uncore 部分,但从这篇文章来看,似乎并非如此)。实际上,这里的整数功耗测试会让一个核心满载,额外线程的更多功耗则在剩余的 3 个核心。我们猜测,因为三星的 Exynos 9810 采用全新的缓存层级结构(基本确定是 DynamiQ 技术),所以早前 M1 和 M2 核心可能没有把过多的精力和努力放在 core 核心本身以外的地方。采用新的核心簇设计,持续提升核心本身,可能是三星 Exynos 9810 单线程性能得以翻番的原因。


看一下 SPEC2006 的 IPC 总体得分情况(SPECSpeed / GHz),Kirin 960 和骁龙 835 的表现差不多,由于内存方面的差异,Kirin 970 略微落后。Exynos 8895 相较前代在 CINT2006 测试中有 25% 的 IPC 提升,在 CFP2006 测试中则有 21% 的提升,相比 A73 略有 3% 的优势。

骁龙 820 在浮点运算性能方面表现很出色,这得益于早前 Kryo 的四个主要的“胖”执行管线,既能处理整数又能处理浮点操作。理论上这样的核心相较 ARM 和三星,会拥有好得多的浮点运算执行力,所以在 470.lbm 这样的测试项中,骁龙 820 的表现突破天际——这也最终为其综合 IPC 得分获益良多。

CPU 小结


这部分就性能和能效来说,情况还略微复杂。如果只看右边部分的 SPECspeed 性能跑分(CINT2006 与 CFP2006),近两代产品的提升其实是很小的。Kirin 970 在 CINT 测试中,相比 2 年多前的 Kirin 955 只快了 10%。CFP 项目对比这两者倒是能看出比较大的变化(相较 A72),但 970 和 960 比就基本没有性能差异了,甚至还略微变弱了一点点。所以 Android SoC 的性能究竟发生了什么?

如果你有仔细阅读前面的分析和单项成绩就不难看出,2017 年这些芯片在效率方面有极大提升。骁龙 835 相比 820 就是个巨大的飞跃,CINT 测试中,前者以更出色的性能完成了效率的翻倍,CFP 测试也有 50% 的能效提升(译者注:本文将不对“效率”和“能效”这两个词作区分,两者在文中出现时表达的是相同的意思)。CINT 测试中,Exynos 8895 和 Kirin 970 相较各自的上一代 SoC 也都有 55% 的效率提升,其中 970 在 CFP 测试中也获得了同样的能效红利。

另外今年的 SoC 在平均功耗方面也降低了很多。这和当初 ARM 发布 A73 的时候宣传的一样,对设备散热而言肯定是个好事。未来的骁龙 845 和 A75 核心相比 A73 应该不存在效率方面的提升,所以性能与功率一起呈线性提升。

不过现在其实我都还不大确定三星宣称 Exynos 9810 性能有如此巨大的飞跃是不是真的,只是希望 2.9GHz 这个频率,不是为了在跑分成绩上和苹果一较高下。原本 Exynos 8890 的双核睿频特性在我看来就很不合理(抱歉,睿频原本是 Intel 的一个用语,这里借用),因为这突发的 300MHz 获得的性能收益,与其能效的滑坡根本就不对等(上述跑分抛在全速 2.6GHz 频率下,实际上 2.3GHz 只慢了 10%,但效率却能高出 25%)。

我觉得当前骁龙 835 和 Kirin 970(CPU 负载部分)的 TDP 设定就很好,行业应该维持这样的现状,这样对一般用户而言才能提供更好的移动体验。所以我真心希望骁龙 845 能够在工艺方面有切实的改进,抵消微架构调整带来的功耗和频率增加,否则我觉得这功耗就要飙到 2W 以上了。

GPU 性能
在 3D 图形和游戏领域,Kirin 970 是首颗采用 ARM 第二代 Bifrost GPU 架构 Hemdall/G72 的 SoC,这次的新架构相较去年的 G71 据说算是个革新,在性能和效率方面都有升级。


密度方面的增加,以及制程节点更新,让 Kirin 970 的 GPU 核心数从 8 核增加到了 12 核,从面积来看,GPU 模块的尺寸还有了缩减。这跟去年的 G71 还是真的很不一样:去年的 G71 似乎在具体产品中根本没有达到 ARM 宣称的效率水平的,Exynos 8895 和 Kirin 960 都没有。Kirin 960 是个非常鲜明的例子,其峰值性能状态下的平均功耗数字也是前所未见的,在 Mate 9 这台设备上达到了大约 9W 的程度。我还记得 2 年以前,我还褒扬海思,说他们在 GPU 的实施方案上偏保守,在设备温度限制下能够合理地维持住较高性能,功率在 4W 以下。在谈功耗之前,我们还是先用行业内的 3D 基准测试来看看 Kirin 970 GPU 的峰值性能表现。


在 3DMark Sling Shot 3.1 Extreme Unlimited 测试中,我们发现 Kirin 970 的 G72 性能好像完全没有提升。所以我尝试进行多次测试,确认发热不是问题所在,不过华为 Mate 10 Pro 仍然无法在这项测试的跑分成绩上领先 Kirin 960 多少。我不确定问题出在哪里,我没有对设备进行 root,所以无从监看 GPU 频率,所以也不知道设备是否采用了某种限制机制。



GFXBench 测试部分,Kirin 970 则达到了其标称的理论性能水平,提升达到 15-20%。需要注意的是,这次的 GPU 虽然核心数增加到了 12 个,但频率从上一代的 1033MHz 大幅下降到 746MHz,所以性能提升符合预期。

总的来说,就性能而言,在更注重计算的负载任务项目中,比如 Manhattan 3.1 或 Car Chase,Kirin 970 的 G72MP12 跑分成绩,相比 Exynos 8895 的 G71M20 和骁龙 835 的 Adreno 540 稍低。而在 TRex 项目中,Kirin 970 的 GPU 稍领先 Exynos 8895,但仅在设备温度比较低的情况下,因为这颗 GPU 在较高的温度下,会快速从较高频率降下来。

GPU 能效
(译者注:本文将不对“能效”和“功效”两个词做区分。严格来说,前文 CPU 部分的“能效”指的是 Energy Efficiency,所以其计算方法是能量(焦耳)除以跑分成绩——即每一分需要耗费多少能量;而 GPU 部分的“能效”则是指 Power Efficiency,计算方法是帧率(FPS)除以功率(瓦特)——即每瓦帧率。)


从平均活跃功耗水平(Avg. Power)来看,Mate 10 相比去年的 Mate 9 有极大提升。在 Manhattan 测试中,前者功耗为 6.33 W,而后者为 8.6W。
Exynos 8895 的 G71 采用更多核心,频率则更低,G72 架构方面的提升与之相互抵消,所以 Kirin 970 与 Exynos 8895 的 GPU 功耗和能效水平相似。另外,Kirin 970 相较 960 也用上了更多核心,频率也更低,但工艺和架构的提升,令 Kirin 970 的 GPU 在峰值性能下,获得了 57% 的效率提升,和华为宣称的 50% 效率提升基本相符。实际上在这项测试中,在相同性能表现下,970 的 GPU 效率提升可能将近达到了 100%——也就是说,如果以 Kirin 960 的 GPU 峰值性能水平为参照,则在达到相同性能表现时,Kirin 970 的 G72 的效率将近是前者的两倍。

听起来似乎挺美好的,Kirin 970 的 GPU 性能和能效有了双丰收。不过实际上,Mate 10 及 Kirin 970 的平均功耗仍然远高于其可持续运行发热控制阈限所在的 6.3W。


再来看 T-Rex 的情况,T-Rex 是个 ALU 运算任务相对更轻,而偏向于纹理,填充率和三角形输出率的测试项,我们看到 Kirin 970 的性能表现出色,但功耗数字很悲剧。达到 7.93W 的功率,意味着手机不大可能持续峰值频率太长时间,第二轮持续跑分中,我们就发现由于温度控制的介入,其性能出现下滑。所以,虽然这项测试中,Kirin 970 在性能表现上看起来还稍微领先 Exynos 8895,但效率却低了 25%。

不过对比起来,Kirin 970 相比 960 还是好很多的。Mate 10 的 GPU 相比 Mate 9 有 28% 的峰值性能提升,且在峰值性能水平下,能效提升了 53%,这也符合华为的宣传。就这项测试我预计,在相同性能表现下,Kirin 970 的 GPU 能效也能超 960 近一倍。

上面的图表中,很多人应该还是会注意到高通持续居于较高位置。的确在过去几代产品中,高通是一家在架构和工艺节点提升带动图形性能提升,同时又没有过多增加 GPU 功耗的企业。高通的每代产品看起来都能稳定降低平均功耗,骁龙 835 的这一成绩是相当出色的 3.5-3.8W。一般广泛认同的意见是:移动 GPU 的功耗应当在 1.5-2W 之间,过去几年高端 GPU 接近这一目标的也就只有 Adreno 了,而且其间的差距还在一代代缩小。

先前 Mate 8 的评测中,很多读者评论说 Kirin 950 的 T880MP4 令人失望、不具竞争力。大众和媒体当时也普遍认同这一观点,这也是以往华为手机的一大痛点。不过现如今华为在 GPU 基准测试中已经具备了竞争力,但在能效和持续性能表现方面仍然比较糟糕——这部分的情况本来也很难向用户传达。
AnandTech 也有一定的责任,很多人只看性能跑分成绩。我有时感觉真的不该公布性能跑分,这些跑分会误导芯片供应商做出错误的设计决策。就这一点我也不知道该怎么解决,责任又在谁。如果说厂商能够重视 3D 工作任务的持续性能,将其控制在合理的范围内,那么其实这些都不是问题。但如果问题无法解决,我们会考虑不在设备评测中公布 GPU 峰值性能数据,而将其放到更具技术性的 SoC 分析文章中。

总的来说,我觉得现如今正是移动 GPU 领域的关键时刻。高通在性能、密度及能效表现上有如此巨大的领先优势,导致其他在 GPU 部分依赖 IP 供应商的芯片厂商处在不利的位置。苹果早前就宣布放弃采用 Imagination 的 GPU IP,三星也正努力替代 Mali GPU——可能最早于 2019 年推出自家的 S-GPU,我认为这可能就是原因所在了。未来 2 年内,我们可能会看到 SoC GPU 领域更为精彩的竞争。

有关神经网络处理
现在很多媒体和厂商在谈消费电子产品的时候,总会提“AI”。大部分厂商的营销部门当然都很喜欢这一词汇,但实际上现如今我们在计算领域所谓的“AI”一般是特指机器学习。至于 Kirin 970 内部的这个 NPU,实际上应该是一种专为运行卷积神经网络(CNN,下文将简称 CNN)做优化的专用硬件模块。

有关 CNN 究竟如何工作的问题,已经是这篇文章之外的内容了,从上世纪 80 年代起这就已经是个研究课题了。其大体思想是模拟人脑神经元的行为。关键词就是模拟(simulation),而不是真的仿真人脑的结构。虽然神经网络在学术界已经存在很长时间了,但其实也就是近 10 年才有了软件实施方案,能够跑在 GPU 上实现加速。后 5 年实现技术突破之后,研究人员开发出 CNN,实现精度和效率方面的提升。

CNN 在绘制高度错综复杂的执行模型方面是很出色的(译者注:据我所知应该是对线程并行有较高的要求)。这部分工作极少出现分支(branching)和其他“复杂”行为任务,而分支之类的复杂行为才需要通用处理器——也就是 CPU 去完成,所以这类型的工作任务其实可以分解成单独、半独立的线程。另外,这些任务的计算精度没有那么高,在某些情况下,运行一个完整展开的网络只需要低精度整数就能完成——所以这也一定程度简化了工作性质。近 10 年来,CNN 的研发出现了大跨步,因为这也恰逢 GPU 开始带有必要的计算特性,并且其整体性能能够在短时间内解决复杂的 CNN 执行问题。

实际上 GPU 对于承担 CNN 工作还是相当适用的,不过 GPU 并非一个具备处理重度并行任务能力的处理器。由于这一领域还在快速发展,企业也期望将其应用到实际的使用场景中,这对性能需求也就变得更高了,还需要考虑到能效问题。因此更为专门的处理单元也就出现了,其架构是专为机器学习搭建的。谷歌是第一家发布此类硬件的企业,也就是 2016 年的 TPU。处理专门任务的硬件可能会少了一些工作弹性,但在功耗和占用空间方面却有很大优势,毕竟针对这些专门的任务只需要必要的硬件和特性就行。


谷歌的 TPU 芯片及板子
执行神经网络任务有两个关键点:其一必须有个训练模型(train)——其中包含描述数据的信息,这些数据是模型随后执行的基础。模型训练对处理器有很高的要求——不光是因为工作量很大,而且精度要求很高,比模型执行的要求高很多——也就是说高效的神经网络训练,对比执行神经网络,在硬件的性能和复杂度要求上明显更高。总结一句话就是,模型训练要求高性能硬件,而且是服务器级别的 GPU,或者像谷歌云端服务器上的 TPU 这样的专门硬件。

其二才是模型的执行:拿到训练完成的模型,给它们喂数据,基于模型的认知来产生结果。输入数据,来执行神经网络模型,并获得输出结果——这个过程叫做 inference(推论)。所以 train 和 inference 是有差异的,两者对计算性能的需求也有所不同。前面谈到 train 对硬件性能要求很高,而 inference 虽然也是高度并行计算,但计算精度更低,对整体性能要求自然也就没那么高了。所以 inference 的过程可以在更为低端的硬件上完成。

图片来源:Nvidia Blog

于是,整个行业倾向于将 inference 的过程放在终端设备上完成,比如消费级电子设备,在能效方面也是更划算的方案。如果你的设备本地就已经有了训练好的模型,那么设备就只需要用来完成 inference 的过程即可,也无需再将数据上传到云端让服务器去处理。这样一来,延迟、带宽、功耗之类的问题也就没必要过多考虑了,而且也没有隐私方面的顾虑,因为输入的数据就在本地执行。

既然是在本地执行神经网络 inference 的工作,那么就得在智能手机上找个处理单元来搞定这部分任务。CPU、GPU 甚至是 DSP 其实都能执行 inference 任务,但几者的运行效率是存在较大差异的。其中 CPU 是最不合理的,因为 CPU 在架构设计上并不是专门应对重度并行执行工作的。GPU 和 DSP 在这方面就好多了,但仍有很大的提升空间。所以一种全新类型的处理加速器就出现了,那就是 Kirin 970 的 NPU。

这类 IP 模块还是个新事物,所以行业内还没有统一术语来命名此类模块。海思/华为管它叫 NPU-神经处理单元,而苹果则采用 NE-神经引擎这个名字。还有一些 IP 供应商,比如 Cadence/Tensilica 将其实施方案称作神经网络 DSP;还有 Imagination Technologies 则采用 NAA-神经网络加速器这个名字;CEVA 的 NeuPro 在市场上就叫“AI 处理器”。为了统一和简单化,在提到这类产品的时候,我就称其为神经网络 IP。

Kirin 970 内部的这颗 NPU 是由中国一家名为寒武纪(Cambricon)的 IP 提供商提供的。不过这颗 NPU 并非海思直接拿来就用的,而是寒武纪和海思合作开发,针对海思需求进行优化的一个模块。华为宣称其 FP16 性能可以达到 2 TeraOPS,但这个数字还是有误导之嫌,因为这个性能数字描述的是比较少见的峰值数据(译者注:这句话我没看懂原文作者表达的意思,全句是这样的:Huawei quotes 2 TeraOPS FP16 performance on the IP, however this metric is misleading as the performance figure quotes sparse equivalent peak data, meaning the 8-bit quantized throughput. 我不清楚,这里的 8-bit quantized throughput 8 位量子化吞吐是在表达什么;欢迎理解的高人来指正)。

就现在来说,其实我们不该去在意神经网络 IP 所谓的理论性能数字,因为这个数字和实际性能表现并没有必然联系。而且有关其架构部分的特性我们也知之甚少,而这部分在实际表现中才扮演着更重要的角色。


要在某个硬件模块(而不是 CPU)上启用神经网络,面临的第一个障碍就是如何访问该模块所需的 API。当前的许多 SoC 和 IP 提供商都开发了专有的 API 和 SDK,让应用开发可以针对神经网络使用硬件加速。海思提供的 HiAI API,能够管理 CPU、GPU 和 NPU 之间的负载。不过该 API 目前扔在开发中,尚未正式公开,但开发者可以联系海思提前获取——预计 HiAI API 会在今年晚些时间公布。高通则已经发布了 SNPE(骁龙神经处理单元引擎) SDK,开发者可以借用这个 SDK 针对神经网络处理任务使用 GPU 和 DSP 的运算资源。其他的一些 IP 厂商当然也有其自家的 SDK。

但各厂商有自己独立的 API 应该只是个过渡过程,未来肯定会有针对各厂商 IP 的通用 API。谷歌目前已经在做这件事了,Android 8.1 中引入的神经网络 NN API 已经可以在 Pixel 2 手机上看到了。据我所知,当前的 NN API 只支持部分特性,所以开发者如果想要利用神经网络 IP 模块的全部资源,华为还是期望开发者能够采用其专有 API,而将谷歌的 NN API 作为后备方案。

NPU 性能测试
为了测试 NPU 的性能,我们就需要个基准测试工具,这个工具还得支持当前各厂商提供的 API 才行。遗憾的是,恐怕并不存在这样的工具,但我们发现中国某个很流行的跑分工具:鲁大师最近引入了一项 AI 基准测试,支持华为的 HiAI,以及高通的 SNPE 框架。这部分测试包含 3 种不同的神经网络模型:VGG16、InceptionV3,以及 ResNet34。输入数据集是 100 张图片——取自 ImageNet 参考数据库。作为后备方案(若无 NPU 或其它单元支持),测试会采用 TensorFlow 的 inference 库,跑在 CPU 上。我针对 Mate 10 Pro、Mate 9,以及骁龙 835(Pixel 2 XL 与 V30)设备分别进行测试,针对骁龙 835 就跑在 CPU 和 Hexagon DSP 上。


和先前 SPEC2006 的测试结果一样,我也用相同的图表形式来呈现不同设备的成绩:依然是 3 个维度,平均功率(W)、能效(mJ/Inference),以及性能(FPS,每秒的 inferences)。
(译者注:和前面一样,这张图看的方法是,左边的柱状条代表的是能效,也就是能量(毫焦)除以跑分成绩,柱状条越短代表效率越高;柱状条右边有两个数字,逗号左边的数字代表平均功率(单位:瓦特),逗号右边的数字就是能效;图中右边的柱状条代表的是性能,越长表示性能越好。)


第一眼应该就能发现在神经网络执行方面,NPU 和 CPU 量级上的差异。如果让神经网络跑在 CPU 上,成绩最终甚至都不会超过 1-2fps,而且此时 CPU 的功耗还非常严重。无论是骁龙 835 还是麒麟 960 的 CPU,要应付这样的工作任务都很有难度,平均功率都超过了可持续负载的阈值。

高通的 Hexagon DSP 相较 CPU,处理这样的任务,性能表现可以提高 5-8 倍。不过华为的 NPU 在性能方面仍然远高于此,在 ResNet34 测试项中,Kirin 970 NPU 与 Hexagon DSP 的性能差距拉大到 4 倍。这种性能方面的差异,主要原因还是在于不同的设计。卷积层重度依赖于并行处理,而池化层和全连接层则采用相对更为串行的处理步骤。ResNet 测试项尤其会用到较大比例的卷积处理,所以对于 Kirin NPU 的利用率自然也就更高了。


从能效的角度来说,最终测试结果和华为宣称最多 50 倍的提升还是比较接近的。这是卷积神经网络可以在真实场景中使用的基础所在。不过另一方面,高通 DSP 也能达到华为 NPU 差不多的能效,虽然前者的性能仅为后者的 1/3 和 1/4,对于这一点我还是比较讶异的。从这一点来看,估计骁龙 845 将要采用的 Hexagon 685 能够达到高通宣称 3 倍的性能提升。

在此我想特别点名批评谷歌 Pixel 2:我能在骁龙 835 的 CPU 上跑这项测试纯粹是因为 Pixel 2 缺乏对 SNPE 框架的支持。这一点不知是合理还是不合理。谷歌在 Android 8.1 中引入了 NN API,谷歌 Pixel 2 通过专门的 Pixel Visual Core SoC(译者注:这是谷歌自己定制的图像处理芯片,集成在 Pixel 2 手机中)来支持和实现加速——当然谷歌也期望借此推动 Android 标准 API 的使用。但另一方面,这也限制了 OEM 厂商的能力,这和当年 Android 无视 OpenCL 是一样的道理。这项决策在我看来,严重限制了生态系统的发展。所以我们也没能看到更多 GPU 加速负载任务——原本 CNN 应该也是支持的。


虽然鲁大师的 AI 测试不支持 iPhone,不过海思公布了几张幻灯片,有些数字我们是可以参考的。从 PPT 中的数据来看,苹果 A11 的神经网络 IP 模块性能应该是略好于骁龙 835 的 DSP 的,但仍远弱于 Kirin NPU。当然了,我们无法确认这些数字的真实性,毕竟我们现在也无法在 iOS 平台上跑这样的测试。


不过问题也来了,有这样的性能表现究竟能拿来干嘛?海思之前就提到过,其中一个使用场景是通过 CNN 处理来进行降噪,比如在较高的交通噪音下,语音识别率可以从 80% 提升至 92%。


另外华为较多的一个宣传重点是,NPU 的能力可以发挥在相机 App 中。Mate 10 的摄像头应用用 NPU 来运行 inference,以识别不同场景,基于这些场景的预设值来优化拍摄参数。此外,Mate 10 系统中还带一个翻译 App,是和微软一起开发的,这款 App 可以用 NPU 来加速线下翻译——这对我而言的确非常有用。在内置的相册 App 中,我们还能看到图片归类功能,即照片是通过其内容类别来组织分类的。

就拍照使用场景,海思在此相较高通也表现出了优势,因为海思同时用到了 DSP 和 NPU,而高通的 SoC 还需要在视觉处理和神经网络 inference 工作负载间共享 DSP 运算资源。


比较诡异的是,Kirin 970 其实还有个 IP 模块也支持高效的神经网络执行,其视觉管线的 Cadence Tensilica Vision P6 DSP 在性能方面和高通 Hexagon 680 DSP 应该是差不多的,只不过这部分并不直接面向用户 App。

虽然 Mate 10 的确已经开始利用其 NPU 了,但就现在来看还很难在终端用户那里造成差异竞争优势。目前移动平台的神经网络使用尚无杀手级应用,这一点和汽车、安全摄像头领域还是不一样的。这当然还是因为这部分生态系统仍处在初期,Mate 10 是第一批真正提供此类专用加速模块的设备。很难说 Kirin 970 内置这样的模块是否值得。华为对于现状秉承开放态度,还主动和开发者沟通,尝试为 NPU 找到更多使用场景。至少在创新这个层面,华为的这种行为还是值得表扬的。

华为和微软一起做的翻译 App 应该是 Mate 10 设备上最具 NPU 辨识度的体验组成部分了,未来可能还会有更多非图像处理的使用场景可以在 NPU 上实现。就目前来看,这款 App 支持拍摄包含外文文本的照片,然后在照片中覆盖一层翻译文字——想象未来说不定可以实时进行这样的操作,实现 AR 体验。联发科在今年的 CES 上就展示了 CNN 的某种使用场景:在视频会议的时候,视频编码器可以接收场景构成的元数据,具体是通过一个 CNN 层进行图片识别,然后让编码器在与会者的脸部使用更细粒度的块尺寸,这样就可以加强视频质量了。很可能神经网络的使用场景会随时间推移慢慢变多,而不会是突然出现某个变革型事物,毕竟大量设备还需要先把神经网络 IP 模块融入进去,在普及之后还需要开发者去挖掘其中的潜能。

结语
这篇文章我期望表达的不光是 Kirin 970 的进步,另外也想借此机会聊聊现如今高端 Android SoC 市场的竞争格局。后 iPhone 的智能手机生态系统已经迈入第 10 年了,我们也看到了芯片领域的各种纵向、横向的融合。

我们不能说苹果是 SoC 的趋势写照,或者其他企业都在竞相模仿,不过的确有越来越多的厂商应了苹果的理论:如果要在成熟的生态系统中发展和竞争,你就需要自己掌控芯片线路图。否则,你就会陷入没有差异竞争优势的窘境,或者与那些具有垂直整合能力的供应商比起来毫无竞争力。苹果很早就意识到了这一点,到目前为止华为是除了苹果之外,一家以此为目标的 OEM 厂商——向(almost)自主发展 SoC 的道路前进。

之所以加“almost”,是因为罗老师这么用这个词...(译者注:请不要介意我小小的发挥,其实原文的用词是 quasi-independence)啊不是,是因为华为虽然自己设计 SoC,但在核心组件方面仍然依赖于大型 IP 授权企业的设计,比如 CPU 或 GPU。好比 Kirin 970 在 CPU 的性能或者能效方面,就无法和骁龙 835 达成差异化竞争,两者都采用 ARM Cortex-A73 核心。

骁龙 820 的 Kryo CPU 核心其实很难称作更快、更高效、更小的 Cortex-A72。三星定制的 CPU 在效果上都比高通的这代作品稍强,但三星的 Exynos M1 和 M2 相较 ARM CPU 也未能形成竞争优势。Samsung LSI 宣称 Exynos 9810 的性能飞越很可能只是为了博人眼球,以及对于这么多年在定制 CPU 方向上的投入和努力的标榜——但三星自己的移动部门还没有印证这一点,垂直整合也尚不完整。综合这些,海思坚持走 ARM CPU 路线似乎是完全合情合理的。


虽然高通在采用定制 CPU 设计的道路上开了倒车,但论及 GPU,高通却仍然有这完整控制 IP 设计的优势。相对的,在桌面 GPU 领域,我们已经看到了某一家厂商的竞争力和市场现状,这一家厂商的产品有着 33% 的能效优势(Nvidia Geforce GTX 1080 vs AMD Radio Vega 64)。想一想如果这种优势扩大到 75-90%,结果会怎样?这其实是现如今移动领域的现状(骁龙 835 vs Kirin 970)。对芯片厂商而言,要抵消能效和性能方面的弱势,其实可以选择做大 GPU,这对终端用户体验来说是不可见的,但是一条不可持续发展之路,因为它会吞噬厂商的毛利率。在高端市场 PPA(Performance、Power、Area)不对等因数接近 4x 的时候,是时候停下来想一想,未来这些年我们要走向何方了。

在 CPU、GPU 和 modem IP 之外,其实 SoC 内部还有很多组件模块是我们一般很少谈到的。媒体模块,比如编码器/解码器就经常被一笔带过,只说个支持较高 X*Y 分辨率,每秒帧率为 Z。还有一些更为复杂、很少有人知道细节的相机管线,比如 ISP。这些组件究竟如何工作、有具体怎样的功能,我们在这方面的所知是很匮乏的,这和厂商刻意为其保持神秘是分不开的,但也是因为拍照体验上的差异是由软件算法实施方案决定的。Kirin 970 所用的 Cadence Tensilica Vision P6 DSP 对于设备的拍照应该是有帮助的,未来我们相关设备评测的文章会谈到。

而 NPU 是个全新种类的 IP,其发展仍在初期。Kirin 970 是否真的需要这样的 IP 来提高竞争力?其实未必。但它有没有起到提高竞争力的作用?有-或者说有可能。由于软件生态仍然是滞后的,所以现在说神经网络加速 IP 在智能手机中有多重要仍为时尚早。这就又是个鸡生蛋、蛋生鸡的问题了,如果没有硬件,当然必要的使用场景也可能不会出现。华为为此进行的市场宣传还是不遗余力的,而且还认为这会是个趋势。我也不会因为 NPU 的存在就推荐或不推荐某款设备,或者以“缺少 AI 功能”为依据——消费用户还是要坐等整个市场的变化。

虽然本文还是花了挺多篇幅去谈和竞争对手之间的对比的,但主要还是要说 Kirin 970。海思这次的新作品作为一颗非常出色的智能手机 SoC,的确证明了自己的价值,这颗 SoC 也有了与高通、三星较佳 SoC 竞争的出色实力。在发布时机上似乎是存在弱势的,因为华为并没有遵照常规的 Android 设备春季更新周期,很快要带来的新款 SoC 也应该会很自然得超越 Kirin 970。不过这种规律未来也有可能打破,半导体生产和 IP 线路都有可能不再与春季设备发布同步。

最后还是要说一次,华为应该是市场上唯二两家(也是 Android 阵营一家)能够在 SoC 设计和最终手机产品之间做到垂直整合的 OEM 厂商(译者注:在 AnandTech 来说,之所以三星不合格,是因为三星的 Galaxy 旗舰仍在大量使用高通 SoC)。华为在这条路上已经走了好几年,无论是芯片还是成机本身,这一路走来的提升都相当的脚踏实地。最重要的是,华为现如今能够设立合理的目标,并且按目标执行。论及海思,我也看到了它的一个重要品质:就是能够自我发现缺点,以及关键领域的提升需求。Intel 的 Andy Grove 有句名言“只有偏执狂才能生存”,用在华为身上正合适,在我看来这家公司在移动领域已经找对了方向,这将是其走向成功的关键所在。

* 参考来源:HiSilicon Kirin 970 - Android SoC Power & Performance Overview 

欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754

鲜花

握手

雷人

路过

鸡蛋

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2018-8-18 02:38 , Processed in 0.203144 second(s), 23 queries .