“吓人技术”到底是个啥?华为GPU Turbo两大流言深度辨析

  GPU Turbo 自 6 月份荣耀 Play 和荣耀 9i 发布会上以“吓死人不偿命”的姿态问世后,不怕死的吃瓜群众们纷纷带着瓜子饮料矿泉水小板凳围了个里三层外三层,一时间流言四起。这之中,有些低级流言我们一眼就能看出真假,而有些流言却要么利用人的心理,要么故作高深让人一些不懂,因而倒也传的似模似样。

  但这些终究不可尽信,甚至可信者百里无一。今天雷锋网便与大家一起,辨析两条在玩家中传的似模似样的流言。

“吓人技术”到底是个啥?华为GPU Turbo两大流言深度辨析

  GPU Turbo 只是华为花钱买优化?

  在 GPU Turbo 发布伊始,余承东便曾表示,GPU Turbo 技术在令 GPU 处理性能提高 60% 的同时(注意,是“同时”),还可以将 GPU 功耗降低 30%。

  Really?性能提高 60%,功耗降低 30%,多么惊人的提升啊!笔者表示,手里的荣耀 9 都快握不住了啊~

  为了验证官宣的真伪,我们以 Anandtech 的测试来作参考,简单粗暴的判断一下。测试中搭在了麒麟 970 的华为 Mate10 跑出了 37.66fps 的成绩,在此基础上提升 60% 应该是 60.26fps;而功耗是 6.33W,在此基础上降低 30% 应该是 4.43W。

“吓人技术”到底是个啥?华为GPU Turbo两大流言深度辨析

  因此,按照官方宣传的数据,麒麟 970 在 GPU Turbo 加持后,GPU 性能应该几乎持平骁龙 845,而 GPU 功耗则要低于骁龙 845,对应的能耗比则为 13.60fps/W,成功反超使用骁龙 845 的三星 S9+,仅略低于高通 QRD(Qualcomm Reference Design)参考设计平台。

  这样的计算结果虽然很美好,但若以性能来看,不过只是勉强追平骁龙 845 而已,根本达不到“秒杀”或“完胜”的地步。而功耗若仅降至 4.43W,也不足以完全避免降频(毕竟比 4.43W 更低的骁龙 821、820、835 也都降频)。

  那这事情就有意思了,根据发布会上的现场演示,以及此后一票媒体铺天盖地的实测,GPU Turbo 确实显著改善了麒麟 970 的游戏性能及功耗发热表现,事实胜于雄辩啊,测试结果比理论推算的成绩还要更好呢。

  这时有人提出,华为官方公开的 GPU Turbo 支援游戏列表,首批优化的游戏有 6 款,分别是《王者荣耀》《QQ 飞车》《穿越火线》《刺激战场》《全军出击》《荒野行动》。明眼人一看便知,这 6 款游戏里,有 5 个是腾讯系产品,剩下一个是网易的。要知道,腾讯系的游戏可是典型的“付费优化”,只要肯花钱,蓝绿厂的骁龙 660 都能秒杀其他品牌的骁龙 845。

  怕不是华为终于想开了,肯给腾讯塞钱了?

  实际上,对游戏行业与公司稍有了解的朋友,很容易看出这种说法基本上相当于“出租车司机讲内参消息”,听着很带劲,但不符合常识和逻辑。

  华为与腾讯的合作,要远比外界想象的更紧密。从 2017 年 12 月 2 日开始,华为和腾讯就成立了一个联合实验室,用来沟通与同步日常技术之间的升级以及优化。像是《刺激战场》这类头部产品的更新,华为还会派工程师驻场,以保障手机与游戏之间更加适配,优化双方用户业务上线后的体验。

  因此,GPU Turbo 只是华为花钱买优化这种流言,只需稍作了解,便可直接打上 fake 的标签扔进垃圾堆了。不过这也带来了新的问题,既然 GPU Turbo 并不是花钱买优化这么简单,那华为到底是怎么做到的?

  这就要深入了解下麒麟 970 的硬件设计了。

  华为对 GPU 做了什么?

  根据国外网站 techinsights 对三星 Exynos 9810 处理器核心的X光透视照片,我们已经可以清楚的知道,Exynos 9810 的芯片面积为 10.37mm*11.47mm=118.94mm²,其中三星自主设计的猫鼬 M3 大核心集群面积为 20.23mm²,Cortex A55 小核心集群面积为 1.87mm²,Mali G72 MP18 GPU 集群面积为 24.53mm²。

“吓人技术”到底是个啥?华为GPU Turbo两大流言深度辨析

  Exynos 9810 的X光透视图

  根据透视图上标出的核心内模块的比例,我们可以大致测算出,Exynos 9810 中单个 Mali G72 的面积大约为 1.072mm²。

  而根据 techinsights 的研究数据,我们知道麒麟 970 的芯片面积为 9.75mm*9.92mm=96.72mm²,其中 Cortex A73 大核集群面积为 5.66mm²,Cortex A53 小核集群面积为 2.45mm²,Mali G72 MP12 GPU 集群面积为 18.04mm²。

“吓人技术”到底是个啥?华为GPU Turbo两大流言深度辨析

  麒麟 970 的X光透视图

  同样,我们可以根据透视图上标出的核心内模块的比例大致测算出,麒麟 970 中单个 Mali G72 的面积大约为 1.344mm²,比 Exynos 9810 中的大了 0.272mm²,此外麒麟 970 中 Mali G72 核心的形状也与 Exynos 9810 中的有很大不同。

  而根据雷锋网此前详细解读 7nm 制程的文章中的数据,Exynos 9810 所使用的三星 10nm LPP 制程与麒麟 970 所使用的台积电 10nm FF 制程,在特征尺寸和晶体管密度等指标上几乎是相同的。

“吓人技术”到底是个啥?华为GPU Turbo两大流言深度辨析

  因此,Exynos 9810 和麒麟 970 中单个 Mali G72 核心形状和面积的差异,代表着二者虽然均为 Mali G72 架构,但在 GPU 内部电路设计及投放的晶体管规模上有很大不同。

  更进一步的,我们可以得出一个基本结论:华为在设计麒麟 970 的时候,并不只是拿 Arm 的公版 Mali G72 进行了简单的堆砌,而是进行了大刀阔斧的改良。

  增加的面积,是缓存?

  在 GPU Turbo 公布后不久,网上便有人爆料,在中国专利公布公告网上挖出了一篇名为《一种优化核函数的方法和装置》专利(授权公告号 CN104866297B),并围绕这篇专利大开脑洞。

  这些分析者认为,“华为在 15 年以后设计的麒麟芯片 GPU 里都设计了用于全局变量寄存器,同时为了保持专利申请到位前的应用,保留了 GPU 大外寄存格局”。简单来说就是,华为没有改动 Mali G72 核心,也没有提高 Mali G72 的实际性能,但是在 GPU 区域加了寄存,同时修改了数据总线,提高了 Mali G72 的函数数据读存速度和效率。(此为分析者的说法,并非笔者观点)

  为此,这些分析者笑称“GPU 里你也加 Cache?华而有钱,为所欲为”,甚至还认为华为在 GPU 技术上已经吊打 NVIDIA。

“吓人技术”到底是个啥?华为GPU Turbo两大流言深度辨析

  那么,麒麟 970 的 Mali G72 之所以变大这么多,就是因为华为在 GPU 里增加了高速缓存咯?

  笔者个人认为,这种可能性不能说没有,但真的很小。

  首先不得不纠正这些分析者的是,寄存器(Register)和 Cache(高速缓存)并不是同一种东西。在存储体系中,Register 的位置要比高速缓存更靠前,它的速度比高速缓存更快而容量极小,为运算单元提供着指令寄存空间(IR)、程序计数缓冲(PC)以及累加器(ACC)等多方面的服务。

  高速缓存在存储体系中位于 Register 之后。它有两大特点:第一是快,速度仅次于 Register;第二就是极其消耗晶体管,每 bit(不是 byte)就要消耗多达 6 个晶体管。

  然而根据已知的消息,世界上第一颗集成高速缓存的民用级 GPU 是 NVIDIA 在 2001 年推出的 NV20,也就是 Geforce 3 系列显卡,其在 GPU 内集成了 128KB Cache 用于纹理缓冲。2004 年,NVIDIA 又在 Geforce 6800Ultra 的 NV40 核心中增设了大小为 128KB 的 L2 Texture Cache,之后 Geforce 7800GTX 的 G70 核心又将之增加至 288K。

  ATI 这边则是在 Radeon 1800XT 的 R520 核心中加入了完整的 L2 Texture Cache,并在 Radeon 2900XT 的 R600 核心中将其扩充至 256KB。而 Mali 系列 GPU 自 2008 年的 Mali 400 开始,也早已全线加入了 Cache 设计。根据 Arm 的官方设计参数,Mali G72 可以根据不同需求,自行配置 128KB~2MB 不等的 L2 Cache。

“吓人技术”到底是个啥?华为GPU Turbo两大流言深度辨析

  可见,在 GPU 中设置高速缓存并不是什么新技术,更谈不上什么黑科技,NVIDIA、ATI 和 Arm 等 GPU 设计公司早在十年甚至二十年前就已经这样做了。

  缓存对 GPU 性能提升有多大?

  上面我们已经知道了,麒麟 970 中单个 Mali G72 的面积大约为 1.344mm²,Exynos 9810 中单个 Mali G72 的面积大约为 1.072mm²,而根据 semiwiki 的资料,三星和台积电 10nm 制程的晶体管密度均约为 55MTr/mm²(百万晶体管每平方毫米)。

  我们可以反推得知,麒麟 970 的 Mali G72 多出来的这部分面积,可容下约 1500 万晶体管,即便全部用来做 Cache 也只有 300KB。相较于 Arm 官方设计参数中 128KB~2MB 可自由裁量的 L2 Cache 配置范围,这 300KB 说是无足轻重也不为过吧。

  OK,关于缓存的信息推导到这里,基本可以说已经被颠覆了一半,而剩下的问题则是,万一麒麟 970 真的是扩充了缓存规模,对 GPU 的性能提升能有多大?

  为了验证这一问题,我们要请出两位已经捉对厮杀了四年半之久的老冤家:索尼 PlayStaion4 和微软 XBOXONE。

  也许有的读者看到这已经明白了,没错,说的就是微软为 XBOXONE 处理器设计的那 32MB ESRAM。

  关于这两台机器的配置这里就不在赘述了,简单来说,PS4 的 GPU 规模更大,有 1152 个流处理器;XBOXONE 的 GPU 则只有 768 个流处理器,不过微软为其设计了一块 32MB 的 ESRAM 作为高速缓存。

“吓人技术”到底是个啥?华为GPU Turbo两大流言深度辨析

  XBOXONE 中 Jaguar APU 的X光透视图

  从透视图中可以看出,右侧的 SRAM 区域占据了整块芯片相当大的空间,比位于中部的 GPU 部分还要大。这 32MB ESRAM 可谓是吞晶巨兽,消耗了多达 16 亿晶体管,要知道 XBOXONE 的整块 APU 也不过 50 亿晶体管而已,单单 ESRAM 就吃掉了几乎三分之一。

  而和 PS4 对比的结果也无需多言, XBOXONE 相对 PS4 仍存在普遍接近 30% 的性能差异,与二者的 GPU 基础规模差距基本相当,足以证明这 32MB ESRAM 对 GPU 性能的弥补微乎其微。

  实际上,从技术角度来说,Cache 在整个 GPU 运算体系中多用作应对寄存器缓冲溢出使用。它的速度和延迟相对于寄存器来说差了不少,但可以在编程环境处理得当的前提下发挥很好的延迟掩盖作用。除此之外,Cache 便只用作衔接 GPU 和显存的作用了。

  Mali G72,扶不起的阿斗

  在雷锋网此前分析 Arm 全新 Mali G76的时候曾经提到,Mali G71/G72 的 Bifrost 架构采用了 4 宽度线程粒度,相比竞争对手架构的线程粒度(16~32 宽度)要小很多。通常来讲,线程粒度反映了架构在资源/面积密度和性能之间的平衡点,较大的线程粒度可节省控制逻辑单元数量(单个 32 宽度线程粒度只需 1 个控制逻辑单元,而 8 个 4 宽度线程粒度需要 8 个控制逻辑单元)。

  Mali G72 4 宽度线程粒度的设计,控制逻辑单元与 ALU 的比率太高了,浪费了大量硬件规模,实际游戏中几乎用不到这么小的尺寸。随着技术和应用的发展以及移动 GPU 在 VR 和高画质游戏领域的压力不断增加,Quad 结构的运算效率已无法满足需求。

  从 Anandtech 的测试中可以看出,Exynos 9810 的 GPU 虽然能耗比表现不错,但却是以巨大的芯片面积换来的。那 18 核 Mali G72 的面积比高通 Adreno 630 大 130%(Adreno 630 面积为 10.69mm²),性能却还不如 Adreno 630。

“吓人技术”到底是个啥?华为GPU Turbo两大流言深度辨析

  与三星的狂堆核心数相比,麒麟 970 只使用了中等数量的核心,然后通过拉高核心频率来榨取性能。不过每种核心架构在某一工艺下,都有一个能耗比最佳的频率区间,越过这个区间后,继续拉高频需要付出极大的功耗代价。麒麟 970 的 Mali G72 MP12 频率为 746MHz,功耗上升非常明显,能耗比仅略高于使用 Mali G71 的 Exynos 8895。

  说到底,性能不济这口黑锅还是得甩给 Arm 的 Mali G72 架构设计不行,从根本上便无法与高通 Adreno 这样的高效架构抗衡。这不是简单的往 GPU 里多塞几百 KB 高速缓存就能解决的问题。

  而微软为 XBOXONE 增加 ESRAM 的本意也不是为了弥补与 PS4 之间巨大的 GPU 规模差距,而是在设计之初由于 GDDR5 颗粒价格居高不下,微软只能使用 DDR3 搭建存储系统,其 68GB/s带宽相对于 PS4 的 176GB/s相去甚远,因而不得已才为其增设了一块带宽高达 216GB/s的 ESRAM 用作衔接。在 GDDR5 的价格下降后,微软在去年发售的增强版 XBOXONE X 主机上,已将 ESRAM 请出了寸土寸金的芯片。

  因此,GPU Turbo 是依靠在 GPU 中增设高速缓存来提升性能的说法,到此可以彻底宣告终结了。

  一切还需华为亲自公开

  遗憾的是,我们凭着数码爱好者仅有的浅薄知识分析了这么久,也只能攻破以上两个流言,依然没能石锤 GPU Turbo 到底是什么。毕竟这是华为的独门黑科技,就连一向不服同行的罗永浩也交口称赞,其技术水平和难度可见一斑,真能被我们五六千字就扒个干净才是怪事了。

  不过在华为此前的一次 EMUI 公开课上,华为消费者业务软件工程部总裁王成录博士亲自出面解答了 GPU Turbo 技术的一些信息,为大家揭开了 GPU Turbo 神秘面纱的一角。

  大家都知道游戏画面是一帧一帧渲染出来的,相邻的两帧往往有很多相同的地方,而 GPU Turbo 技术将会只渲染画面出现变化的地方。也就是说,如果两帧之间可能有 80% 的画面是一致的,GPU Turbo 就会让芯片只渲染变化的 20%,从而减少 GPU 80% 工作量。

  渲染工作量的减少大幅提升了下一帧的帧数延迟,用户眼球感受到画面掉帧需要 16.7 毫秒的时间,华为 GPU Turbo 可以把下一帧的渲染时间控制在 7 毫秒以内,最快可以在短短 3 毫秒以内就完成下一帧的渲染工作。

  合理调度 GPU 资源,节省 GPU 性能到游戏最需要的地方,这才是 GPU Turbo 让游戏满帧运行的秘密所在。

“吓人技术”到底是个啥?华为GPU Turbo两大流言深度辨析

  当然王成录博士只是对于 GPU Turbo 技术工作原理做了一个简要解答,至于 GPU Turbo 是如何判定并计算两帧画面之间的差别,王成录博士并未做解答,或许这就是隐藏在 Mali G72 多出来那 0.272mm²中的商业机密吧。

  GPU Turbo 从立项到研发成功耗费了 5 年多的时间,王成录博士表示华为对此项技术非常自信,它的技术门槛非常高,其他家不太可能在短时间内跟进。此前国外 XDA 论坛上出现的 GPU Turbo 破解包也很快被证明是一场恶作剧而已,被国内数码爱好者戏称为“装X不讲基本法”。

  看来,GPU Turbo 的一切,还需华为亲自公开。

本文来自投稿,不代表泡面小镇立场,如若转载,请注明出处:http://www.pmtown.com/archives/76638.html

QR code