計算機組成與體系結構:性能設計(原書10版) Computer Organization and Architecture, 10/e

William Stallings

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

商品描述

本書是計算機組成與體系結構領域的經典教材。
它對組成與體系結構領域的必要基礎知識進行了全面的介紹。
同時,本書涉及領域的前沿進展。
與前一版相比,第10版對許多主題進行了修訂,並增加了新內容,包括GPGPU、異構多核處理器、
嵌入式系統、微控制器、雲計算、系統性能、存儲器、直接緩存訪問、Intel酷睿微架構等。
本書對涉及的理論知識輔以充分的例子,
其中大多數例子都來自兩種使用廣泛的指令集,即x86和ARM。
適合作為高校計算機及相關專業學生的教材,
對從事計算機組成與體系結構研究和工作的人員也有很大的參考價值。

作者簡介

William Stallings

美國聖母大學電氣工程專業學士,麻省理工學院計算機科學專業博士。
William Stallings已出版圖書近20種,含修訂版在內共出版圖書40種,內容涉及計算機安全、計算機網絡和計算機體系結構。
在多家期刊上發表了大量論文,包括《IEEE學報》《ACM計算評論》和《密碼術》。
13次榮獲教材與學術作者協會頒發的最佳計算機科學教科書獎。
在計算機科學領域工作的30多年,William Stallings一直是一位技術貢獻者、技術管理者和多家高科技公司的主管;
針對許多計算機和操作系統,設計和實現了基於TCP/IP與基於OSI的協議套件。
William Stallings還是政府機構、計算機和軟件供應商以及設計、選用網絡軟件與產品的用戶的顧問。
創建與維護了計算機科學專業學生資源網站ComputerScienceStudent.com,
為計算機科學專業的學生(及專業人員)提供文獻及大量專題鏈接,
也是學術期刊《密碼術》的編委會成員。

目錄大綱

譯者序

前言
作者簡介
一部分 引言
1章 基本概念和計算機演化 2
1.1 組成與體系結構 2
1.2 結構與功能 3
1.2.1 功能 3
1.2.2 結構 4
1.3 計算機簡史 8
1.3.1 一代:真空管 9
1.3.2 二代:晶體管 13
1.3.3 三代:集成電路 15
1.3.4 三代以後 18
1.4 Intel 86體系結構的演化 20
1.5 嵌入式系統 22
1.5.1 物聯網 23
1.5.2 嵌入式作系統 23
1.5.3 應用處理器和專用處理器 23
1.5.4 微處理器與微控制器 24
1.5.5 嵌入式與深度嵌入式系統 24
1.6 ARM體系結構 25
1.6.1 ARM的演進 25
1.6.2 指令集架構 25
1.6.3 ARM產品 26
1.7 雲計算 29
1.7.1 基本概念 29
1.7.2 雲服務 30
1.8 關鍵詞、複習題和練習題 31
2章 性能問題 34
2.1 優化性能設計 34
2.1.1 微處理器速度 35
2.1.2 性能平衡 35
2.1.3 芯片組成與體系結構的改進 37
2.2 多核、MIC和GPGPU 38
2.3 Amdahl定律和Little定律 39
2.3.1 Amdahl定律 39
2.3.2 Little定律 40
2.4 計算機性能的基本度量 41
2.4.1 時鐘速度 42
2.4.2 指令執行速率 42
2.5 計算均值 44
2.5.1 算術均值 45
2.5.2 調和均值 46
2.5.3 幾何均值 47
2.6 基準測試和SPEC 49
2.6.1 基準測試原則 49
2.6.2 SPEC基準測試 50
2.7 關鍵詞、複習題和練習題 54
二部分 計算機系統
3章 計算機功能與互連的頂層視圖 60
3.1 計算機組件 60
3.2 計算機功能 62
3.2.1 取指和執行 62
3.2.2 中斷 65
3.2.3 I/O功能 71
3.3 互連結構 71
3.4 總線互連 72
3.5 點對點互連 74
3.5.1 QPI物理層 75
3.5.2 QPI***層 76
3.5.3 QPI路由層 77
3.5.4 QPI協議層 77
3.6 PCI Epress 77
3.6.1 PCI物理和邏輯架構 78
3.6.2 PCIe物理層 79
3.6.3 PCIe事務層 80
3.6.4 PCIe數據鏈路層 82
3.7 關鍵詞、複習題和練習題 83
4章 高速緩存 87
4.1 計算機存儲系統概述 87
4.1.1 存儲系統的特性 87
4.1.2 存儲器層次結構 89
4.2 高速緩存存儲器原理 92
4.3 高速緩存設計要素 94
4.3.1 高速緩存地址 94
4.3.2 高速緩存大小 95
4.3.3 映函數 96
4.3.4 替換算法 105
4.3.5 寫策略 106
4.3.6 數據行大小 107
4.3.7 高速緩存的數量 107
4.4 Pentium 4高速緩存結構 109
4.5 關鍵詞、複習題和練習題 111
附錄4A 兩級存儲的性能特徵 116
5章 內部存儲器 121
5.1 半導體存儲器 121
5.1.1 組成 121
5.1.2 DRAM和SRAM 121
5.1.3 ROM的類型 123
5.1.4 芯片邏輯 124
5.1.5 芯片封裝 126
5.1.6 模塊組織 126
5.1.7 交存儲器 128
5.2 糾錯 128
5.3 DDR DRAM 131
5.3.1 同步DRAM 132
5.3.2 DDR SDRAM 133
5.4 閃存 135
5.4.1 作 135
5.4.2 NOR和NAND閃存 135
5.5 新的非易失性固態存儲器技術 137
5.5.1 STT-RAM 137
5.5.2 PCRAM 138
5.5.3 ReRAM 139
5.6 關鍵詞、複習題和練習題 139
6章 外部存儲器 143
6.1 磁盤 143
6.1.1 磁性讀寫機制 143
6.1.2 數據組織和格式 144
6.1.3 物理特性 146
6.1.4 磁盤性能參數 147
6.2 RAID 149
6.2.1 RAID級別0 151
6.2.2 RAID級別1 153
6.2.3 RAID級別2 153
6.2.4 RAID級別3 154
6.2.5 RAID級別4 154
6.2.6 RAID級別5 155
6.2.7 RAID級別6 155
6.3 固態驅動器 156
6.3.1 SSD與HDD的比較 156
6.3.2 SSD組成 157
6.3.3 實際問題 157
6.4 光存儲器 158
6.4.1 光盤 158
6.4.2 數字通用光盤 160
6.4.3 高清光盤 161
6.5 磁帶 162
6.6 關鍵詞、複習題和練習題 163
7章 輸入/輸出 166
7.1 外部設備 167
7.1.1 鍵盤和監視器 167
7.1.2 磁盤驅動器 168
7.2 I/O模塊 168
7.2.1 模塊功能 168
7.2.2 I/O模塊結構 169
7.3 可編程I/O 170
7.3.1 可編程I/O概述 170
7.3.2 I/O命令 170
7.3.3 I/O指令 171
7.4 中斷驅動I/O 172
7.4.1 中斷處理 173
7.4.2 設計問題 175
7.4.3 Intel 82C59A中斷控制器 176
7.4.4 Intel 8255A可編程外設接口 177
7.5 直接內存訪問 180
7.5.1 可編程I/O和中斷驅動I/O的缺點 180
7.5.2 DMA功能 180
7.5.3 Intel 8237A DMA控制器 182
7.6 直接高速緩存訪問 184
7.6.1 使用共享的後一級高速緩存的DMA 184
7.6.2 高速緩存相關的性能問題 186
7.6.3 直接高速緩存訪問策略 187
7.6.4 直接數據I/O 188
7.7 I/O通道和處理器 189
7.7.1 I/O功能的演化 189
7.7.2 I/O通道的特性 190
7.8 外部互連標準 190
7.8.1 通用串行總線 190
7.8.2 FireWire串行總線 191
7.8.3 小型計算機系統接口 191
7.8.4 Thunderbolt 191
7.8.5 InfiniBand 192
7.8.6 PCI Epress 192
7.8.7 SATA 192
7.8.8 Ethernet 192
7.8.9 Wi-Fi 192
7.9 IBM zEnterprise EC12 I/O結構 193
7.9.1 通道結構 193
7.9.2 I/O系統組織 194
7.10 關鍵詞、複習題和練習題 196
8章 作系統的支持 200
8.1 作系統概述 200
8.1.1 作系統的目標與功能 200
8.1.2 作系統類型 202
8.2 調度 208
8.2.1 長期調度 208
8.2.2 中期調度 208
8.2.3 短期調度 209
8.3 內存管理 212
8.3.1 交換 212
8.3.2 分區 213
8.3.3 分頁 214
8.3.4 虛擬內存 216
8.3.5 轉換後援緩衝器 218
8.3.6 分段 219
8.4 Intel 86內存管理 220
8.4.1 地址空間 220
8.4.2 分段 220
8.4.3 分頁 222
8.5 ARM內存管理 224
8.5.1 內存系統組織 224
8.5.2 虛擬內存地址轉換 224
8.5.3 內存管理格式 225
8.5.4 訪問控制 227
8.6 關鍵詞、複習題和練習題 227
三部分 算術與邏輯
9章 數字系統 232
9.1 十進制系統 232
9.2 按位記數係統 233
9.3 二進制系統 233
9.4 二進制與十進制的轉換 233
9.4.1 整數 234
9.4.2 小數 234
9.5 十六進製表示 235
9.6 關鍵詞和練習題 237
10章 計算機算術運算 238
10.1 算術和邏輯單元 238
10.2 整數表示 239
10.2.1 原碼表示法 239
10.2.2 二進制補碼表示法 240
10.2.3 範圍的擴展 242
10.2.4 定點表示法 243
10.3 整數算術運算 243
10.3.1 非 243
10.3.2 加法和減法 244
10.3.3 乘法 246
10.3.4 除法 251
10.4 浮點表示 254
10.4.1 原則 254
10.4.2 二進制浮點表示的IEEE標準 256
10.5 浮點算術運算 260
10.5.1 加減法 260
10.5.2 乘除法 262
10.5.3 精度考量 263
10.5.4 二進制浮點算術運算的IEEE標準 264
10.6 關鍵詞、複習題和練習題 266
11章 數字邏輯 270
11.1 布爾代數 270
11.2 門 272
11.3 組合電路 274
11.3.1 布爾函數的實現 274
11.3.2 多路復用器 281
11.3.3 譯碼器 282
11.3.4 只讀存儲器 283
11.3.5 加法器 285
11.4 時序電路 287
11.4.1 觸發器 287
11.4.2 寄存器 290
11.4.3 計數器 290
11.5 可編程邏輯器件 293
11.5.1 可編程邏輯陣列 293
11.5.2 現場可編程門陣列 295
11.6 關鍵詞和練習題 296
部分 處理單元
12章 指令集:特性與功能 300
12.1 機器指令特性 300
12.1.1 機器指令的要素 300
12.1.2 指令表示 301
12.1.3 指令類型 302
12.1.4 地址個數 303
12.1.5 指令集設計 304
12.2 作數類型 305
12.2.1 數字 305
12.2.2 字符 306
12.2.3 邏輯數據 306
12.3 Intel 86和ARM數據類型 306
12.3.1 86數據類型 306
12.3.2 ARM數據類型 308
12.4 作類型 309
12.4.1 數據傳輸 310
12.4.2 算術運算 311
12.4.3 邏輯運算 311
12.4.4 轉換 313
12.4.5 輸入/輸出 313
12.4.6 系統控制 314
12.4.7 轉移控制 314
12.5 Intel 86和ARM作類型 317
12.5.1 86作類型 317
12.5.2 ARM作類型 321
12.6 關鍵詞、複習題和練習題 323
附錄12A 小端序、大端序和雙端序 328
13章 指令集:尋址模式與格式 331
13.1 尋址模式 331
13.1.1 立即數尋址 333
13.1.2 直接尋址 333
13.1.3 間接尋址 333
13.1.4 寄存器尋址 333
13.1.5 寄存器間接尋址 334
13.1.6 偏移尋址 334
13.1.7 棧尋址 336
13.2 86和ARM尋址模式 336
13.2.1 86尋址模式 336
13.2.2 ARM尋址模式 338
13.3 指令格式 340
13.3.1 指令長度 340
13.3.2 位的分配 341
13.3.3 變長指令 343
13.4 86和ARM指令格式 346
13.4.1 86指令格式 346
13.4.2 ARM指令格式 348
13.5 彙編語言 350
13.6 關鍵詞、複習題和練習題 351
14章 處理器結構與功能 355
14.1 處理器的組織 355
14.2 寄存器的組織 356
14.2.1 用戶可見寄存器 356
14.2.2 控制和狀態寄存器 358
14.2.3 微處理器寄存器組織示例 359
14.3 指令周期 360
14.3.1 間接週期 360
14.3.2 數據流 361
14.4 指令流水線 363
14.4.1 流水線策略 363
14.4.2 流水線性能 367
14.4.3 流水線冒險 368
14.4.4 處理分支 369
14.4.5 Intel 80486流水線 373
14.5 86處理器系列 375
14.5.1 寄存器組織 375
14.5.2 中斷處理 378
14.6 ARM處理器 380
14.6.1 處理器組織 380
14.6.2 處理器模式 381
14.6.3 寄存器組織 382
14.6.4 中斷處理 383
14.7 關鍵詞、複習題和練習題 384
15章 精簡指令集計算機 388
15.1 指令執行的特點 389
15.1.1 作 390
15.1.2 作數 390
15.1.3 過程調用 391
15.1.4 啟示 391
15.2 使用大型寄存器文件 392
15.2.1 寄存器窗口 392
15.2.2 全局變量 394
15.2.3 大型寄存器文件與高速緩存 394
15.3 基於編譯器的寄存器優化 395
15.4 精簡指令集架構 397
15.4.1 為什麼是CISC 397
15.4.2 精簡指令集架構的特點 398
15.4.3 CISC與RISC特性 400
15.5 RISC流水線 401
15.5.1 規整指令的流水線 401
15.5.2 流水線優化 402
15.6 MIPS R4000 404
15.6.1 指令集 405
15.6.2 指令流水線 406
15.7 SPARC 408
15.7.1 SPARC寄存器組 409
15.7.2 指令集 410
15.7.3 指令格式 411
15.8 RISC與CISC之爭 412
15.9 關鍵詞、複習題和練習題 413
16章 指令級並行與標量處理器 416
16.1 概述 416
16.1.1 標量與流水 417
16.1.2 限制 418
16.2 設計問題 420
16.2.1 指令級並行性與機器並行性 420
16.2.2 指令發策略 421
16.2.3 寄存器重命名 424
16.2.4 機器並行性 425
16.2.5 分支預測 425
16.2.6 標量執行 426
16.2.7 標量實現 426
16.3 Intel酷睿微架構 427
16.3.1 前端 429
16.3.2 無序執行邏輯 430
16.3.3 整數和浮點執行單元 431
16.4 ARM Corte-A8 431
16.4.1 取指單元 433
16.4.2 指令譯碼單元 434
16.4.3 整數執行單元 436
16.4.4 SIMD和浮點流水線 437
16.5 ARM Corte-M3 437
16.5.1 流水線結構 438
16.5.2 分支處理 439
16.6 關鍵詞、複習題和練習題 440
五部分 並行結構
17章 並行處理 446
17.1 多處理器結構 446
17.1.1 並行處理器系統的類型 446
17.1.2 並行組織結構 447
17.2 對稱多處理器 448
17.2.1 組織結構 449
17.2.2 多處理器作系統設計考量 451
17.3 高速緩存一致性和MESI協議 451
17.3.1 軟件解決方案 452
17.3.2 硬件解決方案 452
17.3.3 MESI協議 453
17.4 多線程和芯片多處理器 456
17.4.1 隱式和顯式多線程 456
17.4.2 顯式多線程的方法 457
17.5 集 459
17.5.1 集配置 460
17.5.2 作系統設計問題 461
17.5.3 集計算機體系結構 462
17.5.4 刀片服務器 463
17.5.5 集與SMP的比較 464
17.6 非均勻內存訪問 464
17.6.1 動機 465
17.6.2 組織 465
17.6.3 NUMA的優點和缺點 467
17.7 雲計算 467
17.7.1 雲計算要素 467
17.7.2 雲計算參考架構 470
17.8 關鍵詞、複習題和練習題 471
18章 多核計算機 476
18.1 硬件性能問題 476
18.1.1 增加並行性和復雜性 476
18.1.2 能耗 477
18.2 軟件性能問題 478
18.2.1 多核軟件 478
18.2.2 應用程序示例:Valve遊戲軟件 480
18.3 多核組織結構 481
18.3.1 高速緩存的層級 481
18.3.2 同時多線程 483
18.4 異構多核組織結構 483
18.4.1 不同的指令集架構 483
18.4.2 等價指令集架構 486
18.4.3 高速緩存一致性和MOESI模型 488
18.5 Intel Core i7-990X 490
18.6 ARM Corte-A15 MPCore 490
18.6.1 中斷處理 492
18.6.2 高速緩存一致性 493
18.6.3 L2高速緩存一致性 494
18.7 IBM zEnterprise EC12大型機 494
18.7.1 組織結構 494
18.7.2 高速緩存結構 495
18.8 關鍵詞、複習題和練習題 497
19章 通用圖形處理單元 499
19.1 CUDA基礎 499
19.2 GPU與CPU 500
19.2.1 CPU與GPU架構之間的基本差異 501
19.2.2 性能與每瓦特性能比較 501
19.3 GPU架構概述 502
19.3.1 基準GPU架構 502
19.3.2 全芯片佈局 502
19.3.3 流式多處理器架構的詳細信息 504
19.3.4 了解存儲器類型和編程的重要性 506
19.4 Intel Gen8 GPU 507
19.5 何時把GPU當作協處理器使用 511
19.6 關鍵詞和復習題 511
六部分 控制單元
20章 控制單元作 514
20.1 微作 514
20.1.1 取指周期 515
20.1.2 間接週期 516
20.1.3 中斷週期 517
20.1.4 執行週期 517
20.1.5 指令周期 518
20.2 處理器的控制 519
20.2.1 功能需求 519
20.2.2 控制信號 520
20.2.3 控制信號示例 521
20.2.4 處理器內部組織結構 522
20.2.5 Intel 8085 523
20.3 硬佈線實現 526
20.3.1 控制單元輸入 526
20.3.2 控制單元邏輯 527
20.4 關鍵詞、複習題和練習題 528
21章 微程序控制 530
21.1 基本概念 530
21.1.1 微指令 530
21.1.2 微程序控制單元 532
21.1.3 Wilkes控制 534
21.1.4 優缺點 536
21.2 微指令排序 537
21.2.1 設計注意事項 537
21.2.2 排序技術 537
21.2.3 地址生成 539
21.2.4 LSI-11微指令排序 540
21.3 微指令執行 540
21.3.1 微指令分類法 541
21.3.2 微指令編碼 543
21.3.3 LSI-11微指令執行 544
21.3.4 IBM 3033微指令執行 547
21.4 TI 8800 548
21.4.1 微指令格式 549
21.4.2 微序列器 550
21.4.3 寄存器ALU 553
21.5 關鍵詞、複習題和練習題 556
附錄A 計算機組成和體系結構教學項目
附錄B 彙編語言與相關主題
縮略語
參考文獻
在線資源
附錄C 系統總線
附錄D 協議與協議架構
附錄E 加擾
附錄F 替換高速緩存策略
附錄G 交存儲器
附錄H 國際基準字母表
附錄I 棧
附錄J Thunderbolt和Infiniband
附錄K 虛擬存儲器頁替換算法
附錄L 哈希表
附錄M 遞歸過程
附錄N 更多指令流水線內容
附錄O 時序圖
術語表