第1章 引言 1
1.1 并行处理系统 1
1.2 消息传递与共享存储 2
1.3 常见的共享存储系统 4
1.4 本书的组织和内容 6
第2章 执行正确性模型 9
2.1 引言 9
2.2 序关系的一些基本概念 11
2.3 程序模型 12
2.4 串行执行的正确性 13
2.5 并行执行的正确性 15
2.6 关键圈 19
2.7 小结 23
第3章 正确的访存事件次序 24
3.1 访问模型 24
3.2 写一致条件 25
3.3 正确执行的访存次序条件 27
3.4 正确执行的充分条件 29
3.5 乱序执行 31
3.6 一个乱序执行的例子 32
3.7 小结 34
第4章 访存事件次序的实现 35
4.1 基本协议 35
4.1.1 Cache行状态和存储行状态 35
4.1.2 取数操作 36
4.1.3 存数操作 37
4.1.5 例子 38
4.1.4 替换操作 38
4.2 充分条件的实现策略 40
4.2.1 基本协议中的访存事件 40
4.2.2 WC条件的实现 41
4.2.3 GPPO条件的实现 42
4.2.4 实现策略的正确性 42
4.3 乱序执行的实现策略 43
4.4 模拟模型 47
4.4.1 地址流的生成 47
4.4.2 处理机及Cache模块 48
4.4.3 存储器模块 49
4.4.4 互联模块 50
4.4.5 模拟参数和模拟输出 50
4.5 模拟结果及分析 50
4.5.1 访存冲突的影响 51
4.5.2 乱序执行的效果 52
4.5.3 两种乱序执行方案的比较 52
4.5.4 ILB大小的影响 53
4.6 小结 54
第5章 存储一致性模型 55
5.1 引言 55
5.2 有关的存储一致性模型 56
5.2.1 顺序一致性模型 56
5.2.2 处理机一致性模型 57
5.2.3 弱一致性模型 57
5.2.4 释放一致性模型 58
5.2.5 急切更新释放一致性模型 58
5.2.6 懒惰更新释放一致性模型 58
5.3.1 从面向硬件设计到面向程序设计 59
5.3 存储一致性模型的框架模型 59
5.2.7 域一致性模型 59
5.2.8 单项一致性模型 59
5.3.2 同步在并行程序中的作用 61
5.3.3 框架模型的定义 63
5.3.4 程序的正确性 65
5.3.5 系统设计的正确性 67
5.4 系统设计正确性的证明 68
5.4.1 基本概念 68
5.4.2 顺序一致性的正确实现 68
5.4.3 释放一致性的正确实现 70
5.4.4 域一致性的正确实现 71
5.5 小结 73
6.1 引言 74
6.2 Cache一致性协议回顾 74
第6章 高速缓存一致性协议 74
6.2.1 写使无效与写更新 75
6.2.2 侦听协议与目录协议 76
6.2.3 单写协议与多写协议 77
6.2.4 及时传播与延迟传播 79
6.3 基于锁的一致性协议 80
6.3.1 设计考虑 80
6.3.2 支持域一致性模型 81
6.3.3 基本协议 82
6.3.4 协议的优点和不足 83
6.3.5 协议的优化 84
6.4 基于锁的Cache一致性协议的正确性 84
6.5 小结 85
7.1 引言 86
第7章 共享虚拟存储系统 86
7.2 共享虚拟存储系统中的关键技术 87
7.2.1 实现方式 87
7.2.2 数据一致性 90
7.2.3 编程接口 92
7.3 JIAJIA共享虚拟存储系统 93
7.3.1 存储器组织 93
7.3.2 基于锁的一致性协议在JIAJIA中的实现 94
7.3.3 JIAJIA系统的优化 97
7.3.4 编程界面 98
7.4 性能测试与分析 99
7.4.1 测试程序 99
7.4.2 JIAJIA与CVM系统的比较 101
7.4.3 JIAJIA与PVM系统的比较 104
7.4.4 部分优化措施的效果 106
7.4.5 SMP优化的效果 109
7.4.6 预取优化的效果 111
7.5 软件共享存储与消息传递的编程环境 113
7.5.1 软件DSM与消息传递环境的可编程性 114
7.5.2 软件DSM与消息传递环境的性能 116
7.6 小结 117
第8章 总结 119
8.1 本书内容总结 119
8.2 共享存储系统发展趋势 122
附录 中英文术语对照 125
后记 博士生创新能力的培养点滴 127
参考文献 131