內容簡介
《計算機組成與設計:硬件/軟件接口(原書第5版)》是計算機組成與設計的經典暢銷教材,第5版經過全麵更新,關注後PC時代發生在計算機體係結構領域的革命性變革——從單核處理器到多核微處理器,從串行到並行。本書特彆關注移動計算和雲計算,通過平闆電腦、雲體係結構以及ARM(移動計算設備)和x86(雲計算)體係結構來探索和揭示這場技術變革。
與前幾版一樣,本書采用MIPS處理器講解計算機硬件技術、匯編語言、計算機算術、流水綫、存儲器層次結構以及I/O等基本功能。
《計算機組成與設計:硬件/軟件接口(原書第5版)》特點
更新例題、練習題和參考資料,重點關注移動計算和雲計算這兩個新領域。
涵蓋從串行計算到並行計算的革命性變革,第6章專門介紹並行處理器,每章中都涉及並行硬件和軟件的相關主題。
全書采用Intel Core i7、ARM Cortex-A8和NVIDIA Fermi GPU作為實例。
增加“運行更快”這一新實例,說明正確理解硬件技術的重要性,它能使軟件性能提高200倍。
討論並強調計算機體係結構的“8個偉大思想”——通過並行提高性能、通過流水綫提高性能、通過預測提高性能、麵嚮摩爾定律的設計、存儲器層次、使用抽象簡化設計、加速大概率事件和通過冗餘提高可靠性。
作者簡介
David A. Patterson,加州大學伯剋利分校計算機科學係教授,IEEE和ACM會士,美國國傢工程院、國傢科學院和美國藝術與科學院院士,美國計算機曆史博物館院士,並入選矽榖工程名人堂。Patterson曾榮獲加州大學傑齣教學奬、ACM Karlstrom奬、IEEE Mulligan教育奬章和本科生教學奬。由於對RISC技術的貢獻,他獲得瞭IEEE技術成就奬和ACM Eckert-Mauchly奬;而在RAID方麵的貢獻為他贏得瞭IEEE Johnson信息存儲奬;他還和Hennessy分享瞭IEEE John von Neumann奬章和C&C;奬金。Patterson作為美國總統信息技術顧問委員會委員,還曾擔任計算機研究協會(CRA)主席和ACM主席。這些傑齣的工作使他榮獲瞭ACM和CRA頒發的傑齣服務奬。
John L. Hennessy,斯坦福大學的第10任校長,從1977年開始在該校電子工程與計算機係任教。Hennessy教授是IEEE和ACM會士,美國國傢工程院、國傢科學院和美國哲學院院士,美國藝術與科學院院士。他獲得過眾多奬項,包括:2001年Eckert-Mauchly奬,以錶彰他對RISC技術的貢獻;2001年Seymour Cray計算機工程奬;2000年與Patterson共同獲得IEEE John von Neumann奬章。他還擁有7個榮譽博士學位。1981年,Hennessy在斯坦福大學開始MIPS研究項目,1984年參與創建MIPS計算機係統(現在的MIPS技術公司),開發瞭一款商用RISC微處理器。除瞭技術活動與大學工作外,他還是多傢創業公司的顧問和投資者。
王黨輝,1975年生於陝西省周至縣。2005年獲得西北工業大學計算機學院工學博士學位。現為西北工業大學計算機學院副教授。2007年在比利時魯汶大學和歐洲微電子中心(IMEC)進修,2012~2013年8月在美國匹茲堡大學電子與計算機工程係訪問研究。主要研究方嚮為計算機係統結構、新型存儲係統、高可靠計算機係統等。承擔“計算機組成原理”“計算機係統結構”“匯編語言與接口技術”等課程的教學工作。
康繼昌,1930年生於上海市。1951年畢業於交通大學電機工程係。曆任哈爾濱軍事工程學院講師、副教授,西北工業大學教授、係主任,中國航空學會第二、三屆理事,國務院學位委員會一、二、三屆學科評議組成員。長期從事機載計算機的研究工作。20世紀60年代初主持研製成功我國一颱機載計算機,並得到推廣應用。後又主持研製成功多種型號的計算機。
安建峰,1977年生於河北省保定市。2009年獲得西北工業大學計算機學院工學博士學位。現為西北工業大學計算機學院副教授。2010年在比利時魯汶大學和歐洲微電子中心(IMEC)進修,2014年在新加坡國立大學計算機學院訪問研究。主要研究方嚮為高性能計算機體係結構、嵌入式係統軟硬件協同設計、FPGA可重構電路等。承擔“計算機組成原理”“計算機係統結構”“SoC設計方法學”等課程的教學工作。
精彩書評
★這是一本應該保存在書架上的計算機體係結構的教材。本書既陳舊又新穎,因為它不但介紹瞭基本原理——摩爾定律、抽象、加速大概率事件、冗餘、存儲層級、並行和流水綫,也使用如ARM Cortex A8和Intel Core i7等現代設計對這些基本原理進行瞭說明。
——Mark D. Hill, 威斯康星大學麥迪遜分校計算機科學教授,係主任
★教材的選擇是一個非常令人沮喪的摺衷—教學方法、內容的覆蓋麵、行文造句的質量、描述的精確程度、成本等都需要考慮。計算機組成與設計是不需要在這些方麵進行摺衷且涉及各個方麵的書。它不僅是一部計算機組成的教科書,也是所有計算機科學教科書的範本。
——Michael Goldweber,Xavier大學計算機科學係教授
★當前,半導體加工工藝按比例縮小的睏難是係統功耗的限製,在移動係統和大數據處理器領域,該限製與不斷增長的性能需求之間的矛盾越來越尖銳。第5版除瞭為讀者提供計算機體係結構的介紹,還為讀者準備瞭為應對該矛盾必須在設計方麵做的修改。在這個計算技術的新領域,必須進行軟硬件協同設計,另外,係統級體係結構優化與部件級優化一樣重要。
——Christors Kozyrakis,斯坦福大學電子工程和計算機科學係副教授
目錄
齣版者的話
本書贊譽
譯者序
前言
作者簡介
第1章 計算機概要與技術1
1.1 引言1
1.1.1 計算應用的分類及其特性2
1.1.2 歡迎來到後PC時代3
1.1.3 你能從本書學到什麼4
1.2 計算機係統結構中的8個偉大思想6
1.2.1 麵嚮摩爾定律的設計6
1.2.2 使用抽象簡化設計6
1.2.3 加速大概率事件6
1.2.4 通過並行提高性能7
1.2.5 通過流水綫提高性能7
1.2.6 通過預測提高性能7
1.2.7 存儲器層次7
1.2.8 通過冗餘提高可靠性7
1.3 程序概念入門7
1.4 硬件概念入門10
1.4.1 顯示器11
1.4.2 觸摸屏12
1.4.3 打開機箱12
1.4.4 數據安全15
1.4.5 與其他計算機通信16
1.5 處理器和存儲器製造技術17
1.6 性能20
1.6.1 性能的定義20
1.6.2 性能的度量22
1.6.3 CPU性能及其因素23
1.6.4 指令的性能24
1.6.5 經典的CPU性能公式25
1.7 功耗牆27
1.8 滄海巨變:從單處理器嚮多處理器轉變29
1.9 實例:Intel Core i7基準31
1.9.1 SPEC CPU基準測試程序31
1.9.2 SPEC功耗基準測試程序32
1.10 謬誤與陷阱33
1.11 本章小結35
1.12 曆史觀點和拓展閱讀36
1.13 練習題36
第2章 指令:計算機的語言40
2.1 引言40
2.2 計算機硬件的操作43
2.3 計算機硬件的操作數44
2.3.1 存儲器操作數45
2.3.2 常數或立即數操作數47
2.4 有符號數和無符號數48
2.5 計算機中指令的錶示53
2.6 邏輯操作58
2.7 決策指令60
2.7.1 循環61
2.7.2 case/switch語句63
2.8 計算機硬件對過程的支持64
2.8.1 使用更多的寄存器66
2.8.2 嵌套過程67
2.8.3 在棧中為新數據分配空間69
2.8.4 在堆中為新數據分配空間70
2.9 人機交互72
2.10 MIPS中32位立即數和尋址75
2.10.1 32位立即數75
2.10.2 分支和跳轉中的尋址76
2.10.3 MIPS尋址模式總結78
2.10.4 機器語言解碼79
2.11 並行與指令:同步81
2.12 翻譯並執行程序83
2.12.1 編譯器83
2.12.2 匯編器84
2.12.3 鏈接器85
2.12.4 加載器87
2.12.5 動態鏈接庫87
2.12.6 啓動一個Java程序89
2.13 以一個C排序程序作為完整的例子90
2.13.1 swap過程90
2.13.2 sort過程91
2.14 數組與指針96
2.14.1 用數組實現clear96
2.14.2 用指針實現clear97
2.14.3 比較兩個版本的clear97
2.15 高級內容:編譯C語言和解釋Java語言98
2.16 實例:ARMv7(32位)指令集98
2.16.1 尋址模式99
2.16.2 比較和條件分支100
2.16.3 ARM的特色100
2.17 實例:x86指令集102
2.17.1 Intel x86的改進102
2.17.2 x86寄存器和數據尋址模式103
2.17.3 x86整數操作105
2.17.4 x86指令編碼107
2.17.5 x86總結108
2.18 實例:ARMv8(64位)指令集108
2.19 謬誤與陷阱109
2.20 本章小結110
2.21 曆史觀點和拓展閱讀111
2.22 練習題112
第3章 計算機的算術運算117
3.1 引言117
3.2 加法和減法117
3.3 乘法121
3.3.1 順序的乘法算法和硬件121
3.3.2 有符號乘法124
3.3.3 更快速的乘法124
3.3.4 MIPS中的乘法124
3.3.5 小結125
3.4 除法125
3.4.1 除法算法及其硬件結構125
3.4.2 有符號除法128
3.4.3 更快速的除法128
3.4.4 MIPS中的除法129
3.4.5 小結129
3.5 浮點運算130
3.5.1 浮點錶示131
3.5.2 浮點加法135
3.5.3 浮點乘法138
3.5.4 MIPS中的浮點指令139
3.5.5 算術精確性145
3.5.6 小結146
3.6 並行性和計算機算術:子字並行148
3.7 實例:x86中流處理SIMD擴展和高級嚮量擴展149
3.8 加速:子字並行和矩陣乘法150
3.9 謬誤與陷阱153
3.10 本章小結155
3.11 曆史觀點和拓展閱讀158
3.12 練習題159
第4章 處理器162
4.1 引言162
4.2 邏輯設計的一般方法165
4.3 建立數據通路167
4.4 一個簡單的實現機製173
4.4.1 ALU控製173
4.4.2 主控製單元的設計175
4.4.3 為什麼不使用單周期實現方式181
4.5 流水綫概述182
4.5.1 麵嚮流水綫的指令集設計186
4.5.2 流水綫冒險186
4.5.3 對流水綫概述的小結191
4.6 流水綫數據通路及其控製192
4.6.1 圖形化錶示的流水綫200
4.6.2 流水綫控製203
4.7 數據冒險:旁路與阻塞206
4.8 控製冒險214
4.8.1 假定分支不發生215
4.8.2 縮短分支的延遲215
4.8.3 動態分支預測216
4.8.4 流水綫小結220
4.9 異常221
4.9.1 MIPS體係結構中的異常處理221
4.9.2 在流水綫實現中的異常222
4.10 指令級並行226
4.10.1 推測的概念227
4.10.2 靜態多發射處理器227
4.10.3 動態多發射處理器231
4.10.4 能耗效率與高級流水綫233
4.11 實例:ARM Cortex-A8和Intel Core i7流水綫234
4.11.1 ARM Cortex-A8235
4.11.2 Intel Core i7 920236
4.11.3 Intel Core i7 920的性能238
4.12 運行更快:指令級並行和矩陣乘法240
4.13 高級主題:通過硬件設計語言描述和建模流水綫來介紹數字設計以及更多流水綫示例242
4.14 謬誤與陷阱242
4.15 本章小結243
4.16 曆史觀點和拓展閱讀243
4.17 練習題243
第5章 大容量和高速度:開發存儲器層次結構252
5.1 引言252
5.2 存儲器技術255
5.2.1 SRAM技術256
5.2.2 DRAM技術256
5.2.3 閃存258
5.2.4 磁盤存儲器258
5.3 cache的基本原理259
5.3.1 cache訪問261
5.3.2 cache缺失處理265
5.3.3 寫操作處理266
5.3.4 一個cache的例子:內置FastMATH處理器267
5.3.5 小結269
5.4 cache性能的評估和改進270
5.4.1 通過更靈活地放置塊來減少cache缺失272
5.4.2 在cache中查找一個塊275
5.4.3 替換塊的選擇276
5.4.4 使用多級cache結構減少缺失代價277
5.4.5 通過分塊進行軟件優化280
5.4.6 小結283
5.5 可信存儲器層次283
5.5.1 失效的定義283
5.5.2 糾正一位錯、檢測兩位錯的漢明編碼(SEC/DED)284
5.6 虛擬機287
5.6.1 虛擬機監視器的必備條件289
5.6.2 指令集係統結構(缺乏)對虛擬機的支持289
5.6.3 保護和指令集係統結構289
5.7 虛擬存儲器290
5.7.1 頁的存放和查找293
5.7.2 缺頁故障294
5.7.3 關於寫297
5.7.4 加快地址轉換:TLB297
5.7.5 集成虛擬存儲器、TLB和cache 300
5.7.6 虛擬存儲器中的保護302
5.7.7 處理TLB缺失和缺頁303
5.7.8 小結307
5.8 存儲器層次結構的一般框架309
5.8.1 問題1:一個塊可以被放在何處309
5.8.2 問題2:如何找到一個塊310
5.8.3 問題3:當cache缺失時替換哪一塊311
5.8.4 問題4:寫操作如何處理311
5.8.5 3C:一種理解存儲器層次結構行為的直觀模型312
5.9 使用有限狀態機來控製簡單的cache314
5.9.1 一個簡單的cache314
5.9.2 有限狀態機315
5.9.3 一個簡單的cache控製器的有限狀態機316
5.10 並行與存儲器層次結構:cache一緻性317
5.10.1 實現一緻性的基本方案318
5.10.2 監聽協議319
5.11 並行與存儲器層次結構:冗餘廉價磁盤陣列320
5.12 高級內容:實現cache控製器320
5.13 實例:ARM Cortex-A8和Intel Core i7的存儲器層次結構320
5.14 運行更快:cache分塊和矩陣乘法324
5.15 謬誤和陷阱326
5.16 本章小結329
5.17 曆史觀點和拓展閱讀329
5.18 練習題329
第6章 從客戶端到雲的並行處理器340
6.1 引言340
6.2 創建並行處理程序的難點342
6.3 SISD、MIMD、SIMD、SPMD和嚮量機345
6.3.1 在x86中的SIMD:多媒體擴展346
6.3.2 嚮量機346
6.3.3 嚮量與標量的對比347
6.3.4 嚮量與多媒體擴展的對比348
6.4 硬件多綫程350
6.5 多核和其他共享內存多處理器352
6.6 圖形處理單元簡介355
6.6.1 NVIDIA GPU體係結構簡介356
6.6.2 NVIDIA GPU存儲結構357
6.6.3 GPU展望358
6.7 集群、倉儲級計算機和其他消息傳遞多處理器360
6.8 多處理器網絡拓撲簡介363
6.9 與外界通信:集群網絡366
6.10 多處理器測試集程序和性能模型366
6.10.1 性能模型368
6.10.2 Roofline模型369
6.10.3 兩代Opteron的比較370
6.11 實例:評測Intel Core i7 960和NVIDIA Tesla GPU的Roofline模型373
6.12 運行更快:多處理器和矩陣乘法376
6.13 謬誤與陷阱378
6.14 本章小結379
6.15 曆史觀點和拓展閱讀381
6.16 練習題382
附錄A 匯編器、鏈接器和SPIM仿真器389
附錄B 邏輯設計基礎437
索引494
前言/序言
Computer Organization and Design:The Hardware/Software Interface我們能體驗的最美好的事物是神秘,它是所有真正的藝術和科學的源泉。 ——阿爾伯特·愛因斯坦,《我的信仰》,1930關於本書在學習計算機科學與工程時,除瞭掌握計算的基本原理外,還應該瞭解該領域的最新進展。各種計算領域中的讀者應有機會學習計算機係統的組成理論,因為這是決定計算機係統的功能、性能甚至成功與否的關鍵。 現代計算機技術需要各種計算方麵的專傢,他們應對硬件和軟件都有深入的理解。硬件和軟件在多個層次上的相互關係成為理解計算基本原理的框架。無論你的主要興趣是硬件還是軟件,是計算機科學還是電氣工程,計算機組成與設計的基本思想都是相同的。因此,本書著重展示硬件與軟件的關係,並重點介紹當今計算機中的基礎概念。 近年來,處理器已經由單核發展為多核,這也印證瞭本書自第1版就預測的發展趨勢。有些程序員忽略瞭這一發展趨勢,他們希望計算機體係結構專傢、編譯器設計者和芯片工程師能夠幫助他們,讓程序不做任何修改就可以更快或更高效地在新型處理器上運行。但是,這樣的時代已經一去不返瞭。為瞭使程序運行得更快,必須將其並行化。然而,許多研究者的目標是希望程序員在編寫程序時不需要考慮硬件的並行特徵,這一目標要很多年纔能實現。至少在下一個十年裏,大多數程序員必須理解硬件/軟件接口,纔能編寫齣能在並行計算機上高效運行的程序。 本書適閤以下讀者:在匯編語言或邏輯設計方麵隻有少許經驗,需要理解基本計算機組成的讀者;具有匯編語言或邏輯設計的基礎,需要學習如何設計計算機,或者要進一步理解計算機係統如何工作的讀者。 與本書相關的另一本書有些讀者可能已經熟悉作者的另一本書《Computer Architecture:A Quantitative Approach》� 8檬橐壓鬮�流傳,經常以作者姓名命名,稱為“Hennessy and Patterson”(本書則常稱為“Patterson and Hennessy”)。我們寫該書的目的是要用堅實的工程基礎和量化的性價比權衡來描述計算機體係結構的原理。我們以商用係統為例,用測量的方法來描述實際的設計經驗。我們的目標是用量化的方法而不是用描述的方法學習計算機體係結構,希望這一方法有助於培養能精確理解計算機的專業人纔。 機械工業齣版社已齣版瞭本書的第3版、第4版和第5版影印書,書名為《計算機體係結構:量化研究方法》。——編輯注本書的大多數讀者並不一定要成為計算機體係結構的設計者。但是,未來軟件設計人員對與軟件係統協同工作的基本硬件技術的理解程度,將直接影響軟件係統的性能和能效。因此,編譯器設計者、操作係統設計者、數據庫程序員以及其他大多數軟件工程師對本書的原理必須有充分的瞭解。同樣,硬件設計者也必須清楚地理解他們的工作對軟件的相應影響。 所以,本書的內容遠多於“Hennessy and Patterson”,而且進行瞭大量修訂,以適應不同專業的讀者。我們對再版“Hennessy and Patterson”時刪除的大量介紹性材料的效果感到滿意,這使得新版與第1版內容的重疊大大降低,本書亦如此。 第5版的變化第5版有6個主要的目標:使用運行例子的方法論證理解硬件的重要性;對前麵已經提到的重要技術采用黑體的方式進行強調;對例子進行瞭更新,以反映從PC時代到後PC時代的發展;將I/O吞吐率方麵的材料貫穿在整本書中,而不是集中在一章中;對技術內容進行瞭更新,以反映自2009年第4版齣版以來工業界的變化;將附錄和可選章節(目錄中帶有圖標的章節)的內容放在互聯網上(booksite.elsevier.com/9780124077263/index.php),而不是放在CD上,降低瞭本書的成本,也使該版本變成瞭一部電子書。 在詳細介紹第5版的修訂目標之前,首先看下錶。該錶給齣瞭本書的主要內容,並為關注硬件和關注軟件的兩種讀者分彆進行瞭導讀。其中,第1、4、5和6章對兩種讀者同等重要。第1章討論瞭能耗的重要性和由其引發的處理器從單核嚮多核的轉變,並介紹瞭計算機設計中的8個偉大思想。第2章對於硬件讀者來說很可能是復習性材料,而對於軟件讀者來說則是重要的閱讀材料,特彆是希望深入學習編譯器和麵嚮對象編程語言的讀者。第3章適閤對定點運算或者浮點運算感興趣的讀者,有些讀者可能不需要學習第3章。然而,我們將在本章介紹矩陣乘法運行的例子,展示如何采用子字並行方法將性能提高4倍,因此不要跳過3.6~3.8節。第4章介紹瞭流水綫處理器。其中,4.1、4.5和4.10節給齣瞭流水綫概述,4.12節給齣瞭進一步提高矩陣乘法運算性能的方法,這些小節對於軟件設計者來說比較重要。對於硬件設計者,第4章是核心內容。另外,根據讀者知識背景的不同,可以選擇是否首先閱讀附錄C中的邏輯設計部分。最後一章是多核、多處理器和集群係統,這一章是全新的內容,因此所有讀者都應該閱讀。本版的重要組織結構是使許多思想的引入更加自然,例如GPU、倉儲式計算機和集群係統中的關鍵——網絡接口卡的軟硬件接口。 章/附錄 節 關注軟件 關注硬件第1章 計算機概要與技術1.1~1.111.12(曆史)第2章 指令:計算機的語言2.1~2.142.15(編譯器和Java)2.16~2.202.21(曆史)附錄E RISC指令集體係結構E.1~E.17第3章 計算機的算術運算3.1~3.53.6~3.8(子字並行)3.9~3.10(謬誤)3.11(曆史)附錄B 邏輯設計基礎B.1~B.13第4章 處理器4.1(引言)4.2(邏輯設計慣例)4.3~4.4(簡單實現)4.5(流水綫概述)4.6(流水綫數據通路)4.7~4.9(冒險和異常)4.10~4.12(並行和實例)4.13(Verilog流水綫控製)4.14~4.15(謬誤)4.16(曆史)(續)章/附錄節關注軟件關注硬件附錄D 控製通路的硬件實現D.1~D.6第5章 大容量和高速度:開發存儲器層次結構5.1~5.105.11(廉價冗餘磁盤陣列) 5.12(Verilog cache控製器)5.13~5.165.17(曆史)第6章 從客戶端到雲的並行處理器6.1~6.86.9(網絡)6.10~6.146.15(曆史)附錄A 匯編器、鏈接器和SPIM仿真器A.1~A.11附錄C 圖形處理單元C.1~C.13仔細閱讀 有時間閱讀 作為參考 迴顧或閱讀 拓展閱讀第5版的第一個目標是使用一個例子來論證理解硬件對提高性能和能效的重要性。正如前麵所述,在第3章,我們采用子字並行將矩陣乘法加速4倍,在第4章通過循環展開將性能翻倍,證明瞭指令集並行的價值。第5章通過分塊技術對cache進行優化,再次將性能翻倍。第6章通過在16個處理器上的綫程級並行獲得瞭14倍的加速比。這4種優化技術僅僅在原始的矩陣乘法例子中的C代碼上增加瞭24行。 第二個目標是通過提早介紹計算機體係結構設計中的8個偉大思想並在整本書中明確指齣它們的應用之處來幫助讀者理解計算機設計的精髓。我們采用黑體文字的方式嚮讀者提醒這8個思想的應用情況,在書中大約有100次引用。每一章中至少有7處應用這些思想的例子,並且每個思想至少被引用5次。通過並行提高性能、流水綫和預測技術是引用次數最多的3個思想,緊接著是摩爾定律。第4章講述處理器,是例子最多的一章,也是最吸引計算機設計者的一章。每一章都能找到的偉大思想是通過並行提高性能,這是近年來計算機領域中的一個重要發展方嚮。 第三個目標是通過例子和材料來識彆計算技術從PC時代進入後PC時代的變化。因此,第1章直接介紹瞭平闆電腦而沒有介紹PC,第6章介紹瞭雲計算的基礎設施。另外,在指令集方麵,我們介紹瞭後PC時代中個人移動設備裏使用的ARM指令集,以及在PC時代和雲計算中占主導地位的x86指令集。 第四個目標是將I/O吞吐率方麵的材料貫穿在整本書中,而不是集中在一章中,這與第4版中將並行性貫穿全書一樣,因此,本版可在1.4、4.9、5.2、5.5、5.11和6.9節中找到I/O相關的材料。我們的想法是如果不把這些內容集中在一章,則讀者(和教師)能更好地學習與掌握I/O。 計算機是一個快速發展的領域,對於本書新的版本也是如此,編寫新版的一個重要目的是更新技術內容。實際的例子就是反映後PC時代特點的ARM Cortex A8和Intel Core i7,其他的亮點包括新的ARMv8 64位指令集、講解GPU特有術語的教程、組成雲的倉儲式計算機的內涵以及對10G以太網卡的深入理解。 為瞭保持紙質書的厚度及其與電子書的兼容性,我們一改以前版本的做法,將可選內容由隨書CD改為網絡在綫的形式。 最後,我們更新瞭本書的所有練習題。 在對內容進行修訂的同時,我們保留瞭以往版本中有用的元素。為使本書更好地作為參考書,我們還在新術語第一次齣現時給齣瞭定義。書中標題為“理解程序性能”部分的內容有助於讀者理解程序的性能,以及如何提高性能,就像書中“硬件/軟件接口”部分會幫助讀者理解有關接口的權衡問題一樣。“重點”部分仍然存在,以使讀者看到整個“森林”而不是每一棵“樹”。每章最後提供“小測驗”部分的答案,幫助讀者在第一時間加強對內容的理解。本版同樣提供瞭MIPS參考數據(這是從IBM System/360“綠卡”得到的靈感),並對數據進行瞭更新,在編寫MIPS匯編語言程序時,這應該是一個很好的參考。 教學支持 愛思唯爾(ELS):關於本書教輔資源,使用教材的老師需通過愛思唯爾的教材網站(www.textbooks.elsevier.com)注冊並通過審批後纔能獲取相關資源。具體方法如下:在www.textbooks.elsevier.com教材網站查找到該書後,點擊“instructor manual”便可申請查看該教師手冊。有任何問題,請緻電010-85208853。——編輯注�∥頤鞘占�瞭大量材料供教師授課使用,包括題解、圖錶、幻燈片等,可從齣版商處獲得。如需更多信息,請訪問網址:textbooks.elsevier.com/9780124077263。 本版標誌著Hennessy和Patterson自1989年以來長期閤作的第二次中止。由於要管理一所世界知名的大學,Hennessy校長將不能繼續承擔新版本的實際編寫工作。留下Patterson一人感覺自己像個總是和夥伴們一起演齣的演員,突然被推到前颱獨自錶演。所以,在緻謝名單中列齣的人和Berkeley的同行們在本書的撰寫過程中甚至起瞭更大的作用。 第5版緻謝在本書的每一版中,我們都非常幸運地得到瞭來自許多讀者、評審者和其他人員的幫助。每個人的幫助都使本書更加完美。 由於第6章做瞭巨大的修改,因此我們對其思想和內容進行瞭單獨的評審,並基於每位評審人的反饋意見做瞭修改。感謝Stanford大學的Christos Kozyrakis,他建議在集群中使用網絡接口來論證I/O的軟硬件接口,並對該章的組織提齣瞭意見。還要感謝Stanford大學的Mario Flagsilk,他提供瞭NetFPGA NIC的細節、錶格以及性能評估。另外,以下人員對本章提齣瞭修改建議:Northeastern大學的David Kaeli、HP實驗室的Partha Ranganathan、Wisconsin大學的David Wood以及Berkeley大學的同事Siamak Faridani、Shoaib Kamil、Yunsup Lee、Zhangxi Tan和Andrew Waterman。 我們要對UC Berkeley的Rimas Avizenis錶示特彆的感謝,他開發瞭不同版本的矩陣乘法程序,並提供瞭相應的性能數據。當我在UCLA讀研究生時,我與他的父親一起工作,能夠與他一起在UCB共事是一件美好的事情。 我也要對我的長期閤作夥伴——UC Berkeley的Randy Katz錶示感謝。我們共同講授研究生的計算機體係結構課程,他在開發計算機體係結構的偉大思想方麵提供瞭很大的幫助。 感謝David Kirk、John Nickolls和他們在 NVIDIA的同事們(Michael Garland、John Montrym、Doug Voorhies、Lars Nyland、Erik Lindholm、Paulius Micikevicius、Massimiliano Fatica、Stuart Oberman、Vasily Volkov)提供瞭第一個深入介紹GPU的附錄。再次感謝Jim Larus,他現在是EPFL計算機與通信科學學院的院長,為本書發揮瞭在匯編語言方麵的專長,歡迎本書讀者使用他所開發和維護的模擬器。 非常感謝South Carolina大學的Jason Bakos,他在第4版的基礎上對本版的練習題進行瞭更新。第4版的練習題由以下人員編寫:Perry Alexander(Kansas 大學)、Javier Bruguera(de Santiago de Compostela大學)、Matthew Farrens(California大學Davis分校)、David Kaeli(Northeastern大學)、Nicole Kaiyan(Adelaide大學)、John Oliver(Cal Poly,San Luis Obispo)、Milos Prvulovic(Georgia理工大學)和HP的Jichuan Chang、Jacob Leverich、Kevin Lim、Partha Ranganathan。 感謝Jason Bakos開發瞭新的幻燈片。 感謝許多教師的貢獻,他們迴答齣版商的調查問捲、評審我們的提議、齣席小組會議,並對本版的計劃進行分析和反饋。他們是: 2012焦點小組:Bruce Barton(Suffolk County Community學院),Jeff Braun(Montana理工大學),Ed Gehringer(North Carolina State),Michael Goldweber(Xavier大學),Ed Harcourt(St.Lawrence大學),Mark Hill(Wisconsin大學Madison分校),Patrick Homer(Arizona大學),Norm Jouppi(HP實驗室),Dave Kaeli(Northeastern大學),Christos Kozyrakis(Stanford大學),Zachary Kurmas(Grand Valley州立大學),Jae C.Oh(Syracuse大學),Lu Peng(Louisiana州立大學),Milos Prvulovic(Georgia理工),Partha Ranganathan(HP實驗室),David Wood(Wisconsin大學),Craig Zilles(Illinois大學香檳分校)。 參考調查和審閱的學者:Mahmoud Abou-Nasr(Wayne州立大學),Perry Alexander(Kansas大學),Hakan Aydin(George Mason大學),Hussein Badr(New York州立大學Stony Brook分校),Mac Baker(Virginia Military學院),Ron Barnes(George Mason大學),Douglas Blough(Georgia理工),Kevin Bolding(Seattle Pacific大學),Miodrag Bolic(Ottawa大學),John Bonomo(Westminster學院),Jeff Braun(Montana理工大學),Tom Briggs(Shippensburg大學),Scott Burgess(Humboldt州立大學),Fazli Can(Bilkent大學),Warren R.Carithers(Rochester理工學院),Bruce Carlton(Mesa Community學院),Nicholas Carter(Illinois大學香檳分校),Anthony Cocchi(New York城市大學),Don Cooley(Utah州立大學),Robert D.Cupper(Allegheny學院),Edward W.Davis(North Carolina州立大學),Nathaniel J.Davis(Air Force理工學院),Molisa Derk(Oklahoma 城市大學),Derek Eager(Saskatchewan大學),Ernest Ferguson(Northwest Missouri州立大學),Rhonda Kay Gaede(Alabama大學),Etienne M.Gagnon(UQAM),Costa Gerousis(Christopher Newport大學),Paul Gillard(Newfoundland紀念大學),Michael Goldweber(Xavier大學),Georgia Grant(San Mateo學院),Merrill Hall(The Master’s 學院),Tyson Hall(Southern Adventist大學),Ed Harcourt(St.Lawrence大學),Justin E.Harlow(South Florida大學),Paul F.Hemler(Hampden-Sydney學院),Martin Herbordt(Boston大學),Steve J.Hodges(Cabrillo學院),Kenneth Hopkinson(Cornell大學),Dalton Hunkins(St.Bonaventure大學),Baback Izadi(New York州立大學New Paltz分校),Reza Jafari,Robert W.Johnson(Colorado Technical大學),Bharat Joshi(North Carolina大學Charlotte分校),Nagarajan Kandasamy(Drexel大學),Rajiv Kapadia,Ryan Kastner(California大學Santa Barbara分校),E.J.Kim(Texas A&M;大學),Jihong Kim(Seoul國立大學),Jim Kirk(Union大學),Geoffrey S.Knauth(Lycoming學院),Manish M.Kochhal(Wayne州立大學),Suzan Koknar-Tezel(Saint Joseph大學),Angkul Kongmunvattana(Columbus州立大學),April Kontostathis(Ursinus學院),Christos Kozyrakis(Stanford大學),Danny Krizanc(Wesleyan 大學),Ashok Kumar,S.Kumar(Texas 大學),Zachary Kurmas(Grand Valley州立大學),Robert N.Lea(Houston大學),Baoxin Li(Arizona州立大學),Li Liao(Delaware大學),Gary Livingston(Massachusetts大學),Michael Lyle,Douglas W.Lynn(Oregon理工學院),Yashwant K Malaiya(Colorado州立大學),Bill Mark(Texas大學Austin分校),Ananda Mondal(Claflin大學),Alvin Moser(Seattle大學),Walid Najjar(California大學Riverside分校),Danial J.Neebel(Loras學院),John Nestor(Lafayette學院),Jae C.Oh(Syracuse大學),Joe Oldham(Centre學院),Timour Paltashev,James Parkerson(Arkansas大學),Shaunak Pawagi(SUNY Stony Brook分校),Steve Pearce,Ted Pedersen(Minnesota大學),Lu Peng(Louisiana州立大學),Gregory D Peterson(Tennessee大學),Milos Prvulovic(Georgia理工),Partha Ranganathan(HP實驗室),Dejan Raskovic(Alaska大學Fairbanks分校),Brad Richards(Puget Sound大學),Roman Rozanov,Louis Rubinfield(Villanova大學),Md Abdus Salam(Southern大學),Augustine Samba(Kent州立大學),Robert Schaefer(Daniel Webster學院),Carolyn J.C.Schauble(Colorado州立大學),Keith Schubert(CSU San Bernardino分校),William L.Schultz,Kelly Shaw(Richmond大學),Shahram Shirani(McMaster大學),Scott Sigman(Drury大學),Bruce Smith,David Smith,Jeff W.Smith(Georgia大學,Athens),Mark Smotherman(Clemson大學),Philip Snyder(Johns Hopkins大學),Alex Sprintson(Texas A&M;),Timothy D.Stanley(Brigham Young大學),Dean Stevens(Morningside學院),Nozar Tabrizi(Kettering大學),Yuval Tamir(UCLA),Alexander Taubin(Boston大學),Will Thacker(Winthrop大學),Mithuna Thottethodi(Purdue大學),Manghui Tu(Southern Utah大學),Dean Tullsen(UC San Diego分校),Rama Viswanathan(Beloit學院),Ken Vollmar(Missouri州立大學),Guoping Wang(Indiana-Purdue大學),Patricia Wenner(Bucknell大學),Kent Wilken(California大學Davis分校),David Wolfe(Gustavus Adolphus學院),David Wood(Wisconsin大學Madison分校),Ki Hwan Yum(Texas大學San Antonio分校),Mohamed Zahran(New York城市學院),Gerald D.Zarnett(Ryerson大學),Nian Zhang(South Dakota School of Mines & Technology),Jiling Zhong(Troy大學),Huiyang Zhou(Central Florida大學),Weiyu Zhu(Illinois Wesleyan大學)。 特彆感謝Mark Smotherman一遍又一遍地查找本書中的技術錯誤和寫作錯誤,他的工作顯著地改進瞭這一版的質量。 還要感謝Morgan Kaufmann公司同意在Todd Green和Nate McFadden的領導下對本書進行再版,沒有他們的工作,我不可能完成本書。我們還要感謝Lisa Jones和Russell Purdy,她們分彆負責管理齣版過程和封麵設計。新封麵將本版中後PC時代的內容和第1版的封麵呼應瞭起來。 以上提到的近150名人士為本版提供瞭大量幫助,使之成為我們希望的最好的書。 David A.Patterson