內容簡介
《計算機體系結構:量化研究方法(第5版)》是**權 威的計算機體系結構著作,是久負盛名的作品。書中系統地介紹了計算機系統的設計基礎、指令集系統結構、流水線和指令集並行技術、層次化存儲系統與存儲設備、互連網路以及多處理器系統等重要內容。在這個**新版中,作者增加了當前炙手可熱的雲計算和手機客戶端技術等相關內容,探討了在手機、平板電腦、筆記本電腦和其他移動計算設備上雲計算的軟硬體實現方式。
《計算機體系結構:量化研究方法(第5版)》可作為高等院校計算機專業本科生或研究生教材,也可作為從事計算機體系結構或計算機系統設計的工程技術人員的參考書。
圖書目錄
第 1章 量化設計與分析基礎 1
1.1 引言 2
1.2 計算機的分類 4
1.2.1 個人移動設備 5
1.2.2 桌面計算 5
1.2.3 伺服器 6
1.2.4 集群/倉庫級計算機 6
1.2.5 嵌入式計算機 7
1.2.6 並行度與並行體系結構的分類 7
1.3 計算機體系結構的定義 8
1.3.1 指令集體系結構:計算機體系結構的近距離審視 9
1.3.2 真正的計算機體系結構:設計滿足目標和功能需求的組成和硬體 12
1.4 技術趨勢 13
1.4.1 性能趨勢:頻寬勝過延遲 15
1.4.2 電晶體性能與連線的發展 17
1.5 積體電路中的功率和能耗趨勢 17
1.5.1 功率和能耗:系統觀點 17
1.5.2 微處理器內部的能耗和功率 18
1.6 成本趨勢 21
1.6.1 時間、產量和大眾化的影響 21
1.6.2 積體電路的成本 22
1.6.3 成本與價格 26
1.6.4 製造成本與運行成本 26
1.7 可信任度 26
1.8 性能的測量、報告和匯總 28
1.8.1 基準測試 29
1.8.2 報告性能測試結果 32
1.8.3 性能結果匯總 33
1.9 計算機設計的量化原理 34
1.9.1 充分利用並行 35
1.9.2 局域性原理 35
1.9.3 重點關注常見情形 35
1.9.4 Amdahl定律 36
1.9.5 處理器性能公式 38
1.10 融會貫通:性能、價格和功耗 40
1.11 謬論與易犯錯誤 42
1.12 結語 46
1.13 歷史回顧與參考文獻 47
第 2章 存儲器層次結構設計 53
2.1 引言 54
2.2 快取性能的10種高 級最佳化方法 59
2.2.1 第 一種最佳化:小而簡單的第 一級快取,用以縮短命中時間、降低功率 59
2.2.2 第 二種最佳化:採用路預測以縮短命中時間 61
2.2.3 第三種最佳化:實現快取訪問的流水化,以提高快取頻寬 61
2.2.4 第四種最佳化:採用無阻塞快取,以提高快取頻寬 62
2.2.5 第五種最佳化:採用多種快取以提高快取頻寬 64
2.2.6 第六種最佳化:關鍵字優先和提前重啟動以降低缺失代價 64
2.2.7 第七種最佳化:合併寫緩衝區以降低缺失代價 65
2.2.8 第八種最佳化:採用編譯器最佳化以降低缺失率 66
2.2.9 第九種最佳化:對指令和數據進行硬體預取,以降低缺失代價或缺失率 68
2.2.10 第十種最佳化:用編譯器控制預取,以降低缺失代價或缺失率 69
2.2.11 快取最佳化小結 72
2.3 存儲器技術與最佳化 72
2.3.1 SRAM技術 73
2.3.2 DRAM技術 73
2.3.3 提高DRAM晶片內部的存儲器性能 75
2.3.4 降低SDRAM中的功耗 77
2.3.5 快閃記憶體 77
2.3.6 提高存儲器系統的可靠性 78
2.4 保護:虛擬存儲器和虛擬機 79
2.4.1 通過虛擬存儲器提供保護 79
2.4.2 通過虛擬機提供保護 81
2.4.3 對虛擬機監視器的要求 82
2.4.4 虛擬機(缺少)的指令集體系結構支持 82
2.4.5 虛擬機對虛擬存儲器和I/O的影響 83
2.4.6 VMM實例:Xen虛擬機 84
2.5 交叉問題:存儲器層次結構的設計 84
2.5.1 保護和指令集體系結構 84
2.5.2 快取數據的一致性 85
2.6 融會貫通:ARM Cortex-A8和Intel Core i7中的存儲器層次結構 85
2.6.1 ARM Cortex-A8 86
2.6.2 Intel Core i7 89
2.7 謬論與易犯錯誤 95
2.8 結語:展望 98
2.9 歷史回顧與參考文獻 99
第3章 指令級並行及其開發 109
3.1 指令級並行:概念與挑戰 110
3.1.1 什麼是指令級並行 111
3.1.2 數據相關與冒險 111
3.1.3 控制相關 114
3.2 揭示ILP的基本編譯器技術 116
3.2.1 基本流水線調度和循環展開 116
3.2.2 循環展開與調度小結 119
3.3 用高 級分支預測降低分支成本 120
3.3.1 競賽預測器:局部預測器與全局預測器的自適應聯合 122
3.3.2 Intel Core i7分支預測器 123
3.4 用動態調度克服數據冒險 124
3.4.1 動態調度:思想 124
3.4.2 使用Tomasulo算法進行動態調度 126
3.5 動態調度:示例和算法 130
3.5.1 Tomasulo算法:細節 132
3.5.2 Tomasulo算法:基於循環的示例 133
3.6 基於硬體的推測 135
3.7 以多發射和靜態調度來開發ILP 143
3.8 以動態調度、多發射和推測來開發ILP 146
3.9 用於指令傳送和推測的高 級技術 150
3.9.1 提高指令提取頻寬 150
3.9.2 推測:實現問題與擴展 155
3.10 ILP局限性的研究 158
3.10.1 硬體模型 158
3.10.2 可實現處理器上ILP的局限性 160
3.10.3 超越本研究的局限 163
3.11 交叉問題:ILP方法與存儲器系統 164
3.11.1 硬體推測與軟體推測 164
3.11.2 推測執行與存儲器系統 165
3.12 多執行緒:開發執行緒級並行提高單處理器吞吐量 165
3.12.1 細粒度多執行緒在Sun T1上的效果 168
3.12.2 同時多執行緒在超標量處理器上的效果 170
3.13 融會貫通:Intel Core i7和ARMCortex-A8 173
3.13.1 ARM Cortex-A8 173
3.13.2 Intel Core i7 176
3.14 謬論與易犯錯誤 179
3.15 結語:前路何方 182
3.16 歷史回顧與參考文獻 183
第4章 向量、SIMD和GPU體系結構中的數據級並行 193
4.1 引言 194
4.2 向量體系結構 195
4.2.1 VMIPS 196
4.2.2 向量處理器如何工作:一個示例 198
4.2.3 向量執行時間 199
4.2.4 多條車道:每個時鐘周期超過一個元素 201
4.2.5 向量長度暫存器:處理不等於64的循環 203
4.2.6 向量遮罩暫存器:處理向量循環中的IF語句 204
4.2.7 記憶體組:為向量載入/存儲單元提供頻寬 205
4.2.8 步幅:處理向量體系結構中的多維數組 206
4.2.9 集中-分散:在向量體系結構中處理稀疏矩陣 207
4.2.10 向量體系結構編程 208
4.3 SIMD指令集多媒體擴展 209
4.3.1 多媒體SIMD體系結構編程 212
4.3.2 Roofline可視性能模型 212
4.4 圖形處理器 214
4.4.1 GPU編程 214
4.4.2 NVIDIA GPU計算結構 216
4.4.3 NVIDA GPU指令集體系結構 222
4.4.4 GPU中的條件分支 224
4.4.5 NVIDIA GPU存儲器結構 226
4.4.6 Fermi GPU體系結構中的創新 228
4.4.7 向量體系結構與GPU的相似與不同 230
4.4.8 多媒體SIMD計算機與GPU之間的相似與不同 233
4.4.9 小結 233
4.5 檢測與增強循環強並行 235
4.5.1 查找相關 238
4.5.2 消除相關計算 240
4.6 交叉問題 240
4.6.1 能耗與DLP:慢而寬與快而窄 240
4.6.2 分組存儲器和圖形存儲器 241
4.6.3 步幅訪問和TLB缺失 241
4.7 融會貫通:移動與伺服器GPU、Tesla與Core i7 241
4.8 謬論與易犯錯誤 247
4.9 結語 248
4.10 歷史回顧與參考文獻 250
第5章 執行緒級並行 256
5.1 引言 257
5.1.1 多處理器體系結構:問題與方法 258
5.1.2 並行處理的挑戰 260
5.2 集中式共享存儲器體系結構 262
5.2.1 什麼是多處理器快取一致性 263
5.2.2 一致性的基本實現方案 264
5.2.3 監聽一致性協定 265
5.2.4 基本實現技術 265
5.2.5 示例協定 267
5.2.6 基本一致性協定的擴展 270
5.2.7 對稱共享存儲器多處理器與監聽協定的局限性 271
5.2.8 實施監聽快取一致性 272
5.3 對稱共享存儲器多處理器的性能 273
5.3.1 商業工作負載 274
5.3.2 商業工作負載的性能測量 275
5.3.3 多重編程和作業系統工作負載 279
5.3.4 多重編程和作業系統工作負載的性能 280
5.4 分散式共享存儲器和目錄式一致性 282
5.4.1 目錄式快取一致性協定:基礎知識 283
5.4.2 目錄式協定舉例 285
5.5 同步:基礎知識 288
5.5.1 基本硬體原語 288
5.5.2 使用一致性實現鎖 289
5.6 存儲器連貫性模型:簡介 291
5.6.1 程式設計師的觀點 292
5.6.2 寬鬆連貫性模型:基礎知識 293
5.6.3 關於連貫性模型的**後說明 293
5.7 交叉問題 294
5.7.1 編譯器最佳化與連貫性模型 294
5.7.2 利用推測來隱藏嚴格連貫性模型中的延遲 294
5.7.3 包含性及其實現 295
5.7.4 利用多重處理和多執行緒的性能增益 295
5.8 融會貫通:多核處理器及其性能 297
5.9 謬論與易犯錯誤 301
5.10 結語 304
5.11 歷史回顧與參考文獻 306
第6章 以倉庫級計算機開發請求級、數據級並行 319
6.1 引言 320
6.2 倉庫級計算機的編程模型與工作負載 323
6.3 倉庫級計算機的計算機體系結構 327
6.3.1 存儲 328
6.3.2 陣列交換機 328
6.3.3 WSC存儲器層次結構 329
6.4 倉庫級計算機的物理基礎設施與成本 331
6.4.1 測量WSC的效率 334
6.4.2 WSC的成本 335
6.5 雲計算:公用計算的回報 338
6.6 交叉問題 342
6.6.1 成為瓶頸的WSC網路 342
6.6.2 在伺服器內部高效利用能量 343
6.7 融會貫通:Google倉庫級計算機 344
6.7.1 貨櫃 344
6.7.2 Google WSC中的冷卻與供電 346
6.7.3 Google WSC中的伺服器 348
6.7.4 Google WSC中的聯網 348
6.7.5 Google WSC的監控與修復 349
6.7.6 小結 349
6.8 謬論與易犯錯誤 350
6.9 結語 353
6.10 歷史回顧與參考文獻 354
附錄A 指令集基本原理 365
A.1 引言 366
A.2 指令集體系結構的分類 366
A.3 存儲器定址 369
A.4 運算元的類型與大小 374
A.5 指令集中的操作 375
A.6 控制流指令 376
A.7 指令集編碼 380
A.8 交叉問題:編譯器的角色 382
A.9 融會貫通:MIPS體系結構 388
A.10 謬論和易犯錯誤 396
A.11 結語 399
A.12 歷史回顧與參考文獻 400
附錄B 存儲器層次結構回顧 405
B.1 引言 406
B.2 快取性能 416
B.3 6種基本的快取最佳化 421
B.4 虛擬存儲器 435
B.5 虛擬存儲器的保護與示例 441
B.6 謬論與易犯錯誤 447
B.7 結語 448
B.8 歷史回顧與參考文獻 449
附錄C 流水線:基礎與中級概念 454
C.1 引言 455
C.2 流水化的主要阻礙——流水線冒險 461
C.3 如何實現流水化 476
C.4 妨礙流水線實現的難題 485
C.5 擴展MIPS流水線,以處理多周期操作 490
C.6 融會貫通:MIPS R4000流水線 498
C.7 交叉問題 504
C.8 謬論與易犯錯誤 511
C.9 結語 512
C.10 歷史回顧與參考文獻 512
參考文獻 518
索引 543