蘋果的換芯行動
11 月 11 日凌晨,蘋果“One more thing”發(fā)布會如期而至。發(fā)布會上,蘋果宣布推出首款自研的 5nm M1 芯片,該款芯片將為其新一代基于 ARM 的 Mac 系列產(chǎn)品提供動力。蘋果公司聲稱,該款 M1 芯片搭載了許多世界頂級工藝的產(chǎn)品,包括世界上最快的 CPU 內(nèi)核、最快的 IGPU。
“蘋果花了十幾年的時間來創(chuàng)造和優(yōu)化 Apple 芯片,因?yàn)樾酒?iPhone、iPad 和 Apple Watch 的核心。現(xiàn)在我們希望將其引入 Mac,因此 Mac 可以憑借令人難以置信的性能、自定義技術(shù)和行業(yè)領(lǐng)先的芯片來實(shí)現(xiàn)巨大的飛躍。”蘋果官方如是說。
蘋果公司認(rèn)為,M1 是迄今為止性能最高的芯片,并且低功耗高效內(nèi)核可提供與當(dāng)前基于英特爾的雙核 MacBook Air 相似的性能。當(dāng)然,高性能內(nèi)核要快得多。
M1 芯片推出以前,英特爾幾乎壟斷了蘋果筆記本電腦的 CPU。2005 年,蘋果從 PowerPC 芯片切換到了英特爾。這個過渡已經(jīng)有 15 年了,過渡的成本來主要來自軟件方面。開始時開發(fā)人員需要使用蘋果提供的工具鏈來生成可以在 PPC 和 x86 Mac 上運(yùn)行的通用二進(jìn)制文件,并且并非所有蘋果以前的 API 都可以過渡到 x86。
當(dāng)年,蘋果推出的工具鏈名叫 Rosetta,用于將 PowerPC 應(yīng)用轉(zhuǎn)換到 x86 上。Rosetta 能做到讓大多數(shù) PowerPC Mac OS X 應(yīng)用程序在 x86 Mac 上運(yùn)行,盡管性能有些損失(這并不是一件簡單的事情)。最終,Rosetta 成為了蘋果的創(chuàng)可貼,直到 2011 年 Mac OS X 10.7(Lion)推出時才被放棄。
現(xiàn)在,從英特爾切換到蘋果 Silicon,蘋果給出了三種解決方案:Universal 2 通用應(yīng)用、Rosetta 2 工具鏈、原生 ARM 應(yīng)用。
第一種解決方案是在蘋果芯片版 Mac 上,使用“Universal 2”運(yùn)行應(yīng)用程序,針對 Adobe Photoshop、Microsoft Word 這樣的系統(tǒng)軟件。第二種解決方案是利用蘋果提供的 Rosetta 2 將應(yīng)用重新編譯,讓 x86 應(yīng)用能運(yùn)行在 ARM 架構(gòu)上,主要針對不太涉及處理器特性的絕大部分輕量級應(yīng)用。
從本質(zhì)上講,Rosetta 2 可能足以支持大多數(shù)主流生產(chǎn)力應(yīng)用程序,但往往無法兼容那些需要與操作系統(tǒng)、硬件或圖形硬件進(jìn)行直接交互的軟件。特別是,那些在關(guān)鍵任務(wù)需求中涉及虛擬化或高端圖形、視頻或科學(xué)類應(yīng)用處理的用戶,可能最好是等推出原生軟件版本之后再考慮升級到基于 ARM 的蘋果芯片版 Mac 平臺。
換芯給開發(fā)者們帶來的問題
很明顯,這次換芯行動將給消費(fèi)者們帶來巨大助益,包括獲得更長的電池續(xù)航并改善運(yùn)行過熱問題(2018 款 MacBook Pro 就是款強(qiáng)大的“暖寶寶”)。軟件與硬件之間的緊密集成,也將進(jìn)一步優(yōu)化用戶的使用體驗(yàn)。另外,產(chǎn)品價格也有可能隨之下降。
蘋果的芯片遷移決定,自然也激起了開發(fā)者們的擔(dān)憂,特別是在開發(fā)者體驗(yàn)方面。蘋果雖然表示提供了相應(yīng)的解決方案,強(qiáng)調(diào)新的芯片將提高開發(fā)人員的生產(chǎn)力,但是換芯行動也同樣會沉重打擊高度依賴其產(chǎn)品及生態(tài)系統(tǒng)的專業(yè)開發(fā)者。
現(xiàn)有 Mac 應(yīng)用運(yùn)行速度可能減慢
如果將現(xiàn)有 Mac 應(yīng)用借助 Rosetta 2 轉(zhuǎn)換引擎,重新編譯為“Universal 2”二進(jìn)制形式,大部分專為英特爾處理器編寫的 64 位 MacOS 應(yīng)用程序,都能夠直接運(yùn)行在蘋果芯片版 Mac 之上。
但蘋果在開發(fā)者文檔中頗為詼諧地提到:“轉(zhuǎn)譯過程需要時間,因此用戶可能感覺轉(zhuǎn)譯后的應(yīng)用在啟動或運(yùn)行時偶爾變慢。”
當(dāng)然,只要涉及任何形式的仿真、虛擬化或者轉(zhuǎn)譯過程,應(yīng)用程序的運(yùn)行速度就必然要比原生版本稍慢一點(diǎn)。雖然還沒有官方確認(rèn),但通過已經(jīng)泄露的 Geekbench 5 基準(zhǔn)測試,大家大概可以推斷 Mac mini DTK 的運(yùn)行速度會比在 iPad Pro(2020)機(jī)型上慢多少。
與運(yùn)行原生代碼的 iPad Pro(2020)機(jī)型相比,Mac mini DTK 在通過 Rosetta 2 以單核形式運(yùn)行 Geekbench 5 基準(zhǔn)測試時,速度降低了 26%;在多核形式下,速度要慢 38%。
值得一提的是,與這款 iPad Pro 相比,Mac mini DTK 的時鐘頻率也有所下降,而且運(yùn)行的 beta 軟件并未經(jīng)過優(yōu)化。但如果我們假定二者時鐘頻率相同且在最終硬件發(fā)布時完成了進(jìn)一步軟件優(yōu)化,那么估計(jì)通過 Rosetta 運(yùn)行軟件時、相較于原生應(yīng)用的速度劣勢應(yīng)該會在 20% 到 30% 之間。
可以肯定的是,基于 ARM 的蘋果芯片 Mac 性能更強(qiáng),甚至足以抵消引入 Rosetta 2 帶來的速度劣勢,最終實(shí)現(xiàn)與一兩年前大部分英特爾芯片版 Mac 相同的性能水平。
但是,其他人怎么辦?實(shí)際上,大多數(shù)在 Mac 上進(jìn)行開發(fā)的用戶并不是在構(gòu)建 iOS 或者 MacOS 應(yīng)用。
根據(jù) StackOverflow 2020 開發(fā)者調(diào)查,超過四分之一的開發(fā)者使用 MacOS,但只有 6% 的用戶使用 Swift 語言。作為目前蘋果唯一官方指定的蘋果生態(tài)應(yīng)用構(gòu)建語言,Swift 孱弱的市場占有率足以說明大多數(shù) Mac 用戶其實(shí)并不是在為蘋果開發(fā)產(chǎn)品。
換言之,相當(dāng)一部分 MacOS 上的開發(fā)者是在構(gòu)建其他類型的應(yīng)用,例如運(yùn)行在云服務(wù)器上的 Web 應(yīng)用程序。對于這些已經(jīng)熟悉了 Node.js、Python、Ruby、PHP、Go 甚至.NET/C# 的開發(fā)者來說,Mac 的換芯行動意味著什么?簡單來說,他們的使用體驗(yàn)必然受到影響。
相當(dāng)一部分工具和庫并不支持 ARM64
雖然情況會逐漸改善,但除了 AMD64 之外,其他大多數(shù)架構(gòu)都無法在 ARM 上運(yùn)行。而且對其他架構(gòu)的支持會帶來高昂成本:開發(fā)商需要從自己的代碼中刪除所有指向特定架構(gòu)的部分,構(gòu)建基礎(chǔ)設(shè)施(在無法或不方便進(jìn)行交叉編譯時,可能需要購買新的硬件)、執(zhí)行測試,最后提供支持。
由于相當(dāng)一部分工具和庫屬于開源項(xiàng)目,因此由此帶來的維護(hù)需求增長將成為沉重的額外負(fù)擔(dān),導(dǎo)致某些貢獻(xiàn)者直接放棄為新的 Mac 平臺提供支持。
當(dāng)然也有一些應(yīng)用程序、特別是閉源項(xiàng)目,壓根沒有 ARM 版 build,例如微軟 SQL Server 或 OracleDB。一位網(wǎng)友曾在 Reddit 上評論說:“我在學(xué)術(shù)圈待過,之前使用 Mac 設(shè)備的學(xué)生們只能依靠 Mac + Azure Data Studio 上的 Docker 完成微軟 SQL 的操作練習(xí)。因此除非微軟發(fā)布 ARM 版本的 SQL Server,否則這項(xiàng)利好將徹底消失。目前來看似乎微軟并無此意,至少在 ARM 版 Mac 推出之前是不太可能有什么動靜。”
對虛擬化的支持也只能運(yùn)行在 ARM64 操作系統(tǒng)上
蘋果公司當(dāng)然意識到在 Mac 上運(yùn)行 Linux 的重要性,因此在發(fā)布會上演示了如何使用 Debian 虛擬機(jī)。但他們聊得不多,只是在稍后的小組討論中證實(shí),當(dāng)時臺上展示的是 Debian 的 ARM 版本。雖然不少 Linux 發(fā)行版都提供 ARM 鏡像,但仍不是全部,而且多少會影響到軟件可用性。
更重要的是,至少 ARM 架構(gòu)是絕對支持不了 Windows 應(yīng)用。因此,如果大家打算使用 Mac 測試自己的 Windows 應(yīng)用,只能說抱歉了。你需要另外買臺筆記本,或者使用遠(yuǎn)程桌面服務(wù)。另外,你也沒法在 Mac 上運(yùn)行虛擬機(jī)進(jìn)行設(shè)備測試(例如 ESXi、pfSense、FreeNAS 等)。
Docker 受到的影響
由于 Mac 上的 Docker 只能在虛擬機(jī)內(nèi)運(yùn)行,再加上用戶只能對基于 ARM 架構(gòu)的 Linux 進(jìn)行虛擬化,意味著我們未來只能在蘋果芯片版的 Mac 上運(yùn)行 ARM64 容器。
目前,Docker Hub 上存在 331 萬 9219 個針對 AMD64 的鏡像,但針對 ARM64 的鏡像只有 29076 個,占比不足 1%。再有,構(gòu)建多架構(gòu) Docker 鏡像還特別復(fù)雜。
尤其需要注意的是,由于生產(chǎn)系統(tǒng)通常運(yùn)行 Linux/AMD64,因此你生產(chǎn)的二進(jìn)制文件及 Docker 鏡像很可能無法在開發(fā)計(jì)算機(jī)上運(yùn)行。當(dāng)然,你也許可以進(jìn)行重新編譯及交叉編譯,但永遠(yuǎn)無法還原其真實(shí)的運(yùn)行狀態(tài)。另外,如果你的應(yīng)用在生產(chǎn)環(huán)境中發(fā)生問題,也無法僅憑二進(jìn)制文件或容器鏡像在自己的筆記本上進(jìn)行調(diào)試。
Docker 在開發(fā)者的日常工作流程中占據(jù)非常重要的位置,所以這些令開發(fā)者們感到相當(dāng)頭痛。
Docker配置環(huán)境錯誤
任職于 Docker 的 Stephen Turner 博士表示:“雖然操作系統(tǒng)具有虛擬化功能,但蘋果芯片尚不支持虛擬化。我們也無能無力,但我們正在和蘋果緊密合作希望解決這個問題。”但什么時候能夠解決,他表示“還沒有具體的日期”。
在 11 日的發(fā)布會后,據(jù)開發(fā)者的反饋,他們懷疑問題是否已經(jīng)解決:“據(jù)我所知,M1 確實(shí)具有虛擬化支持,但尚未移植 Docker。”
并且如果只能在虛擬化層上運(yùn)行 Docker,將給文件 I/O 性能造成嚴(yán)重拖累,并導(dǎo)致大型項(xiàng)目的編譯速度直線下降。有開發(fā)者表示目前他只能使用 docker-sync 來解決這個問題。另外,除非使用 docker machine 實(shí)現(xiàn)真虛擬機(jī),否則沒有其他方法能夠?qū)⒃O(shè)備掛載至 Mac 上的 docker 容器當(dāng)中。所以,對于大多數(shù)需要與硬件直接交互的軟件廠商來說,早點(diǎn)發(fā)布自家軟件的原生版本才是正道。
當(dāng)然,你可以使用 Rosetta 2 來運(yùn)行 x86 容器,但其能否進(jìn)一步擴(kuò)展至支持虛擬化 Linux 等 x86 操作系統(tǒng)仍然有待觀察。
參照 2005 年的過渡方案,蘋果為這次過渡給出了兩年時間。如果一切順利,蘋果應(yīng)該會在兩年之后的新版本 macOS 中去掉對 x86 指令集的支持,在三年之后的新版本中去掉 Rosetta 2。而這三年之中,開發(fā)者們需要付出什么樣的代價,還有待驗(yàn)證。
責(zé)任編輯:tzh
-
芯片
+關(guān)注
關(guān)注
456文章
51037瀏覽量
425486 -
cpu
+關(guān)注
關(guān)注
68文章
10890瀏覽量
212419 -
蘋果
+關(guān)注
關(guān)注
61文章
24441瀏覽量
199359 -
Mac
+關(guān)注
關(guān)注
0文章
1108瀏覽量
51567
發(fā)布評論請先 登錄
相關(guān)推薦
評論