關(guān)于我們
書單推薦
新書推薦
|
計算機組成與設(shè)計:硬件/軟件接口(原書第5版·ARM版)
本書由2017年圖靈獎得主Patterson和Hennessy共同撰寫,是計算機體系結(jié)構(gòu)領(lǐng)域的經(jīng)典教材,強調(diào)軟硬件協(xié)同設(shè)計及其對性能的影響。本書采用ARMv8體系結(jié)構(gòu),講解硬件技術(shù)、匯編語言、計算機算術(shù)運算、流水線、存儲器層次結(jié)構(gòu)以及I/O的基本原理。新內(nèi)容涵蓋平板電腦、云基礎(chǔ)設(shè)施、ARM(移動計算設(shè)備)以及x86(云計算)體系結(jié)構(gòu),新實例包括IntelCorei7、ARMCortex-A53以及NVIDIAFermiGPU。本書適合作為高等院校計算機專業(yè)的教材,也適合廣大專業(yè)技術(shù)人員參考。
神秘是我們所能體驗的最美好的事物,它是所有真正的藝術(shù)和科學(xué)的源泉。
—阿爾伯特·愛因斯坦,《我的信仰》,1930年 關(guān)于本書 我們學(xué)習(xí)計算機科學(xué)與工程時,不僅需要了解這個領(lǐng)域內(nèi)的最新進展,同時也需要掌握計算技術(shù)背后的基本原理和組成結(jié)構(gòu)。計算機系統(tǒng)的組成決定了系統(tǒng)的功能和性能,是系統(tǒng)成功與否的關(guān)鍵。因此,計算領(lǐng)域各個方向的讀者都能從計算機系統(tǒng)組成理論的學(xué)習(xí)中 受益。 隨著現(xiàn)代計算機技術(shù)的發(fā)展,計算領(lǐng)域的各個方向都需要對硬件和軟件均有深入理解的專業(yè)人士。硬件和軟件在各個層次上的相互關(guān)系,為理解計算技術(shù)的基本原理提供了框架。無論你感興趣的是硬件還是軟件,是計算機科學(xué)還是電氣工程,計算機組成與設(shè)計的核心思想都是相同的。因此,本書著重展示計算機硬件與軟件間的相互關(guān)系,并重點介紹當(dāng)今計算機中的基礎(chǔ)概念。 當(dāng)前,微處理器由單核發(fā)展為多核,這一趨勢印證了本書自第1版就提出的觀點。過去,程序員可以忽略我們的建議,在計算機體系結(jié)構(gòu)專家、編譯器開發(fā)者以及芯片工程師的幫助下,他們一行代碼也不用修改,就能讓程序更快或更高效地運行在新型微處理器上。但是,這樣的時代已經(jīng)一去不返了。為了使程序運行得更快,就必須要實現(xiàn)并行化。雖然許多研究者的目標(biāo)是希望程序員在編寫程序時無須考慮底層硬件的并行特性,但這一目標(biāo)還要很多年才能實現(xiàn)。我們認(rèn)為,至少在下一個十年里,大多數(shù)程序員仍必須理解硬件/軟件接口,才能編寫出在并行計算機上高效運行的程序。 本書適合以下讀者:在匯編語言或(數(shù)字)邏輯設(shè)計方面只有少許經(jīng)驗,需要對計算機組成的基本原理有所理解;具有匯編語言或邏輯設(shè)計基礎(chǔ),需要學(xué)習(xí)如何設(shè)計計算機,或者需要進一步理解計算機系統(tǒng)是如何工作的。 與本書相關(guān)的另一本書 有些讀者可能對《計算機體系結(jié)構(gòu):量化研究方法》一書有所了解,也就是人們常說的“Hennessy and Patterson”(本書則常被稱為“Patterson and Hennessy”)。我們撰寫“量化研究方法”那本書,意在通過堅實的工程基礎(chǔ)和量化的開銷/性能權(quán)衡方法來描述計算機體系結(jié)構(gòu)的原理。書中以商用系統(tǒng)為基礎(chǔ),將案例和測量方法相結(jié)合,以期幫助讀者積累實際的設(shè)計經(jīng)驗。我們希望闡明的是,計算機體系結(jié)構(gòu)可以通過“量化”的方法而不是“描述”的方法來學(xué)習(xí)。因此,它主要面向需要對計算機體系結(jié)構(gòu)有詳細(xì)了解的計算機專業(yè)人士。 本書的大多數(shù)讀者可能并不打算成為計算機體系結(jié)構(gòu)專家。然而,軟件設(shè)計人員對底層硬件技術(shù)的理解程度,將對軟件系統(tǒng)的性能和能效產(chǎn)生顯著影響。因此,編譯器開發(fā)者、操作系統(tǒng)設(shè)計者、數(shù)據(jù)庫程序員以及其他大多數(shù)軟件工程師都應(yīng)當(dāng)對本書所介紹的原理有充分了解。同樣,硬件設(shè)計人員也必須清楚地理解他們的工作將對軟件應(yīng)用產(chǎn)生何種影響。 因此,本書絕非“量化研究方法”一書的子集,而是進行了大量擴充和修訂,以滿足不同層次的讀者。我們在“量化研究方法”的后續(xù)版本中刪除了很多介紹性的內(nèi)容,較之這兩本書的第1版,現(xiàn)在重疊的內(nèi)容已經(jīng)大幅減少,這是一個令人高興的變化。 這一版為何采用ARMv8 指令集的選擇對于一本計算機體系結(jié)構(gòu)教科書而言是非常關(guān)鍵的。無論一種指令集多受歡迎,如果它對初學(xué)者來說花哨難懂,我們?nèi)詴艞夁@種巴洛克式的華美。初次接觸的指令集應(yīng)當(dāng)是指令集中的“典范”,足以被牢記心間,就像牢記初戀一樣。你或許不會相信,初戀和初次接觸的指令集都有令人記憶猶新的魔力。 雖然當(dāng)年也有很多種指令集可供選擇,但在撰寫“量化研究方法”的第1版時,我們自己構(gòu)造了一種RISC風(fēng)格的指令集—MIPS。MIPS指令集非常簡潔而且廣受歡迎,因此從第1版開始,那本書的后續(xù)版本以及我們的其他相關(guān)書籍都采用MIPS指令集作為范例。MIPS一直陪伴著我們以及我們的廣大讀者。 當(dāng)前,ARM發(fā)展速度驚人,其指令集的受歡迎程度也令人難以置信。2015年ARM芯片的出貨量就達到了140億片。很多教師提出需求,希望能夠基于ARM出版一個版本。在本書亞洲版的一些章節(jié)中,我們曾做過嘗試。但是,ARMv7(32位地址)指令集“怪異”的風(fēng)格讓我們無法忍受。因此,我們考慮不再繼續(xù)采用ARMv7。 然而,讓人驚喜的是,ARM推出的64位指令集有了很大的改動。較之ARMv7,新的64位指令集和MIPS有很多相似之處: 將寄存器數(shù)由16個增加為32個。 將PC設(shè)計為獨立的寄存器,而不是寄存器組中的一個。 去除了指令的條件執(zhí)行功能。 去除了多字連續(xù)load和store(load multiple和store multiple)指令。 增加了PC相對尋址的分支指令,支持較大的轉(zhuǎn)移空間。 將所有數(shù)據(jù)傳輸指令的尋址模式設(shè)置為一致的。 減少了指令集的條件碼。 …… 雖然ARMv8比MIPS龐大得多(ARMv8指令集參考手冊多達5400頁),但是本書只挑選了ARMv8指令集的一個子集,這個子集在指令數(shù)量和特性上都與以前版本所采用的MIPS相似。為了避免混淆,本書將這個子集稱為LEGv8。所以,本書基于LEGv8撰寫了ARMv8版。 ARMv8指令集本身提供了32位地址指令和64位地址指令兩種模式。我們原本可以選擇ARMv8指令集并保持32位地址模式,不過我們的出版商對讀者進行了調(diào)查,結(jié)論是75%的讀者傾向于采用64位地址模式或者持中立態(tài)度。因此我們最終決定將地址空間擴展為64位,從目前技術(shù)發(fā)展的角度來看也更為合理。 ARM版和MIPS版的區(qū)別僅在于涉及指令集的章節(jié),主要是第2、3、5章的虛擬存儲器部分,以及第6章的VMIPS例子部分。第4章切換到了ARMv8指令,修改了若干圖表,增加了一些“精解”模塊,這些改動都較為簡單。第1章和剩下的附錄幾乎沒有改動。考慮到網(wǎng)絡(luò)上大量的文檔材料以及ARMv8本身的復(fù)雜度,將原來的附錄A(匯編器、鏈接器和SPIM模擬器)從MIPS版替換為ARM版是非常困難的。對此,本書在第2、3、5章中均包含了對除ARMv8核心指令之外的其他ARMv8指令的快速概述,而這些核心指令則在其他章節(jié)中詳細(xì)介紹。我們相信本書的讀者即使沒有閱讀網(wǎng)絡(luò)上動輒幾千頁的資料的經(jīng)驗,也依舊能夠較好地理解ARMv8。其他勇于探索的讀者則可以通過閱讀這些概述對ARMv8形成框架性的認(rèn)識,以便后續(xù)更好地理解ARMv8眾多復(fù)雜的特點。 當(dāng)然,我們并沒有打算永久地采用ARMv8結(jié)構(gòu),例如本書第5版的ARM版和MIPS版就同時在售。本書未來的版本可能還會有對MIPS版和ARM版的需求,也可能會有包含另一種指令集的新版本出現(xiàn)。我們期待你的反饋。 第5版的變化 第5版有6項主要變化: 通過實例論證理解硬件的重要性。 對于第1章中提到的8個偉大思想,在后面每次應(yīng)用這些思想時予以突出顯示。 更新例題,體現(xiàn)從PC時代到后PC時代的發(fā)展變化。 將I/O吞吐率方面的內(nèi)容貫穿在整本書中,而不是集中在一章中闡述。 對技術(shù)內(nèi)容進行了更新,體現(xiàn)自2009年本書第4版出版以來工業(yè)界的變化。 將附錄和可選章節(jié)的內(nèi)容放在互聯(lián)網(wǎng)上(帶有??圖標(biāo)),而不是隨書附加CD,從而降低了成本,也使新版本可獨立成為一部電子書。 在詳細(xì)介紹第5版的變化即修訂目標(biāo)之前,首先看下表。該表列出了本書的主要內(nèi)容,并為關(guān)注硬件和關(guān)注軟件的兩類讀者分別進行了導(dǎo)讀。其中,第1、4、5、6章是兩類讀者都需關(guān)注的。第1章討論了能耗的重要性及其如何引發(fā)微處理器從單核向多核轉(zhuǎn)變,還介紹了計算機體系結(jié)構(gòu)中的8個偉大思想。第2章對于硬件方向的讀者來說很可能是復(fù)習(xí)性的內(nèi)容,而對于軟件方向的讀者來說則是必選的學(xué)習(xí)內(nèi)容,特別是希望對編譯器和面向?qū)ο缶幊陶Z言有更多了解的讀者。第3章適合對數(shù)據(jù)通路構(gòu)建或浮點運算感興趣的讀者。如果你對這些內(nèi)容沒有興趣,或是已經(jīng)掌握了這部分知識,則可以跳過該章。不過,第3章中給出了一個矩陣乘法的實例,展示如何通過子字并行方法將性能提高4倍,因此不要跳過3.6~3.8節(jié)。第4章介紹流水線處理器。其中,4.1、4.5和4.10節(jié)為概述,4.12節(jié)給出了進一步提高矩陣乘法性能的方法,這些小節(jié)對于關(guān)注軟件的讀者來說比較重要。而對于關(guān)注硬件的讀者,第4章是核心內(nèi)容,你可以根據(jù)自己具備的硬件知識背景,選擇是否先閱讀附錄A中的邏輯設(shè)計部分。最后一章是全新的內(nèi)容,涉及多核、多處理器和集群系統(tǒng),所有讀者都應(yīng)該閱讀。我們重新組織了內(nèi)容,希望能使很多技術(shù)思想的闡述更加自然,并且引入了更多關(guān)于GPU、倉儲式計算機以及網(wǎng)絡(luò)軟硬件接口(集群系統(tǒng)中的關(guān)鍵)的內(nèi)容。 章/附錄節(jié)關(guān)注軟件關(guān)注硬件 第1章 計算機的抽象與技術(shù)1.1~1.11 1.12(歷史) 第2章 指令:計算機的語言2.1~2.14 2.15(編譯器和Java) 2.16~2.21 2.22(歷史) 附錄D RISC指令集體系結(jié)構(gòu)D.1~D.17 第3章 計算機的算術(shù)運算3.1~3.5 3.6~3.9(子字并行) 3.10~3.11(謬誤) 3.12(歷史) 附錄A 邏輯設(shè)計基礎(chǔ)A.1~A.13 第4章 處理器4.1(引言) 4.2(邏輯設(shè)計的一般方法) 4.3~4.4(簡單實現(xiàn)) 4.5(流水線概述) 4.6(流水線數(shù)據(jù)通路) 4.7~4.9(冒險和異常) 4.10~4.12(并行和實例) 4.13(Verilog流水線控制) 4.14~4.15(謬誤) 4.16(歷史) 附錄C 控制器的硬件實現(xiàn)C.1~C.6 第5章 大容量和高速度:開發(fā)存儲器層次結(jié)構(gòu)5.1~5.10 5.11(廉價冗余磁盤陣列) 5.12(Verilog cache控制器) 5.13~5.16 5.17(歷史) 第6章 并行處理器:從客戶端到云6.1~6.8 6.9(網(wǎng)絡(luò)) 6.10~6.14 6.15(歷史) 附錄B 圖形處理單元B.1~B.13 仔細(xì)閱讀 有時間閱讀 作為參考 回顧或閱讀 拓展閱讀 第5版的第一個目標(biāo)是希望通過具體的例子,幫助讀者理解硬件對提高性能和能效的重要性。正如前面所述,第3章介紹了如何采用子字并行將矩陣乘法加速4倍。第4章介紹了通過循環(huán)展開將性能翻倍,從而證明了指令集并行的價值。第5章闡述了如何利用分塊技術(shù)優(yōu)化cache,將性能再次翻倍。第6章證明了通過在16個處理器上采用線程級并行可以獲得14倍的加速比。而這四種優(yōu)化技術(shù)的實現(xiàn),僅需要在原始矩陣乘法例子的C代碼上增加24行代碼。 第二個目標(biāo)是幫助讀者更好地理解計算機體系結(jié)構(gòu)技術(shù)的精髓:首先集中介紹計算機體系結(jié)構(gòu)設(shè)計中的8個偉大思想,然后在整本書中明確指出這些思想的應(yīng)用。在每次引用這些偉大思想時會突出顯示,全書大約有100次引用,每章中至少有7處應(yīng)用實例,并且每個思想至少被引用5次。通過并行、流水線以及預(yù)測技術(shù)提高性能是被引用最多的三個思想,其次是摩爾定律。講述處理器的第4章是實例最多的一章,也是最吸引計
出版者的話
贊譽 譯者序 前言 作者簡介 第1章 計算機的抽象與技術(shù) 1 1.1 引言 1 1.1.1 計算機應(yīng)用的分類和特點 2 1.1.2 歡迎來到后PC時代 3 1.1.3 你能從本書中學(xué)到什么 4 1.2 計算機體系結(jié)構(gòu)中的8個偉大思想 6 1.2.1 面向摩爾定律的設(shè)計 6 1.2.2 使用抽象簡化設(shè)計 7 1.2.3 加速大概率事件 7 1.2.4 通過并行提高性能 7 1.2.5 通過流水線提高性能 7 1.2.6 通過預(yù)測提高性能 7 1.2.7 存儲器層次結(jié)構(gòu) 7 1.2.8 通過冗余提高可靠性 7 1.3 程序表象之下 8 1.4 硬件包裝之下 10 1.4.1 顯示器 11 1.4.2 觸摸屏 12 1.4.3 打開機箱 13 1.4.4 數(shù)據(jù)的安全存儲 15 1.4.5 與其他計算機通信 16 1.5 處理器和存儲器制造技術(shù) 17 1.6 性能 20 1.6.1 性能的定義 20 1.6.2 性能的度量 22 1.6.3 CPU的性能及其度量因素 24 1.6.4 指令的性能 24 1.6.5 經(jīng)典的CPU性能公式 25 1.7 功耗墻 28 1.8 滄海巨變:從單處理器向多處理器轉(zhuǎn)變 29 1.9 實例:Intel Core i7基準(zhǔn)測試 32 1.9.1 SPEC CPU基準(zhǔn)測試程序 32 1.9.2 SPEC功耗基準(zhǔn)測試程序 34 1.10 謬誤與陷阱 34 1.11 本章小結(jié) 36 1.12 歷史觀點與拓展閱讀 37 1.13 練習(xí)題 38 第2章 指令:計算機的語言 42 2.1 引言 42 2.2 計算機硬件的操作 44 2.3 計算機硬件的操作數(shù) 46 2.3.1 存儲器操作數(shù) 47 2.3.2 常數(shù)或立即數(shù)操作數(shù) 50 2.4 有符號數(shù)和無符號數(shù) 51 2.5 計算機中指令的表示 56 2.6 邏輯操作 61 2.7 決策指令 64 2.7.1 循環(huán) 65 2.7.2 邊界檢查的簡便方法 67 2.7.3 case/switch語句 67 2.8 計算機硬件對過程的支持 68 2.8.1 使用更多的寄存器 69 2.8.2 過程嵌套 71 2.8.3 在棧中為新數(shù)據(jù)分配空間 73 2.8.4 在堆中為新數(shù)據(jù)分配空間 74 2.9 人機交互 76 2.10 LEGv8中的寬立即數(shù)和地址的尋址 79 2.10.1 寬立即數(shù) 79 2.10.2 分支中的尋址 80 2.10.3 LEGv8尋址模式總結(jié) 82 2.10.4 機器語言解碼 82 2.11 并行與指令:同步 86 2.12 翻譯并啟動程序 88 2.12.1 編譯器 88 2.12.2 匯編器 89 2.12.3 鏈接器 90 2.12.4 加載器 92 2.12.5 動態(tài)鏈接庫 92 2.12.6 啟動Java程序 94 2.13 綜合實例:C排序程序 95 2.13.1 swap過程 95 2.13.2 sort過程 97 2.14 數(shù)組和指針 101 2.14.1 用數(shù)組實現(xiàn)clear 102 2.14.2 用指針實現(xiàn)clear 102 2.14.3 比較兩個版本的clear 103 2.15 高級主題:編譯C和解釋Java 104 2.16 實例:MIPS指令集 104 2.17 實例:ARMv7(32位)指令集 105 2.18 實例:x86指令集 106 2.18.1 Intel x86的演進 107 2.18.2 x86寄存器和數(shù)據(jù)尋址模式 108 2.18.3 x86整數(shù)操作 110 2.18.4 x86指令編碼 112 2.18.5 x86總結(jié) 112 2.19 實例:ARMv8指令集的其他部分 113 2.19.1 完整的ARMv8整數(shù)算術(shù)邏輯指令 114 2.19.2 完整的ARMv8整數(shù)數(shù)據(jù)傳輸指令 116 2.19.3 完整的ARMv8分支指令 117 2.20 謬誤與陷阱 118 2.21 本章小結(jié) 119 2.22 歷史觀點與拓展閱讀 121 2.23 練習(xí)題 121 第3章 計算機的算術(shù)運算 128 3.1 引言 128 3.2 加法和減法 128 3.3 乘法 131 3.3.1 順序乘法算法及硬件 131 3.3.2 有符號乘法 134 3.3.3 更快速的乘法 134 3.3.4 LEGv8中的乘法 134 3.3.5 小結(jié) 135 3.4 除法 135 3.4.1 除法算法及硬件 135 3.4.2 有符號除法 137 3.4.3 更快速的除法 138 3.4.4 LEGv8中的除法 138 3.4.5 小結(jié) 139 3.5 浮點運算 140 3.5.1 浮點表示 141 3.5.2 異常和中斷 142 3.5.3 IEEE 754浮點標(biāo)準(zhǔn) 142 3.5.4 浮點加法 145 3.5.5 浮點乘法 148 3.5.6 LEGv8中的浮點指令 150 3.5.7 算術(shù)精確性 154 3.5.8 小結(jié) 156 3.6 并行與計算機算術(shù):子字并行 157 3.7 實例:x86中的流處理SIMD擴展和高級向量擴展 158 3.8 實例:其他的ARMv8算術(shù)指令 160 3.8.1 完整的ARMv8整數(shù)和浮點算術(shù)指令 160 3.8.2 完整的ARMv8 SIMD指令 161 3.9 加速:子字并行和矩陣乘法 163 3.10 謬誤與陷阱 166 3.11 本章小結(jié) 168 3.12 歷史觀點與拓展閱讀 171 3.13 練習(xí)題 171 第4章 處理器 175 4.1 引言 175 4.1.1 一種基本的LEGv8實現(xiàn) 176 4.1.2 實現(xiàn)概述 176 4.2 邏輯設(shè)計的一般方法 178 4.3 建立數(shù)據(jù)通路 180 4.4 一種簡單的實現(xiàn)機制 187 4.4.1 ALU控制 187 4.4.2 主控制單元的設(shè)計 188 4.4.3 數(shù)據(jù)通路的操作 191 4.4.4 完成控制單元 194 4.4.5 為什么不使用單周期實現(xiàn) 195 4.5 流水線概述 197 4.5.1 面向流水線的指令集設(shè)計 200 4.5.2 流水線冒險 200 4.5.3 流水線概述小結(jié) 206 4.6 流水線數(shù)據(jù)通路及其控制 207 4.6.1 圖形化表示的流水線 215 4.6.2 流水線控制 218 4.7 數(shù)據(jù)冒險:旁路與阻塞 221 4.8 控制冒險 231 4.8.1 假定分支不發(fā)生 231 4.8.2 減少分支延遲 232 4.8.3 動態(tài)分支預(yù)測 234 4.8.4 流水線小結(jié) 236 4.9 異常 236 4.9.1 LEGv8體系結(jié)構(gòu)中的異常處理 237 4.9.2 流水線實現(xiàn)中的異常 238 4.10 指令級并行 241 4.10.1 推測的概念 242 4.10.2 靜態(tài)多發(fā)射 243 4.10.3 動態(tài)多發(fā)射 246 4.10.4 動態(tài)流水線調(diào)度 247 4.10.5 能耗效率與高級流水線 249 4.11 實例:ARM Cortex-A53和Intel Core i7流水線 250 4.11.1 ARM Cortex-A53 251 4.11.2 Intel Core i7 920 253 4.11.3 Intel Core i7 920的性能 255 4.12 加速:指令級并行和矩陣乘法 256 4.13 高級主題:采用硬件設(shè)計語言描述和建模流水線的數(shù)字設(shè)計技術(shù)以及更多流水線示例 258 4.14 謬誤與陷阱 258 4.15 本章小結(jié) 259 4.16 歷史觀點與拓展閱讀 260 4.17 練習(xí)題 260 第5章 大容量和高速度:開發(fā)存儲器層次結(jié)構(gòu) 271 5.1 引言 271 5.2 存儲器技術(shù) 275 5.2.1 SRAM技術(shù) 275 5.2.2 DRAM技術(shù) 275 5.2.3 閃存 277 5.2.4 磁盤存儲器 277 5.3 cache的基本原理 279 5.3.1 cache訪問 280 5.3.2 cache缺失處理 285 5.3.3 寫操作處理 285 5.3.4 cache實例:Intrinsity FastMATH處理器 287 5.3.5 小結(jié) 289 5.4 cache性能的評估和改進 289 5.4.1 通過更靈活的塊放置策略來減少cache缺失 292 5.4.2 在cache中查找塊 295 5.4.3 替換塊的選擇 296 5.4.4 使用多級cache減少缺失代價 297 5.4.5 通過分塊進行軟件優(yōu)化 299 5.4.6 小結(jié) 303 5.5 可信存儲器層次結(jié)構(gòu) 303 5.5.1 失效的定義 303 5.5.2 糾1檢2漢明碼(SEC/DED) 305 5.6 虛擬機 308 5.6.1 虛擬機監(jiān)視器的要求 309 5.6.2 指令集體系結(jié)構(gòu)(缺乏)對虛擬機的支持 309 5.6.3 保護和指令集體系結(jié)構(gòu) 310 5.7 虛擬存儲器 310 5.7.1 頁的存放和查找 313 5.7.2 缺頁故障 315 5.7.3 用于大型虛擬地址的虛擬內(nèi)存 316 5.7.4 關(guān)于寫 318 5.7.5 加快地址轉(zhuǎn)換:TLB 318 5.7.6 Intrinsity FastMATH TLB 319 5.7.7 集成虛擬存儲器、TLB和cache 322 5.7.8 虛擬存儲器中的保護 323 5.7.9 處理TLB缺失和缺頁 324 5.7.10 小結(jié) 326 5.8 存儲器層次結(jié)構(gòu)的一般框架 328 5.8.1 問題1:塊放在何處 328 5.8.2 問題2:如何找到塊 329 5.8.3 問題3:cache缺失時替換哪一塊 330 5.8.4 問題4:寫操作如何處理 330 5.8.5 3C:一種理解存儲器層次結(jié)構(gòu)行為的直觀模型 331 5.9 使用有限狀態(tài)機控制簡單的cache 332 5.9.1 一個簡單的cache 333 5.9.2 有限狀態(tài)機 333 5.9.3 一個簡單cache控制器的有限狀態(tài)機 335 5.10 并行與存儲器層次結(jié)構(gòu):cache一致性 336 5.10.1 實現(xiàn)一致性的基本方案 337 5.10.2 監(jiān)聽協(xié)議 337 5.11 并行與存儲器層次結(jié)構(gòu):廉價冗余磁盤陣列 339 5.12 高級主題:實現(xiàn)cache控制器 339 5.13 實例:ARM Cortex-A53和Intel Core i7的存儲器層次結(jié)構(gòu) 339 5.14 實例:ARMv8系統(tǒng)的剩余部分以及特殊指令 343 5.15 加速:cache分塊和矩陣乘法 345 5.16 謬誤與陷阱 346 5.17 本章小結(jié) 349 5.18 歷史觀點與拓展閱讀 350 5.19 練習(xí)題 350 第6章 并行處理器:從客戶端到云 362 6.1 引言 362 6.2 創(chuàng)建并行處理程序的難點 364 6.3 SISD、MIMD、SIMD、SPMD和向量 367 6.3.1 x86中的SIMD:多媒體擴展 368 6.3.2 向量 368 6.3.3 向量與標(biāo)量 370 6.3.4 向量與多媒體擴展 370 6.4 硬件多線程 372 6.5 多核和其他共享內(nèi)存多處理器 375 6.6 圖形處理單元 378 6.6.1 NVIDIA GPU體系結(jié)構(gòu)簡介 379 6.6.2 NVIDIA GPU存儲結(jié)構(gòu) 380 6.6.3 正確理解GPU 381 6.7 集群、倉儲式計算機和其他消息傳遞多處理器 383 6.8 多處理器網(wǎng)絡(luò)拓?fù)浜喗? 386 6.9 與外界通信:集群網(wǎng)絡(luò) 389 6.10 多處理器基準(zhǔn)測試程序和性能模型 389 6.10.1 性能模型 391 6.10.2 Roof?line模型 392 6.10.3 兩代Opteron的比較 393 6.11 實例:Intel Core i7 960 和NVIDIA Tesla GPU的評測及Roof?line模型 396 6.12 加速:多處理器和矩陣乘法 399 6.13 謬誤與陷阱 402 6.14 本章小結(jié) 403 6.15 歷史觀點與拓展閱讀 405 6.16 練習(xí)題 405 附錄A 邏輯設(shè)計基礎(chǔ) 414 索引 470 網(wǎng)絡(luò)內(nèi)容 附錄B 圖形處理單元 附錄C 控制器的硬件實現(xiàn) 附錄D RISC指令集體系結(jié)構(gòu) 術(shù)語表 擴展閱讀
你還可能感興趣
我要評論
|