編輯推薦
《計算機體係結構:量化研究方法(第5版)》可作為高等院校計算機專業本科生或研究生教材,也可作為從事計算機體係結構或計算機係統設計的工程技術人員的參考書。
內容簡介
《計算機體係結構:量化研究方法(第5版)》堪稱計算機係統結構學科的“聖經”,是計算機設計領域學生和從業者的必讀經典。在計算機體係結構的變革時期,作者在這一版中深入介紹瞭兩項新內容:新平颱(個人移動設備和倉庫級計算機)以及新體係結構(多核和GPU),同時還秉承瞭前幾版的做法,希望通過探討如何在成本、性能、能耗之間實現平衡,並重點關注一些優秀的工程設計實踐,從而揭去計算機體係結構的神秘麵紗。
《計算機體係結構:量化研究方法(第5版)》特色:
每章中的“融會貫通”小節關注瞭業界的各種新技術,包括ARM Cortex-A8、Intel Core i7、NVIDIA GTX-280和GTX-480 GPU,以及榖歌倉庫級計算機。
· 每章最後的“案例研究和練習”由業內和學術界的專傢編撰而成,主要探討該章的關鍵概念。
· “附錄”中收錄瞭正文內容所依賴的基本原則。
作者簡介
John L. Hennessy,斯坦福大學校長,IEEE和ACM會士,美國國傢工程研究院院士及美國科學藝術研究院院士。Hennessy教授因為在RISC技術方麵做齣瞭突齣貢獻而榮獲2001年的Eckert-Mauchly奬章,他也是2001年Seymour Cray計算機工程奬得主,並且和David A.Patterson分享瞭2000年約翰 · 馮 · 諾依曼奬。
David A. Patterson,加州大學伯剋利分校計算機科學係教授,美國國傢工程研究院院士,IEEE和ACM會士。他因為對RISC技術的貢獻而榮獲1995年IEEE技術成就奬,而在RAID技術方麵的成就為他贏得瞭1999年IEEE Reynold Johnson信息存儲奬。2000年他和John L. Hennessy分享瞭約翰 · 馮 · 諾依曼奬。
內頁插圖
精彩書評
“《計算機體係結構:量化研究方法(第5版)》繼續發揚傳統,為學習計算機體係結構的學生提供瞭當前計算平颱的信息,使他們能夠洞悉體係結構,便於設計未來係統。這一版的亮點在於大幅修訂瞭數據級並行那一章,用傳統的體係結構術語清晰地解讀瞭GPU體係結構。”
——Krste Asanovi·,加州大學伯剋利分校
“《計算機體係結構:量化研究方法》是一部經典,猶如美酒,曆久而彌醇。我在本科畢業時一次購買瞭本書,它到現在仍然是我經常參考的書籍之一。第4版問世時,我發現其中包含瞭如此之多的新材料,為瞭跟上這一領域的趨勢,我必須得再買一本。而當審閱第5版時,我發現Hennessy和Patterson再現神奇。全書內容都進行瞭大量更新,對於希望真正理解雲和倉庫級計算的人們來說,單憑第6章的內容,這個新版本就值得一讀。隻有Hennessy和Patterson纔可能接觸到榖歌、微軟等雲計算與互聯網規模的應用提供商的內部人士,對這一重要領域,業內的介紹材料無齣其右。”
——James Hamilton
“Hennessy和Patterson撰寫本書的第一版時,研究生們是在用50 000個晶體管組裝計算機。今天,倉庫級的計算機集群會包含50 000個服務器,每個服務器中包含數十個處理器和數十億個晶體管。計算機體係結構一直在不停地快速發展,而《計算機體係結構:量化研究方法》緊跟它的步伐,每個版本都準確地解釋和分析瞭這一領域激動人心的重要思想。”
——James Larus,微軟研究院
“這一版新增加瞭一章非常豐富的內容,用來討論嚮量、SIMD和GPU體係結構中的數據級並行技術。它解釋瞭應用於大眾市場的GPU內部的關鍵體係結構概念,給齣這些概念與傳統術語的對應關係,並與嚮量和SIMD體係結構進行瞭對比。這一內容非常及時,與業內轉嚮GPU並行計算的潮流相適應。《計算機體係結構:量化研究方法》繼續獨領風騷,全麵地介紹瞭體係結構方麵的重大新進展!”
——John Nickolls,NVIDIA
“本書已經成為一本經典教科書瞭,這一版突齣介紹瞭各種顯式並行技術(數據、綫程、請求)的興起,各用整整一章來描述。數據並行一章尤為奪目:通過嚮量SIMD、指令級SIMD和GPU的對比,避開每種體係結構的專用術語,揭示瞭這些體係結構之間的相似與區彆。”
——Kunle Olukotun,斯坦福大學
“《計算機體係結構:量化研究方法(第5版)》探討瞭各種並行概念和它們各自的技術權衡。和過去的幾個版本一樣,這一新版本中同樣涵蓋瞭技術發展趨勢。兩個重點是個人移動設備(PMD)和倉庫級計算(WSC)的爆炸性增長——與原來一味追求性能相比,這裏的焦點已經轉為更全麵地尋求性能與能效之間的平衡。這些趨勢刺激瞭人們不斷追求更強勁的處理能力,而這種追求又推動人們在並行道路上走得更遠。”
——Andrew N. Sloss,實施顧問,ARM公司 ARM System Developer’s Guide一書的作者
目錄
第1章 量化設計與分析基礎
1.1 引言
1.2 計算機的分類
1.2.1 個人移動設備
1.2.2 桌麵計算
1.2.3 服務器
1.2.4 集群/倉庫級計算機
1.2.5 嵌入式計算機
1.2.6 並行度與並行體係結構的分類
1.3 計算機體係結構的定義
1.3.1 指令集體係結構:計算機體係結構的近距離審視
1.3.2 真正的計算機體係結構:設計滿足目標和功能需求的組成和硬件
1.4 技術趨勢
1.4.1 性能趨勢:帶寬勝過延遲
1.4.2 晶體管性能與連綫的發展
1.5 集成電路中的功率和能耗趨勢
1.5.1 功率和能耗:係統觀點
1.5.2 微處理器內部的能耗和功率
1.6 成本趨勢
1.6.1 時間、産量和大眾化的影響
1.6.2 集成電路的成本
1.6.3 成本與價格
1.6.4 製造成本與運行成本
1.7 可信任度
1.8 性能的測量、報告和匯總
1.8.1 基準測試
1.8.2 報告性能測試結果
1.8.3 性能結果匯總
1.9 計算機設計的量化原理
1.9.1 充分利用並行
1.9.2 局域性原理
1.9.3 重點關注常見情形
1.9.4 Amdahl定律
1.9.5 處理器性能公式
1.10 融會貫通:性能、價格和功耗
1.11 謬論與易犯錯誤
1.12 結語
1.13 曆史迴顧與參考文獻
第2章 存儲器層次結構設計
2.1 引言
2.2 緩存性能的10種高級優化方法
2.2.1 第一種優化:小而簡單的第一級緩存,用以縮短命中時間、降低功率
2.2.2 第二種優化:采用路預測以縮短命中時間
2.2.3 第三種優化:實現緩存訪問的流水化,以提高緩存帶寬
2.2.4 第四種優化:采用無阻塞緩存,以提高緩存帶寬
2.2.5 第五種優化:采用多種緩存以提高緩存帶寬
2.2.6 第六種優化:關鍵字優先和提前重啓動以降低缺失代價
2.2.7 第七種優化:閤並寫緩衝區以降低缺失代價
2.2.8 第八種優化:采用編譯器優化以降低缺失率
2.2.9 第九種優化:對指令和數據進行硬件預取,以降低缺失代價或缺失率
2.2.10 第十種優化:用編譯器控製預取,以降低缺失代價或缺失率
2.2.11 緩存優化小結
2.3 存儲器技術與優化
2.3.1 SRAM技術
2.3.2 DRAM技術
2.3.3 提高DRAM芯片內部的存儲器性能
2.3.4 降低SDRAM中的功耗
2.3.5 閃存
2.3.6 提高存儲器係統的可靠性
2.4 保護:虛擬存儲器和虛擬機
2.4.1 通過虛擬存儲器提供保護
2.4.2 通過虛擬機提供保護
2.4.3 對虛擬機監視器的要求
2.4.4 虛擬機(缺少)的指令集體係結構支持
2.4.5 虛擬機對虛擬存儲器和I/O的影響
2.4.6 VMM實例:Xen虛擬機
2.5 交叉問題:存儲器層次結構的設計
2.5.1 保護和指令集體係結構
2.5.2 緩存數據的一緻性
2.6 融會貫通:ARM Cortex-A8和Intel Core i7中的存儲器層次結構
2.6.1 ARM Cortex-A8
2.6.2 Intel Core i7
2.7 謬論與易犯錯誤
2.8 結語:展望
2.9 曆史迴顧與參考文獻
第3章 指令級並行及其開發
3.1 指令級並行:概念與挑戰
3.1.1 什麼是指令級並行
3.1.2 數據相關與冒險
3.1.3 控製相關
3.2 揭示ILP的基本編譯器技術
3.2.1 基本流水綫調度和循環展開
3.2.2 循環展開與調度小結
3.3 用高級分支預測降低分支成本
3.3.1 競賽預測器:局部預測器與全局預測器的自適應聯閤
3.3.2 Intel Core i7分支預測器
3.4 用動態調度剋服數據冒險
3.4.1 動態調度:思想
3.4.2 使用Tomasulo算法進行動態調度
3.5 動態調度:示例和算法
3.5.1 Tomasulo算法:細節
3.5.2 Tomasulo算法:基於循環的示例
3.6 基於硬件的推測
3.7 以多發射和靜態調度來開發ILP
3.8 以動態調度、多發射和推測來開發ILP
3.9 用於指令傳送和推測的高級技術
3.9.1 提高指令提取帶寬
3.9.2 推測:實現問題與擴展
3.10 ILP局限性的研究
3.10.1 硬件模型
3.10.2 可實現處理器上ILP的局限性
3.10.3 超越本研究的局限
3.11 交叉問題:ILP方法與存儲器係統
3.11.1 硬件推測與軟件推測
3.11.2 推測執行與存儲器係統
3.12 多綫程:開發綫程級並行提高單處理器吞吐量
3.12.1 細粒度多綫程在Sun T1上的效果
3.12.2 同時多綫程在超標量處理器上的效果
3.13 融會貫通:Intel Core i7和ARMCortex-A8
3.13.1 ARM Cortex-A8
3.13.2 Intel Core i7
3.14 謬論與易犯錯誤
3.15 結語:前路何方
3.16 曆史迴顧與參考文獻
第4章 嚮量、SIMD和GPU體係結構中的數據級並行
4.1 引言
4.2 嚮量體係結構
4.2.1 VMIPS
4.2.2 嚮量處理器如何工作:一個示例
4.2.3 嚮量執行時間
4.2.4 多條車道:每個時鍾周期超過一個元素
4.2.5 嚮量長度寄存器:處理不等於64的循環
4.2.6 嚮量遮罩寄存器:處理嚮量循環中的IF語句
4.2.7 內存組:為嚮量載入/存儲單元提供帶寬
4.2.8 步幅:處理嚮量體係結構中的多維數組
4.2.9 集中-分散:在嚮量體係結構中處理稀疏矩陣
4.2.10 嚮量體係結構編程
4.3 SIMD指令集多媒體擴展
4.3.1 多媒體SIMD體係結構編程
4.3.2 Roofline可視性能模型
4.4 圖形處理器
4.4.1 GPU編程
4.4.2 NVIDIA GPU計算結構
4.4.3 NVIDA GPU指令集體係結構
4.4.4 GPU中的條件分支
4.4.5 NVIDIA GPU存儲器結構
4.4.6 Fermi GPU體係結構中的創新
4.4.7 嚮量體係結構與GPU的相似與不同
4.4.8 多媒體SIMD計算機與GPU之間的相似與不同
4.4.9 小結
4.5 檢測與增強循環強並行
4.5.1 查找相關
4.5.2 消除相關計算
4.6 交叉問題
4.6.1 能耗與DLP:慢而寬與快而窄
4.6.2 分組存儲器和圖形存儲器
4.6.3 步幅訪問和TLB缺失
4.7 融會貫通:移動與服務器GPU、Tesla與Core i7
4.8 謬論與易犯錯誤
4.9 結語
4.10 曆史迴顧與參考文獻
第5章 綫程級並行
5.1 引言
5.1.1 多處理器體係結構:問題與方法
5.1.2 並行處理的挑戰
5.2 集中式共享存儲器體係結構
5.2.1 什麼是多處理器緩存一緻性
5.2.2 一緻性的基本實現方案
5.2.3 監聽一緻性協議
5.2.4 基本實現技術
5.2.5 示例協議
5.2.6 基本一緻性協議的擴展
5.2.7 對稱共享存儲器多處理器與監聽協議的局限性
5.2.8 實施監聽緩存一緻性
5.3 對稱共享存儲器多處理器的性能
5.3.1 商業工作負載
5.3.2 商業工作負載的性能測量
5.3.3 多重編程和操作係統工作負載
5.3.4 多重編程和操作係統工作負載的性能
5.4 分布式共享存儲器和目錄式一緻性
5.4.1 目錄式緩存一緻性協議:基礎知識
5.4.2 目錄式協議舉例
5.5 同步:基礎知識
5.5.1 基本硬件原語
5.5.2 使用一緻性實現鎖
5.6 存儲器連貫性模型:簡介
5.6.1 程序員的觀點
5.6.2 寬鬆連貫性模型:基礎知識
5.6.3 關於連貫性模型的最後說明
5.7 交叉問題
5.7.1 編譯器優化與連貫性模型
5.7.2 利用推測來隱藏嚴格連貫性模型中的延遲
5.7.3 包含性及其實現
5.7.4 利用多重處理和多綫程的性能增益
5.8 融會貫通:多核處理器及其性能
5.9 謬論與易犯錯誤
5.10 結語
5.11 曆史迴顧與參考文獻
第6章 以倉庫級計算機開發請求級、數據級並行
6.1 引言
6.2 倉庫級計算機的編程模型與工作負載
6.3 倉庫級計算機的計算機體係結構
6.3.1 存儲
6.3.2 陣列交換機
6.3.3 WSC存儲器層次結構
6.4 倉庫級計算機的物理基礎設施與成本
6.4.1 測量WSC的效率
6.4.2 WSC的成本
6.5 雲計算:公用計算的迴報
6.6 交叉問題
6.6.1 成為瓶頸的WSC網絡
6.6.2 在服務器內部高效利用能量
6.7 融會貫通:Google倉庫級計算機
6.7.1 集裝箱
6.7.2 Google WSC中的冷卻與供電
6.7.3 Google WSC中的服務器
6.7.4 Google WSC中的聯網
6.7.5 Google WSC的監控與修復
6.7.6 小結
6.8 謬論與易犯錯誤
6.9 結語
6.10 曆史迴顧與參考文獻
附錄A 指令集基本原理
A.1 引言
A.2 指令集體係結構的分類
A.3 存儲器尋址
A.4 操作數的類型與大小
A.5 指令集中的操作
A.6 控製流指令
A.7 指令集編碼
A.8 交叉問題:編譯器的角色
A.9 融會貫通:MIPS體係結構
A.10 謬論和易犯錯誤
A.11 結語
A.12 曆史迴顧與參考文獻
附錄B 存儲器層次結構迴顧
B.1 引言
B.2 緩存性能
B.3 6種基本的緩存優化
B.4 虛擬存儲器
B.5 虛擬存儲器的保護與示例
B.6 謬論與易犯錯誤
B.7 結語
B.8 曆史迴顧與參考文獻
附錄C 流水綫:基礎與中級概念
C.1 引言
C.2 流水化的主要阻礙--流水綫冒險
C.3 如何實現流水化
C.4 妨礙流水綫實現的難題
C.5 擴展MIPS流水綫,以處理多周期操作
C.6 融會貫通:MIPS R4000流水綫
C.7 交叉問題
C.8 謬論與易犯錯誤
C.9 結語
C.10 曆史迴顧與參考文獻
參考文獻
索引
前言/序言
本書的目的
本書到現在已經是第5個版本瞭,我們的目標一直沒有改變,就是要闡述那些為未來技術發展奠定基礎的基本原理。計算機體係結構的各種發展機遇總是讓我們激情澎湃,不曾有絲毫消退。我們在第1版中就作齣過如下的論述:“這個學科不是令人昏昏欲睡、百無一用的紙版模型。絕對不是!這是一個受到人們熱切關注的學科,需要在市場競爭力與成本·性能·能耗之間作好權衡,從事這個學科既可能導緻可怕的失敗,也可能帶來顯赫的成功。”
在編寫第1版時,我們的主要目的是希望改變人們原來學習和研究計算機體係結構的方式。現今,我們感到這一目標依然正確,依然重要。該領域日新月異,在對其進行研究時,必須采用真實計算機上的測量數據和真實示例,而不是去研究一大堆從來都不需要實現的定義和設計。我們不僅熱烈歡迎過去與我們結伴而行的老讀者,同樣也非常歡迎現在剛剛加入我們的新朋友。不管怎樣,我們都保證將采用同樣的量化方法對真實係統進行分析。
和前幾版一樣,在編寫這個新版本時,我們力爭使其既適用於學習高級計算機體係結構與設計課程的學生,也適用於專業的工程師和架構師。與第1版類似,這個版本重點介紹新平颱(個人移動設備和倉庫級計算機)和新體係結構(多核和GPU)。這一版還秉承瞭前幾版的做法,希望能夠通過強調成本、性能、能耗之間的平衡和優秀的工程設計,揭去計算機體係結構的神秘麵紗。我們相信這一領域正在日趨成熟,發展成為一門具備嚴格量化基礎的經典理工學科。
關於第5版
我們曾經說過,第4版可能因為轉嚮討論多核芯片而成為自第1版以來的最重要版本。但我們收到瞭這樣的反饋意見:第4版已經失去瞭第1版重點突齣的優點,它一視同仁地討論所有內容,不分重點和場閤。我們非常確信,第5版不會再有這樣的評價瞭。
我們相信,最令人激動的地方在於計算規模的兩個極端:以移動電話和平闆電腦之類的個人移動設備(PMD)為客戶端,以提供雲計算的倉庫級計算機為服務器。(具有敏銳觀察力的讀者可能已經看齣本書封麵上雲計算的寓意。)盡管這兩個極端的規模大小不同,但它們在成本、性能和能效方麵的共同主題給我們留下瞭深刻印象。因此,每一章的討論背景都是PMD和倉庫級計算機的計算,第6章是全新的一章,專門討論倉庫級計算機。
本書的另一條主綫是討論並行的所有不同形式。我們首先在第1章指齣瞭兩種應用級彆的並行,一個是數據級並行(DLP),它的齣現是因為有許多數據項允許同時對其進行操作;另一個是任務級並行(TLP),它的齣現是因為創建瞭一些可以獨立執行並在很大程度上並行的工作任務。隨後解釋4種開發DLP和TLP的體係結構樣式,分彆是:第3章介紹的指令級並行(ILP),第4章介紹的嚮量體係結構和圖形處理器(GPU),這一章是第5版新增加的內容;第5章介紹的綫程級並行;第6章通過倉庫級計算機介紹的需求級並行(RLP),這一章也是第5版中新增加的。本書中,我們將存儲器層次結構的內容提前到第2章,並將存儲係統那一章改作附錄D。我們對第4章、第6章的內容尤為感到自豪,第4章對GPU的解讀是目前最詳盡、最清晰的,第6章首次公布瞭Google倉庫級計算機的最新細節。
與前幾版相同,本書前三個附錄提供瞭有關MIPS指令集係統、存儲器層次結構和流水綫的基礎知識,如果讀者沒有讀過《計算機組成與設計》之類的書籍,可用作參考。為瞭在降低成本的同時還能提供一些讀者感興趣的補充材料,我們在網絡上提供瞭另外9個附錄,網址為:http://booksite.mkp.com/9780123838728。這些附錄的頁數之和比本書還要多呢!
這一版繼續發揚“以真實示例演示概念”的傳統,並增加瞭全新的“融會貫通”部分。這一版中的“融會貫通”內容包括以下各服務器的流水綫組成與存儲器層次結構:ARM Cortex A8處理器、Intel core i7處理器、NVIDIA GTX-280和GTX-480 GPU,還有Google倉庫級計算機。
主題的選擇與組織
和以前一樣,我們在選擇主題時采用瞭一種保守的方法,畢竟這個領域中值得討論的思想實在太多瞭,不可能在這樣一本主要討論基本原理的書中將其全部涵蓋在內。我們沒有麵麵倶到地分析讀者可能遇到的所有體係結構,而是將重點放在那些在任何新計算機中都可能涉及的核心概念上。根據一貫堅持的選材標準,本書討論的思想都經過深入研究並已被成功應用,其內容足以采用量化方法進行討論。
我們一直重點關注的內容都是無法從其他來源獲取的同類資料,因此我們將繼續盡可能討論比較高級的內容。事實上,本書介紹的有些係統,就無法在文獻中找到相關描述。如果讀者需要瞭解更為基礎的計算機體係結構知識,可以閱讀《計算機組成與設計:硬件/軟件接口》(Computer Organization and Design: The Hardware/Software Interface)一書。
內容概述
這一版對第1章進行瞭補充,其中包括能耗、靜態功率、動態功率、集成電路成本、可靠性和可用性的計算公式。(封二上也列齣瞭這些公式。)在本書後續部分讀者能夠一直應用這些公式。除瞭計算機設計與性能測量方麵的經典量化原理之外,還對PIAT一節進行瞭升級,采用瞭新的SPECPower基準測試。
我們認為,與1990年相比,指令集體係結構扮演的角色有所弱化,所以我們把這一部分內容作為瞭附錄A。它仍然采用MIPS64體係結構。(為便於快速查看,封三匯總瞭MIPS ISA相關信息。)網站上的附錄K介紹瞭10種RISC體係結構、80x86、DEC VAX和IBM 360/370,獻給ISA愛好者們。
隨後,我們在第2章開始討論存儲器層次結構,這是因為很容易針對這些內容應用成本·性能·功耗原理,而且存儲器是其餘各章的關鍵內容。和上一版一樣,附錄B對緩存機製作瞭概述,以供讀者需要時查閱。第2章討論瞭對緩存的10種高級優化方法。這一章還介紹瞭虛擬機,它便於提供保護、進行軟硬件管理,而且在雲計算中也扮演著重要角色。除瞭介紹SRAM和DRAM技術之外,這一章還包括瞭閃存的內容。PIAT示例選擇瞭PMD中使用的ARM Cortex A8和服務器中使用的Intel Core i7。
第3章主要研究高性能處理器中的指令級並行開發,包括超標量執行、分支預測、推理、動態調度和多綫程。前麵曾經提到,附錄C是關於流水綫的一個綜述,以備隨時查閱之用。第3章還研究瞭ILP的局限性。和第2章一樣,PIAT示例還是ARM Cortex A8和Intel Core i7。第3版包括大量有關Itanium和VLIW的材料,現在這些內容放在網上的附錄H中,這錶明瞭我們的觀點:這種體係結構未能達到過去所宣稱的效果。
多媒體應用程序(比如遊戲和視頻處理)的重要性在提高,因此,開發數據級並行的體係結構也變得更為重要。具體來說,越來越多的人在關注利用圖形處理器(GPU)執行的運算,但很少有架構師瞭解GPU到底是如何工作的。我們決定編寫新的一章,主要就是為瞭揭開這種新型計算機體係結構的奧秘。第4章開始介紹嚮量體係結構,對多媒體SIMD指令集擴展和GPU的解釋就是以此為基礎的。(網站上的附錄G深入地討論瞭嚮量體係結構。)GPU一節是本書最難寫的部分,需要多次反復纔能給齣一個既精確又容易理解的描述。一個重大挑戰就是術語。我們決定使用我們自己的術語,然後給齣這些術語與NVIDIA官方術語之間的對應關係。這一章介紹瞭Roofline性能模型,然後用它來對比Intel Core i7、NVIDIA GTX 280和GTX 480 GPU。這一章還介紹瞭供PMD使用的Tegra 2 GPU。
第5章介紹多核處理器,探討瞭對稱、分布式存儲器體係結構,考查瞭組織原理和性能。接下來是有關同步和存儲器一緻性模型的主題,所采用的示例是Intel Core i7。對片上互連網絡感興趣的讀者可以閱讀網站上的附錄F,對更大規模多處理器和科學應用感興趣的讀者可以閱讀網站上的附錄I。
前麵曾經提到,第6章介紹瞭計算機體係結構中的最新主題——倉庫級計算機(Warehouse- Scale Computer,WCS)。依靠Amazon Web服務部門和Google工程師的幫助,本章整閤瞭有關WSC設計、成本與性能的詳細資料,而以前瞭解這些內容的架構師寥寥無幾。在開始描述WSC的體係結構和物理實現(及成本)之前,首先介紹瞭MapReduce編程模型。從成本的角度可以解釋為什麼會有雲計算,以及為何在雲中使用WSC進行計算的成本要低於在本地數據中心的計算成本。PIAT實例是對Google WSC的描述,有些內容是首次公開的。
接下來就是附錄A到附錄L。 附錄A介紹ISA的原理,包括MIPS64,附錄K介紹Alpha、MIPS、PowerPC和SPARC的64位版本及其多媒體擴展。其中還包括一些經典體係結構(80x86、VAX和IBM 360/370)和流行的嵌入指令集(ARM、Thumb、SuperH、MIPS16和Mitsubishi M32R)。附錄H與其相關,介紹瞭VLIW ISA的體係結構和編譯器。
前麵曾經提到,附錄B和附錄C是緩存與流水綫基本概念的教程。建議對緩存不夠熟悉的讀者在閱讀第2章之前先閱讀附錄B,新接觸流水綫的讀者在閱讀第3章之前先閱讀附錄C。
附錄D“存儲係統”包括:進一步討論可靠性和可用性,以RAID 6方案介紹為主體的RAID教程,非常珍貴的真實係統故障統計信息。接下來介紹瞭排隊理論和I/O性能基準測試。我們評估瞭一個真實集群Internet Archive的成本、性能和可靠性。“融會貫通”部分以NetApp FAS6000文件管理程序為例。
附錄E由Thomas M. Conte撰寫,匯總瞭嵌入式係統的相關內容。
附錄F討論網絡互連,由Timothy M. Pinkston和José Duato進行瞭修訂。附錄G最初由Krste Asanovi·撰寫,其中詳細介紹瞭嚮量處理器。就我們所知,這兩個附錄是其各自相關主題的最好材料。
附錄H詳細介紹瞭VLIW和EPIC,也就是Itanium采用的體係結構。
附錄I詳細介紹瞭大規模共享存儲器多處理方麵用到的並行處理應用和一緻性協議。附錄J由David Goldberg撰寫,詳細介紹瞭計算機算法。
附錄L將第3版每一章中的“曆史迴顧與參考文獻”部分集中在一起。對於各章介紹的思想,它盡量給予一個恰當的評價,並讓讀者瞭解這些創造性思想背後的曆史。我們希望以此來展現人類在計算機設計方麵的戲劇性發展過程。這個附錄還提供瞭一些參考文獻,主修體係結構的學生可能會非常喜歡它們。其中提到瞭本領域的一些經典論文,如果時間允許,建議讀者閱讀這些論文。直接聽原創者講述他們的思想,在深受教育的同時,也是一種享受。而“曆史迴顧”是以前版本中最受歡迎的章節之一。
內容導讀
所有讀者都應當從第1章開始閱讀,除此之外並不存在什麼唯一的最佳順序。如果你不想閱讀全部內容,可以參考下麵這些順序。
· 存儲器層次結構:附錄B、第2章、附錄D。
· 指令級並行:附錄C、第3章、附錄H。
· 數據級並行:第4章、第6章、附錄G。
· 綫程級並行:第5章、附錄F、附錄I。
· 請求級並行:第6章。
· ISA:附錄A、附錄K。
附錄E可以隨時閱讀,但在ISA和緩存序列之後閱讀,效果可能會更好一些。附錄J可以在涉及運算時閱讀。附錄L的各部分內容應當在讀完正文中相應章節後閱讀。
章節安排
我們根據一種統一的框架安排內容,使各章在結構方麵保持一緻。首先會介紹一章的主題思想,然後是“交叉問題”部分,說明本章介紹的思想與其他各章有什麼相互關係。接下來是“融會貫通”部分,通過展示如何在實際計算機中應用這些思想,將它們串在一起。
再下麵是“謬論與易犯錯誤”,讓讀者從他人的錯誤中汲取教訓。我們將舉例說明一些常見誤解與體係結構陷阱,要避免犯錯是非常睏難的,哪怕你明明知道它們就在前麵等著你。“謬論與易犯錯誤”部分是本書最受歡迎的內容。每一章都以一個“結語”節結束。
案例研究與練習
每一章的最後都有案例研究和練習。這些案例研究由業內和學術界的專傢編撰而成,通過難度逐漸增大的練習來探討該章的關鍵概念,檢驗讀者的理解程度。教師們會發現這些案例研究都非常詳盡和完善,完全可以針對它們設計齣一些練習。
每個練習中用尖括號括起的內容(<章.節>)指明瞭做這道題應該閱讀哪部分正文內容。我們這樣做的目的,一方麵是為瞭提供復習內容,另一方麵是希望幫助讀者避免在還沒有閱讀相應正文的情況下去做一些練習。為瞭使讀者大緻瞭解完成一道題需要多長時間,我們為這些練習劃定瞭不同等級:
[10] 短於5分鍾(閱讀和理解時間);
[15] 5~15分鍾給齣完整答案;
[20] 15~20分鍾給齣完整答案;
[25] 在1小時內給齣完整的書麵答案;
[30] 小型編程項目:時間短於1整天;
[40] 大型編程項目:耗時2周;
[討論] 與他人一起討論的主題。
在textbooks.elsevier.com注冊的老師可以得到案例研究與習題的解答。
我們會定期補充新材料和網上其他可用資源的鏈接。
幫助改進本書
如果你閱讀後麵的“緻謝”部分,將會看到我們已經下瞭很大的功夫來糾正錯誤。由於一本書會進行多次印刷,所以我們有機會進行更多的校訂。如果你發現瞭任何遺留錯誤,請通過電子郵件聯係齣版商。
結語
本書仍然是一本真正的閤著作品,我們每人編寫的章節和附錄各占一半。如果沒有對方完成另一半工作,如果沒有對方在任務似乎無望完成時給予鼓勵,如果沒有對方點透某個難以錶述的復雜概念,如果沒有對方花費周末時間來審閱書稿,又如果沒有對方在自己因為其他繁重職責而難以提筆時給予寬慰(從簡曆可以看齣,這些職責是隨著本書的版本號以指數形式增加的),我們無法想象這本書要花費多長時間纔能完成。當然,對於你將要讀到的內容,其中若有不當之處,我們也負有同等責任。
John Hennessy
David Patterson