相信大家都已经知道,苹果在最新一场秋季发布会中,宣告了全新的MacBook产品。新MacBook换用了苹果自研的基于ARM架构的M1芯片,苹果从X86阵营转向,投入了ARM的怀抱。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?-冯金伟博客园
苹果MacBook换用ARM芯片

在传统观念中,ARM是用于移动平台的架构,和桌面的X86芯片相比,ARM芯片的能效更高,但性能羸弱。这次苹果MacBook换用ARM,同时macOS 11仍对以往基于X86 macOS开发的软件兼容,这就让很多朋友感到困惑——用新的MacBook跑当前的X86软件,到底会不会卡?

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?-冯金伟博客园
之前使用ARM芯片的Surface平板,运行X86软件效果并不理想,MacBook会重蹈覆辙吗?

这种担心是有道理的。在此之前,微软已经做过了这方面的尝试。微软推出了使用ARM芯片的Surface Pro X平板电脑,兼容X86的Win10软件。然而人们发现,体验并不理想,传统软件运行起来缓慢迟钝。换用ARM芯片的MacBook会不会有这样的问题?这就来分析一下。

新MacBook跑旧软件到底慢不慢,最关键的因素自然是新的M1芯片。人们普遍认为,ARM芯片的性能水平无法和X86比肩,毕竟ARM是简单指令集RISC而X86是复杂指令集CISC,复杂指令集自然强大得多,但事实上这是一个误会。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?-冯金伟博客园

在规模上,苹果M1芯片足以和顶尖的X86桌面处理器并驾齐驱

CPU发展到今天,RISC和CISC的边界其实已经相对模糊了。在当前的X86处理器中,复杂指令也是会分拆成为类简单指令来执行的。

而在规模上,苹果设计的ARM芯片已经追赶上了X86,例如A14的芯片面积为88mm,共118亿个晶体管,而AMD最新发布的Zen3处理器中一个CCD的面积为80.7mm,共41.5亿个晶体管。考虑到A14还封装了AI模块、GPU等,A14芯片使用的是5nm工艺,而5800X使用的是7nm工艺,事实上大家的CPU单元部分,规模已经是并驾齐驱。

了解了规模,再来看看性能实测,这里引用Anandtech的数据。Anandtech使用了行业权威性能测试套件SPEC 2006来对比测试苹果A14、AMD Zen3以及英特尔Tiger Lake的性能,结果如下。

首先是整数性能,可以看到A14并不落下风。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?-冯金伟博客园

再来看看浮点性能,A14和Zen3要明显领先于Tiger Lake。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?-冯金伟博客园

Anandtech还使用了大家非常熟悉的Geekbench来测试,结果如下。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?-冯金伟博客园

可以看到,在单线程性能上,A14的确已经能追上当前顶级的X86处理器。这次苹果MacBook使用的M1处理器,架构和A14相似,但规格更高,晶体管规模达到了160亿个,增加了两个大核心,在性能上方面是可以令人放心的。

其实到了这里,我们也不难找出为什么Surface Pro X运行缓慢的原因。Surface Pro X使用的是高通SQ1/SQ2处理器,这基本是骁龙855的马甲。而即使是骁龙865+,对比A14以及最新的X86处理器,性能也依然不太够看……

此情此景下,加之Win10 on ARM较低下的指令翻译效率,Surface Pro X运行X86软件的体验就不甚理想了。是的,到了这里大家应该也能看到ARM处理器运行X86软件,除了自身性能之外的其他影响因素了——操作系统的指令翻译效率。

X86软件想要在ARM芯片上运行,需要进行指令翻译。虽然ARM指令集并不意味着性能低下,但毕竟它和X86还是不同的,指令需要翻译过来,才能让ARM芯片执行。

在今年的WWDC大会上,苹果已经公布了指令翻译的方案。苹果宣布,将会为macOS平滑过渡到ARM平台,推出Rosetta 2中间转换层。如果你是老果粉,对于Rosetta这个词一定很熟悉——苹果Mac电脑当年从IBM PowerPC架构,迁移到Intel X86平台,所使用的转换层正是Rosetta。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?-冯金伟博客园
Mac迁移平台这事,苹果已经干过一次了,当年Mac从PPC迁移到X86的兼容层被称为“Rosetta”

Rosetta 2的作用在于,它通过指令翻译,可以让ARM平台的macOS,直接运行绝大部分的X86软件。从苹果的介绍来看,Rosetta 2的性能还相当不错,它并不是在软件运行的时候,才翻译指令的,而是在软件安装时就做好了转换。

当然,这也并非说Rosetta 2可以实现性能完全无损,它对AVX指令兼容并不好,如果X86软件依赖AVX乃至AVX2,那么在ARM平台上由于没有对应的高性能指令,运行效率会有明显下滑。并不是所有的软件都会用到AVX指令集,总体来说,Rosetta 2的性能应该还是可以接受的。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?-冯金伟博客园

这次Mac从X86迁移到ARM,Rosetta 2对旧有X86软件的兼容也起着至关重要的作用

至于Rosetta 2的实际表现会如何?我们可以从两方面来衡量。

苹果从PowerPC迁移到X86时,也使用了类似方案,当年并没有太多人抱怨Rosetta性能低下,我们自然也可以对Rosetta 2抱有期待。

实际上,苹果早前就已经推出了基于A12Z芯片的Mac mini开发机,开发者们很早就能接触到Rosetta 2,但到目前为止并没有什么关于Rosetta 2性能低下的爆料,可见Rosetta 2的实战表现应该相当不错。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?-冯金伟博客园
MacBook换用ARM之前,ARM的Mac mini开发机早已经有了,没有传出性能方面的负面消息

到了这里,我们又可以来分析一下为什么Surface Pro X的表现会如此糟糕了。在Surface Pro X的Windows 10 on ARM中运行X86软件,是边转码边运行的,并不像苹果Rosetta 2那样在安装时作好转码工作,运行时无需再次转码。加上性能较弱的SQ1/SQ2处理器,运行X86软件拖慢卡顿也就在情理之中了。

到了这里,相信大家都可以得出结论了。MacBook使用的M1处理器性能非常强大,足以和顶尖的X86处理器同台竞技;而苹果又在macOS 11中准备了高效的Rosetta 2指令翻译方案,因此对于能否流畅运行之前的X86软件,大家无需太过担心。

根据苹果的说法,情况要比笔者文中分析的更加乐观。苹果宣称,M1要比之前MacBook所使用的X86处理器性能高1倍,同时功耗仅为25%。从各种角度来看,新的MacBook都非常值得期待,一起来静待上市实测吧。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?-冯金伟博客园
新MacBook性能真的像苹果公布的那么劲爆么?