深度解密苹果A12芯片强大之处
2018-10-08 来源: 半导体行业观察
在过去的几年里,苹果的芯片设计团队一直处于架构设计和制造工艺的前沿。苹果A12是该公司又一次跨越代际的飞跃,因为它号称是首款商用7nm芯片。
在谈论工艺节点时,一般而言,数字越小,晶体管就越小。虽然最近节点的名称与实际物理尺寸之间的关联早已失去了意义,但它仍代表密度的飞跃,因此,供应商能够在相同的芯片空间中封装更多的晶体管。
感谢TechInsights公开分享了苹果A12芯片的图片,我们随后发布了裸片照片的首篇分析评论:
苹果A12芯片裸片照片(来源:TechInsights )
本文中,我再次回顾了A12芯片,我写下了我自己定义的关于裸片照片的标签和解释。新的A12芯片主要遵循苹果的SoC布局结构(同过去大多数裸片相比旋转了90度)。
在右侧,我们看到了GPU复合体,中间是四个GPU内核和共享的逻辑部分。CPU复合体位于底部,中间靠左侧有两个Vortex大CPU内核,由大型L2缓存分隔开,紧挨着4个小CPU核心和它们各自的L2缓存。
中间的4个SRAM大组块是系统缓存的一部分,这是SoC范围的缓存层,位于内存控制器和内部系统互连以及区块内存子系统之间。苹果将这个区块用作节能功能:由于DRAM的内存事务在能源使用方面非常昂贵,因此在片上进行缓存会节省很多功率,而且由于数据的局部性,性能可能会有所提升,由此会带来额外的好处。
到目前为止,苹果A12的系统缓存出现了自苹果A7推出以来最大的变化。布局上的巨大变化也表明了区块功能的巨大变化,因为现在我们清楚地看到区块被分成明显的4个部分。在先前的苹果SoC中,例如A11和A10,系统缓存看起来更像一个逻辑区块,看起来似乎是两个部分。区块中部分的加倍可能会表明这个区块的内存性能发生了很大的变化,在后文中,我会进行更详细的分析。
最后一个关于A12的重要介绍是神经网络加速器IP的重大改进。苹果声称已经从A11的双核设计转变为新的8核设计。在演讲中,很重要的一点是,苹果从来没有提到这是内部设计,营销材料总是急着介绍SoC的其他IP区块。
据传去年的设计是CEVA IP,但是我们从未得到完全的确认,因为苹果不希望它被人们所知。A12是8核设计,性能提升了4倍,但实际的性能提升接近8倍,从A11的600GigaOP增加到A12的5TeraOP。在裸片照片中,我们看到8个MAC引擎围绕着一个大型中央缓存,顶部可能有共享的逻辑部分,负责固定功能和完全连接的层处理。
纵观从A11到A12的不同区块大小的变化,我们看到了台积电新7nm工艺节点的优点。值得注意的是,几乎所有的IP区块都经历了变化,所以用A11 vs A12的比较来确定新工艺节点的密度提高了多少并不是有效的方法。尽管如此,我们将单个GPU核心作为可能的候选(因为我们看到的结构基本相同),观察发现,与A11相比,A12尺寸减小了37%。显而易见的是,新节点使苹果能够添加一个额外的GPU核心,然而在绝对值上,A12中的GPU仍然较小。
更大的CPU和大规模缓存层次结构
来源:TechInsights的苹果A12裸片照片,ChipRebel的苹果A11裸片照片
接下来是CPU复合体,尤其是新的大CPU核心,我们现在看到的可能是苹果几代芯片在CPU布局上最大的变化。特别是,我们看到新的Vortex CPU中的L1数据缓存增加了一倍,从64KB增加到128KB。在前端,我们还看到了双倍的SRAM区块,我将其归因于L1指令缓存,我现在相信它也一定翻倍到了128KB。有趣的是,即使在几年之后的今天,我们仍然没有真正弄清楚A10在前端区块中引入了什么:在这里,我们看到了一个新的非常大的缓存区块,其具体功能尚不清楚。
多年来的一个大问题是,苹果的缓存层次结构到底是什么样的。查看不同测试深度下的内存延迟行为,我们可以看到不同测试深度下的不同跳跃。我没有标注延迟数值,因为稍后我们将在此图的非对数版本中再次看到它们。
在大核心方面,我们清楚地看到L1$从64KB跳跃到128KB,我认为这里的增长毫无疑问。然而,进入L2缓存,我们在延迟方面看到了一些奇怪的特性。很明显,在3MB的范围内,延迟增加,直到6MB左右。值得注意的是,只有在完全随机模式下访问时,才会出现3MB左右延迟缓慢增加的特性,在较小的访问窗口中,延迟始终平坦,直到6MB。
我们暂时不再考虑这个问题,转而进入系统缓存服务的6MB以上区域。一开始很难弄清楚,因为整体低延迟会造成偏移,但总体而言,在我们达到DRAM延迟之前,延迟曲线会进一步增加4MB左右。这与我们在裸片上实际看到的是一致的:新的系统缓存不仅使其区块中划分的部分加倍,而且容量也从4MB增加到8MB,翻了一倍。
我们接下来分析小核心,事情变得有点复杂。乍一看,你会相信A11的小核心L2被限制在512KB,而A12则高达1.5MB,然而我认为我们正在被缓存的电源管理策略所欺骗。看看A11 Mistral核心延迟,我们可以看到768KB和1MB处的明显跳跃。A12核心在2MB处也可以看到类似的跳跃。
此时,我们最好是回到裸片照片,做一些像素计算,从而得出下表:
大核心L2在A11和A12之间没有任何结构上的变化,二者都有128个SRAM macros instances ,分成两个组块。这里的问题仍然是,如果L2确实只有6MB,那么这意味着每SRAM区块有48KB。
在查看小核心时,我们看到它们使用相同的SRAM macros。A12的小核心L2已从16个instance增加到32个,这意味着这里一定有加倍。然而,正如我们所看到的,L2的实测延迟深度至少增加了三倍,其他的事情肯定也在发生。我们测得的数据绝不代表硬件中的内容,实际上,我们可以通过以更特殊的方式运行延迟测试来确认这一点,这使得电源管理认为它只是一些小的工作负载。在A12中,Tempest核心似乎只有512KB可用。
结论是,苹果在每个bank的间隔尺度上使用了部分缓存电源关闭。在A12上,每个小核心的L2 bank是512KB,而在A11上是256KB。而且,这更让我坚信A12上有2MB, A11上有1MB,只是测试可能无法满足访问完整缓存的策略要求。
反过来,因为这会确认每个SRAM instance是64KB,我们可以回过头来做一些关于大核心L2的假设。请再看一次,你会认为它停留在了6MB,但仔细看,特别是A12,在8MB时特性发生了变化。同样,内核可能有8MB的物理缓存,一旦我们接近完整缓存,访问行为就会发生明显的变化。
这里的要点是,苹果的缓存非常庞大,A12在这方面进一步扩展,将系统缓存大小加倍。在实践中,我们在大型CPU内核上有大约16MB的可用缓存层次结构——这个庞大的数量只会让SoC竞争者的内存和缓存子系统相形见绌。
进化的GPU
在GPU方面,我们对A12有很大的期望,不仅在性能方面,而且在架构方面。去年,Imagination发布了一份新闻稿,声称苹果已经通知他们,公司计划在15至24个月内不再在新产品中使用其IP。这最终导致股票价格暴跌,随后公司被出售给一家股权公司。
因此,尽管苹果声称A11 GPU是内部设计,但它仍然看起来像Imagination衍生设计,因为它的区块设计与之前的Rogue非常相似——最大的区别在于,现在所谓的核心是比先前的两个核心更大的结构。事实上,它仍然是一个TBDR(基于图块的延迟渲染),IMG拥有许多专利,但一个重要的事实是,苹果仍然非常公开和支持PVRTC(PowerVR纹理压缩,一种专有格式),这意味着GPU仍然可能与IMG的IP相关联。此处,我们可能仍然会认为是架构许可设计,而不是我们通常所说的“清白”设计。
来源:TechInsights的苹果A12裸片照片,ChipRebel的苹果A11裸片照片
我们再来看A12 GPU,模型命名为G11P,我们看到与去年的A11 GPU有一些非常明显的相似之处。各个功能区块似乎在很大程度上位于相同的位置,并以类似的方式构造。
我认为苹果A12 GPU最大的进步是支持内存压缩。在发布会上听到这个消息,我非常惊讶,因为这同时也意味着两件事:先前的苹果SoC和GPU显然没有内存压缩,而现在仅此一点就足以显著提升新GPU的性能。
所谓内存压缩,特别是指从GPU到主内存的透明帧缓冲区压缩。在桌面领域,像英伟达和AMD这样的厂商拥有这一功能已经很多年了,即使在内存带宽没有增加的情况下,它也能提高GPU的性能。智能手机GPU同样需要内存压缩,这不仅是因为移动SoC上的带宽有限,而且最重要的是因为与高带宽要求相关的功耗降低。ARM的AFBC一直是移动领域最公开谈论的机制,但高通甚至Imagination等其他厂商都有自己的实现机制。
苹果似乎很晚才通过A12引入了这一功能,但这也意味着A12将受益于效率和性能的巨大的代际提升,考虑到苹果宣称将大幅增加新GPU,这一举措意义重大。
A12 Vortex CPU巡礼
在谈到Vortex微架构时,我们首先需要讨论的是我们在苹果新SoC上看到的频率。在过去几代中,Apple一直在稳步提高其大核心的频率,同时也提升了微架构的IPC。我对A12和A11的频率特性进行了快速测试,得出了下表:
A11和A12的最大频率实际上是单线程boost时钟—— A11的Monsoon核心为2380MHz,A12的新Vortex核心为2500MHz。在ST的应用中,这只有5%的频率提升。当添加第二个大线程时,A11和A12时钟分别降至2325MHz和2380MHz。当我们同时在小内核上运行线程时,两个SoC之间的情况发生了分歧:A11进一步降至2083MHz,而A12继续保持在2380MHz,直到达到热极限并最终停止工作。
在小核心方面,相对于之前的Mistral,新的Tempest核心实际上更加保守。当系统只在A11上运行一个小核心时,最大频率提升到1694MHz。这种特性现在在A12上消失了,最大频率是1587MHz。当4个小内核满载时,频率进一步降低至1538MHz。
大大改进的内存延迟
正如前文所述,很显然,苹果在A12的缓存层次结构和内存子系统方面投入了大量工作。回到线性延迟图,我们可以看到,对于大核心和小核心的完全随机延迟有以下特性:
与Monsoon内核相比,Vortex内核的频率仅提升了5%,但绝对L2内存延迟从11.5ns降至8.8ns,提升了29%。这意味着新的Vortex内核的L2缓存现在可以在更少的周期内完成操作。在Tempest方面,L2周期延迟似乎保持不变,但在L2分区和电源管理方面又发生了很大的变化,允许访问更大的物理L2组块。
我只在小于64MB的范围内进行了深度测试,很明显,在测试数据集中,延迟曲线还没有变平缓,但可以看出DRAM的延迟已经有所改善。当小内核处于活跃状态时,内存控制器的DVFS频率的最大值会提高,这可以解释为什么Tempest内核的DRAM访问存在较大的差异——当大内核上有大线程运行时,它们的性能会更好。
A12的系统缓存在其特性上发生了巨大的变化。虽然缓存层次结构的这一部分带宽与A11相比有所减少,但延迟得到了很大改善。这里的一个重要影响可以归结为L2预取器,我也看到了系统缓存端有预取器的可能:延迟性能和流预取器的数量都提升了。
指令吞吐量和延迟
为了比较Vortex的后端特性,我们测试了指令吞吐量。后端性能由执行单元的数量决定,延迟由设计质量决定。
Vortex核心与先前的Monsoon(A11)看起来非常相似,除了我们貌似找到了新的除法单元,因为执行延迟在整数和FP方面都减少了2个周期。在FP方面,除法吞吐量翻了一番。
从核心中部和后端来看,Monsoon(A11)是一个重要的微架构更新。正是在这里,苹果将Hurricane(A10)的微架构从6-wide解码改为7-wide解码。后端最重要的变化是添加了两个整数ALU单元,从4个单元增加到了6个。
Monsoon(A11)和Vortex(A12)是宽度极大的机器——具有6个整数执行流水线,其中有两个复杂单元、两个负载单元和存储单元、两个分支端口、三个FP/矢量流水线,这给出了估计的13个执行端口,远远超过ARM即将推出的Cortex A76,也比三星的M3宽度更大。事实上,假设我们没有看到非典型的共享端口情况,苹果的微架构在宽度方面似乎远远超过其他任何东西,包括桌面CPU。
SPEC2006性能:达到桌面水平
我们在iOS设备上尝试SPEC已经有一段时间了——由于各种原因,在过去的几年里我们无法继续尝试SPEC。我知道,很多人都希望我们能从我们离开的地方重新开始,我很高兴告诉大家,我花了一些时间让SPEC2006重新投入使用。
SPEC2006是一个重要的行业标准检查基准测试,与其他工作负载的区别在于,它所处理的数据集更大,更复杂。虽然GeekBench 4已经成为了流行的行业基准测试——我对实现完全跨平台基准测试的努力表示赞赏——但是我们必须考虑到,工作负载的程序大小和数据大小仍然是相对重要的。因此,SPEC2006作为基准测试更好,它充分展示了给定的微架构的更多细节,特别是在内存子系统性能方面。
以下SPEC数据是估算值,因为它们未经SPEC提交和正式验证。基准测试库的编译设置如下:
Android:工具链:NDK r16 LLVM编译器;Flags:-Ofast, -mcpu=cortex-A53
iOS: 工具链:Xcode 10; Flags:-Ofast
在iOS上,429.mcf是一个问题,因为内核内存分配器通常拒绝分配程序需要的单独的大型1.8GB组块(即使是新的4GB iPhone)。我修改了基准测试,只使用了一半的arc,从而将内存占用减少到大约1GB。我在几个平台上测量了运行时间的减少,还对iOS评分应用了类似的比例因子,我估计评分的准确率为+-5%。其余工作负载用手动验证,并验证是否正确执行。
性能测量是在人造环境中运行的(即:用台式风扇冷却手机),我们保证,在完成全套运行所需的1-2小时内,热量不会成为问题。
在数据展示方面,我参考了今年早期的文章,例如我们在Galaxy S9评论中对Snapdragon 845和Exynos 9810的评估。
在衡量性能和效率时,重要的是要考虑三个指标:显然,基准测试的性能和运行时间表示在右侧轴上,从右侧开始增长。数据越大,SoC/CPU的性能就越好。标签代表SPECspeed分数。
在左侧轴上,条形图表示给定工作负载的能量使用情况。条越长,意味着平台使用的能量越多。条越短,代表平台更节能,意味着使用的能量越少。标签代表平均功率(用瓦特表示),它是热约束器件中考虑的重要次要指标,以及总能量(用焦耳表示),这是主要的效率指标。
数据按照图例中的顺序排列,不同颜色代表不同的SoC供应商以及不同的代际。我列出了苹果A12、A11、Exynos 9810(2.7和2.3GHz)、Exynos 8895、Snapdragon 845和Snapdragon 835的数据。这让我们概述了过去两年来所有相关的CPU微架构。
我们从SPECint2006工作负载开始:
在大多数工作负载下,A12的时钟频率比A11高5%,但我们必须记住,我们无法真正锁定iOS设备上的频率,所以这只是基准测试期间运行时时钟的一个假设。在SPECint2006中,A12的表现平均比A11好24%。
最小的增长见于456.hmmer和464.h264ref——它们是整套测试中两个执行最多的瓶颈测试。由于A12在这方面似乎并没有什么大的变化,小幅增长主要归因于更高的频率以及缓存层次结构的改进。
445.gobmk的改进非常大,达到了27%——这里的工作负载特征是存储地址事件中的瓶颈以及分支错误预测。我确实测量到A12在处理缓存线路的存储方式方面有一些重大变化,因为分支预测精度没有显著变化。
403.gcc的一部分、429.mcf、471.omnetpp、473.Astar和483.xalancbmk对内存子系统很敏感,此时A12的性能从30%提高到42%,令人震惊。很明显,新的缓存层次结构和内存子系统在这方面取得了很大的成效,因为苹果实现了最近几代芯片最主要的性能飞跃之一。
在衡量功率效率时,我们发现,总体而言A12提高了12%,但我们必须记住,我们说的是最高性能时的能耗降低12%。A12展示出性能提高了24%,两个SoC的性能/功耗曲线已经大不相同。
在性能提升幅度最大的基准测试中(即前面提到的内存限制工作负载),我们看到功耗显著上升。因此,尽管7nm工艺承诺增加功率,但苹果选择花费的能量比新工艺节点节省的能量更多,因此SPECint2006的平均功率从A11的3.36W上升到A12的3.64W。
接下来,我们转到SPECfp2006,探讨C和C++基准测试,因为我们在XCode中没有Fortran编译器,而且要让它在Android上工作非常复杂,因为它不是NDK的一部分,NDK有一个不推荐使用的GCC版本。
SPECfp2006有更多的内存密集型测试,在7个测试中,只有444.namd,447.dealII和453.povray在内存子系统达不到标准时看不到主要的性能回归。
当然,这主要有利于A12,因为SPECfp的平均增长为28%。433.milc从中脱颖而出,性能提升了75%。该基准测试的特点是指令存储受限,这又一次展示了Vortex的强大,我看到了很大的改进。同样的分析适用于450.soplex,出色的缓存层次结构和内存存储性能的组合提高了42%的性能。
470.lbm对于苹果CPU是一个有趣的工作负载,与ARM和三星的核心相比,它展示出了多因素性能优势。奇怪的是,高通的Snapdragon 820 Kryo CPU的表现仍然优于最近的Android SoC。470.lbm的特点是最热的代码中有很大的循环。微架构可以通过具有(更大的)指令循环缓冲区来优化这样的工作负载,在循环迭代中,核心将绕过解码阶段并从缓冲区获取指令。苹果的微架构似乎有某种这样的机制。另一种解释是苹果内核的矢量执行性能——Lbm的热循环大量使用SIMD,而苹果的3倍执行吞吐量优势也可能是性能的重要贡献者。
与SPECint类似,性能跃升幅度最大的SPECfp工作负载的功耗也有所增加。433.milc的功耗从2.7W提高到4.2W,性能同时提高了75%。
总体而言,功耗从3.65W跃升至4.27W。所有测试中的整体能效都有所增加,但482.sphinx3除外,其功率增加达到A12所有SPEC工作负载的最大值5.35W。在SPECfp2006中,A12的总能耗比A11低10%。
我没有时间回去测量A10和A9的功率,但它们对于SPEC而言一般为3W左右。我运行了性能基准测试,以下是A9到A12以及最新的Android SoC的综合性能概述,适用于正在研究比较过去几代苹果的人士。
总体而言,新的A12 Vortex内核以及SoC内存子系统的架构改进为苹果的新芯片提供了比苹果的营销材料提到的更大的性能优势。与最好的Android SoC相比,无论是在性能上还是在功率效率上,苹果的优势都非常明显。苹果的SoC比最近所有的Android SoC具有更高的能效,并且有将近两倍的性能优势。如果我们将能源使用正常化,苹果的性能效率将领先3倍,对此我不会感到惊讶。
这也让我们对今年发布的三星M3核心有了一个很好的了解,只有当总能量在可控范围内时,高能耗才能带来更高的性能。在这里,Exynos 9810的能耗是去年A11的两倍——性能赤字为55%。
与此同时,ARM的Cortex A76预定在几周内进入麒麟980,作为华为Mate 20的一部分。我保证我们会为新的旗舰产品进行适当的测试,并将其添加到目前的SoC性能和效率图表中。
令人惊讶的是,苹果的A11和A12与目前的台式机CPU已经相当接近。我还没有机会用更具有可比性的方式运行程序,但从我们的网站编辑Johan De Gelas在今年夏天早些时候提供的最新数据来看,我们看到A12在单线程性能方面优于中等速度的Skylake CPU。当然,我们要考虑到编译器因素和各种频率问题,但我们现在讨论的仍然是非常小的差距,直到苹果的移动SoC在ST性能方面优于最快的桌面CPU。在接下来的几个月里,在这个话题上得到更准确的数据将是一件有趣的事情。
系统性能
虽然综合测试性能是一回事,并且希望我们能够很好地使用SPEC,但实际使用情况下的交互性能表现不同,而且软件在测试性能方面可以发挥重要作用。
我必须承认,我们的iOS系统性能测试套件看起来非常糟糕:我们只剩下了web浏览器测试,因为iOS缺乏有意义的替代品,比如在Android的PCMark测试工具。
Speedometer 2.0是最新的行业标准JavaScript基准测试,可测试最常见和最现代的JS框架性能。
A12与A11相比性能大幅跃升了31%,再次指出苹果广告中的性能数据远远低于新款芯片。
我们还看到iOS 12在上一代设备上的小幅提升。这不仅得益于iOS调度器处理负载的方式发生了变化,还得益于苹果使用的每个不断发展的JS引擎的进一步改进。
WebXPRT 3也是一种浏览器测试,但是它的工作负载更加广泛和多样化,包含了大量的处理测试。在这里,iPhone XS比iPhone X显示出11%的优势,比Speedometer 2.0测试的优势稍小。
此前的设备也看到了稳定的性能提升,iPhone X的得分从134分上升到147分,即10%。与iPhone 7的A10相比有33%的大幅提升,我们稍后会详细介绍。
iOS12调度器加载斜坡分析
苹果公司承诺iOS12系统将会有显著的性能提升,这要归功于他们的新调度器计算单个任务负载的方式。操作系统的内核调度器跟踪线程的执行时间,并将其聚合为一个利用率指标,然后由DVFS机制等使用。决定这种负载如何随时间变化的算法通常是一个简单的软件决策——它可以根据供应商认为合适的方式进行调整和设计。
因为iOS的内核是闭源的,所以我们无法真正看到变化是什么,但我们可以测量它们的效果。一个相对简单的方法是跟踪工作负载中从空闲到最高性能的频率。在iOS12系统升级前后,我在iphone 6到X(和XS)上进行了这个测试。
我们从带有A8芯片组的iPhone 6开始,我在iOS11上得到了一些奇怪的结果,因为从空闲到最高性能的上升特性非常不寻常。我重复了几次,但结果还是一样。A8的CPU在空闲时为400MHz,并在此停留了110ms,直到它跃至600MHz,然后又停留了10ms,进入最高性能时的1400MHz。
iOS12系统展示了一种更阶梯式的特性,更早的时候就开始上升,并在90ms后达到最高性能。
iPhone 6S在iOS11上有明显不同的上升特性,而A9芯片的DVFS非常慢。在这里,CPU总共需要435ms才能达到其最大频率。随着iOS12的更新,这个时间大幅缩减到80ms,大大提高了在更短的交互工作负载下的性能。
我很惊讶地看到调度器以前的速度之慢,这正是目前三星Exynos芯片组以及其他不优化调度器的Android SoC的问题。虽然硬件性能可能存在,但它并没有在短时间交互工作负载中表现出来,因为调度器负载跟踪算法太慢了。
A10与A9有类似的缺点,达到最高性能的时间超过400ms。在iOS12系统中,iPhone 7将这个速度减半,约为210ms。与A9相比,A10在这方面更为保守,这很奇怪,但这可能与小核心有关。
在这张图中,我们还可以看到小核心Zephyr的频率,它们从400MHz开始,在1100MHz达到峰值。图中的频率回落到758MHz,因为此时有一个核心切换到大核心,然后它们的频率继续上升,直到达到最高性能。
在苹果A11上,我没有看到任何重大变化,实际上任何差异都可能是测量不同固件之间的随机噪声。在iOS11和iOS12中,A11在大约105ms内上升到全频。请注意,此图中的x轴比之前的图短很多。
最后,在iPhone XS的A12芯片组上,我们无法测量任何预更新和更新后的特性,因为iPhone XS自带了iOS12。此时,我们再次看到它在108ms后达到了最高性能,我们看到了从Tempest核心转向Vortex核心的趋势。
总之,我希望这是iOS12给旧设备带来的性能差异的最好和清晰的展示。
就iPhone XS而言,我对它的性能没有任何质疑,它的速度很快。我不得不承认我仍然是Android用户,并且我的手机完全关闭动画,因为我发现这会阻碍设备的速度。iOS无法完全关闭动画,虽然这只是我的主观个人观点,但我发现它们严重妨碍了手机的真实性能。在非交互式工作负载中,iPhone XS只是在没有任何问题或异常的情况下完成了测试。
GPU性能
A12的GPU的性能提升是演讲的最大亮点之一,与A11的GPU相比,性能提升了50%。苹果通过“简单地”在A11的三个GPU上添加第四个GPU核心,以及在GPU上引入内存压缩实现了这一目标。我认为,内存压缩是最有助于提高GPU的微架构性能的因素,因为它实际上是巨大的一次性转变,无可否认,苹果花了很长时间才完成。
在进入基准测试之前,我想提一点,最新的苹果 GPU的峰值性能和峰值功耗是一个问题。我们已经看到,苹果从一段时间内的持续性能提升转变为从SoC的峰值性能下降到实际性能下降的最糟糕的“罪犯”之一。这是有原因的,但我很快就会讲到。
3DMark物理测试主要是一个CPU限制测试,它也强调整体平台功率限制,而GPU也正在工作。我们看到,iPhone XS和A12相比于去年的iPhone取得了很大的进步。这是一个在过去对苹果CPU而言特别有问题的测试,然而这个微架构的小问题似乎在A11和Monsoon核心中得到了解决。Vortex核心以及总是在提高的SoC功率效率进一步提高了性能,最终在这项特定测试中匹配了ARM的核心。
在3DMark测试的图形部分,iPhone XS的持续性能比去年的iPhone X提高了41%。在这个特殊的测试中,OnePlus 6更慷慨大方的热敏元件仍然让Snapdragon 845比新芯片表现更好。
在峰值性能方面,我在3DMark中遇到了一些大问题:我完全无法在iPhone XS或XS Max保持凉爽的情况下完成一次运行。如果设备足够凉爽,GPU会提高到非常高的性能,甚至会崩溃。我一直可以一遍遍地重现这一现象。我尝试在测试中测量功率,平台的瞬时平均功率为7-8瓦。对于高于8的数值,我怀疑这种测量方法没能记录下来。GPU崩溃意味着在运行过程中,电源输出无法提供必要的瞬态电流,我们将看到电压下降,引起GPU崩溃。
在几次尝试中多次重复测试时,我加热SoC,直到它决定以较低的GPU频率启动,这便可以成功完成测试。
GFXBench测试
Kishonti最近发布了新的GFXBench 5 Aztec Ruins测试,它为我们的测试套件带来了更新、更现代、更复杂的工作负载。在理想的情况下,我们将测试真正的游戏,但这在移动设备上令人难以置信,因为基本上没有哪款游戏内置基准测试模式。有一些工具可以收集fps值,但这里最大的问题是手动玩游戏时工作负载的可重复性,这也是当今许多在线游戏的一个大问题。
我仍然认为,人造基准测试在这里有一个非常稳固的位置,只要你理解基准测试的特性。Kishonti的GFXBench多年来一直是行业标准,而新的Aztec测试给了我们不同的工作量。新的测试着色更浓,利用更复杂的效果来强调GPU的运算能力。尽管上表中的数据是在Mali G72 GPU上收集的,但它仍能够提供对其他架构的总体预期。新的测试由于其更大的纹理,因此也非常需要带宽。
一般而言,游戏与基准测试的关联具体取决于各种图形工作负载的百分比、是否有较大的填充或粗重的纹理、是否具有复杂的几何形状、或仅仅是着色效果越来越复杂,这就需要GPU的运算能力。
普通模式的Aztec Ruins是一项要求不高的新测试,新的苹果A12手机展示出了极高的峰值性能,比去年的iPhone高出51%。
在持续表现方面,数字在几分钟后迅速下降,并在随后进一步稳定下来。此时,iPhone XS的性能比iPhone X高出61%。苹果A12也能够在持续表现上以45%的优势击败目前的领导者OnePlus 6中的Snapdragon 845。
在Aztec Ruins的高级模式中,我们看到了一个惊人相似的性能排名。iPhone XS的峰值性能又一次非常出色,但重要的是持续的分数。此时,iPhone XS性能比iPhone X高61%。OnePlus 6的Snapdragon 845的性能差值在这里降低到31%,比普通模式略低一点,我们可能在微架构的某些方面遇到一些瓶颈。
GPU功率
苹果设备的平台和GPU功能一直是我想要发布的东西,但实现起来很复杂。我得到了新iPhone XS的合理数据,但是旧的SoC数据仍然需要等待机会。
我没有时间在各种设备上测试Aztec Ruins,所以我们仍然依赖于标准的Manhattan 3.1和T-Rex。首先,我们先列出测试结果:
同样,在Manhattan 3.1中,新款iPhone XS的性能比iPhone X高出75%。这里的改进不仅仅是因为GPU的微架构的改进、拥有一个额外的核心,以及SoC新工艺节点,还因为新的内存压缩减少了外部DRAM的能耗,它在带宽繁重的3D工作负载中可占系统功耗的20-30%。DRAM上的功率节省意味着GPU和SoC可以使用更多的能量,从而提高了性能。
这里的功率数字是系统的有效功率,表示总设备功率减去给定工作负载情况下的空闲功率(其中包括屏幕功率)。
在峰值性能下,当设备在22°C环境温度下冷却时,苹果A12的GPU会非常耗电,功率达到6W。这并不是GPU的平均峰值,因为我先前提到过3DMark达到7.5W左右(在崩溃之前)。
即使在这个高功率数字下,A12的效率也超过了其他所有SoC。虽然这颇为有趣,但强调苹果的节流特性是非常重要的。在仅仅3分钟或3个基准测试运行后,手机将节流约25%,达到我在效率表中所说的“温暖”状态。功率达到合理的3.79W。值得注意的是,电源效率并没有大幅提高,只是比峰值提高了16%。这意味着该平台的功率曲线相对较低,并且性能受到热量的限制。
接下来看T-Rex,iPhone XS再次展示了61%的持续性能提升。
我们看到,T-Rex的功耗与Manhattan的功耗一致,低温设备的峰值功率达到6W多一点。在运行3次之后,峰值功率再次降低到4W以下,性能下降了28%。这里的效率并没有太大的提高,再次表明功率曲线相对较低。
需要注意的是,“温暖”运行的功率度量并不代表持续的性能,我只是想在峰值数据旁边添加一个额外的数据点。大多数设备的持续功率在3-3.5W范围内。
为什么苹果公司在峰值性能和持续性能之间存在如此巨大的差异?先前,iPhone 6和A8发布的时候,持续性能便是苹果的主要关注点之一。这种变化是由于日常GPU用例发生了变化,以及苹果如何将GPU用于与3D无关的工作负载。
Apple大量使用GPU计算,用于各种用途,例如app中的一般硬件加速、使用GPU计算进行相机图像处理。在这些用例中,持续的性能并不重要,因为它们是事务性工作负载,这意味着需要尽快处理的固定工作负载。
在过去的几年里,Android GPU计算一直是一场彻头彻尾的灾难,我主要是声讨谷歌没有在AOSP中支持OpenCL,这使得供应商对OpenCL的支持非常零散。RenderScript从未获得太多的关注,因为它不能保证性能。Android设备和SoC的碎片化意味着在第三方app中基本不存在GPU计算。
苹果对API栈的垂直集成和严格控制意味着GPU计算成为了现实,而事务性GPU峰值性能是值得考虑的指标。
现在,虽然这确实解释了节流的原因,但我仍然认为苹果可以做一些热优化。我在iPhone XS上玩了Fortnite游戏,手机的发热让我不是很喜欢。此时,必须有某种方式来让具有持续性能特征的游戏和app切实从GPU开始限制这种持续的性能状态。
除了热性能和峰值性能的考虑因素以外,iPhone XS和XS Max由于新的A12 SoC,展示出业界领先的性能和效率,并且目前是最好的手机游戏平台。