從Intel和ARM雙雄爭霸讀懂芯片的前世今生
滲透
本文引用地址:http://butianyuan.cn/article/201804/378885.htm2011年1月,微軟在CES宣布要為ARM架構(gòu)開發(fā)Windows 8 RT操作系統(tǒng)。在2012年年底,幾乎和Intel芯手機(jī)上市的同時,包括微軟自家的Surface RT在內(nèi)的一大批二合一平板設(shè)備上市了。Windows 8 RT不支持所有之前為x86平臺開發(fā)的應(yīng)用程序,這成為它最大的軟肋,相關(guān)的產(chǎn)品慢慢銷聲匿跡了。ARM滲透桌面市場的第一次嘗試失敗了。
最近微軟和高通所推出的ARM芯的Windows 10,吸取了教訓(xùn),用Eumlation的機(jī)制來支持舊有的x86桌面程序。這次嘗試能否成功,我們拭目以待。
2009年,ARM推出了Cortex A9處理器,并且用40nm的工藝制造了雙核的樣片,跑到了2GHz。這是ARM第一次推出亂序超標(biāo)量的處理器核,而亂序超標(biāo)量是Intel實現(xiàn)高性能的關(guān)鍵技術(shù),這是非常振奮人心的消息。2010年,Marvell推出了1.6GHz的4核A9的服務(wù)器芯片Armada XP。2013年,這款芯片被部署在百度的存儲服務(wù)器上,這是ARM服務(wù)器第一次大規(guī)模商用。但Marvell并未繼續(xù)推出新的服務(wù)器芯片。2011年,一家創(chuàng)業(yè)公司Calxeda采用Cortex A9,推出了共有480個CPU核的ARM服務(wù)器。但它的成就還不如Armada XP,2013年公司就倒閉了。
2012年,AMD收購了一家做高密度服務(wù)器的廠商SeaMicro,準(zhǔn)備把它所采用的CPU核由Intel的Atom換成ARM架構(gòu)的CPU。但直到2014年AMD才推出8核Cortex A57的服務(wù)器芯片Opteron A1100,之后從來也沒有認(rèn)真賣過它。2015年AMD就放棄了SeaMicro這個子品牌,不再做高密度服務(wù)器了。
ARM進(jìn)攻服務(wù)器市場的第一次嘗試失敗了。Marvell和Calxeda都采用的是32位的ARM核,先天不足;AMD則三心二意,畢竟自己還有x86 Server的生意。另外服務(wù)器市場對于單核單線程的運(yùn)算能力也有很高的要求,僅僅有低功耗和高通量(high throughput)是不夠的。
在ARMv8這一64位指令集發(fā)布之后,Cavium和AppliedMicro這兩家老牌網(wǎng)絡(luò)芯片廠商不約而同地將自己原先芯片中的架構(gòu)換成了ARMv8。因為產(chǎn)品的需要,Cavium和AppliedMicro都有自行設(shè)計處理器微架構(gòu)的能力,前者做MIPS處理器,后者做PowerPC處理器。它們兩家做ARMv8處理器時,也都采用了只授權(quán)指令集,微架構(gòu)自研的模式。Cavium共推出過兩代基于ARM的產(chǎn)品(2014、2016年),AppliedMicro推出過三代(2013、2015、2017年)。隨著產(chǎn)品性能逐漸接近Intel的Xeon E5,它們漸漸不再滿足于原先的網(wǎng)絡(luò)領(lǐng)域,開始覬覦服務(wù)器市場。
最讓人期待的還是高通的Centriq芯片,2015年年底量產(chǎn)24核版本,2016年年底量產(chǎn)升級48核版本,還得到了微軟的強(qiáng)力支持??紤]到高通還和貴州成立了合資公司華芯通,Centriq很可能成為在國內(nèi)大規(guī)模商用的第一款A(yù)RM服務(wù)器芯片。
另外具有國防背景的天津飛騰公司,也有ARM服務(wù)器芯片的產(chǎn)品,只是不知道這些產(chǎn)品何時能在通用市場上鋪貨。
其他確定在研發(fā)ARM Server芯片的大廠還包括Broadcom和華為,進(jìn)度上要略慢一些。
ARM陣營對服務(wù)器發(fā)起的第二波沖擊,陣容要強(qiáng)大得多豪華得多。因此ARM才敢于宣稱,在2021年拿下25%的服務(wù)器市場份額。
要做好Server CPU,ARM架構(gòu)還有些功課要一點一點補(bǔ)。多Socket服務(wù)器所需要的一致性協(xié)議,業(yè)界剛剛?cè)〉霉沧R準(zhǔn)備采用CCIX,但還沒有具體的產(chǎn)品出來。做云端虛擬機(jī)所必備的虛擬化支持,ARM還有些性能問題。x86處理器提升Throughput的利器超線程技術(shù),ARM陣營尚不能支持。Intel芯片近年來陸續(xù)增加的安全特性,也夠ARM追趕一陣子的。但目前看來,ARM已經(jīng)沒有致命的短板,蠶食掉Intel的服務(wù)器市場份額是板上釘釘?shù)氖虑?,唯一的懸念是究竟多少份額?
未來ISA將不那么重要
從長遠(yuǎn)看,半導(dǎo)體廠商對建立于ISA之上的生態(tài)系統(tǒng)的掌控力會變?nèi)?,而ISA本身,會變得越來越不重要。這是軟件技術(shù)發(fā)展的趨勢決定的,如前所述,這些技術(shù)在90年代末就已經(jīng)初有小成了。
第一是Web技術(shù)。網(wǎng)頁開發(fā)領(lǐng)域,有一個大家視若無睹的奇跡:最后居然只有Javascript一種開發(fā)語言屹立至今。要知道在服務(wù)器端和移動App領(lǐng)域,開發(fā)語言多如過江之卿。其中原因我也分析不出。反正js的挑戰(zhàn)者(微軟的VBScript和谷歌的Dart)都失敗了。網(wǎng)頁開發(fā)領(lǐng)域面臨的主要問題是瀏覽器差異大,API不太兼容。這個問題慢慢在緩解中,一來瀏覽器戰(zhàn)爭大局已定,Android和PC上的Chrome,以及iPhone和Mac上的safari是勝者;二來很多網(wǎng)頁應(yīng)用是跑在App里面的,例如微信和支付寶里,這種場景下Javascript的API已經(jīng)被特定廠商規(guī)范過了。
由于開發(fā)語言和API的高度統(tǒng)一,H5(HTML5+Javascript)已經(jīng)成了兼容所有硬件的最通用的軟件開發(fā)平臺。曾經(jīng)有人鼓吹H5會趕走移動端和PC端的原生程序,后來被打臉了。但是移動端和PC端的原生App中,越來越多的界面是用H5生成的了,微信、支付寶、京東、淘寶、愛奇藝、有道詞典……統(tǒng)統(tǒng)都是這樣。
Javascript吞噬一切的進(jìn)程還在持續(xù)。2007年,Stack Overflow的聯(lián)合創(chuàng)始人Jeff Atwood曾經(jīng)提出過一條Atwood定律:任何能夠用JavaScript實現(xiàn)的應(yīng)用系統(tǒng),最終都必將用JavaScript實現(xiàn)。十年過去了,此定律基本奏效。把Javascript的一個子集當(dāng)作匯編語言的asm.js及其后續(xù)的WebAssembly,更加使得網(wǎng)頁應(yīng)用有媲美原生應(yīng)用的潛力,在瀏覽器里跑Unity3D的游戲都不是問題。
獨立的應(yīng)用程序仍然會是移動和桌面端的主流,因為沒有獨立程序,不方便做彈窗廣告,不方便啟動后臺進(jìn)程收集用戶信息,不方便引誘用戶安裝其它獨立程序。但Web的能力的確在快速提升,Web Component技術(shù)實現(xiàn)了類似GUI庫的Widget復(fù)用,如今在瀏覽器里實現(xiàn)Office和IDE的功能都毫無問題(office365.com、docs.google.com、editor.construct.net、騰訊文檔);而WebGL已經(jīng)能支持Unity3D這種大型游戲框架。
照此趨勢發(fā)展下去,獨立應(yīng)用程序僅僅會作為一個包裝而存在,開發(fā)者寫一套H5,加上不同的包裝,就成了PC、Mac、Android、iOS上的獨立應(yīng)用程序,不加包裝,就是網(wǎng)站。微軟去年開源的ReactXP,就是為了實現(xiàn)這一目標(biāo)。
這意味著什么?不但底層的CPU被OTT了,操作系統(tǒng)也被OTT了。因為移植一個應(yīng)用程序到各個平臺上,幾乎沒有什么難度。誰將是生態(tài)系統(tǒng)的掌控者?若干個超級App,像微信、QQ、支付寶這樣的。它們不但包裝自家的應(yīng)用,其它開發(fā)者也可以把自己的應(yīng)用放在這個包裝里面,借重超級App的廣泛覆蓋度,抵達(dá)最終用戶。前文提到了,如果微信小程序獲得成功,騰訊必然會重拾Q+的野心,把QQ變成桌面上各種H5應(yīng)用的App Store。
如果真的會這樣,微軟豈不是會比Intel還著急?拜托,微軟已經(jīng)不是二十年前主要靠賣Windows和Office的光盤賺錢的那家公司了,未來它會專注于云計算。但I(xiàn)ntel還和二十年前一樣在賣芯片。
第二是編譯技術(shù)尤其是虛擬機(jī)的發(fā)展。如今的編程語言太多了,80年代那種搞定C語言編譯器就OK的好日子早已過去。任何一個新CPU架構(gòu)要想在移動、桌面、服務(wù)器市場站穩(wěn)腳跟,都得搞定無數(shù)的編譯器(包括虛擬機(jī)用的JIT編譯器),這是個壞消息。但好消息是,搞定這些編譯器基本就差不多了,不用勸說開發(fā)者重寫匯編代碼。
老一代程序員對x86處理器架構(gòu)和匯編都非常熟悉。求伯君當(dāng)年開發(fā)WPS時,手寫幾十萬行匯編;雷軍讀本科時,是系里20多年來拿過《匯編語言程序設(shè)計》滿分成績的兩個學(xué)生之一;梁肇新開發(fā)超級解霸時,把MMX匯編玩得出神入化。感興趣的讀者可以看看梁的《編程高手箴言》,那里面,描繪了一個對現(xiàn)在的程序員而言,完全陌生的世界。在那個世界里,你開發(fā)的PC應(yīng)用程序想要移植到Mac平臺上,幾乎要完全重寫。
如今高層次的編程語言接管了一切,匯編語言從很多學(xué)校的本科課程里消失了,入門教材也從C改成了Java,甚至是Javascript或Python。程序員完全不熟悉底層的CPU。即使是真的需要拼性能的場合,編譯器也在很大程度上代替了手寫匯編。ARM的工程師告訴我說,ARM在開發(fā)開源的Compute Library過程中,主要依靠在C源碼中加入標(biāo)注來指導(dǎo)編譯器生成SIMD指令,而不是像梁肇新那樣手寫。
在這種情況下,軟件平臺廠商就變得非常強(qiáng)勢,因為他們知道,應(yīng)用開發(fā)商只需付出重新編譯一遍的代價。比如蘋果,就要求所有的App都改為64位的。這樣,未來蘋果在手機(jī)CPU里放棄對32位應(yīng)用的支持時,甚至都不會有人感覺得到。這對于x86生態(tài)系統(tǒng)而言,簡直是天方夜譚,顯然微軟對此非常眼饞,并且嘗試在Windows 10 S中復(fù)制這種掌控力。
至于谷歌,Android把所有應(yīng)用都跑在虛擬機(jī)上的嘗試雖然失敗了,但如果未來它再針對AR/VR、AI或機(jī)器人發(fā)布一個什么軟件平臺的話,就很有可能完全禁止原生程序。
而Oracle,正在努力開發(fā)可以支持所有編程語言、能把所有CPU給OTT掉的全新VM:GraalVM。我們拭目以待。
第三是Emulation技術(shù)的發(fā)展。雖然眼下ARM陣營中靠Emulation進(jìn)攻Intel的先鋒是高通,但最可怕的選手其實是NVidia。NVidia擁有最厲害的Emulation技術(shù),而且江湖傳言Denver處理器的初衷就是針對x86的。當(dāng)初NVidia的Tegra處理器曾被拿來做Windows 8 RT的二合一平板。如今Denver處理器跑Windows 10絕不會讓人意外,那么它會怎么跑呢?肯定是直接在底層硬件上做x86的Emulation,而不是在Emulate出來的ARM指令集上再做一層Eumulation。
Denver處理器前些年沒有跳出來搶Intel的飯碗,很大程度上是因為NVidia還在做Intel平臺的主板芯片組,另外NVidia還沒有那么強(qiáng)大。如今NVidia也不做芯片組生意了,還借AI的東風(fēng),股價扶搖直上。說不定哪天,NVidia就會放出Denver處理器的x86 Emulator,做到單線程性能不輸Xeon,強(qiáng)攻服務(wù)器市場。想想看,在單芯片上集成GPU和x86版的Denver,云計算廠商能不動心?
如果未來Emulation技術(shù)進(jìn)一步發(fā)展并且被越來越多的廠商掌握,很可能會出現(xiàn)這種情況:CPU本身是某種外界不了解的指令集,官方發(fā)布時,只能Emulate某種開放的指令集,例如RISCV;但是用戶可以給它安裝不同的Emulator,讓它變成x86-64處理器,或者ARM64處理器。在軟件定義一切的時代,這并不是多么瘋狂的想象。
總之,CPU依然不可或缺,但CPU用誰家的,是什么指令集,會越來越不重要。軟件的發(fā)展,會在用戶和底層的CPU之間加入足夠大的緩沖帶,CPU的差異,越來越難以被用戶察覺到。
展望:讓CPU不再難
此文在最后修改之時,看到了梁寧的文章《一段關(guān)于國產(chǎn)芯片和操作系統(tǒng)的往事》,里面寫到:
就像10多年前一樣,只要搞定知識產(chǎn)權(quán)問題,選擇技術(shù)路線,找會干的人,投入干,CPU/芯片就能夠做出來。搞不定的依然是操作系統(tǒng)。差距大的依然是生態(tài)。
當(dāng)年,繞得過Intel,跨不過微軟。如今,繞得過Arm,做不出安卓。
我也曾在北大參與過國產(chǎn)CPU的研發(fā),生態(tài)之難體會頗深,真的,只是燒錢做芯片,無論燒多少都無法挑戰(zhàn)Intel和ARM,何況過去二十年真的沒燒多少。
但我并沒有梁寧那么悲觀,畢竟技術(shù)的潮流無法抗拒,借用馬化騰的一句名言“可能你什么錯都沒有,最后就是錯在自己太老了”。
Intel和ARM如此強(qiáng)大而且極少犯錯,我們?nèi)绱巳跣【退闼鼈兎稿e也無法利用——但我們可以欺負(fù)它們的“老”。
在此借新智元的寶地,向小馬哥呼吁一聲:
請借助騰訊的強(qiáng)大生態(tài),把CPU和OS這兩個老大難問題給OTT掉吧!
做法非常簡單,把Q+桌面再重新搞起來,做一款完全使用Javascript&Webassembly編程的操作系統(tǒng),里面用騰訊文檔來替代Office,各種微信小程序都支持起來,適當(dāng)支持游戲(但要加入家長監(jiān)控系統(tǒng))。補(bǔ)貼芯片廠,讓它們使用ARM或RISC-V外加國產(chǎn)Imagination gpu做SoC,生產(chǎn)類似Surface這樣的二合一平板。底層CPU使用的ISA完全不可見,上層編程完全用H5。這樣,就幫祖國把CPU和OS這兩個陳年大洞都補(bǔ)上了。
芯片要下苦功,別凡事都指望模式創(chuàng)新。這不假。但偏偏CPU真的面臨一個十倍速變革的機(jī)會,真的有靠模式創(chuàng)新而勝出的機(jī)會,為什么不試試呢?如果騰訊不去嘗試一下,誰還有資格呢?促進(jìn)祖國的微電子發(fā)展功德無量,相信這次不會有人說騰訊壟斷之類的閑話。
評論