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
附錄C 匯編語言程序設計 493
索引 534
· · · · · · (
收起)