第1章 计算机系统结构的基础知识 1
1.1 计算机系统结构的基本概念 1
1.1.1 计算机系统的层次结构 2
1.1.2 计算机系统结构的定义 3
1.1.3 计算机组成和计算机实现 3
1.1.4 计算机系统结构的分类 4
1.2 计算机系统的设计 7
1.2.1 计算机系统设计的定量原理 7
1.2.2 计算机系统设计者的主要任务 10
1.2.3 计算机系统设计的主要方法 12
1.3 计算机系统的性能评测 13
1.4 计算机系统结构的发展 17
1.4.1 冯·诺依曼结构及其改进 17
1.4.2 软件对系统结构的影响 19
1.4.3 器件发展对系统结构的影响 21
1.4.4 应用对系统结构的影响 22
1.5 计算机系统结构中并行性的发展 23
1.5.1 并行性的概念 23
1.5.2 提高并行性的技术途径 25
1.5.3 单机系统中并行性的发展 25
1.5.4 多机系统中并行性的发展 25
1.5.5 并行机的发展变化 26
习题1 28
第2章 指令系统的设计 30
2.1 指令系统结构的分类 30
2.2 寻址方式 32
2.3 指令系统的设计和优化 35
2.3.1 指令系统设计的基本原则 35
2.3.2 控制指令 36
2.3.3 指令操作码的优化 37
2.3.4 指令字格式的优化 40
2.4 指令系统的发展和改进 42
2.4.1 沿CISC方向发展和改进指令系统 42
2.4.2 沿RISC方向发展和改进指令系统 44
2.5 操作数的类型和大小 45
2.6 MIPS指令系统结构 47
2.6.1 MIPS的寄存器 47
2.6.2 MIPS的数据表示 47
2.6.3 MIPS的数据寻址方式 47
2.6.4 MIPS的指令格式 48
2.6.5 MIPS的操作 49
2.6.6 MIPS的控制指令 50
2.6.7 MIPS的浮点操作 51
习题2 51
第3章 流水线技术 53
3.1 流水线的基本概念 53
3.1.1 什么是流水线 53
3.1.2 流水线的分类 55
3.2 流水线的性能指标 58
3.2.1 流水线的吞吐率 58
3.2.2 流水线的加速比 60
3.2.3 流水线的效率 61
3.2.4 流水线的性能分析举例 62
3.2.5 流水线设计中的若干问题 64
3.3 非线性流水线的调度 64
3.3.1 单功能非线性流水线的最优调度 65
3.3.2 多功能非线性流水线的调度 67
3.4 流水线的相关与冲突 70
3.4.1 一条经典的5段流水线 70
3.4.2 相关与流水线冲突 72
3.5 流水线的实现 83
3.5.1 MIPS的一种简单实现 83
3.5.2 基本的MIPS流水线 86
习题3 90
第4章 向量处理机 94
4.1 向量的处理方式 94
4.2 向量处理机的结构 96
4.2.1 “存储器-存储器”结构 96
4.2.2 “寄存器-寄存器”结构 96
4.3 提高向量处理机性能的常用技术 98
4.3.1 设置多个功能部件 99
4.3.2 链接技术 99
4.3.3 分段开采技术 102
4.3.4 采用多处理机系统 102
4.4 向量处理机的性能评价 103
4.4.1 向量指令的处理时间Tvp 103
4.4.2 最大性能R∞和半性能向量长度n1/2 106
4.4.3 向量长度临界值nv 106
4.5 向量处理机实例 107
4.5.1 具有代表性的向量处理机 107
4.5.2 Cray Y-MP和C-90 107
4.5.3 NEC SX-X44 109
习题4 110
第5章 指令级并行及其开发——硬件方法 112
5.1 指令级并行的概念 112
5.2 相关与指令级并行 113
5.3 指令的动态调度 114
5.3.1 动态调度的基本思想 114
5.3.2 记分牌动态调度方法 116
5.3.3 Tomasulo算法 123
5.4 动态分支预测技术 133
5.4.1 采用分支历史表 134
5.4.2 采用分支目标缓冲器 135
5.4.3 基于硬件的前瞻执行 137
5.5 多指令流出技术 142
5.5.1 基于静态调度的多流出技术 143
5.5.2 基于动态调度的多流出技术 144
5.5.3 超长指令字技术 147
5.5.4 多流出处理器受到的限制 148
5.5.5 超流水线处理机 149
习题5 152
第6章 指令级并行的开发——软件方法 154
6.1 基本指令调度和循环展开 154
6.1.1 指令调度的基本方法 154
6.1.2 循环展开 156
6.2 跨越基本块的静态指令调度 158
6.2.1 全局指令调度 158
6.2.2 踪迹调度 161
6.2.3 超块调度 163
6.3 静态多指令流出:VLIW技术 165
6.4 显式并行指令计算 167
6.4.1 非绑定分支 167
6.4.2 谓词执行 168
6.4.3 前瞻执行 171
6.5 开发更多的指令级并行 173
6.5.1 挖掘更多的循环级并行 174
6.5.2 软流水 179
6.6 实例:IA-64体系结构 182
6.6.1 IA-64的指令格式 183
6.6.2 IA-64的谓词执行机制 185
6.6.3 IA-64的前瞻执行机制 186
习题6 187
第7章 存储系统 189
7.1 存储系统的层次结构 189
7.1.1 存储系统的层次结构概述 189
7.1.2 存储系统的性能参数 190
7.1.3 三级存储系统 191
7.1.4 存储层次的4个问题 193
7.2 Cache的基本知识 193
7.2.1 基本结构和原理 193
7.2.2 映像规则 194
7.2.3 查找方法 196
7.2.4 Cache的工作过程 198
7.2.5 替换算法 200
7.2.6 写策略 203
7.2.7 Cache性能分析 204
7.2.8 改进Cache性能 206
7.3 降低Cache的不命中率 207
7.3.1 三种类型的不命中 207
7.3.2 增加Cache块大小 209
7.3.3 增加Cache的容量 210
7.3.4 提高相联度 210
7.3.5 伪相联Cache 211
7.3.6 硬件预取 212
7.3.7 编译器控制的预取 212
7.3.8 编译优化 213
7.3.9 “牺牲”Cache 215
7.4 减少Cache不命中开销 216
7.4.1 采用两级Cache 216
7.4.2 让读不命中优先于写 219
7.4.3 写缓冲合并 219
7.4.4 请求字处理技术 220
7.4.5 非阻塞Cache技术 220
7.5 减少命中时间 221
7.5.1 容量小、结构简单的Cache 221
7.5.2 虚拟Cache 221
7.5.3 Cache访问流水化 224
7.5.4 踪迹Cache 224
7.5.5 Cache优化技术总结 224
7.6 并行主存系统 225
7.6.1 单体多字存储器 226
7.6.2 多体交叉存储器 227
7.6.3 避免存储体冲突 231
7.7 虚拟存储器 232
7.7.1 基本概念 232
7.7.2 快速地址转换技术 233
7.7.3 页式虚拟存储器实例:64位Opteron的存储管理 234
7.8 实例:AMDOpteron的存储器层次结构 236
习题7 240
第8章 输入输出系统 243
8.1 I/O系统的性能 243
8.2 I/O系统的可靠性、可用性和可信性 244
8.3 廉价磁盘冗余阵列 245
8.3.1 RAID0 247
8.3.2 RAID1 247
8.3.3 RAID2 248
8.3.4 RAID3 249
8.3.5 RAID4 249
8.3.6 RAID5 250
8.3.7 RAID6 250
8.3.8 RAID10与RAID01 251
8.3.9 RAID的实现与发展 251
8.4 总线 252
8.4.1 总线的设计 253
8.4.2 总线标准和实例 254
8.4.3 与CPU的连接 255
8.5 通道处理机 257
8.5.1 通道的作用和功能 257
8.5.2 通道的工作过程 258
8.5.3 通道种类 259
8.5.4 通道流量分析 261
8.6 I/O与操作系统 263
8.6.1 DMA和虚拟存储器 263
8.6.2 I/O和Cache数据一致性 264
习题8 266
第9章 互连网络 268
9.1 互连函数 268
9.1.1 互连函数的表示方法 268
9.1.2 几种基本的互连函数 269
9.2 互连网络的结构参数与性能指标 273
9.2.1 互连网络的结构参数 273
9.2.2 互连网络的性能指标 274
9.3 静态互连网络 275
9.4 动态互连网络 281
9.4.1 总线网络 281
9.4.2 交叉开关网络 282
9.4.3 多级互连网络 283
9.4.4 动态互连网络的比较 286
9.5 消息传递机制 287
9.5.1 消息寻径方案 287
9.5.2 死锁与虚拟通道 290
9.5.3 流控制策略 291
9.5.4 选播和广播寻径算法 294
习题9 296
第10章 多处理机 298
10.1 引言 298
10.1.1 并行计算机系统结构的分类 298
10.1.2 存储器系统结构和通信机制 300
10.1.3 并行处理面临的挑战 302
10.2 对称式共享存储器的系统结构 304
10.2.1 多处理机Cache一致性 304
10.2.2 实现一致性的基本方案 305
10.2.3 监听协议的实现 308
10.3 分布式共享存储器的系统结构 312
10.3.1 目录协议的基本思想 312
10.3.2 目录协议实例 315
10.3.3 目录的三种结构 318
10.4 同步 320
10.4.1 基本硬件原语 320
10.4.2 用一致性实现锁 322
10.4.3 同步性能问题 324
10.5 同时多线程 326
10.5.1 将线程级并行转换为指令级并行 327
10.5.2 同时多线程处理器的设计 328
10.5.3 同时多线程的性能 329
10.6 大规模并行处理机 331
10.6.1 并行计算机系统结构 331
10.6.2 大规模并行处理机 333
10.7 多处理机实例1——T1 335
10.8 多处理机实例2——Origin 2000 339
习题10 346
第11章 多核架构与编程 347
11.1 多核架构的需求 347
11.1.1 功耗与散热问题 347
11.1.2 并行度问题 348
11.1.3 应用软件问题 349
11.2 多核架构 349
11.2.1 多核的组织架构 350
11.2.2 多核架构实例 351
11.3 基于多核的并行程序设计 354
11.3.1 并行编程模型 354
11.3.2 并行语言 355
11.3.3 并行算法 356
11.4 多核编程实例 357
习题11 359
第12章 机群系统 360
12.1 机群的基本结构 361
12.1.1 机群的硬件组成 361
12.1.2 机群的软件 362
12.2 机群的特点 363
12.3 机群的分类 364
12.4 典型机群系统简介 365
12.4.1 Berkeley NOW 365
12.4.2 Beowulf 366
12.4.3 LAMP 366
12.4.4 IBM SP2 367
习题12 368
第13章 阵列处理机 370
13.1 阵列处理机的操作模型和特点 370
13.2 阵列处理机的基本结构 371
13.2.1 分布式存储器的阵列机 371
13.2.2 共享存储器的阵列机 372
13.3 阵列处理机实例 373
13.3.1 实例1:IlliacⅣ阵列处理机 373
13.3.2 实例2:BSP计算机 376
13.4 阵列处理机的并行算法举例 380
习题13 384
第14章 数据流计算机 385
14.1 数据流计算机的基本原理 385
14.1.1 数据驱动原理 385
14.1.2 数据流计算机中指令的执行过程 386
14.1.3 数据流计算机的指令结构 387
14.2 数据流程序图和数据流语言 387
14.2.1 数据流程序图 387
14.2.2 数据流语言及其性质 391
14.3 数据流计算机结构 392
14.3.1 静态数据流计算机 392
14.3.2 动态数据流计算机 394
14.4 数据流计算机的评价 397
14.4.1 数据流计算机的优点 397
14.4.2 数据流计算机的缺点 398
14.4.3 数据流计算机设计中需解决的问题 399
习题14 399
主要参考文献 400