道客优

1234
一文看懂苹果 Rosetta 2 技术原理:这个 “翻译”有点本事
2020-12-26 IT之家 阅读:541

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  这就是 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 翻译的。

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

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

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

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

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

  基于这样的机制,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 上正常使用,无需 “翻译”。

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

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

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

道客优(www.daokeyou.top)提醒:本网站转载【一文看懂苹果 Rosetta 2 技术原理:这个 “翻译”有点本事】文章仅为流传信息,交流学习之目的,其版权均归原作者所有;凡呈此道客优的信息,仅供参考,本网站将尽力确保转载信息的完整性,如原作者对道客优转载文章有疑问,请及时联系道客优,道客优将积极维护著作权人的合法权益。
推荐阅读: