內容簡介
本書採用結構化方法來介紹
計算機系統,書的內容完全建立在“計算機是由層次結構組成的,每層完成規定的功能”這一概念之上。作者對本版進行了徹底的更新,以反映當今最重要的計算機技術以及計算機組成和體系結構方面的最新進展。書中詳細討論了數字邏輯層、微體系結構層、指令系統層、作業系統層和彙編語言層,並涵蓋了並行體系結構的內容,而且每一章結尾都配有豐富的習題。本書適合作為計算機專業本科生計算機組成與結構課程的教材或參考書,也可供相關領域技術人員參考。
圖書目錄
Structured Computer Organization, Sixth Edition
出版者的話
譯者序
前言
第1章 概述 1
1.1 結構化計算機組成 1
1.1.1 語言、層次和虛擬機 1
1.1.2 現代多層次計算機 3
1.1.3 多層次計算機的演化 5
1.2 計算機體系結構的里程碑 8
1.2.1 第零代——機械計算機(1642—1945) 8
1.2.2 第一代——電子管計算機(1945—1955) 10
1.2.3 第二代——電晶體計算機(1955—1965) 12
1.2.4 第三代——積體電路計算機(1965—1980) 14
1.2.5 第四代——超大規模積體電路計算機(1980年至今) 15
1.2.6 第五代——低功耗和無所不在的計算機 17
1.3 計算機家族 18
1.3.1 技術和經濟推動 18
1.3.2 計算機掃視 20
1.3.3 一次性計算機 21
1.3.4 微型控制器 22
1.3.5 移動計算機和遊戲計算機 23
1.3.6 個人計算機 24
1.3.7 伺服器 25
1.3.8 大型主機 26
1.4 系列計算機舉例 26
1.4.1 x86體系結構簡介 27
1.4.2 ARM體系結構簡介 31
1.4.3 AVR體系結構簡介 32
1.5 公制計量單位 33
1.6 本書概覽 34
習題 35
第2章 計算機系統組成 38
2.1 處理器 38
2.1.1 CPU組成 39
2.1.2 指令執行 40
2.1.3 RISC和CISC 42
2.1.4 現代計算機設計原則 43
2.1.5 指令級並行 44
2.1.6 處理器級並行 47
2.2 主存儲器 50
2.2.1 存儲位 50
2.2.2 記憶體編址 51
2.2.3 位元組順序 52
2.2.4 糾錯碼 53
2.2.5 高速快取 56
2.2.6 記憶體封裝及其類型 58
2.3 輔助存儲器 59
2.3.1 層次存儲結構 59
2.3.2 磁碟 60
2.3.3 IDE盤 62
2.3.4 SCSI盤 63
2.3.5 RAID糟 64
2.3.6 固盤 67
2.3.7 唯讀光碟 68
2.3.8 可刻光碟 71
2.3.9 可擦寫光碟 73
2.3.10 DVD 73
2.3.11 Blu-Ray 74
2.4 輸入/輸出設備 75
2.4.1 匯流排 75
2.4.2 終端 78
2.4.3 滑鼠 81
2.4.4 遊戲控制器 83
2.4.5 印表機 84
2.4.6 電信設備 88
2.4.7 數位相機 94
2.4.8 字元編碼 95
2.5 小結 99
習題 99
第3章 數字邏輯層 103
3.1 門和布爾代數 103
3.1.1 門 103
3.1.2 布爾代數 105
3.1.3 布爾函式的實現 107
3.1.4 等價電路 108
3.2 基本數字邏輯電路 110
3.2.1 積體電路 111
3.2.2 組合邏輯電路 111
3.2.3 算術電路 114
3.2.4 時鐘 118
3.3 記憶體 119
3.3.1 鎖存器 119
3.3.2 觸發器 121
3.3.3 暫存器 122
3.3.4 記憶體組成 123
3.3.5 記憶體晶片 125
3.3.6 RAM和ROM 128
3.4 CPU晶片和匯流排 130
3.4.1 CPU晶片 130
3.4.2 計算機匯流排 132
3.4.3 匯流排寬度 134
3.4.4 匯流排時鐘 135
3.4.5 匯流排仲裁 138
3.4.6 匯流排操作 141
3.5 CPU晶片舉例 143
3.5.1 Intel Core i7 143
3.5.2 德州儀器的OMAP4430片上系統 147
3.5.3 Atmel的ATmega168微控制器 150
3.6 匯流排舉例 152
3.6.1 PCI匯流排 152
3.6.2 PCI Express 159
3.6.3 通用串列匯流排USB 162
3.7 接口電路 165
3.7.1 輸入/輸出接口 165
3.7.2 地址解碼 166
3.8 小結 169
習題 169
第4章 微體系結構層 173
4.1 微體系結構舉例 173
4.1.1 數據通路 174
4.1.2 微指令 178
4.1.3 微指令控制:Mic-1 180
4.2 指令系統舉例:IJVM 183
4.2.1 棧 183
4.2.2 IJVM記憶體模型 185
4.2.3 IJVM指令集 186
4.2.4 將Java編譯為IJVM 189
4.3 實現舉例 190
4.3.1 微指令和符號 190
4.3.2 用Mic-1實現IJVM 193
4.4 微體系結構層設計 201
4.4.1 速度與價格 202
4.4.2 縮短指令執行路徑長度 203
4.4.3 帶預取的設計:Mic-2 208
4.4.4 流水線設計:Mic-3 211
4.4.5 七段流水線設計:Mic-4 215
4.5 提高性能 217
4.5.1 高速快取 218
4.5.2 分支預測 222
4.5.3 亂序執行和暫存器重命名 226
4.5.4 推測執行 230
4.6 微體系結構層舉例 232
4.6.1 Core i7 CPU的微體系結構 232
4.6.2 OMAP4430 CPU的微體系結構 236
4.6.3 ATmega168微控制器的微體系結構 240
4.7 Core i7、OMAP4430和ATmega168三種CPU的比較 241
4.8 小結 242
習題 243
第5章 指令系統層 246
5.1 指令系統層概述 247
5.1.1 指令系統層的性質 247
5.1.2 存儲模式 249
5.1.3 暫存器 250
5.1.4 指令 251
5.1.5 Core i7指令系統層概述 251
5.1.6 OMAP4430 ARM指令系統層概述 253
5.1.7 ATmega168 AVR指令系統層概述 255
5.2 數據類型 256
5.2.1 數值數據類型 257
5.2.2 非數值數據類型 257
5.2.3 Core i7的數據類型 258
5.2.4 OMAP4430 ARM CPU的數據類型 258
5.2.5 ATmega168 AVR CPU的數據類型 259
5.3 指令格式 259
5.3.1 指令格式設計準則 260
5.3.2 擴展操作碼 261
5.3.3 Core i7指令格式 263
5.3.4 OMAP4430 ARM CPU指令格式 264
5.3.5 ATmega168 AVR指令格式 266
5.4 定址 267
5.4.1 定址方式 267
5.4.2 立即定址 267
5.4.3 直接定址 267
5.4.4 暫存器定址 267
5.4.5 暫存器間接定址 267
5.4.6 變址定址 269
5.4.7 基址變址定址 270
5.4.8 棧定址 270
5.4.9 轉移指令的定址方式 272
5.4.10 操作碼和定址方式的關係 273
5.4.11 Core i7的定址方式 274
5.4.12 OMAP4430 ARM CPU的定址方式 276
5.4.13 ATmega168 AVR的定址方式 276
5.4.14 定址方式討論 276
5.5 指令類型 277
5.5.1 數據移動指令 277
5.5.2 雙運算元指令 278
5.5.3 單運算元指令 279
5.5.4 比較和條件轉移指令 280
5.5.5 過程調用指令 281
5.5.6 循環控制指令 282
5.5.7 輸入/輸出指令 283
5.5.8 Core i7指令系統 285
5.5.9 OMAP4430 ARM CPU指令系統 287
5.5.10 ATmega168 AVR指令系統 289
5.5.11 指令集比較 291
5.6 控制流 291
5.6.1 順序控制流和轉移 291
5.6.2 過程 292
5.6.3 協同過程 295
5.6.4 陷阱 297
5.6.5 中斷 297
5.7 詳細舉例:漢諾塔 300
5.7.1 Core i7彙編語言實現的漢諾塔 300
5.7.2 OMAP4430 ARM彙編語言實現的漢諾塔 302
5.8 IA-64體系結構和Itanium 2 303
5.8.1 IA-32的問題 303
5.8.2 IA-64模型:顯式並行指令計算 304
5.8.3 減少記憶體訪問 305
5.8.4 指令調度 305
5.8.5 減少條件轉移:判定 307
5.8.6 推測載入 308
5.9 小結 309
習題 310
第6章 作業系統層 314
6.1 虛擬記憶體 314
6.1.1 記憶體分頁 315
6.1.2 記憶體分頁的實現 316
6.1.3 請求調頁和工作集模型 319
6.1.4 頁置換策略 320
6.1.5 頁大小和碎片 321
6.1.6 分段 322
6.1.7 分段的實現 324
6.1.8 Core i7的虛擬記憶體 326
6.1.9 OMAP4430 ARM CPU的虛擬記憶體 329
6.1.10 虛擬記憶體和高速快取 331
6.2 硬體虛擬化 331
6.3 作業系統層I/O指令 333
6.3.1 檔案 333
6.3.2 作業系統層I/O指令的實現 335
6.3.3 目錄管理指令 337
6.4 用於並行處理的作業系統層指令 338
6.4.1 進程創建 339
6.4.2 競爭條件 339
6.4.3 使用信號量的進程同步 342
6.5 作業系統實例 345
6.5.1 簡介 345
6.5.2 虛擬記憶體實例 350
6.5.3 作業系統層I/O舉例 352
6.5.4 進程管理實例 361
6.6 小結 365
習題 366
第7章 彙編語言層 371
7.1 彙編語言簡介 371
7.1.1 什麼是彙編語言 372
7.1.2 為什麼使用彙編語言 372
7.1.3 彙編語言語句的格式 373
7.1.4 偽指令 374
7.2 宏 376
7.2.1 宏定義、調用和擴展 376
7.2.2 帶參數的宏 377
7.2.3 高級特性 378
7.2.4 彙編器中宏處理的實現 378
7.3 彙編過程 379
7.3.1 兩趟彙編的彙編器 379
7.3.2 第一趟掃描 379
7.3.3 第二趟掃描 382
7.3.4 符號表 384
7.4 連結和載入 385
7.4.1 連結器的處理過程 386
7.4.2 目標模組的結構 388
7.4.3 綁定時間和動態重定位 389
7.4.4 動態連結 390
7.5 小結 393
習題 393
第8章 並行計算機體系結構 396
8.1 片內並行 397
8.1.1 指令級並行 397
8.1.2 片內多執行緒 402
8.1.3 單片多處理器 406
8.2 協處理器 410
8.2.1 網路處理器 411
8.2.2 圖形處理器 416
8.2.3 加密處理器 418
8.3 共享記憶體的多處理器 418
8.3.1 多處理器與多計算機 418
8.3.2 記憶體語義 424
8.3.3 UMA對稱多處理器體系結構 426
8.3.4 NUMA多處理器系統 432
8.3.5 COMA多處理器系統 439
8.4 訊息傳遞的多計算機 440
8.4.1 網際網路 441
8.4.2 MPP——大規模並行處理器 443
8.4.3 集群計算 450
8.4.4 多計算機的通信軟體 454
8.4.5 調度 456
8.4.6 套用層的共享記憶體 457
8.4.7 性能 461
8.5 格線計算 465
8.6 小結 467
習題 468
參考文獻 471
附錄A 二進制數 479
附錄B 浮點數 487