從Intel和ARM雙雄爭(zhēng)霸讀懂芯片的前世今生
如果有某個(gè)虛擬機(jī),它的指令集可以無縫支持所有的編程語言,還能保證高效率,那么所有CPU的都將被OTT(over-the-top)了,就像短信被微信OTT一樣??上н€沒有一個(gè)虛擬機(jī)可以實(shí)現(xiàn)此目標(biāo)。現(xiàn)在大家熟知的虛擬機(jī),都是和語言綁定的,例如JVM只支持Java、scala、kotlin等;DotNet虛擬機(jī)只支持C#、VB.net等;V8只支持Javascript、typescript等;HHVM只支持PHP。
本文引用地址:http://www.ex-cimer.com/article/201804/378885.htm同一個(gè)VM上跑的語言相互調(diào)用很容易,跨VM很難互操作。由于虛擬機(jī)實(shí)在太多了,它們反而成了新的CPU架構(gòu)的攔路虎:80年代只需要搞定C語言編譯器就能賣Unix工作站,如今ARM服務(wù)器要想挑戰(zhàn)Intel,必須把所有這些基于VM的編程語言都支持得很好,JIT編譯器的效率都要做得比較高才行。
第三個(gè)挑戰(zhàn),來自Transmeta公司對(duì)x86指令集的Emulation(Emulation這個(gè)詞很難翻譯,索性不翻了)。簡(jiǎn)單地說,Emulation就是把x86指令集看成一個(gè)虛擬機(jī)的指令集,然后用類似JIT編譯器的技術(shù),在非x86的CPU上跑x86的程序。未經(jīng)許可用別人的ISA做CPU是違法的,但用Emulation的方式實(shí)現(xiàn)ISA則不違法(Intel和Transmeta只打過專利的官司沒打過ISA的官司,Intel還輸了)。
如今最廣為人知的Emulator是Qemu,上文提到的x86、MIPS、PowerPC、Sparc、MC68000它都可以支持。一般而言,Emulation會(huì)導(dǎo)致性能下降一個(gè)甚至若干個(gè)數(shù)量級(jí),根本不足為慮。
1995年,Transmeta公司成立,經(jīng)過艱苦的秘密研發(fā),于2000年推出了Crusoe處理器,用Emulation的方式,在一款VLIW(超長(zhǎng)指令字)風(fēng)格的CPU上執(zhí)行x86的程序,這樣就規(guī)避了沒有x86指令集授權(quán)的問題。Transmeta的牛X在于,雖然是Emulation,但實(shí)現(xiàn)了接近Intel處理器的性能,同時(shí)功耗低很多。2000年年底Transmeta的IPO大獲成功,其風(fēng)光程度,直到后來谷歌IPO的時(shí)候才被超過。
Transmeta最后還是失敗了,Intel在渠道上打壓它是次要原因,性能不足是主要原因。雖然VLIW在90年代中后期被廣為推崇,但事實(shí)證明,它的性能比起亂序執(zhí)行的超標(biāo)量架構(gòu),還是差一截。另外Transmeta的芯片是在臺(tái)積電制造的,那個(gè)時(shí)候不比現(xiàn)在,臺(tái)積電的工藝水平比起Intel還差很多。2000年的時(shí)候,PC還遠(yuǎn)沒有性能過剩,性能還是比功耗重要。等到2010年,Intel的Atom處理器慢得一塌糊涂,依然靠著低功耗,點(diǎn)燃了上網(wǎng)本的大火。
Transmeta雖然失敗了,Emulation技術(shù)仍然在發(fā)展。NVidia在2008年購買了Transmeta的低功耗技術(shù)的授權(quán)。2014年,NVidia推出了Tegra K1芯片,其中的Denver處理器,利用Emulation技術(shù),在底層的7路超標(biāo)量架構(gòu)上,實(shí)現(xiàn)了ARM64指令集。值得注意的是,NVidia擁有ARM64的指令集的授權(quán),它不是用Emulation技術(shù)來規(guī)避什么,而是用Emulation來提升性能,實(shí)現(xiàn)比硬件直接執(zhí)行還要高的性能。根據(jù)評(píng)測(cè)結(jié)果,Denver超過了當(dāng)時(shí)蘋果最好的手機(jī)CPU。近期推出的Denver2處理器的,性能更是秒殺蘋果的A9X和華為的麒麟950。
Emulation技術(shù)如果真的發(fā)展到了比直接執(zhí)行還要快,Intel的麻煩才剛剛開始。微軟聯(lián)合高通,推出基于SnapDragon835處理器的筆記本,運(yùn)行Windows 10操作系統(tǒng),上面可以安裝x86的軟件。Intel雖然很不爽,但Emulation并不需要指令集授權(quán),所以他只能警告說,在實(shí)現(xiàn)Emulator時(shí),不許侵犯Intel的專利,而這一點(diǎn),微軟和高通肯定早已考慮到了。
挫折
x86生態(tài)系統(tǒng)曾經(jīng)面對(duì)過一次最嚴(yán)重的、近乎滅頂之災(zāi)的挑戰(zhàn)。這次挑戰(zhàn)來自于誰?就來自于它的締造者Intel。
Intel心不甘情不愿地把自己的x86指令級(jí)授權(quán)給了AMD等一眾供應(yīng)商,眼睜睜看著他們分享自己的利潤(rùn),很不爽,于是想在x86之外另起爐灶,建設(shè)自己獨(dú)享的生態(tài)系統(tǒng)。正巧在90年代初期,升級(jí)64位計(jì)算成為一個(gè)風(fēng)潮,1991年有MIPS R4000,1992年有DEC Alpha,1995年有SUN SPARC64。1994年開始,Intel聯(lián)合HP,準(zhǔn)備趁32位升級(jí)64位的時(shí)機(jī),拋棄原有的x86架構(gòu),新推出一個(gè)EPIC(Explicitly Parallel Instruction Computing)架構(gòu),名為IA64(Intel Architecture 64-bit)。
x86架構(gòu)兼容老舊應(yīng)用程序的能力是出了名的。8086把8位的8080升級(jí)為16位的時(shí)候,80386升級(jí)到32位的時(shí)候,都完全兼容舊有的程序。直到今天,Intel的處理器依然支持虛擬8086模式,在此模式下,可以運(yùn)行30多年前的8086程序。升級(jí)到64bit的時(shí)候,Intel居然要放棄所有之前的8位、16位、32位應(yīng)用了!可想而知當(dāng)時(shí)在業(yè)界會(huì)引起怎樣的軒然大波。Linux的締造者Linus Torvalds公開對(duì)此表示反對(duì)。
IA64進(jìn)展得并不順利,EPIC本質(zhì)上就是一種VLIW,如前所述,VLIW的性能比亂序超標(biāo)量要差。而且EPIC的編譯器非常難以開發(fā)。原定1997年就會(huì)推出產(chǎn)品,但直到1999年才發(fā)布IA64指令集,2001年才推出產(chǎn)品。另外Intel也不敢完全放棄之前的32位x86應(yīng)用,它給出的解決方案是Emulation,但EPIC不像Transmeta為Emulation做了很多專門優(yōu)化,跑32位x86應(yīng)用的性能很差。
這個(gè)時(shí)候,千年老二AMD站了出來,為x86續(xù)命。2000年,它推出了AMD64指令集,延續(xù)了x86架構(gòu)兼容老舊應(yīng)用程序的優(yōu)良傳統(tǒng),可以原生執(zhí)行8位、16位、32位的老程序。2003年,AMD推出Opteron服務(wù)器CPU和Athlon64桌面CPU。
AMD64從技術(shù)上和生態(tài)上都?jí)毫薎A64一頭,Opteron在服務(wù)器市場(chǎng)上為AMD贏得了前所未有的成功。2004年,Intel推出了代號(hào)為Nocona的至強(qiáng)服務(wù)器CPU,它支持一種稱為EM64T的技術(shù),EM64T就是AMD64的馬甲。江湖有傳言說,Intel曾想提出另外一套不同于AMD64的x86升級(jí)64位的方案,但微軟為了避免x86生態(tài)的分裂,極力阻止了。2012年,Intel推出了最后一代IA64的CPU,關(guān)閉了這個(gè)不賺錢的產(chǎn)品線。
回顧這段歷史,有幾點(diǎn)特別令人感慨。
首先,即使是看似無比強(qiáng)大不可戰(zhàn)勝的Intel,不顧生態(tài)系統(tǒng)中其它伙伴的利益,一意孤行也是會(huì)撞南墻的。
其次,幸好由于歷史的原因,x86生態(tài)中,AMD和Intel是交叉授權(quán)的關(guān)系,AMD有權(quán)加入3DNow這種多媒體擴(kuò)展指令,也有權(quán)加入64位指令,如果是像如今ARM的架構(gòu)級(jí)授權(quán)方式,被授權(quán)的企業(yè)不能自行加以擴(kuò)展,那可能還真沒有辦法阻止Intel了。
最后,Intel的執(zhí)行力還真是超強(qiáng),掉頭極快,EM64T的CPU只比AMD64的CPU晚出了一年(當(dāng)然不能排除Intel早就有備份方案)。
雖然在IA64上栽了跟頭,但I(xiàn)ntel靠著自己的技術(shù)實(shí)力,持續(xù)不斷地推出性能和功耗表現(xiàn)更好的產(chǎn)品,AMD在64位戰(zhàn)役中所取得的優(yōu)勢(shì),慢慢也被消磨掉了。
歲月如梭。進(jìn)入移動(dòng)互聯(lián)網(wǎng)和云計(jì)算時(shí)代之后,服務(wù)器的需求量上升。這時(shí)RISC架構(gòu)的服務(wù)器CPU幾乎快被消滅干凈了,只剩下IBM Power奄奄一息。于是Intel幾乎獨(dú)享了服務(wù)器市場(chǎng)擴(kuò)大所帶來的紅利。但它卻高興不起來,因?yàn)橐苿?dòng)市場(chǎng)形成了ARM一家獨(dú)大的局面,移動(dòng)終端CPU這個(gè)市場(chǎng),Intel怎么也擠不進(jìn)去。
正巧Intel在剛剛火過一把的上網(wǎng)本市場(chǎng)里設(shè)計(jì)了一種低功耗的x86核心,即Atom。Intel以Atom為武器,殺入了手機(jī)芯片市場(chǎng)。2012年,Intel的老伙計(jì)聯(lián)想,推出了第一款I(lǐng)ntel芯片的手機(jī)K800。緊接著還有Motorola的XT890。2013年,中興、華碩也有產(chǎn)品問世。但三星、小米、華為、OPPO、VIVO等出貨量大的廠商,都沒有采用Intel的芯片。這些手機(jī)大廠,看看x86生態(tài)中做整機(jī)的聯(lián)想如何艱難度日,估計(jì)心里也是一萬個(gè)不樂意讓Intel到移動(dòng)領(lǐng)域來繼續(xù)稱王。
到2014年,Intel芯的手機(jī)還是沒有打開局面,市場(chǎng)唱衰之聲一片。但I(xiàn)ntel并不想放棄。手機(jī)攻不下,那就攻平板!大廠攻不下,那就攻白牌!嫌我的芯片貴,我就給補(bǔ)貼!又過了兩年,平板也沒有攻下來。在移動(dòng)市場(chǎng)賠了上百億美金的Intel,黯然離場(chǎng)。
Intel失利的原因眾說紛紜,我覺得根本原因還是競(jìng)爭(zhēng)力不足:
首先,這個(gè)時(shí)候的臺(tái)積電已經(jīng)不是Transmeta家Crusoe芯片誕生時(shí)的吳下阿蒙,它生產(chǎn)的手機(jī)芯片的功耗和性能并不輸給Intel;
其次,這次Intel并無生態(tài)系統(tǒng)的優(yōu)勢(shì),要靠名為houdini的Emulator來執(zhí)行ARM指令集的程序,性能打了折扣。試想,Intel芯的手機(jī)如果性能和待機(jī)時(shí)間都是iPhone的兩倍,誰能抵擋得住這種誘惑?
幾乎在進(jìn)攻移動(dòng)市場(chǎng)的同時(shí),Intel也在推出產(chǎn)品試水物聯(lián)網(wǎng)市場(chǎng),只不過沒有大舉宣傳。2013年10月,Intel推出一款叫做伽利略的Arduino開發(fā)板,上面的CPU叫做Quark(夸克)。Quark是比Atom(原子)還小的基本粒子,這個(gè)名字暗含著輕巧、低功耗的意思。接著,Intel在2014年的CES大會(huì)和2016年的IDF大會(huì)上,先后推出了升級(jí)的愛迪生和焦耳開發(fā)板。
Intel的大名和Arduino聯(lián)系在一起多少有些奇怪。Arduino是一套可以跑在低端MCU上的C語言函數(shù)庫,是電子創(chuàng)客們的最愛。淘寶上Arduino開發(fā)板才幾十塊錢。焦耳開發(fā)板上的處理器是4核心、1.5GHz,跑Arduino太浪費(fèi)了。和它參數(shù)近似的Raspberry PI 3 Model B+開發(fā)板,四核64位ARM Cortex A53跑1.2GHz,淘寶價(jià)不到200塊。焦耳開發(fā)板要369美元。誰會(huì)當(dāng)這個(gè)冤大頭?
物聯(lián)網(wǎng)市場(chǎng)極度分散,有無數(shù)應(yīng)用但規(guī)模都不大,Intel賺大錢習(xí)慣了,在這個(gè)微利又需要貼近客戶做服務(wù)的市場(chǎng)里,百般不適。2017年,Intel悄悄停產(chǎn)了針對(duì)物聯(lián)網(wǎng)市場(chǎng)的開發(fā)板。
Intel接下來所可能面對(duì)的挫折,是ARM侵入服務(wù)器和桌面領(lǐng)域。這個(gè)話題下文還會(huì)有簡(jiǎn)單分析。
ARM生態(tài)系統(tǒng)
近幾年ARM風(fēng)光無限,搶新聞?lì)^條的能力不遜于Intel。
在很多圈外人看來,這家高科技公司好像是在移動(dòng)互聯(lián)網(wǎng)時(shí)代新冒出來的,但其實(shí)它的歷史和幾乎和80286一樣古老。而且它自誕生以來,就以移動(dòng)(portable)設(shè)備為自己首要的目標(biāo)市場(chǎng)。它等待一飛沖天的風(fēng)口,等待了二十年。
發(fā)端
前文提到,ARM是Acorn電腦公司創(chuàng)造的。
Acorn電腦公司創(chuàng)立于1978年,在80年代初,它用6502系列CPU制造的BBC Micro電腦在英國(guó)大獲成功。6502的性能慢慢跟不上時(shí)代了,Acorn想基于80286開發(fā)新的電腦,但是Intel連樣片都不給——要是Intel大方些,ARM或許根本就不會(huì)誕生。
Acorn一氣之下開發(fā)了ARM(Acorn RISC Machine),這是世界上第一款定位中低端(而非服務(wù)器)RISC處理器。1985年,ARM1誕生(但從未被商用),后來Acorn在1986年和1990年分別推出了ARM2和ARM3,1987年推出了RISC OS和桌面電腦Archimedes。它在英國(guó)的教育市場(chǎng)獲得了一定的成功,但1990年之后,很快被Wintel的生態(tài)擊敗了。
1990年前后,研發(fā)掌上電腦成為一股風(fēng)潮。當(dāng)時(shí)有家叫做Active Book的公司,拿ARM2處理器開發(fā)一個(gè)叫做Personal Communicator的產(chǎn)品??上Мa(chǎn)品上市前,Active Book被AT&T收購了,AT&T把ARM2換成了自家的Hobbit處理器。
幸好東方不亮西方亮,當(dāng)時(shí)的蘋果公司看好ARM,把自己研發(fā)的Newton平臺(tái)中的處理器,由AT&T的Hobbit,換成了ARM。這個(gè)“彼此互換”的故事聽起來讓人頭大,大家只需要記住,ARM的第一顆商用處理器ARM2,就曾被嘗試拿來做手持的電腦。
ARM的東家是Acorn,和蘋果在電腦市場(chǎng)上有競(jìng)爭(zhēng)。蘋果公司花了6周時(shí)間說服Acorn把ARM獨(dú)立出來運(yùn)營(yíng)。1990年11月27日,合資公司ARM正式成立,蘋果、Acorn和VLSI分別出資150萬、150萬、25萬英鎊,Acorn把ARM處理器相關(guān)的知識(shí)產(chǎn)權(quán)和12名員工放在了新成立的公司里。此后,ARM的縮寫被轉(zhuǎn)而解釋為Advanced RISC Machine。
為了節(jié)省成本,新公司在劍橋附近租了一間谷倉作為辦公室,全力為蘋果的Newton研發(fā)ARM6處理器(4和5這兩個(gè)編號(hào)被跳過去了)。
評(píng)論