計算機組成與設(shè)計:硬件/軟件接口 MIPS版(原書第6版)
定 價:149 元
叢書名:計算機科學叢書
- 作者:[美]戴維·A. 帕特森(David A. Patterson) [美]約翰·L. 亨尼斯(John L. Hennessy)
- 出版時間:2022/7/1
- ISBN:9787111708865
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP301
- 頁碼:577
- 紙張:
- 版次:
- 開本:16
本書由2017年圖靈獎的兩位得主撰寫,是計算機體系結(jié)構(gòu)領(lǐng)域的經(jīng)典教材,每年被超過40000名學生使用。新版的主要更新是在每章中添加了關(guān)于DSA的內(nèi)容,并更新了所有實例,使全書更加與時俱進,滿足學生和讀者的新需求。
譯者序
前言
作者簡介
第1章 計算機抽象及相關(guān)技術(shù) 1
1.1 引言 1
1.1.1 計算應(yīng)用的分類及其特性 2
1.1.2 歡迎來到后PC時代 3
1.1.3 你能從本書學到什么 4
1.2 計算機體系結(jié)構(gòu)的7個偉大思想 6
1.2.1 使用抽象簡化設(shè)計 6
1.2.2 加速大概率事件 6
1.2.3 通過并行提高性能 6
1.2.4 通過流水線提高性能 6
1.2.5 通過預測提高性能 7
1.2.6 存儲層次 7
1.2.7 通過冗余提高可靠性 7
1.3 程序表象之下 8
1.4 機箱之內(nèi)的硬件 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 性能的定義 21
1.6.2 性能的度量 23
1.6.3 CPU性能及其因素 24
1.6.4 指令的性能 25
1.6.5 經(jīng)典的CPU性能公式 26
1.7 功耗墻 28
1.8 滄海巨變:從單處理器向多處理器轉(zhuǎn)變 30
1.9 實例:Intel Core i7基準 32
1.9.1 SPEC CPU基準測試程序 32
1.9.2 SPEC功耗基準測試程序 34
1.10 加速:使用Python語言編寫矩陣乘法程序 35
1.11 謬誤與陷阱 36
1.12 本章小結(jié) 38
1.13 歷史觀點和拓展閱讀 39
1.14 自學 39
1.15 練習題 42
第2章 指令:計算機的語言 46
2.1 引言 46
2.2 計算機硬件的操作 48
2.3 計算機硬件的操作數(shù) 50
2.3.1 存儲器操作數(shù) 51
2.3.2 常數(shù)或立即數(shù)操作數(shù) 53
2.4 有符號數(shù)和無符號數(shù) 54
2.5 計算機中指令的表示 59
2.6 邏輯操作 65
2.7 決策指令 67
2.7.1 循環(huán) 68
2.7.2 case/switch語句 70
2.8 計算機硬件對過程的支持 71
2.8.1 使用更多寄存器 72
2.8.2 嵌套過程 74
2.8.3 在棧中為新數(shù)據(jù)分配空間 76
2.8.4 在堆中為新數(shù)據(jù)分配空間 76
2.9 人機交互 78
2.10 MIPS中32位立即數(shù)和地址的尋址 82
2.10.1 32位立即數(shù) 83
2.10.2 分支和跳轉(zhuǎn)中的尋址 83
2.10.3 MIPS尋址模式總結(jié) 85
2.10.4 機器語言解碼 87
2.11 并行與指令:同步 89
2.12 翻譯并執(zhí)行程序 91
2.12.1 編譯器 91
2.12.2 匯編器 91
2.12.3 鏈接器 93
2.12.4 加載器 95
2.12.5 動態(tài)鏈接庫 95
2.12.6 啟動一個Java程序 97
2.13 綜合實例:C排序程序 98
2.13.1 swap過程 98
2.13.2 sort過程 100
2.14 數(shù)組與指針 104
2.14.1 用數(shù)組實現(xiàn)clear 104
2.14.2 用指針實現(xiàn)clear 106
2.14.3 比較兩個版本的clear 106
2.15 高級內(nèi)容:編譯C語言和解釋Java語言 107
2.16 實例:ARMv7(32位)指令集 107
2.16.1 尋址模式 108
2.16.2 比較和條件分支 108
2.16.3 ARM的特色 109
2.17 實例:ARMv8(64位)指令集 111
2.18 實例:RISC-V指令集 112
2.19 實例:x86指令集 112
2.19.1 Intel x86的演進 112
2.19.2 x86寄存器和數(shù)據(jù)尋址模式 114
2.19.3 x86整數(shù)操作 115
2.19.4 x86指令編碼 117
2.19.5 x86總結(jié) 119
2.20 加速:使用C語言編寫矩陣乘法程序 119
2.21 謬誤與陷阱 120
2.22 本章小結(jié) 122
2.23 歷史觀點和拓展閱讀 124
2.24 自學 124
2.25 練習題 126
第3章 計算機的算術(shù)運算 132
3.1 引言 132
3.2 加法和減法 132
3.3 乘法 136
3.3.1 順序的乘法算法和硬件 137
3.3.2 有符號乘法 139
3.3.3 更快速的乘法 139
3.3.4 MIPS中的乘法 140
3.3.5 小結(jié) 140
3.4 除法 140
3.4.1 除法算法和硬件 141
3.4.2 有符號除法 143
3.4.3 更快速的除法 144
3.4.4 MIPS中的除法 144
3.4.5 小結(jié) 145
3.5 浮點運算 146
3.5.1 浮點表示 147
3.5.2 浮點加法 151
3.5.3 浮點乘法 154
3.5.4 MIPS中的浮點指令 156
3.5.5 算術(shù)精確性 161
3.5.6 小結(jié) 163
3.6 并行性和計算機算術(shù):子字并行 164
3.7 實例:x86中的流處理SIMD擴展和高級向量擴展 166
3.8 加速:子字并行和矩陣乘法 167
3.9 謬誤與陷阱 168
3.10 本章小結(jié) 171
3.11 歷史觀點和拓展閱讀 174
3.12 自學 174
3.13 練習題 176
第4章 處理器 181
4.1 引言 181
4.1.1 一個基本的MIPS實現(xiàn) 182
4.1.2 實現(xiàn)方式概述 182
4.2 邏輯設(shè)計的一般方法 184
4.3 建立數(shù)據(jù)通路 187
4.4 一個簡單的實現(xiàn)機制 193
4.4.1 ALU控制 193
4.4.2 主控制單元的設(shè)計 195
4.4.3 為什么不使用單周期實現(xiàn)方式 201
4.5 多周期實現(xiàn) 202
4.6 流水線概述 203
4.6.1 面向流水線的指令集設(shè)計 206
4.6.2 流水線冒險 207
4.6.3 小結(jié) 212
4.7 流水線數(shù)據(jù)通路與控制 213
4.7.1 圖形化表示的流水線 221
4.7.2 流水線控制 224
4.8 數(shù)據(jù)冒險:旁路與阻塞 227
4.9 控制冒險 237
4.9.1 假定分支不發(fā)生 238
4.9.2 縮短分支的延遲 238
4.9.3 動態(tài)分支預測 241
4.9.4 小結(jié) 244
4.10 異常 245
4.10.1 MIPS體系結(jié)構(gòu)中的異常處理 245
4.10.2 流水線實現(xiàn)中的異常 246
4.11 指令級并行 249
4.11.1 推測的概念 250
4.11.2 靜態(tài)多發(fā)射處理器 251
4.11.3 動態(tài)多發(fā)射處理器 255
4.11.4 能耗效率與高級流水線 258
4.12 實例:Intel Core i7 6700和ARM Cortex-A53 259
4.12.1 ARM Cortex-A53 259
4.12.2 A53流水線的性能 261
4.12.3 Intel Core i7 6700 263
4.12.4 Intel Core i7的性能 265
4.13 加速:指令級并行和矩陣乘法 266
4.14 高級主題:數(shù)字設(shè)計概述—使用硬件設(shè)計語言進行流水線建模以及更多流水線示例 268
4.15 謬誤與陷阱 268
4.16 本章小結(jié) 269
4.17 歷史觀點和拓展閱讀 269
4.18 自學 269
4.19 練習題 270
第5章 大容量和高速度:開發(fā)存儲器層次結(jié)構(gòu) 281
5.1 引言 281
5.2 存儲器技術(shù) 285
5.2.1 SRAM技術(shù) 285
5.2.2 DRAM技術(shù) 285
5.2.3 閃存 287
5.2.4 磁盤存儲器 287
5.3 cache的基本原理 289
5.3.1 cache訪問 291
5.3.2 cache缺失處理 295
5.3.3 寫操作處理 296
5.3.4 cache實例:Intrinsity FastMATH處理器 297
5.3.5 小結(jié) 299
5.4 cache性能的評估和改進 299
5.4.1 通過更靈活地放置塊來減少cache缺失 302
5.4.2 在cache中查找塊 305
5.4.3 替換塊的選擇 306
5.4.4 使用多級cache結(jié)構(gòu)減少缺失代價 307
5.4.5 通過分塊進行軟件優(yōu)化 309
5.4.6 小結(jié) 312
5.5 可信存儲器層次 312
5.5.1 失效的定義 313
5.5.2 糾正一位錯、檢測兩位錯的漢明編碼(SEC/DED) 314
5.6 虛擬機 317
5.6.1 虛擬機監(jiān)視器的必備條件 318
5.6.2 指令集體系結(jié)構(gòu)(缺乏)對虛擬機的支持 319
5.6.3 保護和指令集體系結(jié)構(gòu) 319
5.7 虛擬存儲器 320
5.7.1 頁的存放和查找 323
5.7.2 缺頁故障 324
5.7.3 關(guān)于寫 327
5.7.4 加快地址轉(zhuǎn)換:TLB 327
5.7.5 集成虛擬存儲器、TLB和cache 331
5.7.6 虛擬存儲器中的保護 332
5.7.7 處理TLB缺失和缺頁 333
5.7.8 小結(jié) 337
5.8 存儲器層次結(jié)構(gòu)的一般框架 338
5.8.1 問題1:塊放在何處 339
5.8.2 問題2:如何找到塊 340
5.8.3 問題3:cache缺失時替換哪一塊 340
5.8.4 問題4:寫操作如何處理 341
5.8.5 3C:一種理解存儲器層次結(jié)構(gòu)行為的直觀模型 342
5.9 使用有限狀態(tài)機來控制簡單的cache 343
5.9.1 一個簡單的cache 343
5.9.2 有限狀態(tài)機 344
5.9.3 一個簡單cache控制器的有限狀態(tài)機 346
5.10 并行與存儲器層次結(jié)構(gòu):cache一致性 347
5.10.1 實現(xiàn)一致性的基本方案 348
5.10.2 監(jiān)聽協(xié)議 348
5.11 并行與存儲器層次結(jié)構(gòu):廉價冗余磁盤陣列 350
5.12 高級內(nèi)容:實現(xiàn)cache控制器 350
5.13 實例:ARM Cortex-A53和Intel Core i7的存儲器層次結(jié)構(gòu) 350
5.14 加速:cache分塊和矩陣乘法 354
5.15 謬誤與陷阱 355
5.16 本章小結(jié) 359
5.17 歷史觀點和拓展閱讀 359
5.18 自學 359
5.19 練習題 362
第6章 從客戶端到云的并行處理器 374
6.1 引言 374
6.2 創(chuàng)建并行處理程序的難點 376
6.3 SISD、MIMD、SIMD、SPMD和向量機 379
6.3.1 x86中的SIMD:多媒體擴展 380
6.3.2 向量機 380
6.3.3 向量與標量 382
6.3.4 向量與多媒體擴展 382
6.4 硬件多線程 385
6.5 多核和其他共享內(nèi)存多處理器 387
6.6 圖形處理單元 390
6.6.1 NVIDIA GPU體系結(jié)構(gòu)簡介 391
6.6.2 NVIDIA GPU存儲結(jié)構(gòu) 393
6.6.3 GPU展望 394
6.7 領(lǐng)域?qū)S皿w系結(jié)構(gòu) 396
6.8 集群、倉儲級計算機和其他消息傳遞多處理器 398
6.9 多處理器網(wǎng)絡(luò)拓撲簡介 402
6.10 與外界通信:集群網(wǎng)絡(luò) 404
6.11 多處理器基準測試程序和性能模型 405
6.11.1 性能模型 407
6.11.2 Roofline模型 408
6.11.3 兩代Opteron的比較 409
6.12 實例:Google TPUv3超級計算機和NVIDIA Volta GPU的評測 413
6.12.1 DNN的訓練和推理 413
6.12.2 DSA超級計算機網(wǎng)絡(luò) 414
6.12.3 DSA超級計算機節(jié)點 414
6.12.4 DSA算術(shù)運算 416
6.12.5 TPUv3與Volta GPU的比較 417
6.12.6 性能 418
6.13 加速:多處理器和矩陣乘法 419
6.14 謬誤與陷阱 421
6.15 本章小結(jié) 423
6.16 歷史觀點和拓展閱讀 425
6.17 自學 425
6.18 練習題 426
附錄A 匯編器、鏈接器和SPIM仿真器 435
附錄B 邏輯設(shè)計基礎(chǔ) 486
索引 544
網(wǎng)絡(luò)內(nèi)容
附錄C 圖形與計算GPU
附錄D 將控制映射至硬件
附錄E 指令集體系結(jié)構(gòu)綜述