《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 自主设计GPU 苹果将如何达成目的

自主设计GPU 苹果将如何达成目的

2016-10-29

       iPhone 和 iPad 使用的 GPU一直都是 Imagination Technologies 供应的 PowerVR GPU,苹果甚至拥有该供应商 10% 的股份,为后者创造了大约 30% 的营收。曾经苹果在移动设备上使用的 ARM CPU,不过他们现在都已经自己设计移动处理器,因此行业认为苹果已经逐渐从 PowerVR 授权转变为设计定制 GPU。在 iPhone 6 的 A8 处理器中我们可以看到苹果的定制 GPU,iPhone 6s 和 iPhone 7 中 A9 和 A10 Fusion 处理器也使用了定制 GPU。

  iPhone 和 iPad 中使用的现代 GPU 需要三个重要组成部分协调工作才能渲染一个场景。第一个是固定功能图形硬件,其主要负责的任务包括处理 API 指令、三角光栅以及光栅输出。第二个是渲染核心,它相当于 GPU 的心脏,执行可编程着色(Programmable Shaders)任务。最后一个是显卡驱动器——在 CPU 上运行的软件,它将所有东西紧密结合在一起,协调 GPU 上的活动。驱动器将写在 Metal 或 OpenGL ES API 中的图形应用转化成一系列指令,以便固定功能图形硬件和执行可编程着色在渲染核心上执行这些指令。驱动器上最大的部件就是编译器,它能够生成可在渲染核心上运行的机器代码。

40.jpg

  以前苹果使用的固定功能图形硬件、渲染核心和驱动器均是由 Imagination Technologies 授权的。但是过去 6-7 年苹果公司从 AMD、英特尔、谷歌和英伟达等公司挖走了大量显卡工程师和驱动器、编译器工程师,以设计定制 GPU。比如此前有消息称今年早些时候苹果公司从 Imagination Technologies 公司挖走了大约 25 名工程师。苹果的 GPU 显然还在使用 PowerVR 的部分固定功能图形硬件。但是从目前曝光的各种整合看来,苹果已经在 GPU 中使用他们自己开发的可编程着色核心,它的效率更高、性能也更强。

  如果想要充分发挥定制渲染核心的优势,那么苹果必须自己开发驱动器和编译器,以生成适合其架构的代码。结果就是苹果的 GPU 和 PowerVR 会有一些相似点。不过它的设计非常独特,是世界级的设计,性能和功率都很强。从移动显卡跑分来看,A9 处理器可以说几乎每个方面都拿到了最高分,而 A10 Fusion 在这个基础上又更快,为 40-50%。

  到目前苹果 GPU 架构都没有比较详尽的文字记录,为了让开发者可以充分利用这个 GPU,他们需要了解如何针对 Metal 和 OpenGL 编译器来编写着色器程序。在 2016 年 WWDC 大会上,苹果公司工程师进行了一场名为“Advanced Metal Shader Optimization”的演示,其中就有关于最新定制 GPU 的详细调优指南以及架构细节。PowerVR Series 6 GPU 架构的相关文字介绍也很少,不过 Imagination Technologies 公开过一些基本的编译器和优化指南。通过对比这两者我们可以发现它们之间的差别很大。特别是苹果的寄存器文件和数据转换功能更适于提升性能和效能,也是一个更简单的编译器目标。

苹果用更小的寄存器来提升性能和效能

  OpenGL ES 移动显卡 API 和苹果的 Metal API 支持图像数据和计算的 16 位半精度浮点格式,与 32 位单精度计算相比,它能耗更少。在某些情况下,半精度计算会比单精度计算更快失去准确度。但是对于很多显卡、图像处理和机器学习负载来说,半精度计算足以得到正确的结果——特别是大部分屏幕的每像素动态范围只是 8-12 位。

  根据苹果工程师的演示我们了解到,苹果 GPU 的寄存器文件主要由 16 位寄存器组成——非常适合半精度数据。单精度浮点值和其他 32 位数据需要两个寄存器。因此寄存器文件可以保存的 16 位寄存器是 32 位寄存器的两倍。苹果工程师强调与单精度相比,半精度的性能和能效更强,这也就说明半精度是苹果的首要设计点。

  相比之下 PowerVR Series 6 和 7 GPU 使用 32 位寄存器,是针对单精度计算设计的。在 Series 6 中,最常见的指令比如 FMAD、FMUL 和 FADD 都是在单精度数据上运行的。有些指令是在一个寄存器的两个 16 位 SIMD 元素上执行的,但是 SIMD 执行指令和使用 16 位寄存器进行标量执行更是不同的。于 PowerVR 而言,以 16 位格式存储数据会浪费寄存器部分空间,而且也不能自动将变量的数目变成双倍,以在寄存器文件中使用。因此使用 16 位数据可以减少内存带宽和能耗,但是不能像苹果 GPU 那样强化性能或者提高效能。

  16 位数据一个常见的难题是虽然精度降低,大部分计算还是没有问题的,但有时候有些计算需要更大的精度。比如,着色器计算大像素块的颜色,然后计算平均值时,它可以针对单个像素使用 16 位数据,但是求总和时却需要 32 位数据。如果将像素数据从 16 位转换到 32 位,成本太高,整个着色器会使用 32 位数据去计算出正确的答案。

  苹果的 GPU 支持在不同数据类型之间转换进行混合精度计算,为更高性能和低能耗的 16 位计算创造更多机会。从苹果公司的演示来看,数据类型的转换非常自由,也就说转换硬件是在标准数据路径之中。虽然从硬件的角度来说这种解决方案成本更高,但是它大大简化了编译器,程序员也可以更容易地写出好的软件。

  PowerVR Series 6 和 7 可以转换不同精度的数据类型,但是这种转换不是自由的。他们指出这种数据转换会产生成本,因此建议开发者编写着色器程序是能够尽量减小需要转换的次数。

苹果定制GPU的技术差别

  苹果和 Imagination GPU 的寄存文件和数据转换之间的差别很大。寄存文件组织对于渲染核心来说是最基础的,它影响到所有东西的设计,从渲染核心指令集架构到执行单元和时序逻辑。比如,寄存器大小决定数据路径和渲染核心中的线路。数据转换并没有什么重大影响,但是对于编译器和开发者来说就不一样了。PowerVR Series 7 GPU 与它的上一代相比,只要使用 32 位寄存器。根据这些差别,我们可以得出一个比较符合逻辑的结论,苹果的 GPU 使用的是他们内部自己设计的渲染核心,也就是说苹果也自己为 OpenGL ES 和 Metal API 开发自主着色程序编译器,而且很有可能还有自主显卡驱动器。

41.jpg

  有些跑分测试已经发现了这些端倪。GFXBench 跑分出现的结果直接将 iPhone 7 中的 GPU 命名为 G9。通过对比直接测试 Metal 和 PowerVR GPU 的 OpenGL ES 的着色器的结果,你就能发现苹果 GPU 和 PowerVR 之间的很多不同。也有可能是 Metal 上有一些独特的特性并不适合使用在 PowerVR GPU 上。但是其中的一些不同可能没法突出不同的硬件选择。比如苹果 GPU 最高支持 OpenGL ES 3.0,而 PowerVR GPU 则能支持最新版本。不过这些不同主要是因为软件和驱动器,而不是因为硬件。

自主设计的战略优势

  在消费者电子行业,苹果的垂直整合战略显得非常特别。在 iPhone 和 iPad 上苹果可以说是掌握了一切——从基本的线路设计、处理器、操作系统到面向消费者的服务,比如地图、 iMessage 和相机等。这些控制和整合让苹果的软件和硬件团队获得一些其他竞争对手无法企及的优势。

  从第一代 iPhone 发布到现在,总体趋势非常明显——每走一步苹果对平台和生态系统的控制就更严格。起初苹果使用的是标准的 ARM CPU,而且将大部分订单外包给三星,但最终他们自主设计兼容 ARMv8 的 CPU 核心,性能远远优于竞争对手。同样地苹果收购了 Anobit 利用他们的团队和技术,为 iPhone 和 iPad 闪存自主开发控制存储器。对于苹果来说,设计定制 GPU 将会是顺理成章的一步,从而创造持续性战略优势。

  最明显的优势之一就是苹果的 GPU 比移动行业中竞争对手的更好,包括 ARM 或 Imagination 授权的 GPU,也比高通的更好。强大的性能将能带来更好的用户体验,以及更长的游戏续航,图形和机器学习应用体验也更好。

  苹果的 Metal Performance Shaders 库中包括十几个高度优化的着色器,给开发者带来丰富的工具集。这些着色器包括神经网络分类,比如卷积、池化和修整线性单元层。Metal Performance Shaders 库中还有处理内核,比如通过Lanczos 重采样算法来重新调整图片大小,相比图形线性采样,这种算法能够生成更高质量的图像。比如 Instagram 利用苹果的 GPU 进行色调映射和本地对比强化,甚至苹果相机应用可以利用 GPU 生成各种不同图像效果。对于成像和神经网络,半精度计算堪称良配。相比 PowerVR 的渲染核心,苹果的着色器架构能给这些应用提供更好的性能和效能。

  第二个好处是苹果可以在 GPU 中增加新的特性,修复漏洞,而他们的竞争对手是无法享受到这些好处的。另一方面,有了标准第三方 IP,任何时候苹果修复漏洞或者需要新的特性,那么 Imagination Technology 客户如三星、Mediatek 等也很快就能获得这些好处。

42.jpg

  第三个好处是上市时间和调度。苹果 A 系列处理器就是根据 iPhone 一年一更新的节奏而每年都更新。因为 iPhone 是一款非常重要的产品,苹果必须给顾客提供强大的性能,以及明显的代间升级以刺激需求,因此苹果一般都会带来最新的处理技术,当然这其中也包含着巨大的风险。只要可以自主开发 GPU,苹果就可以选择投资必要的时间和资源去开发,以便赶上芯片发布的时间,相比之下 Imagination 就没有那么强大的财力和丰富的人力资源。

  苹果如果想要一炮打响自己的 GPU 品牌,那么他们就必须在设计、监管、量产以及总的软件生态系统间进行协调。在新品正式发布前,他们需要发现和修复漏洞,升级图形硬件和软件。因为 GPU 设计大多是自主完成,苹果可以对其更新循环进行直接控制,减少对外界的依赖,从而可以确保新品按时发布上市。

  假设苹果工程师在渲染核心中发现了一个严重的逻辑错误,他们可以当天修复,然后再寻找解决方案。如果使用第三方 IP,那么在遇到问题时 IP 供应商必须首先考虑如何解决,同意苹果的解决方案,这可能就需要花一点时间了,因为 IP 供应商还需要协调他们的其他客户。三星的 Exynos 5410 就是一个很好的例子,它同时使用 ARM 的 Cortex A15 和 A7 核心,其中的一个一致性错误迫使三星不得不禁用它的节能功能。自主设计就可以大大降低这种风险,因为其中不存在利益竞争,而且公司之内交流解决方案总比和第三方交流方便。

  最后一个好处就是可以减少对供应商的依赖,这样苹果在谈判中将能占据更有利的位置,降低商业风险。在重要供应商之外再给自己找一家供应商,对于苹果来说这简直是铁律。就如今年,以前一直只用高通 LTE 调制解调器的他们,突然就把英特尔也纳入供应商名单之中。从长远角度来说,这种做法能让进一步压低成本,也给他们创造更多机会。

  其实苹果目前已经组建了 GPU 设计团队和驱动器团队,A8、A9 和 A10 中的 GPU 有很大一部分都是这些团队参与设计的。如果 Imagination Technologies 被收购了或者是技术赶不上行业发展水平,那么苹果只要再自主设计固定供应显卡硬件,替代 PowerVR IP 即可。

苹果下一步怎么走

  未来苹果将有三种选择。目前是由 Imagination Technologies 授权以使用他们的固定图形硬件,以补充苹果自主设计的部件,比如渲染核心。这种情况下,苹果可能最终会升级到更新的 PowerVR。第二种是买下 Imagination Technologies,不过这么一场收购会带来一些苹果并不需要的东西(比如 MIPS 处理器产品线),在今年早些时候已经排除了收购的可能性。另一方面,苹果可以从更大程度上定制他们的 GPU——直到超过 Imagination Technologies。最终苹果就要确定自己是否足以设计出更好的 GPU,不再需要任何合作伙伴,从苹果开发 A 系列处理器的历史来看,他们还是有可能在这个新的领域获得成功的。

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。