arm mali g77和麒麟985哪个好(浅析ARM全新MaliG76GPU)
arm mali g77和麒麟985哪个好(浅析ARM全新MaliG76GPU)此前Bifrost架构所用的Quad结构,相比竞争对手架构的线程粒度(16~32宽度)要小很多。通常来讲,线程粒度反映了架构在资源/面积密度和性能之间的平衡点,较大的线程粒度可节省控制逻辑单元数量(单个32宽度线程粒度只需1个控制逻辑单元,而8个4宽度线程粒度需要8个控制逻辑单元)。这是一个非常有趣的变化,通常来说线程粒度的尺寸通常代表着硬件架构的典型特性。PC GPU的线程粒度已经有许多年没有变动过了,NVIDIA自2006年至今一直保持着32宽度,AMD则从2011年至今一直使用64宽度。与Mali G72相比,Mali G76在架构上的优化幅度更大。虽然它仍是Bifrost架构,但GPU的工作方式发生了很大变化。无论在移动GPU还是桌面GPU领域,Mali G76都是单个图形体系版本迭代中变化最大的之一。前代Mali G71/G72的每个EU模块中包含4组FMA和ADD/SF流水线并
距离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的大核心无敌策略。
此前Mali G71/G72最多可支持堆砌32核心,但实际上没有任何一家SoC厂商选择过MP32的最大配置选项,最高也不过是三星Exynos 8895的Mali G71 MP20,其次是Exynos 9810的Mali G72 MP18,而华为的麒麟970使用了Mali G72 MP12,麒麟960则只有Mali G71 MP8。
出现这种现象的原因恰恰是Mali G71/G72的单位面积性能太差了。以Exynos 9810的18核Mali G72为例,其GPU总面积为24.53 mm²,是高通Adreno 630(10.69 mm²)的2.3倍、苹果A11 GPU(15.28 mm²)的1.6倍,而性能却还不如Adreno 630和苹果A11 GPU。更遑论Exynos 8895上面积更大(32 mm²)性能更低的Mali G71 MP20。
三星Exynos 9810核心透视图
与三星的狂堆核心数相比,麒麟970和960则只使用了中等数量的核心,然后通过拉高核心频率来榨取性能。然而雷锋网在上篇分析Cortex A76的文章中提到过,每种核心架构在某一工艺下,都有一个能耗比最佳的频率区间,越过这个区间后,继续拉高频需要付出极大的功耗代价。
三星Exynos 9810和8895虽然GPU面积很大,但由于频率只有560MHz左右,因此功耗表现尚可。而麒麟970的Mali G72 MP12为746MHz,功耗上升非常明显,能耗比仅略高于使用Mali G71的Exynos 8895。麒麟960的Mali G71 MP8频率甚至高达1037MHz,暴增的功耗使其能耗比还不如老旧Exynos 7420上的Mali T760 MP8。
考虑到实际使用中的情况,以及Mali G76核心规模的扩充,Arm决定将Mali G76的最大核心数量下调至20核心。通过将功能模块和执行引擎整合到更少的“内核”中来提高内核的性能密度,可显着改善GPU的单位面积性能。据估计,Mali G76在曼哈顿3.1测试中,每mm²性能提升了39%,
Arm表示,Mali G76 MP12在7nm工艺下,相比Mali G72 MP18将会有50%的性能提升,功耗则保持一致。而相比骁龙845的Adreno 630,Mali G76 MP12在拥有12.8%性能优势的同时,功耗下降了22.8%。(注:Mali G76 MP12频率不明)
结论与思考
总的来说,Mali G76的进步非常明显——单位面积性能提高了30%,且功耗表现也有很大改善。然而雷锋网认为,尽管Mali G76将大大提高Arm公版GPU的竞争力,但依然不足以借此一役赶超竞争对手。
在微架构优化方面,Arm的确在整合核心和加强核心方面做出了正确的选择。Arm公版GPU的多核心策略是一把双刃剑,它虽然允许厂商根据自身需求配置核心数量,但多核心也会导致不可避免的性能和面积损耗。Arm虽然预测了Mali G76 MP12的表现,但与高通Adreno 630和苹果A11的GPU相比,12核依然太多了。
想想Mali G72 MP18与Adreno 630的对比,即便Mali G76的每平方毫米性能提升了39%,依然无法抵消高达2.3:1的面积比。用7nm的Mali G76 MP12打赢10nm的Adreno 630并不能说明什么,如果二者同为7nm工艺,不出意外Mali G76的能耗和面积依然会有明显劣势。
目前,雷锋网非常关注Mali G76在实际芯片中能有怎样的表现,同时希望Arm在未来能将每个EU的计算资源再增加一倍,这很可能将再次带来巨大的改进,进一步缩小与竞争对手的差距。
via:Anandtech