放弃x86,全面拥抱ARM 苹果的下一个时代

2020-01-18 02:24李实
微型计算机 2020年21期
关键词:开发人员二进制处理器

李实

在2006年前,苹果曾经将旗下个人电脑等设备所使用的计算架构从Power转向至x86,这次改变使得苹果的产品在性能方面追赶上了市场上的主流产品,并拥有了更广阔的发展空间。斗转星移,14年后,苹果在WWDC 2020上宣布旗下Mac产品线将会在两年内转移至ARM架构的Apple Silicon——Apple Silicon是苹果对自家ARM架构芯片系统和封装体系的总称。那么,苹果为什么会再—次转换“跑道”,它又将如何完成这一过程?

CCX模块采用全新设计

2020年WWDC最大的新闻莫过于苹果宣布要将整个Mac产品架构从x86转移至ARM。虽然在这个消息正式公布之前,苹果曾经在多个场合表示对现有产品架构的异议,并且大量小道消息也显示苹果正在积极谋划新的产品线,尤其是在苹果iOS生态系统和相关A系列SoC大获成功之后。但是只要靴子没有落地,人们的议论和猜测就一天不会停止。

现在,消息已经明朗。苹果宣布大概需要两年时间来完成这次架构迁移过程。但是,就像苹果之前发布的大量公告信息那样,它所提供的消息有限,只有部分比较笼统的消息,这些消息吊起了开发人员和消费者的胃口,同时缺乏真正的细节。因此,本文的内容在很大程度上也基于现有的消息和情况,更多的内容可能要等到苹果在2020年下半年真的推出了基于ARM的Mac产品之后才会进一步明确。

从市场角度来看,苹果公司的下一个目标是垂直整合整个Mac产品线。从性能指标和用户体验来看,苹果目前在iOS生态上成功的最核心原因之一就是垂直整合。苹果的想法就是,既然在iOS上能够取得成功,那么在Mac设备上也可以如法炮制。垂直整合的优势在于,即使从用户界面看起来操作系统没有什么大的变化,但是苹果将底层硬件架构和SoC有机融合后能够使得操作系統更为充分地调用soc的所有设计和特殊功能,比如电源控制、ISP、视频编解码、神经网络引擎等,这些都将是被重点关注的内容。

苹果在Mac生态系统上的核心改变是向ARM架构过渡,但奇怪的是,苹果目前谨慎地避免在公告中的任何地方提及“ARM”一词,只是在新的macOS开发文档中明确说明了苹果正在将自己芯片设计和ARH结合在一起,准备推出一系列基于ARH架构的SoC产品。在这个计划的早期,用户甚至可以看到其在iPad设备和Mac设备中使用几乎一样的soc。但是最终苹果希望基于ARH重新设计的SoC能够比肩目前Mac Pro中使用的高性能x86处理器产品。

从性能和现有产品的角度来说,苹果已经在芯片设计上取得了极为辉煌的成功。苹果从早期在A4 SoC中使用类似Cortex-A9的架构开始,通过年复一年的迭代和升级,带来了整个架构和性能的巨大提升。相比之下,英特尔在x86上却陷入了多年的停滞不前,甚至现在苹果的Lighting内核在IPC方面已经非常接近英特尔使用多年的Skylake架构。根据anandtech的测试,A13在SPEC CPU 2006中能拿下65.27的分数,相对应的Core i9-10900K为77.42分,其差距缩小至大约15%左右。

不过,现在就说苹果在芯片设计能力上超越英特尔还略微早了一点,尤其是考虑到其在Mac Pro中使用的仍是Xeon芯片。苹果宣称一个拥有丰富经验的工程师团队正在完成这项工作,有消息称苹果这个团队正在将手机或者平板上那些优秀的设计和思想移植到新的高性能处理器上,这也是人们所期待的。苹果认为,自行设计的芯片能够在更低的功耗下提供更高的性能。

从另一个角度来看,苹果宣布整个产品架构过渡的时间有点奇怪。实际上,目前ARM正在准备发布ARH v9 ISA(现在是ARH v8.2 ISA),新的ISA带来了一些提高性能的功能,比如可伸缩矢量扩展(SVE2,类似于英特尔的AVX指令集)。因此,要么ARH很快就会发布ARH v9 ISA,这样一来苹果就能顺理成章地宣布支持新的ISA。要么就是苹果依旧将新的SoC停留在ARH v8.2阶段,并将NENO扩展推迟到今后再去解决,这是非常值得关注的事情。

过渡期的策略:x86和ARM的并行时光

另外一个值得关注的内容是在两年过渡期内,苹果应该如何面对x86和ARM,是戛然而止还是缓慢过渡?现在苹果已经确认,过渡期间ARM和x86架构将会并存,并且苹果还在准备推出全新的x86设备(据称可能是基于AMD Ryzen 5000系列的新Mac产品)。

这样的过渡策略要求苹果需要一段时间和足够的人手来围绕新的SoC进行准备。另外一个要点是,即使苹果在未来2年内不发布任何新系列产品,基于现有产品,苹果依旧需要不断更新英特尔处理器以跟上市场的前进速度,直到基于ARM架构的产品准备完成为止。在这种情况下,虽然苹果目前没有提及自己可能会先更换或者替代哪个产品线,但是看起来定位低端的笔记本电脑或者对性能要求较低的产品可能会先被更换到ARM架构,随后才是高性能的Mac或者Mac Pro系列产品。

在软件支持方面,苹果目前依旧在x86架构的软件上持续投入以维持其优势,并且这个优势还会持续保持。另外苹果也公开证实,他们将继续在未来数年内支持x86架构的Mac电脑,这样做也是为了避免目前基于x86的设备被过快淘汰。当然,这个“数年”是多久还需要持续观察,除非苹果特别加速了x86设备的退出时间,否则苹果会在ARM设备推出后数年内继续对x86设备提供支持。

x86的兼容性问题:Rosetta 2和虚拟化

同时,为了弥合苹果当前的软件生态系统与未来几年内所需实现目标的差距,苹果会将重金投资在软件兼容层上,以便在未来的ARM Mac设备上能够流畅和稳定地运行现有的x86应用程序。可以肯定的是,苹果将催促开发人员将其应用程序重新编译本地版本,并且苹果正在为此投入更多的资金到Xcode基础架构中,但是目前还是需要保持一定程度的x86兼容性。

苹果手中的武器是回归的“Rosetta”,Rosetta是苹果从Power架构转换到x86架构时使用的二进制转换层,在2006年推出。现在,苹果又带来了Rosetta 2,并且希望将x86 macOS的二进制文件转换为可以在ARM Mac上运行的文件,同时保持相同的功能和近似的性能。

Rosetta 2的工作模式是在应用程序安装时转换二进制文件至新的ISA。但是有人怀疑苹果公司希望通过App Store分发预先翻译好的二进制文件,而不是让每台ARM Mac自行翻译。同时,Rosetta 2还能够支持动态转换功能,这对于在执行中的x86应用进行高性能的快速即时编译来说是必须的。

总体而言,苹果宣称Rosetta 2具有“快速的性能”,也就是极为出色的二进制文件转换能力,尤其是在发布会上演示的Maya编译过程,但是这种二进制编译过程的效果还有待观察。从高通和微软的努力来看,从x86到ARM的编译过程实际上好坏参半,不过过去的所有尝试都从未涉及到苹果目前所追求的那种高性能芯片,而仅仅是在移动设备上完成,因此这里还需要更多的实验和观察。回顾历史来看的话,苹果之前在Power架构转移至x86架构时,即使当时的x86架构处理器展现出相对同期Power处理器巨大的性能优势,但是在x86处理器上实时启用Rosetta编译并运行Power架构的软件时,虽然能够正常使用软件,不过性能仍旧受到了影响。

因此在这种情况下,Rosetta 2应该被视作开发人员在构建ARM架构程序时确保兼容性的后盾,而不是将其视作x86程序运行在ARM Mac上的路径。特别是Rosetta 2还不能够支持AVX之类的高性能x86指令集,这意味着在使用密集的高性能计算以及对性能有严格要求的代码中,苹果可能将改用更慢的方法来完成类似的工作。

目前尚不清楚苹果准备为macOS提供Rosetta 2多长的使用时间。之前的Rosetta发布后没多久就下线了,因为苹果更希望开发人员直接基于新架构来重构软件而不是依靠Rosetta。因此,基于同样的理由和市场行为,Rosetta 2的寿命可能不会太长。

与此同时,苹果在为ARM Mac的启动操作系统macOS Big Sur(11.0)上引入了一种被称为universal 2的新二进制格式。这个新的二进制格式适用于新编译的过渡期应用程序,开发者需要多编译一个被称为Universal(Fat)Binary的文件(也就是Universal 2),用于同时支持ARM和x86架构。苹果在发布会上也演示了Final Cut Pro X通过Universal 2运行在ARM架构MacBook上的情况,整体表现还不错。对第三方软件来说,如果只依赖AppKit,升级Xcode后编译为新的Universal 2就可以了,非常方便。

最后,兼容性软件包还包括苹果的虚拟化技术,用于处理诸如Linux Docker应用程序容器等内容。关于这个功能的信息目前非常少,苹果在发布会幻灯片中将其作为运行Linux的Parallels的一部分进行了简短展示,但是这个技术的功能还尚待观察。至少对于开发人员来说,他们现在为Linux和Docker找到了非常合适的解决方案,这对于参加WWDC的开发人员来说非常重要。

但是,这个虚拟化功能没有解决运行Windows的问题。因为在之前的设备上,由于x86架构的存在,苹果可以通过Boot Camp实现对Windows的支持,并且提供了大部分硬件的驱动程序,但是切换至ARM平台后,如何在ARM平台上运行Windows就成为了一个巨大的难题。有小道消息称苹果将放弃对BootCamp和Mac运行Windows的支持。显然一旦如此,将使得一部分需要双启动系统的用户不得不做二选一的选择题。不过目前苹果尚未对这个问题做进一步的表态。

开发人员设备:A12Z的Mac mini

为了让开发人员在年底发布新的ARM Mac之前就做好准备,苹果还推出了一台专门面向开发人员的过渡设备,只提供给注册的开发人员进行实际的硬件测试和软件优化。苹果在发布会上也用它进行了演示,包括macoOS Big Sur系统的功能等。当然,从架构角度来看,这个开发人员设备实际上就是一个Mac mini外观的iPad Pro,还不带显示屏。

目前的开发设备基于A12Z SoC,包括16GB的内存和512GB SSD。一开始人们预想的是这款设备的尺寸和散热空间相比iPad大了不少,因此处理器的运行频率和性能应该更为出色。但实际—卧目比iPhone 11,这款开发设备虽然使用了A12Z,但实际性能可能比不过使用A13的新设备。这样设计的一个优势就是,为未来即将到来的ARM Mac设量了一个较低的性能下限并鼓励开发人员努力开发更高效率运行的软件。因此,如果开发人员的软件能够在这款设备上流畅运行,那么肯定能够在未來ARM Mac所使用的A14衍生芯片上流畅运行。

不仅如此,虽然大家都知道了开发设备上使用的是A12Z SoC,但是就像苹果其他的开发中设备一样,苹果严格禁止对其进行性能测试。开发设备在购买时签署的有关协议就严禁公开基准测试数据,即使开发人员花了500美元才获得这个开发设备,但是其在法律意义上仍属于,并且将在未来归还苹果公司,开发人员付费只是获得了一段时间的使用权而已。因此,在这种重重约束之下,消费者短期内是没有希望获得新ARM Mac设备的相关性能数据了,全面的测试数据只有等待产品正式发布后才可能合法曝光。

静候发布

苹果在发布会上带来了很多的消息,但是正如前文所说,还缺乏细节,一切秘密只有等到新的ARM架构的Mac发布才能揭开了,现在距离2020年年底也不算太久,就让我们静候新品的发布。

回顾苹果的发展历程,它向来擅长进行垂直整合,特别是通过一个尖端产品来掌握整个产业链的方方面面。对苹果来说,能够全面掌控Mac的硬件和软件,将成为它在下一个发展阶段追求的重要目标。尤其是将macOS转变为和iOS生态一样的软件架构,并进一步整合苹果的软件生态,如果成功的话,将为其带来巨大的产业影响力。为了实现这样的目标,苹果需要在硬件和软件层面上做出很多改变和创新,可想而知,苹果公司内部和Mac相关的部分接下来都将进入极为紧张的工作状态。

好消息是,苹果对这样的ISA级别的迁移已经有了丰富的经验。2006年的决定让苹果从Power架构成功转型至x86架构,并获得了长达十多年的成长期,而在x86转向ARM的过程中,苹果又将迎来一个新的发展阶段。苹果看起来将之前的所有经验都用在这次ISA转换上,包括之前软件的兼容性问题、催促开发人员跟上新的架构以及在短期内提供实验设备等,一切都做得有条不紊,值得我们进一步期待。

从另外一个方面来说,人们也很期待在使用了ARM架构后,苹果能为Mac带来怎样的改变,不光是MacBook或者iMac这样的产品,人们更期待看到ARM架构的Mac Pro,看它是否真能挑战x86的王者地位。当然,由于苹果彻底转向ARM架构,个人电脑市场也将不可避免地迎来又一次分裂,之前由于苹果转向x86而带来的十余年“虚假”的融合时光彻底结束了,可以运行Windows的Mac或者一些玩家口中津津乐道的“黑苹果”很可能不复存在,市场又一次选择了分道扬镳,各奔东西。

猜你喜欢
开发人员二进制处理器
用二进制解一道高中数学联赛数论题
有趣的进度
二进制在竞赛题中的应用
Semtech发布LoRa Basics 以加速物联网应用
后悔了?教你隐藏开发人员选项
Imagination的ClearCallTM VoIP应用现可支持Cavium的OCTEON® Ⅲ多核处理器
ADI推出新一代SigmaDSP处理器
一个生成组合的新算法
三星SMI扩展Java论坛 开发人员可用母语
AItera推出Nios II系列软核处理器