0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

苹果换芯行动给开发者带来哪些问题?

我快闭嘴 来源:极客邦科技InfoQ 作者:极客邦科技InfoQ 2020-11-17 14:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

苹果的换芯行动

11 月 11 日凌晨,苹果“One more thing”发布会如期而至。发布会上,苹果宣布推出首款自研的 5nm M1 芯片,该款芯片将为其新一代基于 ARM 的 Mac 系列产品提供动力。苹果公司声称,该款 M1 芯片搭载了许多世界顶级工艺的产品,包括世界上最快的 CPU 内核、最快的 IGPU。

“苹果花了十几年的时间来创造和优化 Apple 芯片,因为芯片是 iPhone、iPad 和 Apple Watch 的核心。现在我们希望将其引入 Mac,因此 Mac 可以凭借令人难以置信的性能、自定义技术和行业领先的芯片来实现巨大的飞跃。”苹果官方如是说。

苹果公司认为,M1 是迄今为止性能最高的芯片,并且低功耗高效内核可提供与当前基于英特尔的双核 MacBook Air 相似的性能。当然,高性能内核要快得多。

M1 芯片推出以前,英特尔几乎垄断了苹果笔记本电脑的 CPU。2005 年,苹果从 PowerPC 芯片切换到了英特尔。这个过渡已经有 15 年了,过渡的成本来主要来自软件方面。开始时开发人员需要使用苹果提供的工具链来生成可以在 PPC 和 x86 Mac 上运行的通用二进制文件,并且并非所有苹果以前的 API 都可以过渡到 x86。

当年,苹果推出的工具链名叫 Rosetta,用于将 PowerPC 应用转换到 x86 上。Rosetta 能做到让大多数 PowerPC Mac OS X 应用程序在 x86 Mac 上运行,尽管性能有些损失(这并不是一件简单的事情)。最终,Rosetta 成为了苹果的创可贴,直到 2011 年 Mac OS X 10.7(Lion)推出时才被放弃。

现在,从英特尔切换到苹果 Silicon,苹果给出了三种解决方案:Universal 2 通用应用、Rosetta 2 工具链、原生 ARM 应用。

第一种解决方案是在苹果芯片版 Mac 上,使用“Universal 2”运行应用程序,针对 Adobe Photoshop、Microsoft Word 这样的系统软件。第二种解决方案是利用苹果提供的 Rosetta 2 将应用重新编译,让 x86 应用能运行在 ARM 架构上,主要针对不太涉及处理器特性的绝大部分轻量级应用。

从本质上讲,Rosetta 2 可能足以支持大多数主流生产力应用程序,但往往无法兼容那些需要与操作系统、硬件或图形硬件进行直接交互的软件。特别是,那些在关键任务需求中涉及虚拟化或高端图形、视频或科学类应用处理的用户,可能最好是等推出原生软件版本之后再考虑升级到基于 ARM 的苹果芯片版 Mac 平台。

换芯给开发者们带来的问题

很明显,这次换芯行动将给消费者们带来巨大助益,包括获得更长的电池续航并改善运行过热问题(2018 款 MacBook Pro 就是款强大的“暖宝宝”)。软件与硬件之间的紧密集成,也将进一步优化用户的使用体验。另外,产品价格也有可能随之下降。

苹果的芯片迁移决定,自然也激起了开发者们的担忧,特别是在开发者体验方面。苹果虽然表示提供了相应的解决方案,强调新的芯片将提高开发人员的生产力,但是换芯行动也同样会沉重打击高度依赖其产品及生态系统的专业开发者。

现有 Mac 应用运行速度可能减慢

如果将现有 Mac 应用借助 Rosetta 2 转换引擎,重新编译为“Universal 2”二进制形式,大部分专为英特尔处理器编写的 64 位 MacOS 应用程序,都能够直接运行在苹果芯片版 Mac 之上。

但苹果在开发者文档中颇为诙谐地提到:“转译过程需要时间,因此用户可能感觉转译后的应用在启动或运行时偶尔变慢。”

当然,只要涉及任何形式的仿真、虚拟化或者转译过程,应用程序的运行速度就必然要比原生版本稍慢一点。虽然还没有官方确认,但通过已经泄露的 Geekbench 5 基准测试,大家大概可以推断 Mac mini DTK 的运行速度会比在 iPad Pro(2020)机型上慢多少。

与运行原生代码的 iPad Pro(2020)机型相比,Mac mini DTK 在通过 Rosetta 2 以单核形式运行 Geekbench 5 基准测试时,速度降低了 26%;在多核形式下,速度要慢 38%。

值得一提的是,与这款 iPad Pro 相比,Mac mini DTK 的时钟频率也有所下降,而且运行的 beta 软件并未经过优化。但如果我们假定二者时钟频率相同且在最终硬件发布时完成了进一步软件优化,那么估计通过 Rosetta 运行软件时、相较于原生应用的速度劣势应该会在 20% 到 30% 之间。

可以肯定的是,基于 ARM 的苹果芯片 Mac 性能更强,甚至足以抵消引入 Rosetta 2 带来的速度劣势,最终实现与一两年前大部分英特尔芯片版 Mac 相同的性能水平。

但是,其他人怎么办?实际上,大多数在 Mac 上进行开发的用户并不是在构建 iOS 或者 MacOS 应用。

根据 StackOverflow 2020 开发者调查,超过四分之一的开发者使用 MacOS,但只有 6% 的用户使用 Swift 语言。作为目前苹果唯一官方指定的苹果生态应用构建语言,Swift 孱弱的市场占有率足以说明大多数 Mac 用户其实并不是在为苹果开发产品。

换言之,相当一部分 MacOS 上的开发者是在构建其他类型的应用,例如运行在云服务器上的 Web 应用程序。对于这些已经熟悉了 Node.jsPython、Ruby、PHP、Go 甚至.NET/C# 的开发者来说,Mac 的换芯行动意味着什么?简单来说,他们的使用体验必然受到影响。

相当一部分工具和库并不支持 ARM64

虽然情况会逐渐改善,但除了 AMD64 之外,其他大多数架构都无法在 ARM 上运行。而且对其他架构的支持会带来高昂成本:开发商需要从自己的代码中删除所有指向特定架构的部分,构建基础设施(在无法或不方便进行交叉编译时,可能需要购买新的硬件)、执行测试,最后提供支持。

由于相当一部分工具和库属于开源项目,因此由此带来的维护需求增长将成为沉重的额外负担,导致某些贡献者直接放弃为新的 Mac 平台提供支持。

当然也有一些应用程序、特别是闭源项目,压根没有 ARM 版 build,例如微软 SQL Server 或 OracleDB。一位网友曾在 Reddit 上评论说:“我在学术圈待过,之前使用 Mac 设备的学生们只能依靠 Mac + Azure Data Studio 上的 Docker 完成微软 SQL 的操作练习。因此除非微软发布 ARM 版本的 SQL Server,否则这项利好将彻底消失。目前来看似乎微软并无此意,至少在 ARM 版 Mac 推出之前是不太可能有什么动静。”

对虚拟化的支持也只能运行在 ARM64 操作系统上

苹果公司当然意识到在 Mac 上运行 Linux 的重要性,因此在发布会上演示了如何使用 Debian 虚拟机。但他们聊得不多,只是在稍后的小组讨论中证实,当时台上展示的是 Debian 的 ARM 版本。虽然不少 Linux 发行版都提供 ARM 镜像,但仍不是全部,而且多少会影响到软件可用性。

更重要的是,至少 ARM 架构是绝对支持不了 Windows 应用。因此,如果大家打算使用 Mac 测试自己的 Windows 应用,只能说抱歉了。你需要另外买台笔记本,或者使用远程桌面服务。另外,你也没法在 Mac 上运行虚拟机进行设备测试(例如 ESXi、pfSense、FreeNAS 等)。

Docker 受到的影响

由于 Mac 上的 Docker 只能在虚拟机内运行,再加上用户只能对基于 ARM 架构的 Linux 进行虚拟化,意味着我们未来只能在苹果芯片版的 Mac 上运行 ARM64 容器。

目前,Docker Hub 上存在 331 万 9219 个针对 AMD64 的镜像,但针对 ARM64 的镜像只有 29076 个,占比不足 1%。再有,构建多架构 Docker 镜像还特别复杂。

尤其需要注意的是,由于生产系统通常运行 Linux/AMD64,因此你生产的二进制文件及 Docker 镜像很可能无法在开发计算机上运行。当然,你也许可以进行重新编译及交叉编译,但永远无法还原其真实的运行状态。另外,如果你的应用在生产环境中发生问题,也无法仅凭二进制文件或容器镜像在自己的笔记本上进行调试。

Docker 在开发者的日常工作流程中占据非常重要的位置,所以这些令开发者们感到相当头痛。

Docker配置环境错误

任职于 Docker 的 Stephen Turner 博士表示:“虽然操作系统具有虚拟化功能,但苹果芯片尚不支持虚拟化。我们也无能无力,但我们正在和苹果紧密合作希望解决这个问题。”但什么时候能够解决,他表示“还没有具体的日期”。

在 11 日的发布会后,据开发者的反馈,他们怀疑问题是否已经解决:“据我所知,M1 确实具有虚拟化支持,但尚未移植 Docker。”

并且如果只能在虚拟化层上运行 Docker,将给文件 I/O 性能造成严重拖累,并导致大型项目的编译速度直线下降。有开发者表示目前他只能使用 docker-sync 来解决这个问题。另外,除非使用 docker machine 实现真虚拟机,否则没有其他方法能够将设备挂载至 Mac 上的 docker 容器当中。所以,对于大多数需要与硬件直接交互的软件厂商来说,早点发布自家软件的原生版本才是正道。

当然,你可以使用 Rosetta 2 来运行 x86 容器,但其能否进一步扩展至支持虚拟化 Linux 等 x86 操作系统仍然有待观察。

参照 2005 年的过渡方案,苹果为这次过渡给出了两年时间。如果一切顺利,苹果应该会在两年之后的新版本 macOS 中去掉对 x86 指令集的支持,在三年之后的新版本中去掉 Rosetta 2。而这三年之中,开发者们需要付出什么样的代价,还有待验证。
责任编辑:tzh

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    463

    文章

    54704

    浏览量

    471354
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11378

    浏览量

    226509
  • 苹果
    +关注

    关注

    61

    文章

    24622

    浏览量

    208929
  • Mac
    Mac
    +关注

    关注

    0

    文章

    1133

    浏览量

    55690
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开源鸿蒙开发者大会 | 匠创OpenHarmony轻智能方案,让带屏开发告别繁琐

    5月28日,以“AI@OpenHarmony”为主题的开源鸿蒙开发者大会2026在广州隆重举行。大会汇聚全球顶尖开发者、生态伙伴与行业专家,共探AI时代下开源操作系统的技术演进与生态建设之路。作为
    的头像 发表于 05-28 19:12 69次阅读
    开源鸿蒙<b class='flag-5'>开发者</b>大会 | 匠<b class='flag-5'>芯</b>创OpenHarmony轻智能方案,让带屏<b class='flag-5'>开发</b>告别繁琐

    NSSine™ MCU如何重塑数字电源与电机开发 | 纳微首次亮相RT-Thread开发者大会

    在刚结束的2026RT-Thread20周年庆典暨开发者大会,“芯片与生态”论坛上,纳微电子市场总监宋昆鹏带来了一场聚焦于高实时性控制的技术分享,向开发者深度解析了其NSSine系列
    的头像 发表于 01-26 12:07 1718次阅读
    NSSine™ MCU如何重塑数字电源与电机<b class='flag-5'>开发</b> | 纳<b class='flag-5'>芯</b>微首次亮相RT-Thread<b class='flag-5'>开发者</b>大会

    亮相DDUC 2025深度开发者与用户大会

    日前,deepin(深度)社区的年度核心活动--第十五届深度开发者与用户大会(DDUC 2025)在武汉成功举办。兆在本届大会期间,向社区生态伙伴、开发者及用户代表等与会嘉宾,分享了兆
    的头像 发表于 01-04 17:43 896次阅读

    2025华为开发者大赛暨开发者年度会议成功举办

    12月27日-12月28日,以“成就AI原生时代先锋开发者”为主题的2025华为开发者大赛暨开发者年度会议在上海华为练秋湖研发中心举办。本次会议旨在汇聚先锋开发力量,搭建开放共赢的生态
    的头像 发表于 12-31 13:32 1196次阅读

    2025开放原子开发者大会11月启幕

    开发者年度盛会即将登场!2025开放原子开发者大会将于11月21-22日,在北京北人亦创国际会展中心盛大召开。大会以“一切为了开发者”为主题,汇聚全球开源智慧——国内外优秀开发者、学术
    的头像 发表于 10-24 14:05 1227次阅读

    科科技2025年Works With开发者大会深圳站Matter技术专场前瞻

    为了让更多开发者深入了解物联网互联互通的前沿技术-Matter及其开发技巧,Silicon Labs(科科技)将于10月23日在深圳湾万丽酒店举办“Works With开发者大会深圳
    的头像 发表于 09-30 09:38 1255次阅读

    万象奥科亮相2025瑞开发者大会

    万象奥科亮相2025瑞开发者大会,三款嵌入式板卡荣登A4工控板展台2025年7月17-18日,第九届瑞开发者大会(RKDC2025)在福州海峡国际会展中心盛大举行。本次大会以“
    的头像 发表于 07-24 16:59 2009次阅读
    万象奥科亮相2025瑞<b class='flag-5'>芯</b>微<b class='flag-5'>开发者</b>大会

    零距离·方案|杰和科技亮相RKDC 2025第九届瑞开发者大会

    当前,AIoT领域正迎来前所未有的发展浪潮,技术革新与市场需求双重驱动,在这样的大背景下,瑞开发者大会作为行业内极具影响力的交流平台,架起了一座连接生态伙伴与行业用户的桥梁。01杰和科技亮相
    的头像 发表于 07-21 10:03 1764次阅读
    零距离·<b class='flag-5'>芯</b>方案|杰和科技亮相RKDC 2025第九届瑞<b class='flag-5'>芯</b>微<b class='flag-5'>开发者</b>大会

    QNX亮相瑞微第九届开发者大会

    2025年7月17日至18日,瑞微第九届开发者大会在福州海峡国际会展中心成功举办。本次大会以"AIoT模型创新重做产品"为主题,吸引了来自2000多家企业的4000余名开发者参与,共同探讨人工智能与物联网技术的前沿发展。
    的头像 发表于 07-18 17:24 1681次阅读

    【瑞开发者大会】Firefly 与你共同见证 AIoT 模型创新

    7月17日-18日,第九届瑞开发者大会在福州海峡国际会展中心举行,天启集团作为瑞微生态合作伙伴,携多款基于瑞微处理器的解决方案出席展会现场。瑞
    的头像 发表于 07-18 16:33 1711次阅读
    【瑞<b class='flag-5'>芯</b>微<b class='flag-5'>开发者</b>大会】Firefly 与你共同见证 AIoT 模型创新

    灵眸科技亮相第九届瑞开发者大会

    2025年7月17日~18日,第九届瑞开发者大会(RKDC2025)在福州举行。本届大会以“ AIOT创新重做产品”为主题,邀请各行业的开发者共探数智化技术前沿,同绘产业发展蓝图。
    的头像 发表于 07-18 10:25 1992次阅读

    科技亮相第三届开发者大会

    在刚刚于无锡圆满落幕的第三届开发者大会——这场汇聚全球顶尖芯片企业、科研机构及产业链专家的盛会上,行科技作为国内Signoff领域的领军企业,受邀发表了主题演讲《面向3DIC的Signoff挑战与行
    的头像 发表于 07-18 10:22 1209次阅读

    启扬受邀参加2025瑞开发者大会

    第九届瑞开发者大会将于2025年7月17-18日在福州举办。本次大会以“AIoT模型创新重做”为主题,汇集行业领袖、技术专家、生态伙伴等,共同探索算力、算法与产品演变的无线可能。启扬智能作为瑞
    的头像 发表于 07-10 17:25 1480次阅读
    启扬受邀参加2025瑞<b class='flag-5'>芯</b>微<b class='flag-5'>开发者</b>大会

    边缘计算×硬核产品|杰和科技即将亮相第九届瑞开发者大会

    第九届瑞开发者大会(RKDC 2025)将于今年7月17–18日在福州海峡国际会展中心隆重举行,预计吸引上千名开发者和企业代表共赴盛会,杰和科技应邀出席,携多款基于瑞微处理器的解
    的头像 发表于 07-09 18:04 1353次阅读
    边缘计算×硬核产品|杰和科技即将亮相第九届瑞<b class='flag-5'>芯</b>微<b class='flag-5'>开发者</b>大会

    科科技亮相2025 Matter开放日和开发者大会

    2025年Matter开放日(MOD)和开发者大会(MDC)在上周6月12-13日圆满成功举办,Silicon Labs(科科技)延续一直以来倾力支持Matter标准发展的策略,携Matter最新演示与参考应用再次亮相今年的Matter开放日和
    的头像 发表于 06-18 14:22 1522次阅读