第1章 计算机系统结构的基本概念 1
1.1 引言 1
1.2 计算机系统结构的概念 2
1.2.1 计算机系统的层次结构 2
1.2.2 计算机系统结构的定义 3
1.2.3 计算机组成和计算机实现 4
1.2.4 计算机系统结构的分类 5
1.3 定量分析技术 6
1.3.1 计算机系统设计的定量原理 6
1.3.2 计算机系统的性能评测 11
1.4 计算机系统结构的发展 15
1.4.1 冯·诺依曼结构 15
1.4.2 软件对系统结构的影响 17
1.4.3 器件发展对系统结构的影响 19
1.4.4 应用对系统结构的影响 20
1.4.5 系统结构的生命周期 20
1.5 计算机系统结构中并行性的发展 21
1.5.1 并行性的概念 21
1.5.2 提高并行性的技术途径 22
1.5.3 单机系统中并行性的发展 22
1.5.4 多机系统中并行性的发展 23
习题1 24
第2章 计算机指令集结构 26
2.1 指令集结构的分类 26
2.2 寻址方式 29
2.3 指令集结构的功能设计 32
2.3.1 CISC指令集结构的功能设计 33
2.3.2 RISC指令集结构的功能设计 36
2.3.3 控制指令 38
2.4 操作数的类型和大小 39
2.5 指令格式的设计 41
2.6 MIPS指令集结构 42
2.6.1 MIPS的寄存器 43
2.6.2 MIPS的数据表示 43
2.6.3 MIPS的数据寻址方式 43
2.6.4 MIPS的指令格式 44
2.6.5 MIPS的操作 45
2.6.6 MIPS的控制指令 46
2.6.7 MIPS的浮点操作 47
习题2 47
第3章 流水线技术 49
3.1 重叠执行和先行控制 49
3.1.1 重叠执行 49
3.1.2 先行控制 53
3.2 流水线的基本概念 55
3.2.1 什么是流水线 55
3.2.2 流水线的分类 57
3.3 流水线的性能指标 60
3.3.1 吞吐率 60
3.3.2 加速比 64
3.3.3 效率 64
3.3.4 流水线性能分析举例 65
3.3.5 流水线设计中的若干问题 67
3.4 流水线的相关与冲突 68
3.4.1 一个经典的5段流水线 68
3.4.2 相关 71
3.4.3 流水线冲突 73
3.5 流水线的实现 86
3.5.1 MIPS的一种简单实现 86
3.5.2 基本的MIPS流水线 89
3.6 向量处理机 95
3.6.1 向量处理方式 95
3.6.2 向量处理机的结构 98
3.6.3 提高向量处理机性能的方法 99
3.6.4 向量处理机的性能评价 103
习题3 108
第4章 指令级并行 111
4.1 指令级并行的概念 111
4.2 指令的动态调度 114
4.2.1 动态调度的基本思想 114
4.2.2 Tomasulo算法 116
4.3 动态分支预测技术 126
4.3.1 采用分支历史表 127
4.3.2 采用分支目标缓冲器 128
4.3.3 基于硬件的前瞻执行 130
4.4 多指令流出技术 134
4.4.1 基于静态调度的多流出技术 136
4.4.2 基于动态调度的多流出技术 138
4.4.3 超长指令字技术 140
4.4.4 多流出处理器受到的限制 141
4.4.5 超流水线处理机 142
4.5 循环展开和指令调度 146
4.5.1 循环展开和指令调度的基本方法 146
4.5.2 静态超标量处理机中的循环展开 150
习题4 151
第5章 存储层次 154
5.1 存储器的层次结构 154
5.1.1 从单级存储器到多级存储器 154
5.1.2 存储层次的性能参数 155
5.1.3 “Cache-主存”和“主存-辅存”层次 156
5.1.4 存储层次的4个问题 158
5.2 Cache基本知识 158
5.2.1 映像规则 159
5.2.2 查找方法 161
5.2.3 替换算法 162
5.2.4 写策略 163
5.2.5 Cache的结构 165
5.2.6 Cache性能分析 168
5.2.7 改进Cache性能 172
5.3 降低Cache失效率的方法 172
5.3.1 增加Cache块大小 176
5.3.2 提高相联度 178
5.3.3 增加Cache的容量 179
5.3.4 VictimCache 179
5.3.5 伪相联映像Cache 180
5.3.6 硬件预取 182
5.3.7 编译器控制的预取 183
5.3.8 编译器优化 185
5.4 减少Cache失效开销 190
5.4.1 让读失效优先于写 190
5.4.2 写缓冲合并 191
5.4.3 请求字处理技术 192
5.4.4 非阻塞Cache技术 192
5.4.5 采用两级Cache 194
5.5 减少命中时间 197
5.5.1 容量小、结构简单的Cache 197
5.5.2 虚拟Cache 197
5.5.3 Cache访问流水化 200
5.5.4 TraceCache 200
5.5.5 Cache优化技术总结 200
5.6 主存 202
5.7 虚拟存储器 208
5.7.1 虚拟存储器的基本原理 208
5.7.2 快表 210
5.8 进程保护和虚存实例 212
5.8.1 进程保护 212
5.8.2 页式虚存实例:AlphaAXP的存储管理和21064的TLB 213
5.9 AlphaAXP21064存储层次 216
习题5 219
第6章 输入/输出系统 222
6.1 I/O系统性能与CPU性能 222
6.2 I/O系统的可靠性、可用性和可信性 223
6.3 廉价磁盘冗余阵列RAID 224
6.3.1 RAID0 227
6.3.2 RAID1 227
6.3.3 RAID2 228
6.3.4 RAID3 229
6.3.5 RAID4 230
6.3.6 RAID5 231
6.3.7 RAID6 231
6.3.8 RAID10与RAID01 232
6.3.9 RAID的实现与发展 232
6.4 总线 233
6.4.1 总线的设计 234
6.4.2 总线标准和实例 235
6.4.3 与CPU的连接 237
6.5 通道处理机 238
6.5.1 通道的作用和功能 238
6.5.2 通道的工作过程 239
6.5.3 通道的种类 242
6.5.4 通道中的数据传送过程与流量分析 244
6.6 I/O与操作系统 247
6.6.1 DMA和虚拟存储器 247
6.6.2 I/0和Cache数据一致性 247
6.6.3 异步I/0 250
习题6 250
第7章 互连网络 252
7.1 互连网络的基本概念 252
7.1.1 互连网络的功能和特征 252
7.1.2 互连函数 253
7.1.3 互连网络的特性参数 256
7.2 互连网络的结构 257
7.2.1 静态互连网络 257
7.2.2 动态互连网络 261
习题7 265
第8章 多处理机 267
8.1 引言 267
8.1.1 并行计算机系统结构的分类 267
8.1.2 通信模型和存储器的结构模型 269
8.1.3 并行处理面临的挑战 271
8.2 对称式共享存储器系统结构 273
8.2.1 多处理机Cache一致性 274
8.2.2 实现一致性的基本方案 275
8.2.3 监听协议及其实现 277
8.3 分布式共享存储器系统结构 279
8.3.1 基于目录的Cache一致性 279
8.3.2 目录协议及其实现 282
8.4 同步 283
8.4.1 基本硬件原语 284
8.4.2 用一致性实现锁 285
8.4.3 同步性能问题 288
8.5 同时多线程 290
8.5.1 将线程级并行转换为指令级并行 291
8.5.2 同时多线程处理器的设计 292
8.5.3 同时多线程的性能 293
8.6 多处理机实例 295
习题8 298
第9章 机群计算机 300
9.1 机群的基本概念和结构 300
9.1.1 机群的基本结构 300
9.1.2 机群的软件模型 301
9.2 机群的特点 303
9.3 机群的分类 304
9.4 典型机群系统简介 305
9.4.1 BerkeleyNOW 305
9.4.2 Beowulf 305
9.4.3 LAMP 306
9.4.4 IBMSP2 306
习题9 308
主要参考文献 309