为什么 ARM 版 Mac 运行效率很高?

ARM和英特尔版本的Mac本质不同;运行效率高只是表象 , 实质原因是多芯片各司其职 。
本文中 , 我将以从ARM与x86芯片在Mac中使用方式的区别开始 , 探讨ARM版Mac应用的运作方式 。 在开始之前 , 先明确几个事实:
至今为止Apple并未展示任何ARM版Mac芯片ARM版Mac会采用自研GPUiOS应用不可运行在任何英特尔芯片的Mac上若你对这几点有疑惑 , 可以参考我之前写的文字:「ARM , AMD , 英特尔」硬件科普及我见的未来 , AppleA12Z大概与哪款桌面级处理器及显卡性能相当?
我们先从现有所有型号的Mac电脑说起 。 无论是产品线里最小号的MacMini , 还是性能最强的MacPro , 基本都具备如下芯片 。
一颗英特尔的多核心处理器+一颗性能比较强的显卡(英特尔的IRIS , AMD的Navi , 或者早期英伟达的显卡)+Apple的T2芯片 。 其中CPU负责逻辑运算 , GPU具备超多核心并行处理图形内容 , T2负责安全和存储管理 。 在这套逻辑中 , CPU和GPU分别具备自己的存储区域 , 互不相干 。
为什么 ARM 版 Mac 运行效率很高?
文章图片
以常见的视频渲染工作流为例:当你往时间轴上加复杂的特效时 , CPU会用掉大部分算力来进行特效运算;当视频加码或解码时 , 则需要牺牲掉CPU的一部分算力来软解 , 或使用部分CPU上搭载的额外硬件来进行硬解码;当你要将这些特效渲染到一个完整视频以便导出时 , GPU便利用自身多核心并行运算的优势来负责渲染工作 。
在操作系统运作时 , T2上的安全模块负责处理用户身份的验证 , AppleWatch手表解锁之类的安全事务 。 它的运作机理是自己根据一个独特的只读密码来生成可用的验证信息 , 经过安全处理后来判断其它设备是否使用同一个账户登录 。 当然T2还负责一些别的事情 , 比如硬盘加密和APFS系统存储区块只读处理 , 防止恶意软件修改系统代码 。
为什么 ARM 版 Mac 运行效率很高?
文章图片
CPU , GPU和T2这三个芯片太过分散 , 且架构不同 , 直接后果是互相之间能交流的信息有限 。 那有没有更好的解决方案 , 让它们能协同起来做事 , 被统一调度 , 在同一时间内能一起处理共有信息?答案是有的 , 这个方案叫做SoC片上系统 , 也就是手机芯片用了十来年的技术 。
它的核心思想便是整合 , 即把所有东西都放在一起 。 这样芯片只需要用最好的工艺生产一遍 , 而不是更具不同厂商的进度将3个不同的东西用不同的工艺生产好然后拼在一起 。 比如近年来英特尔的CPU工艺就在拖后腿 , 性能无法提升的情况下发热还很大 。 倘若CPU , GPU , T2集成在一起使用最新工艺 , 既能移除没必要的生产成本 , 还能大幅提高效能 , 一举两得 。
为什么 ARM 版 Mac 运行效率很高?
文章图片
于是乎Apple提出了自己ARM版Mac新品的结构图 , 也就是上图 。 这次芯片换代 , Apple不仅处理掉了第三方的CPU , 且一并处理掉了第三方的GPU 。 仔细观察 , 你会发现这个片上系统除了CPU与GPU之外 , 还包含了许多其它的重要模块 。 首先T2不需要在单独放一颗芯片 , 将安全模块整合进来即可 。 接着将高性能的显卡整合进来 , 高性能的统一访问存储整合进来 , 满足未来需求的神经网络运算模块整合进来 。 加密加速模块 , 视频独立硬解模块 , 内核保护模块 , 能耗管理模块 , HDR显示支持模块 , 视频播放模块全给它放进来 。 这样的规划是之前的因特尔架构下不可能做到的 , 即不方便加新的硬件 , 也不可能做硬件间整合 。
为什么 ARM 版 Mac 运行效率很高?
文章图片
那么很多人好奇的为什么FCPX可以在A12Z上跑三路4KProRes视频 , 正是因为这里负责视频解码的不是CPU , 也不是GPU , 而是A系列芯片里独立的视频编码硬件模块 。 这个模块和Apple放在自己MacPro上的那个用于ProResRAW加速的Afterburner卡设计思路类似 。
说完了视频解码 , 你也许会问这个A系列芯片里的CPU和传统的x86CPU有什么区别?在传统的多核心处理器中 , 各个处理器的能力是非常接近的 。 比如英特尔的四核处理器 , 可以类比成四个能力相当的克隆人 。
而在ARM芯片中 , 设计则有很大区别 , ARM架构中的CPU分为性能核心和低功耗核心 。 这里注重能耗指的并不是为了省电而牺牲性能 , 而是指需要多少性能付出多少劳动 , 不要杀鸡用牛刀(空费电) 。
为什么 ARM 版 Mac 运行效率很高?
文章图片
为了解决这个按劳分配的难题 , Apple采用的是GCD的QOS逻辑 。 你可以把GCD理解成一个包工头 , 手下指挥着性能核心和低功耗核心 , 为其分派任务 。 QOS则是开发者定义的性能指标 , 比如开发者说这个东西是用户点击正在操作的内容 , 需要尽快给出结果 , 便会将QOS设置为UI级 。 此时GCD分派任务时看到开发者要求的QOS是UI级 , 便会将任务分配到高性能核心上尽快完成 。
反之若开发者不急着要 , 也可以把QOS设置为后台级 。 这时候GCD分工时就会看到开发者不急着要这里面的结果 , 因此若需要省电时则这部分内容可以放在低功耗核心上运算 。 若有其它更紧要的任务则可以把低优先级的任务先缓一缓 , 紧着最着急的来 。
为什么 ARM 版 Mac 运行效率很高?
文章图片
说完了ARM在CPU运算上的区别 , 我们来聊聊内容显示 。 最近新闻中一个常见的误解便是把Rosetta翻译后的图像效能也当作被折损的效能 , 其实不然 。 罗赛塔翻译器本质上来说是个指令集翻译器 , 在把x86指令集的内容翻译到精简指令集时确实有性能折损 , 但这个折损和图形显示没有一点关系 。
当计算机需要GPU来处理图形运算时 , 我们需要用一种特殊的语言来和显卡沟通 , 这个语言我们叫做图形框架 。 大家所熟知的图形框架可能有微软的DirectX , 开源的OpenGL和Apple自家的Metal框架都属其中 。 即便是被翻译后的应用 , 也会直接调用Metal指令对显卡做出访问 , 因此没有图形性能折损 。 Apple过去五年始终喊着让开发者尽快使用跨平台Metal框架 , 除平台统一性考量外 , 便也在为这次转型做准备 。
为什么 ARM 版 Mac 运行效率很高?
文章图片
处理器和显卡大家比较熟悉 , 接下来我们来看看大家不那么熟悉的机器学习与神经网络硬件模块 。 机器学习的理论基础是神经网络 , 科学界的大牛提出一系列神经网络模型 , 在大量数据(大数据)的基础下进行训练 , 得到的结果是一个可用的机器学习模型 。 这个过程中有两个点值得关注 。 第一个是神经网络训练的效率 , 第二个是得到模型之后放进新数据进行预测的效率 。 训练好的模型还可能根据用户需求进行强化学习 , 因此保证机器学习能力的芯片就变的至关重要 。
为什么 ARM 版 Mac 运行效率很高?
文章图片
在过去 , 这些训练大多是在处理器或显卡上完成的 。 一心不易二用 , 这些硬件终究不是做这件事的最佳载体 , 因此便有了专用模块 。 你也许会好奇 , 这些东西与我们有什么关系呢?事实上 , 机器学习和神经网络可能是接下来几年最重要的发展方向之一 。
当我们的手表在判断我们是否进入梦乡时 , 用的是机器学习运动感知训练的结果;当我们在iPad上用铅笔做出手写识别时 , 我们用的是机器学习视觉训练的结果;当我们做语音同声翻译时 , 我们用的是声学辨识训练的结果 。 如此种种 , 均需要片上系统上独立芯片的支持 。
为什么 ARM 版 Mac 运行效率很高?
文章图片
上文中我们说完了ARM的芯片核心 , 接下来我们将目光放在软件上 。 要了解其性能表现 , 我们需要对它们的运行方式做个区分 。 在ARM版的Mac上 , 软件有如下运作方式:
所有Apple自家应用 , 包括系统本身以ARM原生模式运行 , 无任何性能折损;所有iOS和iPadOS应用 , 以ARM原生模式运行 , 无任何性能折损;所有虚拟机应用 , 运行在BigSur提供的虚拟机环境下;所有Catalyst应用 , 需重新编译为Universal应用 , 无任何性能折损;
所有32位x86应用 , 已在三年前被Apple淘汰 , 无法运行;所有64位x86应用 , 若以应用商店分发 , 则下载的便是已翻译版本;所有64位x86应用 , 若在网络上下载安装 , 则在安装时翻译;所有64位x86应用 , 若以拖拽形式安装 , 则在首次运行时翻译 。
为什么 ARM 版 Mac 运行效率很高?
文章图片
WWDC展示的古墓丽影虽是翻译应用 , 但它的性能主要由GPU体现 。 翻译后游戏的渲染仍使用Metal指令 , 因此性能本没有折损 , 反馈到帧数上便是高帧数运行 。 而剪辑4K用的是A系列芯片中的视频硬解码模块 , 专长于处理ProRes视频 , 所以可以同时编辑多路视频 。
可能你会觉得有点反常识 , 但这次ARM的切换与英特尔挤牙膏太久并无直接关联 。 Mac这次的芯片变革需要撑得起未来十年 , 其最优解便是将专精芯片以最优工艺的整合在Soc中 。
【为什么 ARM 版 Mac 运行效率很高?】而本文中的一切分析 , 带来的表象便是:ARM版Mac的运行效率很高 。


    推荐阅读