目錄
齣版者的話
贊譽
譯者序
前言
第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 技術挑戰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 動態功耗31
2.5.2 靜態功耗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 指令操作數55
3.2.4 異常、陷阱和中斷58
3.2.5 存儲一緻性模型60
3.2.6 本書的核心ISA60
3.2.7 CISC和RISC61
3.3 靜態調度流水綫63
3.3.1 經典五級流水綫64
3.3.2 指令亂序完成69
3.3.3 超流水和超標量CPU72
3.3.4 分支預測73
3.3.5 靜態指令調度73
3.3.6 靜態流水綫的優缺點77
3.4 動態調度流水綫78
3.4.1 解決數據相關:Tomasulo算法79
3.4.2 推測執行82
3.4.3 動態分支預測83
3.4.4 支持推測的Tomasulo算法87
3.4.5 動態內存歧義消除89
3.4.6 顯式寄存器重命名91
3.4.7 指令發射後的寄存器讀取93
3.4.8 推測指令調度94
3.4.9 打破數據流限製:值預測97
3.4.10 單周期多指令98
3.4.11 處理復雜ISA98
3.5 超長指令字微結構99
3.5.1 動態和靜態技術100
3.5.2 VLIW體係結構100
3.5.3 循環展開102
3.5.4 軟件流水103
3.5.5 非循環VLIW調度108
3.5.6 謂詞指令109
3.5.7 推測內存歧義消除110
3.5.8 異常110
3.6 EPIC微結構112
3.7 嚮量微結構113
3.7.1 算術/邏輯嚮量指令113
3.7.2 內存嚮量指令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 從操作係統視角看到的虛擬存儲149
4.4.3 虛地址轉換151
4.4.4 訪存控製151
4.4.5 多級頁錶152
4.4.6 反嚮頁錶153
4.4.7 旁路轉換緩衝153
4.4.8 帶物理標識的虛地址cache154
4.4.9 帶虛標識的虛地址cache157
習題157
第5章 多處理器係統162
5.1 概述162
5.2 並行編程模型163
5.2.1 共享內存係統164
5.2.2 消息傳遞係統166
5.3 基於消息傳遞的多處理器係統167
5.3.1 消息傳遞原語167
5.3.2 消息傳遞協議169
5.3.3 消息傳遞協議的硬件支持170
5.4 基於總綫的共享內存係統171
5.4.1 多處理器cache組織172
5.4.2 一個簡單的偵聽cache協議173
5.4.3 偵聽cache協議的設計空間176
5.4.4 協議變種181
5.4.5 多階段偵聽cache協議的設計問題184
5.4.6 通信事件的分類188
5.4.7 TLB一緻性190
5.5 可擴展共享內存係統192
5.5.1 目錄協議的基本概念和術語193
5.5.2 目錄協議實現方法193
5.5.3 目錄協議的擴展性197
5.5.4 層次化係統200
5.5.5 頁麵遷移和復製201
5.6 全cache共享內存係統204
5.6.1 基本概念、硬件結構和協議204
5.6.2 平坦COMA206
習題207
第6章 互連網絡214
6.1 概述214
6.2 互連網絡的設計空間215
6.2.1 設計概念綜述215
6.2.2 延遲和帶寬模型217
6.3 交換策略221
6.4 拓撲結構223
6.4.1 間接網絡223
6.4.2 直接網絡226
6.5 路由技術229
6.5.1 路由算法229
6.5.2 死鎖避免和確定性路由231
6.5.3 放鬆路由限製:虛通道和轉彎模型232
6.5.4 進一步放鬆的路由算法:自適應路由233
6.6 交換架構234
習題236
第7章 一緻性、同步與存儲一緻性238
7.1 概述238
7.2 背景239
7.2.1 共享內存通信模型239
7.2.2 硬件組件241
7.3 一緻性和store原子性244
7.3.1 多處理器一緻性的實現睏難244
7.3.2 cache協議246
7.3.3 store原子性249
7.3.4 純一緻性254
7.3.5 store原子性和訪存交錯262
7.4 順序一緻性262
7.4.1 順序一緻性的形式化模型263
7.4.2 順序一緻性的訪存順序規則265
7.4.3 入站消息管理266
7.4.4 store同步性270
7.5 同步272
7.5.1 基本同步原語273
7.5.2 基於硬件的同步276
7.5.3 基於軟件的同步276
7.6 放鬆的存儲一緻性模型279
7.6.1 不依賴於同步的放鬆模型280
7.6.2 依賴同步的放鬆模型285
7.7 推測執行中的存儲序違反289
7.7.1 亂序執行處理器中的保守存儲模型289
7.7.2 推測執行中的存儲序違反290
習題292
第8章 片上多處理器299
8.1 概述299
8.2 CMP的基本原理300
8.2.1 技術趨勢300
8.2.2 機遇301
8.3 核內多綫程302
8.3.1 軟件支持的多綫程302
8.3.2 硬件支持的多綫程303
8.3.3 塊式(粗粒度)多綫程304
8.3.4 交錯(細粒度)多綫程308
8.3.5 亂序執行處理器上的同時多綫程311
8.4 片上多處理器架構314
8.4.1 同構CMP架構315
8.4.2 基於異構處理器核的CMP係統320
8.4.3 連體處理器核322
8.5 編程模型323
8.5.1 獨立進程324
8.5.2 顯式綫程並行324
8.5.3 事務內存326
8.5.4 綫程級推測執行333
8.5.5 幫助綫程337
8.5.6 通過冗餘執行提高可靠性338
習題340
第9章 量化評估343
9.1 概述343
9.2 模擬器分類344
9.2.1 用戶級模擬器和全係統模擬器344
9.2.2 功能模擬器和時鍾精確模擬器345
9.2.3 trace驅動模擬器、執行驅動模擬器和直接執行模擬器347
9.3 模擬器的集成350
9.3.1 功能優先模擬器的集成350
9.3.2 時序優先模擬器的集成351
9.4 多處理器模擬器352
9.4.1 串行多處理器模擬器352
9.4.2 並行多處理器模擬器353
9.5 功耗和熱量模擬357
9.6 工作負載采樣359
9.6.1 基於采樣的微架構模擬360
9.6.2 SimPoint361
9.7 工作負載特徵刻畫361
9.7.1 理解性能瓶頸362
9.7.2 閤成基準測試程序362
9.7.3 預測工作負載行為362
習題363
· · · · · · (
收起)