本書以簡單易懂的方式講解錯綜復(fù)雜的并行體系結(jié)構(gòu),引導(dǎo)讀者了解并行計算機(jī)的工作原理,同時鼓勵讀者創(chuàng)新并實現(xiàn)自己的設(shè)計。全書共9章,內(nèi)容涵蓋底層電子工藝、微體系結(jié)構(gòu)、存儲結(jié)構(gòu)、互連網(wǎng)絡(luò)、多處理器、片上多處理器以及量化評估模型等。每一章都獨立且完備,既包含全面的基本概念,也涵蓋一些前沿研究點。本書適合作為高等院校計算機(jī)相關(guān)專業(yè)的教材,教師可根據(jù)課程及學(xué)生的層次選取不同的主題。同時,對于工程師和研究者,本書也是不可多得的有益參考。
前 言Parallel Computer Organization and Design
在飛速發(fā)展的技術(shù)驅(qū)動下,計算機(jī)體系結(jié)構(gòu)成為一個快速發(fā)展的領(lǐng)域。自20世紀(jì)90年代中期以來,計算系統(tǒng)的速度和可靠性顯著增強(qiáng),這主要得益于技術(shù)的發(fā)展、更快的主頻和更深的流水線。這些改進(jìn)將高性能計算機(jī)帶給大眾,對社會產(chǎn)生了深遠(yuǎn)影響,促進(jìn)了網(wǎng)絡(luò)創(chuàng)新和人類活動中生產(chǎn)力的大幅提升。我們所處的信息革命如同18世紀(jì)的工業(yè)革命,沒有人會否認(rèn)這次革命得益于技術(shù)的發(fā)展和微處理器體系結(jié)構(gòu)的發(fā)展。
但是,這樣快速的發(fā)展在未來可能無法維持下去,流水線深度已經(jīng)達(dá)到可用的極限,由于功耗限制,主頻也無法大幅突破。隨著技術(shù)的發(fā)展以及片上資源的變少,可靠性、復(fù)雜性和功耗成為計算機(jī)設(shè)計考慮的首要問題,而不再是傳統(tǒng)上考慮的成本、面積和性能。這些趨勢促進(jìn)了并行處理和并行體系結(jié)構(gòu)的發(fā)展,因為這是解決當(dāng)前和未來可能面臨的體系結(jié)構(gòu)問題的一條新的甚至可能是唯一的途徑。人們普遍認(rèn)為,我們需要利用并行處理才能使計算機(jī)領(lǐng)域呈現(xiàn)一片新的景象,而這個巨大的改變會產(chǎn)生深遠(yuǎn)的社會影響。因此,無論是工業(yè)界還是學(xué)術(shù)界,對并行體系結(jié)構(gòu)的興趣都已從工程上的好奇轉(zhuǎn)換為實在的任務(wù)。
隨著時間的流逝,各層次的并行化已經(jīng)成為現(xiàn)代計算機(jī)系統(tǒng)發(fā)展的瓶頸。多處理器結(jié)構(gòu)通過連接多個處理器提供了可擴(kuò)展的性能表現(xiàn),并已在高端系統(tǒng)領(lǐng)域稱霸數(shù)十載。多處理器開發(fā)線程級并行(TLP),允許大型應(yīng)用擁有很多線程,如計算機(jī)圖形、科學(xué)/工程計算、數(shù)據(jù)庫管理以及通信服務(wù)。隨著體系結(jié)構(gòu)和編譯器技術(shù)的發(fā)展,微體系結(jié)構(gòu)則開發(fā)指令級并行(ILP),并且獲得了良好的性能表現(xiàn)。內(nèi)存系統(tǒng)結(jié)構(gòu)為了跟上指令吞吐量的需求,通過允許同時訪問大量數(shù)據(jù)并保證執(zhí)行的正確性而獲得了快速發(fā)展;ミB和相關(guān)的協(xié)議也不斷改進(jìn),可以有效連接成百上千個處理器以及主頻為幾GHz的芯片。最近,微處理器的體系結(jié)構(gòu)集成了系統(tǒng)級并行結(jié)構(gòu)的范例,如向量處理和多處理器。在片上多處理器時代,每個微處理器都有多個核或CPU,每個核可以并發(fā)執(zhí)行多個線程。
并行體系結(jié)構(gòu)很難設(shè)計也很難編程,我們必須理解并行體系結(jié)構(gòu)帶來的問題。本書針對最新的指令級并行和線程級并行技術(shù)給出了清晰易懂的講解,此外,還將可靠性和功耗作為設(shè)計目標(biāo)進(jìn)行講解。先前計算機(jī)體系結(jié)構(gòu)方面的教材主要將性能作為設(shè)計考慮的核心問題。然而,現(xiàn)在盡管性能依舊是設(shè)計中的一個主要問題,但是復(fù)雜性、功耗和可靠性等其他問題也成為很重要的設(shè)計因素,這本關(guān)于并行計算機(jī)體系結(jié)構(gòu)的新書將會講解這些內(nèi)容。
本書的基本目的是解釋并行體系結(jié)構(gòu)如何工作以及分析當(dāng)今并行體系結(jié)構(gòu)的正確設(shè)計,尤其是在技術(shù)受限的情況下。我們一般不會給出性能數(shù)據(jù),并且盡力回避系統(tǒng)的具體細(xì)節(jié)描述。我們鼓勵讀者閱讀發(fā)布在相關(guān)會議或期刊上的資料,詳細(xì)的參考書目和歷史發(fā)展回顧將會發(fā)布在網(wǎng)上。這會留下更多空間來講解設(shè)計的基本問題,同時鼓勵學(xué)生思考、創(chuàng)新、實現(xiàn)自己的設(shè)計。為了達(dá)到實踐和創(chuàng)新的層次,全面了解現(xiàn)存的設(shè)計和實際問題以及限制因素是必需的過程。本書利用豐富的例子來解釋概念,并且激發(fā)讀者自己思考。此外,本書還用兩章(第8章和第9章)的篇幅描述了一些工業(yè)界和學(xué)術(shù)界使用的系統(tǒng)和工具。
習(xí)題是學(xué)習(xí)的重要部分,每章之后的習(xí)題都采用問答題形式,有些很長很難的題目被分成了多個子問題。習(xí)題的主要目的是給學(xué)生創(chuàng)造機(jī)會以對每章的概念有深刻的理解,并且培養(yǎng)學(xué)生的抽象思維能力。
本書適合對計算機(jī)體系結(jié)構(gòu)感興趣的計算機(jī)、電子工程和計算機(jī)科學(xué)專業(yè)的高年級本科生以及研究生閱讀,也適合計算機(jī)行業(yè)中的工程師參考。由于本書涵蓋了從微處理器到多處理器的大量知識,既包括基本內(nèi)容也包含一些前沿的研究點,因此在教學(xué)時,可以通過選擇不同的章節(jié)來適應(yīng)不同的難度級別。學(xué)生可以學(xué)到硬件結(jié)構(gòu)和組成多處理器的各個部分,以及技術(shù)發(fā)展趨勢對于體系結(jié)構(gòu)的影響,還有與性能、功耗、可靠性和功能正確性相關(guān)的設(shè)計問題等。本書可以用于研究生的基礎(chǔ)課程,也可以用于接下來的高階研究課程。本書的預(yù)修課程是計算機(jī)體系結(jié)構(gòu)及組成,涵蓋指令集和簡單流水線處理器體系結(jié)構(gòu)等內(nèi)容。例如五級流水線及其控制相關(guān)的知識,包括前遞、停頓和刷新等問題,這些可以幫助學(xué)生理解微處理器章節(jié)中更復(fù)雜的硬件問題。為了體現(xiàn)完整性,本書也包括了基本的指令集、流水線和存儲等相關(guān)概念。由于現(xiàn)代微體系結(jié)構(gòu)會影響多處理器的特征,因此了解其工作原理是必需的,此外還需要一定的編程知識。
內(nèi)容綱要本書整體內(nèi)容完備,同時我們也盡力保證每一章都是獨立且完備的,這可能會導(dǎo)致一些重復(fù)。本書共9章。第1章給出了計算機(jī)體系結(jié)構(gòu)領(lǐng)域的基本觀點,概述處理器、內(nèi)存、互連網(wǎng)絡(luò)、性能問題(主要是如何評判計算機(jī)系統(tǒng))以及討論技術(shù)發(fā)展對未來體系結(jié)構(gòu)的影響。
對工藝實現(xiàn)細(xì)節(jié)的理解也是非常重要的,因為很多體系結(jié)構(gòu)的設(shè)計決策都受底層工藝的影響。因此在第2章中,我們對CMOS進(jìn)行回顧并探討相關(guān)問題。有VLSI設(shè)計背景的學(xué)生可以略過某些講解。
……
Michel Dubois,南加州大學(xué)謝明(Ming Hsieh)電子工程系教授。
Murali Annavaram,南加州大學(xué)謝明(Ming Hsieh)電子工程系副教授。
Per Stenstrm,瑞典哥德堡查爾姆斯理工大學(xué)計算機(jī)工程教授
目 錄
Parallel Computer Organization and Design
出版者的話
贊譽(yù)
譯者序
前言
第1章 總述1
1.1 什么是計算機(jī)體系結(jié)構(gòu)2
1.2 并行體系結(jié)構(gòu)的基本組成3
1.2.1 處理器4
1.2.2 存儲6
1.2.3 互連9
1.3 并行體系結(jié)構(gòu)10
1.3.1 指令級并行10
1.3.2 線程級并行10
1.3.3 向量和陣列處理器11
1.4 性能12
1.4.1 基準(zhǔn)測試集13
1.4.2 Amdahl定律15
1.5 技術(shù)挑戰(zhàn)19
1.5.1 功耗和能量19
1.5.2 可靠性19
1.5.3 連線延遲20
1.5.4 設(shè)計復(fù)雜度20
1.5.5 尺寸縮小極限和CMOS終點21
習(xí)題22
第2章 工藝及其影響25
2.1 概述25
2.2 電學(xué)基本定律26
2.2.1 歐姆定律26
2.2.2 電阻26
2.2.3 電容27
2.3 MOSFET晶體管和CMOS反相器27
2.4 工藝變更30
2.5 功耗和能耗31
2.5.1 動態(tài)功耗31
2.5.2 靜態(tài)功耗35
2.5.3 功耗和能量指標(biāo)37
2.6 可靠性38
2.6.1 故障和錯誤38
2.6.2 可靠性指標(biāo)39
2.6.3 故障率和老化40
2.6.4 瞬時故障42
2.6.5 間歇性故障44
2.6.6 永久性故障48
2.6.7 工藝偏差及其對故障的影響48
習(xí)題49
第3章 處理器微結(jié)構(gòu)51
3.1 概述51
3.2 指令集架構(gòu)52
3.2.1 指令類型和操作碼53
3.2.2 指令混合55
3.2.3 指令操作數(shù)55
3.2.4 異常、陷阱和中斷58
3.2.5 存儲一致性模型60
3.2.6 本書的核心ISA60
3.2.7 CISC和RISC61
3.3 靜態(tài)調(diào)度流水線63
3.3.1 經(jīng)典五級流水線64
3.3.2 指令亂序完成69
3.3.3 超流水和超標(biāo)量CPU72
3.3.4 分支預(yù)測73
3.3.5 靜態(tài)指令調(diào)度73
3.3.6 靜態(tài)流水線的優(yōu)缺點77
3.4 動態(tài)調(diào)度流水線78
3.4.1 解決數(shù)據(jù)相關(guān):Tomasulo算法79
3.4.2 推測執(zhí)行82
3.4.3 動態(tài)分支預(yù)測83
3.4.4 支持推測的Tomasulo算法87
3.4.5 動態(tài)內(nèi)存歧義消除89
3.4.6 顯式寄存器重命名91
3.4.7 指令發(fā)射后的寄存器讀取93
3.4.8 推測指令調(diào)度94
3.4.9 打破數(shù)據(jù)流限制:值預(yù)測97
3.4.10 單周期多指令98
3.4.11 處理復(fù)雜ISA98
3.5 超長指令字微結(jié)構(gòu)99
3.5.1 動態(tài)和靜態(tài)技術(shù)100
3.5.2 VLIW體系結(jié)構(gòu)100
3.5.3 循環(huán)展開102
3.5.4 軟件流水103
3.5.5 非循環(huán)VLIW調(diào)度108
3.5.6 謂詞指令109
3.5.7 推測內(nèi)存歧義消除110
3.5.8 異常110
3.6 EPIC微結(jié)構(gòu)112
3.7 向量微結(jié)構(gòu)113
3.7.1 算術(shù)/邏輯向量指令113
3.7.2 內(nèi)存向量指令114
3.7.3 向量分段開采和鏈接115
3.7.4 條件語句116
3.7.5 scatter和gather操作117
習(xí)題118
第4章 存儲層次136
4.1 概述136
4.2 金字塔形存儲層次137
4.2.1 訪存局部性138
4.2.2 存儲層次中的一致性138
4.2.3 存儲包含139
4.3 cache層次139
4.3.1 cache映射及組織方式139
4.3.2 替換策略142
4.3.3 寫策略143
4.3.4 cache層次的性能144
4.3.5 cache失效的分類145
4.3.6 非阻塞cache145
4.3.7 cache預(yù)取和預(yù)加載147
4.4 虛擬存儲149
4.4.1 引入虛存的動機(jī)149
4.4.2 從操作系統(tǒng)視角看到的虛擬存儲149
4.4.3 虛地址轉(zhuǎn)換151
4.4.4 訪存控制151
4.4.5 多級頁表152
4.4.6 反向頁表153
4.4.7 旁路轉(zhuǎn)換緩沖153
4.4.8 帶物理標(biāo)識的虛地址cache154
4.4.9 帶虛標(biāo)識的虛地址cache157
習(xí)題157
第5章 多處理器系統(tǒng)162
5.1 概述162
5.2 并行編程模型163
5.2.1 共享內(nèi)存系統(tǒng)164
5.2.2 消息傳遞系統(tǒng)166
5.3 基于消息傳遞的多處理器系統(tǒng)167
5.3.1 消息傳遞原語167
5.3.2 消息傳遞協(xié)議169
5.3.3 消息傳遞協(xié)議的硬件支持170
5.4 基于總線的共享內(nèi)存系統(tǒng)171
5.4.1 多處理器cache組織172
5.4.2 一個簡單的偵聽cache協(xié)議173
5.4.3 偵聽cache協(xié)議的設(shè)計空間176
5.4.4 協(xié)議變種181
5.4.5 多階段偵聽cache協(xié)議的設(shè)計問題184
5.4.6 通信事件的分類188
5.4.7 TLB一致性190
5.5 可擴(kuò)展共享內(nèi)存系統(tǒng)192
5.5.1 目錄協(xié)議的基本概念和術(shù)語193
5.5.2 目錄協(xié)議實現(xiàn)方法193
5.5.3 目錄協(xié)議的擴(kuò)展性197
5.5.4 層次化系統(tǒng)200
5.5.5 頁面遷移和復(fù)制201
5.6 全cache共享內(nèi)存系統(tǒng)204
5.6.1 基本概念、硬件結(jié)構(gòu)和協(xié)議204
5.6.2 平坦COMA206
習(xí)題207
第6章 互連網(wǎng)絡(luò)214
6.1 概述214
6.2 互連網(wǎng)絡(luò)的設(shè)計空間215
6.2.1 設(shè)計概念綜述215
6.2.2 延遲和帶寬模型217
6.3 交換策略221
6.4 拓?fù)浣Y(jié)構(gòu)223
6.4.1 間接網(wǎng)絡(luò)223
6.4.2 直接網(wǎng)絡(luò)226
6.5 路由技術(shù)229
6.5.1 路由算法229
6.5.2 死鎖避免和確定性路由231
6.5