不久之前,在苹果的一幢大楼里,一群工程师聚集到了一起。
他们掏出了旧版MacBook Air,将笔记本的内核连接到自己的原型板上。
此次「会晤」的目的非常明确:
造出第一台自己定制设计、基于ARM芯片,且能运行MacOS的苹果电脑。
而就在本周,苹果终于迈出了这一大步——第一批在苹果M1芯片上运行的Mac诞生。
这也标志着苹果开始脱离英特尔CPU的「产品转型」。
但一系列问题也随之而来:
为什么要这么做?又是何时开始准备的?软件兼容怎么办?Windows方面又如何处理?
外媒ArsTechnica,最近与苹果软件工程高级副总裁Craig Federighi、全球营销高级副总裁Greg Joswiak、硬件技术高级副总裁Johny Srouji的进行了一次访谈。
△
从左至右:Greg Joswiak、Craig Federighi、Johny Srouji
而关于苹果M1芯片背后的故事和与之更多的细节,也就此浮出了水面。
为什么要造芯片?又为什么是现在?
2006年时候,苹果选择开始使用英特尔x86架构,因为在此之前所采用的PowerPC似乎已经走到了尽头。
在此后最初的几年时间里,这一选择对于苹果来说是一种福音:英特尔的芯片实现了Mac与Windows及其他平台的互操作,这也让Mac变得更加灵活。
除了苹果台式机外,像笔记本电脑以及手机等产品,也随之受益。
在很长一段时间里,英特尔的表现可以说是一流的。
但最近几年,英特尔CPU的发展却不是那么乐观,尤其是在性能提高和一致性方面。
不仅是厂商,用户也对此有所发觉,还戏称道「挤牙膏」。
或许你会认为,这是苹果做出如此选择背后的驱动力。
「但这并不是最根本的原因」,苹果三位高管的回答却是这样的。
Joswiak对此解释道:
这是关于我们能做什么,不是关于「别人能做或不能做什么」的问题,对吗?
每家公司都有自己的计划:软件公司希望硬件公司这样做,反过来硬件公司又希望软件公司那样做,他们之间是存在竞争的。
而苹果的位置比较特殊,我们设计芯片,不是作为商家、供应商或者解决方案,而是为了让软件、系统和产品紧密结合。
这就是我们所需要的。
对于这个问题,Federighi给出了一个非常「苹果式」的回答:
Mac是苹果的灵魂,是它把我们带入了计算机领域。
Mac仍然是我们在工作中使用的一种工具,将我们所学到的一切,应用到核心系统中,显然是一个长期的抱负,也是一种实现梦想的方式。
Joswiak还回忆道,「刚开始知道这个决定的人很少,但他们知道苹果要走这条路开始,便一直对此面带微笑」。
设计苹果M1芯片
苹果要造的芯片,不仅是一种能够吸取多年来,为iPhone、iPad等其他产品设计的移动芯片所累积的经验的芯片,还能满足笔记本电脑或台式电脑不断扩大的需求。
而当苹果今年宣布要打造基于苹果芯片的Mac时,不少旁观者都在猜测,这个芯片很可能类似于A14。
但事实并非如此,Federighi表示:
如果你把M1和A14联系起来,它本质上是一个「超集」。并且Mac上的芯片与之有很多不同之处。
苹果对Mac应用工作负载进行了大量分析:
运行典型Mac工作负载所需的图形/GPU能力。
所需的纹理格式。
对不同类型GPU计算的支持。
核心数量、驱动Mac尺寸显示器的能力、对虚拟化和Thunderbolt的支持。
……
这些都是Mac所需要的,但相对于iPhone编译的应用程序,这些功能都是「超集」。
Srouji 进一步阐述道:
我们已经建立了许许多多的IP,它们成为M1芯片的基础。
我们开发这些伟大的技术已经超过了10年,然后几年前,我们便说「现在是时候使用我们所谓的可扩展架构,是时候为 Mac 开发一个定制的芯片了」。
因为我们有这些伟大的IP的基础,而且架构是可扩展的UMA。
这是一个完全不同的自定义芯片。
这里提到的UMA,即统一存储体系结构 (Unified memory architecture),是苹果此次成功的关键。
UMA本质上意味着所有的组件,包括中央处理器(CPU)、图形处理器(GPU)、神经处理器(NPU)、图像信号处理器(ISP)等等。
它们共享一个速度极快的内存池,并且位置非常相近,这与常见的台式机模式是相反的。
当用户运行要求比较苛刻的应用时,传统的pipeline 可能会损失大量的时间和效率来移动或复制数据,以便这些不同的处理器都能够访问到它们。
Federighi认为,苹果在M1上的成功,部分原因是在硬件和软件层面,拒绝了这种低效的模式:
我们不仅获得了GPU原始性能的巨大优势,而且同样重要的是,在统一的内存架构下,我们不用不断地来回移动数据,也不用改变会降低数据速度的格式。我们在性能上有了很大的提高。
而且这并不是苹果M1唯一的优化点。
近几年来,苹果的 Metal graphics API 采用了「基于平铺的延迟渲染」 ,M1的 GPU 就是为了充分利用这一点而设计的。
Federighi解释道:
老式的GPU基本上是同时在整个框架上操作,而我们则是在tile上操作,可以将tile移动到极快的片上内存中,然后在tile上与所有不同的执行单元一起执行一个巨大的操作序列。
这是一种令人难以置信的效率,而以往离散的GPU是做不到的。
Windows怎么办?
应用新的架构同时,在软件层面也迎来一种新的转型。
Mac 电脑现在将在本地运行新类型的软件,并停止本地运行其他类型,包括现有的所有 Mac 软件系列。
除此之外,苹果在架构上的转变也为iPhone和iPad制作的软件,打开了一道「闸门」。
这是第一次,适用于移动端平台的应用程序可以在Mac上运行。
但对于这样的一个「过度」,用户体验这块必须要拿捏得住。
对此,Federighi表示「大约90%的应用程序运行良好」:
一个应用程序无法正常工作的原因有很多。它可能使用的技术在 Mac 上并不适用或不合理。
所以我们对现有的应用做一定数量的自动测试,看看它们是否会崩溃等等。如果他们有这些问题,我们会从商店中自动自动将它们筛选出来。
随着时间的推移,我们很可能会看到一些开发者,为了让他们的应用在Mac上能良好运行而付出努力。
对于苹果公司来说,目前还处于早期,但在几年内,市场上将会有数百万台配备M1或M1系列的Mac。
时间将证明这一进程的发展会有多快。
接下来的一个问题也比较关键:What about Windows?
尽管M1的运行现有的 Mac、 iPhone 和 iPad 软件,但是新的架构不能立即运行除了 macOS 之外的 x86操作系统的应用程序。
对此,Federighi指出,M1 Mac 确实使用了支持 Parallels 或 VMWare 等产品的虚拟化框架,但他承认,这些产品通常也会虚拟化其他 ARM 操作系统。
与此同时,Federighi还表示,云端的Windows是一种可能的解决方案,并提到了CrossOver:
它能够在这些系统上一种类似WINE的仿真层下,运行32位和64位的x86 Windows二进制文件。
但是 CrossOver 的模拟方法,并不像我们在英特尔 mac 上使用 Parallels 或 VMWare 等虚拟化软件时那样一致,所以可能还有很长的路要走。
至于在Mac上运行Windows系统,Federighi说到:
我们有核心技术来运行他们的ARM版Windows,而后者当然支持x86应用程序。
但这是微软必须做出的决定,授权用户在这些Mac上运行这项技术。但Mac电脑确实很有能力做到这一点。
「很艰难,但却是值得的」
最后,Srouji 回顾整个历程时说到:
我们一直对这个项目和整个事情充满热情。非常艰难,但却是值得的。
我们喜欢Mac,我们热爱计算机。
我认为我们正在创造历史,这就是我们工程师们的看法。
类似的,Federighi也发表了他的看法:
我们付出了大量的汗水和心血,但我想说,在某种程度上,我们知道如何做到这一点。我们知道我们要面对的是什么。
Joswiak补充道:
我们以前也这样做过(从PowerPC 向英特尔的过渡)。
但这一次,这一切都是在「家」里完成的——这让苹果获得了一种不同的胜利。