計算機組成與設計:硬件/軟件接口 MIPS版 (原書第6版) Computer Organization and Design MIPS Edition: The Hardware/Software Interface, 6/e

David A. Patterson,John L. Hennessy

  • 出版商: 機械工業
  • 出版日期: 2022-07-01
  • 定價: $894
  • 售價: 8.5$760
  • 語言: 簡體中文
  • 頁數: 592
  • 裝訂: 平裝
  • ISBN: 7111708865
  • ISBN-13: 9787111708865
  • 立即出貨(限量) (庫存=10)

買這商品的人也買了...

相關主題

商品描述

本書由2017年圖靈獎的兩位得主撰寫,是計算機體系結構領域的經典教材,每年被超過40000名學生使用。
新版的主要更新是在每章中添加了關於DSA的內容,
並更新了所有實例,使全書更加與時俱進,滿足學生和讀者的新需求。

目錄大綱

譯者序
前言
作者簡介
第1章計算機抽象及相關技術 1
1.1 引言 1
1.1.1 計算應用的分類及其特性 2
1.1.2 歡迎來到後PC時代 3
1.1.3 你能從本書學到什麼 4
1.2 計算機體系結構的7個偉大思想 6
1.2.1 使用抽像簡化設計 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 機箱之內的硬件 10
1.4.1 顯示器 11
1.4.2 觸摸屏 12
1.4.3 打開機箱 13
1.4.4 數據安全 15
1.4.5 與其他計算機通信 16
1.5 處理器和存儲器製造技術 17
1.6 性能 20
1.6.1 性能的定義 21
1.6.2 性能的度量 23
1.6.3 CPU性能及其因素 24
1.6.4 指令的性能 25
1.6.5 經典的CPU性能公式 26
1.7 功耗牆 28
1.8 滄海巨變:從單處理器向多處理器轉變 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 本章小結 38
1.13 歷史觀點和拓展閱讀 39
1.14 自學 39
1.15 練習題 42
第2章指令:計算機的語言 46
2.1 引言 46
2.2 計算機硬件的操作 48
2.3 計算機硬件的操作數 50
2.3.1 存儲器操作數 51
2.3.2 常數或立即數操作數 53
2.4 有符號數和無符號數 54
2.5 計算機中指令的表示 59
2.6 邏輯操作 65
2.7 決策指令 67
2.7.1 循環 68
2.7.2 case/switch語句 70
2.8 計算機硬件對過程的支持 71
2.8.1 使用更多寄存器 72
2.8.2 嵌套過程 74
2.8.3 在棧中為新數據分配空間 76
2.8.4 在堆中為新數據分配空間 76
2.9 人機交互 78
2.10 MIPS中32位立即數和地址的尋址 82
2.10.1 32位立即數 83
2.10.2 分支和跳轉中的尋址 83
2.10.3 MIPS尋址模式總結 85
2.10.4 機器語言解碼 87
2.11 並行與指令:同步 89
2.12 翻譯並執行程序 91
2.12.1 編譯器 91
2.12.2 彙編器 91
2.12.3 鏈接器 93
2.12.4 加載器 95
2.12.5 動態鏈接庫 95
2.12.6 啟動一個Java程序 97
2.13 綜合實例:C排序程序 98
2.13.1 swap過程 98
2.13.2 sort過程 100
2.14 數組與指針 104
2.14.1 用數組實現clear 104
2.14.2 用指針實現clear 106
2.14.3 比較兩個版本的clear 106
2.15 高級內容:編譯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寄存器和數據尋址模式 114
2.19.3 x86整數操作 115
2.19.4 x86指令編碼 117
2.19.5 x86總結 119
2.20 加速:使用C語言編寫矩陣乘法程序 119
2.21 謬誤與陷阱 120
2.22 本章小結 122
2.23 歷史觀點和拓展閱讀 124
2.24 自學 124
2.25 練習題 126
第3章計算機的算術運算 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 小結 140
3.4 除法 140
3.4.1 除法算法和硬件 141
3.4.2 有符號除法 143
3.4.3 更快速的除法 144
3.4.4 MIPS中的除法 144
3.4.5 小結 145
3.5 浮點運算 146
3.5.1 浮點表示 147
3.5.2 浮點加法 151
3.5.3 浮點乘法 154
3.5.4 MIPS中的浮點指令 156
3.5.5 算術精確性 161
3.5.6 小結 163
3.6 並行性和計算機算術:子字並行 164
3.7 實例:x86中的流處理SIMD擴展和高級向量擴展 166
3.8 加速:子字並行和矩陣乘法 167
3.9 謬誤與陷阱 168
3.10 本章小結 171
3.11 歷史觀點和拓展閱讀 174
3.12 自學 174
3.13 練習題 176
第4章處理器 181
4.1 引言 181
4.1.1 一個基本的MIPS實現 182
4.1.2 實現方式概述 182
4.2 邏輯設計的一般方法 184
4.3 建立數據通路 187
4.4 一個簡單的實現機制 193
4.4.1 ALU控制 193
4.4.2 主控制單元的設計 195
4.4.3 為什麼不使用單週期實現方式 201
4.5 多周期實現 202
4.6 流水線概述 203
4.6.1 面向流水線的指令集設計 206
4.6.2 流水線冒險 207
4.6.3 小結 212
4.7 流水線數據通路與控制 213
4.7.1 圖形化表示的流水線 221
4.7.2 流水線控制 224
4.8 數據冒險:旁路與阻塞 227
4.9 控制冒險 237
4.9.1 假定分支不發生 238
4.9.2 縮短分支的延遲 238
4.9.3 動態分支預測 241
4.9.4 小結 244
4.10 異常 245
4.10.1 MIPS體系結構中的異常處理 245
4.10.2 流水線實現中的異常 246
4.11 指令級並行 249
4.11.1 推測的概念 250
4.11.2 靜態多發射處理器 251
4.11.3 動態多發射處理器 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 高級主題:數字設計概述—使用硬件設計語言進行流水線建模以及更多流水線示例 268
4.15 謬誤與陷阱 268
4.16 本章小結 269
4.17 歷史觀點和拓展閱讀 269
4.18 自學 269
4.19 練習題 270
第5章大容量和高速度:開發存儲器層次結構 281
5.1 引言 281
5.2 存儲器技術 285
5.2.1 SRAM技術 285
5.2.2 DRAM技術 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 小結 299
5.4 cache性能的評估和改進 299
5.4.1 通過更靈活地放置塊來減少cache缺失 302
5.4.2 在cache中查找塊 305
5.4.3 替換塊的選擇 306
5.4.4 使用多級cache結構減少缺失代價 307
5.4.5 通過分塊進行軟件優化 309
5.4.6 小結 312
5.5 可信存儲器層次 312
5.5.1 失效的定義 313
5.5.2 糾正一位錯、檢測兩位錯的漢明編碼(SEC/DED) 314
5.6 虛擬機 317
5.6.1 虛擬機監視器的必備條件 318
5.6.2 指令集體系結構(缺乏)對虛擬機的支持 319
5.6.3 保護和指令集體系結構 319
5.7 虛擬存儲器 320
5.7.1 頁的存放和查找 323
5.7.2 缺頁故障 324
5.7.3 關於寫 327
5.7.4 加快地址轉換:TLB 327
5.7.5 集成虛擬存儲器、TLB和cache 331
5.7.6 虛擬存儲器中的保護 332
5.7.7 處理TLB缺失和缺頁 333
5.7.8 小結 337
5.8 存儲器層次結構的一般框架 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:一種理解存儲器層次結構行為的直觀模型 342
5.9 使用有限狀態機來控制簡單的cache 343
5.9.1 一個簡單的cache 343
5.9.2 有限狀態機 344
5.9.3 一個簡單cache控制器的有限狀態機 346
5.10 並行與存儲器層次結構:cache一致性 347
5.10.1 實現一致性的基本方案 348
5.10.2 監聽協議 348
5.11 並行與存儲器層次結構:廉價冗餘磁盤陣列 350
5.12 高級內容:實現cache控制器 350
5.13 實例:ARM Cortex-A53和Intel Core i7的存儲器層次結構 350
5.14 加速:cache分塊和矩陣乘法 354
5.15 謬誤與陷阱 355
5.16 本章小結 359
5.17 歷史觀點和拓展閱讀 359
5.18 自學 359
5.19 練習題 362
第6章從客戶端到雲的並行處理器 374
6.1 引言 374
6.2 創建並行處理程序的難點 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 多核和其他共享內存多處理器 387
6.6 圖形處理單元 390
6.6.1 NVIDIA GPU體系結構簡介 391
6.6.2 NVIDIA GPU存儲結構 393
6.6.3 GPU展望 394
6.7 領域專用體系結構 396
6.8 集群、倉儲級計算機和其他消息傳遞多處理器 398
6.9 多處理器網絡拓撲簡介 402
6.10 與外界通信:集群網絡 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超級計算機網絡 414
6.12.3 DSA超級計算機節點 414
6.12.4 DSA算術運算 416
6.12.5 TPUv3與Volta GPU的比較 417
6.12.6 性能 418
6.13 加速:多處理器和矩陣乘法 419
6.14 謬誤與陷阱 421
6.15 本章小結 423
6.16 歷史觀點和拓展閱讀 425
6.17 自學 425
6.18 練習題 426
附錄A 彙編器、鏈接器和SPIM仿真器 435
附錄B 邏輯設計基礎 486
索引 544
網絡內容
附錄C 圖形與計算GPU
附錄D 將控制映射至硬件
附錄E 指令集體系結構綜述