本書以簡單易懂的方式講解錯綜復雜的并行體系結構,引導讀者了解并行計算機的工作原理,同時鼓勵讀者創(chuàng)新并實現(xiàn)自己的設計。全書共9章,內(nèi)容涵蓋底層電子工藝、微體系結構、存儲結構、互連網(wǎng)絡、多處理器、片上多處理器以及量化評估模型等。每一章都獨立且完備,既包含全面的基本概念,也涵蓋一些前沿研究點。本書適合作為高等院校計算機相關專業(yè)的教材,教師可根據(jù)課程及學生的層次選取不同的主題。同時,對于工程師和研究者,本書也是不可多得的有益參考。
前 言Parallel Computer Organization and Design
在飛速發(fā)展的技術驅(qū)動下,計算機體系結構成為一個快速發(fā)展的領域。自20世紀90年代中期以來,計算系統(tǒng)的速度和可靠性顯著增強,這主要得益于技術的發(fā)展、更快的主頻和更深的流水線。這些改進將高性能計算機帶給大眾,對社會產(chǎn)生了深遠影響,促進了網(wǎng)絡創(chuàng)新和人類活動中生產(chǎn)力的大幅提升。我們所處的信息革命如同18世紀的工業(yè)革命,沒有人會否認這次革命得益于技術的發(fā)展和微處理器體系結構的發(fā)展。
但是,這樣快速的發(fā)展在未來可能無法維持下去,流水線深度已經(jīng)達到可用的極限,由于功耗限制,主頻也無法大幅突破。隨著技術的發(fā)展以及片上資源的變少,可靠性、復雜性和功耗成為計算機設計考慮的首要問題,而不再是傳統(tǒng)上考慮的成本、面積和性能。這些趨勢促進了并行處理和并行體系結構的發(fā)展,因為這是解決當前和未來可能面臨的體系結構問題的一條新的甚至可能是唯一的途徑。人們普遍認為,我們需要利用并行處理才能使計算機領域呈現(xiàn)一片新的景象,而這個巨大的改變會產(chǎn)生深遠的社會影響。因此,無論是工業(yè)界還是學術界,對并行體系結構的興趣都已從工程上的好奇轉(zhuǎn)換為實在的任務。
隨著時間的流逝,各層次的并行化已經(jīng)成為現(xiàn)代計算機系統(tǒng)發(fā)展的瓶頸。多處理器結構通過連接多個處理器提供了可擴展的性能表現(xiàn),并已在高端系統(tǒng)領域稱霸數(shù)十載。多處理器開發(fā)線程級并行(TLP),允許大型應用擁有很多線程,如計算機圖形、科學/工程計算、數(shù)據(jù)庫管理以及通信服務。隨著體系結構和編譯器技術的發(fā)展,微體系結構則開發(fā)指令級并行(ILP),并且獲得了良好的性能表現(xiàn)。內(nèi)存系統(tǒng)結構為了跟上指令吞吐量的需求,通過允許同時訪問大量數(shù)據(jù)并保證執(zhí)行的正確性而獲得了快速發(fā)展;ミB和相關的協(xié)議也不斷改進,可以有效連接成百上千個處理器以及主頻為幾GHz的芯片。最近,微處理器的體系結構集成了系統(tǒng)級并行結構的范例,如向量處理和多處理器。在片上多處理器時代,每個微處理器都有多個核或CPU,每個核可以并發(fā)執(zhí)行多個線程。
并行體系結構很難設計也很難編程,我們必須理解并行體系結構帶來的問題。本書針對最新的指令級并行和線程級并行技術給出了清晰易懂的講解,此外,還將可靠性和功耗作為設計目標進行講解。先前計算機體系結構方面的教材主要將性能作為設計考慮的核心問題。然而,現(xiàn)在盡管性能依舊是設計中的一個主要問題,但是復雜性、功耗和可靠性等其他問題也成為很重要的設計因素,這本關于并行計算機體系結構的新書將會講解這些內(nèi)容。
本書的基本目的是解釋并行體系結構如何工作以及分析當今并行體系結構的正確設計,尤其是在技術受限的情況下。我們一般不會給出性能數(shù)據(jù),并且盡力回避系統(tǒng)的具體細節(jié)描述。我們鼓勵讀者閱讀發(fā)布在相關會議或期刊上的資料,詳細的參考書目和歷史發(fā)展回顧將會發(fā)布在網(wǎng)上。這會留下更多空間來講解設計的基本問題,同時鼓勵學生思考、創(chuàng)新、實現(xiàn)自己的設計。為了達到實踐和創(chuàng)新的層次,全面了解現(xiàn)存的設計和實際問題以及限制因素是必需的過程。本書利用豐富的例子來解釋概念,并且激發(fā)讀者自己思考。此外,本書還用兩章(第8章和第9章)的篇幅描述了一些工業(yè)界和學術界使用的系統(tǒng)和工具。
習題是學習的重要部分,每章之后的習題都采用問答題形式,有些很長很難的題目被分成了多個子問題。習題的主要目的是給學生創(chuàng)造機會以對每章的概念有深刻的理解,并且培養(yǎng)學生的抽象思維能力。
本書適合對計算機體系結構感興趣的計算機、電子工程和計算機科學專業(yè)的高年級本科生以及研究生閱讀,也適合計算機行業(yè)中的工程師參考。由于本書涵蓋了從微處理器到多處理器的大量知識,既包括基本內(nèi)容也包含一些前沿的研究點,因此在教學時,可以通過選擇不同的章節(jié)來適應不同的難度級別。學生可以學到硬件結構和組成多處理器的各個部分,以及技術發(fā)展趨勢對于體系結構的影響,還有與性能、功耗、可靠性和功能正確性相關的設計問題等。本書可以用于研究生的基礎課程,也可以用于接下來的高階研究課程。本書的預修課程是計算機體系結構及組成,涵蓋指令集和簡單流水線處理器體系結構等內(nèi)容。例如五級流水線及其控制相關的知識,包括前遞、停頓和刷新等問題,這些可以幫助學生理解微處理器章節(jié)中更復雜的硬件問題。為了體現(xiàn)完整性,本書也包括了基本的指令集、流水線和存儲等相關概念。由于現(xiàn)代微體系結構會影響多處理器的特征,因此了解其工作原理是必需的,此外還需要一定的編程知識。
內(nèi)容綱要本書整體內(nèi)容完備,同時我們也盡力保證每一章都是獨立且完備的,這可能會導致一些重復。本書共9章。第1章給出了計算機體系結構領域的基本觀點,概述處理器、內(nèi)存、互連網(wǎng)絡、性能問題(主要是如何評判計算機系統(tǒng))以及討論技術發(fā)展對未來體系結構的影響。
對工藝實現(xiàn)細節(jié)的理解也是非常重要的,因為很多體系結構的設計決策都受底層工藝的影響。因此在第2章中,我們對CMOS進行回顧并探討相關問題。有VLSI設計背景的學生可以略過某些講解。
……
Michel Dubois,南加州大學謝明(Ming Hsieh)電子工程系教授。
Murali Annavaram,南加州大學謝明(Ming Hsieh)電子工程系副教授。
Per Stenstrm,瑞典哥德堡查爾姆斯理工大學計算機工程教授
目 錄
Parallel Computer Organization and Design
出版者的話
贊譽
譯者序
前言
第1章 總述1
1.1 什么是計算機體系結構2
1.2 并行體系結構的基本組成3
1.2.1 處理器4
1.2.2 存儲6
1.2.3 互連9
1.3 并行體系結構10
1.3.1 指令級并行10
1.3.2 線程級并行10
1.3.3 向量和陣列處理器11
1.4 性能12
1.4.1 基準測試集13
1.4.2 Amdahl定律15
1.5 技術挑戰(zhàn)19
1.5.1 功耗和能量19
1.5.2 可靠性19
1.5.3 連線延遲20
1.5.4 設計復雜度20
1.5.5 尺寸縮小極限和CMOS終點21
習題22
第2章 工藝及其影響25
2.1 概述25
2.2 電學基本定律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 功耗和能量指標37
2.6 可靠性38
2.6.1 故障和錯誤38
2.6.2 可靠性指標39
2.6.3 故障率和老化40
2.6.4 瞬時故障42
2.6.5 間歇性故障44
2.6.6 永久性故障48
2.6.7 工藝偏差及其對故障的影響48
習題49
第3章 處理器微結構51
3.1 概述51
3.2 指令集架構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 超流水和超標量CPU72
3.3.4 分支預測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ù)相關:Tomasulo算法79
3.4.2 推測執(zhí)行82
3.4.3 動態(tài)分支預測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ù)流限制:值預測97
3.4.10 單周期多指令98
3.4.11 處理復雜ISA98
3.5 超長指令字微結構99
3.5.1 動態(tài)和靜態(tài)技術100
3.5.2 VLIW體系結構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微結構112
3.7 向量微結構113
3.7.1 算術/邏輯向量指令113
3.7.2 內(nèi)存向量指令114
3.7.3 向量分段開采和鏈接115
3.7.4 條件語句116
3.7.5 scatter和gather操作117
習題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預取和預加載147
4.4 虛擬存儲149
4.4.1 引入虛存的動機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 帶物理標識的虛地址cache154
4.4.9 帶虛標識的虛地址cache157
習題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é)議的設計空間176
5.4.4 協(xié)議變種181
5.4.5 多階段偵聽cache協(xié)議的設計問題184
5.4.6 通信事件的分類188
5.4.7 TLB一致性190
5.5 可擴展共享內(nèi)存系統(tǒng)192
5.5.1 目錄協(xié)議的基本概念和術語193
5.5.2 目錄協(xié)議實現(xiàn)方法193
5.5.3 目錄協(xié)議的擴展性197
5.5.4 層次化系統(tǒng)200
5.5.5 頁面遷移和復制201
5.6 全cache共享內(nèi)存系統(tǒng)204
5.6.1 基本概念、硬件結構和協(xié)議204
5.6.2 平坦COMA206
習題207
第6章 互連網(wǎng)絡214
6.1 概述214
6.2 互連網(wǎng)絡的設計空間215
6.2.1 設計概念綜述215
6.2.2 延遲和帶寬模型217
6.3 交換策略221
6.4 拓撲結構223
6.4.1 間接網(wǎng)絡223
6.4.2 直接網(wǎng)絡226
6.5 路由技術229
6.5.1 路由算法229
6.5.2 死鎖避免和確定性路由231
6.5