蘋果在今年的WWDC上宣布,macOS 11將會(huì)遷移到ARM平臺(tái),引起了轟動(dòng)。蘋果稱,將會(huì)在 Mac 電腦上用自研 ARM 平臺(tái)取代 Intel 的 X86平臺(tái),并且遷移包括操作系統(tǒng)和軟件在內(nèi)的生態(tài),這意味著 ARM 在個(gè)人 PC 領(lǐng)域邁出了挑戰(zhàn) X86的一步。
macOS 11將兼容 ARM 芯片
人們對(duì)蘋果的這個(gè)舉措是寄予厚望的。macOS 并不是首次 “換馬”,在二十一世紀(jì)的第一個(gè)十年,Mac 就從 IBM PowerPC 平臺(tái)遷移到了 Intel X86平臺(tái),并取得了成功,這也是人們對(duì) Mac 此次換用 ARM 后,仍能提供良好體驗(yàn)抱有如此信心的一大原因。
蘋果宣布這一消息的同時(shí),不少人同時(shí)也聯(lián)想到了微軟——微軟已經(jīng)在 ARM 領(lǐng)域摸索多年,推出過 Windows RT 這樣的特制系統(tǒng),最近更是讓 Windows 10運(yùn)行在了 ARM 上,并且兼容之前的大量軟件。然而,Win10 ARM 戰(zhàn)略似乎未能取得太大反響,Windows RT 甚至直接暴死。
微軟早已經(jīng)涉足 ARM 領(lǐng)域,推出了基于 ARM 的 Windows 平板
Mac 遷移平臺(tái)來勢洶洶,人們普遍的預(yù)期是順風(fēng)順?biāo)?Win10卻屢屢碰壁。Win10在 ARM 的道路上,到底行差踏錯(cuò)了些什么?今天一起來談?wù)勥@個(gè)問題吧。
1.X86轉(zhuǎn)移 ARM:到底會(huì)有什么坑?
眾所周知,ARM 和 X86平臺(tái)最大的區(qū)別是微架構(gòu)的不同。ARM 屬于 RISC 簡單指令集,而 X86則是 CISC 復(fù)雜指令集,程序要這兩個(gè)不同的平臺(tái)運(yùn)行,需要編譯不同的版本。當(dāng)然,借助中間層,也可以實(shí)現(xiàn)兩個(gè)不同平臺(tái)之間的兼容。
然而,無論是那種方案,將之前兼容 X86的操作系統(tǒng)要將生態(tài)遷移到 ARM,都需要付出代價(jià)。
如果放棄 X86平臺(tái)上老軟件的兼容,只讓新軟件兼容 ARM 平臺(tái),那么就意味著生態(tài)系統(tǒng)需要從頭做起,新系統(tǒng)起步會(huì)變得非常艱難。在過渡期間,新開發(fā)的軟件需要同時(shí)兼容 X86和 ARM 平臺(tái),意味著要么開發(fā)者投入更多的精力自行編譯不同的版本,要么操作系統(tǒng)的開發(fā)套件提供同時(shí)編譯的功能。無論如何,都需要投入更多的工作。
而如果想要生態(tài)無縫銜接、讓新的 ARM 平臺(tái)起步更順利,最好可以讓 X86平臺(tái)的老軟件直接可以運(yùn)行在新的 ARM 平臺(tái)上,那么就需要對(duì)中間層做工作了。例如 Android 就是一個(gè)很好的例子,通過 HAL 來模糊硬件接口,利用善于跨平臺(tái)的 JAVA 作為應(yīng)用上層,無論是運(yùn)行在 X86的 Android 還是 ARM 的 Android,都可以同時(shí)兼容絕大部分的 App。
但這個(gè)方法的缺點(diǎn)在于,中間層可能會(huì)成為效率的瓶頸。Android 的中間層就很厚,效率感人詬病已久。
X86指令轉(zhuǎn)制為 ARM 實(shí)現(xiàn)兼容,性能下滑不可避免
另外,由于 ARM 多用于移動(dòng)平臺(tái),因此如果桌面操作系統(tǒng)想要遷移到 ARM,往往也會(huì)打起通過移動(dòng)平臺(tái)已有生態(tài)造血的注意,也就是讓遷移到 ARM 的桌面操作系統(tǒng),兼容移動(dòng)平臺(tái)的 App。當(dāng)然,這里面也有大坑,例如 UI 的適配就是個(gè)麻煩——手機(jī)平板的屏幕和桌面 PC 顯示器不同,要有體驗(yàn)好的視覺效果,UI 需要靈活變形,這對(duì) UI 元素的自動(dòng)排列提出了極高要求,這也是個(gè)需要投入大量精力研究的課題。
2.蘋果遷移 ARM 到底做了什么?
上面提到了 X86遷移 ARM 可能會(huì)碰到的問題,大家卻對(duì)蘋果的遷移之舉抱有信心。要理解這一點(diǎn),我們首先來看看蘋果為 ARM 平臺(tái)的遷移工作都準(zhǔn)備了什么吧。
提前量十足的全新開發(fā)生態(tài)
蘋果打算將 Mac 遷移到 ARM 平臺(tái),其實(shí)很早就能看出端倪了。為了平滑過渡到 ARM 平臺(tái),蘋果早有準(zhǔn)備,對(duì)開發(fā)套件作了大量工作,以統(tǒng)合的思路,開始改造其應(yīng)用生態(tài)。
蘋果這兩年做的很多事,就是為了解決 ARM 遷移到 X86平臺(tái)上的問題。蘋果在2019年的 WWDC 大會(huì)上,推出了 SwiftUI 和 Mac Catalyst。這兩個(gè)套件的作用,在于架起了 ARM 和 X86間、以及移動(dòng)平臺(tái)和桌面平臺(tái)間跨平臺(tái)開發(fā)的橋梁——蘋果本身就有著成熟的 ARM 移動(dòng)生態(tài),這無疑能成為桌面平臺(tái)遷移到 ARM 的強(qiáng)勁助力。
先來說說 Mac Catalyst,這是一個(gè)跨 ARM 和 X86平臺(tái)的開發(fā)套件。通過 Mac Catalyst,開發(fā)者在構(gòu)建一個(gè) iPad App 的同時(shí),這個(gè) App 也能成為 macOS 的原生應(yīng)用。從某個(gè)角度來說,Mac Catalyst 將會(huì)是 iPadOS 和 macOS 新的開發(fā)基準(zhǔn),iPadOS 將會(huì)和 macOS 的應(yīng)用生態(tài)深度融合。此后,即使 macOS 遷移到了 ARM 平臺(tái),基于 Mac Catalyst 開發(fā)的軟件應(yīng)用,也可以無縫兼容。
Mac Catalyst 可以讓一個(gè)軟件應(yīng)用同時(shí)兼容 iPadOS 和 macOS
而 SwiftUI,其作用則在于為移動(dòng)平臺(tái)和桌面平臺(tái)提供了跨平臺(tái)的 UI 適配方案。通過 SwiftUI,開發(fā)者能用較為簡單的代碼,一次開發(fā)出適配多個(gè)平臺(tái)的軟件 UI。例如開發(fā)者想要為 macOS 和 iOS、iPadOS 做軟件應(yīng)用,那么通過 SwiftUI 就可以輕松做出能適配這幾個(gè)平臺(tái)應(yīng)用的 UI。可以說,SwiftUI 大大降低了為不同蘋果平臺(tái)開發(fā)軟件應(yīng)用的門檻,意義重大。
SwiftUI 可以讓同一個(gè)應(yīng)用的 UI 同時(shí)適配多個(gè)蘋果平臺(tái)
無論是 Mac Catalyst 還是 SwiftUI,目前都已經(jīng)投入了實(shí)戰(zhàn)當(dāng)中,通過新版的 Xcode 以及高質(zhì)量的開發(fā)文檔,每個(gè)蘋果開發(fā)者都可以制作出基于新技術(shù)的高質(zhì)量軟件應(yīng)用。
很大程度上,蘋果已經(jīng)解決了新軟件同時(shí)兼容 X86/ARM、移動(dòng) / 桌面平臺(tái)的開發(fā)問題。請(qǐng)注意,這是在 ARM 版 macOS 發(fā)布之前做的工作,可謂是兵馬未動(dòng)糧草先行。目前,蘋果尚未發(fā)布 ARM 版 Mac 電腦,但為其配套的開發(fā)組件,卻已相當(dāng)完備了。待到 macOS 真正遷移到 ARM 平臺(tái)時(shí),基于 Mac Catalyst 以及 SwiftUI 開發(fā)的軟件應(yīng)用早已經(jīng)花繁葉茂,macOS 遷移 ARM 其軟件生態(tài)不至于會(huì) “休克”。
步步為營的生態(tài)遷移
Mac Catalyst 解決了代碼在 X86和 ARM 平臺(tái)的編譯問題,而 SwiftUI 則解決了移動(dòng)平臺(tái)和桌面平臺(tái)的 UI 適配問題,但這是針對(duì)于新開發(fā)的軟件應(yīng)用的。對(duì)于 macOS 舊有的軟件,蘋果也祭出了招數(shù)。
在今年的 WWDC 大會(huì),蘋果宣布,將會(huì)為 macOS 平滑過渡到 ARM 平臺(tái),推出 Rosetta 2中間轉(zhuǎn)換層。如果你是老果粉,對(duì)于 Rosetta 這個(gè)詞一定很熟悉——蘋果 Mac 電腦當(dāng)年從 IBM PowerPC 架構(gòu),遷移到 Intel X86平臺(tái),所使用的轉(zhuǎn)換層正是 Rosetta。
Mac 遷移平臺(tái)這事,蘋果已經(jīng)干過一次了,當(dāng)年 Mac 從 PPC 遷移到 X86的兼容層被稱為 “Rosetta”
Rosetta 2的作用在于,它通過指令翻譯,可以讓 ARM 平臺(tái)的 macOS,直接運(yùn)行絕大部分的 X86軟件。而且 Rosetta 2的性能還相當(dāng)不錯(cuò),它并不是在軟件運(yùn)行的時(shí)候,才翻譯指令的,而是在軟件安裝時(shí)就做好了轉(zhuǎn)換。當(dāng)然,這也并非說 Rosetta 2可以實(shí)現(xiàn)性能完全無損,它對(duì) AVX 指令兼容并不好,如果 X86軟件依賴 AVX 乃至 AVX2,那么在 ARM 平臺(tái)上由于沒有對(duì)應(yīng)的高性能指令,運(yùn)行效率會(huì)有明顯下滑。并不是所有的軟件都會(huì)用到 AVX 指令集,總體來說,Rosetta 2的性能還是可以接受的。
這次 Mac 從 X86遷移到 ARM,Rosetta 2對(duì)舊有 X86軟件的兼容也起著至關(guān)重要的作用
和當(dāng)年的 Rosetta 一樣,Rosetta 2只是一個(gè)臨時(shí)舉措,它的意義在于為遷移到 ARM 平臺(tái)提供平滑的過渡期。我們可以參考一下 Rosetta 的進(jìn)度:2005年蘋果在 WWDC 宣布換用 X86,接著蘋果在2006年推出基于 X86平臺(tái)的 Mac 電腦并部署了 Rosetta,到2009年蘋果 MacOS 10.6不再支持 PowerPC 的 Mac,2011年 MacOS 11.7不再支持 Rosetta,放棄了對(duì) PowerPC 時(shí)代 Mac 軟件的支持。從此以后,蘋果 Mac 生態(tài)徹底轉(zhuǎn)移到了 X86平臺(tái),整個(gè)過程并未有太大的陣痛。
從 Rosetta 的歷程來看,macOS 轉(zhuǎn)移到 ARM,舊有的 X86軟件也會(huì)經(jīng)由數(shù)年的過渡兼容期。在未來幾年,我們或許也會(huì)看到新的 macOS 11不再支持舊有 X86 Mac 電腦、在未來某個(gè)版本徹底不支持 Rosetta 2這樣的節(jié)點(diǎn)。到最后,macOS 11上只剩下專為 ARM 開發(fā)的新軟件,而屆時(shí) ARM 的軟件應(yīng)用也早已經(jīng)琳瑯滿目。
蘋果相當(dāng)清楚,新舊平臺(tái)的更迭,絕非一蹴而幾的事情。蘋果一方面通過 SwiftUI 和 Mac Catalyst 慢慢為 ARM 平臺(tái)的 Mac 營造新生態(tài),一方面通過 Rosetta 2保持原有生態(tài)不流失,而且兩方面的完成度都非常高,可謂兩手都要抓、兩手都要硬的典型。加上此前從 PowerPC 到 X86換平臺(tái)的成功經(jīng)歷,人們對(duì) Mac 換用 ARM 架構(gòu)抱有極大期待,也就理所當(dāng)然了。
3.Win10 ARM 失敗在哪里?
在很多人的認(rèn)知中,微軟 Windows 系統(tǒng)向 ARM 進(jìn)軍的步伐,要比蘋果 macOS 來得更早。的確,微軟在2012年就已經(jīng)發(fā)布了用于 ARM 平臺(tái)的 Windows RT 系統(tǒng),并將其裝載于第一代 Surface 平板電腦上。而最近,微軟更是將 Windows 10桌面系統(tǒng)整個(gè)遷移到 ARM 上,目前市面上已經(jīng)出現(xiàn)了基于驍龍?zhí)幚砥鞯?Windows 10平板,而微軟自身也推出了基于驍龍 ARM 平臺(tái)的 Surface Pro X。
運(yùn)行在 ARM 平臺(tái)上的 Windows RT 系統(tǒng)
從推向市場的進(jìn)度來看,微軟無疑遠(yuǎn)遠(yuǎn)領(lǐng)先于蘋果——macOS 的 ARM 產(chǎn)品尚未見諸市面,而微軟的 ARM Windows 產(chǎn)品已經(jīng)開賣多時(shí)。然而,這些產(chǎn)品并沒有在市場上掀起太大波瀾,Window RT 已經(jīng)宣告終結(jié),而 Surface Pro X 等 Windows 10 ARM 產(chǎn)品,則落下了性能低下的壞口碑,并沒有取得什么好的市場表現(xiàn)。
為什么會(huì)這樣子呢?我們來回看微軟 Windows 在 ARM 平臺(tái)上的征程。
2012年,為了和 iPad 競爭,微軟推出了 Surface 平板產(chǎn)品線。然而,用于 ARM 平臺(tái) Surface 平板的 Windows RT 系統(tǒng),卻擁有著諸多限制。
從外表來看,Windows RT 和正兒八經(jīng)的 Windows 8桌面操作系統(tǒng)無異。然而,Windows RT 卻不能兼容一切傳統(tǒng)基于 X86開發(fā)的 Windows 程序。Windows RT 只能從應(yīng)用商店中獲取應(yīng)用,這讓 Windows RT 一度幾乎無第三方軟件可用。實(shí)際上,這是由于微軟通過數(shù)字簽名限制了第三方應(yīng)用,破除了微軟的限制后,傳統(tǒng)的 X86軟件通過重新編譯為 ARM 應(yīng)用,是可以運(yùn)行在 Windows RT 上的。
Windows RT 不兼容傳統(tǒng)的桌面軟件,必須從 Windows 商店下載
為何微軟要這么做?在微軟的構(gòu)思中,Windows RT 和 Windows Phone 共用應(yīng)用商店,雙方生態(tài)打通,開發(fā)者為 Windows Phone 開發(fā) App 的同時(shí),也可以顧及 Windows RT。然而,這只不過是一個(gè)美好的幻想,Windows RT 的這些缺陷,將它送進(jìn)了墳?zāi)埂?/p>
· 手機(jī)和平板的交互基礎(chǔ)差異過大。Windows Phone 和 Windows RT 都力推 Metro(Modern)設(shè)計(jì),然而小屏和大屏之間終究有難以逾越的鴻溝。加之 Windows RT 仍殘留著大量桌面 UI,借助 Windows Phone 上的 App 給 Windows RT 生態(tài)輸血,顯得不合時(shí)宜。
·Windows Phone 并未建立起強(qiáng)有力的生態(tài)。微軟多次變更 Windows Phone 的開發(fā)路線,開發(fā)工具也一改再改。Windows Phone 的開發(fā)環(huán)境非常不穩(wěn)定,系統(tǒng)自身從開始的 CE 內(nèi)核變?yōu)?NT 內(nèi)核,而應(yīng)用則從一開始的 XAP 到 APPX,到了 Win10M 又要求開發(fā)者開發(fā) UWP 應(yīng)用…… 開發(fā)者連 Windows Phone 劇變的開發(fā)環(huán)境都無法跟上,最后冷眼旁觀 WP/Win10M 的垂死,更何況邊緣產(chǎn)品 Windows RT?此情此景下,通過 WP 給 Windows RT 輸血是不切實(shí)際的。
Windows 應(yīng)用商店不穩(wěn)定,還時(shí)不時(shí)爆出無法安裝應(yīng)用的大問題
·ARM 平臺(tái)性能太弱。Surface 使用的是 Tegra3芯片,該芯片的性能甚至不如同時(shí)代的 Atom,系統(tǒng)自帶的 Office 運(yùn)行起來卡頓無比。指望當(dāng)時(shí)的 ARM 芯片支撐起桌面級(jí)的體驗(yàn)?根本無法勝任。
· 其他因素。開發(fā)者們發(fā)現(xiàn),通過破解 Windows RT 系統(tǒng)數(shù)字簽名限制,可以將 X86平臺(tái)上的 Win32程序重新編譯后,安裝到 Windows RT 上,并且順利運(yùn)行。然而微軟封堵相關(guān)漏洞,進(jìn)一步削弱了 Windows RT 的擴(kuò)展性。
簡單來說,盡管微軟讓 Windows RT 運(yùn)行在了 ARM 平臺(tái)上,但沒有為其配備一個(gè)理想的開發(fā)環(huán)境,也沒有讓其能直接兼容傳統(tǒng)的 X86軟件應(yīng)用,與此同時(shí) Windows RT 還有著 UI 分裂、平臺(tái)性能羸弱等問題,失敗也就在情理之中。
到了最近的 Windows 10 ARM 版,許多問題似乎已經(jīng)得到解決。ARM 芯片的性能大幅提升,甚至逼近了桌面低壓 X86處理器;而可以跨平臺(tái)支持 ARM 和 X86的 UWP 應(yīng)用開發(fā)環(huán)境,相對(duì)以前來說也較為穩(wěn)定;同時(shí),微軟還讓 Windows 10 ARM 可以直接運(yùn)行 X86軟件。然而,Windows 10 ARM 卻依然有著如下缺陷。
· 兼容不佳。微軟為 Windows 10 ARM 做的中間兼容層,當(dāng)前并不能完美兼容所有的 X86軟件,只有32位的軟件能夠?qū)崿F(xiàn)兼容。事實(shí)上,Windows 10 ARM 使用的 Thumb2指令集是和 Windows RT 一脈相承的,不過這次面向 Win32程序開放了兼容,但這套指令集并不兼容 X86-64(Windows RT 時(shí)代 ARM 處理器仍未邁入64位),日后需要大改才能兼容64位軟件。
Windows 10 ARM 運(yùn)行 Win32軟件效果一般
· 性能低下。在 Windows 10 ARM 上運(yùn)行的 X86軟件,是邊轉(zhuǎn)碼邊運(yùn)行的,并不像蘋果 Rosetta 2那樣在安裝時(shí)作好轉(zhuǎn)碼工作,運(yùn)行時(shí)無需再次轉(zhuǎn)碼。這就造成了 Windows 10 ARM 運(yùn)行 X86軟件性能不盡如人意。
·UWP 前景成疑。UWP 應(yīng)用目前仍存在諸多限制,能實(shí)現(xiàn)的功能有限,穩(wěn)定性更差,開發(fā)環(huán)境也不如傳統(tǒng)的 WPF 成熟。要知道,用 Mac Catalyst 開發(fā)應(yīng)用,是起碼有成熟的 iPad 生態(tài)兜底的,兼容 macOS 是一個(gè)加分項(xiàng);用 UWP 開發(fā)應(yīng)用能得到什么?只會(huì)面對(duì)傳統(tǒng) Win 32軟件的強(qiáng)烈競爭,開發(fā)者在 UWP 和 Win32軟件開發(fā)之間,會(huì)作何選擇不言而喻。
UWP 的大餅真香,但喂不飽開發(fā)者
· 微軟沒有對(duì) ARM 硬件的掌控力。Windows 10 ARM 運(yùn)行于驍龍平臺(tái),微軟并沒有像蘋果那樣,自行設(shè)計(jì) ARM 芯片,軟硬件結(jié)合度自然有所欠缺。蘋果可以確保未來 macOS 跑在怎樣性能水準(zhǔn)的 ARM 芯片上,而微軟只能仰仗高通。在 ARM 性能對(duì) X86仍處于追趕態(tài)勢的現(xiàn)狀下,這是一個(gè)藏有暗雷的要素。
蘋果可以祭出自己的芯片,微軟只能和高通合作
·Windows 有著更沉重的歷史遺留兼容問題。macOS 換用 ARM,蘋果仍只需專心打造新的 Mac 電腦;而 Windows 換用 ARM,微軟必須顧及眾多的硬件廠商,以及諸多的老軟件,轉(zhuǎn)型速度注定不如蘋果。
總結(jié)
到了這里,我們可以總結(jié)一下,為何蘋果 macOS 換用 ARM 能萬眾矚目,而微軟 Windows 轉(zhuǎn)移 ARM 卻不盡如人意了。
· 蘋果提供了能編譯同時(shí)兼容 X86、ARM 平臺(tái)的應(yīng)用的高質(zhì)量開發(fā)方案(SwiftUI+Mac Catalyst),微軟在這方面舉棋不定;
現(xiàn)在還沒有 macOS 的 ARM 產(chǎn)品面市,但開發(fā)機(jī)卻是已經(jīng)有了,蘋果的準(zhǔn)備力度可見一斑
· 蘋果提供了 X86軟件在 ARM 平臺(tái)的兼容方案(Rosetta 2),效率良好。而 Windows RT 不兼容 X86軟件,Windows 10 ARM 則運(yùn)行 X86軟件效率較差,且不支持64位;
· 蘋果能夠自行設(shè)計(jì)高性能的 ARM 芯片,微軟沒有這樣的能力,ARM 芯片性能尚不足以支撐桌面環(huán)境時(shí)就上馬 Windows RT,現(xiàn)在 Windows 10 ARM 平板的性能也無法和同價(jià)位的其他 X86平板相提并論;
· 蘋果提前布局好 ARM 生態(tài)的轉(zhuǎn)移工作,并設(shè)置了足夠的過渡期,相應(yīng)產(chǎn)品由始至終保持了較高完成度,而微軟未準(zhǔn)備好配套就匆匆將不成熟的產(chǎn)品推向市場;
· 蘋果對(duì)生態(tài)掌控力度更大,能促使開發(fā)者更新迭代適配新平臺(tái),而微軟背負(fù)著沉重的兼容性包袱。
在當(dāng)前,X86仍是桌面平臺(tái)的絕對(duì)主流。但 ARM 平臺(tái)已經(jīng)在能效上彰顯優(yōu)勢,如果微軟鐵了心要兼顧 ARM 平臺(tái),就必須解決當(dāng)下的種種問題,才能帶來良好的體驗(yàn),期待微軟日后能做得更好吧。
標(biāo)簽: ARM