第一篇 并行性理论 3
第一章 并行计算机模型 3
1.1 计算技术的现状 3
1.1.1 计算机发展史上的里程碑 3
1.1.2 现代计算机的组成 5
1.1.3 计算机系统结构的发展 8
1.1.4 性能的系统属性 11
目录 15
序 15
1.2 多处理机和多计算机 15
1.2.1 共享存储型多处理机 15
前言 17
1.2.2 分布存储型多计算机 20
1.2.3 MIMD计算机分类 21
1.3.1 向量超级计算机 23
1.3 多向量机和SIMD计算机 23
1.3.2 SIMD超级计算机 25
1.4 PRAM和VLSI模型 26
1.4.1 并行随机存取机 27
1.4.2 VLSI复杂性模型 30
1.5 系统结构的发展过程 33
1.5.1 多处理机的发展过程 33
1.5.2 多向量机和SIMD机的发展过程 34
1.5.3 多线程和数据流的发展过程 35
1.6 参考文献注释和习题 37
第二章 程序和网络特性 41
2.1 并行性条件 41
2.1.1 数据和资源的关系 41
2.1.2 硬件和软件并行性 45
2.1.3 编译器的作用 48
2.2 程序的划分和调度 48
2.2.1 颗粒规模和时延 48
2.2.2 粒度的组合和调度 51
2.2.3 静态多处理机调度 53
2.3 程序流机制 56
2.3.1 控制流和数据流 56
2.3.2 需求驱动机制 59
2.3.3 流机制的比较 60
2.4 系统互连结构 60
2.4.1 网络特性和寻径功能 61
2.4.2 静态连接网络 64
2.4.3 动态连接网络 71
2.5 参考文献注释和习题 76
第三章 可扩展性能原理 83
3.1 性能指标和测量 83
3.1.1 程序的并行性分布图 83
3.1.2 调和均值性能 85
3.1.3 效率、利用率和质量 88
3.1.4 标准性能测量 90
3.2.1 开发重大挑战性课题的大规模并行性 93
3.2 并行处理的应用 93
3.2.2 并行计算机的应用模型 96
3.2.3 并行算法的可扩展性 98
3.3 加速比性能定律 102
3.3.1 适用于固定负载的Amdahl定律 102
3.3.2 适用于可扩展问题的Gustafson定律 104
3.3.3 受限于存储器的加速比模型 106
3.4 可扩展性的分析与探讨 109
3.4.1 可扩展性的指标和目标 109
3.4.2 可扩展计算机的发展 113
3.4.3 研究课题与解决方法 116
3.5 参考文献注释和习题 117
第二篇 硬件技术 125
第四章 处理机与存储器层次结构 125
4.1 先进的处理机技术 125
4.1.1 处理机的设计空间 125
4.1.2 指令系统结构 129
4.1.3 CISC标量处理机 131
4.1.4 RISC标量处理机 135
4.2 超标量和向量处理机 142
4.2.1 超标量处理机 142
4.2.2 VLIW结构 145
4.2.3 向量和符号处理机 147
4.3 存储器层次结构技术 150
4.3.1 层次存储器技术 150
4.3.2 包含性,一致性和局部性 152
4.3.3 存储器容量的规划 155
4.4 虚拟存储器技术 157
4.4.1 虚拟存储器模型 157
4.4.2 TLB、分页和分段 158
4.4.3 存储器替换策略 162
4.5 参考文献注释与习题 166
5.1.1 底板总线规范 170
5.1 底板总线系统 170
第五章 总线、高速缓存和共享存储器 170
5.1.2 寻址与定时协议 172
5.1.3 仲裁、业务与中断 174
5.1.4 IEEE Futurebus+标准 176
5.2 高速缓存组织 179
5.2.1 高速缓存的寻址方式 179
5.2.2 直接映射与联想高速缓存 182
5.2.3 组联想与区段高速缓存 184
5.2.4 高速缓存的性能问题 188
5.3 共享存储器组织 190
5.3.1 交叉存储器组织 191
5.3.2 带宽与容错 192
5.3.3 存储器分配方案 195
5.4 顺序和弱一致性模型 198
5.4.1 原子性及事件次序 198
5.4.2 顺序一致性模型 201
5.4.3 弱一致性模型 202
5.5 参考文献注释与习题 205
第六章 流水线与超标量技术 211
6.1 线性流水线处理机 211
6.1.1 异步和同步模型 211
6.1.2 时钟及定时控制 212
6.1.3 加速比,效率和吞吐率 213
6.2 非线性流水线处理机 215
6.2.1 预约和等待时间分析 215
6.2.2 无冲突调度 218
6.2.3 流水线调度优化 220
6.3 指令流水线设计 222
6.3.1 指令执行阶段 223
6.3.2 指令流水线机制 224
6.3.3 动态指令调度 229
6.3.4 转移处理技术 232
6.4 运算流水线设计 236
6.4.1 计算机的运算原理 237
6.4.2 静态运算流水线 238
6.4.3 多功能运算流水线 244
6.5 超标量和超流水线设计 246
6.5.1 超标量流水线设计 247
6.5.2 超流水线设计 252
6.5.3 超对称性和设计的折衷方案 254
6.6 参考文献注释与习题 256
第三篇 并行和可扩展系统结构 265
第七章 多处理机与多计算机 265
7.1 多处理机系统互连 265
7.1.1 层次总线系统 266
7.1.2 交叉开关和多端口存储器 269
7.1.3 多级网络和组合网络 273
7.2 高速缓存一致性和同步机制 278
7.2.1 高速缓存一致性问题 279
7.2.2 监听总线协议 281
7.2.3 基于目录的协议 287
7.2.4 硬件同步机构 292
7.3 三代多计算机 295
7.3.1 过去的设计方案 295
7.3.2 当前的状况和未来的发展趋势 297
7.3.3 Intel Paragon系统 299
7.4 消息传递机制 301
7.4.1 消息寻径方式 302
7.4.2 死锁和虚拟通道 305
7.4.3 流控制策略 307
7.4.4 选播寻径算法 311
7.5 参考文献注释与习题 316
第八章 多向量机与SIMD计算机 324
8.1 向量处理原理 324
8.1.1 向量指令类型 324
8.1.2 向量存取的存储器方案 327
8.1.3 超级计算机的历史与现状 330
8.2.1 性能驱动设计原则 333
8.2 多向量多处理机 333
8.2.2 Cray Y-MP,C-90和MPP 337
8.2.3 Fujitsu(富士通)VP2000和VPP500 342
8.2.4 大型机和小型超级计算机 345
8.3 复合向量处理 350
8.3.1 复合向量操作 351
8.3.2 向量循环和链接 352
8.3.3 多流水线连网 356
8.4 SIMD计算机结构 360
8.4.1 实现模型 360
8.4.2 CM-2系统结构 362
8.4.3 MasPar MP-1系统结构 365
8.5 Connection Machine CM-5 368
8.5.1 同步的MIMD机器 368
8.5.2 CM-5网络系统结构 371
8.5.3 控制处理机和处理结点 372
8.5.4 处理机之间的通信 374
8.6 参考文献注释与习题 378
第九章 可扩展、多线程与数据流系统结构 382
9.1 时延隐藏技术 382
9.1.1 虚拟共享存储器 382
9.1.2 预取技术 386
9.1.3 分布式一致性高速缓存 387
9.1.4 可扩展的一致性接口 388
9.1.5 非严格的存储器一致性 391
9.2.1 多线程问题及其解决方法 395
9.2 多线程原理 395
9.2.2 多现场处理机 398
9.2.3 多维系统结构 402
9.3 细粒度多计算机 406
9.3.1 细粒度并行性 406
9.3.2 麻省理工学院的J-Machine 407
9.3.3 加州理工学院的Mosaic C 414
9.4.1 斯坦福大学的Dash多计算机 415
9.4 可扩展和多线程系统结构 415
9.4.2 Kendall Square Research KSR-1 419
9.4.3 Tera多处理机系统 423
9.5 数据流和混合系统结构 428
9.5.1 数据流计算机的发展 428
9.5.2 日本的ETL/EM-4 430
9.5.3 麻省理工学院/Motorola*T原型机 432
9.6 参考文献注释与习题 434
第四篇 并行程序设计软件 441
第十章 并行模型、语言与编译器 441
10.1 并行程序设计模型 441
10.1.1 共享变量模型 441
10.1.2 消息传递模型 444
10.1.3 数据并行模型 446
10.1.4 面向对象模型 448
10.1.5 函数和逻辑模型 449
10.2.1 并行性的语言特征 451
10.2 并行语言与编译器 451
10.2.2 并行语言结构 453
10.2.3 并行优化编译器 455
10.3 数据数组的相关性分析 457
10.3.1 迭代空间和相关性分析 457
10.3.2 下标的可分离性及划分 460
10.3.3 分类相关性测试 462
10.4 代码优化与调试 466
10.4.1 基本程序块的标量优化 466
10.4.2 局部和全局优化 470
10.4.3 向量化和并行化方法 472
10.4.4 代码生成与调度 478
10.4.5 路径调度编译 482
10.5 循环并行化与流水技术 484
10.5.1 循环变换理论 484
10.5.2 并行化与波前变换 487
10.5.3 分块与局部化 490
10.5.4 软件流水技术 494
10.6 参考文献注释与习题 496
第十一章 并行程序开发与环境 501
11.1 并行程序开发与环境 501
11.1.1 软件工具和环境 501
11.1.2 Y-MP、Paragon和CM-5环境 504
11.1.3 可视化和性能调试 506
11.2 同步和多处理方式 507
11.2.1 同步原理 507
11.2.2 多处理机执行方式 509
11.2.3 Cray多处理机的多任务处理 510
11.3 共享变量程序结构 514
11.3.1 保护访问的锁定机制 514
11.3.2 信号灯和应用 517
11.3.3 管程和应用 519
11.4.1 分布计算 522
11.4 消息传递程序开发 522
11.4.2 同步消息传递 524
11.4.3 异步消息传递 525
11.5 程序到多计算机的映射 526
11.5.1 定义域分解技术 526
11.5.2 控制分解技术 529
11.5.3 异构处理 532
11.6 参考文献注释与习题 536
第十二章 并行机的UNIX,Mach与OSF/1 541
12.1 多处理机UNIX设计目标 541
12.1.1 传统UNIX的局限性 541
12.1.2 兼容性和可移植性 544
12.1.3 地址空间和负载平衡 544
12.1.4 并行I/O和网络服务 544
12.2 主从与多线程UNIX 545
12.2.1 主从内核 545
12.2.2 浮动执行内核 547
12.2.3 多线程UNIX内核 550
12.3 多计算机UNIX扩充 554
12.3.1 消息传递OS模型 554
12.3.2 Cosmic环境和Reactive内核 554
12.3.3 Intel NX/2内核和扩充 556
12.4 Mach/OS内核结构 557
12.4.1 Mach/OS内核的功能 557
12.4.2 多线程多任务处理 558
12.4.3 基于消息的通信 563
12.4.4 虚拟存储管理 565
12.5 OSF/1结构与应用 569
12.5.1 OSF/1结构 570
12.5.2 OSF/1程序设计环境 573
12.5.3 利用线程改善性能 575
12.6 参考文献注释与习题 577
部分习题答案 581
参考文献 586