《計算機體系結構:量化研究方法》(第5版)前言(Draft)

賈洪峰發表於2011-12-06

前言

編寫本書的目的

從本書第一版開始,到現在已經是第五個版本了,我們的目標一直沒有改變,就是要闡述那些為未來技術發展奠定基礎的基本原理。計算機體系結構的各種發展機遇總是讓我們激情澎湃,不曾有絲毫消退。關於這一領域,我們一直重複在第一版中做出的論述:“這個學科不是令人昏昏欲睡、百無一用的紙版模型。絕對不是!這是一個受到人們熱切關注的學科,需要在市場競爭力與成本-效能-能耗之間做好權衡,從事這個學科既可能導致可怕的失敗,也可能帶來顯赫的成功。”

在編寫第一版時,我們的主要目的是希望改變人們原來學習和研究計算機體系結構的方式。我們感到這一目標現在依然正確、依然重要。這是一個日新月異的領域,在對其進行研究時,必須採用真實計算機上的測量資料和真實示例,而不是去研究一大堆從來都不需要實現的定義和設計。我們熱烈歡迎過去與我們結伴而行的老讀者,同樣歡迎現在剛剛加入我們的新朋友。無論對誰,我們都承諾將採用同樣的量化方法對真實系統進行分析。

和前幾版一樣,我們在編寫這個新版本時,力爭使其既適用於學習高等計算機體系結構與設計課程的學生,也適用於專業的工程師和設計師。與第一版類似,這個版本對新平臺(個人移動裝置和倉庫級計算機)和新體系結構(多核和GPU)進行了重點介紹。這一版還秉承了前幾版的做法,希望能夠通過強調成本、效能、能耗之間的平衡和優秀的工程設計,揭去計算機體系結構的神祕面紗。我們相信這一領域正在日趨成熟,發展成為一門具備嚴格量化基礎的經典理工學科。

關於第五版

我們曾經說過,《計算機體系結構:量化研究方法》(第4版)可能因為轉向討論多核晶片而成為自第1版以來的最重要版本。但我們收到了這樣的反饋意見:第4版已經失去了第1版重點突出的優點,它一視同仁地討論所有內容,不分重點和場合。我們非常確信,對於第5版不會再有這樣的說法了。 我們相信最令人激動的地方在於計算規模的兩個極端:以行動電話和平板電腦之類的個人移動裝置(PMD)為客戶端,以提供雲端計算的倉庫級計算機為伺服器。(具有敏銳觀察力的讀者可能已經看到本書封面上對雲端計算的寓意。)儘管這兩個極端的規模不同,但它們在成本、效能和能效方面的共同主題給我們留下了深刻印象。因此,每一章的討論背景都是PMD和倉庫級計算機的計算,第6章是全新的一章,專門討論倉庫級計算機。

另一條主線是討論了並行的所有不同形式。我們首先在第1章指出了兩種應用級別的並行,一個是資料級並行(DLP),它的出現是因為有許多資料項允許同時對其進行操作;另一個是任務級並行(TLP),它的出現是因為建立了一些可以在很大程度上並行、獨立執行的工作任務。隨後我們解釋四種利用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。第三版包括大量有關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章介紹了計算機體系結構中的最新主題——倉庫級計算機(WCS, Warehouse-Scale Computer)。依靠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將第三版中每一章的“歷史回顧與參考”部分集中在一起。對於各章介紹的思想,它儘量給予一個恰當的評價,並讓讀者瞭解這些創造性思想背後的歷史。我們希望以此來展現人類在計算機設計方面的戲劇性發展過程。這個附錄還提供了一些參考文獻,主修體系結構的學生可能會非常喜歡它們。這些部分提到了本領域的一些經典論文,如果時間允許,建議讀者閱讀這些論文。直接聽原創者講述他們的思想,在深受教育的同時,也是一種享受。“歷史回顧”是以前版本中最受歡迎的章節之一。

內容導讀

在閱讀這些章節和附錄時,除了所有讀者都應當從第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註冊的老師可以得到案例研究與習題的解答。

補充材料

我們還通過網路提供了多種資料,網址為http://booksite.mkp.com/9780123838728/,內容包括:

-參考附錄——涵蓋了一系列高階主題,由相關領域的專家撰寫

-歷史材料,考察了正文各章所介紹的關鍵思想的發展形成

-供老師使用的PowerPoint幻燈片

-PDF、EPS和PPT格式的書中插圖

-網上相關材料的連結

-勘誤表

我們會定期補充新材料和網上其他可用資源的連結。

幫助改進本書

最後要說的是,讀者在閱讀本書的同時還有可能賺錢。(聊聊價效比吧!)如果您閱讀後面的“致謝”部分,將會看到我們已經下了很大的功夫來糾正錯誤。由於一本書會進行多次印刷,所以我們有機會進行更多的校訂。如果您發現了任何遺留錯誤,請通過電子郵件聯絡出版商(ca5bugs@mkp.com)。

我們歡迎您對本書給出其他意見,並請您將它們傳送到另一個電子信箱:ca5comments@mkp.com。

結語

本書仍然是一本真正的合著作品,我們每人編寫的章節和附錄各佔一半。如果沒有對方完成另一半工作,如果沒有對方在任務似乎無望完成時給予鼓勵,如果沒有對方點透某個難以表述的複雜概念,如果沒有對方花費週末時間來審閱書稿,又如果沒有對方在自己因為其他繁重職責而難以提筆時給予寬慰(從簡歷可以看出,這些職責是隨著本書的版本號以指數形式增加的),我們無法想像這本書要花費多長時間才能完成。同樣,對於您將要讀到的內容,其中若有不當之處,我們也負有同等責任。

                                                  John Hennessy  David Patterson

相關文章