登陆注册
437201

一文看懂苹果 Rosetta 2 技术原理:这个 “翻译”有点本事

IT之家2020-12-26 08:38:011

苹果在上个月推出了搭载 M1 自研芯片的 MacBook Air、Mac mini 以及 13 英寸 MacBook Pro。其中,苹果 M1 芯片与此前 Mac 采用的芯片最大不同是基于 ARM 架构,而不是过去英特尔芯片的 x86 架构。

{image=1}

由于 M1 芯片底层架构和过去不同,由此带来的应用生态兼容性问题是首先需要解决的,为此苹果也开启了为期两年的 Mac 过渡计划。具体来说,苹果借助的是 macOS 11 Big Sur 系统以及其内置的 Universal 2、Rosetta 2 和 Virtualizaion 三种技术来解决问题。

{image=2}

不过话虽如此,可能还是会有小伙伴会比较犹豫,这些措施真的可以解决 M1 芯片 Mac 的软件兼容性问题吗?特别是原来在 x86 架构上的应用,开发者还没有及时做适配,能在 Mac 上很好地运行吗?

对于这个问题,其实苹果已经给出了专门的解决方案,就是 Rosetta 2。可是谈到 Rosetta 2,很多小伙伴并不是很了解,它需要怎么用,又是如何让 M1 芯片的 Mac 运行 x86 平台应用的,这里IT之家不妨为大家解释一下。

{image=3}

说到 Rosetta 2 的运行原理,深入到技术层面大家可能很难理解,因此小编主要介绍一些基础的底层逻辑。

首先要从 x86 架构和 ARM 架构的不同说起。我们所说的 x86 架构和 ARM 架构,都是指处理芯片的指令集。

我们知道,芯片是负责运算的,但是它需要在什么时候做什么运算,芯片不能自己决定,得听系统的指令,描述 CPU 能做什么运算的一系列指令集合,就是指令集。

打个比方,我们把智能设备完成一次功能操作比作建造一个房子的项目,这个过程中,CPU 相当于工匠,他负责盖房子,但是要盖成什么样的房子,他不知道,得听项目经理的。

项目经理相当于系统,他告诉工匠需要把房子盖成什么样,传达的指令就相当于指令集。

{image=4}

说到指令集,主要有两种:x86 和 ARM。x86 是英特尔编写的,属于复杂指令集 (CISC)的代表,而 ARM 是英国 Acorn 有限公司设计的,是精简指令集(RISC)的代表。

复杂指令集和精简指令集的差别在哪里?我们还是用上面的例子来说明。

项目经理要告诉工匠需要盖什么样的房子,他们怎么传达指令呢?为了更高效地和工匠沟通,他们彼此间通常会约定一些只有他们听得懂 “行话”组成 “指令库”。

复杂指令集这边的项目经理,我们叫他 “小复”,他和工匠沟通的 “行话”,包括具体每块砖砌在哪里这样简单直接的指令,也包含 “砌一个围墙”、“搭一个柱子”这样复杂的指令。

{image=5}

而精简指令集这边的项目经理,我们叫他 “小精”,他就不一样了,可能他们这边的工匠比较 “笨”,听不懂复杂的话,所以它的指令都是手把手告诉工匠 “这块砖砌在哪里”。

{image=6}

比如要建造一座别墅,“小复”会指手画脚地对工匠说:“你,在这打个壁橱,在那里做个玻璃门,再在那修一个餐台……”

而 “小精”画风完全不同,他是一块砖一块砖地告诉工匠该砌在哪里,怎么砌,最后也能把别墅建好。

两种方式各有优缺点:“小复”的建筑团队处理速度快,能力更强,但是组织比较臃肿复杂,很多指令平时很少用到,比如盖十个房子才能用到一次 “砌围墙”这样的指令。

而 “小精”的团队更精简高效,容易组织,缺点是处理能力没有 “小复”团队强,但这个可以通过调用更多的工匠来弥补。

而现在苹果的问题是,“小复”这个团队原来的 “工匠 “被调走了,转岗过来的是 “小精”手里的 “工匠”,而 “小复”操着一口复杂的 “行话”,新来的工匠听不懂。

{image=7}

怎么办呢?这就得在 “小复”和 “工匠”之间安排一个翻译,让工匠们能听懂 “小复”说的话。

这个 “翻译”的角色叫 “小 R”,也就是苹果的 “Rosetta 2”。

这个 “小 R”怎么翻译呢?

当 “小复”对工匠们说 “在这砌个围墙”时,工匠们不知道他说了些啥。“小 R”就帮工匠们把这句话分析、拆解,然后还是像 “小精”那样手把手告诉工匠每一块砖应该砌在什么地方。

{image=8}

这就是 Rosetta 2 的主要任务。有了它的帮助,以前能在 Intel 芯片 Mac 上面用的 App 在搭载 M1 芯片的 Mac 上面也就都能用了。

以IT之家手上搭载 M1 芯片的 13 英寸 MacBook Pro 为例,平时在使用的时候,基本上不会和 Rosetta 2 产生交互。

Rosetta 2 是内置在 macOS 11 Big Sur 系统里的,在幕后工作,只有当你第一次下载一款 x86 应用,第一次打开时,才会提示你安装 Rosetta 2。

换句话说,Rosetta 2 的存在完全不会对你过去一直以来使用 Mac 的习惯造成影响,它几乎是无感的,悄悄做着翻译工作。

想要知道你使用的 App 到底是原生在 Mac 上运行的,还是经过 Rosetta 2“翻译”之后的,只要在 “应用程序”文件夹中找到这个应用的图标,右键打开菜单栏里的 “显示简介”,如果应用种类后面有一个 “Intel”,说明这个应用就是 x86 版本经过 Rosetta 2 翻译的。

{image=9}

以 x86 平台的IT之家为例,在 M1 芯片的 MacBook Pro 运行非常流畅,看新闻、发评论等各项功能也都正常,体验和在原来 Intel 芯片的 MacBook 上几乎没有差别。

像小编工作时用的 x86 版《钉钉》,也可以正常流畅地运行,运行速度一点也不必原来慢。

还有 Adobe 的全家桶软件,目前在经过更新后,也可以在 M1 芯片的 Mac 上正常流畅运行。

讲到这里,你可能会好奇,毕竟中间隔了 Rosetta 2 这个翻译,x86 应用是如何能做到一边被 “翻译”,一边保持和原来差不多的运行速度的?

这主要是因为 Rosetta 2 很聪明,他并不是等到应用开启使用时,才一条指令一条指令地去翻译,而是在应用安装时就会对应用进行翻译,在用户使用应用前就给到一个针对 ARM 平台优化的版本。对于那些无法提前翻译的指令,才会在使用时候进行即时的翻译。

{image=10}

基于这样的机制,Rosetta 2 能够帮助 x86 架构的应用在 M1 芯片的 Mac 上保持流畅快速的响应,从而获得很好的使用体验。

当然,Rosetta 2 做翻译的方案毕竟只是权宜之计,不会一直存在,只是在开发者们将自己的应用全面转到 M1 芯片原生状态之前扮演过渡的作用。

苹果预计这个过渡期大约是两年。其实目前已经有不少开发者针对 M1 芯片平台适配了 App,少了 “翻译”这个中间层,体验自然会更上一层楼。

根据IT之家的了解,目前《有道词典》,《剪映》,《QQ 邮箱》,《WPS》等都有了针对 M1 芯片的原生应用。不久前(12 月 16 日),微软 Microsoft 365 App 也推出了可在 M1 芯片的 Mac 上原生运行版本,这说明微软核心 Office 应用,包括 Office、Word、Excel、PowerPoint 和 OneNote 等都能够在 M1 Mac 上正常使用,无需 “翻译”。

{image=11}

当然,由于 M1 芯片和 iPhone 与 iPad 的 A 系列芯片都是 ARM 架构,因此 iOS 和 iPaOS 上的很多应用也可以在搭载 M1 芯片的 Mac 上运行,并且在最新版的 macOS 上,现为 iPhone 和 iPad 平台的应用还可以通过新的窗口选项在横向和纵向方向之间切换,或者是全屏显示。

从这个角度来看,Mac 向 M1 芯片平台的这次大迁移可谓意义重大,一方面,Mac 平台现有的应用资源可以留存,另一方面,还接入了 iPhone、iPad 平台海量丰富的应用,要知道,App Store 是 iPhone 的护城河,它背后是全球最大最稳固的应用生态系统,这将无限丰富 Mac 的应用生态,获得其他 PC 品牌无法比拟的应用资源。

更重要的是,当迁移顺利完成,苹果也将完成软硬件生态的统一,由此带来的联动效应更不可想象。总之,我们不妨期待那一天的到来。

0001
评论列表
共(0)条
热点
关注
推荐