在过去的 15 年里,苹果 Mac 电脑使用的是英特尔处理器,与竞争对手 PC 一样,都是 x86 架构。而苹果公司的移动设备,从推出首款 iPhone 以来,就使用的是 ARM 处理器。与在移动领域所取得的巨大进步相比,苹果常常被英特尔缓慢的创新步伐所拖累。这就是为什么多年来,人们一直在讨论苹果在台式机和笔记本电脑上使用 ARM 处理器的可能性。
自从苹果的手机处理器开始给英特尔的 x86 产品制造强有力的竞争对手以来,这种转变看起来就像是一个开放性的问题和一件板上钉钉的事情。现在它真的发生了!苹果在 6 月底举办的 WWDC 大会上,宣布将在自家的 Macbook、iMac 和 Mac Pro 上使用定制的 ARM 处理器,但很多人似乎不明白这到底意味着什么。
相关阅读:苹果:原生才是王道,我要自己做小程序
这将是苹果公司历史上第三次最主要的指令集架构 (ISA) 转型。他们在 20 世纪 90 年代中期从 680k 转到 PowerPC,然后在 2006 年从 PowerPC 转到英特尔,现在又转到 ARM。苹果公司几乎是唯一一家定期改变处理器架构的消费型硬件公司。
指令集是处理器的“语言”,定义了在处理器核心执行的操作码,在计算历史上出现过很多这样的操作码。两个数字相加、将数值加载到内存、决定接下来执行哪个指令、与外部硬件设备通信——所有这些都是由 ISA 定义的。
不过,在现代消费计算机领域,只有两种架构是最为重要的:ARM 和 x86(抱歉,RISC-V 还排不上号)。x86 处理器 (英特尔和 AMD) 运行在台式机、笔记本电脑和服务器上,而 ARM 处理器可以运行在手机、平板电脑、打印机和几乎所有其他设备上。
几十年来,性能领域的王者一直是 x86 ISA——主要使用 Intel 和 AMD 的芯片。奔腾、Core、速龙、至强——它们都是动力工厂。它们被用来运行办公应用程序、游戏,甚至是互联网的数据中心。x86 是快和强大的代名词,而英特尔是这方面的王者,尽管 AMD 经常给自己制造麻烦 (事实上,x86 64 位扩展是由 AMD 开发并得到英特尔的授权)。
从上网本使用的低功耗 Atom 处理器,到数据中心使用的大型至强和 Opterons 处理器, 它们都是 x86 架构。一直以来,x86 都是桌面和服务器的默认配置,以至于大多数人都没太在意。
实际上,x86 ISA 已经有 40 多年的历史了 (1978 年推出),多年来也留下了大量的糟粕和包袱。x86 指令极其复杂,有各种奇怪的问题和令人讨厌的陷阱,而且随着时间的推移,它们只会变得更糟。MMX、SSE、VMX、TSX、TXT、SMM、STM,你要么压根就不知道它们是什么,要么一想到它们就会感到颤栗。
从历史上看,相比 x86,ARM 架构低能耗、便宜和节能。ARM 做出了一系列妥协——体积小,制造成本低,而且节能。它们并没有在性能上做文章,但它们通常已经足够好了。因此,除了台式机或笔记本电脑之外,它们几乎已经被用在一切计算设备上。
在过去的一两年中,ARM 开始向被用在数据中心的英特尔至强芯片开炮。如果你不关心原始的单线程性能,而是更看重总体吞吐量和功耗,那么 ARM 服务器芯片将会给你留下深刻的印象。你可以用更少的钱和更少的电力获得更多的计算能力,这是一笔不错的买卖!
ARM 芯片已经被用在了一些笔记本电脑和台式机上,但还没能对英特尔构成威胁。
然后,也只有苹果公司会像疯子一样给你来一个出其不意的痛击。
大多数公司只能拿到 ARM 的参考核心许可 (如 A72、A53 等),在相同的核心和时钟速率下,它们的运行速度几乎相差无几。
但有一些公司可以获得不一样的许可和工程人员来构造完全定制的 ARM 核心,苹果就是其中之一。从 iPhone 5 的 A6 处理器开始,他们就使用了定制处理器实现。它们都是 ARM 处理器,但不是 ARM 处理器的参考实现。最初推出的几款芯片在当时相当令人印象深刻,不过它们都是手机芯片,旨在降低功耗。然后,苹果公司越走越疯。
如果你有一部 iPhone 11,在单线程任务方面,它 (可能) 比你家里的其他任何东西都要快,而且只需要几瓦的电!苹果一直在悄悄地迭代他们的定制 ARM 核心,并创造出了一些令人印象深刻的东西,而几乎没有人注意到。测评分数一年比一年高,在大规模并行方面,Android 设备被 iPhone 8 吊打。但是,它们都只是移动设备,不会威胁到台式机和笔记本电脑,是吗?
它们可以,而且它们正在这样做。
与手机相比,笔记本电脑可以提供给苹果芯片的的热容量和功率要大得多。iPhone 11 的电池是 3.1 安,额定电压 3.7 伏,也就是 11.47 瓦时。新的 16 英寸 MacBook Pro 配备了 100 瓦时的电池,其中一些用在了屏幕显示上,但在计算方面仍然有很大的优势。如果插上电源,电池就不是问题了!
这个很有趣,但有趣的事情远不至此,比如英特尔发现自己陷入了困境。
如果你在过去几年有关注英特尔,那么这一切就不足为奇了。如果没有的话,你可能只注意到他们似乎每隔几年,有时是每隔几个月就会推出相似的处理器。
英特尔在 14 纳米制程上停滞了 4 年 (他们的 7 纳米制程计划又一次被推迟)。就安全性而言,它们的微架构从根本上被破坏了。更糟糕的是,他们对自己的芯片并没有全面的了解。
是的,英特尔一直在迭代 14 纳米技术,并发布了 14nm+、14nm++、14nmXP、14nmBBQ 和其他改进 (好吧,最后两个是我“捏造”的)。英特尔曾经在制造芯片方面遥遥领先于科技行业的其他公司,这是毫无疑问的。英特尔芯片比其他任何一种芯片耗电量更少,性能更好。它们坚固,性能良好,在大多数情况下都物有所值,但他们已经失去了领先优势。
他们不仅失去了领先优势,他们以前的芯片也随着时间的推移而变得越来越慢。你可能听说过 Meltdown 和 Spectre 安全漏洞,但这也只是冰山一角,除了这些还有其他一大堆问题。最近发现的缺陷大部分都被修复了——一些是微代码更新,一些进行了软件重新编译,还有一些是提供了内核解决方案。但这些变通方法会降低处理器的速度。现如今,你的 Haswell 处理器运行代码的速度比刚推出的时候要慢得多。
最后,英特尔似乎也不能完全理解自己的芯片了,我不知道为什么。我知道一些微架构漏洞经常会冒出来再次破坏他们“安全”的 SGX 飞地计算机。在最坏的情况下 (Foreshadow 漏洞),修复方法很简单——刷新飞地转传输器上的 L1 缓存。对处理速度的影响并不是一个致命问题,但关键是英特尔在知道之前并不清楚这会是个问题。
那么,你为什么还会想被拴在英特尔这棵树上呢?毫无理由。AMD 已经迎头赶上,但苹果绝对不会从一家第三方 x86 供应商转到另外一家。他们要自己做,这应该会非常有趣。
定制的 ARM 芯片可以让苹果更好地控制硬件技术栈,这应该能很好地转化为更好的用户体验 (至少对大多数用户来说是这样)。
苹果公司将能够在消耗更少电量的情况下提供同样的性能,而且能够在同一芯片上集成更多的“东西”(以节省更多的电量)。如果可以将它们集成到主处理器中,就不需要单独的 T2 安全处理器了。苹果公司可以根据自己的需要,利用硬件加速,为他们所关心的东西设计芯片。
更少的芯片意味着可以把主板做得更小,这也意味着更少的能耗或更好的性能。这一点比以往任何时候都更重要,因为苹果公司实际上已经达到了笔记本电脑的电池容量极限。他们声称苹果笔记本电脑有 100 瓦时的电池,并附有一个免责声明。
你可能会问,100 瓦时的电池有什么问题,比如免责声明中说它实际上可能会少 0.2 瓦时?
很多运输途径 (和随身行李) 的规定都是以 100 瓦时作为上限,通常是“小于 100 瓦时”。苹果公司明确表示,他们的笔记本电脑小于 100 瓦时——即使在广告中宣称等于 100 瓦时。USPS、UPS、TSA 都有关于 100 瓦时电池的说法。你可以运输超过 100 瓦时的电池,但必须将其申报为危险材料。
因此,如果苹果公司希望以更低的费用通过快递发货,或者让人们更方便地携带笔记本电脑旅行,他们就不能在笔记本电脑上安装更多的电池。所以,延长电脑运行时间的唯一方法就是减少功耗。做同样的工作,苹果的 ARM 芯片肯定会比英特尔芯片耗电量更少。或者从传统上看,苹果可能会使用定制芯片,提供一款更小、更轻、电池寿命相同的笔记本电脑。
无论如何,这一大胆举措都将让苹果公司与业内其他公司区别开来,其他公司将在很长一段时间内受制于英特尔。微软在 ARM 方面的勃勃雄心几乎没有实现,而在 Linux 系统方面,除了 Chromebook 之外,其他的销量并不大。
苹果公司还会因为有能力将笔记本电脑上的“东西”放入到 iOS 设备中而获益良多。想想机器学习加速器、神经网络引擎、语音识别硬件——iPhone 和 MacBook Pro 之间的差距应该会明显缩小。我们甚至可能会看到内置蜂窝网络调制解调器的笔记本电脑的回归!
关于苹果转向 ARM,有几个关键问题。首先,也是最重要的一点:目前的 Mac 是基于 x86 的——那么,现有的软件该怎么办?切换到 ARM 意味着 x86 软件如果不经过转换就无法运行。事实证明,苹果在这方面有着丰富的经验。他们让 x86 二进制文件能够在 PowerPC 上运行,并使 PowerPC 二进制文件也几乎能够在 x86 上运行。现在他们有 Rosetta 2,用来提供集成的模拟环境。
做好模拟是很难的,特别是如果你还想要速度的话。在 JIT(Just In Time)领域有很多成果,比如 JavaScript,但对于苹果的模拟器,我倒是希望不会经常用到 JIT 引擎。真正的性能将来自二进制转换——将 x86 二进制文件视为源代码,然后转换为 ARM 二进制文件。你可以知道什么时候需要 x86 的一些奇怪特性 (比如每条指令都需要更新标志寄存器),以及什么时候可以忽略它们。人们还可以做一些工作来找出 ARM 的内存模型何时会导致问题,并加入屏障。这样做并不容易,但苹果以前肯定做过这样的事情,而且听起来 Rosetta 2 将延续这一趋势。
不过,更有趣的是 (我认为苹果可能会做到这一点) 库调用将会是“原生”的。如果你重新编译一个程序,你会知道什么时候代码会调用苹果的库函数。他们还可以更有创造性一点,让模拟软件从模拟应用程序代码跳到原生库代码。这样将获得很多性能回报,因为苹果的库所做的事情 (很多) 都具备原生的性能!
下一个问题 (至少对一部分用户而言) 是:“那么我的虚拟机会怎样?”
ARM 支持虚拟化,如果你想运行 Linux 虚拟机,那就运行 ARM Linux 虚拟机吧!
但如果你需要运行 x86 应用程序 (比如 Windows 10) 呢?这个就有意思了。VirtualPC 几年前就可以在 PowerPC 硬件上运行 x86 Windows。我只是不知道你能从 ARM 模拟系统中获得怎样的性能。通常,事情的发展方向是相反的:在快速的 x86 机器上模拟慢速的 ARM 系统,虽然性能不是太好,但已经足够了。那么反过来呢?没有人真正尝试过,因为我们从来没有拥有过真正快速的 ARM 芯片。当然,如果苹果的芯片比类似的英特尔芯片快 20-30%,那么你可以花一些时间去模拟看看,也许性能能赶上,甚至会领先。
如果你想运行一些奇怪的 x86 应用程序 (比如 Mikrotik Winbox),我相信一定会有足够好的解决方案。也许微软会因为这个而激起他们修复 ARM 版本 Windows 和模拟器的意愿。
但是 x86 游戏呢?或许不行,抱歉。
一些几乎没人关心的问题反而会让我感到兴奋。
aarch64 软件生态系统很快会得到修复!
我玩 ARM 桌面已经有一段时间了——Raspberry Pi 3、Raspberry Pi B+、Raspberry Pi 4,还有 Jetson Nano。人们对 Raspberry Pi 、基于 ARM 的 ChromeBook 以及类似设备的兴趣和使用激增,所以不仅可以忍受 32 位的 ARM,还将它们融入了舒适的日常生活。
那么 64 位的 ARM 呢?在构建软件时仍然会随机发生故障。显然,在这方面几乎没有什么发展和改进。到最后,像 Signal 这样的软件不会在 64 位 ARM 上构建,因为 Node 中的一些古老的依赖项不知道 aarch64 是何物。
随着苹果进入高端 64 位 ARM 领域,我希望这一切都可以很快得到修复!这对于轻 ARM 系统来说是个好消息,即使你个人没有 MacBook。
这对英特尔来说意味着什么?
这在一定程度上取决于苹果公司做得有多好,以及英特尔多久能够重回正轨。如果英特尔能够快速迭代,推出 10 纳米以下的制程,并正确修复其底层微架构,应该还有机会。苹果的团队是优秀的,英特尔的团队……嗯,至少过去是优秀的,他们当然都有资源投入其中。当摩尔定律走到尽头,创造性将变得尤为重要。
或许会出现像手机行业那样的结局。Anandtech 的 iPhone 11 评测对最新的旗舰手机进行了 Web 性能基准测试。从顶端开始,是苹果手机、上一代苹果手机、前两代苹果手机,然后是其他手机。而且,他们确实提到了 iPhone 11 具备了桌面级芯片的基准性能。
笔记本电脑和台式机市场会像手机市场那样吗?可能不会,但可能性还是有的,这取决于苹果的芯片设计师们在期待什么。
当苹果放弃了英特尔,数据中心发现 ARM 更便宜、性价比更高,摆在英特尔面前的将是一座难以攀爬的高山——而他们可能也没有回头路。
领取专属 10元无门槛券
私享最新 技术干货