從Intel和ARM雙雄爭霸讀懂芯片的前世今生
Newton(牛頓)是蘋果花大力氣研發(fā)的觸屏移動技術平臺,Newton OS是不同于Mac OS的操作系統(tǒng)(如同后來的iOS)。如果你聽過蘋果、牛頓和萬有引力的故事,應該能體會蘋果公司對Newton平臺有多么高的期望。
本文引用地址:http://butianyuan.cn/article/201804/378885.htmNewton平臺的第一款產品MessagePad于1993年8月上市了,采用32位ARM610處理器,頻率為20MHz,屏幕大小為336×240,重量410克,采用4節(jié)7號電池供電,售價699美元(相當于今天的1129美元)??上У氖牵N量很差,上市頭四個月的銷量不過5萬臺。
1998年,中國的恒基偉業(yè)公司推出了一款叫做 “商務通”的產品,像極了Newton Messagepad。它采用Dragonball處理器,主頻僅16MHz,屏幕大小10漢字x10漢字,重量105克,采用2節(jié)5號電池供電,售價人民幣1988元??恐昂魴C手機商務通,一個也不能少”的廣告,商務通在1999年大賣100萬臺。雖然2001年后商務通及類似產品很快就被越來越強大的手機擠出了市場,但讓人好奇的是,背靠營銷能力更加強大的蘋果,Newton為何沒能一炮而紅?
其中一個重要的原因是,Newton重點宣傳的手寫識別功能表現(xiàn)很糟糕。而商務通對手寫漢字的識別率——根據(jù)我個人的體驗——還真是不錯,考慮到它僅僅16MHz的CPU主頻,能做到這么好簡直是奇跡。當時商務通部分型號的賣點就是“連筆王”,對潦草的漢字識別得相當好。
軟件對于一款產品的重要性,真的是生死攸關啊!
深耕
扯遠了,讓我們回到ARM的故事上來。
1990年ARM創(chuàng)立之初,給自己定下的使命是“設計有競爭力的、低功耗、高性能、低成本的處理器,并且使它們成為目標市場中廣為接受的標準”,目標市場包括:手持設備(Portable),嵌入式(Embedded Control)和汽車電子(Automotive)??缭浇辏@個使命和市場定位始終未變,直到今天。
而且,根據(jù)我了解到的知識,ARM是處理器的源代碼授權這一商業(yè)模式的開創(chuàng)者。如今,芯片設計從Verilog等源代碼出發(fā),經(jīng)過一系列自動化或半自動化的優(yōu)化步驟,最終形成工廠制造芯片所需要的版圖文件;整個過程類似軟件從源代碼被編譯為CPU的機器碼。但在80年代,芯片的設計自動化非常原始。七八十年代的處理器授權,都是指令集的授權。Synopsys公司于1986年成立,1987年推出把Verilog編譯為門級網(wǎng)表的DesignCompiler,之后基于源代碼的芯片自動化設計流程才慢慢地被建立起來。于是源代碼授權才成為技術上可行的模式。
ARM從未自己生產過商用的芯片。它只是將自己研發(fā)的處理器的源代碼的知識產權(IP)授權給芯片廠商,由它們推出最終芯片。受益于這一商業(yè)模式,盡管在1993年,Apple的Newton失敗了,但ARM并未因為設備賣不出去而虧錢,還幸運地拿到了TI的訂單,于是成功盈利了。員工數(shù)量也由12人增長到了42人。次年ARM又拿到了三星的訂單,員工增長到70多人,搬出了谷倉。
除了源代碼授權的模式之外,ARM也做指令集授權,1995年,ARM把指令集授權給DEC,DEC很快設計出了性能更好的StrongARM處理器。1997年,StrongARM產品線被賣給Intel,更名為XScale。
1995年,Motorola在香港的研發(fā)團隊基于MC68000指令集開發(fā)出了針對手持設備的DragonBall處理器,在這之后的十年,DragonBall處理器一直都是ARM強大的競爭對手。不但Moto自己的手機用它,Palm、三星、Sony的手機也用它。當然還有前文提到的商務通。ARM相對于Dragonball處理器有什么優(yōu)勢?我認為最大的優(yōu)勢是從客戶需求出發(fā)的、持續(xù)的創(chuàng)新;其次是ARM的開放的商業(yè)模式。
RISC指令集一般都采用32位定長指令,代碼密度比起x86之類的CISC來要差一些,但手機的存儲空間有限,對代碼密度的要求高。1994年,ARM為此專門研發(fā)了16位的指令集Thumb,以及支持這一指令集的ARM7TDMI。
開放授權的商業(yè)模式,使得整機廠在選擇芯片時,可以找到支持同一指令集的多種芯片產品,不容易被綁架。Nokia作為和Motolora旗鼓相當?shù)氖謾C制造商,肯定不會選擇競爭對手的Dragonball,而ARM的技術實力和商業(yè)模式,正好符合Nokia的需求。
1997年,Nokia推出了一代經(jīng)典6110,它采用TI的芯片,處理器核心是ARM7TDMI。6110是Nokia第一款帶紅外接口的手機,第一次內置了經(jīng)典的貪吃蛇游戲,它的界面成為了之后Nokia手機的標準。從此,Nokia和ARM成為了好基友,Nokia的Symbian操作系統(tǒng),一直都建立在ARM架構的基礎上。
1998年,趁著6110大紅大紫的東風,ARM在Nasdaq上市了。同一年,SGI公司看到處理器IP授權生意有利可圖,把MIPS部門拆分出來,次年MIPS推出了它第一款可授權的處理器設計M4K。此后的十年里,MIPS一直都是ARM有力的競爭對手。
商務通在中國流行的那幾年,國際市場上流行性能更高的掌上電腦和智能手機,操作系統(tǒng)包括Palm OS、微軟的WinCE、Nokia的Symbian、RIM的Blackberry OS,Motorola的Wisdom OS。在這個領域里,ARM陣營中負責高性能的XScale大放異彩,暴擊Dragonball。當Dragonball的頻率還停留在33MHz/66MHz時,Xscale已經(jīng)飆到了200~400MHz。MC68000指令集在手持設備領域敗走。Palm OS的1.0~4.0都是基于MC68000指令集的,5.0就換成了ARM。后來Motorola的半導體部門Freescale干脆推出了基于ARM核的iMX系列產品,替代Dragonball產品線。
蘋果作為掌上電腦的先行者,卻在這次浪潮里無所作為,在Wintel的擠壓下,它的桌面業(yè)務都已經(jīng)瀕臨絕境,無暇顧及其它市場了。1997年,不溫不火的Newton從蘋果公司獨立了出來。當喬布斯回歸蘋果之后,又火速把Newton收編了回來,并且干凈利落地停掉了Newton產品線——喬幫主只想要Newton手里的ARM股份。1998年到2003年,蘋果通過出售ARM的股票獲利11億美元。這筆錢,是喬布斯復興戰(zhàn)略的重要燃料,可以說是蘋果的救命錢。
綻放
經(jīng)過多年的深耕,ARM在新世紀開始時,已經(jīng)是手機領域里的王者,依然在為客戶的需求做著持續(xù)的創(chuàng)新,Java加速技術就是一個典型的例子。
從2000年開始,功能手機的性能提升到了足夠高的水平,人們希望在手機上玩比較復雜的游戲,而不僅僅是貪吃蛇。但是手機的處理器和操作系統(tǒng)實在是太分散了,為了方便游戲跑在不同手機上,J2ME平臺應運而生。從原理上講,J2ME和Applet并無不同,都是基于JVM的。Java在并不分散的桌面領域沒有獲得成功,但在分散的手機領域獲得了成功。
J2ME的游戲越做越復雜,但手機的處理能力畢竟有限,桌面和服務器上的JIT編譯器在手機上跑得太吃力了。于是ARM在2001年推出了ARM926EJ-S處理器,它支持Jazelle DBX技術,可以直接解碼和執(zhí)行Java的字節(jié)碼,省掉了JIT編譯器的負擔。這一功能大受歡迎,幫助ARM9系列成為了迄今最受歡迎的ARM處理器,總共有250多個授權廠家,其中100多個授權的是ARM926EJ-S。
在MTK助推山寨功能機火遍神州的那幾年,主控芯片所使用的核全部都是ARM9。在iOS和安卓的應用商店誕生之前,功能手機全靠J2ME開發(fā)的應用來實現(xiàn)各種炫酷的功能。從某種意義上講,在低端市場上,Jazelle是助力山寨機火爆的最大幕后功臣。
然而高性能ARM芯片的扛把子XScale,卻被Intel于2006年6月賣給了Marvell。這是Intel實施x86-everywhere戰(zhàn)略的一個步驟。Intel希望x86的生態(tài)也能進入到低功耗的移動領域,而不是用自己先進的工藝制程和設計能力幫ARM建設高端應用的生態(tài)。22個月之后,2008年4月,低功耗的Atom芯片誕生了。
高性能ARM芯片的扛把子換成了蘋果。2004年,在賣光ARM股票的一年之后,喬布斯決定研發(fā)iPhone。2007年1月,在Intel放棄ARM之后僅半年,iPhone誕生了。蘋果可不會采用低端市場上死守ARM9那種玩法,iPhone一代就采用了400MHz的ARM11;2009年的iPhone 3GS,升級為600MHz的Cortex A8;2010年的iPhone4,蘋果自研的A4芯片升級為1GHz的Cortex A8。接下來蘋果自研芯片性能一路狂飆的歷程,大家都很熟悉了。
從ARM6到ARM11,這些IP核都是按照兼顧移動設備、汽車電子和嵌入式這三個市場的思路來設計的。從2003年起,ARM把產品線有針對性地劃分為A、R、M三個系列,分別對應上述三個市場,而且IP核的名字都統(tǒng)一加上了Cortex的前綴。Cortex A8就是A系列的第一個作品。iPhone 3GS和iPhone4令Cortex A8大火,但讓ARM一飛沖天的推手,卻是iPhone的競爭對手——安卓(Android)。
有很多文章介紹安卓如何誕生,如何在移動設備領域干掉了除iOS之外的全部對手,毋須贅述。這里只想強調一個被普遍忽略的事實:安卓從誕生之初,就要求應用程序采用Java編寫,并且跑在Dalvik虛擬機上;但iPhone上的應用,都是原生的ARM程序。要知道Android手機的處理器性能相對iPhone并無優(yōu)勢。
山寨之王MTK于2009年2月推出的首款智能手機芯片MT6516,采用406MHz的ARM9;2008年~2010年間由HTC推出的那幾款賣得很好的Android手機,也無非是ARM11和Cortex A8的核,幾百兆的頻率,這種級別的處理器跑虛擬機還是蠻吃力的。另外虛擬機占用內存大的缺點,也不利于用戶體驗和降低成本。
谷歌寧可冒著讓安卓出師不利的風險,也要推廣Dalvik虛擬機。這是為什么?谷歌內部的決策過程我們無從得知。一個合理的猜測是,谷歌不愿看到手機領域里ARM一家獨大,它希望給MIPS、x86等其它CPU一個機會。J2ME的成功,讓谷歌看到完全建立在虛擬機上的手機應用生態(tài),是完全可能的。
Dalvik虛擬機可以跑Java,但并不采用JVM那種基于堆棧的字節(jié)碼,而是改用一種基于寄存器的方案。這么做當然是為了規(guī)避SUN公司(后被Oracle收購)的專利,同時也讓無法直接運行JVM字節(jié)碼的MIPS、x86能夠實現(xiàn)輕量級的JIT編譯器,無須Jazelle這樣的技術。從另外一個角度講,MIPS在電視、機頂盒、游戲機市場上占優(yōu),x86在桌面市場近乎壟斷,支持它們,也意味著安卓有可能進軍電視和桌面。
安卓對所有CPU而言,都是巨大的機會,誰抓住了這個機會,就可以一舉改變競爭格局,實現(xiàn)霸業(yè)。
只可惜MIPS公司太不給力,一直也沒有搞定靠譜的MIPS版Android。等到2011年1月,Synopsys公司給自家的ARC處理器移植好Dalvik虛擬機和瀏覽器用的V8虛擬機、Android環(huán)境已完備的時候,MIPS都還沒動靜。順便說一句,Intel曾經(jīng)的南橋芯片里都有ARC處理器,它是Active Management Technology(AMT)的重要基石。
這個時候,北京的君正公司坐不住了。君正靠做低成本的MP4播放器起家,2011年5月在創(chuàng)業(yè)板上市。君正擁有MIPS的架構級授權,對自己研發(fā)的XBurst處理器非常自信,準備靠它進攻手機和平板市場。2011年7月,基于君正JZ4760的MIPS智能手機通過Android兼容性測試。2011年12月,基于君正JZ4770平臺的平板電腦,被谷歌選為Android4.0的首發(fā)產品,一時風光無限。
ARM的強大軟件生態(tài)此時起到了護城河的作用?;诰钠桨?,軟件兼容性出了問題。原因在于谷歌沒有強求所有的應用都跑在Dalvik虛擬機上,對于部分對性能有苛刻要求的app,例如游戲,谷歌允許用CPU的原生指令集來開發(fā),為此還提供了NDK(Native Development Kit)。對于那些包含了ARM原生指令的游戲,君正的平板要么不支持,要么用emulator支持,總之用戶體驗都不好。
ARM生態(tài)圈里,在2011年,正好有兩家芯片廠商異軍突起:全志和瑞芯微,它們分別推出了采用Cortex A8處理器的A10芯片和RK2918芯片,成本極低,主打平板和安卓電視盒子。君正的平板夢被它們粉碎了,之后只好轉戰(zhàn)安卓手表,消沉了很多年。對于MIPS而言,還有一個壞消息是,在它們的強力助推下,電視盒子市場也成了ARM的天下。經(jīng)營不善的MIPS于2012年賣給了Imagination,Imagination不但沒能依靠MIPS在CPU市場中有所作為,反而在GPU市場里也敗給了ARM,在2017年被迫整體賣身,MIPS業(yè)務賣回給了硅谷公司。
2012~2016年,Intel在安卓市場上挑戰(zhàn)ARM,也失敗了。于是安卓給CPU帶來的紅利,全部被ARM吃掉了。隨著手機越來越重要,ARM也越來越重要,它所推出的最新的Cortex A系列處理器,被手機芯片爭相采用。ARM生態(tài)也越來越強大,它的觸角,慢慢伸出了手機領域。
評論