出版者的话 1
专家指导委员会 1
作者简介 1
译者序 1
前言 1
第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) 9
1.2.2 第一代--电子管计算机(1945--1955) 10
1.2.3 第二代--晶体管计算机(1955--1965) 12
1.2.4 第三代--集成电路计算机(1965--1980) 13
1.2.5 第四代--超大规模集成电路计算机(1980--?) 15
1.3.1 技术和经济的推动 16
1.3 计算机家族 16
1.3.2 计算机扫视 17
1.4 系列计算机举例 19
1.4.1 PentiumⅡ简介 19
1.4.2 UltraSPARCⅡ简介 21
1.4.3 picoJavaⅡ简介 23
1.5 本书概览 24
习题 25
2.1 处理器 27
第2章 计算机系统组成 27
2.1.1 CPU的组成 28
2.1.2 指令执行 28
2.1.3 RISC和CISC 31
2.1.4 现代计算机设计原则 32
2.1.5 指令级并行 33
2.1.6 处理器级并行 36
2.2 主存储器 38
2.2.1 存储位 38
2.2.2 内存编址 39
2.2.3 字节顺序 40
2.2.4 纠错码 41
2.2.5 高速缓存 44
2.2.6 内存条及其类型 46
2.3 辅助存储器 47
2.3.1 层次存储结构 47
2.3.2 磁盘 48
2.3.3 软盘 50
2.3.4 IDE盘 51
2.3.5 SCSI盘 52
2.3.6 RAID盘 53
2.3.7 只读光盘 55
2.3.8 可刻光盘 58
2.3.9 可擦写光盘 60
2.3.10 DVD 60
2.4 输入输出设备 62
2.4.1 总线 62
2.4.2 终端 64
2.4.3 鼠标 70
2.4.4 打印机 71
2.4.5 调制解调器 74
2.4.6 字符编码 77
2.5 小结 79
习题 80
3.1 门和布尔代数 83
3.1.1 门 83
第3章 数字逻辑层 83
3.1.2 布尔代数 85
3.1.3 布尔函数的实现 86
3.1.4 等价电路 87
3.2 基本数字逻辑电路 90
3.2.1 集成电路 90
3.2.2 组合逻辑电路 91
3.2.3 算术电路 95
3.2.4 时钟 98
3.3.1 锁存器 99
3.3 内存 99
3.3.2 触发器 101
3.3.3 寄存器 103
3.3.4 内存组成 104
3.3.5 内存芯片 106
3.3.6 RAM和ROM 107
3.4.1 CPU芯片 109
4.5.2 分支预测 109
3.4 CPU芯片和总线 109
3.4.2 计算机总线 111
3.4.3 总线宽度 113
3.4.4 总线时钟 114
3.4.5 总线仲裁 117
3.4.6 总线操作 120
3.5 CPU芯片举例 122
3.5.1 PentiumⅡ 122
3.5.2 UltraSPARCⅡ 126
3.5.3 picoJavaⅡ 129
3.6.1 ISA总线 130
3.6 总线举例 130
3.6.2 PCI总线 132
3.6.3 通用串行总线 137
3.7 接口电路 139
3.7.1 输入输出芯片 140
3.7.2 地址译码 141
3.8 小结 143
习题 144
第4章 微体系结构层 148
4.1 微体系结构举例 148
4.1.1 数据通路 149
4.1.2 微指令 153
4.1.3 微指令控制:Mic-1 155
4.2 指令系统举例:IJVM 158
4.2.1 堆栈 158
4.2.2 IJVM内存模型 160
4.2.3 IJVM指令集 161
4.2.4 将Java编译为IJVM 164
4.3.1 微指令和符号语言 165
4.3 实现举例 165
4.3.2 用Mic-1实现IJVM 168
4.4 微体系结构层设计 177
4.4.1 速度与价格 177
4.4.2 缩短指令执行路径长度 178
4.4.3 带预取的设计:Mic-2 183
4.4.4 流水线设计:Mic-3 183
4.4.5 七段流水线设计:Mic-4 190
4.5 提高性能 193
4.5.1 高速缓存 193
4.5.3 乱序执行和寄存器重命名 201
4.5.4 推测执行 205
4.6 微体系结构层举例 207
4.6.1 PentiumⅡCPU的微体系结构 207
4.6.2 UltraSPARC-ⅡCPU的微体系结构 210
4.6.3 PjcoJavaⅡCPU的微体系结构 212
4.6.4 三种CPU的比较 216
4.7 小结 217
习题 217
第5章 指令系统层 221
5.1 指令系统层概述 222
5.1.1 指令系统层的性质 222
5.1.2 存储模式 223
5.1.3 寄存器 225
5.1.5 PentiumⅡ指令系统层概述 226
5.1.4 指令 226
5.1.6 UltraSPARCⅡ指令系统层概述 228
5.1.7 Java虚拟机指令系统层概述 231
5.2 数据类型 232
5.2.1 数值数据类型 232
5.2.2 非数值数据类型 233
5.2.3 PentiunⅡ的数据类型 233
5.3 指令格式 234
5.2.4 UltraSPARCⅡ的数据类型 234
5.2.5 Java虚拟机的数据类型 234
5.3.1 指令格式设计标准 235
5.3.2 操作码扩展 237
5.3.3 PentiumⅡ指令格式 238
5.3.4 UltraSPARCⅡ指令格式 239
5.3.5 Java虚拟机指令格式 240
5.4 寻址 242
5.4.1 寻址方式 243
5.4.2 立即寻址 243
5.4.3 直接寻址 244
5.4.4 寄存器寻址 244
5.4.5 寄存器间接寻址 244
5.4.6 变址寻址 245
5.4.7 基址变址寻址 246
5.4.8 堆栈寻址 247
5.4.9 转移指令的寻址方式 249
5.4.10 操作码和寻址方式的关系 250
5.4.11 PentiumⅡ的寻址方式 251
5.4.12 UltraSPARCⅡ的寻址方式 253
5.4.13 Java虚拟机寻址方式 253
5.4.14 寻址方式讨论 253
5.5 指令类型 254
5.5.1 数据移动指令 254
5.5.2 双操作数指令 255
5.5.3 单操作数指令 256
5.5.4 比较和条件转移指令 257
5.5.5 过程调用指令 258
5.5.6 循环控制指令 259
5.5.7 输入输出指令 260
5.5.8 PentiumⅡ指令系统 263
5.5.9 UltraSPARCⅡ指令系统 265
5.5.10 pjocJavaⅡ指令系统 267
5.5.11 指令集比较 271
5.6.1 顺序控制流和转移 272
5.6 控制流 272
5.6.2 过程 273
5.6.3 协同过程 276
5.6.4 陷阱 278
5.6.5 中断 278
5.7 详细举例:汉诺塔 281
5.7.1 PetiunⅡ汇编语言实现的汉诺塔 281
5.7.2 UltraSPARCⅡ汇编语言实现的汉诺塔 283
5.7.3 Java虚拟机汇编语言实现的汉诺塔 284
5.8 Intel的IA-64 286
5.8.1 PentiumⅡ的问题 286
5.8.2 IA-64模型:显式并行指令计算 287
5.8.3 判定 288
5.8.4 预取 290
5.8.5 现实障碍 291
5.9 小结 291
习题 292
6.1 虚拟内存 296
第6章 操作系统层 296
6.1.1 内存分页 297
6.1.2 内存分页的实现 298
6.1.3 请求调页和工作集模型 300
6.1.4 页置换策略 301
6.1.5 页大小和碎片 302
6.1.6 分段 303
6.1.7 分段的实现 305
6.1.8 PentiumⅡ中的虚拟内存 307
6.1.9 UltraSPARC的虚拟内存 310
6.1.10 虚拟内存和高速缓存 312
6.2 虚拟输入输出指令 313
6.2.1 文件 313
6.2.2 虚拟输入输出指令的实现 314
6.2.3 目录管理指令 317
6.3 用于并行处理的虚拟指令 318
6.3.1 进程创建 318
6.3.2 竞争条件 319
6.3.3 使用信号量的进程同步 323
6.4 操作系统实例 325
6.4.1 简介 326
6.4.2 虚拟内存实例 332
6.4.3 虚拟输入输出实例 335
6.4.4 进程管理实例 344
6.5 小结 348
习题 349
第7章 汇编语言层 354
7.1 汇编语言简介 354
7.1.1 什么是汇编语言 355
7.1.2 为什么使用汇编语言 355
7.1.3 汇编语言语句的格式 357
7.1.4 伪指令 360
7.2 宏 362
7.2.1 宏定义、调用和扩展 362
7.2.2 带参数的宏 363
7.2.4 汇编器中宏处理的实现 364
7.2.3 高级特性 364
7.3 汇编过程 365
7.3.1 两趟汇编的汇编器 365
7.3.2 第一趟扫描 366
7.3.3 第二趟扫描 369
7.3.4 符号表 370
7.4 链接和加载 371
7.4.1 链接器的功能 372
7.4.3 绑定时间状态和动态重定位 375
7.4.2 目标模块的结构 375
7.4.4 动态链接 377
7.5 小结 380
习题 380
第8章 并行计算机体系结构 383
8.1 并行计算机设计中的主要问题 383
8.1.1 通信模型 385
8.1.2 互连网络 388
8.1.3 性能 394
8.1.4 软件 399
8.1.5 并行计算机的分类 403
8.2 SIMD计算机 405
8.2.1 阵列处理机 405
8.2.2 向量处理机 406
8.3 共享内存的多处理器系统 409
8.3.1 内存语义 409
8.3.2 基于UMA总线的SMP体系结构 412
8.3.3 使用交叉开关的UMA多处理器系统 416
8.3.4 使用多级交换网络的UMA多处理器系统 418
8.3.5 NUMA多处理器系统 419
8.3.6 cache一致的NUMA多处理器系统 421
8.3.7 COMA多处理器系统 428
8.4 基于消息传递的多计算机系统 429
8.4.1 MPP:大规模并行处理机 430
8.4.2 COW:工作站集群 434
8.4.3 调度 435
8.4.4 用于多计算机系统的通信软件 438
8.4.5 应用层的共享内存 441
8.5 小结 446
习题 447
第9章 推荐读物和参考文献 450
9.1 推荐读物 450
9.1.1 一般性和介绍性的读物 450
9.1.2 计算机系统组成 451
9.1.3 数字逻辑层 451
9.1.4 微体系结构层 452
9.1.6 操作系统层 453
9.1.5 指令系统层 453
9.1.7 汇编语言层 454
9.1.8 并行计算机体系结构 454
9.1.9 二进制数和浮点数 455
9.2 参考文献 456
附录A 二进制数 465
附录B 浮点数 473
索引 480