一个平台能否成功地从一种处理器架构过渡到另一种处理器架构可以决定它能否生存。Apple 已经三次成功地为 Mac 进行了 CPU 转型。首先,从 Motorola 68k 到 Power PC。然后从PowerPC到Intel。最近从英特尔到Apple Silicon。这些转变不仅使 Mac 得以生存,而且得以蓬勃发展。
这篇文章着眼于苹果改变架构的原因和方式,并思考是什么让这些转变取得了成功。
我们还将深入了解苹果这些年来的变化。从 20 世纪 80 年代为尝试摆脱摩托罗拉 68k 推出的略显混乱的多个项目,到顺利转向 Apple Silicon。
随着高通和微软再次尝试让 Windows on Arm 取得成功,以及谷歌和其他公司开始致力于在 Android 上支持 RISC-V 架构,这是一个热门话题。在人工智能领域,许多公司正在尝试调整关键工具,以便它们在多种架构上运行。许多公司和数十亿美元的命运取决于这些项目的成功或失败。
因此,让我们看一下 Apple Macintosh 处理器过渡的故事,看看我们能学到什么。我们将从 Macintosh 的早期开始。
摩托罗拉68k 时代
Macintosh(当时的名称)的开发始于 1979 年,第一台 Macintosh 于 1984 年 1 月推出。最初使用的芯片使用 16/32 位 Motorola 68000 CPU。
在接下来的几年里,随着更先进的 68000 芯片的出现,新的型号被开发出来。Macintosh II 于 1987 年 3 月推出,配备 Motorola 68020,搭配 68881 浮点协处理器。紧随其后的是 1988 年 9 月推出的 Macintosh IIx 和 Motorola 68030。
早在 1986 年,苹果管理层就看到了新兴 RISC 处理器的性能优势。接下来是一系列项目,苹果管理层试图选择一种架构来取代摩托罗拉 68k 系列。
在之前的文章中,我们看到了Apple 如何首次启动一个项目来开发内部 RISC 处理器。这个名为 Scorpius 的项目规范非常雄心勃勃,具有多核支持和“单指令多数据”指令等功能。但是,尽管使用 Cray 超级计算机来帮助设计,Aquarius 团队仍无法交付可行的设计,该项目于 1989 年结束。
因此苹果继续使用摩托罗拉68k系列CPU。Macintosh Quadra 于 1991 年 10 月推出,使用 Motorola 68040 CPU。不过,摩托罗拉的升级之路并不完全简单。Quadra 在运行某些软件时出现问题,因为 68040 有单独的数据和指令缓存。这可能会导致某些较旧的 Macintosh 程序使用的自修改代码出现问题。
Jaguar和Cognac
与此同时,继续寻找 68k 系列处理器的 RISC 替代品。正如我们在之前的文章中所说,到 20 世纪 80 年代末,几乎每个半导体、大型机或小型计算机制造商都有自己的 RISC 设计。AMD Am29000、MIPS、SPARC、Intel 的 i860 和 ARM 处理器都在作为 Apple 68k 的替代品。
SPARC、MIPS 和 i860 很快就被拒绝了。AMD Am29000 已经在 Apple 显卡中使用,并且已经完成了一些初步工作来构建同时具有 Motorola 68030 和 AMD Am 29000 的系统。
此时,Apple 已经是英国剑桥 Advanced RISC Machines Limited 的共同所有者,并计划将 ARM 处理器整合到 Newton 手持设备中。
但最终,与摩托罗拉保持良好关系的政治压力意味着摩托罗拉的 88000 RISC 系列(也称为 88k)成为 68k 替代品的首选。
因此,“Jaguar”项目开始致力于将 Mac 迁移到 Motorola 88k。
一个关键问题是软件兼容性。默认情况下,配备 88k 处理器的新 Mac 无法运行现有的第三方 68k Mac 软件。
Jaguar 项目决定不需要向后兼容。于是,John McHenry 启动了另一个项目,代号为“Cognac”(RISC 先驱 John Hennessy 的姓氏也是该利口酒的流行品牌)。Cognac 计划使用 88k 开发基于 RISC 的 Mac,但向后兼容现有软件。
Apple 工程师 Gary Davidian 已经在为 Apple 考虑的各种 RISC 架构开发 68k 仿真器。选择 Motorola 88k 后,他专注于构建可在基于 88k 的系统上运行的完整模拟器。
当 Davidian 构建模拟器时,Cognac 硬件团队开发了基于 88k 的 Macintosh LC 版本,即“RISC LC”的 Macintosh RLC。
PowerPC的世纪交易
1991 年 10 月,故事发生了意想不到的转折,当时苹果公司和 IBM 宣布他们将开始在广泛的项目上进行合作。
Intel 处理器变得越来越强大,Intel 驱动的 PC 兼容机在台式 PC 市场上占据主导地位,Mirosoft 的 Windows 3.1 即将推出。所有这些因素都对 IBM 和苹果的市场地位构成了威胁。
因此,这两个竞争对手联手开发操作系统和其他项目。该交易被称为“DOTC”,意为“世纪交易”。作为此次合作的一部分,Apple 将在 Mac 中采用 IBM 即将推出的 PowerPC 处理器架构。
PowerPC 将基于 IBM RS/6000 工作站中使用的 RISC 架构。摩托罗拉还加入了苹果和 IBM,组成了后来被称为“AIM”的联盟。
英特尔插曲——《星际迷航》计划
到 1992 年,Apple 和 IBM 并不是唯一感受到 IBM PC 兼容机日益占据主导地位的威胁的公司,还有 Microsoft 和 Intel。
Novell 市场领先的 Netware PC 网络软件将受到计划推出的 Windows NT 的挑战。因此,当 Novell 与 Apple 接洽,希望将 Apple 的 Macintosh System 7.1 操作系统移植到 Intel 处理器上时,两家公司开始了另一次合作。
该项目代号为“Star Trek”,于 1992 年情人节开始。该项目的工程师很快就能够演示基于 Intel 486 的标准 PC 启动 Mac 操作系统并运行 Mac 的“Finder”文件浏览器。
但是,英特尔星际迷航项目于 1993 年被关闭,大多数工程人员转而从事 PowerPC 项目。
摩托罗拉 68k 至 Power
随着与 IBM 的新联盟,Cognac 团队不得不从 88k 切换到 PowerPC。该项目被重新命名为“Piltdown Man”的“PDM”,因为它将形成 68k 和 PowerPC Mac 之间的“缺失的环节”。“皮尔当人”是 20 世纪初的一次尝试(后来被证明是欺诈性的),试图提供猿类与人类之间联系的化石证据。
Jaguar项目也从88k转向PowerPC,并更名为Tesseract。PDM 和 Tesseract 现在都在构建相互竞争的 PowerPC 系统。
随着从 Motorola 88k 转向 PowerPC,Gary Davidian 将注意力转向将 88k 的 68k 模拟器转换为可在新的 PowerPC 架构上运行的模拟器。
模拟器的第一个版本通过依次检查每条 68k 指令来工作。然后它会执行一系列具有相同效果的 PowerPC 指令,实际上是 68k 指令的“解释器”。该仿真器有一些局限性:它无法转换 Motorola 浮点硬件指令或 Motorola CPU 的某些内存管理功能。
第一台基于 PowerPC 601 芯片的机器于 1992 年末被运送到 Piltdown Man 团队,几周后就启动了 PowerPC 版本的 Mac OS。Tesseract 于 1993 年 3 月被取消,PDM 成为唯一的 PowerPC 项目。1994 年 3 月,第一款基于 PowerPC 的 Mac 6100、7100 和 8100 系列在纽约发布。
Motorola 68k 到 PowerPC 仿真器随所有版本的 Mac OS Classic for PowerPC 一起提供。随着从 Mac OS Classic 过渡到 OS X,对仿真的支持才结束。
转型有多成功?该模拟器似乎运行良好,足以支持平稳过渡,但所使用的方法并不是最快的。后来的 Mac 附带的软件的更高版本通过使用动态重新编译来加速。在这种方法中,代码块在运行之前从 68k 转换为 PowerPC 指令,这是一种比原始“instruction by instruction”技术更快的方法。
事实上,商业提供商 Connectix 介入,为苹果原始模拟器提供更快的替代方案。MacWorld 评论总结了它是如何工作的:
Connectix Speed Doubler 是三个系统扩展的集合,旨在让您的 Mac 运行得更快。该系列的核心产品 Speed Emulator 仅适用于 Power Mac。该组件取代了 Apple 的 680X0 模拟器……运行效率更高。最初的 Power Mac 中的 Apple 模拟器的性能达到 IIci 至 Quadra 级别。Speed Emulator 通过类似于最新 Power Mac(例如 7500、8500 和 9500)上使用的模拟方案(称为动态重新编译)来提高性能。这种模拟技术将翻译后的 680X0 代码保留在 RAM 中,因此 Mac 可以一次又一次地使用该代码,而无需每次都进行翻译,从而提高了整体性能。最初的Apple模拟器每次使用时都会翻译代码,并且不会将其保存在RAM中。
PowerPC 到 Intel ,强大升级
从 68k 到 PowerPC 的转变被广泛认为是成功的。在 20 世纪 90 年代的大部分时间里,连续几代桌面 PowerPC CPU 的性能都可以与当代英特尔设计相媲美。
但20世纪90年代初期和中期对苹果来说是一个动荡的时期,危机接二连三,不合时宜地导致了史蒂夫·乔布斯的NeXT的收购。乔布斯的回归带来了微软的投资、iMac 的推出、Mac 操作系统向 OSX 的过渡、iPod 的成功以及财务稳定的回归。
然而,到了 2000 年代初期,乔布斯和苹果管理层面临着 PowerPC 系列的另一个问题。与它们的命名一致,这些芯片功能强大,但也消耗大量电量。笔记本电脑正在成为 Mac 系列中越来越重要的一部分,而 PowerPC 系列的低功耗阻碍了它们的发展。由于客户群较窄,IBM 在开发更节能的 PowerPC 处理器方面的投资无法跟上英特尔的步伐。
因此,在多年公开贬低英特尔 CPU 后,乔布斯在苹果公司的“2005 年全球开发者大会”上宣布,苹果公司将从 PowerPC 转向英特尔。此次发布是乔布斯的演讲大师班,英特尔首席执行官保罗·欧德宁 (Paul Otellini) 也客串亮相。
乔布斯在展示教皇的照片时开玩笑说,苹果公司在寻求将 PowerPC G5 CPU 装入笔记本电脑的过程中咨询了最高当局。现在,通过英特尔,他们可以将更强大的双核英特尔酷睿 2 CPU 放入新款 MacBook Pro 笔记本电脑中。
尽管苹果和英特尔之间的关系表面上很成功,但从一开始就存在一些困难。第一批 Intel Mac 是 32 位“Core”系统,这显然是由于 Intel 延迟交付 64 位“Core 2”处理器。这意味着 Apple 必须快速连续发布 32 位和 64 位版本的 OS X 操作系统。
从某种意义上说,Apple 几乎同时进行了三次架构转变:第一次是从 PowerPC 32 位到 PowerPC 64 位(仅适用于一台 Mac,即 PowerMac G5)。然后是英特尔 32 位。最后是英特尔 64 位。
在过渡期间,开发人员需要交付包含可在 PowerPC 和 Intel 上运行的代码的应用程序(可能有 PowerPC 32 位、PowerPC 64 位、Intel 32 位和 Intel 64 位代码的四个版本) )。包含这些不同版本的文件被称为“通用二进制文件”
Rosetta
再次强调,现有基于 PowerPC 的软件的向后兼容性至关重要。这一次,苹果公司给这款软件起了一个朗朗上口的名字,它可以让基于 PowerPC 的程序在新款英特尔 Mac 上运行。它被称为罗塞塔,以“罗塞塔石碑”命名,这是一块用埃及象形文字、通俗文字和古希腊语书写的石碑,帮助学者们破译了象形文字。
Mac 用户使用的大部分软件实际上是由 Apple 生产并与 OS X 操作系统捆绑在一起的。所有这些软件都被移植到英特尔并随第一批英特尔 Mac 一起提供。其中包括 Safari 网络浏览器、Apple 的 Mail 电子邮件客户端以及 QuickTime、iMovie、GarageBand、Logic 和 Final Cut 等多媒体应用程序。
第三方软件包必须等待其开发人员从 PowerPC 转换为 Intel。用户必须等待的最重要软件包括 Microsoft Office Suite 和 Photoshop 以及 Adobe 的其他专业工具。这些对于许多用户来说是关键工具,因此 Rosetta 的兼容性和性能对于许多用户来说至关重要。
Rosetta 实际上是苹果公司对其采用的“QuickTransit”技术的命名,该技术由初创公司 Transitive 授权。尽管 Transitive 的总部位于加利福尼亚州洛斯加托斯,但工程团队的总部却位于英国曼彻斯特。他们使用最初由曼彻斯特大学开发的技术,最初被称为“Dynamite”。
Dynamite,以及 QuickTransit 和 Rosetta,就像后来的 68k 到 PowerPC 仿真器一样,都是动态重新编译系统。也就是说,它们在需要原始架构中的程序时执行,获取一小段代码并在需要时进行翻译。这些系统也相对复杂,需要翻译成中间语言,最后翻译成目标架构。
这种方法的好处是启动速度快。当代码块的执行频率超过给定阈值时,可以通过更多优化产生更好的性能。
Transitive 的其他产品允许从 MIPS 转换为 Itanium(由 Silicon Graphics 使用)以及从 SPARC 转换为 x86 和 Itanium。Transitive 于 2008 年被 IBM 收购。IBM 将使用该技术向与 Apple 相反的方向进行转换,从 x86 到 PowerPC。
Rosetta有多成功?我认为给它一个B+是合理的。它与某些 G5 PowerPC 指令不兼容。此外,某些类别的软件无法翻译,包括一些为 Mac OS 9 构建的应用程序、屏幕保护程序和内核扩展。
尽管早期的 Intel Mac 比其 PowerPC 前辈更快,但与在 PowerPC Mac 上运行相比,在 Rosetta 下运行程序会导致某些程序的性能较差。对于游戏或 PhotoShop 等计算密集型应用程序尤其如此。
然而,Rosetta确实“足够好”。Apple 于 2008 年成功完成向 Intel 的过渡,Rosetta 于 2010 年从 Mac OS X Lion 中删除。
从英特尔到苹果芯片
最近的 Mac 转型也与性能有关,有两个方面。
2020 年,蒂姆·库克在苹果全球开发者大会上宣布,Mac 系列将过渡到“Apple Silicon”。Apple Silicon 将是由 Apple 自己的内部芯片设计团队设计的一系列“片上系统”(SoC)。CPU 将使用 Arm 指令集架构,但完全由 Apple 团队根据 Arm“架构”许可自行设计
设计团队已经通过为 iPhone 和 iPad 设计几代 SoC 证明了他们的能力。
第一批基于 M1 SoC 的 Apple Silicon Mac、MacBook Air、Mac Mini 和 MacBook Pro 将于 1990 年 11 月问世。M1 之后是更高性能的 M1 Pro、M1 Ultra 和 M1 Max,然后是M2 和 M2 Pro。到 2023 年 6 月,随着 Mac Pro 中 M2 Ultra SoC 的发布,过渡已经完成。
为什么又是关于“Power”的变化?首先,是关于功耗。首款基于 M1 的 Mac 笔记本电脑的功耗和电池寿命明显优于英特尔前代产品。部分原因在于采用了更先进的台积电制造工艺。到 2010 年代末,英特尔在尝试转向 10 纳米制造工艺时遇到了挫折。首款 Apple Silicon Mac 中的 M1 使用 TSMC 5 nm 制造工艺,其能效比当代英特尔设计显着提高。
该架构本身的某些方面也可以提高能效。M1 及后续产品采用了 Arm 的“big.LITTLE”方法,将更大、更强大的内核与更小、更高效的内核相结合。这在需要时提供了性能和功效。
其次,这是关于苹果对 Mac 平台的“Power”。通过控制处理器的开发,苹果扩展了他们的垂直整合,使他们能够在 SoC 中包含最适合他们所需的功能,而不是英特尔提供的功能。
在过渡期内,Apple 将再次要求开发人员以“Universal 2”格式提供与 x86-64 和 ARM64 指令集兼容的代码。
Rosetta 2
苹果再次确保基于 Apple Silicon 的 Mac 可以运行现有的 Mac Intel 软件,使用的系统品牌为“Rosetta 2”。
尽管 Rosetta 2 采用了与 PowerPC 到 Intel 过渡中使用的软件类似的命名方式,但所使用的方法却截然不同。
这次,系统通常使用从 x86-64 到 Arm 的“提前”转换。当程序首次启动时,整个 x86-64 程序会被翻译为 ARM 二进制文件,然后运行该翻译后的程序。每条 x86-64 指令都会转换为一条或多条 ARM64 指令。
翻译后的代码在某些方面得到了苹果硬件的帮助。
x86 和 Arm 都实现 IEEE-754 浮点标准。然而,这两种架构在处理 NaN(“非数字”)值和舍入的某些方面存在一些差异。在软件中精确复制这种行为可能会降低浮点性能。
ARMv8 的更高版本有一个扩展,允许架构模仿 x86-64 方法,但 M1 早于此。因此,Apple 在 M1 中加入了非标准浮点实现,以帮助复制 x86。
Apple Silicon 与 Arm 标准不同的另一个领域是标志的处理。标志是根据指令结果设置的位。x86 有两个不映射到标准 Arm 标志的标志;PF 代表“parity”,AF 代表“adjust”,它们都受到常见 x86 指令的影响,例如整数加法和寄存器比较。使用软件根据这些通用指令的结果设置这些标志将非常耗时。
M1 有一个非标准指令集扩展,可以帮助解决这个问题。它计算 x86 在执行加法、减法和比较等 ARM64 指令时将存储在 PF 和 AF 中的值。然后它将这些值存储在 M1 的“标志寄存器”之一的位 26 和 27 中。如果相应的 x86 代码需要读取 PF 或 AF 标志,则翻译后的代码将访问这些位。
如果“提前”翻译(例如使用“即时”编译的代码)不起作用,则 Rosetta 2 可以使用动态翻译,就像原始的 Rosetta 软件一样。
苹果为何如此成功?
我们在三个主要的 Mac 架构转变中都看到了非常不同的模拟方法。原始 Motorola 68k 到 PowerPC 的一次一条指令,PowerPC 到 Intel 的“动态”转换,以及 Intel 到 Apple Silicon 的“提前”转换。苹果已经从使用小型内部团队转变为再次将软件授权给内部团队。
有一些共同的主题帮助苹果度过了所有的转变:
性能:在每种情况下,新架构提供的性能都明显优于被替换架构的性能。这使得翻译造成的任何性能损失都得以显着或完全减轻。
垂直整合:一些关键性能关键应用程序(例如 Safari 网络浏览器)是由 Apple 开发的,因此用户永远不需要使用模拟或翻译版本。
向后兼容性(或缺乏):Apple 没有维护向后兼容性的政策。该公司已经满足于取消对旧应用程序的支持。例如,这使得需要支持的遗留应用程序的寿命和数量比 Windows 的情况要小。
开发人员的期望:与此一致,Apple 希望开发人员发布新版本的软件,并提供可在新旧架构上运行的可执行文件。
关于英特尔向 Apple Silicon 过渡的一些要点:
架构很重要:与 x86 相比,ARM64 架构的本质使转换变得更容易。例如,ARM64 比 x86-64 具有更多的整数寄存器,使其能够将 x86-64 寄存器的翻译状态完全保留在 ARM64 寄存器中。
架构灵活性:Apple 已经能够向标准 Arm 架构添加指令,以实现更高效的 x86 指令转换。对硬件堆栈的几乎完全控制使苹果比依赖 Arm 自己设计的公司更具优势。
苹果能够在处理器架构之间切换 Mac 的方式很难不让人印象深刻。这些切换对用户的干扰有限。反过来,这些转变使 Mac 能够生存并繁荣近四十年。
编辑:黄飞
-
处理器
+关注
关注
68文章
19259浏览量
229647 -
芯片
+关注
关注
455文章
50714浏览量
423113 -
cpu
+关注
关注
68文章
10854浏览量
211568 -
苹果
+关注
关注
61文章
24395浏览量
198538 -
intel
+关注
关注
19文章
3482浏览量
185911
原文标题:我们能苹果这颗芯片学到什么?
文章出处:【微信号:芯长征科技,微信公众号:芯长征科技】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论