蘋果的換芯行動
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.js、Python、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
-
芯片
+關注
關注
456文章
51154瀏覽量
426294 -
cpu
+關注
關注
68文章
10901瀏覽量
212682 -
蘋果
+關注
關注
61文章
24465瀏覽量
199581 -
Mac
+關注
關注
0文章
1109瀏覽量
51612
發布評論請先 登錄
相關推薦
評論