逃離x86架構-----CPU體系結構CISC與RISC之爭
轉載:http://hi.baidu.com/zaoyuan1217/blog/item/59015b11e8385d165baf534e.htmlx86架構誕生
Intel 8086是一個由Intel於1978年所設計的16位微處理器晶片,是x86架構的鼻祖。不久,Intel 8088就推出了,擁有一個外部的8位資料匯流排,允許便宜的晶片用途。
早在1981年,IBM公司推出了基於Intel 8088處理器的個人電腦(PC);和8086處理器相比,它是一臺低價格,低效能的處理器。儘管在當時Motorola MC69000處理器的效能也相當不錯,但是IBM這樣選擇的理由是因為8088處理器已經能夠對地址匯流排進行“複用”,並且匯流排寬度達到8位
RISC系統針對高階的伺服器市場,CPU和所有的部件都必須確保系統的“穩定性”,即使降低10%的效能也要儘可能的提高系統的穩定性。因此RISC 處理器必須經過詳細,嚴謹的設計,並且需要通過一系列嚴格的測試。因此大型機的CPU非常昂貴,每一代的CPU一般只推出2~3種不同頻率的產品,因為企業不可能在系統升級上不斷的投入昂貴的費用。
相比之下x86架構系統主要針對個人使用者和小型的商用系統。和RISC相比,x86的價格要低1~2個數量級,它主要是確保系統的效能,或者儘可能的提高系統的價效比。因此針對同一代的CPU,它會推出7~8種不同頻率的產品。例如Intel Northwood Pentium 4的整個推出的過程中,一共釋出了7種不同頻率的產品。圖 產品推出力度對比上圖清楚的表明,在同一代產品中,RISC系統一般只會推出2-3種產品,而X86架構會有7-8種的產品。因此後者的粒度要比前者細的多。這也說明RISC系統的CPU一旦設計定型,就會進行製造和測試,在產品最後釋出之前,儘可能的改正設計中的錯誤,因為RISC昂貴的價格決定一旦CPU的設計存在問題,那麼這就是一款失敗的產品,在市場上就不會有立足之地。而x86的CPU價格較低,因此它不斷推出的產品能夠彌補以往設計中的不足,不同產品在於佔領不同的市場。 X86=永恆? 隨著X86架構的不斷成熟,人們逐步開始認識到其本身的限制和不足(例如32位的X86架構的定址空間只有4GB),但是巨大的商業利益和強勁的軟硬體的支援,使得x86的架構難以動搖。儘管在x86的發展歷程中,也有不少的體系設計用於代替x86架構,但是它們都因為得不到廣泛的支援,最終以失敗告終。其中,影響較大的是以下3次“x86革命”。第一次革命:MIPS/ACE 聯盟 1991年4月,Compaq, Microsoft, DEC, MIPS和一些小型的計算機公司成立了高階計算環境(ACE)小組,他們的目的在於使用基於RISC處理器的MIPS架構來取來現有的x86/IBM個人電腦。 但是由於MPU上市日期的延遲,ACE小組的內部競爭,以及利益分成的問題,使得ACE小組的發展舉步為艱,最後以失敗而告終。第二次革命:Apple/IBM/Motorola (AIM) 聯盟 同樣在1994年4月底,Apple Computer, IBM 和 Motorola組成了AIM聯盟,目的在於把RISC處理器用於個人電腦系統。Motorola 和IBM聯手對POWER架構進行重新設計,用於取代原先Macintosh系統中逐漸衰落的680X0 CISC處理器。POWER架構給Mac系統帶來了巨大的成功,它的效能要比原先的Mac大大提高。但是x86架構的發展始終要快於PowerPC ,而且PowerPC沒有任何的價效比優勢,因此不多久,Mac機就在x86架構面前敗下陣來。在Intel和Microsoft巨大的壓力下,1994年8.3%的市場佔有率也緊縮到目前的3%。第三次革命:DEC/Samsung 1996年年底, DEC的晶片製造部門(原先的Digital Semiconductor公司)釋出布了21164PC。它是原先高效能處理器21164A(EV56)的PC版,因此價格較低,並且使用了微軟的Windows NT作業系統。由於缺少相應的軟體支援,DEC開發了FX!32模擬器,它能夠把原先X86的軟體無縫的應用到21164PC平臺。儘管CPU的價格低廉,但是支援21164PC的主機板卻非常昂貴。而且在當時,人們對NT作業系統並沒有表現出多大的興趣,因此21164PC慢慢的在X86架構發展中退出了歷史舞臺。 上述例子中的MPU製造商失敗的主要原因就是跟不上Intel CPU的發展速度。Intel不斷進行著新型的CPU設計,並且以價格來爭取市場;上述的三種新型CPU架構都是被Intel強大的馬力所拖垮。其中,MIPS/ACE 聯盟主要是資金的問題,而AIM聯盟的失敗歸咎於CPU的設計跟不上Intel的發展速度。Intel的自我革命 目前的事實告訴我們,當今幾乎不可能有其他的MPU製造商使用其他的系統結構,來挑戰Intel 現下相容的X86平臺;其他的晶片製造商也沒有雄厚的資金和實力來和Intel公司進行抗衡。人們考慮:是否Intel公司自己會提出一種全新的架構;或者Intel是否會脫離IBM的x86標準來發展自身的Wintel體系架構(Wintel:Windows作業系統和Intel處理器)。近幾年,Intel致力研究的Itanium(安騰)處理器(IPF Itanium Processor Family)似乎有取代x86的趨勢。Intel也宣佈,Itanium會首先使用在伺服器上,然後過渡到PC平臺,最終在移動平臺上實現。 安騰處理器是構建在IA-64(Intel Architecture 64) Itanium是英特爾最初的基於64-位體系的微處理器。Intel 的IPF主要針對RISC處理器原先佔有的中高階伺服器市場。Intel推出64位的處理器只是一個時間的問題,可能在目前而言,還為時過早;但是Intel的競爭對手AMD公司已經在今年推出了x86架構的擴充套件―――64的處理器和系統平臺。AMD 64位的架構並不是全新的架構,而是對原先32位的x86架構進行擴充套件,突破了4GB定址空間的限制;但是64位的計算環境卻在業界產生了巨大的影響,它成為Intel IPF技術的挑戰者。姑且不論AMD 64位架構推出時機是否合適,但是業界普遍認為64位的架構會在5年內成為主流的桌面PC架構,同時AMD的這一舉措也加快了IPF處理器的推出。 IPF技術是由Intel和惠普聯合研製,取得了一定的成績。但是目前的IPF處理器核心尺寸,電源功耗都決定了其不能使用在桌面系統上。IPF採用0.18微米的製成工藝,和Alpha EV(397mm2,125W),POWER4(415 mm2,115W)相比,Itanium 2處理器的尺寸為421 mm2,電源功耗高達130W。 在隨後的,代號為Madison/Deerfield的Intanium 2處理器中,Intel使用了0.13微米的製成工藝。1.3GHz的Itanium 2處理器的最大發熱量和2.66GHz Northwood Pentium 4相當。和2.66GHz Pentium 4相比,1.3GHz Itanium2的整數運算效能有了10%的提高,浮點數效能有了50%的提高。在高階的優化技術下,IPF的效能要比原先同等頻率的處理器高出整整一倍,而且隨著IPF技術的成熟,這種差距會愈加擴大。 儘管在硬體的技術上,AMD和Intel都已經相當成熟;但是AMD 64位的系統和Intel的IPF都不得不面臨一個相同的問題:缺少軟體的支援。目前支援AMD 64位系統和IPF技術的只有Window最新的作業系統。AMD公司和Intel公司對於64位架構的研發上都或多或少面臨“雞生蛋,還是蛋生雞”的尷尬局面。64位的架構必須有軟體的支援才能發揮應有的功效,同樣軟體只有憑藉64位的架構才能進行開發。業界人員保守的估計,64位的軟體至少要3-5年才能普及起來。 對於IPF處理器而言,它和原先x86架構下的處理器有什麼本質的不同呢?如果不考慮AMD的64位擴充套件x86架構,在相同的電源功耗,相同的費用,相同的製成工藝下,IPF處理器在整數運算上的效能會高出20%-30%,浮點數和DSP的運算效能會有50%的提高。結論:革命尚未成功,同志仍需努力 “說要比做的容易。”隨著IPF技術的成熟,32位x86架構缺陷的不斷出現,IPF取代x86架構勢在必行。但是一旦真正的進行“改革”。IPF(或者其他架構)必定會受到來自各方面的壓力和阻礙。樂觀的估計,IPF取代x86成為主流的架構至少要在2005年以後。如果考慮到來自AMD 64位的x86的架構阻撓,那麼整個改革的之間會更長,甚至有失敗的可能。我們深知,每一項新技術的應用,都會伴隨著出生時的陣痛;但是對於未來卻是一片光明。Intel的IPF如此,AMD的64位架構也是如此。在PC發展歷程中,正是這些一次又一次的陣痛,不斷推動著整個IT界發展,使IT界保持旺盛的發展力。也許這些陣痛可能會帶來難產,使得嬰兒死於襁褓之中;但是每一次成功的誕生,都會給IT界帶來一個全新的世界。不管X86架構未來如何,我們都期待著會有一個嶄新的明天。 CPU體系結構CISC與RISC之爭(轉自pcpro.com.cn) 在PC發展之初,除了成熟的CISC指令架構外,IBM沒有更好的選擇,原因很簡單,更先進的RISC架構在1975年才出現,且只針對超級計算機領域,當時沒有人意識到PC會有如此之大的發展,只是將它作為計算產品的一種補充而已。為圖省事,IBM乾脆就選擇了Intel作為微處理器晶片的合作伙伴,而Intel所創立的X86指令系統便屬於CISC架構。 我們有必要對指令架構、CISC、RISC之類的概念作明晰的解釋。眾所周知,微處理器的基本邏輯是執行指令的電路,計算機的任何一個程式都是由或多或少的基本指令組成,而指令本身又是由若干個微操作構成,例如對兩個二進位制數進行加減運算,或者將結果送進暫存器中等等。瞭解組合語言或機器語言的讀者對此應該比較清楚。這些基本指令被稱為微處理器的微程式碼(Microcode),指令數量越多、完成微操作所需的邏輯電路就越多,晶片的結構就越複雜。每個處理器開發商都可以自己定義出一套指令系統,但如果指令系統不相同,構成軟體的指令也不相同,這樣就無法實現軟體相容。在專用計算機時代,這種情況十分普遍,各個計算機廠商都獨立發展指令系統、微處理器、計算整機和軟體,不同廠商的軟硬體產品無法相容使用,其原因就在於微處理器的指令系統採用不同的定義。然而,儘管當時指令系統種類甚多,它們卻都歸屬於CISC架構—CISC的英文全稱是Complex Instruction Set Computer,意為“複雜指令系統計算機”。它的特點是指令數量龐大臃腫,每個指令不管執行頻度高低都處於同一個優先順序,程式設計師的程式設計工作相對容易。但它的致命弊端是執行效率低下,處理器的電晶體被大量低效的指令所佔據,資源利用率頗為低下。當IBM成功發展出RISC系統之後,CISC迅速被超級計算機所拋棄。但機緣巧合,它卻在PC上獲得新生,為了保持軟體相容,PC必須一直延續X86架構無法脫離(IBM將標準制定權讓給Intel,最終葬送了自己在PC領域的前途)。後來加入微處理器戰團的Cyrix、Rise、AMD、IDT等廠商無一不是如此,PC朝著X86道路漸行漸遠,從8位、16 位、32位一直擴充套件到現在的64位,雖然它依然有旺盛的生命力,但背後的一系列缺陷也逐漸顯現:晶片設計臃腫不堪,能源利用率低下,效能與電晶體規模相當的RISC產品根本不在一個水平線上。圖1依據80/20法則劃分的“冷程式碼”與“熱程式碼”概念——前者佔據X86指令總量的80%,後者只佔據20%。與之相應,冷程式碼執行單元佔據絕大多數硬體資源,而高度活躍的熱程式碼執行單元所佔據的硬體資源反而要少得多。PARROT優化之後,熱程式碼執行單元被大大加強,冷程式碼單元則被相應縮減,在電晶體規模不變的前提下實現效能的跨越式提升。 相比之下,RISC(全稱Reduced Instruction Set Computer,精簡指令系統計算機)則是一套優化過的指令架構,它是根據著名的80/20法則所訂立。早在上個世紀60年代,電腦科學家們發現,計算機中80%的任務只是動用了大約20%的指令,而剩下20%的任務才有機會使用到其他80%的指令。如果對指令系統作相應的優化,就可以從根本上快速提高處理器的執行效率。IBM公司在1975年成功開發出第一款RISC處理器,從此RISC架構開始走進超級計算機中。由於指令高度簡約,RISC處理器的電晶體規模普遍都很小而效能強大,深受超級計算機廠商所青睞。很快,許多廠商都拿出自己的RISC指令系統,除了IBM的Power和PowerPC 外,還有DEC的Alpha、SUN的SPARC、HP的PA-RISC、MIPS技術公司的MIPS、ARM公司的ARM等等。它的應用範圍也遠比 X86來得廣泛,大到各種超級計算機、工作站、高階伺服器,小到各類嵌入式裝置、家用遊戲機、消費電子產品、工業控制計算機,都可以看到RISC的身影。只不過這些領域同普通消費者較為脫離,故而少為人知。 無論在執行效率、晶片功耗還是製造成本上,選擇RISC都比沿用X86更加英明。我們不妨作一番實際的比較:目前Intel公司最快的處理器是 Prescott核心的Pentium 4 XE系列,它的電晶體總數在1億7800萬個以上,最高功耗達到130W,但它的運算能力不超過20GigaFlops(FLoating point Operations per Second,每秒浮點運算)。而目前最快的RISC處理器是IBM推出的Cell,它的電晶體總數為2.34億個,在採用90納米工藝製造時芯片面積為221平方毫米,但它的運算力高達2560GigaFlops,整整是Pentium 4 XE的128倍。Intel將在年中推出雙核心的Smithfield,效能最多能有80%的提升,而晶片規模將達到與Cell相同的水平。由此可見,二者完全不是一個層面上的對手,X86指令系統的低效性在這裡一覽無遺。與此對應,RISC產品在成本上優勢明顯—半導體晶片的製造成本同芯片面積三次方成正比。在工藝相同的情況下,芯片面積大小取決於所整合的電晶體規模。RISC處理器核心精簡、效率更高,只要很少的電晶體就能達到與X86產品媲美的效能,製造成本可大大低於現有的X86處理器。而小電晶體規模亦有助於保持較低的能耗值,RISC處理器在這方面表現相當傑出,現在的嵌入式裝置幾乎都採用 RISC產品,原因就在於這類產品的功耗值超低。 過去,PC鍾情於X86的原因在於軟體相容,尤其是微軟只為X86 PC開發Windows系統,這也被認為是PC採用RISC架構的最大障礙。這個障礙最終也將被解除,Linux作業系統逐漸發展成熟,Mac OS X的綜合水準更遠在Windows之上,辦公、圖形、網路、多媒體相關的各類跨平臺應用軟體極大豐富。如果你是一個遊戲玩家,RISC平臺一定會令你大呼過癮,於2005-2006年釋出的索尼PS3、任天堂Revolution和微軟XBOX等新一代遊戲機產品將全面轉入RISC體系(有趣的是,三種遊戲機都採用IBM所設計的處理器,指令系統相同),短時間內許多品質一流的配套遊戲軟體將會大量湧現。只要指令系統相同,這些遊戲完全可以實現平滑移植。 單從技術角度考慮,以RISC取代X86作為PC的主力架構的確是非常英明的選擇,更高的效率、更快的速度、更低的成本以及同樣豐富的軟體支援, RISC PC將展現出勃勃生機。然而,這一切似乎不容易實現,無論Intel、AMD還是微軟,它們的輝煌成就都構建在X86的基礎之上,轉向RISC對它們來說無異於釜底抽薪。目前執著發展RISC PC的只有蘋果公司,它們的全系列PC都基於IBM的PowerPC指令架構。不幸的是,儘管蘋果公司大名鼎鼎,但它對整個市場的影響力極其有限,PC轉向RISC最大的障礙不在於技術或相容性,而是缺乏一個實質性的領導者,但有跡象表明,藍色巨人(IBM)對此有著強烈的意願,RISC能否把握住PC的下一個三十年盡皆取決於它。即便不採用RISC架構,我們仍然可以藉助它的思想對X86處理器進行結構性改良。事實上,X86處理器一直都從RISC產品中獲取靈感,包括EV6匯流排、整合記憶體控制器、超執行緒技術、雙核心等等新技術新概念都是首先在RISC產品中得到成功應用,之後才被Intel/AMD引入到X86處理器當中。實踐證明,這種做法往往對X86處理器的效能提升有著決定性的影響,而從RISC汲取營養也就成為X86業界的習慣做法。 不過,上述這些技術改良都只停留在應用層面,指令體系的根本差異成為X86與RISC之間的壁壘,若能借助RISC理念對X86處理器進行結構性改良,也許可獲取更大的效益。Intel在IDF技術峰會上提出的“PARROT”概念便充分體現了這種思想。PARROT的全稱是“Power AwaReness thRough selective dynamically Optimized Traces”,從其名稱不難得知,PARROT是一項藉助“動態優化執行路徑”來提高處理器執行效率的技術。它的理論基礎也是著名的80/20法則,但與RISC不同,X86處理器無法從指令系統層面上實現這一點。,Intel另闢蹊徑,提出了一個全新的發展思路,將20%的常用指令定義為“熱程式碼(Hot Code)”,剩餘的80%指令使用頻率沒那麼高,被定義為“冷程式碼(Cold Code)”。對應的CPU也在邏輯上被劃分為兩個部分:一是熱核(Hot Spot),只針對呼叫到熱程式碼的程式;另一部分則是冷核(Cold Spot),負責執行20%的次常用任務。由於熱核部分要執行80%的任務,設計者便可以將它設計得較為強大,佔據更多的電晶體資源。而冷核部分任務相對簡單,沒有必要在它身上花費同樣的功夫。理論上說,設計者可以將80%的電晶體資源用在熱核上面,使之高效率執行任務,剩餘的20%電晶體資源則用於僅完成20%任務的冷核。相比之下,現在的X86處理器完全沒經過結構優化,所有指令地位對等,80%的次常用指令佔據了大量的電晶體資源,又沒有創造出相應的價值,晶片內只有20%的區域處於活躍狀態,這顯然不夠科學。 “PARROT”創造了一種嶄新的雙核概念,過去我們談論的雙核心指的是在一枚晶片內整合兩個對等的CPU核心,通過並行運算獲得性能增益,我們可以將它看作是橫向維度的對等設計。而“PARROT”則是一種縱向維度的雙核理念,熱核與冷核地位並不對等,且無法獨立運作,只能說是一個CPU核心中的兩部分分立邏輯。它所起到的是提高CPU的硬體資源利用率,以高執行效率達到高效能的目的,這種做法顯然比目前業界鼓吹的“雙核心”更具革命意義。我們不妨深入分析“PARROT”的微架構(圖2所示),處理器執行管道被分為“冷管道(Cold Pipe)”和“熱管道(Hot Pipe)”兩部分,二者都擁有彼此獨立的取指和執行單元,當處理器讀取程式指令時,會預先對其作分析,以判定它是歸屬於“熱程式碼”還是“冷程式碼”。若為活躍的“熱程式碼”,則將其送入“熱管道”邏輯進行高效處理;如果屬於“冷程式碼”,那麼將其送入“冷管道”邏輯處理,所得結果最終再作彙總輸出。圖2 PARROT微架構,CPU被劃分為相對獨立的兩個執行管道。圖3所示為“PARROT”處理器的詳細執行路徑情況,我們可以看到,“冷管道”部分相對簡單,只有“指令快取(Instruction Cache)”、“冷執行單元(Cold Execution)”和“分支預測單元(Branch Prediction)”,佔據少量的電晶體即可。而“熱管道”部分則顯得相當複雜,它由“追蹤快取(Trace Cache)”、“追蹤預測單元(Trace Prediction)”、“熱執行單元(Hot Execution)”、“追蹤優化(Trace Optimizer)”以及“追蹤選擇過濾&構建(Trace Select Filter&Build)”等幾大邏輯單元共同構成,每個邏輯都被設計得儘可能強大。計算結果生成之後,再由“同步合成單元(Synchronized Commit)”組合彙總,最後才通過前端匯流排輸出給計算機記憶體,由此完成整個運算過程。圖3 基於PARROT思想的X86處理器邏輯結構—冷程式碼與熱程式碼在執行階段被彼此分離。 PARROT的新奇思路令人耳目一新,通過對執行單元的結構性優化,X86處理器可以說是獲得了重生。設計者可以對“熱核”部分進行大大強化,使之擁有更高的效能,在執行多數任務時使用者都可感覺到立竿見影的效能提升,而對於冷核的必要壓縮則大幅度節省了電晶體資源,並可達到明顯降低晶片功耗的目的。設計者可以在電晶體規模不變的前提下,讓X86處理器獲得數倍的效能提升。毫無疑問,PARROT對於深陷困境的X86架構無疑是雪中送炭,X86處理器將因此出現跨越性的技術進步。而換個角度看,PARROT完全可以說是RISC思想的偉大勝利,80/20法則再度成為魔法的關鍵,只不過,上一次 IBM基於此建立了偉大的RISC指令系統,而這次是Intel在保持X86軟體相容的前提下,成功實現了對微處理器結構的優化,兩種做法可謂是殊途同歸。據悉,PARROT技術將在2007年開始進入實用,“Merom”將成為首款基於PARROT思想的處理器核心。大家一定看過這樣的新聞:2007 年Intel的伺服器處理器、桌面處理器和移動處理器都將採用“Merom”核心,無論效能還是功耗都將有出色的表現,我們有足夠的理由對它寄以厚望。