計(jì)算機(jī)組成與設(shè)計(jì):硬件/軟件接口(原書第5版·RISC-V版)
定 價(jià):169 元
叢書名:計(jì)算機(jī)科學(xué)叢書
- 作者:[美]戴維·A. 帕特森(David A. Patterson) 約翰·L. 亨尼斯
- 出版時(shí)間:2020/6/1
- ISBN:9787111652144
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP303
- 頁(yè)碼:0
- 紙張:
- 版次:
- 開(kāi)本:16開(kāi)
本書由2017年圖靈獎(jiǎng)得主Patterson和Hennessy共同撰寫,是計(jì)算機(jī)體系結(jié)構(gòu)領(lǐng)域的經(jīng)典書籍,強(qiáng)調(diào)軟硬件協(xié)同設(shè)計(jì)及其對(duì)性能的影響。本書采用開(kāi)源的RISC-V指令系統(tǒng)體系結(jié)構(gòu), 講解硬件技術(shù)、匯編語(yǔ)言、算術(shù)運(yùn)算、流水線、存儲(chǔ)層次、I/O以及并行處理器。新內(nèi)容涵蓋平板電腦、云基礎(chǔ)設(shè)施、ARM(移動(dòng)計(jì)算設(shè)備)以及x86(云計(jì)算)體系結(jié)構(gòu),新實(shí)例包括Intel Core i7、ARM Cortex-A53以及NVIDIA Fermi GPU。本書適合計(jì)算機(jī)體系結(jié)構(gòu)領(lǐng)域的專業(yè)技術(shù)人員參考,也適合高等院校計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生閱讀。
出版者的話
贊譽(yù)
譯者序
前言
作者簡(jiǎn)介
第1章 計(jì)算機(jī)抽象及相關(guān)技術(shù) 1
1.1 引言 1
1.1.1 傳統(tǒng)的計(jì)算應(yīng)用分類及其特點(diǎn) 2
1.1.2 歡迎來(lái)到后PC時(shí)代 3
1.1.3 你能從本書中學(xué)到什么 4
1.2 計(jì)算機(jī)體系結(jié)構(gòu)中的8個(gè)偉大思想 6
1.2.1 面向摩爾定律的設(shè)計(jì) 6
1.2.2 使用抽象簡(jiǎn)化設(shè)計(jì) 7
1.2.3 加速經(jīng)常性事件 7
1.2.4 通過(guò)并行提高性能 7
1.2.5 通過(guò)流水線提高性能 7
1.2.6 通過(guò)預(yù)測(cè)提高性能 7
1.2.7 存儲(chǔ)層次 7
1.2.8 通過(guò)冗余提高可靠性 7
1.3 程序表象之下 8
1.4 箱蓋后的硬件 10
1.4.1 顯示器 11
1.4.2 觸摸屏 12
1.4.3 打開(kāi)機(jī)箱 13
1.4.4 數(shù)據(jù)安全 16
1.4.5 與其他計(jì)算機(jī)通信 16
1.5 處理器和存儲(chǔ)制造技術(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 實(shí)例:評(píng)測(cè)Intel Core i7 32
1.9.1 SPEC CPU基準(zhǔn)評(píng)測(cè)程序 33
1.9.2 SPEC功耗基準(zhǔn)評(píng)測(cè)程序 34
1.10 謬誤與陷阱 35
1.11 本章小結(jié) 37
1.12 歷史視角和拓展閱讀 38
1.13 練習(xí) 38
第2章 指令:計(jì)算機(jī)的語(yǔ)言 43
2.1 引言 43
2.2 計(jì)算機(jī)硬件的操作 45
2.3 計(jì)算機(jī)硬件的操作數(shù) 47
2.3.1 存儲(chǔ)器操作數(shù) 48
2.3.2 常數(shù)或立即數(shù)操作數(shù) 51
2.4 有符號(hào)數(shù)與無(wú)符號(hào)數(shù) 52
2.5 計(jì)算機(jī)中的指令表示 57
2.6 邏輯操作 62
2.7 用于決策的指令 65
2.7.1 循環(huán) 66
2.7.2 邊界檢查的簡(jiǎn)便方法 67
2.7.3 case/switch語(yǔ)句 68
2.8 計(jì)算機(jī)硬件對(duì)過(guò)程的支持 68
2.8.1 使用更多的寄存器 69
2.8.2 嵌套過(guò)程 71
2.8.3 在棧中為新數(shù)據(jù)分配空間 73
2.8.4 在堆中為新數(shù)據(jù)分配空間 74
2.9 人機(jī)交互 76
2.10 對(duì)大立即數(shù)的RISC-V編址和尋址 79
2.10.1 大立即數(shù) 79
2.10.2 分支中的尋址 80
2.10.3 RISC-V尋址模式總結(jié) 82
2.10.4 機(jī)器語(yǔ)言譯碼 83
2.11 指令與并行性:同步 85
2.12 翻譯并啟動(dòng)程序 87
2.12.1 編譯器 87
2.12.2 匯編器 87
2.12.3 鏈接器 89
2.12.4 加載器 91
2.12.5 動(dòng)態(tài)鏈接庫(kù) 91
2.12.6 啟動(dòng)Java程序 93
2.13 以C排序程序?yàn)槔膮R總整理 94
2.13.1 swap過(guò)程 94
2.13.2 sort過(guò)程 95
2.14 數(shù)組與指針 100
2.14.1 用數(shù)組實(shí)現(xiàn)clear 100
2.14.2 用指針實(shí)現(xiàn)clear 101
2.14.3 比較兩個(gè)版本的clear 102
2.15 高級(jí)專題:編譯C語(yǔ)言和解釋Java語(yǔ)言 102
2.16 實(shí)例:MIPS指令 103
2.17 實(shí)例:x86指令 104
2.17.1 Intel x86的演變 104
2.17.2 x86寄存器和尋址模式 106
2.17.3 x86整數(shù)操作 107
2.17.4 x86指令編碼 109
2.17.5 x86總結(jié) 110
2.18 實(shí)例:RISC-V指令系統(tǒng)的剩余部分 111
2.19 謬誤與陷阱 112
2.20 本章小結(jié) 113
2.21 歷史視角和擴(kuò)展閱讀 115
2.22 練習(xí) 115
第3章 計(jì)算機(jī)的算術(shù)運(yùn)算 121
3.1 引言 121
3.2 加法和減法 121
3.3 乘法 124
3.3.1 串行版的乘法算法及其硬件實(shí)現(xiàn) 124
3.3.2 帶符號(hào)乘法 127
3.3.3 快速乘法 127
3.3.4 RISC-V中的乘法 127
3.3.5 總結(jié) 128
3.4 除法 128
3.4.1 除法算法及其硬件實(shí)現(xiàn) 128
3.4.2 有符號(hào)除法 131
3.4.3 快速除法 131
3.4.4 RISC-V中的除法 132
3.4.5 總結(jié) 132
3.5 浮點(diǎn)運(yùn)算 133
3.5.1 浮點(diǎn)表示 134
3.5.2 例外和中斷 135
3.5.3 IEEE 754浮點(diǎn)數(shù)標(biāo)準(zhǔn) 135
3.5.4 浮點(diǎn)加法 138
3.5.5 浮點(diǎn)乘法 141
3.5.6 RISC-V中的浮點(diǎn)指令 144
3.5.7 精確算術(shù) 148
3.5.8 總結(jié) 150
3.6 并行性與計(jì)算機(jī)算術(shù):子字并行 151
3.7 實(shí)例:x86中的SIMD擴(kuò)展和高級(jí)向量擴(kuò)展 151
3.8 加速:子字并行和矩陣乘法 153
3.9 謬誤與陷阱 155
3.10 本章小結(jié) 158
3.11 歷史視角和拓展閱讀 159
3.12 練習(xí) 159
第4章 處理器 163
4.1 引言 163
4.1.1 一種基本的RISC-V實(shí)現(xiàn) 164
4.1.2 實(shí)現(xiàn)概述 164
4.2 邏輯設(shè)計(jì)的一般方法 166
4.3 建立數(shù)據(jù)通路 169
4.4 一個(gè)簡(jiǎn)單的實(shí)現(xiàn)方案 175
4.4.1 ALU控制 175
4.4.2 設(shè)計(jì)主控制單元 176
4.4.3 數(shù)據(jù)通路操作 180
4.4.4 控制的結(jié)束 182
4.4.5 為什么現(xiàn)在不使用單周期實(shí)現(xiàn) 182
4.5 流水線概述 183
4.5.1 面向流水線的指令系統(tǒng)設(shè)計(jì) 187
4.5.2 流水線冒險(xiǎn) 187
4.5.3 總結(jié) 193
4.6 流水線數(shù)據(jù)通路和控制 194
4.6.1 流水線的圖形化表示 203
4.6.2 流水線控制 205
4.7 數(shù)據(jù)冒險(xiǎn):前遞與停頓 208
4.8 控制冒險(xiǎn) 218
4.8.1 假設(shè)分支不發(fā)生 218
4.8.2 縮短分支延遲 219
4.8.3 動(dòng)態(tài)分支預(yù)測(cè) 221
4.8.4 流水線總結(jié) 223
4.9 例外 223
4.9.1 RISC-V體系結(jié)構(gòu)中如何處理例外 224
4.9.2 流水線實(shí)現(xiàn)中的例外 225
4.10 指令間的并行性 228
4.10.1 推測(cè)的概念 229
4.10.2 靜態(tài)多發(fā)射 230
4.10.3 動(dòng)態(tài)多發(fā)射處理器 234
4.10.4 高級(jí)流水線和能效 237
4.11 實(shí)例:ARM Cortex-A53和Intel Core i7流水線結(jié)構(gòu) 238
4.11.1 ARM Cortex-A53 238
4.11.2 Intel Core i7 920 240
4.11.3 Intel Core i7處理器的性能 242
4.12 加速:指令級(jí)并行和矩陣乘法 243
4.13 高級(jí)專題:數(shù)字設(shè)計(jì)概述——使用硬件設(shè)計(jì)語(yǔ)言進(jìn)行流水線建模以及更多流水線示例 246
4.14 謬誤與陷阱 246
4.15 本章小結(jié) 247
4.16 歷史視角和拓展閱讀 247
4.17 練習(xí) 247
第5章 大而快:層次化存儲(chǔ) 258
5.1 引言 258
5.2 存儲(chǔ)技術(shù) 262
5.2.1 SRAM存儲(chǔ)技術(shù) 262
5.2.2 DRAM存儲(chǔ)技術(shù) 262
5.2.3 閃存 264
5.2.4 磁盤 264
5.3 cache基礎(chǔ) 266
5.3.1 cache訪問(wèn) 268
5.3.2 處理cache失效 272
5.3.3 處理寫操作 273
5.3.4 cache實(shí)例:Intrinsity FastMATH處理器 275
5.3.5 總結(jié) 276
5.4 cache的性能評(píng)估和改進(jìn) 277
5.4.1 使用更為靈活的替換策略降低cache失效率 279
5.4.2 在cache中查找數(shù)據(jù)塊 283
5.4.3 選擇替換的數(shù)據(jù)塊 284
5.4.4 使用多級(jí)cache減少失效代價(jià) 285
5.4.5 通過(guò)分塊進(jìn)行軟件優(yōu)化 287
5.4.6 總結(jié) 291
5.5 可靠的存儲(chǔ)器層次 291
5.5.1 失效的定義 291
5.5.2 糾正1位錯(cuò)、檢測(cè)2位錯(cuò)的漢明編碼 293
5.6 虛擬機(jī) 296
5.6.1 虛擬機(jī)監(jiān)視器的必備條件 297
5.6.2 指令系統(tǒng)體系結(jié)構(gòu)(缺乏)對(duì)虛擬機(jī)的支持 297
5.6.3 保護(hù)和指令系統(tǒng)體系結(jié)構(gòu) 298
5.7 虛擬存儲(chǔ) 298
5.7.1 頁(yè)的存放和查找 301
5.7.2 缺頁(yè)失效 303
5.7.3 支持大虛擬地址空間的虛擬存儲(chǔ) 304
5.7.4 關(guān)于寫 305
5.7.5 加快地址轉(zhuǎn)換:TLB 306
5.7.6 Intrinsity FastMATH TLB 307
5.7.7 集成虛擬存儲(chǔ)、TLB和cache 309
5.7.8 虛擬存儲(chǔ)中的保護(hù) 311
5.7.9 處理TLB失效和缺頁(yè)失效 312
5.7.10 總結(jié) 314
5.8 存儲(chǔ)層次結(jié)構(gòu)的一般框架 315
5.8.1 問(wèn)題一:塊可以被放在何處 315
5.8.2 問(wèn)題二:如何找到塊 316
5.8.3 問(wèn)題三:當(dāng)cache發(fā)生失效時(shí)替換哪一塊 317
5.8.4 問(wèn)題四:寫操作如何處理 317
5.8.5 3C:一種理解存儲(chǔ)層次結(jié)構(gòu)的直觀模型 318
5.9 使用有限狀態(tài)自動(dòng)機(jī)控制簡(jiǎn)單的cache 320
5.9.1 一個(gè)簡(jiǎn)單的cache 320
5.9.2 有限狀態(tài)自動(dòng)機(jī) 321
5.9.3 使用有限狀態(tài)自動(dòng)機(jī)作為簡(jiǎn)單的cache控制器 322
5.10 并行和存儲(chǔ)層次結(jié)構(gòu):cache一致性 324
5.10.1 實(shí)現(xiàn)一致性的基本方案 325
5.10.2 監(jiān)聽(tīng)協(xié)議 325
5.11 并行與存儲(chǔ)層次結(jié)構(gòu):廉價(jià)磁盤冗余陣列 327
5.12 高級(jí)專題:實(shí)現(xiàn)緩存控制器 327
5.13 實(shí)例:ARM Cortex-A53和Intel Core i7的存儲(chǔ)層次結(jié)構(gòu) 327
5.14 實(shí)例:RISC-V系統(tǒng)的其他部分和特殊指令 331
5.15 加速:cache分塊和矩陣乘法 331
5.16 謬誤與陷阱 333
5.17 本章小結(jié) 336
5.18 歷史視角和拓展閱讀 337
5.19 練習(xí) 337
第6章 并行處理器:從客戶端到云 348
6.1 引言 348
6.2 創(chuàng)建并行處理程序的難點(diǎn) 350
6.3 SISD、MIMD、SIMD、SPMD和向量機(jī) 354
6.3.1 x86中的SIMD:多媒體擴(kuò)展 355
6.3.2 向量機(jī) 355
6.3.3 向量與標(biāo)量 356
6.3.4 向量與多媒體擴(kuò)展 357
6.4 硬件多線程 359
6.5 多核及其他共享內(nèi)存多處理器 362
6.6 GPU簡(jiǎn)介 365
6.6.1 NVIDIA GPU體系結(jié)構(gòu)簡(jiǎn)介 366
6.6.2 NVIDIA GPU存儲(chǔ)結(jié)構(gòu) 367
6.6.3 對(duì)GPU的展望 368
6.7 集群、倉(cāng)儲(chǔ)級(jí)計(jì)算機(jī)和其他消息傳遞多處理器 370
6.8 多處理器網(wǎng)絡(luò)拓?fù)浜?jiǎn)介 374
6.9 與外界通信:集群網(wǎng)絡(luò) 376
6.10 多處理器測(cè)試基準(zhǔn)和性能模型 377
6.10.1 性能模型 379
6.10.2 Roofline模型 380
6.10.3 兩代Opteron的比較 381
6.11 實(shí)例:評(píng)測(cè)Intel Core i7 960 和NVIDIA Tesla GPU的Roofline模型 384
6.12 加速:多處理器和矩陣乘法 388
6.13 謬誤與陷阱 390
6.14 本章小結(jié) 391
6.15 歷史視角和拓展閱讀 393
6.16 練習(xí) 394
附錄A 邏輯設(shè)計(jì)基礎(chǔ) 402
術(shù)語(yǔ)表 460
網(wǎng)絡(luò)內(nèi)容
附錄B 圖形處理單元
附錄C 將控制映射至硬件
附錄D 精簡(jiǎn)指令系統(tǒng)體系結(jié)構(gòu)計(jì)算機(jī)
擴(kuò)展閱讀