对于手机处理器来说,大家不用过多关注核数与主频,应该把目光多投向架构与工艺。
判断工艺优劣还是非常容易的,基本就是纳米数越小代表越先进,采用FinFET晶体管比传统2D晶体管更好。但要判断架构优劣就比较难了,因为有公版和自主架构之分,公版架构了解清楚了命名规则大概就能知晓一二,自主架构由于厂商不同,想从命名上判断就非常困难。这些障碍最终阻碍了我们对于一颗SoC优劣的认识,到底是自主架构强还是公版架构好?不同自主架构间性能孰强孰弱?
对于这些疑问,我们先从指令集聊起。
精简指令集与复杂指令集的博弈
CPU内部用来指导运算和优化的硬程序我们称之为“指令集”,它是CPU能够直接识别的最底层指令,分为复杂指令集和精简指令集两种。复杂指令集是通过设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的指令系统实现,以此来提高计算机的执行速度,英特尔著名的X86架构就是典型的复杂指令集产物。在计算机刚诞生,部件昂贵、主频低、运行速度慢的年代,这能极大提升处理效率,但随着复杂指令集的日趋庞杂,这种结构越来越庞大,通用性、运行速度开始变差,于是另一种思路驱动的精简指令集就诞生了。
精简指令集的思路是通过简化计算机指令功能,使指令的平均执行周期减少,把较复杂的功能用一段子程序来实现,从而提高计算机的工作主频,同时大量使用通用寄存器来提高子程序执行的速度,ARM公司ARM架构和Imagination Technologies公司的MIPS架构都属于这一体系。
目前流行的移动处理器中,几乎全部采用的都是ARM架构,这种精简指令集架构带来了四大优势:一是体积小、功耗低、成本低、性能强;二是大量使用寄存器且大多数数据操作都在寄存器中完成,指令执行速度更快;三是寻址方式灵活简单,执行效率高;四是指令长度固定,可通过多流水线方式提高处理效率。
ARM架构也分ARMv6、ARMv7、ARMv8等多代。基于ARMv6指令集设计出来的内核是ARM11,它被广泛用于早年的智能机上,尤其在诺基亚的塞班系统手机中特别常见。ARMv7则是新智能机时代使用最多的架构,我们熟知的Cortex-A7/A8/A9/A15内核都是这一架构的产物。ARMv8指令集发布于2011年11月,它在ARM历史上第一次支持了64位指令集,构成了苹果2013年能首发64位处理器A9的核心基础。
而如今我们常见的手机自主/非自主处理器架构都基于arm指令集(除了少数的Intel核心手机为X86指令集)。
手机处理器为何会有公版/自主之分
虽然凭借ARMvX架构在移动领域奠定了一统的地位,但这家来自英伦三岛的公司并没有学着英特尔一样什么都亲力亲为,而是对外开放授权,让厂商根据自己的需要设计生产最终产品。
作为授权,ARM将其分为两种,主流的是授权ARM设计好的IP内核,比如Cortex-A53/A72,厂商拿到此类授权后,只需根据需要选择核心数、总线互联、缓存就基本完成CPU部分的设计。所以我们把这种直接使用ARM设计好的内核方案叫做公版架构,联发科、三星、海思的芯片就属此类。
另一种方案则是授权ARM架构,比如ARMv7/ARMv8,厂商获得这些指令集架构后,还得自行设计内核,之后再完成整个CPU部分的搭建。这也就是我们所说的自主架构,苹果、高通的大部分芯片就是这种方案的产物。
第一种公版方案最大的好处是省时省力,节约成本。芯片厂商只需要跟着ARM的节奏走,就必然不会被落下,既能保障性能,又能以最快时间完成成品上市,同时还方便了稍懂手机的人判断芯片的强弱和定位。坏处一是丧失差异化,不能形成独家卖点;二是必须时刻紧跟ARM脚步,一旦落后就轻易被外界感知,瞬间打成低端淘汰的形象。
第二种自主方案好处是灵活多变,厂商可以设计出比公版IP更好的单核性能和更低功耗,同时在总线互联上也拥有很高的自由度,发挥空间极大。但这种方案必须建立在芯片厂商烧得起钱、请得起人的前提下,花费很长时间才可能有超越公版的成果。
本质上,采用哪种方案只是芯片厂商基于自身实力、财力、时间成本和最终产品需要作出的不同决策。有的厂商可能一直采用公版架构,但相关储备成熟后,它又可能转向自主研发,比如三星。而有的厂商,虽然一直钟爱自主架构,但在节奏被打乱时或者更看重成本的中低端芯片上,它又会回到公版架构,比如高通。没有什么是一成不变的,所以我们没必要把精力花在分辨架构的公版与自主,只要关注实际性能表现即可。
实际性能不能一锤定音
仅仅看架构就能代表实际的性能吗?其实并不是这样的。
1、公版
实际性能上,公版架构之间比较非常方便,大概可以归结为A72>A57>A15>A17>A9>A53>A35>A8>A7>A5,其中除了A15和A17内核为32位(A17在A12的基础上进行优化,性能接近A15,但功耗更低)外,其余内核命名一位的为32位的ARMv7指令集、两位为64位的ARMv8指令集。
2、苹果
但加入自主架构后,对比就变得复杂起来,我们首先说苹果的自主架构。苹果从A6处理器开始,就开了自主研发内核的先列,先是推出了基于ARMv7设计的Swift架构,它性能介于公版的A9与A15之间,比同期高通的Krait 300强。
到了A7苹果更是展现了空前强大的设计能力,仅仅一年时间就设计出了领先对手一年的基于64位ARMv8架构的Cyclone内核,整颗A7芯片集成了超过10亿个晶体管,仅仅双核的配置性能就等同于四核的A15处理器。再到iPhone 6配备的A8芯片时,改进的Typhoon架构提升了处理器25%的性能,单核性能超过A57,多核性能也只稍微落后于八核心A57+A53的Exynos 7420和骁龙810。
至于最新的A9芯片,采用了第三代64位架构的Twister内核,CPU性能比A8又提升了70%,单核性能提前领先于采用最新A72架构的麒麟950,至今仍是商用芯片中的最强的单核内核。
3、高通
另一个热衷研发自主架构的是高通。早在骁龙S1的年代,高通就在QSD8250采用了基于ARMv7架构的Scorpion内核,相较同期流行的A8/A9公版内核,Scorpion增加了部分乱序执行能力,支持异步对称多处理,在高主频、低功耗和加强浮点运算方面有突出的优势,具体性能略弱于A9。这套架构一直沿用了骁龙S1、S2、S3三代处理器,后期已经显得有些老旧乏力,于是高通又推出了Krait内核。
Krait内核按时间先后分为Krait 200、Krait 300、Krait 400、Krait 450四代,都是基于ARMv7架构。第一代Krait用于骁龙S4处理器,它一个时钟周期可以执行三次fetch与decode操作,后端执行单元更是从Scorpion的三个增加到了七个,流水线从10级增加到了11级,实际性能略弱于15级流水线的A15。第二代Krait 300内核改进了分支预测模块、添加乱序执行引擎,带来了更好的浮点计算能力,用于第一代骁龙600上,性能接近A15,但功耗更低。
第三代的Krait 400采用28nm HPM工艺制造,改进了内存控制器、延迟更小,还采用了频率更高的二级缓存,性能强于A15,我们熟知的骁龙800/801采用的就是这一内核。最后一代的Krait 450用于并不常见的骁龙805上,变化主要是把主频提到了夸张的2.5GHz。
Krait 450之后,高通新一代的骁龙810因为竞争原因转向了公版A57内核,表现比较平稳。在即将上市的骁龙820中,高通终于推出了研发已久的Kryo内核,它是高通首个自主研发的64位内核,单线程性能比最新公版内核A72还强。
4、其他
另外,三星、英伟达也多少涉足了自主研发内核的行列。
三星的猎户座芯片一直采用的都是公版Cortex内核,去年还凭借14nm工艺的Exynos 7420出足了风头。然而对一直注重研发的三星而言,肯定是不甘心只看着别人玩自主架构风生水起的,所以配备在即将亮相的三星S7上的Exynos 8890,就采用了基于ARMv8架构自研的Mongoose内核取代了A57,性能同样强于A72,和高通的Kryo不相上下。
值得一提的是,在动物界,Mongoose指代的猫鼬正是高通此前Krait(金环蛇)的天敌。
除了高通外,英伟达也在此前Tegra K1芯片的一个版本上用过自研的64位Denver内核,但由于上市较晚、功耗和缺少基带等原因,市面上几乎没有采用的机型。后来推出的Tegra X1又重新回到了公版A57+A53的大小核设计。
总结
经过上面的叙述和回顾,我们基本可以总结出这样的规律,自主架构通常比同期公版架构性能更强一些,但要说明的是,这种性能强指的是单核性能,而多核性能方面,八核设计的CPU无疑要强上许多。
虽然自主架构好处良多,但真不是谁都能玩,即便是强如高通也传出下代骁龙830将放弃自主架构的传闻,虽然我不太相信它是事实,但也的确从侧面反映出自主设计需要投入资源的巨大。
而作为消费者,只要它们销售的芯片处于同级性能就够了,实在没必要去锱铢必较那多几百的跑分,更没必要以是否自主研发为由互相攻讦。