為什么我們寫這本書在本書的三個版本中,我們的目標一直是描述揭示未來科技發(fā)展方向的基本原理。我們關于計算機系統(tǒng)結構的熱情沒有消退,正如同我們從第一版開始就不斷重復的那樣:“這絕不是無聊的紙上談兵式的計算機科學:這個學科閃耀著奪目的智慧火花,還需要平衡市場購買力和性能價格比,它可能導致巨大的失敗,也可能帶來偉大的成功?!痹趯懙谝话鏁r,我們的主要目標是改變人們學習和認識計算機系統(tǒng)結構的方法。我們感到這個目標依然重要。這是一個日新月異的領域,我們必須研究實際的例子,評估實際的機器,而不是僅僅給出一堆毫無必要的定義和設計。我們在此熱烈地歡迎那些從一開始就和我們在一起的人們,同時也熱烈歡迎現在加入到我們中間的人們。自始至終我們都將用定量的方法對真實的機器進行分析。和前幾個版本一樣,我們努力編寫這個新版本,使其既適用于專業(yè)的工程師和設計者,也適用于學習高等計算機系統(tǒng)結構和設計課程的人士。同樣,這一版將致力于通過強調價格和性能的綜合考慮以及良好的工程設計,來闡明計算機系統(tǒng)結構。我們相信這個領域在不斷地成熟,正在成為精確量化長期建立的科學和工程理論的基礎。在我們199年的第一版和1996年的第二版中描述的理論能夠成功地應用于揭示現今計算機技術領域的狀況,這使我們得到了莫大的滿足。我們期望在未來的幾十年中,讀者能夠應用這本書中的基本理論得到同樣滿意的結果。關于第三版本書的第三版本來應該是很容易寫的:和前兩個版本相同,我們的量化研究方法沒有改變,我們的著眼點還是計算機設計中的基本原理。和第二版一樣,書中的例子已經進行了更新。但這個領域中日新月異的進展和新出現的市場,以及和這些市場相關的方法,使得我們幾乎重寫了整本書。在第二版發(fā)行后的六年里,計算機系統(tǒng)結構的發(fā)展一直沒有減緩過。當編寫第二版的時候,我們就發(fā)現有許多的新概念需要介紹,還有一些材料應該有更基本的定位。我們的系列叢書從本書的第一版開始,接著是“ComputerOrganizationandDesign:TheHardware/SoftwareInterface”(《計算機組織與設計:硬件/軟件接口》),然后是本書和“ComputerOrganizationandDesign:TheHardware/SoftwareInterface”的第二版,現在出的本書第三版,已經是我們系列叢書中的第五本了。一些過時的概念被移到了“ComputerOrganizationandDesign:TheHardware/SoftwareInterface”這本書或者本書的附錄中。這和我們的目標是一致的,即在最新的計算機技術環(huán)境中介紹概念。所以,本書第二版中只有少量有意義的部分被保留,而第一版中幾乎所有內容都已經被替換了??赡茏钭屛覀兂泽@的是,現在計算機系統(tǒng)結構領域已經被分成了彼此相關但又有不同的三個市場部分,每一部分都有自己獨特的需求。在本書的第一版和第二版中介紹的性能價格比主題內容仍然能夠很好地說明臺式計算機部分。另外兩個新的部分是嵌入式計算機和服務器,為了反映這些變化,這一版做了兩點比較大的改動:第一點,我們拓展了標準化的成功這一方面的內容;第二點,我們加入了一個稱為“其他視角:……”的新部分,用視頻游戲、數碼相機和可視電話等材料補充了各章的“綜合:……”主題中的傳統(tǒng)例子。和臺式機相比,嵌入式計算機更加關注低能耗。通常情況下,它們只用來運行單個程序,采用電池供電,沒有主動制冷機制,對能量的利用率要求非常嚴格。為了闡述嵌入式處理器方面的內容,我們增加了一些內容,例如采用EEMBC標準來評測系統(tǒng)的性能,還有多媒體處理器和DSP指令集的一些設計準則。附錄中包含了關于最流行的嵌入式指令集結構的材料,本書中還包括了平衡性能和能耗的一些方法,介紹了兩個強調低能耗的例子:Transmeta和低能耗MIPS處理器,還提到了嵌入式系統(tǒng)的一些例子,包括PlayStation-2視頻游戲機、Sanyo數碼相機以及Nokia移動電話。臺式機強調性能,服務器則不同,它更強調系統(tǒng)的可靠性、可擴展性和吞吐量。通常情況下,這種系統(tǒng)包含多個處理器和多塊磁盤。本書解釋了可靠性的概念,給出了很難得的組件故障率的統(tǒng)計數據。除了評測處理器性能的SPEC2基準測試,我們還介紹了文件服務器的TPC數據庫基準測試以及SPEC基準測試。本書中介紹的服務器處理器的例子包括Intel的IA-64處理器和Sun的UltraSPARCIII處理器,服務器系統(tǒng)的例子包括SunFire68,SunWildfire,EMCSymmetrix,EMCCelerra,Google集群計算機和IBM事務處理集群計算機。在第三版中,我們繼續(xù)采用真實世界的例子來說明我們的思想。另外,“綜合:……”部分的例子是1%新增的。這部分包括MIPS64指令集結構,IntelPentiumIII和Pentium4的流水線組織,IntelIA-64結構和微結構(microarchitecture),Alpha21264存儲器層次結構,SunWildfire多處理器,EMCSymmetrix存儲陣列,EMECelerra文件服務器和Google搜索引擎。“其他視角:……”部分介紹了真實世界中的嵌入式處理器和服務器,包括TrimediaTMS多媒體處理器,PowerPC多線程處理器,SonyPlaystation-2上動畫引擎的存儲器層次結構,SunFire68/UltraSPARCIII存儲器層次結構,EmpowerTelMXP嵌入式多處理器,Sanyo數碼相機和Nokia移動電話。根據讀者的建議,我們改進了練習部分。所有的練習都經過了復查,減少了不明確的地方,去掉了不合適的題目,同時我們還加入了許多新的習題。應許多讀者的要求,我們在附錄B中給出了部分習題的答案。為了方便讀者的閱讀,我們加入了一些比較新的特性。例如,我們用流行的64位MIPS系統(tǒng)結構代替了假想的32位DLX系統(tǒng)結構,因為使用現有的軟件顯然比我們另外開發(fā)并維護自己的編譯器更有意義。在附錄中我們包含了數十種指令集結構的描述,還包括了它們的基本教程、流水線的簡單介紹以及向量處理器和浮點運算算法。論題的選擇和組織就如同從前一樣,我們采用保守的方法進行論題的選擇,由于在這個領域中有太多有意義的想法,超過了基本理論所能夠覆蓋的范圍。我們沒有去全面綜述每種結構,而是把我們的論述集中在任何新機器中都可能涉及到的核心概念。關鍵標準是選擇那些已經成功地經受了考驗并得到了充分的應用,同時能夠使用定量的術語進行討論的觀點。我們確定是否選擇一個新論題時,所遇到的第一個困難就是由于某些論題已經發(fā)展得更為重要,原來只需要幾頁篇幅的描述,而現在幾頁根本不能說明問題。第二個困難是某些以前我們沒有包括進來的論題已經成長為需要基于我們的定量標準和它們成功的市場表現進行討論的主題了。為了討論這些新的材料,我們減少了介紹性知識所占的比例,并且假定讀者了解“ComputerOrganizationandDesign:TheHardware/SoftwareInterface”這本書中的介紹性概念。考慮到對流水線不熟悉的讀者,我們在附錄A中包括了對流水線的基本介紹(如果讀者想要更深入地了解流水線的基本知識,請參閱“ComputerOrganizationandDesign:TheHardware/SoftwareInterface”一書)。我們的目的一直都是盡力提供從其他類似來源不能獲得的材料,所以我們在可能的時候就會重點介紹一些高級內容。實際上有幾個本書中全面介紹的系統(tǒng),其他文獻中是找不到相關描述的。內容概述第1章主要講計算機設計的基本量化原理和性能的評測方法。這一章指出了技術的作用和影響計算機系統(tǒng)價格的因素。本章總結了臺式機、服務器和嵌入式計算機市場中的性能評測和性價比評測,同時考慮了嵌入式處理器的能量利用率。第2章包括了指令集設計的基本原理和示例。本章除了給出基于SPEC2基準測試的指令集使用量化數據,還介紹了貫穿全書的MIPS64系統(tǒng)結構。這個版本中新加入了數字信號處理器的原理,包括其基本功能和評測方法。這一章還介紹了現代編譯器的結構,講述了它們如何影響傳統(tǒng)計算機,DSP和多媒體擴展指令集的功能。同時給出了一個和多媒體處理器對照的例子:TrimediaTM52,這個處理器的指令集混合了多媒體指令和MIPS指令。附錄C到G擴展了這一章的內容,加入了十幾種流行的指令集。第3章和第4章主要介紹高性能處理器中的指令級并行技術,包括超標量技術、分支預測、猜測執(zhí)行、動態(tài)調度以及相關的編譯器技術。這些技術發(fā)展非常迅速,盡管我們用了57頁的附錄(附錄A,以第二版第3章為基礎),我們仍然需要用兩章的篇幅來介紹一些相對高級的內容。這一版的第3章主要描述基于硬件的指令級并行技術,而第4章把重點放在了與之相關的編譯技術上。第3章用IntelPentium系列處理器作為主要示例,而第4章的示例采用IntelIA-64架構的第一個實現版本:Itanium。第5章首先介紹了cache的基本原理,然后討論了現在比較有挑戰(zhàn)性的問題:存儲器層次結構優(yōu)化設計。除了傳統(tǒng)的例子,例如Alpha21264,AMDAthlon,IntelPentiumIII和Pentium4以外,這一章還介紹了SonyPlaystation-2視頻游戲機上的動畫引擎和使用UltraSPARCIII處理器的SunFire68服務器的存儲器層次結構。書中描述了應用帶寬優(yōu)化技術的DRAM芯片,例如RAMBUS,并分析了它們的性價比。另外,這一章還包括了臺式機cache的SPEC2基準測試性能數據,以及cache在多媒體和服務器應用程序中的性能。第6章討論了多處理器系統(tǒng),重點放在共享內存的系統(tǒng)結構上。這一章開頭討論了在線程級并行層次上不同應用領域的特性,然后討論了對稱和分布式內存結構的基本組織原理和性能。這一章的基本論題是同步、內存一致性模型和多線程(包括并發(fā)多線程)。另外,本章還討論并分析了采用分布式內存結構擴展對稱式結構的SunWildfire設計。第7章講述存儲系統(tǒng),本章進行了極為可觀的修訂,增加了可靠性和實用性方面的內容、RAID的基本介紹、可用性基準測試和難得的實際系統(tǒng)故障統(tǒng)計數據。這一章提供了隊列理論的介紹和I/O性能的基準測試數據。除了對傳統(tǒng)總線的介紹外,還介紹了嵌入式總線和服務器總線。這一章后面部分描述的5個設計實例,通過越來越實際的性能要求對一個I/O系統(tǒng)不斷進行改進,同時進行了平均故障時間的評估。EMC提供了把這些都綜合在一起的實例,這是這些系統(tǒng)相關文檔的首次公布。本章對數碼相機的剖析使得讀者能夠從嵌入式的視角對存儲系統(tǒng)進行理解和研究,同時從歷史的角度給出了最真切的RAID系統(tǒng)發(fā)展和普及的歷程。第8章的目標是從計算機系統(tǒng)結構的角度介紹網絡。由于該領域發(fā)展十分迅速,因此重點介紹概念和基本原理。本章開頭提供了一個通用的框架,給出了在各種情況下網絡設計的基本思想,包括局域網、存儲區(qū)域網絡和廣域網,并對因特網技術進行了總結。本章的后半部分深入探討了集群技術及其在科學計算和數據庫程序方面的應用,還詳細討論了集群系統(tǒng)的性價比,包括了機房和網絡帶寬的價格。最后通過對Google搜索引擎使用的集群系統(tǒng)的討論,總結了這一章的內容。本書的附錄編號從A到I。附錄A是流水線基本概念的指南,對流水線不熟悉的讀者應該在讀第3章、第4章之前先閱讀附錄A,了解一下流水線的基本知識。附錄B是部分練習題的解答。附錄C更新了第二版中RISC附錄的內容,加入了64位Alpha,MIPS,PowerPC和SPARC及其多媒體擴展指令的描述,同時該附錄中還包括了流行的嵌入式指令集,例如ARM,Thumb,SuperH,MIPS16和MitsubishiM32R。附錄D介紹了8x86系統(tǒng)結構。附錄E和附錄F分別對應兩種在系統(tǒng)結構發(fā)展歷史上有一定意義的結構,它們是VAX(附錄E)和IBM36/37(附錄F)。附錄G包含了更新過的一些向量處理器的知識。附錄H描述計算機算法,附錄I則介紹了一致性協議的實現。限于篇幅,本書紙介版本附錄C到I只給出其標題,具體內容請到www.mkp.com/CA3瀏覽或下載。總體上說,這個版本有7%的內容是新的。如果不包含聯機的附錄,那么第三版比第一版長1%,如果包含網上的在線附錄,那么第三版比第一版長3%。內容導讀對于本書其實并沒有一個最好的閱讀順序。我們編寫這本書的時候,就已經考慮到要保證讀者能夠按照多種順序來閱讀這本書。本書中有一些章節(jié)需要按照一定先后順序閱讀::第2章、第3章、第4章和第7章、第8章這幾章。讀者應該從第1章開始閱讀,在閱讀第6章之前先閱讀第5章。如果需要了解附錄C、附錄D、附錄E、附錄F和附錄H的內容,應該在第2章之前閱讀。如果讀者準備閱讀附錄A,那么應該在第3章、第4章之前進行。附錄G的內容和第3章、第4章的內容形成了很有趣的對照:建議穿插閱讀。雖然有很多閱讀的方法,但我們還是建議讀者采用如下兩種主要的閱讀方法:1.由內到外(Insideout)。這種方法的指導思想是:處理器設計是計算機系統(tǒng)結構的基礎,與處理器無關的章節(jié)只有在時間充足的情況下才去閱讀。先從第1章開始,然后是處理器的內部結構(第2章、第3章和第4章)、存儲器層次結構(第5章),接著是多處理器(第6章)和存儲系統(tǒng)(第7章),最后是網絡和集群(第8章)。2.由外到內(Outsidein)。這種方法的指導思想是:當今計算機系統(tǒng)結構中有挑戰(zhàn)性的問題都在處理器之外,處理器內部的知識只有在時間充足的情況下才去閱讀。先從第1章開始,然后是存儲器層次結構(第5章)、多處理器(第6章)、存儲系統(tǒng)(第7章)、網絡和集群系統(tǒng)(第8章),最后用指令集和流水線來進行總結(第2章、第3章和第4章)。章節(jié)結構和習題每個章節(jié)中,所有的內容都按照相同的模式組織。在每一章的開始我們引入該章的主要論題。然后是相關問題部分,主要講述這章中所涉及的思想是如何和其他章節(jié)中的思想相互影響相互作用的。接著是“綜合:……”部分,描述了如何將這些思想應用于實際的機器,并且由此來組織這些思想。接下來是“其他視角:……”部分,這是第三版的新特性,通過實際的嵌入式或者服務器系統(tǒng)的例子使讀者對本章的內容有新的認識。下一個部分是謬誤和易犯的錯誤部分,主要目的是使讀者能夠從其他人的錯誤中得到教訓。我們指出了通常存在的誤解和非常難以避免的結構上的陷阱,力圖使讀者對這些攔路虎保持警惕。每一章的最后是結論、歷史回顧和參考文獻幾部分,對這些章節(jié)中所提到的思想給出評價并對這些發(fā)明創(chuàng)造的歷史背景進行介紹。我覺得這就像是一部計算機設計的戲劇一樣。參考文獻是為了方便學習系統(tǒng)結構的學生進行查找。如果讀者有時間,我們推薦閱讀一些本書提到的領域中的經典論文。從原創(chuàng)作者那里直接體驗這些思想是非常有樂趣和教育意義的。謬誤和易犯的錯誤以及歷史回顧是前兩個版本中最受歡迎的部分。本書每章后面都有習題,總共有超過2道習題。每個習題號后面的括號中都會指出回答該問題所需要閱讀的主要相關章節(jié)。我們希望這能夠幫助讀者避免做那些還沒有閱讀相應章節(jié)的練習,同時這也提供了評判結果合理與否的參考內容。注意對于標有量號(★)的題目,我們在附錄B中給出了解答。我們還將習題分類,估計了各個問題可能需要花費的時間:[1]5分鐘以內(閱讀和理解)[2]15到2分鐘內寫出完整解答[25]1個小時內寫出完整解答[3]短程序設計:少于一整天的編程[4]大程序設計:2周的時間[5]學期設計(一個小團隊2到4周的時間)[討論]和其他對計算機系統(tǒng)結構感興趣的人進行討論的題目補充MorganKaufmann出版社還可以向使用該書的正式教員提供一本教師手冊(“Instructor誷Manual”),該手冊給出了本書所有練習題的全面解答。眾多的附錄材料可以從MorganKaufmann的主頁上得到(www.mkp.com)。由于我們使用的是標準的指令集,所以我們已經不需要提供專用的軟件。主頁中包含了MIPS結構的相關內容,例如模擬器、編譯器和匯編器等。這個主頁還包括了勘誤表、書中插圖的eps版本,以及讀者可能感興趣的相關材料的鏈接。為了感謝讀者的一貫支持,出版社將經常性地加入新的內容,并且補充到相關站點的鏈接中。幫助改進這本書閱讀這本書還有可能掙錢。談談性能價格比吧!如果你讀了后面的致謝,你就會看到在修正錯誤上,我們有很長的路要走。因為一本書會多次印刷,我們有機會進行更多的校訂。如果你發(fā)現了任何錯誤①,請通過電子郵件(ca3bugs@mkp.com)和出版社聯系。第一位報告某個錯誤,并且該錯誤被我們在下一次印刷中糾正的讀者將獲得1美元的獎金。請查閱http://www.mkp.com主頁的勘誤表,看看所發(fā)現的錯誤是否已經有人報告了。我們將處理錯誤報告,并在一年左右發(fā)送核實結果,請耐心等待。我們也非常歡迎對于本書內容的建議,希望讀者能把寶貴的建議發(fā)送到另一個電子郵件地址ca3comments@mkp.com②。結束語本書又是一次真正合作的結晶,我們每人寫了一半的章節(jié)和一半的附錄。我們無法想像,如果沒有另外一個人的工作,我們需要多長的時間才能完成這本書。我們在看上去沒有希望的時候相互鼓勵,共同深入地說明比較困難的概念,在周末時為長達1頁的書稿進行檢查,以及在沉重的責任和壓力使得我們難以拿起筆的時候互相寬慰。因此,我們將再次共同承擔讀者在閱讀后的各種批評。美國斯坦福大學計算機系Hennessy教授和加州大學伯克利分校計算機系Patterson教授是現今計算機設計領域非常受人尊敬的學者和開拓者。JohnHennessy精通軟硬件兩個方面,是具有傳奇色彩的MIPS編譯器和幾代MIPS硬件產品技術上的領導者。DavidPatterson是RISC的最初提倡者之一。他首創(chuàng)了RISC一詞,定義了RISC的含義,是Sun公司SPARC處理器的主要顧問。他提出了RAID(獨立/廉價磁盤冗余陣列)的概念,推動了為海量數據服務器提供磁盤存儲解決方案的工業(yè)革命,并且還提出了NOW(工作站網絡)的概念。該書是他們對計算機組織、系統(tǒng)結構研究和實踐的全面而系統(tǒng)的總結。目前,世界上很多大學的計算機系統(tǒng)結構課程采用這本教材。國內也有大學采用這本教材的英文版。與同類著作相比,這本書具有結構清晰完整、系統(tǒng)性強、內容新穎、行文深入淺出和可讀性強的特點。特別值得強調的是,這本書講授計算機組織和系統(tǒng)結構的量化研究方法能夠使讀者深入、扎實地掌握基本概念和理論,同時培養(yǎng)一種科學、規(guī)范而且有效的學習和科研方法乃至思想。這也是本書能在世界范圍內備受推崇以及我們把它翻譯成中文并極力在國內推廣的主要原因。這是一本能使讀者在較短時間內全面了解、熟悉和掌握當代計算機系統(tǒng)結構發(fā)展主流技術和最新成就的優(yōu)秀教材和專業(yè)參考書。其中譯本的問世必將為我國計算機科學技術教育和研究工作帶來新的思路和靈感。感謝電子工業(yè)出版社對出版中譯本(第三版)的支持,感謝清華大學計算機系許多同學在翻譯和校對過程中所付出的辛勤努力。由于時間倉促、譯者水平有限,文中定有不當或欠妥之處,還望讀者批評指正。本書系統(tǒng)而全面地介紹了計算機系統(tǒng)的設計基礎、指令集系統(tǒng)結構、流水線和指令級并行技術、層次化存儲系統(tǒng)與存儲設備、互連網絡以及多處理器系統(tǒng)等重要內容。對計算機系統(tǒng)結構的論述主要以較流行的64位MIPS結構為基礎,通過量化分析的方法進行。本書內容豐富全面,既介紹了當今計算機系統(tǒng)結構的最新研究成果,也引述了大量有影響的計算機系統(tǒng)設計開發(fā)方面的實踐經驗。全書編排層次合理,敘述由淺入深。各章結尾還附有大量的習題和參考文獻。本書既可以作為高等院校計算機專業(yè)高年級學生和研究生學習“計算機系統(tǒng)結構”、“計算機原理”等課程的教科書或參考書,也可供與計算機相關的專業(yè)人士學習參考。BillJoy,Sun微系統(tǒng)公司的首席科學家兼首席執(zhí)行官。非常幸運,二十多年前我能在加州大學伯克利分校的DavidPatterson教授指導下學習計算機系統(tǒng)結構。我非常欣賞他的課程,那時正是RISC架構發(fā)展的初期。在離開伯克利后幫助創(chuàng)建Sun微系統(tǒng)公司的過程中,我有很多想法來自于他的課程教學,以及這本非常重要的書。今天,一個好消息是,這本書的內容覆蓋了許多當代非常重要的知識。未來的好消息是,仍然有無數激動人心的、富有挑戰(zhàn)性的工作等著我們去完成。而本書無疑是一個很好的開始。我參加過的最成功的項目都是由簡單的想法開始,并采用從經驗中總結來的簡單數學模型來完成的。計算機技術正在迅速地發(fā)展,各種新的應用不斷出現,這促使我們需要新的簡單模型來理解未來可能出現的新事物,理解新的應用如何在各種不同的方面影響我們的系統(tǒng)。第1章介紹的定量方法是理解這些問題的重要工具。我們尤其希望在不遠的將來,各種或大或小的系統(tǒng)都會更加強調用最小的能耗達到應用的要求。這方面還有許多工作需要去做。在我的職業(yè)生涯中,我接觸過許多不同的指令集。我開始編程的時候用的是PDP-8計算機,它的指令集非常簡單,我的一個朋友甚至通過打孔紙帶的數據就能理解程序。我用PDP-11的匯編器寫了許多程序,包括一個VAX上的Pascal語言解釋程序(本書第一版中的一個例子)。VAX的成功使得UNIX系統(tǒng)在早期的互聯網中得到了廣泛的傳播。PDP-11和VAX是非常傳統(tǒng)的復雜指令集(CISC)結構,其相對簡潔的指令集使得它幾乎無法使用流水線。在多年的公開訪談中,我都把VAX11/78的性能作為基準,它的速度廣為人知,因為在很長一段時間內,該系統(tǒng)結構的快速實現一直沒有出現。微處理器的x86以及68x等復雜指令集出現后,VAX的性能就顯得很落伍了。微處理器的價格優(yōu)勢使得它們漸漸取得了統(tǒng)治地位。這個時候,精簡指令集系統(tǒng)結構(RISC)出現了。這種結構最早由IBM的JohnCocke提出,Patterson和Hennessy為它正式命名并大力提倡,并由POWERPC,MIPS和SPARC等微處理器實現。這些實現證明采用簡單的寄存器指令集能夠獲得高性能的流水線。一般來說,采用RISC的程序代碼比較長,由此需要更高的取指令(fetch)帶寬,第1章中的技術和CarverMead的經典論斷所揭示的未來CMOS技術的發(fā)展趨勢告訴我們,這點代價是值得的。對當前所存在問題的思考和對未來計算的展望,使得我們更傾向于RISC系統(tǒng)結構,這將成為本書關注的中心。第2章(以及相關的附錄)介紹了當代以及歷史上有影響的指令集結構。雖然經歷了近二十年的努力,RISC結構還遠不能成為系統(tǒng)結構的終結者。前后有十幾年的時間里我參與了SPARC結構的設計及其幾個版本的實現,現在我正在參與另外兩種不同結構處理器的設計,它們是:picoJava,它實現了大部分的JAVA虛擬機指令,這是一種簡潔的字節(jié)碼高級指令;MAJC,一種簡單的多線程超長指令字(VLIW,Verylonginstructionword)處理器,主要用于Java程序和多媒體應用。這兩種結構針對不同的新市場應用,即低能耗的嵌入式設備領域和能夠在一定的能耗和成本下采用并行計算獲得高性能的領域。這兩者現在都還沒有取得廣泛的商業(yè)成功。但我認為未來會有許多不同的工業(yè)標準結構(ISA)受到青睞。對歷史的深入了解可以讓我們深受啟發(fā),通過對過去成功設計的研究,可以發(fā)現它們是如何在幾個關鍵因素,例如程序大小、執(zhí)行速度和能耗等方面取得平衡的。這些經驗將為我們今天的設計提供幫助。第3章和第4章講述了指令級并行(ILP),這種能力可以使計算機在同一時刻執(zhí)行多條指令。在過去的二十幾年中,RISC技術和超長指令字技術大大促進了這一領域的發(fā)展。但是,在IntelItanium的結構設計中,RISC技術,特別是VLIW技術需要很高的能耗。當我們試圖獲得更高的指令級并行度的時候,我們遇到了設計中的難題:如果需要同時執(zhí)行N條語句,那么晶體管數量和能耗的需求將以N2的態(tài)勢迅速增長。另一種方法是采用簡單的流水線,比較現實的指令級并行度,并混合使用其他的并行方法,例如每處理器多線程和每芯片多處理器技術。對于未來的高性能系統(tǒng)設計,最大的挑戰(zhàn)就是要明白并行執(zhí)行是完全可能的,但在實際中融合其他并行度低但是能耗也低也更簡單的技術才是明智的做法。在研究所的時候,我經常開玩笑地說高速緩存是計算機科學中惟一重要的思想。事實上,高速緩存技術確實極大地影響了計算機系統(tǒng)的設計。第5章介紹了經典的高速緩存設計和主存儲器層次結構以及虛擬內存技術?,F在,類似于Java的高級編程語言開始采用垃圾回收和內存越界檢查技術來支持更可靠的軟件設計,這樣可以避免內存共享錯誤和緩沖區(qū)溢出等大程序中常見的錯誤。只有類似于Java的高級語言才支持自動存儲管理,只有這樣才能實現真正的軟件組件。但是在現在的存儲器層次結構上,要實現垃圾回收功能是非常困難的。設計這樣的系統(tǒng)或者設計這樣的語言是研究的熱點,雖然我們取得了很大成功,但仍然有很長的路要走。Java語言能夠很好地支持線程級并行。這是實現簡單、高效的高性能系統(tǒng)的關鍵,這種方法避免了前面所說的N2問題,但也帶來了新的挑戰(zhàn)。第6章將對這一領域進行基本的介紹。傳統(tǒng)的做法是每一個處理器放在一塊單獨的芯片上,由于存儲器層次結構的問題以及同步操作本身的高昂代價,在不同處理器之間保持同步非常困難。Java語言試圖解決這個問題。我們的嘗試是在Java語言規(guī)范(我是作者之一)中給出用Java實現內存模型的一個描述。我們清醒地看到,這個描述存在技術上的問題(可修正),我們需要對存儲器層次結構進行仔細思考,以便使我們設計的語言能夠更好地運行在新的系統(tǒng)平臺上。我們把Java規(guī)范看做是未來將要完成的許多工作的第一步。和第7章描述的一樣,存儲系統(tǒng)由原來連接在單個計算機的一個組成部分,變成了一種獨立的網絡資源。這讓人想起了計算機圖形技術的發(fā)展史,隨著圖形處理重要性的增加,原來由主機處理的功能被單獨分割出來,成為了獨立的圖形處理芯片。在接下來的幾年中,一切將會發(fā)生巨大的改變,大量的并行主處理器將擁有比主板之外的圖形處理單元更好的性能。與此類似,存儲技術將會有突破性的進展,例如分子電子學和納米技術將會大大降低存儲設備的價格并縮短訪問時間。這將鼓勵人們把數據備份在不同的計算節(jié)點上,而不是通過網絡共享。存儲技術將發(fā)生和圖形技術類似的變化。同樣,存儲系統(tǒng)也將會有非常嚴格的健壯性要求,不僅僅是針對硬件錯誤,還要考慮軟件錯誤以及人為操作失誤。這將是近幾年一個非常有挑戰(zhàn)性的課題。第8章提供了計算機互連和網絡的一個基本介紹。這方面我的模型來自于Sun公司另外一位創(chuàng)始人AndyBechtolsheim,他經常說:“以太網不??!”。更為合適的表述是:給出網絡互連的要求,不管以太網有什么缺點,總會有一款經過某些修改的以太網協議版本在市場上獲得勝利。原因何在?很明顯,以太網協議具有簡單和使用廣泛的特點,然而更加有說服力的原因是,采用以太網協議我們能夠立即開始工作,而不需要爭論對最終結果無關緊要的細節(jié)。這個經驗能夠適用于本書中有關計算機系統(tǒng)結構的一切領域。多年以前,DavePatterson曾經說過,對于一個新的項目,你只能獲得有限的“亮點”(clevernessbeans)。即你只能在設計中有限的幾個方面采用很“聰明”的做法,如果想在方方面面都采用“聰明”的做法,那么你的設計很可能達不到最終的目標,甚至無法工作或者無法完成。在二十多年的設計中我學到的一個教訓就是:在設計的過程中,你必須要選擇最重要的部分并且將重點放在那里。真正的智慧是知道應該放棄什么,知道什么是無法企及的是具有這種能力的關鍵。同樣,你必須要仔細選擇你的猜想。很多年以前我參加了在夏威夷舉行的一個會議,在會上,富有傳奇色彩的計算機設計師MauriceWilkes為我們做了一次演講。他說,在他的記憶中,好的研究總是包含一些猜想,這些猜想也許在當時看來是不切實際的,但是在未來有可能實現。如果這些猜想實現了,那么你將發(fā)現你做了非常偉大的研究。例如,XeroxPARC的研究小組給出了一個猜想:人人都使用帶有圖形界面的個人電腦,通過互連網絡連接其他人的機器,并采用便宜的Xerography技術進行打印?,F在看來,他們的預言是多么的準確,他們的工作是多么的重要??!在我們的時代,在計算機系統(tǒng)結構領域中,我想將會有許多猜想變?yōu)楝F實。有一些甚至不會有爭議,例如摩爾定律將在近十年內繼續(xù)有效,也許十年之后大規(guī)模芯片設計的復雜程度將會達到它的物理極限。更毋庸置疑的是,分子技術有可能極大地降低存儲和邏輯元件的價格,光學互連技術將極大地增加網絡的帶寬并減少傳輸的錯誤率,軟件仍然會因為編寫困難而不可靠,安全問題將繼續(xù)成為人們關心的重點。本書詳細介紹了計算機系統(tǒng)結構發(fā)展的趨勢。下一代的計算機設計者能夠利用本書中的知識精華甄別優(yōu)劣,減少缺陷,從而設計出各種樣式和大小的系統(tǒng)。計算機系統(tǒng)結構設計正變得越來越多樣化,也越來越有趣。讓我們立即啟程探索,或者再次征服這個領域吧,而本書將是最好的起點。芯片中見!