作者:面包板博主 歐陽洋蔥
此前,蘋果CEO庫克在WWDC 2020上宣布,未來Mac電腦將改采自主研發(fā)的ARM架構(gòu)處理器“Apple Silicon”,而非英特爾。事實(shí)上,兩家的合作始于2005年,當(dāng)時(shí)蘋果創(chuàng)始人喬布斯在WWDC宣布放棄PowerPC處理器計(jì)劃,轉(zhuǎn)身就牽手英特爾。這一決定象征著蘋果與英特爾在Mac電腦業(yè)務(wù)合作關(guān)系即將走向“終結(jié)”。那么,蘋果Mac采用自研處理器,可能遇到什么問題呢?
此前,蘋果CEO庫克在WWDC 2020上宣布,未來Mac電腦將改采自主研發(fā)的ARM架構(gòu)處理器“Apple Silicon”,而非英特爾。
事實(shí)上,兩家的合作始于2005年,當(dāng)時(shí)蘋果創(chuàng)始人喬布斯在WWDC宣布放棄PowerPC處理器計(jì)劃,轉(zhuǎn)身就牽手英特爾。這一決定象征著蘋果與英特爾在Mac電腦業(yè)務(wù)合作關(guān)系即將走向“終結(jié)”。
那么,蘋果Mac采用自研處理器,可能遇到什么問題呢?來自面包板社區(qū)的明星博主——?dú)W陽洋蔥在今年5月,在WWDC 2020之前就這一角度發(fā)表了自己的看法。
實(shí)際上,有關(guān) Mac 系列計(jì)算機(jī)要開始采用 Arm 處理器的傳言似乎是從2010年就開始的,那會(huì)兒蘋果也才剛剛開始做 iPhone 的 SoC。這一傳言就10年過去了,起碼今年前不久才更新的MacBook Air都還在用 Intel 的處理器。
想起來以蘋果的“慣例”,對(duì)自家生態(tài)的管控,恨不得從硬件到軟件由內(nèi)到外全部一手包辦。這樣一家公司,在如今有能力自己設(shè)計(jì)處理器,為何還要受制于Intel?況且Mac設(shè)備本身的開發(fā)周期,還面臨與 Intel 處理器迭代撞期的尷尬,導(dǎo)致Mac經(jīng)常無法用上 Intel 最新的處理器。如果用自家的 A 系列 SoC,豈不是很美的一件事情嗎?
這次的傳言看起來格外靠譜,彭博社報(bào)道稱,2021 年采用 Arm 處理器的 Mac 電腦就要問世了。彭博社線人消息稱,Mac 要搭載的處理器將比 iPhone 和 iPad 之上的都更快(好像是廢話)?!疤O果準(zhǔn)備在明年,至少推出一款采用自家芯片的 Mac.”“臺(tái)積電將會(huì)負(fù)責(zé)制造新款的 Mac 芯片,基于 5nm 制造技術(shù)。”
“首批 Mac 處理器將有 8 個(gè)核心,核心代號(hào) Firestorm,其中有 4 個(gè)是節(jié)能核心——內(nèi)部代號(hào) Icestorm。蘋果針對(duì)未來的 Mac 處理器,還計(jì)劃探索超過 12 個(gè)核心的設(shè)計(jì)?!敝档靡惶岬氖?,傳言中的 Mac 處理器也是以 SoC 的形態(tài)出現(xiàn),其上至少包含了 CPU、GPU。[1]
這件事情的可行性當(dāng)然是有的,只是在具體實(shí)施上會(huì)遇到不少問題。如果說 macOS 轉(zhuǎn)往 Arm 平臺(tái)真的那么容易,蘋果估計(jì)早就干這事兒了。而且事實(shí)上,微軟這兩年正在做這件事情,但在具體的方向上有些小差異。在這篇文章里,我們做一些簡單的分享,雖然無法得出結(jié)論,也可與各位做探討。
多插一句,一般來說,我首發(fā)在面包板的文章籌備周期比較短,而且相對(duì)來說內(nèi)容更加個(gè)人化、娛樂化。與電子工程專輯或者其他平臺(tái)發(fā)布的文章相較,會(huì)顯得沒有那么正式和考究。另外,這篇文章主要參照的是維基百科,我不想去翻以前蘋果的開發(fā)者文檔了——基于維基百科的不可靠性,以下內(nèi)容可能有部分是存在事實(shí)錯(cuò)誤的;另外,我也不搞軟件和系統(tǒng)工程,所以貽笑大方之處還請(qǐng)海涵。
蘋果曾有的兩次遷徙經(jīng)歷
蘋果的 Mac 產(chǎn)品線與 Intel 的合作是從 2005 年開始的。那一年,Intel 的 CEO 還為蘋果站了臺(tái),與喬布斯一起。次年的 Mac Pro 就開始正式采用 Intel 處理器(Mac OS X 10.4.4 Tiger)。在此之前,Mac 并不是 x86 平臺(tái)的擁躉,我記得看電子科技相關(guān)雜志,包括當(dāng)年像臺(tái)燈一樣的 iMac,蘋果在宣傳詞中都提到處理器比同時(shí)代的 Intel 奔騰快多少倍之類。
在此之前,蘋果就有過兩次在指令集平臺(tái)上轉(zhuǎn)舵的經(jīng)歷,看起來已經(jīng)是個(gè)老手了。至于為什么要換用其他平臺(tái),這可能和軟硬件更具體的技術(shù)問題相關(guān),不過從社會(huì)上廣為流傳的資訊來看,都是因?yàn)槔掀脚_(tái)的效率越來越不濟(jì)(就好像如今主流觀點(diǎn)認(rèn)為 x86 處理器的效率不如 Arm,雖然我不這么看;很多人認(rèn)定,Mac 轉(zhuǎn)向 Arm 也算是合情合理)。
從這兩次轉(zhuǎn)舵,其實(shí)可以大致來看一看,這回若從 x86 轉(zhuǎn)往 Arm,可行性幾何?或者蘋果從前的轉(zhuǎn)舵經(jīng)驗(yàn),是否有足夠的參考價(jià)值。一般來說,從一個(gè)硬件平臺(tái)轉(zhuǎn)往另一個(gè)硬件平臺(tái),經(jīng)常意味著拋棄以前的開發(fā)者,以及拋棄以前的用戶。因?yàn)檗D(zhuǎn)往新的硬件平臺(tái),總是意味著舊有軟件將停止更新,且舊的開發(fā)生態(tài)徹底終結(jié),未來的新軟件也無法安裝在舊平臺(tái)上。當(dāng)然系統(tǒng)制造商總是會(huì)采用一些折中的兼容性方案來實(shí)現(xiàn)過渡。而“過渡”的平滑與否,真的就要看廠商的水平。
1994-1996 年前后,蘋果的 Mac 電腦從更早摩托羅拉的 68k 系列芯片轉(zhuǎn)往 PowerPC 處理器(參與 PowerPC 聯(lián)合開發(fā)的應(yīng)該有摩托羅拉、蘋果和 IBM)。這個(gè)轉(zhuǎn)換過程持續(xù)了幾年,當(dāng)時(shí)蘋果的過渡方案是所謂的 Mac OS Classic(Mac OS Classic 也就是經(jīng)典 Mac OS,指代了 Mac OS X 之前的 Mac 操作系統(tǒng)),可以同時(shí)跑在 68k 和 PowerPC 平臺(tái)下。有個(gè)詞叫 fat binary,形容某一種應(yīng)用,占用更多的存儲(chǔ)空間(所以才 fat 吧。..),但混合了多種指令集的原生代碼支持——也就能夠在多種類型的處理器上跑。蘋果當(dāng)時(shí)搞的這種 fat binary,就是令開發(fā)者將 68k 編譯版本和 PowerPC 編譯版本打包到同一個(gè)執(zhí)行程序中。
另一方面,當(dāng)時(shí)蘋果引入了一種較低層級(jí)的模擬方案。系統(tǒng)中有一個(gè) Mac OS nanokernal 內(nèi)核,這個(gè)內(nèi)核建立在 Macintosh ROM 里面(Macintosh ROM 是最早 Macintosh 電腦中的一個(gè)固化在主板上的芯片,用于電腦啟動(dòng)時(shí)的初始化)。而這個(gè) ROM 內(nèi)部有個(gè)叫做 Macintosh Toolbox 的東西,類似于 BIOS 這種角色。而 Mac OS nanokernal 為 Toolbox 提供 68k 處理器的模擬環(huán)境。
Mac OS nanokernal 在電腦啟動(dòng)時(shí)加載,內(nèi)存里開辟一個(gè) PowerPC 內(nèi)核空間加載模擬器。隨后模擬器繼續(xù)加載 Toolbox 對(duì)系統(tǒng)硬件初始化,隨后的操作和 68k 時(shí)代基本上一樣。這時(shí)期 PowerPC 設(shè)備的內(nèi)核,實(shí)際上就是運(yùn)行在 68k 模擬器里的 Toolbox。
nanokernal 的主要工作就是讓現(xiàn)有 68k 版本的操作系統(tǒng)跑在新的 PowerPC 硬件下,如此系統(tǒng)普通狀態(tài)就能跑 68k 代碼。在必要的情況下可以轉(zhuǎn)回到 PowerPC 模式下,基于中斷處理程序(interrupt handler)實(shí)現(xiàn),并將虛擬內(nèi)存系統(tǒng)映射到 PowerPC 硬件上。不過維基百科說,這個(gè)過程,也可能只是由跑在用戶態(tài)的模擬器去處理的。
iMac G4,采用 PowerPC G4 處理器
無論如何,這都是個(gè)看起來十分簡單,而且還非常低效的方案(原生的 PowerPC 性能似乎很難發(fā)揮);不過好像也很有效,Mac OS nanokernal 的 68k 模擬器也就為舊軟件提供了這種低層級(jí)的兼容性。當(dāng)時(shí)的模擬器提供的運(yùn)行環(huán)境,和 Macintosh Centris 610(處理器具體型號(hào)為摩托羅拉 68LC040)最為接近。
早期版本的 68k 模擬器會(huì)解碼每一條指令,并立即執(zhí)行一系列對(duì)應(yīng)的 PowerPC 指令,實(shí)現(xiàn)這種模擬。后續(xù)的 PCI PowerMac(PCI 總線的 PowerPC)中的動(dòng)態(tài)重編譯模擬器(dynamic recompilation)則對(duì)性能做了提升:將代碼常見的部分,“重編譯”為更快的、PowerPC 原生序列——且在本地做了緩存(locally cached)。也就是說這種模擬器能夠識(shí)別一些 680x0 代碼序列,并且直接跑已經(jīng)緩存過的 PowerPC 代碼,也就避免了重新轉(zhuǎn)譯。對(duì)于一般的開發(fā)者來說,這種轉(zhuǎn)換也就顯得比較無痛,因?yàn)槟M器是自動(dòng)開始和結(jié)束的。
最初的 Mac OS nanokernal 是相當(dāng)簡單的,這就是個(gè)單任務(wù)系統(tǒng),把大部分工作交給操作系統(tǒng) 68k 版本的模擬器去跑。有興趣的同學(xué),可以去了解一下當(dāng)年的 Mac OS Classic,它似乎還稱不上一個(gè)現(xiàn)代化的操作系統(tǒng),連內(nèi)存保護(hù)都沒有;上層的應(yīng)用程序直接跑在 Toolbox 上,除了獲取系統(tǒng)提供的功能和資源,還能直接操作硬件和內(nèi)存。這個(gè)版本的 nanokernal 似乎是到 Mac OS 8.5 終結(jié)的。[2][3][4][5]
第二版 Mac OS nanokernal 也算是越來越像樣了,開始支持多任務(wù)多處理器、消息傳遞,可以算是微內(nèi)核了;內(nèi)核存在于受保護(hù)的內(nèi)存空間中,并在用戶態(tài)下執(zhí)行設(shè)備驅(qū)動(dòng)。這是題外話了。
Mac OS Classic 時(shí)代的操作系統(tǒng)和個(gè)人電腦還是相當(dāng)?shù)拇址藕筒恢v究,而且層級(jí)結(jié)構(gòu)也比今天要簡單得多。而另一方面,其實(shí)也不難發(fā)現(xiàn),即便是當(dāng)年蘋果電腦用戶基數(shù)不多的時(shí)代,生態(tài)搬遷都需要付出這般代價(jià);每一次平臺(tái)搬遷,實(shí)際上都需要付出代價(jià),由上至下。
還有一點(diǎn)值得一提,后來 Mac OS X(PowerPC 版)內(nèi)部有個(gè)名為 Classic 的環(huán)境,這是一個(gè)抽象層——絕大部分 Mac OS 9 應(yīng)用都依托于 Classic 環(huán)境跑在 Mac OS X 上。從 10.5 美洲豹系統(tǒng)開始,就已經(jīng)去掉了 Classic 環(huán)境(即更晚的 x86 平臺(tái)也就不再對(duì) Classic 做出支持)。具體來說,Classic 環(huán)境包含了一個(gè) Mac OS 9 系統(tǒng)文件夾,以及一個(gè) New World ROM 文件(前文提到的早期 Macintosh ROM 算是 Old World ROM;而 New World ROM 時(shí)期,早期 Macintosh ROM 不復(fù)存在,原本的 Toolbox 成為一個(gè)文件存在硬盤上)。這里的 Classic 可以認(rèn)為是 Mac OS X 之下的一個(gè)模擬子系統(tǒng)。[6]
從 PowerPC 轉(zhuǎn)往 Intel x86
2005 年,喬布斯表示蘋果對(duì)于 IBM 的 PowerPC 開發(fā)進(jìn)度非常失望(這集我看過!去年的 Intel 基帶事件似乎也是這么演的),而 Intel 顯然可以滿足蘋果的需求。當(dāng)年喬布斯大談每瓦性能,實(shí)際上也就是能效比,這似乎也是如今在輿論上,x86 處理器陷入不利的原因。喬布斯在 WWDC 大會(huì)上宣稱,Mac OS X 的每個(gè)版本都“秘密地”針對(duì) Intel 處理器做了開發(fā)和編譯。所以現(xiàn)在的 macOS 有沒有“秘密地”針對(duì) Arm 做開發(fā)和編譯?
當(dāng)年 Intel 為蘋果站臺(tái)的名場(chǎng)面
這次的兼容性解決方案,是一種名為 Rosetta 的指令解釋器,這是一個(gè)動(dòng)態(tài)二進(jìn)制轉(zhuǎn)譯器(dynamic binary translator)。蘋果在宣傳中,把 Rosetta 稱作是“the most amazing software you‘ll never see”。蘋果說對(duì)于舊版 PowerPC 應(yīng)用來說,那些重交互、但算力需求比較低的應(yīng)用,非常適用于 Rosetta(比如文字處理);而算力要求比較高的(比如 AutoCAD、Photoshop)可能就會(huì)悲劇(很像 Windows on Arm???);一些“專業(yè)級(jí)”的媒體應(yīng)用,比如 Final Cut Pro、Logic Pro,則完全不支持。
Rosetta 所處的層級(jí)比 68k 模擬器要高,是個(gè)“用戶級(jí)”的程序,只能監(jiān)聽和模擬用戶級(jí)代碼。這可能和蘋果擔(dān)心安全問題有關(guān),而且畢竟 Rosetta 推出的時(shí)間,操作系統(tǒng)也比 68k 模擬器年代要成熟很多了。所以 Rosetta 不支持的環(huán)境和狀況有很多,也包括了不支持轉(zhuǎn)譯 PowerPC G5 指令。
蘋果后來發(fā)布的 Xcode,有針對(duì) Intel 與 PowerPC 的 Universal Binary,就跟前文提到的 fat binary 類似——這樣一來,當(dāng)時(shí)面對(duì)平臺(tái)遷徙的開發(fā)者,在面對(duì) Mac 應(yīng)用開發(fā)時(shí),針對(duì)基數(shù)也算多的 PowerPC 用戶,不會(huì)不知該選 PowerPC 還是 x86,因?yàn)閮蓚€(gè)都可以要(微軟 WinRT 借鑒對(duì)象?)。
不過 Resotta 的確在過渡平滑性上要差一些。針對(duì) Mac OS 平臺(tái)下不同類型的應(yīng)用,開發(fā)者使用 Rosetta 還是需要做一些基本工作的,比如 Cocoa 應(yīng)用需要重新編譯、檢查字節(jié)順序問題;Carbon 應(yīng)用則要求做小幅調(diào)整;而使用 Metrowerks Codewarrior 套裝開發(fā)的應(yīng)用則需要做較大程度的修改(Codewarrior 是一個(gè) IDE,這個(gè) IDE 的早期版本就針對(duì) 68k 和 PowerPC Macintosh,當(dāng)年蘋果轉(zhuǎn)往 PowerPC 時(shí),CodeWarrior 成為 Mac 實(shí)際上的標(biāo)準(zhǔn)開發(fā)系統(tǒng),快速取代了蘋果自己的 Macintosh Programmer’s Workshop)。[7][8]
就最終的成果來看,Mac 的這第二次轉(zhuǎn)舵還是很成功的。實(shí)際上即便到 2009 年,Mac OS X 10.6 雪豹時(shí)期,蘋果已經(jīng)完全不再支持 PowerPC,依然有不少開發(fā)者通過 Universal Binary 對(duì)這一平臺(tái)做出后續(xù)數(shù)年的支持——這還是能夠從側(cè)標(biāo)反映蘋果在兼容性方案上的不錯(cuò)表現(xiàn)。
但我覺得,這次的成功主要并不來源于蘋果在兼容性工作上的成功,而在于 Mac 轉(zhuǎn)向 x86 本身就是一次從冷門到熱門,以及低效向高效的轉(zhuǎn)變,因?yàn)?x86 平臺(tái)原本就相當(dāng)成功。Intel 這些年起碼在桌面 CPU 的效率提升上是獨(dú)占鰲頭的。另外要知道 PC 市場(chǎng)的絕對(duì)大頭:Windows 就一直在用 x86。而 Mac 轉(zhuǎn)往 x86,則很大程度上意味著 Mac 設(shè)備從此以后就可以名正言順地安裝 Windows 系統(tǒng)了。蘋果自 2006 年起引入的 Boot Camp 還對(duì) Windows 的安裝做出了原生支持。
也是從這個(gè)時(shí)候開始,大批量的人在星巴克用 MacBook 裝逼(以及運(yùn)行的卻是 Windows 系統(tǒng))才變得可行?;蛘哒f至少買一臺(tái) Mac,就不用放棄 Windows——而且同一時(shí)間還有大量效率較高的虛擬程序可以跑 Windows 及對(duì)應(yīng)的應(yīng)用。我覺得無論如何,這都是 x86 平臺(tái)的 Mac 得以大獲成功的原因。
而且也是自此之后,許多軟件大牌企業(yè)才開始將 Mac 生態(tài)納入重要考慮范疇,甚至優(yōu)先于 Windows 做軟件開發(fā)。相較而言,以前的那點(diǎn)生態(tài)損失根本就不算什么;和當(dāng)年 68k -》 PowerPC 的轉(zhuǎn)變相比,這次的轉(zhuǎn)變有著天然的生態(tài)優(yōu)勢(shì)。當(dāng)然,在 x86 成為 Mac 的選擇以后,Mac 設(shè)備自身的設(shè)計(jì)變遷,為行業(yè)樹立標(biāo)桿也是重要原因,如 2008 年推出的 MacBook Air;另外,現(xiàn)在基于 web 的應(yīng)用越來越多,很多人對(duì)瀏覽器的依賴已經(jīng)大過操作系統(tǒng)本身,這讓平臺(tái)選擇進(jìn)一步脫耦。
所以,我覺得 Mac 在轉(zhuǎn)向 x86 平臺(tái)時(shí)的成功,更多的是時(shí)勢(shì)造就,甚至別家生態(tài)使然;亦是蘋果在電子科技發(fā)展史上的一次識(shí)時(shí)務(wù)之舉;且以當(dāng)年 Mac 的體量,更不存在尾大不掉的問題。
從 x86 轉(zhuǎn)向 Arm?Arm 效率真的高于 x86 嗎?
我們近兩年聽到最多有關(guān) Mac 要從 x86 轉(zhuǎn)向 Arm 的原因,好像并不是蘋果要加大生態(tài)掌控力(這是我覺得蘋果可能決策轉(zhuǎn)向的最主要原因),而是 x86 處理器的效率比 Arm 差很多——這方面的報(bào)道也還不少。就相對(duì)直觀的消費(fèi)用戶體驗(yàn)來看,這一點(diǎn)似乎還是有足夠的論據(jù)的。這些年智能手機(jī)、平板產(chǎn)品的性能提升速度如此之快,感覺跟 PC 是不是已經(jīng)差不多了?
蘋果前些年發(fā)布 iPad Pro,并將其定位于生產(chǎn)力工具的時(shí)候,就不忘在發(fā)布會(huì)上黑現(xiàn)在的 PC,聲稱 iPad Pro 所用的 Ax 處理器比市面上 90% 的 PC 還要快。雖然也不知道這種對(duì)比是如何產(chǎn)生此等量化數(shù)據(jù)的。加上還有 GeekBench 這種蘋果專用跑分工具(誤)助陣,像 A13 這種芯片的跑分成績比 AMD Ryzen 3850X 還要高;單核平均功耗才 7、8W 的 A12X,單核跑分和 TDP 95W 的 Intel Core i7-8700K 差不多,多核成績則比 8600K 還要高。
這么說來,Arm 和蘋果掌握的黑科技,已經(jīng)達(dá)成體積小如此之多、功耗少如此之多的情況下,性能達(dá)成與 x86 平臺(tái)幾乎齊頭并進(jìn)的水準(zhǔn)啦?我前倆月就聽有人在社區(qū)大談 RISC 相比 CISC 有多大優(yōu)勢(shì),并以此得出 iPad 性能為何比如今 PC 強(qiáng)那么多的結(jié)論,言下之意是你們根本就不懂指令、現(xiàn)代半導(dǎo)體技術(shù)的神速發(fā)展。Intel 估計(jì)應(yīng)該被釘在歷史的恥辱柱上。
有關(guān) GeekBench 娛樂工具跑分相近的問題,其實(shí)我們必須承認(rèn)一個(gè)大前提:當(dāng)代處理器微架構(gòu)優(yōu)化,能用上的技術(shù)基本上都用上了,前十幾年的發(fā)展,什么流水線、分支預(yù)測(cè)、亂序執(zhí)行、多級(jí)緩存、超線程、時(shí)間空間并發(fā)之類亂七八糟的,及這些技術(shù)本身的反復(fù)優(yōu)化,外加制程工藝進(jìn)化,CPU 性能總能有“質(zhì)”的飛躍。但如今,CPU 單核性能提升已經(jīng)十分緩慢,不僅是制程工藝步進(jìn)緩慢甚而停滯,還在于能用的優(yōu)化技術(shù)都已經(jīng)用上了。當(dāng)然我們不能排除未來還有什么黑科技出現(xiàn),但至少就這兩年的情況來看,新貨已經(jīng)鮮見了,不似當(dāng)年某種新技術(shù)一出立刻造成轟動(dòng)。
所以雖然 Zen 2 如此神奇,而且還被我們吹得神乎其神,但實(shí)際上其單核性能也就那么回事,拼死了也就比同代 Intel 10nm 的十代酷睿強(qiáng)一丟丟——當(dāng)然其 CCX 架構(gòu)讓 Zen 2 堆核更容易了,臺(tái)積電的 7nm 也的確給力。
扯遠(yuǎn)了,上面這兩段是為了表明,Arm 即便作為低功耗領(lǐng)域的主力架構(gòu),這些年的發(fā)展致其單核心性能可與 x86 比肩也并不稀罕。不過那么大的功耗差距,卻可達(dá)成相似 GeekBench 跑分又是怎么回事呢?這個(gè)問題,我在之前探討 Surface Pro 時(shí)就提到過:不考慮散熱系統(tǒng)的跑分成績都是在耍流氓,尤其是 GeekBench 這種短時(shí)跑分測(cè)試。
我們知道蘋果 Ax 系列 SoC 瞬時(shí)突發(fā)性能還是比較強(qiáng)的,包括 GPU,但一旦考察持續(xù)性能,則會(huì)有一個(gè)較大幅度的折扣,因?yàn)楫吘?a target="_blank">手機(jī)這么小的體積,而且就靠那點(diǎn)被動(dòng)散熱面積,很難做到長時(shí)間的性能發(fā)揮。有關(guān)這個(gè)問題可參考我之前寫的兩篇文章[9][10]。我們常戲謔說 GeekBench 是 AppleBench,一方面原因在于其中的某些測(cè)試項(xiàng),在 Ax 系列 CPU 中有專門硬件單元做計(jì)算,而 x86 很多時(shí)候只能依靠通用計(jì)算單元來解決,解題效率會(huì)略低(這部分內(nèi)容各位可以去自行研究,早年比較典型的是 AES 加密單元——A 系列處理器就有專用單元,所以這類項(xiàng)目的跑分成績可以很高,現(xiàn)在可能有差別);另一方面就在 GeekBench 整個(gè)測(cè)試周期很短,那么系統(tǒng)真正的綜合性能其實(shí)是難以體現(xiàn)的。
知乎上有高人給出了 Arm 是否真的比 x86 更省電的理論分析,有興趣的可以去看一看[11]。很多人對(duì) x86 留下高功耗印象的原因,其實(shí)是平臺(tái)(以及使用場(chǎng)景)差異造成的,PC 的處理器 TDP 在設(shè)定上就很高,而這種相比移動(dòng)設(shè)備高得多的參考功耗,很大程度上就源于前面我說到的 PC 要求在一個(gè)較長時(shí)間內(nèi)持續(xù)高性能,而不只是簡單的瞬時(shí)突發(fā)性能。另一方面還在于,Arm 指令集的處理器普遍采用大小核設(shè)計(jì),小核心是專用于低功耗場(chǎng)景的(而且這種小核心現(xiàn)在看來似乎也越來越有必要)——而直到前一陣,Intel 才表示準(zhǔn)備要搞這種大小核設(shè)計(jì)。
當(dāng)然這也是因?yàn)?PC 的具體使用場(chǎng)景,以往并沒有多少需要像手機(jī)那樣超低功耗狀態(tài)的應(yīng)用,或者這種必要性并不大(雖然現(xiàn)在也逐漸開始有這種需求);而 Arm 平臺(tái)的移動(dòng)設(shè)備多用電池做電源,本身也需要對(duì)功耗做限制。
所以 x86 能效比低于 Arm 的這種印象,大抵上是兩者使用場(chǎng)景的常年差別造成的。能效比怎么樣,要對(duì)比的應(yīng)該是同性能下的功耗情況。恰好 AMD 開始使用臺(tái)積電的 7nm 工藝,這也給這種對(duì)比有了一個(gè)基于類似制造工藝下,同性能(而不單純是同頻)下的功耗情況對(duì)比的依據(jù)。不過這種對(duì)比需要考慮的問題還有很多,比如 x86 平臺(tái)的很多 CPU 還有“睿頻”的概念,而 Arm 手機(jī)和移動(dòng)平臺(tái) CPU 則沒有;兩者的流水線長度不同等等;而且前面提到,兩者使用場(chǎng)景目前還是有差別,這也是芯片內(nèi)部專用單元有差異的關(guān)鍵。
蘋果 A12 的頻率功耗曲線,來源:AnandTech
從相對(duì)直觀的角度來說,隨性能的提升,功耗也在提升,但這兩者的關(guān)系并不呈線性;意即如今 Arm 低功耗與性能的關(guān)系看起來還挺美好,但如果進(jìn)一步提升性能,所需付出的功耗代價(jià)在達(dá)到一個(gè)拐點(diǎn)以后,就會(huì)出現(xiàn)指數(shù)級(jí)躥升的狀況——在高性能領(lǐng)域,Arm 現(xiàn)有的移動(dòng)處理器也未必會(huì)有什么出色的表現(xiàn):這其中,蘋果并未掌握什么黑科技,Intel 也并不存在多大的過錯(cuò)。(服務(wù)器領(lǐng)域和 PC 領(lǐng)域在應(yīng)用場(chǎng)景上又是不一樣的,這里不討論。)
上面這張圖來自 AnandTech[12],好像被人援引了無數(shù)次。這是蘋果 A12 的頻率功耗相關(guān)曲線。AnandTech 認(rèn)為蘋果做得還是比較出色的,而且在后續(xù)幾百 MHz 區(qū)間內(nèi)也相對(duì)保守。如果說蘋果期望再把頻率抬高,則按照 A12 的現(xiàn)狀來看,很快就可以在 3GHz 附近讓功耗徹底達(dá)到標(biāo)壓筆記本的水平。
這次的轉(zhuǎn)舵可能有所不同,看看微軟
上面這個(gè)大段落好像說了不少廢話,與本文的主旨關(guān)系并不算太大。不過我想表達(dá)的是,其實(shí) x86 并不像人們想的那樣不堪,Arm 也不像人們想的那么美好。在不考慮散熱、功耗的情況下,這兩者的性能水平可能正在趨同——這也是 AnandTech 之前評(píng)價(jià) A12 接近桌面處理器水平的原因。但就系統(tǒng)和具體應(yīng)用場(chǎng)景的角度,即便 A12 有這種能力,也不可能發(fā)揮到桌面處理器的水準(zhǔn),因?yàn)樗还呐c散熱限制了。
就性能來看,蘋果應(yīng)該是有能力造出 Intel 同等性能的 PC 處理器的,而且 Intel 如今在半導(dǎo)體制程工藝上有落伍的跡象(Intel 前不久才承認(rèn)到 2021 年之前,工藝技術(shù)都將落后于競(jìng)爭對(duì)手[13])。但在 macOS 的軟件生態(tài)和兼容性層面,就又要多花一番心思了。這個(gè)過程可能仍然需要數(shù)年,而且這次的轉(zhuǎn)舵還不同于以往。只不過在過去蘋果積累的經(jīng)驗(yàn),這會(huì)兒似乎還是可以派上用場(chǎng)。
彭博社的報(bào)道提到,可能會(huì)有部分 Mac 產(chǎn)品將采用 Arm 處理器。就前期來看,合理的推測(cè)是,低性能、低功耗產(chǎn)品線的 MacBook(比如說早前 12 寸的 MacBook)可能會(huì)率先采用蘋果自己的 Arm 處理器。但如果真的是這樣,那么也就意味著,Mac 產(chǎn)品系列將有兩種架構(gòu)、兩種平臺(tái)并存,這對(duì)開發(fā)者來說應(yīng)該是個(gè)災(zāi)難。蘋果大概需要重啟過去兩次轉(zhuǎn)平臺(tái)時(shí) fat binary 和 Universal Binary 方案——一人開發(fā),倆平臺(tái)共享。..
實(shí)際上在早年 fat binary 時(shí)期,把兩種編譯版本封裝到一起,造成的文件尺寸大,在當(dāng)時(shí)是比較敏感的——因?yàn)槟菚?huì)兒 PC 的硬盤容量真的很可憐,所以那一時(shí)期還涌現(xiàn)出了為了節(jié)省硬盤空間,可剝離不需要編譯版本的工具?,F(xiàn)在這已經(jīng)不算什么大事兒了。
而就當(dāng)代來看,蘋果實(shí)際上有一個(gè)更好的參照對(duì)象,就是微軟。不過微軟在計(jì)劃上看,并不是“轉(zhuǎn)舵”,而是“擴(kuò)展”,這里我們可以稍微提一提:即 Windows 不僅要在 x86 平臺(tái)上發(fā)展,而且要在 Arm 平臺(tái)上發(fā)展。這個(gè)計(jì)劃從 Windows RT 操作系統(tǒng)時(shí)期就出現(xiàn)了,那時(shí)微軟就搞了一個(gè) Windows Runtime,這個(gè)運(yùn)行時(shí)之上搭的應(yīng)用可以同時(shí)支持 x86 和 Arm。當(dāng)時(shí)的 Windows Phone 8.1 其實(shí)也用上了 Windows Runtime,所以那會(huì)兒微軟應(yīng)用商店的很多 app 都同時(shí)支持手機(jī)、PC、平板,雖然商店里的應(yīng)用數(shù)量也是少的可憐。
這算是實(shí)現(xiàn)微軟“偉大”生態(tài) Universal Windows Platform(UWP)的重要組成部分。UWP 本質(zhì)上就是為所有 Windows 設(shè)備,包括 PC、IoT、平板設(shè)備之類,或者說所有 Arm、x86 平臺(tái)的 Windows 設(shè)備,提供一個(gè)通用的 API。UWP 就是一種建立在 Windows Runtime 之上的應(yīng)用模型。[14][15]
Windows Runtime 提供的 API 以類庫的形式,為開發(fā)者提供 Windows 8 的功能。跑在 Windows Runtime 上的應(yīng)用實(shí)際上是跑在一個(gè)沙盒里,需要用戶批準(zhǔn)才能訪問一些關(guān)鍵系統(tǒng)特性及下層的硬件。這個(gè)東西當(dāng)時(shí)就可以打通 Windows RT、Windows 8,絕大部分應(yīng)用部署在微軟的應(yīng)用商店里。早期 Windows Runtime 之上跑的應(yīng)用被稱作 Metro app(好像是因?yàn)楫?dāng)時(shí)微軟還熱衷于推 Metro UI,后來叫 modern-style app,應(yīng)該還會(huì)改)。
只不過這東西到現(xiàn)在為止都還不能算是成功,微軟的營銷話術(shù)也堪稱災(zāi)難,沒人知道 Windows RT、on Arm、10S、10X 之類究竟是什么鬼。一般人真的很難搞懂微軟這兩年究竟在做什么——可見當(dāng)年喬布斯在給 Mac 轉(zhuǎn)平臺(tái),在告訴用戶和開發(fā)者現(xiàn)在正在發(fā)生什么的時(shí)候,是多么科學(xué)(所以比爾蓋茨說喬布斯是超級(jí)銷售員)。不過在實(shí)際的決策上,我覺得微軟的搖擺不定、瞻前顧后,才真正令 Windows RT 以及后來的 Windows 10S 都很失敗。
微軟接下來的一個(gè)“偉(zuo)大(si)”計(jì)劃是 Windows 10X。從外顯上來看,Windows 10X 是為雙屏設(shè)備準(zhǔn)備的一個(gè)操作系統(tǒng)(比如 Surface Neo 之類還沒發(fā)布的設(shè)備),預(yù)計(jì)今年下半年才會(huì)看到實(shí)物。不過我覺得 Windows 10X 的意義遠(yuǎn)不止此,Windows 10X 支持 Windows Runtime API(這個(gè)是肯定的),并且“通過一個(gè)原生 container 跑 Win32 應(yīng)用”[16]。我沒怎么研究過如今 Windows 系統(tǒng)架構(gòu)狀況,但就對(duì)舊有 Windows 生態(tài)來看,Windows 10X 如果是微軟接下來意欲統(tǒng)一 PC 市場(chǎng)的操作系統(tǒng),則這個(gè)決心下的還是比較大的;而且貌似雙屏 Windows 設(shè)備都是基于 Arm 平臺(tái)。
誰不想要 Surface Pro X 這么性感的筆記本呢?
聽起來 Windows 10X 在這一點(diǎn)上,和 Windows on Arm 很像(Surface Pro X 用的就是 Windows on Arm),所以我在想 Surface Pro X 將來是不是可以升級(jí)到 Windows 10X——反正微軟改名部門創(chuàng)下那么多的“豐功偉績”。
在針對(duì)開發(fā)者的兼容性問題上,Windows on Arm 平臺(tái)下的 x86 應(yīng)用是跑在模擬器上的,一個(gè)叫 WOW64 的 x86 模擬器。和前文提到蘋果的 Rosetta 有點(diǎn)像,模擬過程就是把 x86 指令塊編譯成 ARM64 指令,加一些優(yōu)化。會(huì)有服務(wù)對(duì)轉(zhuǎn)譯代碼塊做緩存,減少指令轉(zhuǎn)譯開銷。貌似到目前為止,x86-64 應(yīng)用(也就是傳統(tǒng)的 Windows 64 位應(yīng)用)還無法在 Arm 版 Windows 上面跑,而且某些大型應(yīng)用的模擬運(yùn)行比較災(zāi)難級(jí),比如 Photoshop。WOW64 也跑在用戶態(tài)[17]。
其實(shí)突然又有點(diǎn)搞不懂微軟將來計(jì)劃怎么發(fā)展,從如今微軟的動(dòng)作來看,好像十分偏向 Arm(和高通),只不過大業(yè)未成,生態(tài)也暫未見起色,x86 也不想拋棄。不知 Intel 看此情此景是什么心情。畢竟 Windows 作為歷史用戶基數(shù)龐大的操作系統(tǒng),兼容性的歷史包袱遠(yuǎn)大于蘋果的 Mac OS:我沒法從技術(shù)細(xì)節(jié)上來探討誰做得更好,但微軟一定比蘋果更有難度;何況蘋果還有 iOS 這顆大棋子。
如果說蘋果要在同一時(shí)間針對(duì) Mac 系列產(chǎn)品,既保有 x86 平臺(tái)(典型如 Mac Pro 這種更新沒多久的高性能工作站),又開發(fā) Arm 平臺(tái)(很可能就是 MacBook),那么對(duì)兩個(gè)平臺(tái)的同時(shí)支持,以及對(duì)開發(fā)者的友好度,不知能否做到比微軟如今的方案更好——因?yàn)檫@次似乎并不是徹底拋棄上一個(gè)平臺(tái)這么簡單(畢竟彭博社是說部分 Mac 產(chǎn)品采用 Arm 處理器),也就不能以斬?cái)噙^往、說拋棄就拋棄這種蘋果式的任性方法來做決策(但好似當(dāng)年 PowerPC 與 x86 在 Mac OS 系統(tǒng)上也共存了起碼 5 年)。
Mac 轉(zhuǎn)舵可能會(huì)遭遇的問題
一氣寫下來,感覺篇幅有點(diǎn)過長了,本來還想聊聊蘋果自己在 Mac 設(shè)備里面搞的 T2 芯片,以及可將 iPad app 輕松移植給 macOS 的 Catalyst 項(xiàng)目——畢竟這倆看起來都很像本次轉(zhuǎn)舵的重要緩沖或預(yù)備手段。但再寫的話,這文章字?jǐn)?shù)就要破萬了,實(shí)在是太廢紙了。在轉(zhuǎn)換平臺(tái)的問題上,即便有那么多的困難,自主掌握芯片迭代節(jié)奏,以及牢固生態(tài)發(fā)展,采用自研芯片還是有好處。
其實(shí)上面這些算是一個(gè)資料匯總,也算是我近期的學(xué)習(xí)過程吧,以簡短的形式匯報(bào)給各位。這里最后談一談 Mac 如果真的要從 x86 轉(zhuǎn)往 Arm(而不是兩者并行發(fā)展,畢竟蘋果很少做這么二的事情),除了兼容性和技術(shù)層面,如上述文字中提到的難度,在實(shí)際實(shí)施中還會(huì)有一些非常現(xiàn)實(shí)的問題。
第一就是,可能面臨拋棄 Windows 用戶的問題,Mac 如果徹底拋棄 x86,則未來的 Mac 設(shè)備很可能就不能再安裝 Windows 系統(tǒng)了:這個(gè)問題我覺得十分嚴(yán)重,或許很多 Mac 用戶對(duì)于在 Mac 設(shè)備上使用 Windows 是非常嗤之以鼻的,但這個(gè)選擇對(duì)很多人來說仍然十分重要。畢竟 Windows 的生產(chǎn)力生態(tài)仍然十分完備,某些很偏的應(yīng)用都只支持 Windows。(現(xiàn)在 Windows 也支持 Arm 了,只是兩者的平臺(tái)還是有差異)
第二是,如果低端 MacBook 產(chǎn)品線開始用 Arm 處理器,那么目前的 iPad Pro 產(chǎn)品定位會(huì)顯得很尷尬。因?yàn)楹笳呔褪嵌ㄎ挥谳p度生產(chǎn)力工具,如果要說生產(chǎn)力,iOS 和 macOS 似乎并非同臺(tái)競(jìng)爭的對(duì)象。
第三,有個(gè)比較實(shí)際的問題:Intel 畢竟是個(gè)造芯片的公司,可以搞出一大堆不同定位的 SKU,比如什么酷睿 i3、i5、i7;超低壓、低壓、標(biāo)壓、桌面等等,并且應(yīng)用到不同售價(jià)的 Mac 設(shè)備上。蘋果即便有能力造芯片,是否能在短時(shí)間內(nèi),按照體質(zhì)劃分不同 SKU,并且應(yīng)用到將來更多的 Mac 設(shè)備上?如果不能的話,難道真的要 x86 和 Arm 并行發(fā)展嗎?
值得注意的是,這次的轉(zhuǎn)舵并不像上次 PowerPC -》 x86 那樣,是轉(zhuǎn)向一個(gè)在桌面市場(chǎng)十分受歡迎和健全的平臺(tái);而且如今蘋果公司的體量遠(yuǎn)非 2005 年可比,所以這次轉(zhuǎn)舵的困難程度大約不小。另外,前面花了那么多篇幅談兼容性問題,針對(duì)某些十分細(xì)節(jié)的點(diǎn),比如小到 Final Cut Pro X 中的一個(gè)插件,即便容易想見 Final Cut Pro X 會(huì)第一批支持 Arm 版 macOS,但插件未更新就可以徹底埋葬一部分用戶。
具體是什么狀況,等到今年的 WWDC 或可一見分曉。最后的最后,Intel 哭泣的時(shí)間應(yīng)該會(huì)更長:為什么全世界都針對(duì)我?
參考來源:
[1] Apple Aims to Sell Macs With Its Own Chips Starting in 2021 - Bloomberg
https://www.bloomberg.com/news/articles/2020-04-23/apple-aims-to-sell-macs-with-its-own-chips-starting-in-2021
[2] 小議Mac OS Classic的底層架構(gòu)與Mac的固件沿革 - 老Mac與MacOS收藏
https://zhuanlan.zhihu.com/p/44934452
[3] Mac OS nanokernel - Wikipedia
https://en.wikipedia.org/wiki/Mac_OS_nanokernel
[4] Mac 68k emulator - Wikipedia
https://en.wikipedia.org/wiki/Mac_68k_emulator
[5] Fat binary - Wikipedia
https://en.wikipedia.org/wiki/Fat_binary
[6] List of macOS components - Wikipedia
https://en.wikipedia.org/wiki/List_of_macOS_components#Classic
[7] Rosetta (software) - Wikipedia
https://en.wikipedia.org/wiki/Rosetta_(software)
[8] CodeWarrior - Wikipedia
https://en.wikipedia.org/wiki/CodeWarrior
[9] 聊聊無風(fēng)扇的Surface Pro:性能比一般筆記本差多少? - 面包板
https://mbb.eet-china.com/blog/3893689-413612.html
[10] 一場(chǎng)硬仗:華為和高通的GPU差距還有多大? - EE Times China
https://www.eet-china.com/news/202001061219.html
[11] 為啥 Arm 架構(gòu)比 x86 x64 省電? - 木頭龍的回答
https://www.zhihu.com/question/387240856/answer/1186307900
[12] The Apple iPhone 11, 11 Pro & 11 Pro Max Review: Performance, Battery, & Camera Elevated - AnandTech
https://www.anandtech.com/show/14892/the-apple-iphone-11-pro-and-max-review/4
[13] Intel Says Process Tech to Lag Competitors Until Late 2021, Will Regain Lead with 5nm - Intel
https://www.tomshardware.com/news/intel-process-tech-lag-competitors-late-2021-leadership-5nm
[14] Windows Runtime - Wikipedia
https://en.wikipedia.org/wiki/Windows_Runtime
[15] How the Universal Windows Platform relates to Windows Runtime APIs - Microsoft
https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide#how-the-universal-windows-platform-relates-to-windows-runtime-apis
[16] Windows 10X Developer FAQ - Microsoft
https://docs.microsoft.com/en-us/windows/apps/10x/faq
[17] WOW64 Implementation Details - Microsoft
https://docs.microsoft.com/zh-cn/windows/win32/winprog64/wow64-implementation-details
-
處理器
+關(guān)注
關(guān)注
68文章
19102瀏覽量
228819 -
蘋果
+關(guān)注
關(guān)注
61文章
24336瀏覽量
195573 -
Mac
+關(guān)注
關(guān)注
0文章
1095瀏覽量
51339
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論