第1章 概述 1
1.1 結構化計算機組成 1
1.1.1 語言、層次和虛擬機 1
1.1.2 現(xiàn)代多層次計算機 3
1.1.3 多層次計算機的演化 5
1.2 計算機體系結構的里程碑 8
1.2.1 第零代——機械計算機(1642—1945) 9
1.2.2 第一代——電子管計算機(1945—1955) 10
1.2.3 第二代——晶體管計算機(1955—1965) 12
1.2.4 第三代——集成電路計算機(1965—1980) 14
1.2.5 第四代——超大規(guī)模集成電路計算機(1980—?) 15
1.2.6 第五代——無所不在的計算機 17
1.3 計算機家族 17
1.3.1 技術和經濟的推動 17
1.3.2 計算機譜系 19
1.3.3 一次性計算機 19
1.3.4 微控制器 21
1.3.5 游戲機 22
1.3.6 個人計算機 22
1.3.7 服務器 23
1.3.8 工作站群集 23
1.3.9 大型機 24
1.4 系列計算機舉例 24
1.4.1 Pentium 4簡介 25
1.4.2 UltraSPARC III簡介 28
1.4.3 8051簡介 29
1.5 公制計量單位 31
1.6 本書概覽 32
習題 33
第2章 計算機系統(tǒng)組成 34
2.1 處理器 34
2.1.1 CPU的組成 35
2.1.2 指令執(zhí)行 36
2.1.3 RISC和CISC 38
2.1.4 現(xiàn)代計算機設計原則 39
2.1.5 指令級并行 40
2.1.6 處理器級并行 43
2.2 主存儲器 46
2.2.1 存儲位 46
2.2.2 內存編址 46
2.2.3 字節(jié)順序 47
2.2.4 糾錯碼 49
2.2.5 高速緩存 51
2.2.6 內存封裝及其類型 53
2.3 輔助存儲器 54
2.3.1 層次存儲結構 54
2.3.2 磁盤 55
2.3.3 軟盤 57
2.3.4 IDE盤 58
2.3.5 SCSI盤 59
2.3.6 RAID盤 60
2.3.7 只讀光盤 63
2.3.8 可刻光盤 66
2.3.9 可擦寫光盤 67
2.3.10 DVD 68
2.3.11 Blu-Ray 69
2.4 輸入/輸出設備 69
2.4.1 總線 69
2.4.2 終端 72
2.4.3 鼠標 75
2.4.4 打印機 76
2.4.5 通信設備 80
2.4.6 數(shù)碼相機 86
2.4.7 字符編碼 87
2.5 小結 90
習題 91
第3章 數(shù)字邏輯層 93
3.1 門和布爾代數(shù) 93
3.1.1 門 93
3.1.2 布爾代數(shù) 95
3.1.3 布爾函數(shù)的實現(xiàn) 96
3.1.4 等價電路 98
3.2 基本數(shù)字邏輯電路 100
3.2.1 集成電路 100
3.2.2 組合邏輯電路 102
3.2.3 算術電路 106
3.2.4 時鐘 109
3.3 內存 110
3.3.1 鎖存器 110
3.3.2 觸發(fā)器 112
3.3.3 寄存器 114
3.3.4 內存組成 114
3.3.5 內存芯片 117
3.3.6 RAM和ROM 119
3.4 CPU芯片和總線 121
3.4.1 CPU芯片 122
3.4.2 計算機總線 123
3.4.3 總線寬度 125
3.4.4 總線時鐘 126
3.4.5 總線仲裁 129
3.4.6 總線操作 132
3.5 CPU芯片舉例 133
3.5.1 Pentium 4 133
3.5.2 UltraSPARC III 138
3.5.3 8051芯片 141
3.6 總線舉例 143
3.6.1 ISA總線 144
3.6.2 PCI總線 145
3.6.3 PCI Express 151
3.6.4 通用串行總線 154
3.7 接口電路 157
3.7.1 輸入/輸出芯片 157
3.7.2 地址譯碼 158
3.8 小結 160
習題 161
第4章 微體系結構層 164
4.1 微體系結構舉例 164
4.1.1 數(shù)據(jù)通路 165
4.1.2 微指令 169
4.1.3 微指令控制:Mic-1 171
4.2 指令系統(tǒng)舉例:IJVM 174
4.2.1 棧 174
4.2.2 IJVM內存模型 176
4.2.3 IJVM指令集 177
4.2.4 將Java編譯為IJVM 180
4.3 實現(xiàn)舉例 181
4.3.1 微指令和符號 181
4.3.2 用Mic-1實現(xiàn)IJVM 185
4.4 微體系結構層設計 194
4.4.1 速度與價格 194
4.4.2 縮短指令執(zhí)行路徑長度 195
4.4.3 帶預取的設計:Mic-2 200
4.4.4 流水線設計:Mic-3 203
4.4.5 七段流水線設計:Mic-4 207
4.5 提高性能 209
4.5.1 高速緩存 210
4.5.2 分支預測 214
4.5.3 亂序執(zhí)行和寄存器重命名 218
4.5.4 推測執(zhí)行 222
4.6 微體系結構層舉例 223
4.6.1 Pentium 4 CPU的微體系結構 224
4.6.2 UltraSPARC III Cu CPU的微體系結構 228
4.6.3 8051 CPU的微體系結構 232
4.7 Pentium、UltraSPARC和8051三種CPU的比較 233
4.8 小結 234
習題 235
第5章 指令系統(tǒng)層 238
5.1 指令系統(tǒng)層概述 239
5.1.1 指令系統(tǒng)層的性質 239
5.1.2 存儲模式 240
5.1.3 寄存器 242
5.1.4 指令 243
5.1.5 Pentium 4指令系統(tǒng)層概述 243
5.1.6 UltraSPARC III指令系統(tǒng)層概述 245
5.1.7 8051指令系統(tǒng)層概述 248
5.2 數(shù)據(jù)類型 250
5.2.1 數(shù)值數(shù)據(jù)類型 250
5.2.2 非數(shù)值數(shù)據(jù)類型 251
5.2.3 Pentium 4的數(shù)據(jù)類型 251
5.2.4 UltraSPARC III的數(shù)據(jù)類型 252
5.2.5 8051的數(shù)據(jù)類型 252
5.3 指令格式 252
5.3.1 指令格式設計準則 253
5.3.2 擴展操作碼 255
5.3.3 Pentium 4指令格式 256
5.3.4 UltraSPARC III指令格式 257
5.3.5 8051指令格式 258
5.4 尋址 259
5.4.1 尋址方式 259
5.4.2 立即尋址 259
5.4.3 直接尋址 260
5.4.4 寄存器尋址 260
5.4.5 寄存器間接尋址 260
5.4.6 變址尋址 261
5.4.7 基址變址尋址 262
5.4.8 棧尋址 263
5.4.9 轉移指令的尋址方式 265
5.4.10 操作碼和尋址方式的關系 265
5.4.11 Pentium 4的尋址方式 267
5.4.12 UltraSPARC III的尋址方式 268
5.4.13 8051的尋址方式 269
5.4.14 尋址方式討論 269
5.5 指令類型 270
5.5.1 數(shù)據(jù)移動指令 270
5.5.2 雙操作數(shù)指令 271
5.5.3 單操作數(shù)指令 271
5.5.4 比較和條件轉移指令 273
5.5.5 過程調用指令 274
5.5.6 循環(huán)控制指令 275
5.5.7 輸入/輸出指令 275
5.5.8 Pentium 4指令系統(tǒng) 278
5.5.9 UltraSPARC III指令系統(tǒng) 280
5.5.10 8051指令系統(tǒng) 282
5.5.11 指令集比較 284
5.6 控制流 285
5.6.1 順序控制流和轉移 285
5.6.2 過程 286
5.6.3 協(xié)同過程 289
5.6.4 陷阱 290
5.6.5 中斷 291
5.7 詳細舉例:漢諾塔 294
5.7.1 Pentium 4匯編語言實現(xiàn)的漢諾塔 294
5.7.2 UltraSPARC III匯編語言實現(xiàn)的漢諾塔 296
5.8 IA-64體系結構和Itanium 2 297
5.8.1 Pentium 4的問題 298
5.8.2 IA-64模型:顯式并行指令計算 299
5.8.3 減少內存訪問 299
5.8.4 指令調度 300
5.8.5 減少條件轉移:判定 301
5.8.6 推測加載 303
5.9 小結 303
習題 304
第6章 操作系統(tǒng)層 308
6.1 虛擬內存 309
6.1.1 內存分頁 309
6.1.2 內存分頁的實現(xiàn) 310
6.1.3 請求調頁和工作集模型 313
6.1.4 頁置換策略 314
6.1.5 頁大小和碎片 315
6.1.6 分段 316
6.1.7 分段的實現(xiàn) 318
6.1.8 Pentium 4中的虛擬內存 320
6.1.9 UltraSPARC III的虛擬內存 323
6.1.10 虛擬內存和高速緩存 325
6.2 虛擬輸入/輸出指令 326
6.2.1 文件 326
6.2.2 虛擬輸入/輸出指令的實現(xiàn) 328
6.2.3 目錄管理指令 330
6.3 用于并行處理的虛擬指令 331
6.3.1 進程創(chuàng)建 331
6.3.2 競爭條件 332
6.3.3 使用信號量的進程同步 335
6.4 操作系統(tǒng)實例 338
6.4.1 簡介 338
6.4.2 虛擬內存實例 345
6.4.3 虛擬輸入/輸出舉例 347
6.4.4 進程管理實例 356
6.5 小結 360
習題 361
第7章 匯編語言層 365
7.1 匯編語言簡介 365
7.1.1 什么是匯編語言 365
7.1.2 為什么使用匯編語言 366
7.1.3 匯編語言語句的格式 368
7.1.4 偽指令 370
7.2 宏 372
7.2.1 宏定義、調用和擴展 372
7.2.2 帶參數(shù)的宏 373
7.2.3 高級特性 374
7.2.4 匯編器中宏處理的實現(xiàn) 374
7.3 匯編過程 375
7.3.1 兩趟匯編的匯編器 375
7.3.2 第一趟掃描 375
7.3.3 第二趟掃描 378
7.3.4 符號表 380
7.4 鏈接和加載 381
7.4.1 鏈接器的功能 382
7.4.2 目標模塊的結構 384
7.4.3 綁定時間和動態(tài)重定位 385
7.4.4 動態(tài)鏈接 387
7.5 小結 390
習題 390
第8章 并行計算機體系結構 393
8.1 片內并行 394
8.1.1 指令級并行 394
8.1.2 片內多線程 399
8.1.3 單片多處理器 403
8.2 協(xié)處理器 407
8.2.1 網絡處理器 407
8.2.2 媒體處理器 412
8.2.3 加密處理器 416
8.3 共享內存的多處理器 417
8.3.1 多處理器與多計算機 417
8.3.2 內存語義 423
8.3.3 UMA對稱多處理器體系結構 426
8.3.4 NUMA多處理器系統(tǒng) 432
8.3.5 COMA多處理器系統(tǒng) 438
8.4 消息傳遞的多計算機 439
8.4.1 互連網絡 440
8.4.2 MPP——大規(guī)模并行處理器 443
8.4.3 集群計算 450
8.4.4 多計算機的通信軟件 454
8.4.5 調度 456
8.4.6 應用層的共享內存 456
8.4.7 性能 462
8.5 網格計算 466
8.6 小結 468
習題 469
第9章 推薦讀物和參考文獻 471
9.1 推薦讀物 471
9.1.1 一般性和介紹性的讀物 471
9.1.2 計算機系統(tǒng)組成 472
9.1.3 數(shù)字邏輯層 473
9.1.4 微體系結構層 473
9.1.5 指令系統(tǒng)層 474
9.1.6 操作系統(tǒng)層 475
9.1.7 匯編語言層 475
9.1.8 并行計算機體系結構 475
9.1.9 二進制數(shù)和浮點數(shù) 477
9.1.10 匯編語言程序設計 477
9.2 參考文獻 478
附錄A 二進制數(shù) 490
附錄B 浮點數(shù) 499
附錄C 匯編語言程序設計 505