从GPU到CPU到5nm,并附带购买建议和小彩蛋。
发布会从CPU到GPU都绝口不提相比前代的提升,在苹果A系芯片的历史上怕是第一次。因而从上个月iPadAir4发布会结束后,A14的前景就蒙上一层阴影。有些充满信仰的人(包括我)先是推测可能有良率问题,再是对性能不抱希望以后转而期待功耗表现。如今吊了一个月胃口的A14总算随着首批iPhone12和iPadAir4来到了大家手中,那么A14的表现究竟如何呢?
闲话不多说,总之是你们都知道我买了个iPhone12,然后丧心病狂地做了一大堆测试,之前也陆续放出了一些测试结果。昨晚开启冰箱模式后又有了些新的进展。于是在这里做个汇总,在专业但总是姗姗来迟的AndreiReview之前,做一点试探性的分析。
图1:小扁蓝新买的iPhone12
GPU
这次GPU的问题相对更大,在5nm密度增加的同时维持了原有的4核规模,性能几乎原地踏步,这种表现,加上发布会宣称A14相比A13有高达33亿晶体管的规模增加,使我们曾经认为是TSMC良率翻车导致不得不屏蔽原有的5核或者6核设计——毕竟从A13的规模看这次神经引擎规模翻倍也只需要吃掉大概4亿多晶体管,而单个GPU核心的晶体管数也只有差不多3亿,虽然增加的晶体管数不可能全在CPU、GPU、NE和SLC上,但33亿里面只有不到10亿在这几大件上似乎有些说不过去。
图2:近四代A系SoC规模对比
当然这个猜想目前仍然没有得到证实或证伪,只能等一波DieShot来看看究竟发生了什么。
真机到手后几经周折终于连上了GFX的服务器,于是我在10月24日发布了如下图的测试结果。
图3:曾在微博发布过的A14GPU测试数据
图中可见:
①A14的峰值性能相比A13提升微乎其微,除了Manhattan两项达到了10%以外剩下都在5%附近,而更糟糕的是,即使在改换了5nm制程的情况下,与这几乎可以忽略不计的性能提升相对应的是能效的原地踏步——就算架构没有改进,工艺的进步去哪里了?(以前这种在GPU上把工艺进步做没了的操作我们似乎只在菊系Mali身上见过,难道去年还被奉为天顶星的AppleGPU团队已经沦落至此?)
②开启低电量模式后,翻天覆地——该模式在4%的平均功耗增加下获得了高达23%的平均性能提升,可以说完全达到了正常的“代差”的标准,特别是,这颗被我们戏称为“A14Max-Q”的GPU,用后者一半的功耗达到甚至小幅超越了上代安卓旗舰骁龙(MHz版本)的性能……
图4:移动端GFXBench成绩汇总by
暂时不叫这名了③后来我去数据库里找到了A13在几项低水平测试(低水平测试在GFX中是ALU、驱动、纹理等子项的统称,尽管因为只测试某一部分,这些测试对AP的总压力较低,但测试中每一项都是跑到了极限性能的)中的表现,结果是DriverOverhead和Fill相比A13几乎没有区别(数据库中Fill项有几个高出平均13%的A13数据,可靠性存疑在此不作考虑),而ALU测试则是有约8%的性能提升(——考虑到A14仍然维持了4核心的规模,难道…又艹频了?…不会吧……)
图5:A14GPU功耗-性能曲线估计
④后来我还给出了如上所示的一张图(此图已经过冰箱数据修正,详见下文讨论),这个曲线可以更明确地反映高频部分功耗是怎样爆炸的——若以低电量模式(左起第4个点)为基准,峰值性能在仅仅提高了60%的情况下,功耗增加了%之多……尽管高频部分功耗暴涨是半导体芯片一个正常的特性,也是大规模低频率的GPU能效表现一般更好的原因,但这种幅度的暴涨和暴涨所处的位置,似乎还是略快了一点……这提示我们本次A14的翻车可能和TSMC的工艺有关(当然仅凭这组数据我们也可以批评是苹果把频率艹太高了),这一点我们最后再来讨论。
提示1:关于场效应晶体管的功耗,一个经典的估算公式是Power=k*V*freq^2,k为比例系数,而因为FET的工作原理,在高频区间电压V与频率f的关系是大于线性的,相反由于IC设计上的某些瓶颈,高频段性能与频率的关系是小于或等于线性的,因而在这一区间功耗-性能的关系常常是大于等于三次方的,这也就是我们所说的功耗墙。提示2:因为实际上在iOS端测试的时候我们并不能对GPU进行锁频,所以有必要详细解释一下此图的数据处理过程。首先,我们以比较通用的Manhattan3.1在低电量模式下的表现为基准,计算峰值输出时的相对性能和功耗——以低电量模式为基准是因为相对于峰值性能,低电量模式的功耗不大,所以表现更稳定,在不同压力的子项之间跨项折算因发热降频导致的误差更小;然后,由于表中所列几个子项在OnScreen测试下的帧率统一受到屏幕刷新率的限制,但不同子项在输出统一帧率的情况下实际给到GPU的压力又不同,这样我们就相当于得到了几个不同性能输出的数据,把这些数据按照低电量模式下对应项目与Manhattan3.1的帧率比值进行折算,就得到了基于后者的相对性能;最后,右图来源于表中第二组数据,这仅仅是将%基准由低电量模式转换为满血模式,需要的只是一步简单的比例式计算。需要特别注意的是,在对OnScreen性能进行折算的时候,必须考虑GFXBench显示iPhone12实际的渲染分辨率为*,而非OffScreen通用的*,因此帧数要进行折算,这一步已经在图3中给出。
本来我以为对GPU的测试到这里就结束了,不料昨晚受到一些提示后开启了冰箱大法。因为网络原因只进行了部分测试,结果如下。
图6:A14GFXBench冰箱成绩与室温成绩对比
此前的测试尽管是室温下进行的,但这大秋天本扁的住处室温仅有24℃左右,并且测试过程已经加了外置风扇来散热,但结果表明我还是低估了高密度5nm的热密度和iPhone在散热堆料上的抠门:仅有的三项冰箱测试数据显示出了相比室温测试超过5%的性能提升,这三项相比A13的平均性能提升也因此由5%来到了11%,特别是Manhattan3.1项目的代际提升已经达到了16%,在这个遍地是牙膏的时代已经勉强称得上是合格的表现了。然而,冰箱只是给了一个更有利于GPU进行性能输出的条件,并不能带来质的变化,因而随着性能的进一步增加,功耗的涨幅也齐刷刷地大于性能的涨幅,结果这三项平均下来相比于A13竟然还产生了2%的能效下降……
提示3:根据半导体的物理特性,低温的确可以在一定程度上降低半导体在同负载下的功耗,这或许是表中冰箱与室温的能效差距没有拉开很远的原因,但很显然,测试条件中这大约10℃给半导体功耗造成的影响并没有弥补频率提升带来的能效下降,所以总的能效仍然是下降的。提示4:对GPU(其实CPU也一样)进行性能测试的原理其实非常简单,就是对不同的GPU给予相同的画面,看各个GPU在全力输出的状态下能渲染到多高的帧率,以此作为性能的衡量标准。但在GFXBench的场景测试中,每一个测试场景由大约1分钟的动画构成,这1分钟内不同时刻动画画面的复杂度是不同的,因而如果细看测试数据会发现在不同时刻的瞬时帧率也会不同。下图展示了A14在进行Manhattan3.1测试时的Frametimes图,Frametimes即渲染单帧需要的时间,用1秒除以Frametimes得到的就是那一时刻的瞬时帧率,由此可见在图示场景中后半段的画面复杂度要明显高于前半段。需要再次强调的是,因为OffScreen测试是以复杂度有变化的动态画面测试极限帧率,因而后半段Frametimes的升高并不一定意味着GPU发生了降频——通过对比降频可能微乎其微的低电量模式折线图,我们能更清晰地认识到这一点,而如果某次测试中Frametimes折线图的趋势相比低电量模式有较大差异,那么我们才能认为GPU在测试中表现出了性能的不稳定性。另外,从OnScreen图中可以看出,Frametimes平均值是非常稳定的,而这个稳定值正是0ms/60FPS的结果,可见OnScreen的限制因素是屏幕刷新率,或者说由屏幕刷新率确定的渲染帧率,这是OnScreen测试和OffScreen测试的不同所在。
图7:Manhattan3.1测试详情
另外,在把iPadAir4和iPhone12系列这两款同样使用A14芯片的设备进行跨平台比较的时候,我们发现二者在Geekbench5的ComputeGPU测试中表现出现了较大差距,并且Air4在该项目上的成绩甚至超过了A12Z。
图8:Geekbench5Compute成绩对比
尽管小扁蓝手中并没有Air4,因此无法测试Air4的GFXBench表现,但有一点是可以肯定的:Geekbench5的Compute测试是基于GPU的ALU运算性能测试,与图形渲染这一GPU的日常使用场景相差甚远,因此不能以Compute成绩来推断图形成绩。从A12的GPU到A14的GPU,尽管架构上稍有进步、工艺也从7nm换成了5nm,但对A12Z来说,双倍于移动端的核心规模和内存位宽才是它的核心竞争力,A14想在性能上与A12Z抗衡是完全不可能的。毕竟官方的数据不会骗人——
图9:苹果:A14GPU性能提升30%——不好意思,是对比A12
至于能效,本来凭借5nm,A14似乎可以有比较大的优势,但考虑到5nm的高频部分似乎一言难尽,加上A12Z更高的性能可以赢得很大的降频换能效的空间……算了吧,Pro毕竟是Pro。你看,苹果为了拉开差距,甚至可以强行给iPadAir增加每边14像素(约1.35mm)的边框宽度,你还能指望一个翻车的、规模小一半的A14越级?
图10:iPadAir4与11寸iPadPro真机对比
提示5:按本扁的测试数据进行指数拟合得到A12Z在输出本扁手上A14冰箱成绩的情况下功耗也在8W以内,与A14的功耗十分接近,而如果Air4进一步提频,由于A12Z所处的频率区间功耗增速低于A14的峰值区间,所以A14继续提频能效下降会更快——显然,5nm无法抹平一倍的规模差距。
CPU
对于小扁蓝这种打死不玩手游的人,GPU表现其实多半是一个“我其实不怎么需要,但你不能没有”的指标,而CPU才是决定了一款手机体验是不是好、在手里能用几年的核心指标,即使续航这种看似与电池相关度更大的性能指标,其中CPU的影响也举足轻重(毕竟电池衰减了可以换,CPU不能)。(当然,决定手机能用几年的指标中,还有一项是iPhone特有的,那就是抠门抠到乔布斯故居的运行内存大小……)
图11:近四代iPhoneCPUGB5成绩(堆积柱形图)
首先我们看到的自然是A11以来历代的跑分,然后发现果然令人失望,A14相比于A13的提升幅度并不大,与几个月前传闻的历史最大提升更是相去甚远。然后按照惯例,我们打开低电量模式,却发现了非常不寻常的结果:
图12:各代iPhone低电量模式GB5成绩对比
在iOS14.1中,A14低电量模式下的大核频率仅为1.29GHz,不仅比A13的1.87GHz低了一大截,甚至也不如A11,于是在单核得分上被A13无情吊打就成了理所当然。然而,多核成绩却出奇地高,甚至只比正常模式低了分——多核分数的降幅比单核还小,实在是匪夷所思。
结合前述GPU结果,在越来越多应用开始能利用多核负载的情况下,我们有下图结论:
图13:Max-Q万岁
至于为什么低电量模式的多核如此反常,得益于价值68块大洋的GB5Pro(咳咳,为了做这期测试刚买的,你们还不打个赏表示一下?)
图14:我就跑个分你还要收我68块,呜呜呜
我们能自由地选择负载的核心数,进而计算每增加一个核心对多核性能的增益。
图15:A14正常模式GB5分核心成绩
图16:A14Max-Q模式GB5分核心成绩
从中可以看到几个疑点:
①正常模式下双核成绩仅为单核成绩的不足1.7倍,除非多线程效率崩了,否则很有可能表明大核心在多核负载的情况下发生了降频——而根据以往A系芯片的表现(A11和A12Z的结果见下图),多线程效率应该不至于崩得这么严重,所以推测双核负载时大核心频率似乎降到了2.6±0.1GHz。
图17:A11和A12Z的GB5分核心成绩
②每增加一个小核多线程成绩的增量看上去十分稳定,但奇怪的是低电量模式下小核心对性能的贡献十分稳定地比正常模式下高出25%。
后来听说别人跑出了大约分的多核成绩,小扁蓝感觉自己买到了雷,不服之下把手机丢进了满是香肠和豆制品的冰箱……然后,果然……
图18:A14冰箱模式成绩
冰箱中的A14双核成绩上升到单核的1.82倍,基于这个成绩本扁推测即使有降频应该也只是0.1G左右,不会像之前那样夸张。不过,第3到第6核产生的分数增量变得不再稳定,并且小核的成绩贡献也没有达到低电量模式下的贡献值,前一个问题我猜应该和负载调度有关,而后一个问题,小扁蓝推测是受到系统缓存、内存和跨核心簇调度造成的延迟等各方面的影响,大核满血运行时,小核能吃到的外围资源就相对较少,因而提供的性能增益也较低,而在低电量模式下大核不像正常情况中那么吃资源,小核可以在调度上占据相对主导的地位,簇内通过L2交换的数据比例增加,也能吃到更多的外围资源,因而能提供更强的性能增益。如果这种推断合理,那么我们可以进一步预测,如果由小核心来跑单核测试,其性能将比低电量模式的6C-2C差值更高。同时按这个思路或许我们也能解释A55簇在部分SoC中GB5成绩“虚高”的现象:相对来说,在那些SoC中安卓大核吃的资源和输出的性能都相对更少,因而留给本是废柴的A55稍多一些的发挥空间,而苹果的小核虽然绝对性能强悍,但有两个大核占着资源大头,在大核正常工作时留给小核的发挥余地并不多——当然,如果论及输出性能的绝对值,仍然是“瘦死的骆驼比马大”。
我们再来看一个更清晰的对比图,下图同时也显示在正常模式中,室温下多线程性能的缩水基本来自于大核的降频,而小核成绩则相对稳定。
图19:A14不同模式下大小核心簇的GB5多核性能贡献
熟悉小扁蓝的朋友们一定知道,苹果的小核自A11一来就是一大吹点,既是苹果在多核性能上以6胜8的关键,也是iPhone在电池容量相对较低的情况下赖以维持续航的法宝。而这一次,A14的小核似乎又进化了。
图20:几款A系CPU大小核心簇的GB5多核性能贡献
利用CPUDasher插件的粗略观察显示A14小核在低电量模式下的频率似乎是MHz,这一结果如果没有大的出入,那么基于低电量模式下小核簇的成绩贡献,可以推算出A14小核的性能至少是.7/Core/GHz,而我们知道麒麟上超大核A76的单核性能大约是/GHz……
四发射小核果然诚不欺我么……
顺便一提,A55的成绩没找到,找到一个骁龙上A53单核分数,按频率算下来是82/GHz,或者按多核算的话,62.6/Core/GHz……
——即便是年的小核A53,四个捆一起都能胜过A14的一个小核,我说苹果辣鸡你们没意见吧?(狗头)
图21:部分核心(簇)GB5单位GHz性能
由于iOS读取电流的刷新率实在是太低(20s一刷新),而Geekbench的负载又不如GFXBench那样稳定,所以CPU的功耗目前很难得出一个精确的结果,这一部分还是等Andrei的SPEC测试吧。我得到的以下数据仅供参考。
图22:iPhone12典型功耗粗测
当然了,参考上述数据我们能大概得到一个结论就是,A14虽然已经被钦定为翻车一代,但在灵活的调(jiang)度(pin)策略下,其峰值功耗也并没有太高——事实上这也是苹果近几年的一贯作风了。而特别令人震惊的是低电量模式下的Geekbench5测试——如我们之前所说,这次低电量模式下小核可以说火力全开,并且根据上面测试的数据(图16),低电量模式下双大核应该是维持了稳定的1.29GHz频率而并未进一步下降,等于说全核心在平均3W左右、峰值不超过3.5W的功耗下跑出了一个k的性能;而总输出性能超过半个S的小核簇在其中所占的功耗甚至可能不足1W……
表情包again——
图23:再来一次
不过,不管调度多么灵活、Max-Q模式多么强悍,测试到现在有一句话我一定要说:在安卓机为了散热牺牲重量去堆水冷、热管和立体散热片的今天,不求苹果堆多少散热,好歹给个正常的散热结构吧……双层主板把SoC夹中间还不做导热,搞得做个测评整得跟化学实验似的,一会儿冰箱一会儿室温。或许明年苹果就要要求媒体在做性能测试的时候统一规定“标准状况”了吧?
虽然Geekbench5因为去掉了争议很大的内存分被更广泛地接受,但过高的整数比重和略奇葩的负载内容(以及收费的下载方式)让Geekbench4仍然没有淡出我们的视野,特别是Geekbench4中的三个内存子项测试,尽管存在较大漏洞且放在CPU成绩中并不合适,但在没有被作弊干扰的情况下其测试结果仍然有一定的参考价值。
图24:近四代iPhoneCPUGeekbench4性能对比
上图是A11到A14的Geekbench4成绩对比(值得一提的是A14为了获得更高的成绩仍然被我丢进了冰箱,并因此的确获得了大约分的多核性能增益)。图中可见:GB4的分数提升似乎比GB5更大,并且相比于A11到A13的两次迭代,A14的内存分数有了大幅进步。
除了每代固定大幅进化的AES外,在GB4中进步幅度最大的两个子项都来自浮点,一个是SGEMM,一个是GaussianBlur,这与我们已知的A14架构在浮点上的升级密不可分。而内存的三个子项除了均匀进化外,内存带宽有了大幅度的进步——这并非因为A14搭配了什么新型内存(众所周知今年是原地踏步的LPDDR4x),事实上现代移动SoC上内存带宽限制更明显的往往是GPU,CPU相比之下常常并不能完全利用内存带宽,就像此处跑分所显示的,A14的内存带宽项目原始成绩达到了29.1GB/s,但从理论计算上看这个带宽早在iPhone8那年就达到了。这里A14在三个内存项目上的进步,应该与流水线的改进和时钟频率提升等有关。
图25:近四代iPhoneCPUGB4内存子项目成绩对比
既然这次内存有如此大的进步,那么我们也可以把一些其他的奇奇怪怪的CPU拉来一起对比——下图中我们就能看出,尽管A10X本身拥有双倍的内存位宽,但(单颗)Hurricane的访存吞吐能力弱于FireStorm,而拥有4个Vortex的A12X/Z在多核Copy和Bandwidth上的优势则更加明显;延迟项上,Intel的Ringbus配上高时钟频率的Skylake和桌面级MHzDDR4内存,表示还能再战N年。
图26:GB4内存子项成绩跨平台对比
关于TSMC的第一代5nm
有关A14两大件的测试和分析到此为止,从目前的结果上来看,虽然在这个集体撞墙的大环境下远远算不上A10级别的翻车,但毫无疑问表现不尽如人意。我们调侃Max-Q强无敌其实也不完全是吹捧苹果堆料到丧心病狂的小核,另一个角度上也表现着对大核进步缓慢的无奈。
自iPadAir4发布会后,有一个问题就一直盘旋在A14之上:翻车的到底是Apple,还是TSMC?
此前由于33亿晶体管中至少有一半去向不明,一切疑云似乎都指向TSMC的良率,但饱受断供困扰的麒麟0却能堆出亿晶体管和达到ARM设计极限的24核G78——尽管的确有部分芯片应该是因为良率问题被砍成了22核的0E,但既然华为能够堆出规模超过A%的SoC,我们没理由认为A14的良率翻车到5核或者6核的GPU都要砍回4核——何况断供之后没了华为的竞价,Apple理应在与TSMC的价格谈判中占据更大的主动权才对。当然,A14量产时间早于K0或许也会造成一定的影响,总之是否有内容被屏蔽在DieShot出来之前应该是没有什么可以验证的手段了。
前面关于GPU的测试和由此得到的功耗-性能曲线,似乎指向了5nm高频表现糟糕的事实。尽管我们很难得知苹果GPU的时钟频率,但来自K0的数据或许可以作为参考。
虽然24核MaliG78是当前争议的焦点,峰值超过10W的浮点功耗和9W的GFXBench图形功耗似乎有点让人回想起当年MHz的恐怖。不过由于展示机无法冷却测试,目前跑出的GFXBench成绩均有一定程度的降频(参见前文对GFXBench测试机制的解释),所以我们并不能确定真实的能效情况如何,并且G78作为一个新的GPU架构,其可靠性也是个未知数。
可以作为参考的,其实是K0的CPU,毕竟这颗“新麒麟”上搭载的A77对我们来说已经是十分熟悉的“老古董”了(狗头)。
图27:GPUGFLOPSCPU拷机数据汇总by
暂时不叫这名了即使不深入分析,我们或许也能看出上表中K0那颗大核的功耗也实在是有点“鹤立鸡群”。而如果我们摘取表中所有A77的数据,按半导体工艺分类,作功耗-MIX2性能图的话,会得到下图所示的结果。
图28:A77拷机MIX2数据拟合
图中曲线全部采取指数拟合。如果你觉得左图中N5的曲线比N7P更靠上有些过去夸张,或者N7P是占了取样点频率更低的便宜,那么我们也可以按照右图所示的,把N5和N7P不加区分地拟合——似乎也没有哪里不对?
提示6:这里横轴是性能而不是频率,可以排除Cache等定制选项和其他因素对IPC的影响。
虽然现在就给5nm判定为“翻车”甚至“20nm翻版”有些过于草率,但以目前可以取得的信息来看,至少TSMC翻车的概率应该是大于Apple芯片设计翻车的概率的。。。
提示7:尽管我们常说,尺度更小的工艺制程往往不适合拉高频,但事实上在一定范围内,更短制程在频率上本来是具有先天优势的——这正是我们常说的“新一代半导体工艺性能提升xx%”所指。因此,在工艺跨代时要求约8~10%的频率提升并不算苛刻。所以就让我们拭目以待AnandTech的SPEC数据,看看2.99GHz的Firestorm相比于2.67GHz的Lightning功耗是增是减,某种意义上这或许可以用以判定是TSMC的5nm牛皮吹破,还是Apple艹频丧心病狂。
总结:iPhone12到底值不值得/推不推荐买?
简单总结A14的话,小扁蓝认为尽管其提升幅度不如预期,但总体表现还勉强不算翻车。截至本文写到这里时,我手上的iPhone12在上一次完全充电后已经使用了24小时,其中亮屏时间6小时,仍然剩余18%的电量。考虑到其中大约35%的电量被我拿去做了2个小时的GFXBench和Geekbench冰箱测试,我认为这应该算是一个及格的续航成绩了。12的日常体验和充电续航测试我会陆续在微博更新,欢迎大家