第0章 读者指南 1
0.1 本书概要 1
0.2 因特网和Web资源 1
第一部分 概述 4
第1章 导论 4
1.1 计算机组织与体系结构 4
1.2 结构和功能 5
1.2.1 功能 5
1.2.2 结构 6
1.3 为何要学习计算机组织和体系结构 8
第2章 计算机的演变和性能 10
2.1 计算机简史 10
2.1.1 第一代:真空管 10
2.1.2 第二代:晶体管 17
2.1.3 第三代:集成电路 19
2.1.4 后续的几代 24
2.2 性能设计 26
2.2.1 微处理器的速度 27
2.2.2 性能平衡 27
2.2.3 芯片组织和体系结构的改进 29
2.3 Pentium和PowerPC的进展 32
2.3.1 Pentium 32
2.3.2 PowerPC 33
2.4 推荐的参考文献和Web站点 34
2.5 关键词、思考题和习题 34
第二部分 计算机系统 41
第3章 计算机功能和互连的顶层视图 41
3.1 计算机的部件 41
3.2 计算机功能 43
3.2.1 指令的取和执行 44
3.2.2 中断 47
3.2.3 I/O功能 53
3.3 互连结构 54
3.4 总线互连 55
3.4.1 总线结构 56
3.4.2 多总线层次结构 57
3.4.3 总线设计要素 59
3.5 PCI 63
3.5.1 总线结构 63
3.5.2 PCI命令 67
3.5.3 数据传送 68
3.5.4 仲裁 70
3.6 推荐的参考文献和Web站点 72
3.7 关键词、思考题和习题 72
附录3A 时序图 76
第4章 Cache 78
4.1 计算机存储系统概述 78
4.1.1 存储系统的特性 78
4.1.2 存储器分层结构 80
4.2 Cache存储器原理 83
4.3 Cache的设计要素 86
4.3.1 Cache容量 86
4.3.2 映射功能 86
4.3.3 替换算法 94
4.3.4 写策略 95
4.3.5 行的大小 96
4.3.6 Cache数目 96
4.4 Pentium 4和PowerPC的Cache组织 98
4.4.1 Pentium 4的Cache组织 98
4.4.2 PowerPC的Cache组织 100
4.5 推荐的参考文献 101
4.6 关键词、思考题和习题 101
附录4A 两级存储器的性能特点 107
4A.1 局部性 107
4A.2 两级存储器的操作 110
4A.3 性能 110
第5章 内部存储器 114
5.1 半导体主存储器 114
5.1.1 组织 114
5.1.2 DRAM和SRAM 114
5.1.3 ROM类型 117
5.1.4 芯片逻辑 118
5.1.5 芯片封装 119
5.1.6 模块组织 120
5.2 纠错 122
5.3 高级DRAM组织 127
5.3.1 同步DRAM 127
5.3.2 rambus DRAM 129
5.3.3 DDR SDRAM 129
5.3.4 带Cache的DRAM 130
5.4 推荐的参考文献和Web站点 130
5.5 关键词、思考题和习题 131
第6章 外部存储器 135
6.1 磁盘 135
6.1.1 磁读写机制 135
6.1.2 数据组织和格式化 136
6.1.3 物理特性 138
6.1.4 磁盘性能参数 140
6.2 RAID(磁盘冗余阵列) 143
6.2.1 RAID 0级 144
6.2.2 RAID 1级 148
6.2.3 RAID 2级 149
6.2.4 RAID 3级 149
6.2.5 RAID 4级 150
6.2.6 RAID 5级 151
6.2.7 RAID 6级 151
6.3 光存储器 152
6.3.1 光盘 153
6.3.2 数字通用盘 155
6.4 磁带 156
6.5 推荐的参考文献和Web站点 158
6.6 关键词、思考题和习题 158
第7章 输入输出 161
7.1 外部设备 162
7.1.1 键盘/监视器 163
7.1.2 磁盘驱动器 164
7.2 I/O模块 166
7.2.1 模块功能 166
7.2.2 I/O模块结构 167
7.3 编程式I/O 168
7.3.1 概述 169
7.3.2 I/O命令 169
7.3.3 I/O指令 169
7.4 中断驱动式I/O 171
7.4.1 中断处理 172
7.4.2 设计问题 173
7.4.3 Intel 82C59A中断控制器 175
7.4.4 Intel 82C55A可编程外部接口 176
7.5 存储器直接存取(DMA) 178
7.5.1 编程式I/O和中断驱动式I/O的不足 178
7.5.2 DMA功能 179
7.5.3 Intel 8237A DMA控制器 181
7.6 I/O通道和处理器 183
7.6.1 I/O功能的演变 183
7.6.2 I/O通道的特性 183
7.7 外部接口:FireWire和InfiniBand 185
7.7.1 接口的类型 185
7.7.2 点对点和多点配置 186
7.7.3 FireWire串行总线 186
7.7.4 InfiniBand 190
7.8 推荐的参考文献和Web站点 193
7.9 关键词、思考题和习题 193
第8章 操作系统支持 198
8.1 操作系统概述 198
8.1.1 操作系统的目标和功能 198
8.1.2 操作系统的类型 200
8.2 调度 207
8.2.1 长期调度 207
8.2.2 中期调度 208
8.2.3 短期调度 208
8.3 存储管理 212
8.3.1 交换 212
8.3.2 分区 213
8.3.3 分页 215
8.3.4 虚拟存储器 216
8.3.5 转换后援缓冲器 218
8.3.6 分段 220
8.4 PentiumⅡ和PowerPC的存储管理 221
8.4.1 PentiumⅡ的存储管理硬件 221
8.4.2 PowerPC存储管理硬件 225
8.5 推荐的参考文献和Web站点 228
8.6 关键词、思考题和习题 229
第三部分 中央处理器 235
第9章 计算机算术 235
9.1 算术逻辑单元 235
9.2 整数表示 236
9.2.1 符号-幅值表示法 236
9.2.2 2的补码表示法 237
9.2.3 不同位长间的转换 239
9.2.4 定点表示法 241
9.3 整数算术 241
9.3.1 取负 241
9.3.2 加法和减法 242
9.3.3 乘法 244
9.3.4 除法 250
9.4 浮点表示 253
9.4.1 原理 253
9.4.2 二进制浮点表示的IEEE标准 256
9.5 浮点算术 258
9.5.1 浮点加法和减法 259
9.5.2 浮点乘法和除法 261
9.5.3 浮点运算的精度问题 263
9.5.4 二进制浮点算术的IEEE标准 264
9.6 推荐的参考文献和Web站点 266
9.7 关键词、思考题和习题 267
第10章 指令集:特征和功能 272
10.1 机器指令特征 272
10.1.1 机器指令要素 272
10.1.2 指令表示 273
10.1.3 指令类型 274
10.1.4 地址数目 275
10.1.5 指令集设计 277
10.2 操作数类型 277
10.2.1 数值 278
10.2.2 字符 278
10.2.3 逻辑数据 279
10.3 Pentium和PowerPC数据类型 279
10.3.1 Pentium数据类型 279
10.3.2 PowerPC数据类型 280
10.4 操作类型 281
10.4.1 数据传送类 283
10.4.2 算术运算类 284
10.4.3 逻辑运算类 285
10.4.4 转换类 287
10.4.5 输入输出类 288
10.4.6 系统控制类 288
10.4.7 控制传递类 288
10.5 Pentium和PowerPC操作类型 293
10.5.1 Pentium操作类型 293
10.5.2 PowerPC操作类型 300
10.6 汇编语言 301
10.7 推荐的参考文献 303
10.8 关键词、思考题和习题 303
附录10A 堆栈 309
10A.1 堆栈实现 310
10A.2 表示式求值 311
附录10B 小数在先和大数在先 314
10B.1 字节排序 314
10B.2 位排序 316
第11章 指令集:寻址方式和指令格式 317
11.1 寻址方式 317
11.1.1 立即寻址 319
11.1.2 直接寻址 319
11.1.3 间接寻址 319
11.1.4 寄存器寻址 320
11.1.5 寄存器间接寻址 320
11.1.6 偏移寻址 321
11.1.7 堆栈寻址 322
11.2 Pentium和PowerPC寻址方式 323
11.2.1 Pentium寻址方式 323
11.2.2 PowerPC寻址方式 325
11.3 指令格式 327
11.3.1 指令长度 327
11.3.2 位的分配 328
11.3.3 变长指令 331
11.4 Pentium和PowerPC指令格式 334
11.4.1 Pentium指令格式 334
11.4.2 PowerPC指令格式 336
11.5 推荐的参考文献 337
11.6 关键词、思考题和习题 338
第12章 CPU结构和功能 342
12.1 处理器组织 342
12.2 寄存器组织 344
12.2.1 用户可见寄存器 344
12.2.2 控制和状态寄存器 346
12.2.3 微处理器寄存器组织的例子 347
12.3 指令周期 349
12.3.1 间址周期 349
12.3.2 数据流 350
12.4 指令流水 352
12.4.1 流水线策略 352
12.4.2 流水线的性能 356
12.4.3 转移处理 357
12.4.4 Intel 80486的流水线 363
12.5 Pentium处理器 364
12.5.1 寄存器组织 364
12.5.2 MMX寄存器 368
12.5.3 中断处理 369
12.6 PowerPC处理器 371
12.6.1 寄存器组织 371
12.6.2 中断处理 374
12.7 推荐的参考文献 377
12.8 关键词、思考题和习题 377
第13章 精简指令集计算机 382
13.1 指令执行特征 383
13.1.1 操作 384
13.1.2 操作数 385
13.1.3 过程调用 385
13.1.4 结论 386
13.2 大寄存器组方案的使用 386
13.2.1 寄存器窗口 387
13.2.2 全局变量 389
13.2.3 大寄存器组与Cache的对比 389
13.3 基于编译器的寄存器优化 391
13.4 精简指令集体系结构 392
13.4.1 CISC的理由 392
13.4.2 精简指令集体系结构特征 394
13.4.3 CISC与RISC特征对比 395
13.5 RISC流水线技术 397
13.5.1 规整指令的流水线技术 397
13.5.2 流水线的优化 398
13.6 MIPS R4000 400
13.6.1 指令集 400
13.6.2 指令流水线 403
13.7 SPARC 406
13.7.1 SPARC寄存器组 406
13.7.2 指令集 408
13.7.3 指令格式 409
13.8 RISC与CISC的争论 411
13.9 推荐的参考文献 411
13.10 关键词、思考题和习题 412
第14章 指令级并行性和超标量处理器 416
14.1 概述 416
14.1.1 超标量与超级流水线 417
14.1.2 限制 418
14.2 设计考虑 421
14.2.1 指令级并行性和机器并行性 421
14.2.2 指令发射策略 421
14.2.3 寄存器重命名 424
14.2.4 机器并行性 425
14.2.5 转移预测 426
14.2.6 超标量执行 427
14.2.7 超标量实现 427
14.3 Pentium 4 428
14.3.1 由前端到跟踪Cache 429
14.3.2 无序执行逻辑 434
14.3.3 整数和浮点执行单元 435
14.4 PowerPC 435
14.4.1 PowerPC 601 435
14.4.2 转移处理 439
14.4.3 PowerPC 620 439
14.5 推荐的参考文献 441
14.6 关键词、思考题和习题 442
第15章 IA-64体系结构 447
15.1 推动因素 447
15.2 通常组织 449
15.3 判定、推测和软件流水 450
15.3.1 指令格式 450
15.3.2 汇编语言格式 452
15.3.3 判定执行 453
15.3.4 控制推测 457
15.3.5 数据推测 461
15.3.6 软件流水 462
15.4 IA-64指令级体系结构 465
15.4.1 寄存器堆栈 467
15.4.2 当前栈帧标示器和先前功能状态寄存器 468
15.5 Itanium处理器组织 469
15.6 推荐的参考文献和Web站点 472
15.7 关键词、思考题和习题 472
第四部分 控制器 478
第16章 控制器操作 478
16.1 微操作 479
16.1.1 指令周期的子周期 479
16.1.2 指令周期 483
16.2 处理器控制 484
16.2.1 功能需求 484
16.2.2 控制信号 485
16.2.3 控制信号举例 486
16.2.4 处理器内部组织 488
16.2.5 Intel 8085 489
16.3 硬连线实现 493
16.3.1 控制器输入 493
16.3.2 控制器逻辑 494
16.4 推荐的参考文献 495
16.5 关键词、思考题和习题 495
第17章 微程序式控制 497
17.1 基本概念 497
17.1.1 微指令 497
17.1.2 微程序式控制器 499
17.1.3 Wilkes控制 501
17.1.4 优缺点 505
17.2 微指令排序 505
17.2.1 设计考虑 505
17.2.2 排序技术 505
17.2.3 地址生成 508
17.2.4 LSI-11微指令排序 508
17.3 微指令执行 509
17.3.1 微指令分类法 510
17.3.2 微指令编码 512
17.3.3 LSI-11微指令执行 513
17.3.4 IBM 3033微指令执行 518
17.4 TI8800 519
17.4.1 微指令格式 519
17.4.2 微顺序器 522
17.4.3 寄存器式ALU 525
17.5 推荐的参考文献 527
17.6 关键词、思考题和习题 527
第五部分 并行处理的组织 532
第18章 并行处理 532
18.1 多处理机组织 533
18.1.1 并行处理机系统类型 533
18.1.2 并行组织 533
18.2 对称多处理机 535
18.2.1 组织 535
18.2.2 多处理机操作系统设计考虑 538
18.2.3 大型机SMP 538
18.3 cache一致性和MESI协议 540
18.3.1 软件解决方案 541
18.3.2 硬件解决方案 541
18.3.3 MESI协议 543
18.4 多线程化和芯片多处理器 546
18.4.1 隐式和显式多线程化 546
18.4.2 显式多线程化的方法 547
18.4.3 实例系统 550
18.5 机群系统 552
18.5.1 机群系统配置 552
18.5.2 操作系统设计问题 554
18.5.3 机群计算机体系结构 555
18.5.4 机群系统与SMP的对比 557
18.6 非均匀存储器存取 557
18.6.1 推动因素 557
18.6.2 组织 558
18.6.3 NUMA的赞成票和反对票 559
18.7 向量计算 560
18.7.1 向量计算方法 561
18.7.2 IBM 3090 向量设备 565
18.8 推荐的参考文献和Web站点 571
18.9 关键词、思考题和习题 572
附录A 计算机组织与体系结构课题 578
A.1 研究性课题 578
A.2 仿真性课题 578
A.2.1 SimpleScalar 579
A.2.2 SMPCache 579
A.3 阅读/报告类题目 579
参考文献 580