麒麟9000的GPU部分是非常值得一说的。去年麒麟990并未按照我们的预期,采用Arm Mali G77,而是继续采用麒麟980时期的G76。此前我曾撰文提到过,高通如今正逐渐在GPU部分丢失往常的优势:如果Mali G77能够按照Arm预期的那样,那么Mali GPU很可能实现对Adreno GPU性能和效率的同时追平。
悲剧的是,华为并未采用G77。而实施G77的三星Exynos 990(Mali G77MP11)与联发科天玑1000(MP9),在规模上都不够大——前者多方面的问题还相当一言难尽。这就让我们无从了解,G77到底是个什么水平。加上骁龙865的Adreno 640小小发挥了一下,在不少测试中的效率表现都和苹果相差不大了(性能仍有差距),Arm Mali阵营这边就急需一款产品来证明GPU的实际水准。
麒麟9000直接跳过G77,用上了Mali G78。华为给出的数据是,相比骁龙865+,麒麟9000的GPU性能领先52%,能效领先50%。从华为的PPT来看,对比的是GFXbench 5.0 Aztec Ruins Vulkan项目(不过极有可能,性能提升和效率提升的测试条件是不同的)。单纯从这个跑分来看,可能已经达到了苹果A13或者A14的水平——余承东在手机发布会现场列出了iPhone 12 Pro与Mate 40 Pro+的GPU跑分性能,两者似乎的确已经是相近水平:虽然目前还不清楚这是峰值性能还是持续性能,以及并未有能效比较的数据。
无论如何,这两个分数都是相当巨大的领先,这使得今年Mate 40系列手机的游戏表现非常令人期待。
华为自己的实际游戏性能测试是,“某国内TOP MOBA类游戏”满帧状态的能效,平均比“友商”(也就是骁龙865 Plus,三星Galaxy Note 20 Ultra)优秀20%;包括《王者荣耀》《和平精英》《明日之后》等在内的多款主流游戏,系统能效比都优于骁龙865+——这似乎还是华为首次在反复提GPU的“能效”,而不单纯是性能:表明这次的底气比以往都更充足。
事实上,Mali G78相比G77并没有发生太大的变化。但G77是首次换用了Valhall架构——算是一次大变动,G78则是个改款。仍然建议有兴趣的同学阅读此前有关Mali G77的文章《Arm新版Mali GPU简析:这次终于赶超高通和苹果?》。G77相比G76,性能密度提升30%,能效提升30%;主要是G77的shader核心换用新的执行引擎,16-wide warp执行模型,合并为一个执行引擎,提升ALU利用率。
因为此前G76已经有了一次Arm Mali阵营的大跃进,所以G77就纸面数字来看还是比较优秀的。而G78,Arm的数字是结合微架构与制造工艺的双重改进,相较G77有25%的性能提升。相同工艺情况下,性能密度提升15%(相同面积下,获得15%性能提升);能效提升10%。
Mali G78支持的最大核心数目提升到了24个核心,不知该说Arm Mali这种增多核心的路线是种进步还是退步——麒麟9000显然拉满了这个数字,算是G78的顶配了(9000E则为22个核心),从去年开始似乎华为已经不再走过去那种高频少核的路线了。
G78的执行核心与前代相比没什么变化,就是延续了Valhall架构的特色(16-wide,合并为一个引擎);shader核心整体上也没什么变化。其最大的变化在于从整个GPU的全局频域(frequency domain)变为两级结构,最顶级的共享GPU模块为一个频域,shader核心为一个频域——也就是GPU内部不同步的时钟域,shader核心可以跑在不同的频率下。只是不知道麒麟9000是否实施了这个方案。
这事实上解决了Mali GPU一个很大的问题:要在屏幕上推更多数量的多边形时,以前只能全面推高运行频率。如今市面上出现的新游戏普遍是几何处理工作偏重的,将tiler和几何引擎运行频率解耦,就能够解决吞吐不平衡的问题。另外就是,理论上能效也能得到改进——只不过要增加额外的电压域实施,也就增加了系统的成本。除此之外,G78的FMA引擎做了翻新,主要是乘法器结构变化,以及FP32和FP16路径做了隔离,据说是以面积来换取30%的节能。
大概也是因为GPU性能和效率水平真的上来了,艾伟今年谈了不少游戏画质相关的东西。而且事实上,在《原神》这类游戏开始出现在手机之上,更多原本属于PC和主机的游戏体验、特效,都开始向移动平台迁移。
包括SSR屏幕空间反射、MSAA/TAA抗锯齿,以及动态模糊、体积光+实时阴影等更好的游戏画质实现上,华为宣传的是麒麟9000在更好地实现这些特效的基础上,同时做到高帧率,以及更高的效率——如上图所示,是对比某尚未发布的游戏,在开启HDR、MSAA抗锯齿等特性后,稳定60fps运行,以及实现比“友商芯片平台”(这个对比对象未知)高了一倍的效率(图中中间mW/frame数值)。这其中应该也有AI的辅助:早年Kirin 970时期起,通过机器学习来达成针对特定游戏、特定设备的最优化DVFS调度。
所以Mate 40的GPU实际表现,的确令人十分期待。骁龙875的GPU恐怕会面临比较大的压力。
麒麟9000的NPU升级到达芬奇架构2.0,“NPU算力翻倍”。当然我们不清楚达芬奇架构2.0相比1.0,到底改了些什么。比较抽象的形容是“MAC规模翻倍,卷积网络性能翻倍,核间通讯带宽翻番”。所以AI Benchmark(ETH AI Benchmark V4.0)之类的拿“全球第一”也并不奇怪。另外华为这次特别提到了Int8数据类型的性能与能效。
艾伟说AI普及后,手机终端越来越多地需要做8位整型数据计算,而不是浮点FP16。用ResNet50网络来跑,麒麟9000的Int8性能较骁龙865+高出60%,能效则高了150%——这应该和高通的AI Engine始终不上专核,而主要靠强化DSP与异构计算有关。
SoC层面另外值得一提的就是前文已经提到过的system cache。由于这个末端cache容量增大,很多情况下各IP模块就不需要再去调用DRAM。由于带宽的成倍增加,以及能效的提升,NPU与其他处理器工作的实时性才有更好的保障。
往年的NPU介绍,大致上也就停留在这个程度了。今年华为似乎急着想要证明,NPU究竟能用来做什么。事实上,Android阵营的AI生态发展得并没有那么高速,即便华为始终在说HiAI支持的人工智能网络算子是业界最多。但华为在这个生态上的建设,真可谓不遗余力。这次艾伟主要列举了NPU的三个用处:AI视频处理、AI拍视频、AI AR。