为什么苹果要给Mac换用自研ARM芯片?这次他们能顺利过渡吗?
  • 为什么苹果要给Mac换用自研ARM芯片?这次他们能顺利过渡吗?
电话/微信号:13308461099,13807313137
为什么苹果要给Mac换用自研ARM芯片?这次他们能顺利过渡吗?

2020年6月22日,苹果ceo tim cook在wwdc 2020的主题演讲上面正式对外宣布,苹果将会在两年内,将他们的mac产品线所使用的芯片从当前的intel转移到自家研制的芯片上。对于关注科技行业的各位来说,这个消息并不算是太过出乎人们的预料,因为早已有分析指出,苹果给mac用上自研芯片只不过是个时间问题罢了。而在wwdc 2020主题演讲公开前一周,来自彭博社的一篇报道就已经提前“剧透”了本次大会上面最大的爆点。

离苹果公布这些消息已经过去一周时间了,我们现在也从各方面得到了更多的信息,关于mac换芯这件事情,现在有更多内容可以讲了,本文就以自问自答的形式,为读者梳理一下mac换芯和其背后隐藏着的目的。

为什么苹果要给mac换用自研芯片?

苹果自研芯片的历史可以追溯到十多年前,iphone 4上面的那颗apple a4芯片是苹果首枚自行研制的soc,也是现任硬件技术高管johny srouji在苹果领导开发的第一枚处理器。在进入苹果之前,他是ibm cpu研发部门的设计经理,再往前,他在intel的以色列设计中心干了八年,同时,从基层研发做起的背景让他积累了大量的实践经验。在2008年进入苹果之后,他就开始负责起苹果的硬件技术研发工作,在2015年升任高级副总裁,全面负责硬件技术部门,并直接向tim cook汇报。

就像johny srouji在主题演讲中所提到的,苹果这十多年来在为旗下iphone、ipad和apple watch等设备打造芯片的时候积攒下了非常丰富的经验,愈发庞大的芯片设计团队也具备为mac打造芯片的能力了。技术储备部分实际上早已完成,他们只差一个借口,而intel在处理器技术上略显停滞的脚步给了他们最好的理由。

不像微软,苹果并不执着于追求软硬件的绝对兼容性,在每一次他们依赖的技术发展到瓶颈期之后,苹果都毫不顾忌地选择投向另一项有更好前景的技术,好吧这里说的就是cpu指令集,或者说是cpu架构。苹果是做电脑起家的,mac及其前身——macintosh,在整个的发展过程中经历了三次主要的变迁。

第一次发生在上世纪九十年代中叶,macintosh从motorola的68k指令集迁移到了ibm的powerpc指令集上,那段时间乔布斯并不在苹果。用乔布斯在wwdc 2005上面的话来说,这次切换为苹果奠定了未来十年的基础(指90年代中叶到2005年左右)。

第二次是软件层面上的大换血,从mac os 9迁移到了具有bsd血统的mac os x上,这也是乔布斯一手主导的一次切换,让mac的操作系统变得现代化,并打好了在未来二十年内发展的基础。

第三次则是我们所熟知的从powerpc架构的处理器迁移到intel处理器上面,乔布斯在2005年的wwdc大会上面宣告了这次迁移。到今天为止,所有的mac都已经换上了intel的cpu,在系统层面上,macos也早已完全抛弃掉了对powerpc指令集、甚至于32位x86指令集(ia-32)的支持,在macos 11之前,它只支持使用x86-64指令集的处理器。

可以看到,苹果在做迁移这件事情上是真的毫不手软,只要是有利于我产品未来的发展的,那我不计成本都要迁移过去。而现在,intel的拖沓给了他们非常好的迁移理由,当然,苹果的官方口径肯定是非常的委婉,我们来看看johny srouji给出的三大理由:

官方理由

更高的能效比,更高的性能

mac在诸多领域中有着主导地位,比如说,视频创作领域和编程领域。在这些需要生产力的领域中,mac的性能是非常重要的,它是良好的用户体验的基础。但从目前来看,不管是桌面的mac还是笔记本的macbook,它的性能表现虽然还能说是第一梯队的,但同级别能够超过它的产品已经是越来越多见了。苹果认为,当前的处理器技术受制于散热空间和能耗,mac想要更好的性能就必须换用能效比更高的芯片,而只有自家的芯片才能够提供最好的能效比。

这倒不是吹牛皮,去年的a13芯片在spec2006的一系列标准化测试中表现出了匹敌桌面x86处理器的能效比,这里引用anandtech编辑andrei frumusanu的说法:

去年我已经注意到a12可以跟最好的桌面级cpu核心相比。今年,a13已经基本上可以跟amd和intel提供的最好的产品相提并论了——至少在specint2006中是这样。在specfp2006中,a13仍然有15%左右的落后。

可以预见的是,苹果目前正在为mac打造的专属芯片的性能表现肯定是比给ipad打造的a〇x系列soc更好的,我们大可打消对自研芯片性能方面的疑虑。

集成更多的硬件模块,与软件实现更好的整合

提供更好的性能这一个理由已经足够苹果说服自己给mac换用自研处理器了,但他们还提供了更多的理由,其中之一就是自研处理器能够给mac提供更好的软硬件整合能力。

虽然我们口头上习惯把这些集成了很多模块的soc叫成处理器,可它们早已不是当初那个只有运算功能的傻大个儿中央处理器了,现在的处理器实质都是soc,内部集成有很多不同功能的小模块。比如amd的ryzen soc中集成了基于arm指令集的安全处理器,比如苹果的a系列soc中集成了cpu、gpu、npu、ipu和视频编解码等等等等不同种类的小“处理器”。这些都是为了满足上层的不同需求而设计的,供设备软件在不同情况下调用,以最大化提高芯片的处理效率。

苹果非常重视软硬件相结合,甚至认为这件事情是他们一切工作的基础:

at apple, integrating hardware and software is fundamental to everything we do. ——tim cook

在苹果的移动设备上面,我们见到了非常出色的软硬件结合,但是在mac上面,这点表现得并不那么明显,其中一个原因就是他们使用的通用处理器并不能完整为他们想做的功能提供服务,比如说,intel在ice lake上面才开始往soc中集成npu,而苹果早在a11上面就加入了“neural engine”,这也让mac与ai应用之间的距离拉得稍微有点远。而通过自研处理器,苹果可以在mac上面更好地实现他们“软硬件相结合”的想法。

整个生态系统使用同一个通用架构

在转换过后,苹果旗下的所有设备将会共享同一个架构,让开发者更方便地优化他们的软件,这方面官方也并没有做出太多的说明,但明确表露出了想统一旗下设备所使用的硬件平台这个想法。从目前苹果已经公布的做法来看,这样至少有一个好处是相当明确的,那就是mac可以直接运行原本只在iphone、ipad上面跑的应用了,对于目前相对自家app store要弱势一些的mac app store是一件好事,能够丰富mac的应用生态。

展开一下

上面是基于官方理由做出的一些解读,那么我们是否可以通过官方理由发散一下,推测一些藏在背后的理由和苹果对自己生态系统的未来构想呢?

对intel停滞不前的不满

2005年乔布斯在wwdc上宣布更换指令集时,非常直接地指出,powerpc架构给不了他们想要的性能,而powerpc未来的路线图也和苹果想要的不符。将以上两个理由代回到今天也是可以成立的,intel“挤牙膏”显然对苹果的产品布局是产生了一定影响的,而他们给出的未来cpu路线图可能是偏离苹果预期的,另外intel cpu屡次曝出的漏洞问题也促使苹果重新考虑intel的产品。在综合多种因素考虑之下,给mac换芯这件事情就摆到台面上了。


wwdc 2005上,乔布斯指出powerpc的每瓦性能远远落后于intel

那么苹果为什么不考虑amd呢?amd的半定制芯片业务不是做的风生水起吗?这就扯到苹果的另外一个考量——他们要控制mac的整个硬件。

控制整个硬件生态

从兼容机出现的那时起,x86架构的生态就是相对开放的。苹果选择使用x86架构,就意味着他们没法完全把平台封闭掉。这也就催生出了一些问题,比如说,“黑苹果”。从macos支持x86开始,“黑苹果”就一直在阴影中发展着,甚至现在已经发展成了一条完整的产业链。苹果是不想让非苹果硬件用户用上自家的系统的,在这几年里也时不时地会打击一下“黑苹果”,不过道高一尺,魔高一丈,黑客们还是很容易就可以绕过macos的各种防护措施。

但如果能够掌控整个硬件平台,就像掌控iphone和ipad那样,那么未来“黑苹果”这种现象就可以被杜绝掉。当然,控制整个硬件生态肯定不是为了防止“黑苹果”那么简单,苹果引以为傲的安全性和隐私防护在基于自家处理器的平台上面可以做到一个更好的水平,比如说,原本基于efi和证书链的引导过程在今后会变成类似于ios设备启动时从soc的bootrom中加载最初代码的流程。

其实在这两年的mac上面我们已经看到苹果的野心了——t2安全处理器。t2处理器接管了存储i/o,为touch id提供安全保障,给整台mac提供了更高的安全性,同时它还集成了图像信号处理器和运动感知协处理器的功能,在换用自研处理器之后,t2的功能应该都会被集成进主soc中。

“universal apple platform”

这个词是我在去年苹果公布project catalyst和swiftui的时候无端想到的,和微软一样,苹果肯定也想让旗下设备用上一个统一化的平台,让开发者轻轻松松即可把自己的应用适配到所有设备上去。当年微软提出了universal windows platform的理念,但很可惜,他们没能完成最初制定下的“大一统”目标。

从现在看来,只有苹果有能力完成这项统一平台的事业了。project catalyst和swiftui这两项技术都是跨平台的,前者可以方便开发者将针对ipad开发的应用搬上mac平台,后者则是让苹果旗下的所有设备有一套通用的ui编程语言。如今再配合上用上自家芯片的mac,那么“universal apple platform”这个构想完全有可能会在未来实现,届时开发者经过一次开发即可让自己的应用登陆多个平台,既降低了开发成本,也可提升整个平台的应用生态丰富程度。

那么他们能否完成过渡?

对于这个问题,我个人的看法是:能。

有人说,微软做个windows 10 on arm不是没成气候吗?怎么你就在这铁定说苹果能干成这事儿?我的理由是,苹果不是第一次做平台架构迁移这种事情了,在这方面,他们的经验要比微软丰富多了。这次苹果拿出来的几个措施中,rosetta 2和universal binary实际上都是经典“复刻”,在上一次迁移的时候,这两位可是功臣。

universal binary允许在一个可执行文件中塞入针对两套不同指令集架构的二进制,可以保证应用在不同指令集的系统下均可正常运行,代价就是应用体积会大一些,而且它需要开发者手动重新编译自己的应用。那怎么用上那些没有做适配的应用呢?rosetta 2这个兼容层就在这里发挥作用了,它将会提供指令的实时转译,保证让自研处理器能够“看懂”x86应用的内容,代价就是处理器的效能会受到一定的影响,并且因为芯片的限制,它不支持avx指令集的转译。

为了降低rosetta 2对整体性能的影响,苹果也引入了新的预编译机制,在新应用安装或是首次开启时对其进行整体转译,这有点像是android的虚拟机机制。

另外两项则是上次迁移时没有的,一个是虚拟化,另一个是让mac直接运行iphone和ipad和应用。虚拟化可以让mac运行其他的系统(因为启动流程变了,应该是不能再装非macos系统了),而直接运行iphone和ipad和应用则是扩展了mac的应用范围。

和wwdc 2005一样,这届wwdc上面,苹果同样给出了两年的过渡时间。在这两年里,苹果可能还会发布基于intel芯片的mac,但都算是末期产品了,而系统方面则是逐渐去掉对x86的支持。如果一切顺利,参照上次的时间表,苹果应该会在两年之后的新版本macos中去掉对x86指令集的支持,在三年之后的新版本中去掉rosetta 2这个转译层。

总结:换芯是为了下个十年乃至二十年的发展

苹果在tim cook的运作之下比较安稳地度过了一个十年,市值从千亿膨胀到了万亿的级别,如果他们想安安稳稳地推陈出新,那继续用intel的cpu也不是不行,但他们选择了一条有一定风险的道路。任何产品换掉自身依赖了十多年的核心部件可以说都是相当冒险的,尤其是像苹果这么干,几乎是把风险都转移到自己身上来了,也只有对自己的自研芯片有足够自信了,他们才会这么做。

苹果现在做的是一种生态系统,是给用户提供全家桶式的优质体验,这需要对软硬件产品都有绝对的控制权。纵观苹果的整个产品线,现在只剩下mac的核心配件还在受制于人,那么,换芯这件事情就是必然会发生的了。同时,通过换芯,苹果可以打造出更加完美的硬件生态环境,继续打通不同形态设备之间的隔阂,用一致连贯的体验征服更多的用户,这是为将来更好的发展而打基础的事情,值得公司用一条知名产品线去冒这个风险。未来的mac,将会更加融入目前的苹果全家桶。