ZKX's LAB

技术贴:Apple Silicon,未来已来

2020-11-04新闻21

我们知道,整个ARM Mac的核心是在Apple Silicon,在此开一篇文章来解析一下,这颗云里雾里的Apple Silicon。

1、关于命名

苹果自A4开始自己的自研芯片之路,先是A系列和M系列协处理器在手机上的一路高歌猛进。

接着是手表上的S系列;然后是Mac上的T系列安全芯片;再到W系列和H系列在AirPods上大杀四方;现在还有UWB运用的U1;A系列的A,个人认为是Application、Apple、Alpha的合一,它用于手机、平板、Apple TV上,M系列协处理器来自MCU。S系列来源是SiP封装。T系列来自Token,即密匙。W是wireless的意思,H是headset。U是UWB。在未来,Apple Silicon将会用到Mac上,个人认为最有可能使用的字母为Z、X。

苹果官方没有把A12Z列入其中,说明A12Z其实本质还是A12X

Z的用法是和A12Z一致的。而X表示的Extreme,极致的性能。Z14的话说不定还要致敬一下IBM,2333333。

2、规格

我们姑且先把他称作Z14。Z14和A系列是一脉相承的ARM指令集的产品。我们目前知道的是,有两颗芯片正在被生产,一颗是6+4一颗是8+4的核心。这两颗芯片的内核是一样的,但是主频会有所不同。Z14设计的目标频率就是3.4GHz。A14的核心代号是Firestorm,微架构上和A13一致。在之前的文章中,我已经介绍过AMX,在一位开发者大佬的测试中,我们可以看到AMX的指令编码是区别于SVE的,而在我的测试中,AMX是被正常的SIMD流水线执行的,而按照ARM的最新授权规则,它同意某些自行设计的指令融入ARM指令集中。在A13中,AMX并不是以拓展指令集第形式出现的,而是以API调用第形式出现第,苹果为什么要这么做?回答这个问题必须回到异构计算上来。我们知道,要保证像big.Little或者DyQ这样的异构架构能顺利运行,整个架构的指令集必须保持一致。如果出现了其中的一个架构存在着另一个架构不存在第指令的话,程序的运行会出错。为了防止这种出错,ARM至今没有在大核上更新V8.5指令集(包含TME、SVE2前者对应intel第TSX,后者对应AVX2及更高),因为小核至今仍然是A55。而intel在Lakefield上使用了一个极端的做法,直接把Sunny Cove的AVX512阉割掉,让他和小核Tremont一起跑SSE,这效率看起来极为瞎眼,像SGEMM这种跑FMA死算的,直接就变成1/4,打骨折。苹果在A13上同样遇到了类似的问题,他们采取了一些相对折中的解决方案,就是将AMX不作为SIMD拓展指令集的方式来调用,根据我之前的分析,AMX的的确确是由大核的流水线跑出来的,但是普通的编译不能调用它,必须采用指定的Acclerate.framework才能调用。A14大核的代号为Firestorm小核代号为Icestorm,两者的指令集应该要一样。所以,我们可能会看到在 Z14中AMX不再是需要特定的API调用的形式,而是以拓展指令集的形式出现。事实上,在ARM V8.5-A中,SVE2和TME已经是可选的了,SVE2是全兼容neon的设计,所以Z14可能是苹果实现这两项功能的第一个ARM架构,当然,实现形式可能和SVE2指令并不一样。知道这个我们可以为Z14给一个Spec了:

6*Firestorm@3.4GHz 128K L1I+128K L1D+16M L2 Cache+32M System Cache

4*Icestorm@1.8GHz 48K L1I+48K L1D+2M L2 Cache

8*Firestorm@3.2GHz 128K L1I+128K L1D+16M L2 Cache+32M System Cache

4*Icestorm@1.8GHz 48K L1I+48K L1D+2M L2 Cache

由4+4进化到6+4以及8+4并不是那么简单,为了堆核,AMD研发了IF总线和CCX,毫无疑问第Apple Silicon需要重新设计总线,一方面,是为了为更高核心数做准备,另一方面,是为了马上要说的GPU。我们知道,在WWDC2020上苹果给的图里面有一项是统一性内存。但是如果不区分显存和内存的话那么CPU和GPU的带宽是共享的,越来越大的GPU规模将会带来极大的带宽压力。解决的办法倒不是没有,主要有三个:1.提频不加规模2.用更大带宽的RAM3.改进架构。三者都有局限性,1的话会带来高发热和高功耗,这和使用自家芯片是背道而驰的;2的话以目前第技术,高带宽RAM也无非LPDDR5、GDDR、HBM2,LPDDR5的提升不够大,GDDR的延迟会影响CPU、HBM2还在路上。3的话进步有限只能说聊胜于无。应当指出的是,我已经知道的情况是苹果已经在测试HBM2,但是今年和明年还没办法使用。不过得益于IMG的TBDR,相对于其他IMR和TBR的架构瓶颈要小一些,另外苹果的无损压缩也在移动领域展现出了非常强劲的实力。所以预计苹果的Z14的GPU部分还是翻番的规模,内存用LPDDR5,适当提一点频率,架构改进一些,相对于A12X要达到2.5X性能(极限)。下一代采用HBM2的话又是另外一回事了。

对于AR的部署,需要NE的配合,A12/A13上的NE int8性能是6T,作为移动计算中枢,苹果肯定不止要这点性能,我预计Z14上将要达到18T,以满足更多更复杂模型的推理。

3、异构

要论起苹果最擅长的事必然是把别人的成果为自己所用,然后开创出更理想的产品。这是乔布斯刻入苹果的传统。史蒂夫当年就是看着斯坦福的年轻人展示自己的印刷电路板才想到做AppleⅠ;图形操作界面是来自参观施乐抄过来(微软随后也抄了);鼠标;iPod来自Walkman的灵感;iPhone和iPad的产品线都不是苹果首创的;到了异构时代,苹果甚至都不是HSA的成员,但是我们可以看一下现在Apple Silicon上有多少异构单元。

前几年,我还在和某些X86粉丝争吵SIMD的问题时,我觉得,方方面面绝对性的压倒是重要的。但自从苹果出了AMX之后,我开始思考,CPU作为通用计算的中心,到底需要多少的通用性能才是够用。我们知道,10代酷睿又称Skylake Reflash++++,如果不看核心数量和内存技术的进步,5年来牙膏厂进步微乎其微。以至于很多人觉得,拿个i7 3770k还能再战5年。SIMD最大的影响就是高性能计算,但正如众多臭打游戏的吐槽,日常AVX用不到。而对于专业领域,需要高性能计算的场景,苹果选择了AMX这么一个思路,把AMX的调用和加速框架绑定,只有需要加速框架里面的库的程序才去调用它,这样做有一个好处,就是在日常应用不需要那么高的SIMD性能的时候,不需要耗费额外的电量,当然,它有它的局限性,比如说必须是包含在加速框架里面的库才能调用,如果是不包含在加速架构里面的库,就只能老老实实的用SIMD了,这其实是一个取舍问题,intel在GPU方面的劣势促使它几乎所有的发展方向都要顺着X86去,无论是atom、基带、Xeon phi还是VNNI。而Nvidia则反之,顺着GPU推出了Tensor core。AMD这边是想搞HSA,但是无奈openCL之流太拉胯,还不如CUDA。苹果掌控着自家的生态,自然的,基于AVfoudation的问题交由DSP和各种Encoder、decoder解决,基于Core ML的交由NE解决,基于Accelerate的,交由AMX解决。从历史的发展角度上说,软解走向硬解是进步的,因为他有效的减少了计算时间和电量消耗,利用更多的asic来实现不同领域的“硬解”是未来Apple Silicon的发展方向。

回到最开始的问题,我们究竟需要多少的通用性能?把i7 3770k超到5G还能再用三年,这话不假,不考虑超高强度科学计算的情况下,各种软件运行并不是问题。我们今天抛开对ICC的问题,直接选取Specint2006官网的数据,i7 3770k的得分如下:

ICC已经几乎优化到极限了,也不考虑462是并行化跑出来的结果了,单线程base是52分,这个分数和A13在Xcode的Ofast选项下的分值相差无几,那么超频到5G的分数应该就是66分。对于即将到来的3.4GHz的Z14,假设相对A13没有任何提升也可以到达这个分数。换言之,就是目前你在桌面端所需要的通用性能,到达这个水平,就没有问题了。

(本文作者:知乎@远方)

#英特尔#amd#苹果

随机阅读

qrcode
访问手机版