第1章 计算机系统结构概论 1
1.1 概述 1
1.1.1 计算机系统组成与系统结构的概念 1
1.1.2 语言与系统结构设计 4
1.1.3 软件与系统结构设计 6
1.1.4 应用需求与系统结构设计 8
1.1.5 器件与系统结构设计 11
1.2 计算机系统的分类 13
1.2.1 应用分类 13
1.2.2 结构分类 15
1.2.3 并行性分类 18
1.3 计算机指令集系统结构 20
1.3.1 指令系统设计 20
1.3.2 指令的数据访问方式 25
1.3.3 指令设计风格 28
1.4 计算机的性能评价 31
1.4.1 性能的衡量 31
1.4.2 性能的简单分析 33
1.4.3 性能的模拟 35
1.4.4 性能的测试 36
1.4.5 性能评价结果的统计和比较 41
1.4.6 阿姆达尔定律 44
习题 45
第2章 计算机微观系统结构 51
2.1 指令级并行性 51
2.1.1 基本的指令流水线 52
2.1.2 指令的相关性 53
2.2 动态指令调度 63
2.2.1 基本思想 64
2.2.2 记分牌方法 68
2.2.3 Tomasulo调度法 70
2.3 分支预测 75
2.3.1 分支预测 75
2.3.2 分支目标缓存 80
2.4 多重启动 81
2.5 推测执行 87
2.6 静态指令调度 94
2.6.1 静态指令调度 94
2.6.2 静态多重指令启动 100
2.6.3 软件流水 105
2.7 静态全局指令调度 108
2.7.1 路径调度 108
2.7.2 全局指令调度 110
2.7.3 条件指令 111
2.8 微观系统结构实例 114
2.8.1 P6微系统结构 114
2.8.2 奔腾4的NetBurst微系统结构 116
2.8.3 SSE技术 118
2.8.4 Core微系统结构 119
2.8.5 IA-64系统结构 121
习题 123
第3章 计算机存储系统 134
3.1 主存储器 134
3.2 cache 139
3.2.1 cache的地址映像 140
3.2.2 cache的替换策略 145
3.2.3 cache的更新策略 146
3.2.4 cache的性能评价 149
3.3 辅助cache 155
3.3.1 写缓存 155
3.3.2 踪迹cache 157
3.3.3 替换cache 159
3.3.4 伪相联cache 161
3.3.5 cache预取 162
3.4 多级cache 164
3.5 虚拟存储器与cache 169
3.5.1 虚拟存储器 169
3.5.2 实地址cache 172
3.5.3 虚地址cache 173
习题 174
第4章 输入/输出系统 181
4.1 输入/输出系统结构 181
4.1.1 输入/输出总线 181
4.1.2 交换式输入/输出结构 187
4.1.3 输入/输出系统的性能 189
4.2 海量存储系统 193
4.2.1 RAID系统 193
4.2.2 存储域网络 198
4.3 输入/输出总线实例 204
4.3.1 USB总线 204
4.3.2 PCI Express总线 213
习题 218
第5章 并行计算机系统结构 221
5.1 并行处理器系统 221
5.1.1 集中式和分布式存储器系统 222
5.1.2 均匀访存与非均匀访存系统 224
5.1.3 芯片级并行系统与系统级并行系统 226
5.1.4 并行处理器系统的性能 229
5.2 并行计算机的互联网络 231
5.2.1 互联网络的分类 231
5.2.2 互联网络的特性 233
5.2.3 静态互联网络 236
5.2.4 动态互联网络 241
5.3 芯片级并行性 249
5.3.1 多线程并行性 249
5.3.2 多核并行性 255
5.3.3 芯片级互联网络 257
5.3.4 并行处理器芯片实例 259
5.4 系统级并行性 262
5.4.1 板级并行系统 262
5.4.2 集群并行系统 264
5.4.3 分布式系统 271
习题 273
第6章 并行计算机的同步与通信 277
6.1 并行计算机系统的通信 277
6.1.1 共享存储器通信 278
6.1.2 互联网络的消息传递通信 282
6.2 cache与存储器数据一致性 288
6.2.1 cache一致性概念 288
6.2.2 总线监测方法 291
6.2.3 目录表方法 295
6.2.4 存储器数据一致性 297
6.2.5 支持数据一致性的通信接口 299
6.3 并行计算机的同步 302
6.3.1 硬件原语 302
6.3.2 用一致性机制实现锁 304
6.3.3 屏障同步 305
6.3.4 事务存储器 309
6.3.5 同步与多线程 311
6.4 并行计算机程序的软件支持 313
6.4.1 并行程序的概念 313
6.4.2 OpenMP 320
6.4.3 MPI 326
6.4.4 其他并行程序软件工具 329
习题 332
参考文献 338