谈谈 Apple M1 芯片、ARM 以及 ARM Mac

2020 年 11 月 11 日,苹果在本年度最后一次 Apple Events 上发布了全新的 ARM 芯片 M1、以及三款搭载了 M1 的 Mac:MacBook Air、MacBook Pro 13′ 和 Mac Mini。在 WWDC 2020 库克宣布 Apple Silicon 后,这次 Apple Events 再一次掀起了热潮,不少 KOL 都把 M1 奉若神明,不少人也不以为然。本文通过 8 个问题来简单聊聊 M1 和 ARM Mac。

M1 芯片的性能如何?

本文写就时,搭载 M1 的 Mac 尚未开始发货,我们能看到的只有 GeekBench 上流出的跑分。所以,让我们先从跑分开始看起?

3

哇!Geekbench 跑分数据告诉我们,M1 和 A14X 可以直接打败 5950X、直接把 Tiger Lake 摁在地上摩擦?这已经不是踩爆 Intel 的牙膏了好伐,这是已经快进到 AMD 原地倒闭了好伐!给 Apple 倒一杯卡布奇诺好吗,快给 Apple 倒一杯卡布奇诺!

4

啊,什么?这 Geekbench 还说 Intel 的 Tiger Lake 可以吊打 4700U?嗯?嗯~?

1

过了一个小时 Geekbench 就更新了排名数据,所以,现在 5950X 和 5900X 的分数又高过 M1 和 A14X 了?

看了上面这三张图,你应该大致知道像 Geekbench 这样的跑分纯属娱乐了吧。「众所周知」跑分不代表真实体验。所以我们还是看看苹果发布会上给的图表吧:

2

什么,苹果竟然敢说自己的 M1 比最先进的 PC 芯片的性能还要强大 …… 哦,我眼睛业障重啊,这图表的标题后面、还跟着一个「Per Watt(每瓦)」啊。

5

苹果的意思是,自从 Mac 实装了 M1、Mac 的功耗比直接大幅提升,苹果并没有直接说 M1 性能有多好嘛!你看看苏妈在 AMD 发布会上晒的性能图表、条形图都快超到会场外面去了,苹果你在发布会上搞这么含蓄干什么嘛!

如果苹果在发布会上只强调能耗比有多么高、功耗有多么低,丝毫不提 M1 的绝对性能,甚至没有透露 M1 的频率,对于 M1 芯片的能耐和优势相信读者也有大概的猜测了。至于苹果在发布会上展示搭载了 M1 的 Mac 比往年的同系列 Mac、CPU 性能提升超过 2.8 倍乃至 3.5 倍、GPU 性能提升则有 5 至 6 倍,我会留给后面「如何评价这率先搭载 M1 的三款 Mac?」问题再谈。

对 ARM 架构的处理器性能的一瞥

从一开始我就没有怀疑苹果是否能实现用于桌面端的 ARM 芯片。苹果操刀数款移动 CPU 的经历,驾驭 ARM 自然是轻车熟路的。

那么 ARM 有什么优势呢?在手机和平板上 ARM 大放异彩,近几年几乎再没有看到搭载 X86 的智能手机了;不少 IoT 设备、单片机也开始积极使用 ARM 架构;而桌面端 PC 使用 ARM 的却少之又少。从市场上来看,ARM 架构似乎更适用于低功耗、不强调性能和 CPU 密集型计算的平台,但这并不是意味着 ARM 架构本身没有用于 CPU 密集型计算的潜力。今年 6 月 22 日刷新了全球超级计算机的「TOP500」榜单、成为第一的是来自日本理化学研究所(RIKEN)的「Fugaku」(富岳)超级计算机,峰值计算速度达到 513.9 PFlops。而 Fugaku 搭载的富士通的 7nm 48C SoC 正是 ARM 架构。

作为半导体行业的门外汉,我没有资格谈论 X86 的 CISC 和 ARM、MIPS 等的 RISC 之间孰优孰劣。但从历史的长河里,我们还是能从 ARM 代替 X86 的企图中略窥一二的,其中最接近成功的一次来自 Cloudflare。2017 年 8 月,Cloudflare 尝试从 Intel Skylake 的处理器(E5-2630 v4)切换到由高通提供的 Centriq 平台。从数据上来看,高通提供的平台在当时非常有吸引力:相比 Intel Skylake 的 的 12C24T 2.1GHz,高通 Centriq 平台搭载的 Falkor 核心达到了 46C46T 2.5GHz;相比 Intel 的 170W 的 TDP、高通 Falkor 的 TDP 只有 120W;与 Intel 的 AVX512 指令集对应的,高通也有自己的 NEON 指令集。

虽然众多 Linux 发行版和依赖库都提供有 ARM64 版本,但是当软件时,Cloudflare 犯了难。Cloudflare 高度依赖基于 NGINX 开发的 Web Server。虽然 NGINX 本身支持 ARM64,但是 NGINX 同时使用了大量的库如用于 gzip 压缩的 zlib 和用于 TLS 的 BoringSSL;而且 Cloudflare 自身还高度依赖来自 OpenResty 的 lua-nginx-module,以及与之对应的 LuauJIT,但不幸的是 LuaJIT 在当时并不支持 ARM64;除此以外,Cloudflare 许多技术还基于用 Go 编写的 RRDNS,在当时也没有 ARM64 的版本。

除此以外,Cloudflare 在使用 Intel 和 Falkor 进行 OpenSSL 性能基准测试中发现,OpenSSL 公钥交换的性能高度依赖单核 CPU 频率,因此在测试中 Broadwell 竟超过 Skylake 胜出、而 Falkor 排在了垫底的位置;在对称密钥性能方面,Skylake 由于 AVX512 而遥遥领先(期间 CPU 频率甚至维持在 1.4GHz),Broadwell 由于只有 AVX2 落后于第二,而 NEON 使高通再次垫了底。而在 Cloudflare 展开的其它性能测试,如 gzip 压缩性能测试、brotli 压缩性能测试、LUAJIT 性能测试,以及 Go 的 Crypto 库、gzip 库、Go 正则表达式与字符串操作性能测试中,高通的 Falkor 都远远落后,在不少测试中性能甚至只有 Skylake 和 Broadwell 的百分之一。你可以在 Cloudflare 博客中找到他们的性能测试结果。随后,Cloudflare 的数据中心仍旧采用基于 Intel X86 的服务器,直到今年三月,Cloudflare 将 AMD EPYC 引入了他们的新一代服务器,虽然 Cloudflare 对 ARM64 满怀信心,但是他们的基础设施依然是基于 X86 的。

这并不是说 ARM 具有天生的性能劣势(再看看「Fugaku」超算),而是绝大部分行业的程序、甚至是一些编程语言都不是为 ARM 设计、针对 ARM 优化的。优化软件使其能够让 ARM 的硬件完整发挥出完整的性能,还有非常漫长的一段路要走。

搭载了 M1 的 Mac 能否运行 Windows?

相比之前的长篇大论,这个问题的答案就简单多了 —— 「几乎不可能」,或者就是「不可能」。

ACPI(Advanced Configuration and Power Interface,高级配置与电源接口)最早早期 1997 年由 Intel、微软、东芝共同提出,后来凤凰科技(做 BIOS 那个)和惠普先后加入规范制定中,自 2006 年起规范制定的工作被交给了 UEFI 社区。Windows 98 是第一个支持 ACPI 的操作系统,Windows Vista 以后的 Windows 则要求电脑 必须支持 ACPI;Linux 虽然不需要 ACPI 也可以运行,但是在现代设备上禁用 ACPI 将会导致绝大部分硬件无法运行;就连 Android 智能设备中也内置了一个精简的 ACPI;2005 年苹果将 Mac 从 PowerPC 架构迁移到 Intel 架构(相关的故事我在另一篇文章「黑苹果的历史」中有详细介绍),Mac 也开始采用 ACPI。但是搭载了 iOS 的 iPhone、iPad 并没有 ACPI,苹果的智能移动设备完全使用自己的私有架构,使用名为「iBoot」的 Bootloader。

从 WWDC 2020 上发布的 ARM DTK 上,通过 IORegistryExplorer 上我们可以发现运行 macOS Big Sur for ARM 的 DTK 上完全没有 ACPI。我们因此可以猜测,搭载 M1 的 Mac 也一样不存在 ACPI、使用和 iPhone、iPad 一样的 IBoot 作为 Bootloader。如果是这样的话,搭载 M1 的 Mac 上是 几乎没有可能 运行 Windows 的,甚至运行 Linux 都将非常受限。虽然不排除苹果为 ARM Mac 增加 ACPI 兼容层的可能,但是考虑到 WWDC 2020 和本次 Apple Events 上都对 BootCamp 缄口不言,基本上已经确定了本次发布的这三款搭载 M1 的 Mac 是绝无可能再运行 Windows 了。

如果搭载 M1 的 Mac 几乎没有可能直接运行 Windows,那么虚拟机呢?

相比在 X86 上提供的虚拟机增强 Feature Flag,为 ARM 提供虚拟化技术要有趣一些。ARM 虚拟化需要将 Hypervisor 插入到 Exception Level 2,然后再在 TrustZone 上提供虚拟化的功能,说人话就是 ARM 的虚拟化是在架构层面上实现的,因此苹果的 M1 如果要实现虚拟化并不难。但是考虑到苹果现在从硬件到系统都实现了完整的控制,是否提供虚拟化功能完全由苹果控制,如果苹果不启用,谁都无法绕过限制。

截止到本文写就,Parallels Desktop 完全无法在 ARM Mac 上运行虚拟机,但是 Parallels Desktop 已经着手对新版本的活跃开发了。考虑到虚拟机的 ACPI 实现和宿主机是完全独立的,只要苹果开放虚拟化,在 ARM Mac 上运行虚拟机是完全可行的。但是,苹果是否会选择开放虚拟化,又和苹果的目标用户战略、M1 本身的性能是相关的。

搭载了 M1 的 Mac 能否运行 PhotoShop?

这个问题的答案在发布会上有了明确的解答,我们完全无需猜测:「现在不行,不过明年就会有了」。

在 WWDC 2020 上,库克就在 ARM DTK 上演示了玛雅的运行,但是对 Adobe Photoshop 却一笔带过、表示「仍在适配中」。而在这次 Apple Events 上,苹果软件部门的 SVP 克雷格·费德里吉是这么介绍的:

And Adobe is bringing universal version of their Apps, staring with Lightroom next month, and other collection of apps including Photoshop early next year.

而且 Adobe 也开始带来他们的通用应用,将从下个月的 Lightroom 开始,而包括 Photoshop 在内的其它应用(的 ARM 版本)则会在明年年初到来。

7

那么,为什么大部分应用都可以很快地发布 Intel、ARM 通用版本,而 Adobe 全家桶却需要再等好几个月?因为 Adobe 从 2019 年开始大部分应用都高度依赖基于 Intel 特殊数学函数库 —— Intel Math Kernel Library(intel-mkl),以及其它一些 Intel 特殊指令集用于硬件加速(涉及到的有 MXMCore、FastCore、CameraRAW 等)。因此即使在搭载了同为 X86 的 AMD 处理器上安装黑苹果,使用 Photoshop 的某些功能也会导致闪退甚至 Kernel Panic;同理,AMD 黑苹果无法运行 MatLab,或者即使能够运行、运算速度也非常缓慢,也是由于缺乏 intel-mkl 导致的。搭载了 M1 芯片的 Mac 自然也无法调用 intel-mkl 库,因此 Adobe 需要几乎重写所有的功能实现,才能让他们的软件在 ARM Mac 上流畅运行。

如何评价率先搭载 M1 的三款 Mac?

在 Apple Events 上,苹果率先发布了三款搭载了 M1 的 Mac,其中搭载了 M1 的 MacBook Air 相比上一代搭载了 Intel i7 处理器的 MacBook Air(2020 年 3 月推出),CPU 性能提升了 3.5 倍、GPU 图形性能提升了 5 倍。但是,这是和哪一款 Intel i7 对比的呢?上市于 Q2’20 的 i7-1060NG7、Ice Lake、10nm、基础频率 1.20GHz、搭载的是 Iris Plus 核显、TDP 10W。

8

那 Mac Mini 呢?苹果比表示搭载了 M1 的 Mac Mini 相比上一代搭载了 Intel 处理器的 Mac Mini,CPU 性能提升了 3 倍、GPU 图形性能提升了 6 倍。那么在苹果官网的脚注里写的是和哪一款 Mac Mini 进行的对比呢?对比的是于 2018 年发布的 Mac Mini,搭载了上市于 Q3’18 的 i3-8100B、Coffee Lake、14nm 、基础频率 3.6GHz(无睿频)、搭载的是臭名昭著的 UHD 630 核显,TDP 65W。

9

苹果发布的第三款搭载 M1 的 Mac 是 MacBook Pro 13’,相比上一代搭载了 Intel i7 的 MacBook Pro 13’,CPU 性能提升 2.8 倍、GPU 图形性能提升了 5 倍,而这一性能提升是和 i7-8557U 对比出来的,上市于 Q3’19、Coffee Lake、14nm 、基础频率 1.7GHz、搭载 Iris Plus 645 核显、TDP 15W。

10

注意到没有,苹果在发布会上对比性能提升时,一直都使用的「best in class」(同类别)、「We have ever created」(我们制造过的)、「better than previous generation」(比上一代更好)的说辞。而当我们真正去注意苹果官网产品页面的脚注,才会发现苹果对比的产品并不是加强了 ML 的 Tiger Lake、并不是 Xe 核显或是 VEGA 显卡,而是 CoffeeLake 的降压 U 和孱弱的 Ice Lake、以及臭名昭著的 UHD 630、和上一代的 Iris Plus。

而且,让我们再做一道数学题,如果 M1 比 i7-8557U(MBP 13′ 2019)快 2.8 倍、又比 Ice Lake(MBA 2020)快 3.5 倍,那么是不是可以说 i7-8557U 比 Ice Lake 的 i7-1067NG7 快 25% 呢?可以看出,苹果对比的显然是限制功耗和锁频后的性能,因此结论也就很明显了:ARM 凭借着高能耗比、低功耗,在轻薄本上大杀四方,吊打前款,但是绝对性能在普通 PC、笔记本上搭载的 Ice Lake 和 Tiger Lake 面前其实毫无优势、更不可能和 AMD 同台竞技。

另外,M1 芯片为了追求超小体积和超低功耗,只在 SoC 中封装了两个 LPDDR4X 作为内存,因此只能提供最高 16G 的「DRAM」内存,这对上网本和办公白领来说绰绰有余,对「创作者」、「开发者」来说自然是远远不够的;被阉割的还有 Mac Mini 上的雷电接口,搭载 Intel 的 Mac Mini 有两个雷电控制器、而搭载 M1 的只有 SoC 里集成的一个,因此 ARM Mac Mini 只有两个雷电接口、而不是四个。

综合来说,M1 的超低功耗、超高能耗比在轻薄本、上网本上绝对是不二选择,MBA 这样的目标用户更在乎发热和续航,而 M1 恰恰可以满足他们的需要;M1 所不能做的事情,如绝对性能不足、无法连接 eGPU、恰恰是上网本用户所不在意的。

6

但是,苹果在没有电池的 Mac Mini、和在「面向创作者和开发者」的 MacBook Pro 13′ 上搭载孱弱的 M1,实在有点不可理喻、和一种自降身段的感觉。毕竟,Mac Mini 是时时刻刻需要插着电源的,而 MacBook Pro 13′ 的用户也不会抱着笔记本在户外使用 Xcode、Final Cut Pro X 和 Logic Pro,对吧?

虽然我们现在看到 KOL、小编们普遍对 M1 称赞不已,但是可以预见当他们发现这次发布的三款 Mac 都没法安装 Windows、都暂时无法运行 Photoshop 后,对 ARM Mac 的评价也会逐渐转变风向的。

Apple ARM 芯片和 ARM Mac 的未来?

综合来说,我们在 M1 上看到了令人惊艳的超低功耗加超高能耗比;而在性能方面,对于一款 ARM 架构的处理器来说,「勉勉强强」能和 Tiger Lake「五五开」也已经是不小的成就了。在上网本、轻薄本级别的 MacBook Air 乃至日后可能重启的 MacBook 12′ Refresh 产品线上,M 系列处理器肯定是不二选择。

与之对应的是「生产力 Mac」。MacBook Pro、iMac 的目标用户从事的工作大多为移动办公(MBP Only)、绘图、图像处理、音视频创作、影视制作、软件开发、轻度机器学习,而 Mac Pro、iMac Pro 的目标用户则大多从事大型影视剪辑、大型图像处理、大型数字音频制作、三维制作、大型机器学习等工作。而正如我在之前章节所说,让这类行业内的软件优化适配、使其能够发挥 ARM 的硬件的完整性能,还有非常漫长的一段路要走。而在这些行业中,自行组装 PC 固然可以弥补硬件性能上的差距、而在软件生态上 macOS 却是无出其右的,看看 Logic Pro、Final Cut Pro X 就知道了。苹果在未来很长一段时间内都会继续发布搭载 Intel 的 Mac。如果苹果一意孤行,急迫地在这类产品线强上 M 系列处理器,只会迫使这类目标用户转向 Windows 10 和 AMD 的怀抱。

历史上,苹果的架构选择甚至还会受到苹果公司领导层决策的影响。1992 年苹果就在计划将 Macintosh System(Classic Mac OS)迁移到 X86 架构上,甚至开展了一项秘密计划「Star Trek」。而当更青睐 PowerPC 的苹果新任 CEO 走马上任以后,X86 架构迁移计划就被束之高阁,直到乔布斯重新回到苹果、WWDC 2005 宣布 Mac 将迁移到 Intel 处理器上。因此,也不排除存在这种可能:随着库克离任、苹果领导层变动、ARM 处理器不再向「高性能、密集计算」的方向突破,甚至可能苹果换了 CEO 后 Mac 将会搭载 AMD 处理器,但是这两种可能性显然不大。


  • 本文采用 CC BY-NC-SA 4.0 许可协议,著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 作者:Sukka
  • 来源:谈谈 Apple M1 芯片、ARM、ARM Mac 和黑苹果的未来 | Sukka’s Blog
  • 链接:https://blog.skk.moe/post/talk-about-arm-m1-mac/
评论