第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 定量分析技术 7
1.3.1 计算机系统设计的定量原理 7
1.3.2 计算机系统的性能评测 11
1.4 计算机系统结构的发展 15
1.4.1 冯·诺依曼结构 15
1.4.2 软件对系统结构的影响 18
1.4.3 器件发展对系统结构的影响 19
1.4.4 应用对系统结构的影响 20
1.5 计算机系统结构中并行性的发展 21
1.5.1 并行性的概念 21
1.5.2 提高并行性的技术途径 22
1.5.3 单机系统中并行性的发展 23
1.5.4 多机系统中并行性的发展 23
习题1 24
第2章 计算机指令集结构 26
2.1 指令集结构的分类 26
2.2 寻址方式 29
2.3 指令集结构的功能设计 32
2.3.1 CISC指令集结构的功能设计 34
2.3.2 RISC指令集结构的功能设计 37
2.3.3 控制指令 39
2.4 操作数的类型和大小 40
2.5 指令格式的设计 42
2.6 MIPS指令集结构 43
2.6.1 MIPS的寄存器 43
2.6.2 MIPS的数据表示 44
2.6.3 MIPS的数据寻址方式 44
2.6.4 MIPS的指令格式 44
2.6.5 MIPS的操作 46
2.6.6 MIPs的控制指令 47
2.6.7 MIPs的浮点操作 48
习题2 49
第3章 流水线技术 50
3.1 流水线的基本概念 50
3.1.1 什么是流水线 50
3.1.2 流水线的分类 52
3.2 流水线的性能指标 56
3.2.1 吞吐率 56
3.2.2 加速比 59
3.2.3 效率 59
3.2.4 流水线性能分析举例 60
3.2.5 流水线设计中的若干问题 62
3.3 流水线的相关与冲突 63
3.3.1 一个经典的5段流水线 63
3.3.2 相关与流水线冲突 66
3.4 流水线的实现 82
3.4.1 MIPS的一种简单实现 82
3.4.2 基本的MIPS流水线 85
3.5 向量处理机 90
3.5.1 向量处理方式 91
3.5.2 向量处理机的结构 93
3.5.3 提高向量处理机性能的方法 95
3.5.4 向量处理机的性能评价 99
习题3 103
第4章 指令级并行 107
4.1 指令级并行的概念 107
4.2 指令的动态调度 110
4.2.1 动态调度的基本思想 110
4.2.2 Tomasulo算法 112
4.3 动态分支预测技术 124
4.3.1 采用分支历史表BHT 125
4.3.2 采用分支目标缓冲器BTB 126
4.3.3 基于硬件的前瞻执行 128
4.4 多指令流出技术 133
4.4.1 基于静态调度的多流出技术 134
4.4.2 基于动态调度的多流出技术 136
4.4.3 超长指令字技术 138
4.4.4 多流出处理器受到的限制 140
4.4.5 超流水线处理机 141
4.5 循环展开和指令调度 144
4.5.1 循环展开和指令调度的基本方法 144
4.5.2 静态超标量处理机中的循环展开 148
习题4 150
第5章 存储系统 153
5.1 存储系统的层次结构 153
5.1.1 存储系统的层次结构 153
5.1.2 存储系统的性能参数 155
5.1.3 三级存储系统 156
5.1.4 存储层次的4个问题 157
5.2 Cache基本知识 158
5.2.1 基本结构和原理 158
5.2.2 映像规则 159
5.2.3 查找方法 161
5.2.4 Cache的工作过程 163
5.2.5 替换算法 165
5.2.6 写策略 169
5.2.7 Cache性能分析 170
5.2.8 改进Cache性能 173
5.3 降低Cache不命中率 173
5.3.1 三种类型的不命中 173
5.3.2 增加Cache块大小 176
5.3.3 增加Cache的容量 177
5.3.4 提高相联度 177
5.3.5 伪相联Cache 178
5.3.6 硬件预取 179
5.3.7 编译器控制的预取 179
5.3.8 编译优化 180
5.3.9 “牺牲”Cache 183
5.4 减少Cache不命中开销 183
5.4.1 采用两级Cache 184
5.4.2 让读不命中优先于写 187
5.4.3 写缓冲合并 187
5.4.4 请求字处理技术 188
5.4.5 非阻塞Cache技术 189
5.5 减少命中时间 189
5.5.1 容量小、结构简单的Cache 190
5.5.2 虚拟Cache 190
5.5.3 Cache访问流水化 193
5.5.4 踪迹Cache 193
5.5.5 Cache优化技术总结 193
5.6 并行主存系统 195
5.6.1 单体多字存储器 196
5.6.2 多体交叉存储器 196
5.6.3 避免存储体冲突 201
5.7 虚拟存储器 203
5.7.1 基本概念 203
5.7.2 快速地址转换技术 204
5.7.3 页式虚拟存储器实例:64位Opteron的存储管理 205
5.8 实例:AMD Opteron的存储器层次结构 207
习题5 212
第6章 输入/输出系统 216
6.1 输入/输出系统的性能 216
6.2 输入/输出系统的可靠性、可用性和可信性 217
6.3 廉价磁盘冗余阵列RAID 218
6.3.1 RAID 0 221
6.3.2 RAID 1 221
6.3.3 RAID 2 222
6.3.4 RAID 3 223
6.3.5 RAID 4 223
6.3.6 RAID 5 225
6.3.7 RAID 6 225
6.3.8 RAID 10与RAID 01 226
6.3.9 RAID的实现与发展 227
6.4 总线 227
6.4.1 总线的设计 227
6.4.2 总线标准和实例 229
6.4.3 与CPU的连接 231
6.5 通道处理机 232
6.5.1 通道的作用和功能 232
6.5.2 通道的工作过程 233
6.5.3 通道的种类 235
6.5.4 通道流量分析 237
6.6 I/O与操作系统 239
6.6.1 DMA和虚拟存储器 240
6.6.2 I/O和Cache数据一致性 241
习题6 242
第7章 互连网络 245
7.1 互连函数 245
7.1.1 互连函数的表示方法 245
7.1.2 几种基本的互连函数 246
7.2 互连网络的结构参数与性能指标 252
7.2.1 互连网络的结构参数 252
7.2.2 互连网络的性能指标 252
7.3 静态互连网络 253
7.4 动态互连网络 260
7.4.1 总线网络 260
7.4.2 交叉开关网络 261
7.4.3 多级互连网络 262
7.4.4 动态互连网络的比较 267
7.5 消息传递机制 268
7.5.1 消息寻径方案 268
7.5.2 死锁与虚拟通道 272
7.5.3 流控制策略 273
7.5.4 选播和广播寻径算法 276
习题7 278
第8章 多处理机 280
8.1 引言 280
8.1.1 并行计算机系统结构的分类 281
8.1.2 存储器系统结构和通信机制 282
8.1.3 并行处理面临的挑战 284
8.2 对称式共享存储器系统结构 287
8.2.1 多处理机Cache一致性 287
8.2.2 实现一致性的基本方案 289
8.2.3 监听协议的实现 291
8.3 分布式共享存储器系统结构 296
8.3.1 目录协议的基本思想 296
8.3.2 目录协议实例 300
8.3.3 目录的3种结构 303
8.4 同步 305
8.4.1 基本硬件原语 305
8.4.2 用一致性实现锁 307
8.4.3 同步性能问题 309
8.5 同时多线程 312
8.5.1 将线程级并行转换为ILP 313
8.5.2 同时多线程处理器的设计 315
8.5.3 同时多线程的性能 316
8.6 大规模并行处理机 317
8.6.1 并行计算机系统结构 317
8.6.2 大规模并行处理机 319
8.7 多处理机实例1:T1 323
8.8 多处理机实例2:Origin 2000 327
习题8 334
第9章 机群系统 336
9.1 机群的基本结构 337
9.1.1 机群的硬件 337
9.1.2 机群的软件 338
9.2 机群的特点 340
9.3 机群的分类 341
9.4 典型机群系统简介 342
9.4.1 Berkeley NOW 342
9.4.2 Beowulf 343
9.4.3 LAMP 343
9.4.4 IBM SP2 344
习题9 346
第10章 多核系统结构与编程 347
10.1 多核系统结构的需求 347
10.1.1 功耗与散热问题 348
10.1.2 并行度问题 348
10.1.3 应用软件的问题 349
10.2 多核系统结构 350
10.2.1 多核的组织架构 350
10.2.2 多核系统结构实例 352
10.3 基于多核的并行程序设计 356
10.3.1 并行编程模型 356
10.3.2 并行语言 357
10.3.3 并行算法 358
10.4 多核编程实例 359
习题10 361
参考文献 362