特約撰稿人/林亦
喬布斯和歐德寧 圖/9to5Mac
十六年前,蘋果電腦的舞臺(tái)上曾經(jīng)亂入過一個(gè)大白,不過這個(gè)大白手里不是采集咽拭子的棉簽,而是一塊用來做芯片的晶圓。當(dāng)時(shí)穿著無塵服的英特爾 CEO 歐德寧,把這塊晶圓遞給了蘋果 CEO 喬布斯,兩人一次握手,搭載英特爾 x86 處理器的蘋果筆記本就迅速面市,個(gè)人電腦市場(chǎng)徹底成了 x86 架構(gòu)處理器的天下。
不過盛極而衰、樂極生悲,危機(jī)的種子常常就是埋在極盛之時(shí)。就在這段蜜月期,蘋果還看上了英特爾的一款低功耗x86 處理器,就提出來了想合作,說自己正在做一個(gè)掌上產(chǎn)品,能聽歌能打電話還能上網(wǎng),非??春眠@款產(chǎn)品的市場(chǎng)。結(jié)果英特爾對(duì)此頗不以為然,時(shí)值英特爾 x86處理器在個(gè)人電腦市場(chǎng)如日中天,這單合作就此作罷,結(jié)果,這個(gè)掌上產(chǎn)品就是后來的 iPhone。而iPhone 轉(zhuǎn)頭選擇 ARM 芯片,這件跟電腦看似風(fēng)馬牛不相及的事,就像蝴蝶效應(yīng),在十幾年后的個(gè)人電腦市場(chǎng),掀起了一陣血雨腥風(fēng)。甚至一向偏好 x86 架構(gòu)的 Linux 系統(tǒng)創(chuàng)始人林納斯,也在今年把隨身筆記本換成了 ARM 架構(gòu)的 MacBook Air,當(dāng)然裝的還是 Linux 系統(tǒng)。芯片處理器大家都知道,今天我們就來談一下處理器的兩大架構(gòu):x86 和 ARM,關(guān)于他們的前世今生、恩怨情仇。
計(jì)算機(jī)系統(tǒng)抽象圖 圖/知乎@老蕭
首先我們需要搞清楚 x86 架構(gòu)、ARM 架構(gòu),到底是什么?x86、ARM,都是指令集架構(gòu)中的一種。我們用電腦的時(shí)候,常用到各種軟件,軟件運(yùn)行靠的是底下硬件的支撐。咱們?cè)陔娔X上算一個(gè)式子,最底下其實(shí)是硬件電路在那劈里啪啦地一會(huì)兒通一會(huì)斷,而指令集架構(gòu),就是軟件和硬件中間的一套規(guī)則,作用就是把軟硬件分離。比如說有一套指令集里包括了加減乘除法,那下面的硬件就得把這些基本指令的電路做出來,然后上面的軟件就得把式子拆分成基本的加、減、乘、除,做到這兩點(diǎn),軟件就能在硬件上運(yùn)行了,而且軟件不需要知道硬件的結(jié)構(gòu),硬件也不用知道軟件的行動(dòng),按照指令逐項(xiàng)執(zhí)行就可以了。
這樣一來,軟硬件的通用性就有了質(zhì)的飛躍。指令集概念出來之前,換個(gè)電腦型號(hào),原來用的軟件就得重新寫。有了指令集之后,遵循同一套指令集的所有硬件設(shè)備,只要是用這套指令集寫出來的軟件,就都能安裝運(yùn)行。
1964年的 IBM System/360 大型電腦,是第一款用上了指令集架構(gòu)這個(gè)概念的計(jì)算機(jī)。當(dāng)時(shí)的主要賣點(diǎn)就是隨著硬件的不斷更新?lián)Q代,軟件不用重新寫。這意味著,一家小公司可以先買一個(gè)小型電腦系統(tǒng),然后再根據(jù)業(yè)務(wù)增長(zhǎng)來升級(jí)硬件,而原來的操作系統(tǒng)和軟件都不受影響,還是能正常使用。這件我們今天來看理所當(dāng)然的事情,對(duì)于那個(gè)時(shí)代的人們來說,是“嘆為觀止”的。
IBM System/360 圖/維基百科
英特爾8088 圖/網(wǎng)絡(luò)
靠著指令集架構(gòu)實(shí)現(xiàn)了軟硬件分離的 System/360,不僅完勝 IBM 自有的全部五條產(chǎn)品線,還拿下了創(chuàng)紀(jì)錄的市場(chǎng)訂單:產(chǎn)品發(fā)布后的前四周收到了超過一千份訂單,在接下來的四個(gè)月里又收到了一千份訂單。等到 IBM 進(jìn)軍個(gè)人電腦市場(chǎng)的時(shí)候,指令集架構(gòu)這個(gè)概念自然也就延續(xù)了下來。1981年,IBM發(fā)布了自家的第一款個(gè)人電腦IBM 5150,在市場(chǎng)上大獲成功,銷量達(dá)到了 IBM 預(yù)期的八倍。
IBM 5150 的處理器,選擇了英特爾 8088,而這塊處理器實(shí)際上是更早英特爾 8086 處理器的閹割版,8086 才是完全體,只是價(jià)格更貴,所以 IBM 選了 8088。
IBM 5150 的成功帶動(dòng)了個(gè)人電腦市場(chǎng)的蓬勃發(fā)展,為了保持兼容性,接下來的歷代處理器也都用了同一套指令集架構(gòu)。新處理器的命名回歸了 8086 序列,被叫做 80186、80286、80306、80486,而這套延續(xù)至今的指令集架構(gòu),也就被叫做了 x86 架構(gòu)。
x86架構(gòu)發(fā)展史 圖/林亦
這里有樁趣事不得不提。5150 制霸個(gè)人電腦市場(chǎng)的時(shí)候,IBM 在計(jì)算機(jī)產(chǎn)業(yè)擁有絕對(duì)話語權(quán),但I(xiàn)BM依然保有危機(jī)意識(shí)。在指令集橫空出世后,硬件開始走向通用化、標(biāo)準(zhǔn)化之路,組裝電腦變得簡(jiǎn)單,IBM預(yù)見到,再過若干年,可能一個(gè)普通年輕人就能完成裝機(jī)工作,那么IBM還有何優(yōu)勢(shì)可言?因?yàn)檠b機(jī)難度降下去之后,處理器的技術(shù)含量就是最高的了,最容易發(fā)展成計(jì)算機(jī)產(chǎn)業(yè)的龍頭老大,從而替代IBM的行業(yè)地位。于是,IBM 開始打壓處理器廠商,當(dāng)時(shí) IBM 就要求英特爾把 x86 指令集授權(quán)給其他廠商,其中就包括今天的 AMD。
第二供應(yīng)商原則就是第一供應(yīng)商授權(quán)第二家公司生產(chǎn)并銷售某個(gè)產(chǎn)品。這種做法起源于六十年代,像CPU這種復(fù)雜的電子元件,如果只有一家公司能夠生產(chǎn),那么購(gòu)買者將承擔(dān)很大的風(fēng)險(xiǎn),當(dāng)時(shí)芯片收購(gòu)方大部分是軍方。為了防止一家獨(dú)大,開發(fā)出了這種制度。后來芯片使用變成了IBM這種民用設(shè)備生產(chǎn)商,這種制度也被沿用了下來。
現(xiàn)在來看,雖然 IBM 頗具眼光,但依然未能阻擋歷史的行程,不僅沒能打壓處理器廠商,還促成了處理器兩大廠商的誕生。正因?yàn)?x86 陣營(yíng)的兩大廠商長(zhǎng)期競(jìng)爭(zhēng),當(dāng)真正的“異族”兵臨城下的時(shí)候,才沒有因?yàn)殚L(zhǎng)期安逸而一敗涂地。這個(gè)呼嘯而來的“異族”軍團(tuán),就是 ARM 指令集架構(gòu)。x86 和 ARM 的核心區(qū)別,就在于 x86 是復(fù)雜指令集,而 ARM 則是精簡(jiǎn)指令集。
在普通用戶看來,精簡(jiǎn)指令集和復(fù)雜指令集是艱深的技術(shù)概念,這里我們可以用樂高積木來類比。首先,程序員給早期計(jì)算機(jī)寫程序,需要直接去使用指令集里的基本指令,如果把寫代碼比作是拼積木的步驟,那精簡(jiǎn)指令集提供的就是一個(gè)個(gè)最基礎(chǔ)的積木塊,而復(fù)雜指令集提供的則是一些拼好的積木團(tuán)。顯而易見,把積木團(tuán)拼起來的步驟肯定更少,代碼也就更短,不僅更好寫,而且很重要的一點(diǎn)是,在那個(gè)年代,這樣還更省錢。運(yùn)行程序的時(shí)候,這些拼裝步驟要存在內(nèi)存里,80年代初 64 KB 內(nèi)存就要 500 美元,多跑幾千條指令那可能就要多花幾千塊錢,甚至有時(shí)候內(nèi)存還可能裝不下,所以對(duì)早期計(jì)算機(jī)來說,直接拼積木團(tuán),步驟更少的復(fù)雜指令集就更受歡迎。
樂高倫敦巴士 圖/網(wǎng)絡(luò)
x86 指令集架構(gòu)誕生于70年代末,流行起于80年代初,那時(shí)候被市場(chǎng)追捧的毫無疑問是復(fù)雜指令集。不過今天的程序員已經(jīng)比老一輩程序員幸福多了,內(nèi)存雖然也不便宜,但跟 40年前比那真是白菜價(jià),而且寫代碼也不用再?gòu)幕局噶顚懫鹆?,直接大塊大塊的“積木”往上拼,這個(gè)就要感謝編譯器。
編譯器就是把程序員用的這些大積木塊自動(dòng)拆碎,自動(dòng)給出把它們拼起來的步驟。一代代工程師的智慧凝結(jié)在一塊,今天的編譯器效率已經(jīng)非常高了,所以也很少會(huì)有程序員、會(huì)去和前面那些基礎(chǔ)的積木團(tuán)塊打交道了,這樣一來,復(fù)雜指令集帶來的編程速度和內(nèi)存成本上的優(yōu)勢(shì),也就沒那么明顯了。
專業(yè)人士可能會(huì)提到 x86 依然具備不可替代的性能優(yōu)勢(shì),但這一點(diǎn)其實(shí)沒那么肯定。如上,復(fù)雜指令集提供直接拼好的積木團(tuán),乍一看好像速度更快,但有一個(gè)問題,你拼這些大積木團(tuán)也要花時(shí)間,拼基礎(chǔ)積木塊的步驟雖然多,但每一步花的時(shí)間也更短。另外,由于每個(gè)基礎(chǔ)塊的拼裝時(shí)間都是一樣的,我還可以同時(shí)拼好幾塊積木,同時(shí)開始同時(shí)完成,一點(diǎn)也不浪費(fèi)時(shí)間,效率成倍增加,這就是精簡(jiǎn)指令集的流水線機(jī)制。而復(fù)雜指令集就無法實(shí)現(xiàn)這種操作,積木團(tuán)有大有小,有的拼起來快,有的拼起來慢,要是同時(shí)多拼幾個(gè)的話,每一步都得等最大的那塊拼完,先拼完的要等后面在拼的,這就造成了資源浪費(fèi)。所以復(fù)雜指令集雖然可以直接操作積木團(tuán),但一對(duì)上讓精簡(jiǎn)指令集效率倍增的流水線,依然自嘆弗如。
圖/林亦
實(shí)際上 80年代末有一些基于精簡(jiǎn)指令集架構(gòu)的處理器,性能可以吊打 x86 處理器,連英特爾和 AMD 都開始做自己的精簡(jiǎn)指令集處理器,但因?yàn)?x86 生態(tài)已經(jīng)成型了,所以精簡(jiǎn)指令集并沒有快速制霸市場(chǎng),精簡(jiǎn)指令集的處理器再?gòu)?qiáng),能給 x86 電腦開發(fā)程序嗎?能運(yùn)行基于 x86 指令集的各種工程模擬軟件嗎?答案都是不能。
Pentium Pro 中具備三個(gè)能夠把x86指令轉(zhuǎn)換成118位定長(zhǎng)的RISC風(fēng)格微操作(micro-ops)的譯碼器,其中一個(gè)能把復(fù)雜x86指令轉(zhuǎn)換成4個(gè)RISC風(fēng)格微操作,另外兩個(gè)解碼器則是各可以把一條“簡(jiǎn)單”x86指令轉(zhuǎn)換成一條RISC風(fēng)格微操作,即所謂的“4+1+1”的3路解碼格局。
而且當(dāng)年英特爾和 AMD 的工程師也都不是等閑之輩,1995年,英特爾在Pentium Pro 上加了一個(gè)對(duì)標(biāo)流水線的機(jī)制,讓復(fù)雜指令可以高效地拆成一系列執(zhí)行時(shí)間相等的微指令,這樣 x86 也能實(shí)現(xiàn)流水線效率,性能劣勢(shì)遂隨之抹平。接著基于 x86 指令集的 Windows 95 和 Windows 98 兩款操作系統(tǒng),又在個(gè)人電腦市場(chǎng)風(fēng)靡。至此,Wintel 聯(lián)盟擁有了 x86 架構(gòu)的護(hù)城河。
實(shí)際上 x86 架構(gòu)的成功,還是離不開歷史行程。如上所述,早期計(jì)算機(jī)最佳選擇是用復(fù)雜指令集,代碼寫得快,還能盡量節(jié)約昂貴的內(nèi)存。就因?yàn)檫@個(gè)早期優(yōu)勢(shì),于是 IBM 5150 就選擇了英特爾的8088并因此爆火,于是 80186、80286、80386 就一路高歌猛進(jìn),還跟 Windows 達(dá)成了長(zhǎng)效合作,于是整個(gè)個(gè)人電腦硬件生態(tài)就都圍繞著 x86 架構(gòu)建立了起來,所以 x86 的成功,尤其是后來的地位,靠的是這一路積累的歷史優(yōu)勢(shì),并非理論特性。
有的讀者可能會(huì)說,x86 后來加入 AVX 指令集,是否說明 AVX 加速離不開復(fù)雜指令集架構(gòu)的理論特性,然而,它其實(shí)還是屬于 x86 的歷史優(yōu)勢(shì)。AVX 主要是給向量計(jì)算加速,精簡(jiǎn)指令集也可以很方便地用軟件編寫復(fù)雜的向量加速指令,但是有寫的必要嗎?當(dāng)年科學(xué)計(jì)算軟件、工程模擬軟件都在 x86上,如果給精簡(jiǎn)指令集架構(gòu)做一套這樣的東西,可能不存在用戶。當(dāng) x86 上的這些軟件都用上了 AVX加速之后,想讓它們?cè)籴槍?duì)精簡(jiǎn)指令集改一套就更難了。編程領(lǐng)域一直有個(gè)說法,“如果一個(gè)東西能用,那就別輕易改”,因?yàn)閺?fù)雜代碼內(nèi)部的邏輯關(guān)系錯(cuò)綜復(fù)雜,改一行代碼,大概率就會(huì)影響其他的地方。所以很多工程類軟件就被牢牢地綁在了 x86 架構(gòu)上,一換其它架構(gòu),即使能運(yùn)行也明顯慢半截,但這其實(shí)并不是 x86 的理論特性決定的,歸根結(jié)底,靠的還是一路積累下來的歷史優(yōu)勢(shì)。實(shí)際上x86 的理論特性反而藏著一個(gè)隱患,就是復(fù)雜指令集里面的“復(fù)雜”這兩個(gè)字。
2013年和 2015年,威斯康星大學(xué)的研究人員發(fā)表了兩篇論文,結(jié)論就是剔除了制程工藝、操作系統(tǒng)這些外界因素之后,處理器的性能和功耗,其實(shí)和使用的是復(fù)雜指令集還是精簡(jiǎn)指令集沒有關(guān)系。反過來說,x86 和 ARM兩大陣營(yíng)比拼的反而是操作系統(tǒng)和制程工藝。英特爾在制程工藝上占據(jù)了很長(zhǎng)時(shí)間的優(yōu)勢(shì),為 x86 的領(lǐng)先地位做出了不小的貢獻(xiàn),但接下來,半導(dǎo)體歷史上值得反復(fù)玩味的一幕就出現(xiàn)了,蘋果找到了當(dāng)時(shí)能把電路結(jié)構(gòu)做得最細(xì)的英特爾,結(jié)果英特爾沒看上蘋果的手機(jī)業(yè)務(wù)。
iPhone 最終選擇了做牛頓手寫板時(shí)用過的 ARM 架構(gòu),起初用的是三星的 ARM 芯片,從 iPhone 4 開始,改用自研的 ARM 芯片。當(dāng)然智能手機(jī)也不止蘋果一家入場(chǎng),但高通、三星,包括華為,在處理器上都選擇了 ARM 架構(gòu),而 x86自從錯(cuò)過 iPhone 之后,就一直沒能入局,于是整個(gè)智能手機(jī)市場(chǎng),就都選擇了ARM 架構(gòu)。為全球市場(chǎng)大量生產(chǎn) ARM 芯片的臺(tái)積電,也在充裕研發(fā)資金的支持下,開始了制程工藝的快速推進(jìn)。然后,質(zhì)變就此發(fā)生。
2017年左右,互聯(lián)網(wǎng)上開始出現(xiàn)關(guān)于臺(tái)積電制程追平英特爾的討論。同年,英特爾不再公布芯片中晶體管數(shù)量的官方數(shù)字,反倒是蘋果從大概2013、2014年左右開始年年公布 A 系列芯片的晶體管數(shù)量,到發(fā)布 M 系列電腦處理器的時(shí)候,更是每三分鐘必展現(xiàn)一張大號(hào)書寫晶體管數(shù)量的圖片。
2013年iPhone 5S秋季發(fā)布會(huì)
2014年iPhone 6 & 6 plus秋季發(fā)布會(huì)
這個(gè)數(shù)字本身意義并不大,多算少算差別很大,但它背后確實(shí)能看出來,時(shí)代變了。到這兒,ARM 陣營(yíng)的制程工藝終于是和 x86 這邊平起平坐了。
此時(shí),復(fù)雜指令集的“復(fù)雜”這兩個(gè)字,就顯露出問題來了。x86 處理器能高效執(zhí)行復(fù)雜指令,離不開比 ARM 更復(fù)雜的硬件結(jié)構(gòu),但是當(dāng)制程工藝逐漸逼近理論極限的時(shí)候,結(jié)構(gòu)的復(fù)雜性就會(huì)把這個(gè)難度翻上幾倍。舉個(gè)例子,假設(shè)我和工作室的李曉白,比賽誰能在同樣尺寸的白紙上畫出更多的重復(fù)圖形,我畫方形,李曉白畫初音立繪吧。那這比賽還有比的必要嗎?結(jié)果顯而易見。所以前幾年咱們看到英特爾的制程停滯不前,并非不思進(jìn)取,而是 x86 制程推進(jìn)的難度真的比 ARM 大太多了。
然而這并不意味著伴隨智能手機(jī)市場(chǎng)一路成長(zhǎng)的 ARM架構(gòu),就能在個(gè)人電腦市場(chǎng)風(fēng)生水起。x86 的護(hù)城河,即我們前面反復(fù)提到的歷史優(yōu)勢(shì),影響不可謂不深遠(yuǎn)。今天ARM 架構(gòu)筆記本最有名的就是蘋果,但更早試水的其實(shí)是微軟和高通。
Wintel 看似是牢不可破的聯(lián)盟,但微軟早就悄悄開發(fā)了 “Wualcomm”,比蘋果的速度還快。早在 2017年,市面上就出現(xiàn)了搭載驍龍 835 的 Windows 筆記本,但完成度并不高。當(dāng)時(shí)這臺(tái)電腦能穩(wěn)定運(yùn)行的主要就是 Windows 自帶軟件,包括微軟 Office 三件套,但像工程模擬、編程開發(fā)、還有游戲等 x86 的傳統(tǒng)優(yōu)勢(shì)項(xiàng)目,就一個(gè)都沒發(fā)揮出來,大部分不能運(yùn)行或加載過慢。從這一點(diǎn)就能看出來 x86 的這道護(hù)城河有多深,別說城外的人無法入侵,城內(nèi)的人也難以另辟蹊徑,突破重圍。但早期 ARM 版 Windows 效果不佳也和試水的態(tài)度有關(guān),ARM 精簡(jiǎn)指令集的特點(diǎn)就是軟件的發(fā)揮空間特別大,它的所有指令都是固定長(zhǎng)度的短指令,就看你軟件怎么去組合和優(yōu)化。加入優(yōu)化到極致,復(fù)現(xiàn)整個(gè) x86 也并非不可能。當(dāng)然這件事工程量巨大,也沒有必要。
不過在 ARM 陣營(yíng)拿到了更好的制程工藝之后,ARM 處理器的硬件性能已經(jīng)得到很大改善,如果專注于寫指令轉(zhuǎn)譯,把大部分 x86 程序的效率在 ARM 架構(gòu)上復(fù)原80%,還是有不錯(cuò)的發(fā)展空間。這件事需要極大的決心和魄力,于是蘋果來了。
Windows on ARM 還是試水,蘋果做M1卻抱著“要么成,要么死”的決心,以做創(chuàng)業(yè)公司的魄力賭上了個(gè)人電腦整個(gè)產(chǎn)品線。破釜沉舟,背水一戰(zhàn),蘋果取得了不俗的成績(jī)。
在不懈努力下,蘋果的 Rosetta 2 轉(zhuǎn)譯做得很不錯(cuò),硬件和驅(qū)動(dòng)也下了不少功夫,甚至還整出了 M1上開虛擬機(jī)跑 Windows,比正宗 ARM 版 Windows 筆記本還穩(wěn)定的賽博狠活。
過渡期靠著 Rosetta 2 的 x86 轉(zhuǎn)譯穩(wěn)住之后,臺(tái)積電 5 nm 制程、還有 macOS 搭配 M1 芯片聯(lián)調(diào)優(yōu)化的優(yōu)勢(shì)就有機(jī)會(huì)展現(xiàn)出來了,整體效果就是輕便、續(xù)航時(shí)間長(zhǎng),性能還很強(qiáng)。市場(chǎng)反饋也比較積極,2020、2021、2022 連續(xù)三年蘋果個(gè)人電腦的銷量增速都要高于全球 PC 市場(chǎng)。
軟件廠商看到之后,也開始陸續(xù)把程序往 ARM 架構(gòu)上遷移,比如全球知名“蘋果最佳開發(fā)者”——微軟,還有 Adobe 的一些軟件。筆者比較關(guān)注的虛幻引擎,也在給 ARM 架構(gòu)做原生適配,這些在網(wǎng)上都能查到詳細(xì)清單。不過最有象征意義的還是前頭說 Linux 的創(chuàng)始人也開始用上ARM 架構(gòu)了,具體來說是一臺(tái) M2 芯片的 MacBook Air,當(dāng)然運(yùn)行的是 Linux 系統(tǒng)。
Linus 在 Linux 5.19 內(nèi)核的發(fā)布郵件里講了這件事,他說目前他還只是拿這臺(tái)筆記本做測(cè)試、寫寫文檔,并沒有真正用它來開發(fā) Linux,但未來他會(huì)讓這臺(tái) ARM 架構(gòu)的筆記本、成為他出差時(shí)候用的主力機(jī),并且他也要用它來認(rèn)真研究 ARM 版 Linux 的開發(fā)了。這段話可以說是給這波由蘋果推動(dòng)的ARM 架構(gòu)在個(gè)人電腦上的發(fā)展做了來自技術(shù)領(lǐng)袖的官方認(rèn)證。
不過說到這兒,ARM 和 x86 在個(gè)人電腦領(lǐng)域的大戰(zhàn)還遠(yuǎn)遠(yuǎn)沒有結(jié)束,甚至可以說尚未開戰(zhàn)。蘋果的“大動(dòng)干戈”,實(shí)際上只是在“護(hù)城河”的外面剛剛安營(yíng)扎寨。如前述,x86 的護(hù)城河是Wintel 聯(lián)盟從 80年代一路積累下來的歷史優(yōu)勢(shì),蘋果電腦即使是在使用英特爾處理器的時(shí)候,也沒和 Wintel 正面對(duì)抗過,像科學(xué)計(jì)算、工程模擬、還有大型游戲這些 Wintel 的傳統(tǒng)強(qiáng)項(xiàng),兩邊基本上沒爆發(fā)過正面沖突。現(xiàn)在真正可能產(chǎn)生變數(shù)的,反而是“城里”的微軟。微軟早變意志不堅(jiān)定,跟“城外”的高通暗通款曲,雖然試水產(chǎn)品效果一般,但現(xiàn)在一旦被“城外吃著火鍋唱著歌”的蘋果一刺激,認(rèn)真對(duì)待這場(chǎng)變革,那 x86的歷史優(yōu)勢(shì)可能就真的要被動(dòng)搖了。
不過其間利害關(guān)系也是錯(cuò)綜復(fù)雜,假如微軟填平“護(hù)城河”,帶領(lǐng)高通長(zhǎng)驅(qū)直入,蘋果就能馬上借勢(shì)跟進(jìn),更別說還有 Steam、Linux,他們一直盯著游戲、編程開發(fā)這些細(xì)分領(lǐng)域。微軟一旦帶路,這些廠商全部會(huì)來分一杯羹。彼時(shí),x86和 Windows,還真不好說是誰先消失于歷史的舞臺(tái)。
更重要的是,這道護(hù)城河可能根本無法填平。x86 上傳統(tǒng)工程模擬軟件的歷史包袱,跟蘋果這邊的程序不是一個(gè)量級(jí),2006年蘋果電腦從PowerPC 換到 x86 架構(gòu)的時(shí)候,上面的程序就經(jīng)歷過一輪遷移,但 x86 上的很多程序是從 80年代一路發(fā)展過來的,不知道有的軟件會(huì)不會(huì)真有來自八九十年代的邏輯或者代碼,如果真有,那真的太酷了,在修改前人代碼能有多慫這件事上,你永遠(yuǎn)可以對(duì)程序員抱有期待,所以 x86 專業(yè)軟件遷移到 ARM 這件事,很可能永遠(yuǎn)都不會(huì)發(fā)生。
另外有沒有可能 x86 給ARM還以顏色呢?說實(shí)話這個(gè)可能性反而不小,現(xiàn)在總說 x86 能耗高,續(xù)航不行,這其實(shí)是被制程拖累了。x86 陣營(yíng)的 AMD,用的是臺(tái)積電的先進(jìn)制程工藝,續(xù)航就好不少。英特爾換上技術(shù)出身的 CEO 之后,資源都在向制程突破上傾斜,甚至還用上了政策工具,按照現(xiàn)在的路線圖,如果英特爾再次奪回了制程工藝的領(lǐng)先地位,這個(gè)劣勢(shì)就能被抹平,假如接下來微軟也能崛起的話,形勢(shì)甚至可以逆轉(zhuǎn)。前段時(shí)間筆者見過一個(gè)榮耀筆記本,它就是給芯片加了一個(gè)功耗限制,系統(tǒng)不工作的時(shí)候把 CPU 頻率壓下去,雖然跑分降了不少,但續(xù)航能多好幾個(gè)小時(shí),用一整天都沒問題。假如微軟大夢(mèng)初醒之后,能好好研究一下這個(gè)方向,從系統(tǒng)層面精準(zhǔn)地控制處理器頻率升降,那 x86的續(xù)航絕對(duì)還有提升空間。
在此,筆者也談一下個(gè)人對(duì) x86 大戰(zhàn) ARM的看法。主觀上講筆者希望 ARM 可以大獲全勝,但這是典型的位置思維偏差。筆者是軟件工程師,而 ARM 講究的就是只給最基本的指令做好硬件實(shí)現(xiàn),剩下的都交給邏輯和算法。從程序員的角度來看,這是個(gè)很清爽的設(shè)計(jì),沒有執(zhí)著于電路里的算法,廣闊天地大有可為。
舉個(gè)實(shí)際例子,十月初 Deep Mind AlphaTensor 這個(gè)項(xiàng)目里,AI 發(fā)現(xiàn)了一種人類未曾發(fā)現(xiàn)的,比現(xiàn)有方法更快的計(jì)算大矩陣相乘結(jié)果的算法。矩陣運(yùn)算是今天計(jì)算機(jī)運(yùn)算的基礎(chǔ),你隨便玩?zhèn)€ 3D 游戲,跑個(gè)圖的過程可能就發(fā)生了幾萬次矩陣運(yùn)算,假如每次矩陣運(yùn)算的速度提高 1%,總性能的提升也是很震撼的。當(dāng)這種底層算法改進(jìn)被發(fā)現(xiàn)的時(shí)候,如果是精簡(jiǎn)指令集處理器,升級(jí)一下編譯器、升級(jí)一下操作系統(tǒng)和軟件,就能感受到性能提升了,但換成復(fù)雜指令集處理器就不一定。有可能也是只需要升級(jí)軟件,但也有可能必須要等到下一代處理器做完硬件升級(jí)才能體驗(yàn)到,這就慢了大半拍。
今天在算法領(lǐng)域,有許多 AI 正在不知疲倦地做著探索工作,未來這種底層算法的新發(fā)現(xiàn)只多不少,所以筆者認(rèn)為,靈活的 ARM 架構(gòu)更適合這個(gè)快速變化的時(shí)代,這也是筆者主觀希望 ARM 替代掉 x86的原因。
客觀分析,根據(jù)前述,x86 被 ARM 顛覆這種情況很難出現(xiàn),要么是英特爾和 AMD 出于某種原因,主動(dòng)決定放棄 x86 改做 ARM 處理器,要么老牌工業(yè)軟件全被新一代產(chǎn)品替代掉,不然 x86 流失的就只是一些中間用戶,市場(chǎng)份額很難受到實(shí)質(zhì)性影響。反之,如果英特爾能在2024年左右率先做到 2 nm 制程,率先進(jìn)入埃米時(shí)代,那 x86 反倒會(huì)逆轉(zhuǎn),用經(jīng)營(yíng)多年的通用性和兼容性,把流失的中間用戶再吸收回來,這件事的可能性要比 ARM顛覆 x86 大不少,至少這個(gè)是寫在了英特爾路線圖上的。所以筆者雖然主觀上支持ARM,但客觀上認(rèn)為 ARM 很難撼動(dòng) x86 在個(gè)人電腦市場(chǎng)的地位。
有趣的是,我們?nèi)ビ^察蘋果在 2024年之前能搶下來多少地盤,會(huì)建立起一個(gè)怎樣的 ARM 新生態(tài),會(huì)不會(huì)有更多的ARM 版生產(chǎn)力工具出來,會(huì)不會(huì)出現(xiàn)一個(gè)基于 ARM 的 3D 創(chuàng)作社區(qū)……這個(gè)過程一定會(huì)誕生很多新的玩法和機(jī)會(huì),筆者也會(huì)持續(xù)關(guān)注。