看一看苹果自己在iPhone中使用的GPU芯片



对于苹果产品的首款型号iPhone和iPad,该公司许可并使用了Imagination Technologies的PowerVR GPU芯片来显示图形。苹果甚至收购了Imagination约10%的股份,并且是其最大的客户,创造了约30%的收入。正如苹果开始在许可下使用ARM CPU,现在使用自己的开发一样,它似乎已经从使用PowerVR转向开发自己的GPU。他首次出现在iPhone 6上使用的A8处理器上,他的后代出现在iPhone 6S和7上使用的A9和A10 Fusion上。

现代的GPU(例如在iPhone和iPad中使用的GPU)具有三个主要组件,需要进行协调工作才能展示图片。第一个是硬件,它提供具有固定功能的图形,它负责处理API命令,栅格化三角形和栅格输出。第二个是着色器核心,即GPU的核心,它执行软件着色器(顶点,几何,像素和着色器计算)。后者是软件;图形驱动程序在CPU上运行,并结合了控制GPU操作的所有功能。该驱动程序将用Metal或OpenGL ES API编写的图形应用程序转换为具有固定功能的硬件的一组命令,并转换为在着色器内核中工作的可编程着色器。驱动程序最重要的组件之一是编译器,创建用于着色器内核的机器代码。

在较早的几代中,固定功能硬件,着色器内核和Apple驱动程序是在Imagination Technologies的许可下使用的。但是在过去的6到7年中,Apple积极聘请图形架构师和程序员来编译和驱动AMD,Intel,Google和Nvidia等公司的软件,以开发自己的GPU。例如,Apple Insider的Mike Wuerthele写道,今年大约有25人从Imagination Technologies迁移到了Apple。苹果的GPU似乎仍在使用PowerVR的固定硬件。但是根据公共领域的各种证据,很明显,苹果公司已经用自己的,更高效,更快速的内核替换了可编程着色器内核。为了利用它们的优势,Apple还开发了自己的驱动程序和编译器,它们为其体系结构发出代码。尽管PowerVR遗留了一些遗留物,但这样做的总体结果是独特的专有GPU设计。它是世界一流的设计,具有令人印象深刻的速度和能源效率。在所有速度测量中,A9处理器均具有最佳结果,而A10 Fusion则快40-50%。

Apple的GPU文档从未共享。为了使开发人员能够利用GPU,他们需要弄清楚如何为Metal和OpenGL编译器编写着色器程序。在WWDC 2016上,Apple工程师介绍了“金属的高级着色器优化”,其中包含有关GPU的微调和架构细节的最详细说明。 PowerVR Series 6 GPU架构也缺少文档,但是Imagination Technologies共享了一些最简单的优化说明。比较这两种芯片上的可用信息,我们可以得出结论,它们非常不同。特别是,Apple的寄存器和数据转换功能集更适合速度和能源效率,并且编译起来更容易。

苹果通过减少注册人数来提高性能和能效


OpenGL ES和Metal API移动图形API支持用于计算和存储图像数据的16位半精度浮点格式,与32位单精度计算相比,其功耗更低。在某些情况下,半精度计算比单精度计算失去精度更快。但是对于许多处理图形,图像处理和机器学习的应用来说,半精度足以产生正确的结果-特别是由于大多数显示器的动态范围是8到12位一个像素。

苹果公司GPU的寄存器集由16位寄存器组成,根据公共领域中可用的演示文稿判断,该寄存器非常适合日常数据[1]。单精度浮点数据和其他32位数据需要两个寄存器。结果,一组寄存器可以存储的16位变量是32位变量的两倍。苹果工程师强调,与单精度相比,使用半时计算可以显着提高速度和节省能源,这表明他们的体系结构专注于使用半精度作为设计的主要概念。

相反,PowerVR Series 6和7 GPU使用32位寄存器,并根据Imagination Technologies的指令[2]进行了单精度计算。在系列6中,最常用的指令FMAD,FMUL和FADD可以半精度工作,但只需将源和结果寄存器的几位清零即可。某些指令可以在单个寄存器中使用两个16位SIMD元素(并且Series 7将这些功能扩展为更大数量的指令),但是SIMD执行与使用16位寄存器的标量执行有很大不同。对于PowerVR,以16位格式存储数据会浪费寄存器内存,并且存储的变量的最大数量不会自动增加一倍。因此,使用16位数据应减少通过内存的数据量和能耗,但不一定像Apple的GPU那样提高能耗的速度或效率。

简单的转换可使程序员获得一半的精度


16位数据的常见问题之一是,尽管大多数计算不会引起精度降低的问题,但有些计算仍需要高精度。例如,计算一个大像素块的颜色然后计算平均值的着色器,每个单独的像素可能花费16位,但是在对数据求和以进行精确计算时可能需要32位。如果将像素数据从16位转换为32位过于昂贵,则着色器将使用32位来产生准确的结果。

Apple的GPU在数据类型之间提供了非常快速的转换,从而提高了混合精度,并为高速和低功耗16位计算创造了更多机会。根据他们的介绍,数据类型的转换是“免费的”-显然,数据路径中的某个位置是硬件转换器。从硬件的角度来看,这种方法更昂贵,但除其他外,它极大地简化了编译器并使程序员的工作更加轻松。

PowerVR 6和7系列可以进行数据精度转换,但肯定不是“免费的”。优化指令明确指出,每次数据转换(精度降低或提高)都是昂贵的,并建议程序员以最少的转换次数编写着色器[3]。

Apple GPU:技术差异


寄存器集与将数据转换为Apple GPU和Imagination GPU之间的差异非常大。一组寄存器的组织是着色器核心的基础,它影响着几乎所有事物的设计,从着色器内核的指令集的体系结构到代码的部分执行和调度逻辑。例如,寄存器的大小决定了着色器内核几乎整个操作的数据路径和方案。数据转换的影响并不大,但是差异对于编译器和开发人员而言非常重要。 PowerVR Series 7 GPU与上一代第六代GPU非常相似,并使用32位寄存器。基于这种差异,我们可以得出结论,苹果的GPU使用了由公司开发的自己的着色器内核。这意味着苹果已经为OpenGL ES和Metal API开发了自己的着色器编译器,并且很可能和您的图形驱动程序。

甚至某些性能评估程序也能看到差异。在GFXBench的结果中,将用于iPhone 7的GPU的表描述为G9。



但是这个公共数据库的测试结果很快就消失了,所有对G9的引用都消失了。

通过使用Metal着色器运行特殊测试并将结果与​​PowerVR GPU上的类似OpenGL ES着色器进行比较,可以检测到Apple GPU和PowerVR之间存在许多其他差异。并非所有差异都适用于硬件。例如,Apple GPU支持高达3.0的OpenGL ES版本,而PowerVR GPU也可以与更高版本的OpenGL ES一起使用。但是由于软件和驱动程序的功能,可能会出现这种差异。

自主设计的战略利益


苹果的垂直整合是消费电子产品独有的。就iPhone和iPad而言,该公司几乎控制着一切-从处理器的基本电路设计到为Maps,iMessage和Camera用户提供的操作系统和服务。这样,您就可以发挥硬件和软件的共同作用,这是竞争对手无法企及的。

总体趋势很明显-苹果在每一步上都在增加对平台和生态系统的控制。最初,苹果使用标准的ARM处理器,并将大部分工作外包给三星,但最终开发出了自己的与ARMv8兼容的CPU,领先于竞争对手。同样,该公司收购了Anobit,并利用团队和技术来创建自己的闪存控制器。开发自己的CPU只是创造战略优势的下一步。

其中最明显的是,苹果的GPU比竞争对手(包括ARM或Imagination以及高通公司的GPU)更好(更快,更高效)。在游戏中以及在图像生成和机器学习中,领先的性能意味着更高的用户满意度和更少的电池消耗。

Metal Performance Shaders库包含许多在GPU上运行的经过优化的着色器,并为开发人员提供了丰富的工具集[4]。它们包括用于分类,图像处理程序的神经网络。 Instagram使用GPU进行色调映射并改善照片的对比度。苹果相机甚至可能使用GPU来实现各种效果。对于成像和神经网络,半精度是理想选择,Apple着色器体系结构的性能优于PowerVR。

第二个优势是,苹果可以创建新功能并修复GPU中的错误,而不会给竞争对手带来这些好处。

第三,上市时间和计划时间。 iPhone设定的激进年度周期中出现了一系列处理器。由于iPhone是优质产品,因此Apple必须迅速打动用户,并取得良好进展以刺激需求。结果,苹果经常成为新技术的领先客户(例如,台积电(TSMC)推出的10nm工艺),这意味着很大的风险。借助自己的GPU,公司可以决定花费更多的时间和精力来实现它。想象力只有更少的钱和更少的员工。

苹果必须将软件的设计,验证,生产和生态系统巧妙地捆绑在一起,以运行数百万种落入用户手中的手机和平板电脑。发布前的几个月包括疯狂的搜索和修复错误,更新图形软件和硬件的周期。由于GPU现在是其自己的,因此该周期受苹果的直接控制,并具有少量的外部依赖关系,这有助于公司跟上发布的时间。

一个假设的例子-如果Apple工程师在着色器核心中发现严重错误,他们将能够对其进行修复并在同一天对其进行检查。第三方的参与意味着,对于初学者来说,此方必须首先评估错误的优先级,批准更改或解决方法,由于需要与其他客户进行协调,因此可能需要一些时间。三星的Exynos 5410是处理第三方知识产权的危险的教科书示例。它是在大型的ARM Cortex A15和A7的基础上开发的。配置很少以节省电力,但是由于缓存一致性的错误,三星不得不关闭节能功能。自己的开发可以大大降低此类风险,因为在这种情况下,不会存在利益冲突,并且公司内部的信息传输更加容易,比公司之间。

专有GPU的最后一个优势是减少了对供应商的依赖,这使公司在谈判中处于有利地位,并降低了业务风险。为内部或外部主要供应商创建替代方案是苹果公司的古老原则之一。例如,苹果公司依赖高通公司及其iPhone的LTE调制解调器。英特尔开发出竞争产品的调制解调器时,苹果公司将其改编为大多数GSM提供商。将来,这可以降低成本并创造有趣的机会。

专有的GPU为将来使用Imagination的知识产权创造了隐藏的替代方法。该公司已经创建了一个GPU开发团队和一个驱动程序团队,共同开发大多数A8,A9和A10处理器。如果Imagination Technologies在技术部分被购买或落后,Apple可以简单地开发自己的具有固定功能的图形硬件来代替PowerVR。

苹果的下一步


经过多年的图形架构聘用,苹果公司开发了自己的GPU,该GPU已安装在iPhone 6、6S和7上运行的A8,A9和A10处理器上。GPU仍然具有PowerVR的烙铁,但很明显,着色器内核与那些使用Imagination Technologies的公司。这意味着苹果公司为Metal和OpenGL ES制作了自己的编译器,并且很有可能是自己的驱动程序。

从公司的历史来看,开发自己的GPU不足为奇。除了速度方面的明显优势外,还有更少的优势-改善了对生态系统的控制,缩短了上市时间,并减少了错误。

未来,苹果有三种选择。现状-Imagination Technologies许可使用固定功能硬件来补充其组件。在这种情况下,苹果将升级到PowerVR的下一个版本,但可能会同时商定最佳条件和费用。第二种选择是购买Imagination Technologies。但这会带来不必要的附带项目(MIPS产品线),而Apple在2016年已经错过了这样的机会。但是Apple可以继续自己的GPU开发,因此将导致Imagination Technologies占主导地位。该公司将不得不决定自己是否可以做得更好,但是到目前为止,他们一直非常擅长在新领域获得世界一流的资格。

参考文献


[1] Alex Kan和Fiona,高级金属着色器优化。WWDC2016。
[2] PowerVR Series6编译器指令集参考。2016年
3 月17日 [3] PowerVR性能建议。2016年3月17日
[4] Metal Performance Shaders Framework

Source: https://habr.com/ru/post/zh-CN398851/


All Articles