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

苹果 MacBook 换用 ARM 芯片

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

之前使用 ARM 芯片的 Surface 平板,运行 X86 软件效果并不理想,MacBook 会重蹈覆辙吗?

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

MacBook 的 ARM 芯片足够强吗?

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

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

CPU 发展到今天,RISC 和 CISC 的边界其实已经相对模糊了。在当前的 X86 处理器中,复杂指令也是会分拆成为类简单指令来执行的。而在规模上,苹果设计的 ARM 芯片已经追赶上了 X86,例如 A14 的芯片面积为 88mm²,共 110 亿个晶体管,而 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 并不落下风。

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

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

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

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

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

macOS 11 的指令翻译效率高吗?

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

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

Mac 迁移平台这事,苹果已经干过一次了,当年 Mac 从 PPC 迁移到 X86 的兼容层被称为 “Rosetta”

Rosetta 2 的作用在于,它通过指令翻译,可以让 ARM 平台的 macOS,直接运行绝大部分的 X86 软件。从苹果的介绍来看,Rosetta 2 的性能还相当不错,它并不是在软件运行的时候,才翻译指令的,而是在软件安装时就做好了转换。当然,这也并非说 Rosetta 2 可以实现性能完全无损,它对 AVX 指令兼容并不好,如果 X86 软件依赖 AVX 乃至 AVX2,那么在 ARM 平台上由于没有对应的高性能指令,运行效率会有明显下滑。并不是所有的软件都会用到 AVX 指令集,总体来说,Rosetta 2 的性能应该还是可以接受的。

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

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

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

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

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 都非常值得期待,一起来静待上市实测吧。

新 MacBook 性能真的像苹果公布的那么劲爆么?

关键词: 苹果Mac