第一部分 概述 1
第1章 导论 2
1.1 计算机组织和体系结构 2
1.2 结构和功能 3
1.2.1 功能 3
1.2.2 结构 4
1.3 本书内容的组织 8
1.4 因特网和万维网资源 10
第2章 计算机的演变和性能 12
2.1 计算机简史 12
2.1.1 第一代:真空管 12
2.1.2 第二代:晶体管 18
2.1.3 第三代:集成电路 19
2.1.4 以后的几代 24
2.2 性能设计 27
2.2.1 微处理器的速度 28
2.2.2 性能平衡 28
2.3 Pentium和PowerPC的进展 30
2.3.1 Pentium 30
2.3.2 PowerPC 31
2.4 参考文献和Web站点 32
2.5 习题 33
第二部分 计算机系统 35
3.1 计算机的部件 36
第3章 系统总线 36
3.2 计算机功能 38
3.2.1 取指周期和执行周期 39
3.2.2 I/O功能 48
3.3 互连结构 48
3.4 总线互连 50
3.4.1 总线结构 50
3.4.2 多总线分级结构 51
3.4.3 总线设计的要素 53
3.5 PCI 57
3.5.1 总线结构 57
3.5.2 PCI命令 60
3.5.3 数据传送 61
3.5.4 仲裁 63
3.6 参数文献和Web站点 64
3.7 习题 65
附录3A 时序图 67
第4章 内部存储器 68
4.1 计算机存储系统概述 68
4.1.1 存储系统的特性 68
4.1.2 存储器分层结构 70
4.2 半导体主存储器 73
4.2.1 半导体随机存储器分类 73
4.2.3 芯片逻辑 75
4.2.2 组织 75
4.2.4 芯片封装 77
4.2.5 模块组织 78
4.2.6 纠错 79
4.3 Cache存储器 83
4.3.1 原理 83
4.3.2 Cache的设计要素 85
4.4 Pentium Ⅱ和PowerPC的Cache组织 94
4.4.1 Pentium Ⅱ的Cache组织 94
4.4.2 PowerPC的Cache结构 97
4.5.1 增强型DRAM 98
4.5 高级DRAM结构 98
4.5.2 带Cache的DRAM 99
4.5.3 同步DRAM 99
4.5.4 Rambus DRAM 99
4.5.5 RamLink 100
4.6 参考文献和Web站点 102
4.7 习题 102
附录4A 两级存储器的性能特点 105
4A.1 局部性 105
4A.2 局部存储器的操作 107
4A.3 性能 107
5.1 磁盘 111
5.1.1 数据组织和格式化 111
第5章 外部存储器 111
5.1.2 物理特性 113
5.1.3 磁盘性能参数 115
5.2 RAID(磁盘冗余阵列) 117
5.2.1 RAID 0级 118
5.2.2 RAID 1级 122
5.2.3 RAID 2级 122
5.2.4 RAID 3级 123
5.2.5 RAID 4级 123
5.2.7 RAID 6级 124
5.3 光存储器 124
5.2.6 RAID 5级 124
5.3.1 CD-ROM 125
5.3.2 WORM(一写多读光盘) 127
5.3.3 可擦光盘 127
5.3.4 DVD 128
5.3.5 光-磁盘 128
5.4 磁带 128
5.5 参考文献和Web站点 129
5.6 习题 129
第6章 输入/输出 131
6.1 外部设备 131
6.1.1 键盘/显示器 133
6.1.2 磁盘驱动器 133
6.2.1 模块功能 135
6.2 I/O模块 135
6.2.2 I/O模块结构 136
6.3 编程控制的I/O 137
6.3.1 概述 138
6.3.2 I/O命令 138
6.3.3 I/O指令 138
6.4 中断驱动的I/O 140
6.4.1 中断处理 141
6.4.2 设计问题 142
6.4.3 Intel 82C59A中断控制器 144
6.4.4 Intel 82C55A可编程外部接口 144
6.5.1 编程控制的I/O和中断驱动I/O的不足 146
6.5 存储器直接存取(DMA) 146
6.5.2 DMA功能 148
6.6 I/O通道和处理器 150
6.6.1 I/O功能的演变 150
6.6.2 I/O通道的特性 150
6.7 外部接口:SCSI和FireWire 151
6.7.1 接口的类型 151
6.7.2 点对点和多点配置 152
6.7.3 小型计算机系统接口(SCSI) 152
6.7.4 FireWire串行总线 158
6.8 参考文献和Web站点 162
6.9 习题 163
7.1.1 操作系统的目标和功能 166
第7章 操作系统支持 166
7.1 操作系统概述 166
7.1.2 操作系统的类型 168
7.2 调度 175
7.2.1 长项调度 176
7.2.2 中项调度 176
7.2.3 短项调度 176
7.3 存储管理 180
7.3.1 交换 180
7.3.2 分区 181
7.3.3 分页 183
7.3.4 虚拟存储器 185
7.3.5 分段 188
7.4 Pentium Ⅱ和PowerPC的存储管理 189
7.4.1 Pentium Ⅱ的存储管理硬件 189
7.4.2 PowerPC存储管理硬件 191
7.5 参考文献和Web站点 195
7.6 习题 196
第三部分 中央处理器 199
第8章 计算机算法 200
8.1 算术和逻辑单元(ALU) 200
8.2 整数表示 201
8.2.1 符号-幅值表示法 201
8.2.2 2的补码表示法 202
8.2.3 不同位长间的转换 204
8.2.4 定点表示法 205
8.3 整数算术运算 205
8.3.1 取负 206
8.3.2 乘法 208
8.3.3 除法 215
8.4 浮点表示 218
8.4.1 原理 218
8.4.2 二进制浮点表示的IEEE标准 221
8.5 浮点算术运算 222
8.5.1 浮点加法和减法 223
8.5.2 浮点乘法和除法 225
8.5.3 浮点运算的精度问题 226
8.5.4 二进制浮点算术的IEEE标准 228
8.6 参考文献和Web站点 230
8.7 习题 230
附录8A 数值系统 232
8A.1 十进制系统 232
8A.2 二进制系统 233
8A.3 二进制与十进制间的转换 234
8A.4 十六进制表示法 236
第9章 指令集:特征和功能 238
9.1 机器指令特征 238
9.1.1 机器指令要素 238
9.1.2 指令表示 239
9.1.3 指令类型 240
9.1.4 地址数目 241
9.1.5 指令集设计 243
9.2 操作数类型 243
9.2.1 数值 243
9.2.2 字符 244
9.2.3 逻辑数据 244
9.3 Pentium Ⅱ和PowerPC数据类型 245
9.3.1 Pentium Ⅱ数据类型 245
9.3.2 PowerPC数据类型 245
9.4 操作类型 247
9.4.1 数据传送类 248
9.4.3 逻辑类 249
9.4.2 算术运算类 249
9.4.4 转换类 251
9.4.5 输入/输出类 252
9.4.6 系统控制类 252
9.4.7 控制传递类 252
9.5 Pentium Ⅱ和PowerPC操作类型 257
9.5.1 Pentium Ⅱ操作类型 257
9.5.2 PowerPC操作类型 262
9.6 汇编语言 264
9.7 参考文献 265
9.8 习题 266
附录9A 堆栈 269
9A.1 堆栈实现 270
9A.2 表示式求值 271
附录9B 小端和大端次序以及位序 273
9B.1 字节排序 273
9B.2 位排序 276
第10章 指令集:寻址方式和指令格式 277
10.1 寻址方式 277
10.1.1 立即寻址 279
10.1.2 直接寻址 279
10.1.3 间接寻址 279
10.1.5 寄存器间接寻址 280
10.1.6 偏移寻址 280
10.1.4 寄存器寻址 280
10.1.7 堆栈寻址 282
10.2 Pentium和PowerPC寻址方式 282
10.2.1 Pentium Ⅱ寻址方式 282
10.2.2 PowerPC寻址方式 284
10.3 指令格式 286
10.3.1 指令长度 286
10.3.2 位的分配 287
10.3.3 可变长指令 290
10.4 Pentium和PowerPC指令格式 292
10.4.1 Pentium Ⅱ指令格式 292
10.4.2 PowerPC指令格式 294
10.6 习题 296
10.5 参考文献 296
第11章 CPU结构和功能 298
11.1 处理器组织 298
11.2 寄存器组织 300
11.2.1 用户可见寄存器 300
11.2.2 控制和状态寄存器 301
11.2.3 微处理器寄存器组织的例子 302
11.3 指令周期 304
11.3.1 间址周期 304
11.3.2 数据流 305
11.4 指令流水 307
11.4.1 流水线策略 307
11.4.2 流水线的性能 310
11.4.3 转移处理 312
11.4.4 Intel 80486的流水线 317
11.5 Pentium处理器 318
11.5.1 寄存器组织 318
11.5.2 MMX寄存器 322
11.5.3 中断处理 322
11.6 PowerPC处理器 325
11.6.1 寄存器组织 325
11.6.2 中断处理 327
11.7 参考文献 329
11.8 习题 330
第12章 精简指令集计算机 332
12.1 指令执行特征 333
12.1.1 操作 334
12.1.2 操作数 334
12.1.3 过程调用 335
12.1.4 结论 335
12.2 大寄存器方案的使用 336
12.2.1 寄存器窗口 336
12.2.2 全局变量 338
12.2.3 大寄存器集与Cache的对比 338
12.3 基于编译器的寄存器优化 339
12.4.1 CISC的理由 341
12.4 精简指令集结构 341
12.4.2 精简指令集结构特征 342
12.4.3 CISC与RISC特征对比 344
12.5 RISC流水线技术 345
12.5.1 规整指令的流水线技术 345
12.5.2 流水线的优化 347
12.6 MIPS R4000 348
12.6.1 指令集 349
12.6.2 指令流水线 351
12.7 SPARC 354
12.7.1 SPARC寄存器组 354
12.7.2 指令集 354
12.7.3 指令格式 357
12.8 RISC与CISC的争论 358
12.9 参考文献 359
12.10 习题 360
第13章 超标量处理器 363
13.1 概述 363
13.1.1 超标量与超级流水线 364
13.1.2 限制 364
13.2 设计考虑 367
13.2.1 指令级并行性和机器并行性 367
13.2.2 指令发射策略 368
13.2.3 寄存器重命名 370
13.2.4 机器并行性 371
13.2.5 转移预测 372
13.2.6 超标量执行 372
13.2.7 超标量实现 373
13.3 Pentium Ⅱ 373
13.3.1 取指令和译码单元 374
13.3.2 重排序缓冲器 376
13.3.3 派遣/执行单元 376
13.3.4 回收单元 377
13.3.5 转移预测 377
13.4 PowerPC 378
13.4.1 PowerPC 601 378
13.4.2 转移处理 381
13.4.3 PowerPC 620 383
13.5 MIPS R10000 384
13.6 UltraSPARC Ⅱ 385
13.6.1 内部组织 385
13.6.2 流水线 386
13.7 IA-64/Pentium 387
13.7.1 推动因素 388
13.7.2 组织 389
13.7.3 指令格式 390
13.7.4 断定执行 390
13.7.5 推测装入 394
13.8 参考文献和Web站点 396
13.9 习题 398
第四部分 控制器 403
第14章 控制器操作 404
14.1 微操作 404
14.1.1 指令周期的子周期 405
14.1.2 指令周期 409
14.2 CPU控制 410
14.2.1 功能需求 410
14.2.2 控制信号 411
14.2.3 控制信号举例 412
14.2.4 CPU内部组织 413
14.2.5 Intel 8085 414
14.3.1 控制器输入 419
14.3 硬线式实现 419
14.3.2 控制器逻辑 420
14.4 参考文献 421
14.5 习题 421
第15章 微程序式控制 422
15.1 基本概念 422
15.1.1 微指令 422
15.1.2 微程序式控制器 424
15.1.3 Wilkes控制 425
15.1.4 优缺点 429
15.2 微指令排序 429
15.2.1 设计考虑 429
15.2.2 排序技术 430
15.2.3 地址生成 431
15.2.4 LSI-11微指令排序 433
15.3 微指令执行 434
15.3.1 微指令分类法 435
15.3.2 微指令编码 437
15.3.3 LSI-11微指令执行 438
15.3.4 IBM 3033微指令执行 441
15.4 TI 8800 443
15.4.1 微指令格式 444
15.4.2 微顺序器 446
15.4.3 带寄存器的ALU 449
15.5 微程序应用 451
15.6 参考文献 452
15.7 习题 453
第五部分 并行处理的组织 455
第16章 并行处理 456
16.1 多处理器组织 456
16.1.1 并行处理器系统类型 456
16.1.2 并行组织 458
16.2 对称多处理器 458
16.2.1 组织 460
16.2.2 多处理器操作系统设计考虑 463
16.2.3 大型机SMP 463
16.3.2 硬件解决方案 466
16.3 Cache一致性和MESI协议 466
16.3.1 软件解决方案 466
16.3.3 MESI协议 468
16.4 机群系统 470
16.4.1 机群系统配置 470
16.4.2 操作系统设计问题 472
16.4.3 机群系统与SMP的对比 473
16.5 非对称存储器存取 473
16.5.1 推动因素 474
16.5.2 组织 474
16.5.3 NUMA的赞成票和反对票 475
16.6.1 向量计算方法 476
16.6 向量计算 476
16.6.2 IBM 3090向量机构 481
16.7 参考文献 486
16.8 习题 487
附录A 数字逻辑 490
A.1 布尔代数 490
A.2 门 491
A.3 组合电路 494
A.3.1 布尔函数实现 494
A.3.2 “与非门”和“或非门”的实现 501
A.3.3 多路选择器 502
A.3.4 译码器 503
A.3.5 可编程逻辑阵列(PLA) 505
A.3.6 只读存储器 507
A.3.7 加法器 508
A.4 时序电路 511
A.4.1 触发器 511
A.4.2 寄存器 514
A.4.3 计数器 515
A.5 习题 518
附录B 计算机组织与结构课题 521
B.1 研究性课题 521
B.2 仿真性课题 521
B.3 阅读/报告类题目 522
词汇表 523