蝶變ARM 1929年開始的經濟大蕭條,改變了世界格局。前蘇聯的風景獨好,使得相當多的人選擇了馬克思。懼怕布爾什維克紅色力量的人投入了法西斯的懷抱,剩余的人選擇了妥協與折中。整個世界的迅速分解使得第二次世界大戰成為必然。 1933年,羅斯福成為美國第三十二任總統,開始實施新政。這些新政使美國擺脫了危機,也決定了二戰的走向。羅斯福的背后站著的是凱恩斯,凱恩斯的國家資本主義化解了整個資本主義陣營有史以來最大的一次危機。“妥協與折中”得以持續。 戰后的世界是屬于巨型公司的,這些公司借助國家資本的力量,持續著壟斷。壟斷的初衷并非都是惡意的,在美國卻是一個早在1890年就立法防止的。1911年,美國煙草公司被分拆。1982年,美國電報電話公司被分拆。 這些分拆卻很難抵達IT業。1975年成立的Microsoft雖然多次被推入拆分的風口浪尖,卻從未被拆分。IBM和Intel多次遭到分拆的威脅,也安然無恙。這些公司的支持者都注意到一個事實,這些公司沒有依靠國家資本而獲得壟斷地位,而是依靠多年苦心積攢的知識產權堅持到現在。 這類壟斷之憂不在顓臾而在蕭墻之內。在這些巨型IT公司中,最低層的工作人員需要經過多達十幾級的匯報關系,才能到達首席執行官。在這十幾級匯報鏈中,向上所傳遞最多的就是如何粉飾太平。 一些微不足道的小問題在這些大公司中往往也能引發無休止的討論。為解決某個問題而舉行的會議,經常被無休止地擴大,從一個會議擴展為多個會議,從幾個人參與變為幾十人參與。這個問題變得已不再重要時,內部并無統一意見。 西方巨型公司的弊端在于 歐美所倡導的民主代價過于昂貴。撒切爾夫人是歐洲第一個深刻認識到這些問題的最高執政官。歷史上,英國并不重視中小企業的發展,在凱恩斯主義盛行的二十世 紀五十年代,英國經歷了三次大規模的企業兼并,至撒切爾夫人執政,巨型企業大行其道。更多的人發現這些大型企業并不能提高生產效率,大范圍的壟斷與集中, 已使英國經濟舉步維艱。 上世紀八十年代,撒切爾夫人開始變革,劍鋒所指,巨型公司紛紛解體,中小企業如雨后春筍般涌現。撒切爾的私有化,貨幣控制,削減福利與抑制工黨的四項舉措,客觀上拯救了英國經濟,也使這位值得尊敬的女士譽滿天下,謗滿天下。 ARM在這樣的大背景之下誕生,這也注定了這些創始人不會也不愿意使ARM成為巨型公司,這也是取得如此成就的ARM,截至今天人數尚不過兩千的最重要原因。ARM最初的簡稱是Acorn RISC Machine。Acorn Computer創立于1978年,總部位于劍橋,由Andy Hopper(劍橋大學), Chris Curry(Sinclair Research)和Herman Hauser(劍橋大學)創建[48]。 Acorn最初使用MOS Technology 6502處理器搭建處理器系統。MOS Technology 6502處理器是一個8位處理器,設計這顆處理器的工程師來自摩托羅拉的MC6800設計團隊[48]。基于6502處理器,Acorn開發了最令其自豪的處理器系統BBC Micro[49]。 在上世紀80年代至90年代,BBC Micro處理器系統主宰英國的教育市場。當時還有另外一個基于6502處理器的系統,Apple II[50]。從這時起,Acorn和Apple這兩個設計理念及產品形態類似的公司結下了不解之緣,有些人將Acorn公司稱呼為“The British Apple”[51]。也是在這個時候,Acorn迎來了一生中的對手Intel。基于Intel x86構架的PC對同時代的處理器廠商是一場噩夢,很少有公司能夠醒來。或者服從,或者消亡,別無選擇。Acorn首先選擇服從,向Intel申請80286處理器樣片,Intel拒絕了這個請求[52]。 工程師對剩余的處理器,進行了充分的評估。結果令人失望。此時的Acorn沒有選擇,開始認真地考慮是否需要研制一顆屬于自己的處理器。他們沒有任何處理器設計經驗,為數不多的工程師們除了才華,只有夢想。才華與夢想恰能改變整個世界。 1983年10月,Acorn啟動了代號為Acorn RISC的項目,由VLSI Technology負責生產。1985年4月26日,VLSI成產出第一顆Acorn RISC處理器,ARM1。ARM1的結構非常簡單,僅有個25,000晶體管,甚至沒有乘法部件[52]。當時并沒有人留意這顆芯片,更多的人關注Intel在1985年10月17日發布的80386處理器[36]。 沒有人認為這顆略顯寒酸的ARM1更給80386帶來任何沖擊,甚至包括研發這顆芯片的Acorn工程師。做為處理器廠商,與Intel活在同一個時代是一場悲劇,無論是Acorn,IBM亦或是不可一世的DEC。Intel并不是不犯錯誤,只是有限的幾個錯誤都能被及時修復。才華橫溢的Intel工程師將處理器的故事演繹至巔峰,他們的競爭對手也因此步入地獄。 Acorn不得不選擇回避,這也決定了ARM處理器的設計理念是low-cost, low-power和high-performance。這個理念與21世紀智能手機的需求不謀而合,卻是Intel強加給ARM的。Intel在不經意間為自己樹立了一個強大的對手,這個對手在Intel的庇護之下一步步長大。并不夸張的說,沒有Intel就沒有ARM的今天。 因為對low-cost和low-power的追求,Acorn選擇了RISC,而不是CISC,在上世紀80年代,RISC與CISC孰優孰劣尚無定論。在當時采用RISC技術可以看得到的優勢是可以用更少的芯片資源,更少的開發人員實現一個性能相對較高的處理器芯片[53]。Intel使用了CISC架構,很大程度上也決定了Acorn選擇了RISC。劉備的“每與操相反,事乃可成”,對于Acorn就是“與Intel不同,便有機會”。 ARM的成長步伐仍然是緩慢的,陸續發布的ARM2與ARM3并沒有激起波瀾。為數不多的公司選擇ARM3處理器開發產品。一些公司將ARM3處理器用于研發,最有名的公司就是Apple[53]。在當時,Apple也是為數不多的對ARM友善的公司。 Acorn很快遭遇瓶頸,無論是在財務上還是在技術上。銷售量達到150萬臺的BBC Micro并沒有給Acorn帶來足夠多的財富,與席卷天下的PC相比微不足道[54]。ARM3與Intel在1989年發布的80486也沒有太多可比性。危機最終降臨到Acorn這個年輕的公司,1985年2月,當時的IT巨頭Olivetti出資12M英鎊收購Acorn 49.3%的股份[55]。Olivetti的庇護并沒有給Acorn帶來機遇。 Olivetti創建于上世紀初,對智慧與品質近于苛刻的執著使得他們的產品可以在紐約的現代藝術博物館中陳列,出現在許多經典的影片中。這些產品并沒有改變這個公司的最終命運。Olivetti最終涉足PC領域,使用Zilog的Z8000,去挑戰在這個領域所向無敵的Intel。 Olivetti收購Acorn后,更多地將ARM處理器用于研發,而真正的產品使用Zilog系列。這段時間是Acorn最艱難的日子。Acorn的創始人Andy Hopper最終選擇從Olivetti獨立。出乎意料之外,Olivetti支持了Andy的決定。 1990年11月,Acorn(事實上是Olivetti Research Lab),Apple和VLSI共同出資創建了ARM。Acorn RISC Machine也正式更名為Advanced RISC Machine[55]。在1996年,Olivetti在其最困難的時候將所持有的14.7%的Acorn股份出售給了雷曼兄弟[56]。 Apple當時正在為代號為Newton的項目尋找低功耗處理器。Newton項目的終極目標是實現地球上第一個Tablet。Apple對Tablet的前景寄予厚望,他們直接將公司Logo上的Isaac Newton作為項目的名稱。Apple最初的Logo是在蘋果樹和深思的牛頓。兩個Steve將公司命名為Apple,與喜歡吃蘋果沒有什么聯系,是因為蘋果而不是鴨梨砸到了牛頓頭上。 Newton Tablet的想法過于超前,最糟糕的是Jobs當時并不在Apple。Apple用并不太短的時間證明了一條真理,沒有Jobs的Apple和沒有喬丹的公牛沒有太大區別。1996年3月,Steve Jobs再次回到Apple,兩年后取消了這個并不成功的項目[57]。等到Jobs再次推出iPad Newton,已是十幾年之后的事情了[58]。 Apple投入3百萬美金擁有了ARM公司43%的股份[60],但是并沒有完全押寶在ARM公司,Apple真正關注的是在1991年與IBM和Motorola組建的AIM[59]。在1998年,ARM公司在英國和美國同時上市后,Apple逐漸賣出了這些股份。在2010年,Apple即便準備好了80億美金,卻也無法收購ARM。 1990年的ARM公司,財務依然十分拮據,12個員工只能擠在谷倉[ii]中辦公,廉價License的商業模式更不被人看好。依靠Apple的鼎力相助,ARM6[iii]得以問世,卻沒有改變Apple和ARM的命運。Newton項目設計的是本應該屬于下一個世紀的Tablet,ARM6被PC處理器和當時多如牛毛的RISC處理器籠罩,無所作為。 上世紀90年代屬于PC領域。AMD的異軍突起,及其與Intel的競爭,構建了上世紀九十年代處理器領域一道最炫目的風景線,而服務器領域屬于DEC。1992年2月25日,DEC發布的Alpha21064處理器,主頻達到150MHz[61],Intel在第二年發布的Pentium處理器,主頻僅有66MHz[62]。 整個90年代,處理器世界都在驚嘆著Alpha處理器所創造的奇跡。DEC陸續發布的Alpha系列處理器既是放到二十一世紀的今天,設計理念依然并不落后。DEC工程師就是在為二十一世紀設計處理器芯片。在Alpha21×64系列處理器的編號中,’21’代表二十一世紀,而’64’代表64位處理器[63]。 上帝并不青睞DEC公司,科技與商業的嚴重背離終于釀成了巨大的災難。Alpha處理器的技術尚未抵達巔峰,DEC的財務已捉襟見肘。1994~1998年,DEC不斷地向世界各地兜售資產。至1997年,DEC出售的資產已遍及五大洲,二十多個國家[64]。1998年1月26日,DEC正式被Compaq收購[65]。在DEC解體的最后一段日子里兩個公司最為受益,一個是Intel,另一個就是ARM。 在ARM的起步階段,鼎力相助的是Apple,最先License ARM內核的是英國本土的GEC半導體公司。在1993年因為Apple的引薦,ARM處理器跋山涉水來到日本,與Sharp建立了合作關系。在此之前Sharp與Apple一直在合作開發Newton項目。 這些合作并沒有緩解ARM的財務危機,ARM一直在追尋真正屬于自己的客戶。1993年,Cirrus Logic[iv]和德州儀器公司TI(Texas Instruments)先后加入ARM陣營。TI給予了ARM雪中送炭的幫助。TI正在說服當時一家并不知名的芬蘭公司Nokia與他們一道進入通信移動市場。TI在DSP領域已經取得了領袖地位,但并不熟悉CPU業務,在屈指可數的可以被操控的公司中,他們最終選擇了ARM[67]。 ARM迎來了上天賜予的機會。通過與Nokia和TI的密切合作,ARM發明了16位的Thumb指令集,也真正意義上創建了基于ARM/Thumb的SoC商業模式[67]。ARM已經逐漸擺脫了財務危機,業務不斷擴大。至1993年底,ARM已有50個員工,銷售額達到10M英鎊。 同年ARM迎來了公司成立以來最重要的一顆處理器內核,ARM7[67]。ARM7使用的Die尺寸是Intel 80486的十六分之一,售價僅為50美金[v]左右。較小的Die尺寸,使得ARM7處理器獲得了較的功耗,適合手持式應用[67]。 ARM7處理器引起了當時的處理器巨頭DEC的關注。1995年,DEC開始研發StrongARM。與其他License ARM內核的半導體廠商不同。DEC獲得了ARM架構的完整授權,DEC可以使用ARM的指令集,設計新的處理器架構,這個特權后來被Intel和Marvell陸續繼承。第二年的2月5日,DEC正式發布SA110處理器,并開始提供樣片[68]。SA110處理器迅速得到了業界的認可,Apple正式使用SA110處理器開發MessagePAD 2000 [69]。 StrongARM處理器在設計中注入了Alpha處理器的一些元素。StrongARM使用5級順序執行的流水線,分離了指令和數據Cache,添加了DMMU和IMMU功能部件,每個MMU中包含32個全互連結構的TLB,添加了16級深度的WB(Write Buffer)[70]。至此ARM處理器更像是一顆微處理器,而不再是微控制器。 DEC的幫助使ARM處理器達到了前所未有的高度。更為重要的是,這顆160MHz,DMIPS為185的處理器,功耗低于500mW[70]。這不僅引起了工業界的濃厚興趣,學術界也開始真正關注ARM處理器。1997年,DEC如期發布了第二顆StrongARM芯片,SA1100。SA1100在SA110的基礎上增加了一些外部設計。第二年Intel為SA1100提供了一個伴侶芯片SA1101,SA1100+SA1101也成為了許多PDA廠商的首選。1999年,Intel發布了最后一顆StrongARM處理器SA1110[vi],和對應的伴侶芯片SA1111。 StrongARM的發布并沒有使DEC擺脫財務危機。而DEC卻找到了一個更容易賺錢的途徑。1997年5月,DEC正式起訴Intel,宣稱Intel在設計Pentium,Pentium Pro和Pentium II處理器時侵犯了DEC的10條專利。1997年9月,Intel反訴DEC在設計Alpha系列處理器時侵犯了Intel多達14條專利[72]。 在IT界,這樣的官司大多不了了之。1997年11月27日,DEC和Intel選擇和解。DEC向Intel提供除Alpha處理器之外的所有硬件設計授權,并進一步支持Intel開發IA64處理器。而Intel花費了625M美金購買DEC在Hudson的工廠,Israel Jerusalem和Texas Austin的芯片設計中心。另外這兩個公司還簽署了長達十年的交叉授權協議[72]。 DEC的技術注入使Intel的x86處理器邁入新的時代,很快Intel具備了向所有RISC處理器同時宣戰的能力,最終一統PC和服務器領域。此外Intel還從DEC獲得了StrongARM。克雷格·貝瑞特認為這是上天賜予Intel的機會,x86處理器與StrongARM的組合,將使Intel的處理器遍及世界上任何需要處理器的領域。 為了迎接StrongARM的到來,貝瑞特放棄了Intel自己的RICS處理器,i860和i960。Intel為StrongARM起了一個炫目的名字XScale,動用了積蓄已久史上最為強大的Ecosystem,強勢進軍嵌入式領域。 一時間,XScale處理器遍及嵌入式應用的每一個領域,用于手持終端的PXA系列,用于消費類電子的IXC/Intel CE系列,用于存儲的IOP系列,用于通信的IXP系列。Intel的處理器技術極大地促進了ARM內核的發展,借用PC帝國的Ecosystem使ARM處理器從生產到設計一步領先于所有嵌入式行業的競爭者。成為XScale處理器試金石的是摩托羅拉半導體的68K處理器。 在XScale系列處理器誕生之前,68K處理器主宰嵌入式領域,Apple Macintosh最初也使用68K處理器。在1997年,摩托羅拉銷售了79M片68K處理器,而Intel的x86處理器一共賣出了75M片[73]。這是68K處理器最后的輝煌。Intel和TI主導的ARM處理器終結了68K處理器。摩托羅拉半導體面對ARM的強勢出擊毫無準備。ARM處理器不斷地蠶食68K的市場份額,直到完全占有。 1995年,摩托羅拉半導體的香港設計中心發布第一顆用于手持式設備的DragonBall處理器,MC68328(EZ/VZ/SZ)[74],這是香港半導體界最好的時代。而StrongARM/XScale很快結束了香港設計中心的幸福生活。面對ARM的挑戰,DragonBall最終屈服,DragonBall MX(Freescale i.MX)系列處理器開始使用ARM9。使用ARM內核并沒有改變摩托羅拉香港設計中心的命運,這個設計中心最終不復存在。 在工業控制領域,68K內核進化為ColdFire[vii]。ColdFire在HP的中低端打印機中取得的成就幾乎是最后的絕唱。在通信領域,摩托羅拉半導體拋棄了基于68K內核的MC68360,研發出基于PowerPC架構的MPC860處理器。這顆處理器是通信時代的經典之作,摩托羅拉半導體陸續推出了一系列基于PowerPC內核的通信處理器,卻再也沒有重現MPC860時代的君臨天下。近期推出的QorIQ[viii]系列處理器面對多核MIPS處理器總是滯后一拍。 摩托羅拉半導體,昔日的王者優雅地沒落。摩托羅拉半導體于1955年推出第一個鍺晶體管,開創了半導體集成電路產業,在整個60年代一騎絕塵,70年代末迎來了68K的輝煌。即使在1985年,摩托羅拉還是全球第三大半導體公司。而懷抱通吃整個產業鏈的野心,對封閉式系統的摯愛,使摩托羅拉連同半導體部門在同一棵石頭上跌到了一次又一次。至21世紀,摩托羅拉半導體(Freescale)的排名在十名左右,2009年的排名僅為第17位。 擊敗了摩托羅拉半導體的Intel沒有感到一絲喜悅,更多的是寒氣。2006年,Intel的業績跌入低谷,這也使得當時的CEO貝瑞特作出了一個艱難的選擇,2006年6月27日,Intel將PXA系列處理器出售給了Marvell[12]。 Intel雖然保留了ARM處理器的授權,事實上卻已徹底退出了ARM陣營。這是Intel一個非常謹慎而且堅決的選擇。Intel需要撲滅后院的熊熊烈火。在PC領域,AMD率先推出了64位的K8處理器[75],并在2005的Computex 上,發布雙核處理器Athlon 64。Intel x86最引以為豪的性能優勢已不復存在。 這段時間Intel只能依靠工藝與強大的商務能力與AMD的Athlon64處理器周旋。2008年11月,Intel正式發布基于Nehalem內核,用于臺式機的Core i7處理器[76],用于服務器的Xeon處理器,Core i3/i5也如期而至。Nehalem內核使Intel徹底戰勝了AMD。這顆處理器也是Intel開始研發x86處理器以來,第三個具有里程碑意義的產品,之前的兩個里程碑分別是80386和Pentium Pro。從這時起AMD處理器在性能上再也沒有超過Intel。Intel解決了最大的隱患后,卻發現ARM處理器已非吳下阿蒙。 ARM7之后,ARM8內核于1996年發布。ARM8內核生不逢時。與ARM7相比,AMR8在沒有顯著提高功耗的前提下,性能提高了一倍,依然無法和DEC的StrongARM抗衡[77][78]。僅有少量手機在原型設計中考慮過使用ARM8內核,ARM也僅為用戶提供了CPU樣板。 ARM8的失敗并沒有阻礙ARM內核的進一步發展,與StrongARM的競爭沒有消減ARM陣營的實力,反而激發了ARM處理器不斷向前的動力。1997年ARM9正式發布,DMIPS指標首次超過了1.0大關。ARM9是一個重要的里程碑產品。這個產品標志著ARM處理器正式進入微處理器領域,而不再是簡單的微控制器。 ARM9將ARM7的3級指令流水線提高到5級,與StrongARM使用的流水線結構較為相似。進一步細化的流水線使得ARM9最高的時鐘頻率達到220MHz,而ARM8僅為72MHz[78]。ARM9進一步優化了Load和Store指令的效率,ARM9不再使用普林斯頓結構,而轉向哈佛結構,使用了獨立的指令與數據Cache。 ARM9的指令執行部件分離了Memory和Write Back階段,這兩個階段分別用于訪問存儲器和將結果回寫到寄存器。這些技術的應用使得ARM9可以在一個周期內完成Load和Store指令,而在ARM7中,Load指令需要使用3拍,而Store指令需要使用2拍。 此外ARM9可以通過增強的編譯器調整指令順序來解決RAW(Read-after-Write)[ix]類相關。ARM9的這些功能增強,使得在相同的工藝下,其執行性能是ARM7的一倍左右[79]。ARM7并沒有被淘汰,簡練的設計極大降低了功耗,Apple在2001年10月23日[80]發布的iPod依然使用了ARM7處理器[81]。 ARM7與ARM9的合理布局,使得ARM陣營迅猛發展。基于ARM7和ARM9內核的SoC處理器迅速遍及世界的每一個角落。ARM內核依然在前進。1998年的EPF(Embedded Processor Forum) ARM10內核正式推出。2000年4月12日,Lucent發布了第一顆基于ARM10的處理器芯片[83]。 ARM10內核的設計目標依然是在相同的工藝下,雙倍提升ARM9的性能。而提高性能的第一步是提高指令流水線的時鐘頻率,而流水線中最慢的邏輯單元決定了時鐘頻率。ARM10使用了6級流水線結構,但并不是在ARM9的5級流水線的基礎上增加了一級,而是進行了細致取舍而調優。最終的結果是在使用相同的工藝時,ARM10內核可使用時鐘頻率為ARM9內核的1.5倍[82] [84]。 ARM10內核重新使用了ARM8內核的系統總線,將ARM9的32位系統總線提高到64位。這也使得ARM10可以在一個時鐘周期內完成兩條寄存器與存儲器之間的數據傳遞,大幅提高了Load Multiple和Store Multiple指令的效率[84]。 另外ARM10改動了Cache Memory系統,與ARM9相比提高了存儲器系統的效率。ARM10的指令與數據Cache使用虛擬地址,64路組相連結構,引入了高端處理器中流水線與Cache交換數據的Streaming Buffer和Cache Line filling部件[84]。 ARM10內核優化了存儲器讀指令。實現了最為簡單的亂序執行機制。當一條存儲器讀指令沒有執行完畢,其后不相關的指令可以繼續執行。ARM10對乘法指令進行了特別的優化,設置了一個新型的16×32的乘法和乘加部件外,同時設置了兩級乘法指令流水,使得每一個時鐘周期可以執行一條乘法指令[84]。最后ARM10內核增加了對浮點運算的支持。 從技術的角度上看,ARM10遠勝過ARM9,但是沒有辦法在商業上與ARM9一較高下。ARM10的命運與ARM8驚人的一致。生不逢時的ARM8與StrongARM不期而遇,ARM10與XScale生活在同一年代。 Intel的工程師面對ARM的指令流水線耐不住技癢,ARM10的指令流水線與之前的ARM內核相比,可以說是一個飛躍,而與同年代的高端處理器相比只是一個玩具。Intel的幫助極大促進了ARM處理器的發展。 Intel在保證XScale架構低功耗的同時,引入已經在Pentium Pro系列處理器上非常成熟的Superpipelined RISC技術[85],借助Intel的工藝優勢,使得XScale處理器的最高運行頻率達到了1.25GHz[86]。此時Intel開發的處理器步入了高頻低能的陷阱,1.25GHz的PXA3XX性能僅比624MHz的PXA270的執行效率高25%[86]。 XScale架構并沒有使Intel盈利。ICG(Intel Communication Group)部門和WCCG(Wireless Communications and Computing Group)部門給Intel帶來的是巨額虧損,ICG在2002~2004年的虧損分別為$817M, $824M和$791M[87]。2003年12月11日,Intel宣布將WCCG合并到ICG中,并在2004年1月1日生效。 這次合并沒有挽救XScale的命運。在2006年,AMD的步步緊逼使Intel迎來了20年以來最糟糕的一季財務報表。Intel開始了有史以來最大規模的裁員。2006年7月13日,Intel宣布取消1000個經理職務[89],2006年9月5日,Intel裁員10%[90]。 在此之前Intel將XScale處理器中Marvell還愿意接收的部分出售[12]。Marvell需要的并不是XScale內核,而是Intel從DEC獲得的對ARM指令集的完整授權,很快Marvell推出了基于標準ARM v5/v6/v7的處理器,而不再單獨依靠XScale。XScale,這個幾乎耗盡Intel全部心血的架構,已經走到了最后盡頭。 Intel退出ARM陣營,不是因為缺少$600M現金。和許多人預料的并不相同,Intel并不是為了主推ATOM處理器,而放棄XScale。而是因為Intel用長達八年的時間發現了一個事實,ARM的廉價License策略并不能使之獲利,而必須做Atom。 ARM的廉價License的獲益者是ARM自身,隨著處理器廠商的不斷加入, ARM陣營獲得了迅猛發展,這也加速了處理器廠商的優勝劣汰。但是Intel發現的事實依然適用于所有正在使用ARM授權的半導體廠商。 最令ARM內核尷尬的是,依靠這個號稱最為開放的處理器內核,獲取暴利的是一些做著史上最為封閉系統的公司。憑借ARM內核,Qualcomm為3G專利找到了最佳載體,Apple不斷兜售著各類新奇的電子設備。來自通信領域的Cisco,華為陸續加入ARM陣營。ARM,這個來自半導體領域的處理器,并沒有使這個領域受益。ARM的出現,極大降低了處理器的設計門檻,使得單純依靠半導體技術,為做處理器而做處理器的廠商舉步維艱。 Intel首當其沖。Intel的錯誤在十幾年前已然犯下。貝瑞特本應該做出對Intel最為有利選擇,從DEC那里獲得StrongARM后,再親手終結StrongARM。貝瑞特不經意的失誤為Intel的未來樹立了一個強大的對手,也使整個處理器世界更加精彩。ARM已經從XScale處理器中獲得了足夠的能量,已經可以不依賴任何廠商。他們的命運已經牢牢地掌握在自己手中。 2002年12月,ARM1136內核發布[91]。2004年7月19日,ARM1176內核發布[92]。2005年3月10日,ARM1156內核發布[93]。在此之前的ARM處理器雖然得到了廣泛應用,但是從純技術的角度上看這些處理器微不足道。 ARM11基于ARMv6指令集,之前ARM還開發了V1,V2,V2a,V3,V4和V5指令集。ARM使用的內核與指令集并不一一對應。如ARM9使用V4和V5指令集,XScale使用V5指令集。ARM7最初使用V3,而后使用V4,最后升級到V5。在ARM指令集后還包含一些后綴如ARMv5TEJ,其中T表示支持Thumb指令集,E表示支持Enhanced DSP指令,而J表示支持Jazelle DBX指令。 ARM v4指令集包含最基礎的指令集;v5增強了ARM與Thumb指令間的交互同時增加了CLZ(Count Leading Zero)和BKPT(Software Breakpoint)指令;ARMv5TE增加了一系列Enhanced DSP指令,如PLD(Preload Data),LDRD(Dual Word Load),STRD(Dual Word Store)和64位的寄存器傳送指令如MCRR和MRRC。ARM v4和v5在指令集上變化不大,v5也可以向前兼容v4指令集[94]。 而v6指令集并不能100%向前兼容v5的指令集。由于ARMv6對存儲器訪問模型的大規模更改,完全的向前兼容不再可能。從x86處理器苛求的向前兼容的角度上看,這些改動并不完美,也正是這些不完美使得ARM內核輕裝前進。 ARM的指令集使用RISC架構,但是在ARM指令集中包含許多CISC元素。與PowerPC指令集相比,ARM的指令集凌亂得多,這為指令流水線的譯碼部件制造了不小的麻煩。在ARM內核包含三類指令集,一個是32b長度的ARM指令,一個是16b長度的Thumb指令,還有一類由8位組成的變長Jazelle DBX(Direct Bytecode eXecution)指令集。在ARM架構為數不多的指令集中,有兩類指令值得特別關注,一個是Conditional Execution指令,另一個是移位指令。 絕大多數ARM的數據訪問指令都支持條件執行功能。所謂條件執行是指指令可以根據狀態位,有選擇地執行。使用這種方式可以在一定程度上降低條件轉移指令預測失敗時所帶來的系統延時。在計算GCD(Greatest Common Divisor)時,ARM的條件執行指令發揮了巨大的作用,如圖2所示。 圖2 gcd算法的實現[94] 通過上圖可以發現由于SUBGT和SUBLE指令可以根據CMP指令產生的狀態決定是否執行,采用該類指令可以顯著降低代碼長度。ARM指令集還對移位操作進行了特別的處理,事實上ARM不含有單獨的移位指令,而使用了Barrel Shifter技術,與其他指令聯合實現移位操作。使用這種方法可以有效提高某些運算的效率,如圖3所示。 圖3 Barrel Shifter的使用 這些特殊的指令使得ARM內核有別于其他處理器內核,但這并不意味著也極大提高了執行效率。首先CMP指令,SUBGT和SUBLE指令有較強的相關性,不能并發執行。此外現代處理器的條件預測單元也可以極大降低條件轉移指令的命中率。一些處理器,如x86的CMOV指令和PowerPC的isel指令使用了更小的代價實現了ARM的條件執行功能。 ARM內核在條件執行指令時占用了4個狀態位,也進一步影響了指令集和寄存器的擴展。絕大多數RISC處理器中具有32個通用寄存器,而ARM內核僅有16個通用寄存器[x]。ARM的特殊移位操作,增加了指令的相關性,在有些情況下,不利于多發射流水線的實現,也增加了指令流水中預約站RS(Reservation Station)的實現難度。 計算機體系結構是一個權衡的藝術,尺有所短,寸有所長。不同的內核都有自己最為合適的應用,不經過認真的量化分析不能輕易得出孰優孰劣的結論。不過仍有一個結論,在現階段依然適用,處理器領域歷經多年的優勝劣汰,所剩無幾的處理器內核在激烈的競爭中日漸趨同。 ARM11內核使用了現代處理器中常用的一些提高IPC的技術,這是ARM處理器的一個重要里程碑。ARM11內核引起了計算機科學的兩個泰山北斗,David A. Patterson和John L. Hennessy的注意。他們以ARM11內核為主體,而不再是MIPS,書寫了計算機體系結構的權威著作,《Computer Organization and Design, Fourth Edition: The Hardware/Software Interface》。這也是學術界對ARM處理器有史以來的最大認可。 ARM11可以支持多核,采用了8級流水線結構,率先發布的內核其主頻在350~500MHz之間,最高主頻可達1GHz。在使用0.13μm工藝,工作電壓為1.2V時,ARM11處理器的功耗主頻之比僅為0.4mW/MHz。ARM11增加了SIMD指令,與ARM9相比MPEG4的編解碼算法實現速度提高了一倍,改變了Cache memory的結構,使用物理地址對Cache行進行索引[95]。ARM11終于開始使用動態分支預測功能,設置了64個Entry,4個狀態的BTAC(Branch Target Address Cache)[95]。 ARM11進一步優化了指令流水線對存儲器系統的訪問,特別是在Cache Miss的情況之下的存儲器讀寫訪問。在ARM11內核中,當前存儲器讀指令并不會阻塞后續不相關的指令執行,即便后續指令依然是存儲器讀指令,只有3個存儲器讀指令都發生Cache Miss的情況,才會阻塞指令流水線[95]。 雖然ARM11沒有使用RISC處理器常用的out-of-order加Superscaler技術,在一個時鐘周期之內僅能順序發射一條指令,但是支持out-of-order completion功能,即在執行單元中的不相關的指令可以亂序結束,而不用等待之前的指令執行完畢。 ARM11的這些功能增強,相對于ARM9/10是一個不小的技術飛躍。但是與其他處于同一時代的x86,PowerPC和MIPS處理器相比,仍然有不小的差距。ARM11內核的存活之道依然是性能功耗比。 依靠著強大的性能功耗比,ARM11內核取得了巨大的商業成功。ARM11內核并不是一個性能很高的處理器,但是隨著ARM處理器性能的不斷提升,量變終于引發了質變。ARM11內核的出現,使得Smart Phone的出現成為可能。 在此之前,基于ARM9,XScale處理器的手機只是在Feature Phone的基礎上添加了少許智能部件。自ARM11的問世起,Apple,HTC在智能手機領域異軍突起,Motorola一蹶不振。ARM11之后,ARM迎來了爆發式增長,陸續發布了Cortex A8和A9內核。 ARM處理器內核的快速更新,使得Nokia這個對新技術反應遲鈍的公司,一步步走向衰退。在2010年9月底開始出貨的Nokia N8[96],居然還在使用著680MHz主頻的ARM11處理器[97],而這款產品卻號稱是Nokia最新的旗艦產品,它的競爭對手早已使用了1GHz主頻的Cortex A8處理器。 Cortex處理器是一個分水嶺,從1983年開始的ARM內核,迎來了一顆真正意義的現代處理器。此時的ARM已經破繭成蝶,不再是低功耗伴隨著低能的處理器。從這一刻起,ARM處理器具備了和Intel,一較高下的能力。2010年4月3日,Apple的Jobs正式發布iPad,ARM隨之進入平板電腦領域[99]。ARM已將戰火燒到了Intel的后院。 拋棄了XScale架構的Intel,并沒有放棄手機處理器。2009年1月23日,Nokia與Intel在手機領域建立長期合作伙伴關系[103]。2009年6月4日,Intel收購Windriver[102]。2010年5月4日,Intel正式發布用于智能手機和平板電腦,代號為Moorestown的處理器[100]。2010年8月29日,Intel收購Infinion的無線部門[104]。在2011年左右,Intel將發布用于智能手機,代號為Medfield的處理器[101]。一系列的合作與收購,使Intel具備了進入手機領域的能力。 至此ARM之于PC領域,x86之于手機領域的野心,已昭然若揭。2010年9月9日,ARM正式發布代號為Eagle,5倍ARM9架構的Cortex A15內核,這顆處理器所關注的應用是高端手機,家庭娛樂,無線架構,還有低端服務器[98]。Cortex A15向世人宣布除了PC,他們還要向Server進軍。 ARM,這個曾被Intel鄙視,被其扶植,被其拋棄的處理器,開始直面挑戰Intel的x86處理器。這場較量是今后處理器領域5到10年的主旋律。最終結果將影響處理器領域今后20年的格局。不要認為ARM處理器沒有進入PC領域的可能,也不要認為ARM處理器可以繼續在手機領域中所向披靡。 蘋果公司的兩個創始人都叫Steve,一個是Steve Wozniak,另一個是眾所周知的Steve Jobs。Steven Wozniak是Apple I和Apple II的發明者。兩個Steve在1976年4月,在一個車庫中成立眾所周知的Apple。 [ii] 英國的谷倉文化與美國的車庫文化相近,都是新技術的搖籃。 [iii] ARM公司從ARM3直接升級到ARM6。 [iv] 我最初評估的ARM芯片就是Cirrus Logic的EP7312。當時我還在使用Altera的EPLD,名稱是EP7132,我經常混淆這兩個名字。在一個機緣巧合之下,粗心的采購將我需要購買的EP7132買成了EP7312,這顆芯片也是我不經意購買的第一顆ARM處理器。 [v] 當時的處理器價格高得離譜,50美金已經是很廉價了。 [vi] 我從SA1110開始接觸ARM處理器,那是一個永遠值得回憶的時代。 [vii] 我在摩托羅拉半導體部門第一次接觸的就是Coldfire處理器,目前這顆處理器仍然在不斷發展中,這顆芯片與68K在匯編語言層面兼容,但是目標代碼并不兼容。 [viii] QorIQ系列處理器基于E500 mc內核,與E500 v2有些微小差異。我的第一本著作是基于E500內核的《Linux PowerPC詳解—核心篇》,當時準備寫一套叢書,包括核心篇和應用篇。應用篇主要寫外部設備,后來的《PCI Express體系結構導讀》源自《Linux PowerPC詳解—應用篇》,應用篇應該包含網絡協議,PCI Express和USB總線,后來把網絡協議部分和USB總線部分刪掉了。 [ix] 在處理器體系結構中,重點關注的有三類相關問題,RAW,WAR和WAW。使用寄存器重命名技術可以解決WAR和WAW相關。 [x] 考慮到ARM在ARM11內核之前都不支持動態分支預測,和多發射,使用條件執行指令還是能夠提高ARM7/9內核的執行效率。 |