從Intel和ARM雙雄爭霸讀懂芯片的前世今生
這幾天中興事件持續(xù)發(fā)酵以來,各種議論紛紛擾擾。
本文引用地址:http://www.ex-cimer.com/article/201804/378885.htm上周,新智元推送了《中國芯“逃兵”:缺芯是因為缺錢;中國芯“老炮”:芯片救國靠BAT不是開玩笑》一文,引起了無數(shù)從業(yè)者熱議。
有十余年芯片從業(yè)經(jīng)驗的水木網(wǎng)友torvaldsing告訴新智元,這幾天對他觸動最大的,還是碧樹西風(fēng)寫的這句話:
一碗牛肉面,真的要用牛肉,真的要用面,真的要燉很久,這么簡單的道理,偌大一個國家,這么多精英,過去這么多年了,咋就不能懂呢?
因此,torvaldsing投書新智元,嘗試談一談x86生態(tài)系統(tǒng)和ARM生態(tài)系統(tǒng)的艱難發(fā)展歷程和殘酷的市場競爭,向大家介紹一下做CPU的各種困難,以及眼下能看到的一線希望。
以下是torvaldsing的雄文:
我盡量寫得輕松一些,因為其實這個話題很有趣,仔細(xì)探究起來,很多看似爆炸性的新聞,其實草蛇灰線伏脈千里,在很早之前就發(fā)端了,這其中的故事,真的像演義小說一樣好玩。
本文會羅列很多的往事和參考資料,保證有誠意。一些地方?jīng)]忍住加上了一些三腳貓的分析,歡迎拍磚打臉。
x86生態(tài)系統(tǒng)
如今Intel在服務(wù)器市場占有率近乎100%,在桌面市場也大于80%,再加上Intel一貫重視宣傳,在普通大眾的心目中,Intel就是芯片的代稱,甚至是高科技的代稱。但I(xiàn)ntel并非生而如此,它的牛X千真萬確是熬出來的,是在列強環(huán)伺的競爭環(huán)境中殺出來的。
稱王
七十年代,在搭上IBM PC這趟快車之前,Intel的8位處理器已經(jīng)很成功,但也有很多競爭者,Zilog是其中翹楚,它研發(fā)的Z80系列產(chǎn)品和Intel的8080兼容,性價比高。一直到90年代,中國很多大學(xué)的微機實驗課,還在用Zilog的板子。當(dāng)時還有一款處理器風(fēng)頭不遜于8080系列,即MOS公司的6502。后來MOS把6502的ISA(指令集架構(gòu))授權(quán)給了眾多廠商,流傳甚廣。70年代蘋果創(chuàng)立之初的Apple-I和Apple-II,80年代任天堂的紅白機,90年代初的小霸王學(xué)習(xí)機,90年代末的文曲星,都使用了6502系列的CPU。
IBM PC給了Intel和微軟大發(fā)展的機會。但它倆必須面對競爭。IBM PC是IBM主導(dǎo)下的一個開放標(biāo)準(zhǔn),各個零部件都是可以替換的。所以才有了“兼容機”的概念,和延續(xù)至今的裝機市場。當(dāng)時IBM要求Intel必須把x86指令集授權(quán)給其它廠商,避免CPU供應(yīng)商一家獨大。(詳細(xì)的x86兼容處理器生產(chǎn)廠家列表見https://en.wikipedia.org/wiki/List_of_x86_manufacturers)IBM自己也有生成x86兼容CPU的權(quán)力。同時,為了限制微軟的MS-DOS,IBM自己也做DOS操作系統(tǒng),名為PC-DOS。
在IBM PC陣營內(nèi)部,Intel面對其它CPU供應(yīng)商的競爭,在陣營外部,還要和蘋果的Macintosh電腦競爭。當(dāng)時蘋果已經(jīng)換用Motorola 68000系列CPU,性能強勁,圖形界面誘人。當(dāng)時用Mac的人,逼格要高于用IBM PC的人。
Intel頂著陣營內(nèi)外的競爭壓力,苦心孤詣地發(fā)展壯大。這時候潛在的威脅在慢慢醞釀。從1981年的RISC-I開始,精簡指令集(RISC)逐步流行起來,誕生了一系列RISC風(fēng)格的CPU:1985年MIPS公司推出第一款商用的RISC芯片,HP公司在1986年推出PA-RISC,SUN公司在1987年推出SPARC,Motorola在1988年推出MC88000。當(dāng)時大家普遍認(rèn)為RISC優(yōu)于以x86為代表的CISC風(fēng)格CPU,就連Intel和AMD也害怕在RISC潮流中落伍,AMD在1987年推出了AM29000,Intel在1988年推出了i860/i960。
開始時RISC似乎并沒有威脅到桌面市場,MIPS、PA-RISC、SPARC全是用來做服務(wù)器和工作站的。被蘋果流放的喬布斯用MC88000系列CPU做NeXT桌面電腦,鎩羽而歸。1986年,英國的Acorn公司推出了一款名為ARM的RISC處理器,次年,它還配了個操作系統(tǒng)叫RISC OS,強攻桌面市場,可惜最終只在英國掀起來了一些波瀾。
1991年,RISC陣營實實在在地殺入桌面市場。這一年,IBM看到在PC陣營里,Intel和微軟這兩個小弟坐大,慢慢不受自己的控制,索性拉攏Apple和在RISC市場不得志的Motorola,推出了PowerPC架構(gòu),由IBM和Motorola生產(chǎn)芯片,Apple做操作系統(tǒng)和整機,推出全新的Power Macintosh電腦。這三家組成了AIM(Apple-IBM-Motorola)聯(lián)盟,氣勢洶洶地向Wintel聯(lián)盟發(fā)起攻擊。
結(jié)果是Wintel贏了,個中原因眾說紛紜。有人說Wintel保持對已有軟件的向下兼容,而Apple頻繁更換底層的CPU,導(dǎo)致的不兼容氣走了用戶,然后由此強調(diào)軟件生態(tài)的重要。我則以為,歷史的發(fā)展有一定的偶然性,如果當(dāng)時Wintel不是比爾蓋茨和格魯夫在掌舵,而Apple是喬布斯在掌舵,可能結(jié)局完全不同。2005年,喬布斯掌舵下的蘋果,把Mac里面的CPU由PowerPC換成Intel的芯片,就完成得干脆利落,沒怎么受到軟件生態(tài)的牽絆。
總之,在80年代,大家就已經(jīng)深深懂得CPU的ISA是軟件生態(tài)系統(tǒng)的根基,不愿讓這個“生態(tài)之根”被別人控制。整機和系統(tǒng)的制造商,通過強制CPU廠商給其它廠商授權(quán)自己的ISA,來保證有第二家甚至更多的供應(yīng)商。如果不慎“生態(tài)之根”被別人控制了,例如IBM被Wintel篡了權(quán),甚至不惜另起爐灶來競爭。
同樣是把自己的指令集授權(quán)給其它廠商,Intel把幾乎所有的其它供應(yīng)商都擠死了,只省下AMD茍延殘喘;MOS則銷聲匿跡了,完全靠其它生產(chǎn)商把6502系列延續(xù)到了二十一世紀(jì)。造成這一差異的原因縱有千萬條,我想“打鐵還需自身硬”是最根本的。
霸業(yè)
在桌面市場上,Windows 95和Windows 98這兩款操作系統(tǒng),讓W(xué)intel聯(lián)盟登上了霸業(yè)的頂端。從1995年到2003年,Intel看起來簡直是不可戰(zhàn)勝的。
與此同時,Intel還把幾乎所有的RISC架構(gòu)的CPU都干趴下了,占領(lǐng)了服務(wù)器市場。原因大概有這么幾點。
第一,從技術(shù)角度講,RISC是一種設(shè)計CPU的理念,而不是具體的某一種ISA。像x86這樣的復(fù)雜指令集,其實在實現(xiàn)過程中,也能借重RISC的理念。1989年的80486,已經(jīng)隱隱地可以看到RISC風(fēng)格的流水線,1995年的Pentium Pro,其核心已經(jīng)是一個亂序執(zhí)行的RISC了,只不過多了一個復(fù)雜的譯碼邏輯,把x86指令拆分成RISC風(fēng)格的微操作。因此從技術(shù)角度講,RISC指令集未必比x86有優(yōu)勢。
第二,RISC成也UNIX,敗也UNIX。UNIX和C語言樹立了很好的軟件開發(fā)傳統(tǒng),確保同一套代碼可以很方便地在不同CPU之間移植。80年代,一大堆RISC架構(gòu)的CPU,都可以很快配上自己的UNIX,很快把已有的C語言編寫的應(yīng)用跑在CPU上,然后就可以賣了。SUN公司的SPARC配有Solaris,HP公司的PA-RISC配有HP-UX,IBM公司的PowerPC配有AIX。
這些林林總總的UNIX變體,反過來又進(jìn)一步促使UNIX生態(tài)系統(tǒng)中軟件開發(fā)人員重視代碼的可移植性,大家都很小心地圍繞POSIX標(biāo)準(zhǔn)來編程,避免過分依賴于某個操作系統(tǒng)獨有的功能。這樣,一旦Intel芯片攜Linux(一種開源的UNIX變體)來和RISC架構(gòu)的工作站競爭,軟件應(yīng)用就紛紛以很小的移植難度,離開了昂貴的專有UNIX工作站。
第三,當(dāng)時PC市場比服務(wù)器市場大得多,Intel在PC市場的盈利幫助它研發(fā)更好的服務(wù)器芯片,巨大的出貨量降低了芯片的制造成本。研發(fā)優(yōu)勢和成本優(yōu)勢,奠定了Intel最終勝利的基礎(chǔ)。
這段時間,Intel還幾次面臨挑戰(zhàn),每次都成功保衛(wèi)了自己對于生態(tài)系統(tǒng)的掌控權(quán)。
第一個挑戰(zhàn),來自Internet瀏覽器。Netscape Navigator誕生后,對微軟和Intel都是挑戰(zhàn)。雖然當(dāng)時的動態(tài)網(wǎng)頁還非常初級,但是已經(jīng)有人喊出“Web is the computer”的概念。等到Java Applet出現(xiàn)之后,大家更是覺得可以在網(wǎng)頁上實現(xiàn)桌面應(yīng)用的效果,未來只需一個瀏覽器,就能取代桌面。Netscape的Marc Andreessen在1995年,就著手把Netscape瀏覽器打造成一個Internet OS。以那個時代的軟硬件水平,毫無疑問地,這些嘗試失敗了。
用一個高層次的軟件API,兜住所有的上層應(yīng)用,然后讓底層的硬件,都來支持這個API——這個主意不單單在技術(shù)上看起來很炫,從商業(yè)上,這是上層應(yīng)用廠商消解底層平臺廠商生態(tài)霸權(quán)的終極武器。因此,在那之后的二十年里,商業(yè)上的嘗試一直在持續(xù),包括:
1. 騰訊開發(fā)的WebQQ和Q+,在網(wǎng)頁里面提供一個類似Windows桌面的應(yīng)用場景,后來失敗了,回退到功能單一的SmartQQ。個中原因,我個人認(rèn)為還是那個時代的PC性能不夠。
2. 騰訊開發(fā)的微信小程序,在微信里面通過HTML5和Javascript實現(xiàn)手機App的功能,可以橫跨iOS和Android。
3. 谷歌推出ChromeOS和ChromeBook筆記本,里面跑的應(yīng)用,全都是基于HTML5和Javascript的。
我個人認(rèn)為,微信小程序幾乎一定會成功,它一旦成功,騰訊必然會重燃在PC平臺上做Q+的野心。Intel在桌面的霸權(quán),最大的威脅不是AMD,也不是ARM,而很可能是HTML5+Javascript,熟悉“降維打擊”的人,對此不會感到意外吧。
第二個挑戰(zhàn),來自虛擬機(Virtual Machine)和JIT(Just-in-time)編譯器。先鋒是Java的虛擬機JVM,后來微軟也推出了DotNet虛擬機,支持C#等語言。虛擬機有一套虛擬的指令集,源代碼先被編譯到這個虛擬的指令集上,在程序運行時,JIT編譯器再把這套虛擬指令集編譯為CPU的原生指令集。面向虛擬機開發(fā)的程序,例如Java Applet,可以在不同的CPU和操作系統(tǒng)平臺上運行。
評論