X86轉(zhuǎn)移ARM:到底會(huì)有什么坑?
眾所周知,ARM和X86平臺(tái)最大的區(qū)別是微架構(gòu)的不同。ARM屬于RISC簡(jiǎn)單指令集,而X86則是CISC復(fù)雜指令集,程序要這兩個(gè)不同的平臺(tái)運(yùn)行,需要編譯不同的版本。當(dāng)然,借助中間層,也可以實(shí)現(xiàn)兩個(gè)不同平臺(tái)之間的兼容。
蘋果在今年的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的一步。
人們對(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),最近更是讓W(xué)indows 10運(yùn)行在了ARM上,并且兼容之前的大量軟件。然而,Win10 ARM戰(zhàn)略似乎未能取得太大反響,Windows RT甚至直接暴死。
Mac遷移平臺(tái)來勢(shì)洶洶,人們普遍的預(yù)期是順風(fēng)順?biāo)?,而Win10卻屢屢碰壁。Win10在ARM的道路上,到底行差踏錯(cuò)了些什么?今天一起來談?wù)勥@個(gè)問題吧。
X86轉(zhuǎn)移ARM:到底會(huì)有什么坑?
然而,無論是那種方案,將之前兼容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的中間層就很厚,效率感人詬病已久。
另外,由于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è)需要投入大量精力研究的課題。
蘋果遷移ARM到底做了什么?
上面提到了X86遷移ARM可能會(huì)碰到的問題,大家卻對(duì)蘋果的遷移之舉抱有信心。要理解這一點(diǎn),我們首先來看看蘋果為ARM平臺(tái)的遷移工作都準(zhǔn)備了什么吧。
提前量十足的全新開發(fā)生態(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)用,也可以無縫兼容。
而SwiftUI,其作用則在于為移動(dòng)平臺(tái)和桌面平臺(tái)提供了跨平臺(tái)的UI適配方案。通過SwiftUI,開發(fā)者能用較為簡(jiǎn)單的代碼,一次開發(fā)出適配多個(gè)平臺(tái)的軟件UI。例如開發(fā)者想要為macOS和iOS、iPadOS做軟件應(yīng)用,那么通過SwiftUI就可以輕松做出能適配這幾個(gè)平臺(tái)應(yīng)用的UI??梢哉f,SwiftUI大大降低了為不同蘋果平臺(tái)開發(fā)軟件應(yīng)用的門檻,意義重大。
·蘋果對(duì)生態(tài)掌控力度更大,能促使開發(fā)者更新迭代適配新平臺(tái),而微軟背負(fù)著沉重的兼容性包袱。
在當(dāng)前,X86仍是桌面平臺(tái)的絕對(duì)主流。但ARM平臺(tái)已經(jīng)在能效上彰顯優(yōu)勢(shì)。蘋果打算將Mac遷移到ARM平臺(tái),其實(shí)很早就能看出端倪了。為了平滑過渡到ARM平臺(tái),蘋果早有準(zhǔn)備,對(duì)開發(fā)套件作了大量工作,以統(tǒng)合的思路,開始改造其應(yīng)用生態(tài)。