眾所周知,ARM和X86平臺最大的區(qū)別是微架構(gòu)的不同。ARM屬于RISC簡單指令集,而X86則是CISC復(fù)雜指令集,程序要這兩個不同的平臺運行,需要編譯不同的版本。當然,借助中間層,也可以實現(xiàn)兩個不同平臺之間的兼容。
蘋果在今年的WWDC上宣布,macOS 11將會遷移到ARM平臺,引起了轟動。蘋果稱,將會在Mac電腦上用自研ARM平臺取代Intel的X86平臺,并且遷移包括操作系統(tǒng)和軟件在內(nèi)的生態(tài),這意味著ARM在個人PC領(lǐng)域邁出了挑戰(zhàn)X86的一步。
人們對蘋果的這個舉措是寄予厚望的。macOS并不是首次“換馬”,在二十一世紀的第一個十年,Mac就從IBM PowerPC平臺遷移到了Intel X86平臺,并取得了成功,這也是人們對Mac此次換用ARM后,仍能提供良好體驗抱有如此信心的一大原因。
蘋果宣布這一消息的同時,不少人同時也聯(lián)想到了微軟——微軟已經(jīng)在ARM領(lǐng)域摸索多年,推出過Windows RT這樣的特制系統(tǒng),最近更是讓W(xué)indows 10運行在了ARM上,并且兼容之前的大量軟件。然而,Win10 ARM戰(zhàn)略似乎未能取得太大反響,Windows RT甚至直接暴死。
Mac遷移平臺來勢洶洶,人們普遍的預(yù)期是順風(fēng)順水,而Win10卻屢屢碰壁。Win10在ARM的道路上,到底行差踏錯了些什么?今天一起來談?wù)勥@個問題吧。
X86轉(zhuǎn)移ARM:到底會有什么坑?
然而,無論是那種方案,將之前兼容X86的操作系統(tǒng)要將生態(tài)遷移到ARM,都需要付出代價。
如果放棄X86平臺上老軟件的兼容,只讓新軟件兼容ARM平臺,那么就意味著生態(tài)系統(tǒng)需要從頭做起,新系統(tǒng)起步會變得非常艱難。在過渡期間,新開發(fā)的軟件需要同時兼容X86和ARM平臺,意味著要么開發(fā)者投入更多的精力自行編譯不同的版本,要么操作系統(tǒng)的開發(fā)套件提供同時編譯的功能。無論如何,都需要投入更多的工作。
而如果想要生態(tài)無縫銜接、讓新的ARM平臺起步更順利,最好可以讓X86平臺的老軟件直接可以運行在新的ARM平臺上,那么就需要對中間層做工作了。例如Android就是一個很好的例子,通過HAL來模糊硬件接口,利用善于跨平臺的JAVA作為應(yīng)用上層,無論是運行在X86的Android還是ARM的Android,都可以同時兼容絕大部分的App。
但這個方法的缺點在于,中間層可能會成為效率的瓶頸。Android的中間層就很厚,效率感人詬病已久。
另外,由于ARM多用于移動平臺,因此如果桌面操作系統(tǒng)想要遷移到ARM,往往也會打起通過移動平臺已有生態(tài)造血的注意,也就是讓遷移到ARM的桌面操作系統(tǒng),兼容移動平臺的App。當然,這里面也有大坑,例如UI的適配就是個麻煩——手機平板的屏幕和桌面PC顯示器不同,要有體驗好的視覺效果,UI需要靈活變形,這對UI元素的自動排列提出了極高要求,是也是個需要投入大量精力研究的課題。
蘋果遷移ARM到底做了什么?
上面提到了X86遷移ARM可能會碰到的問題,大家卻對蘋果的遷移之舉抱有信心。要理解這一點,我們首先來看看蘋果為ARM平臺的遷移工作都準備了什么吧。
提前量十足的全新開發(fā)生態(tài)
蘋果這兩年做的很多事,就是為了解決ARM遷移到X86平臺上的問題。蘋果在2019年的WWDC大會上,推出了SwiftUI和Mac Catalyst。這兩個套件的作用,在于架起了ARM和X86間、以及移動平臺和桌面平臺間跨平臺開發(fā)的橋梁——蘋果本身就有著成熟的ARM移動生態(tài),這無疑能成為桌面平臺遷移到ARM的強勁助力。
先來說說Mac Catalyst,這是一個跨ARM和X86平臺的開發(fā)套件。通過Mac Catalyst,開發(fā)者在構(gòu)建一個iPad App的同時,這個App也能成為macOS的原生應(yīng)用。從某個角度來說,Mac Catalyst將會是iPadOS和macOS新的開發(fā)基準,iPadOS將會和macOS的應(yīng)用生態(tài)深度融合。此后,即使macOS遷移到了ARM平臺,基于Mac Catalyst開發(fā)的軟件應(yīng)用,也可以無縫兼容。
而SwiftUI,其作用則在于為移動平臺和桌面平臺提供了跨平臺的UI適配方案。通過SwiftUI,開發(fā)者能用較為簡單的代碼,一次開發(fā)出適配多個平臺的軟件UI。例如開發(fā)者想要為macOS和iOS、iPadOS做軟件應(yīng)用,那么通過SwiftUI就可以輕松做出能適配這幾個平臺應(yīng)用的UI??梢哉f,SwiftUI大大降低了為不同蘋果平臺開發(fā)軟件應(yīng)用的門檻,意義重大。
·蘋果對生態(tài)掌控力度更大,能促使開發(fā)者更新迭代適配新平臺,而微軟背負著沉重的兼容性包袱。
在當前,X86仍是桌面平臺的絕對主流。但ARM平臺已經(jīng)在能效上彰顯優(yōu)勢。蘋果打算將Mac遷移到ARM平臺,其實很早就能看出端倪了。為了平滑過渡到ARM平臺,蘋果早有準備,對開發(fā)套件作了大量工作,以統(tǒng)合的思路,開始改造其應(yīng)用生態(tài)。