第0章 读者指南 1
0.1 本书概要 1
0.2 导读 1
0.3 为何要学习计算机组成和体系结构 1
0.4 因特网与Web资源 2
0.4.1 本书的Web站点 2
0.4.2 其他Web站点 3
0.4.3 USENET新闻组 3
第一部分 概论 6
第1章 导论 6
1.1 计算机组成与体系结构 6
1.2 结构和功能 7
1.2.1 功能 7
1.2.2 结构 8
1.3 关键词和思考题 9
第2章 计算机的演变和性能 10
2.1 计算机简史 10
2.1.1 第一代:真空管 10
2.1.2 第二代:晶体管 15
2.1.3 第三代:集成电路 16
2.1.4 后续几代 20
2.2 性能设计 22
2.2.1 微处理器的速度 23
2.2.2 性能平衡 23
2.2.3 芯片组成和体系结构的改进 25
2.3 Intel x86体系结构的进展 26
2.4 嵌入式系统和ARM 27
2.4.1 嵌入式系统 27
2.4.2 ARM的进展 29
2.5 性能评价 30
2.5.1 时钟速度和每秒指令数 30
2.5.2 基准程序 32
2.5.3 阿姆达尔定律 34
2.6 推荐的读物和Web站点 35
2.7 关键词、思考题和习题 36
第二部分 计算机系统 42
第3章 计算机功能和互连的顶层视图 42
3.1 计算机的部件 42
3.2 计算机的功能 44
3.2.1 指令的读取和执行 44
3.2.2 中断 46
3.2.3 I/O功能 51
3.3 互连结构 51
3.4 总线互连 52
3.4.1 总线结构 52
3.4.2 多总线层次结构 54
3.4.3 总线的设计要素 55
3.5 PCI 58
3.5.1 总线结构 58
3.5.2 PCI命令 61
3.5.3 数据传送 62
3.5.4 仲裁 63
3.6 推荐的读物和Web站点 64
3.7 关键词、思考题和习题 64
附录3A 时序图 67
第4章 cache存储器 69
4.1 计算机存储系统概述 69
4.1.1 存储系统的特性 69
4.1.2 存储器层次结构 71
4.2 cache存储器原理 73
4.3 cache的设计要素 75
4.3.1 cache地址 75
4.3.2 cache容量 76
4.3.3 映射功能 77
4.3.4 替换算法 85
4.3.5 写策略 85
4.3.6 行大小 86
4.3.7 cache数目 86
4.4 Pentium 4的cache组织 88
4.5 ARM的cache组织 90
4.6 推荐的读物 91
4.7 关键词、思考题和习题 91
附录4A 两级存储器的性能特点 95
第5章 内部存储器 100
5.1 半导体主存储器 100
5.1.1 组织 100
5.1.2 DRAM和SRAM 100
5.1.3 ROM类型 102
5.1.4 芯片逻辑 103
5.1.5 芯片封装 104
5.1.6 模块组织 105
5.1.7 多体交叉存储器 106
5.2 纠错 107
5.3 高级DRAM组织 110
5.3.1 同步DRAM 111
5.3.2 Rambus DRAM 112
5.3.3 DDR DRAM 113
5.3.4 cache DRAM 114
5.4 推荐的读物和Web站点 114
5.5 关键词、思考题和习题 115
第6章 外部存储器 118
6.1 磁盘 118
6.1.1 磁读写机制 118
6.1.2 数据组织和格式化 119
6.1.3 物理特性 121
6.1.4 磁盘性能参数 122
6.2 RAID 124
6.2.1 RAID 0级 125
6.2.2 RAID 1级 128
6.2.3 RAID 2级 128
6.2.4 RAID 3级 128
6.2.5 RAID 4级 129
6.2.6 RAID 5级 130
6.2.7 RAID 6级 130
6.3 光存储器 131
6.3.1 光盘 131
6.3.2 数字多功能光盘 133
6.3.3 高清晰光盘 134
6.4 磁带 135
6.5 推荐的读物和Web站点 136
6.6 关键词、思考题和习题 137
第7章 输入/输出 140
7.1 外部设备 140
7.1.1 键盘/监视器 141
7.1.2 磁盘驱动器 142
7.2 I/O模块 142
7.2.1 模块功能 142
7.2.2 I/O模块结构 143
7.3 编程式I/O 143
7.3.1 编程式I/O概述 144
7.3.2 I/O命令 144
7.3.3 I/O指令 144
7.4 中断驱动式I/O 146
7.4.1 中断处理 146
7.4.2 设计问题 148
7.4.3 Intel 82C59A中断控制器 149
7.4.4 Intel 82C55A可编程外部接口 150
7.5 直接存储器存取 151
7.5.1 编程式I/O和中断驱动式I/O的缺点 151
7.5.2 DMA功能 151
7.5.3 Intel 8237A DMA控制器 153
7.6 I/O通道和处理器 155
7.6.1 I/O功能的演变 155
7.6.2 I/O通道的特点 155
7.7 外部接口:FireWire和InfiniBand 156
7.7.1 接口类型 156
7.7.2 点对点和多点配置 156
7.7.3 FireWire串行总线 157
7.7.4 InfiniBand 159
7.8 推荐的读物和Web站点 162
7.9 关键词、思考题和习题 162
第8章 操作系统支持 166
8.1 操作系统概述 166
8.1.1 操作系统的目标与功能 166
8.1.2 操作系统的类型 168
8.2 调度 173
8.2.1 长期调度 173
8.2.2 中期调度 173
8.2.3 短期调度 173
8.3 存储器管理 176
8.3.1 交换 177
8.3.2 分区 177
8.3.3 分页 179
8.3.4 虚拟存储器 180
8.3.5 快表 182
8.3.6 分段 183
8.4 Pentium存储器管理 184
8.4.1 地址空间 184
8.4.2 分段 184
8.4.3 分页 186
8.5 ARM存储器管理 187
8.5.1 存储器系统组织 187
8.5.2 虚拟存储器地址转换 187
8.5.3 存储器管理格式 189
8.5.4 存取控制 190
8.6 推荐的读物和Web站点 191
8.7 关键词、思考题和习题 191
第三部分 中央处理器 196
第9章 计算机算术 196
9.1 算术逻辑单元 196
9.2 整数表示 196
9.2.1 符号-幅值表示法 197
9.2.2 2的补码表示法 197
9.2.3 不同位长间的转换 199
9.2.4 定点表示法 200
9.3 整数算术 200
9.3.1 取负 200
9.3.2 加法和减法 201
9.3.3 乘法 203
9.3.4 除法 207
9.4 浮点表示 208
9.4.1 原理 208
9.4.2 二进制浮点表示的IEEE标准 211
9.5 浮点算术 212
9.5.1 浮点加法和减法 213
9.5.2 浮点乘法和除法 214
9.5.3 精度考虑 215
9.5.4 二进制浮点算术的IEEE标准 216
9.6 推荐的读物和Web站点 218
9.7 关键词、思考题和习题 219
第10章 指令集:特征和功能 222
10.1 机器指令特征 222
10.1.1 机器指令要素 222
10.1.2 指令表示 223
10.1.3 指令类型 224
10.1.4 地址数目 225
10.1.5 指令集设计 226
10.2 操作数类型 226
10.2.1 数值 227
10.2.2 字符 227
10.2.3 逻辑数据 228
10.3 Intel x86和ARM数据类型 228
10.3.1 x86数据类型 228
10.3.2 ARM数据类型 229
10.4 操作类型 230
10.4.1 数据传送 232
10.4.2 算术运算 233
10.4.3 逻辑运算 233
10.4.4 转换 234
10.4.5 输入/输出 235
10.4.6 系统控制 235
10.4.7 控制转移 235
10.5 Intel x86和ARM操作类型 238
10.5.1 x86操作类型 238
10.5.2 ARM操作类型 244
10.6 推荐的读物 246
10.7 关键词、思考题和习题 246
附录10A 栈 250
附录10B 小端、大端和双端 253
第11章 指令集:寻址方式和指令格式 256
11.1 寻址方式 256
11.1.1 立即寻址 257
11.1.2 直接寻址 257
11.1.3 间接寻址 257
11.1.4 寄存器寻址 258
11.1.5 寄存器间接寻址 258
11.1.6 偏移寻址 258
11.1.7 栈寻址 260
11.2 x86和ARM寻址方式 260
11.2.1 x86寻址方式 260
11.2.2 ARM寻址方式 262
11.3 指令格式 264
11.3.1 指令长度 264
11.3.2 位的分配 265
11.3.3 变长指令 267
11.4 x86和ARM指令格式 269
11.4.1 x86指令格式 269
11.4.2 ARM指令格式 271
11.5 汇编语言 272
11.6 推荐的读物 274
11.7 关键词、思考题和习题 274
第12章 CPU结构和功能 277
12.1 CPU组成 277
12.2 寄存器组成 278
12.2.1 用户可见寄存器 278
12.2.2 控制和状态寄存器 280
12.2.3 微处理器寄存器组成的例子 281
12.3 指令周期 282
12.3.1 间接周期 282
12.3.2 数据流 283
12.4 指令流水线技术 283
12.4.1 流水线策略 284
12.4.2 流水线性能 286
12.4.3 流水线冒险 288
12.4.4 处理分支指令 289
12.4.5 Intel 80486的流水线 292
12.5 x86系列处理器 293
12.5.1 寄存器组成 294
12.5.2 中断处理 298
12.6 ARM处理器 299
12.6.1 处理器组成 300
12.6.2 处理器模式 301
12.6.3 寄存器组成 301
12.6.4 中断处理 303
12.7 推荐的读物 304
12.8 关键词、思考题和习题 304
第13章 精简指令集计算机 308
13.1 指令执行特征 309
13.1.1 操作 309
13.1.2 操作数 310
13.1.3 过程调用 311
13.1.4 推论 311
13.2 大寄存器组方案的使用 311
13.2.1 寄存器窗口 312
13.2.2 全局变量 313
13.2.3 大寄存器组与高速缓存的对比 313
13.3 基于编译器的寄存器优化 314
13.4 精简指令集体系结构 315
13.4.1 采用CISC的理由 315
13.4.2 精简指令集体系结构特征 317
13.4.3 CISC与RISC特征对比 318
13.5 RISC流水线技术 319
13.5.1 使用规整指令的流水线技术 319
13.5.2 流水线的优化 320
13.6 MIPS R4000 322
13.6.1 指令集 322
13.6.2 指令流水线 324
13.7 SPARC 327
13.7.1 SPARC寄存器组 327
13.7.2 指令集 328
13.7.3 指令格式 329
13.8 RISC与CISC的争论 330
13.9 推荐的读物 331
13.10 关键词、思考题和习题 331
第14章 指令级并行性和超标量处理器 335
14.1 概述 335
14.1.1 超标量与超级流水线的对比 336
14.1.2 限制 337
14.2 设计考虑 338
14.2.1 指令级并行性和机器并行性 338
14.2.2 指令发射策略 339
14.2.3 寄存器重命名 341
14.2.4 机器并行性 342
14.2.5 分支预测 342
14.2.6 超标量执行 343
14.2.7 超标量实现 343
14.3 Pentium 4 343
14.3.1 前端 347
14.3.2 乱序执行逻辑 348
14.3.3 整数和浮点执行单元 349
14.4 ARM CORTEX-A8 349
14.4.1 指令取指单元 349
14.4.2 指令译码单元 351
14.4.3 整数执行单元 353
14.4.4 SIMD和浮点流水线 354
14.5 推荐的读物 355
14.6 关键词、思考题和习题 356
第四部分 控制器 362
第15章 控制器操作 362
15.1 微操作 362
15.1.1 取指周期 363
15.1.2 间接周期 364
15.1.3 中断周期 365
15.1.4 执行周期 365
15.1.5 指令周期 366
15.2 处理器控制 367
15.2.1 功能需求 367
15.2.2 控制信号 367
15.2.3 控制信号举例 368
15.2.4 处理器内部的组织 369
15.2.5 Intel 8085 370
15.3 硬布线实现 373
15.3.1 控制器输入 373
15.3.2 控制器逻辑 374
15.4 推荐的读物 374
15.5 关键词、思考题和习题 375
第16章 微程序控制 376
16.1 基本概念 376
16.1.1 微指令 376
16.1.2 微程序控制器 378
16.1.3 Wilkes控制 379
16.1.4 优缺点 382
16.2 微指令定序 382
16.2.1 设计考虑 382
16.2.2 定序技术 382
16.2.3 地址生成 384
16.2.4 LSI-11微指令定序 384
16.3 微指令执行 385
16.3.1 微指令的分类法 385
16.3.2 微指令编码 387
16.3.3 LSI-11微指令执行 388
16.3.4 IBM 3033微指令执行 390
16.4 TI 8800 391
16.4.1 微指令格式 391
16.4.2 微定序器 393
16.4.3 寄存器式ALU 395
16.5 推荐的读物 397
16.6 关键词、思考题和习题 397
第五部分 并行组织 400
第17章 并行处理 400
17.1 多处理器组织 401
17.1.1 并行处理器系统的类型 401
17.1.2 并行组织 402
17.2 对称多处理器 402
17.2.1 组织 403
17.2.2 多处理器操作系统设计考虑 405
17.2.3 大型机SMP 405
17.3 cache一致性和MESI协议 407
17.3.1 软件解决方案 408
17.3.2 硬件解决方案 408
17.3.3 MESI协议 409
17.4 多线程和片上多处理器 411
17.4.1 隐式和显式多线程 412
17.4.2 显式多线程的方式 413
17.4.3 示例系统 415
17.5 集群 416
17.5.1 集群配置 417
17.5.2 操作系统设计问题 418
17.5.3 集群计算机体系结构 419
17.5.4 刀片服务器 420
17.5.5 集群与SMP的对比 421
17.6 非均匀存储器访问 421
17.6.1 动机 421
17.6.2 组织 422
17.6.3 NUMA的优缺点 423
17.7 向量计算 424
17.7.1 向量计算的方法 424
17.7.2 IBM 3090向量机制 427
17.8 推荐的读物和Web站点 432
17.9 关键词、思考题和习题 433
第18章 多核计算机 437
18.1 硬件性能问题 437
18.1.1 增加并行 437
18.1.2 功耗 439
18.2 软件性能问题 440
18.2.1 多核软件 440
18.2.2 应用实例:Valve游戏软件 441
18.3 多核组织结构 442
18.4 Intel x86多核结构 443
18.4.1 Intel Core Duo 443
18.4.2 Intel Core i7 445
18.5 ARM11 MPCore 445
18.5.1 中断处理 446
18.5.2 cache一致性 448
18.6 推荐的读物和Web站点 448
18.7 关键词、思考题和习题 449
附录A 计算机组成与体系结构的教学课题 451
附录B 汇编语言及相关主题 455
术语表 473
参考文献 480