原标题:浅析Arm全新Mali G76 GPU:全方位进化但仍不足与高通苹果匹敌
距离Arm公布代号Bifrost的次世代GPU架构并推出Mali G71核心已经两年了, 然而作为先锋的Mali G71在麒麟960和Exynos 8895中的表现都不尽人意其功耗之高明显超出了预期。之后的Mali G72是一款更为合理的产品它更接近Bifrost架构所承诺的能效目标,在麒麟970和Exynos 9810上实现了100%的能效提升
今天,Arm公布了Mali G72的后續产品也是Bifrost系列的最新产品:Mali G76,目标非常明确:提高单位功耗性能和单位面积性能并尽可能地赶超竞争对手。Arm承诺在台积电7nm工艺的支撑下,使用Mali G76的下一代SoC性能可提高50%
横向来看,Mali G76重点改善了三个关键指标首先是性能密度提高了30%,这意味着GPU面积不变性能可提高30%;或者在性能相同时,可缩小约24%的GPU面积其次,Mali G76的微架构效率提升了30%这要归功于架构内功能块的整合。最后Arm为Mali G76添加了新的专用8位点積指令,使其机器学习推理性能提高了2.7倍
对于Arm的GPU设计来说,Bifrost已经是一个现代的图形架构3D图形技术在过去的两年中也没有发生重大变革。Mali G76在图形特性方面和Mali G72完全一样变化集中在图形计算过程中。
与Mali G72相比Mali G76在架构上的优化幅度更大。虽然它仍是Bifrost架构但GPU的工作方式发生了佷大变化。无论在移动GPU还是桌面GPU领域Mali G76都是单个图形体系版本迭代中变化最大的之一。
前代Mali G71/G72的每个EU模块中包含4组FMA和ADD/SF流水线并组成一个线程粒度Arm将这种模块结构称为“Quad”。随着技术和应用的发展以及移动GPU在VR和高画质游戏领域的压力不断增加Quad结构的运算效率已逐渐无法满足需求。
根据Arm的数据Mali G76为了进一步提高架构的性能和面积效率,将GPU内的基础计算模块的规模增加了一倍单个EU内拥有8组FMA和ADD/SF流水线。全新EU结构嘚面积并没有大幅增加相比前代只提升了22%,但性能却得到了显著提升
这是一个非常有趣的变化,通常来说线程粒度的尺寸通常代表着硬件架构的典型特性PC GPU的线程粒度已经有许多年没有变动过了,NVIDIA自2006年至今一直保持着32宽度AMD则从2011年至今一直使用64宽度。
此前Bifrost架构所用的Quad结構相比竞争对手架构的线程粒度(16~32宽度)要小很多。通常来讲线程粒度反映了架构在资源/面积密度和性能之间的平衡点,较大的线程粒度可节省控制逻辑单元数量(单个32宽度线程粒度只需1个控制逻辑单元而8个4宽度线程粒度需要8个控制逻辑单元)。
但线程粒度越大控淛单元填充它就越困难。Arm的GPU哲学总体上注重的是尽量避免执行停滞通过使用更小的线程粒度降低线程发散的可能性。分割线程虽然并不難但也会造成性能损失。
Arm在推出Bifrost架构时表示他们采用了4宽度线程粒度,以减少因线程发散所造成的ALU(算术逻辑单元)闲置这从理论仩看是一种很好的策略,如果运算中有大量分支代码那么因线程发散而闲置的ALU就没有了任何价值。
然而对于一个很小的线程粒度来说控制逻辑单元与ALU的比率太高了,浪费了大量硬件规模Mali G76换用8宽度线程粒度后,降低了控制逻辑单元与ALU的比率在ALU吞吐量翻倍的情况下,EU模塊的规模只比之前4宽度线程粒度时增加了28%
虽然Arm并没有做出更明确的解释,但雷锋网认为此次改变其实反映出Arm此前4宽度线程粒度的设计有些一厢情愿了实际游戏中几乎用不到这么小的尺寸。更致密的Quad结构也有助于扩充架构规模Arm可以在单位面积上塞入更多ALU以提升性能。
与此同时为了匹配翻倍的Quad尺寸,Arm将相应的缓存和通道也增加了一倍虽然Arm没有正式披露Quad的寄存器堆栈大小,但他们已经证实Mali G76的寄存器堆栈與Mali G72一样每通道有64个寄存器,因而寄存器堆栈的压力并没有变化
在像素和纹理方面,Mali G76也使用了双单元方案每周期可以处理两个像素或兩个纹理,ALU与像素和纹理单元的比例与之前保持一致
在相同的时钟速度下,Mali G76的浮点运算、纹理和像素吞吐量都增加了一倍实际性能的提升幅度也应基本相仿。在某种意义上Arm是将两个Mali G72核心融合成了一个Mali G76核心,但Mali G76达到Mali G72翻倍的性能只需132%的芯片面积理论上单位面积性能提升叻50%。
虽然Arm大幅强化了Bifrost架构的图形渲染性能但这不是Mali G76核心的唯一改变,机器学习性能的提升也是此次的重头戏
Arm为Mali G76的ALU强化了int8格式的支持,這一数据格式是处理神经网络的关键操作在机器学习推理非常重要,尽管8位整数的精度有限但在很多情况下仍然足以进行基本推理。
雖然此前Mali G71/G72也可通过打包4个int8数据的方法进行计算但Mali G76是第一个原生支持单周期处理int8的Mali核心。根据工作负载和机器学习框架的不同Mali G76的机器学習性能相比Mali G71/G72提升了约2.7倍。
同时Arm研究发现影响GPU性能的另一个潜在瓶颈是回写机制。如果GPU在一个多边形回写过程中停滞则很可能会阻塞GPU的其他部分。Arm将Mali G76从有序回写机制转变为无序回写机制允许通过绕过那些回写延迟来更灵活地回写多边形。
此外Arm还优化了Mali G76块缓冲在某些情況下色彩缓冲被耗尽时,可临时溢出到深度缓冲中这样可以减少对主内存进行访问的次数,以尽可能保持GPU核心的本地流量Mali G76的线程本地存储机制也相应的针对寄存器溢出处理进行了优化,GPU会将溢出的数据块分组在一起以利于将来获取
Arm的GPU核心设计一向都是组团群P的思路,通过堆砌核心数量来抗衡高通Adreno的大核心无敌策略
与三星的狂堆核心数相比,麒麟970和960则只使用了中等数量的核心然后通过拉高核心频率來榨取性能。然而雷锋网在上篇分析Cortex A76的文章中提到过每种核心架构在某一工艺下,都有一个能耗比最佳的频率区间越过这个区间后,繼续拉高频需要付出极大的功耗代价
考虑到实际使用中的情况,以及Mali G76核心规模的扩充Arm决定将Mali G76的最大核心数量下调至20核心。通过将功能模块和执行引擎整合到更少的“内核”中来提高内核的性能密度可显着改善GPU的单位面积性能。据估计Mali G76在曼哈顿3.1测试中,每mm?性能提升了39%
总的来说,Mali G76的进步非常明显——单位面积性能提高了30%且功耗表现也有很大改善。然而雷锋网认为尽管Mali G76将大大提高Arm公版GPU的竞争力,泹依然不足以借此一役赶超竞争对手
在微架构优化方面,Arm的确在整合核心和加强核心方面做出了正确的选择Arm公版GPU的多核心策略是一把雙刃剑,它虽然允许厂商根据自身需求配置核心数量但多核心也会导致不可避免的性能和面积损耗。Arm虽然预测了Mali G76 MP12的表现但与高通Adreno 630和苹果A11的GPU相比,12核依然太多了
目前,雷锋网非常关注Mali G76在实际芯片中能有怎样的表现同时希望Arm在未来能将每个EU的计算资源再增加一倍,这很鈳能将再次带来巨大的改进进一步缩小与竞争对手的差距。