第一章 计算机系统结构的基本概念 1
1.1 计算机系统结构 2
1.1.1 计算机系统层次结构 2
1.1.2 计算机系统结构定义 4
1.1.3 计算机组成与实现 5
1.1.4 计算机系统结构的分类 6
1.2 计算机系统设计技术 9
1.2.1 计算机系统设计的定量原理 9
1.2.2 计算机系统设计者的主要任务 13
1.2.3 计算机系统设计的主要方法 14
1.3 系统结构的评价标准 15
1.3.1 性能 15
1.3.2 成本 19
1.4 计算机系统结构的发展 22
1.4.1 冯·诺依曼结构 22
1.4.2 软件对系统结构的影响 23
1.4.3 价格对系统结构的影响 25
1.4.4 应用对系统结构的影响 26
1.4.5 VLSI对系统结构的影响 27
1.4.6 技术的发展对价格的影响 27
1.4.7 算法和系统结构 29
习题一 31
第二章 指令系统 36
2.1 数据表示 36
2.1.1 数据表示与数据类型 36
2.1.2 浮点数据表示 38
2.1.2.1 浮点数的表数范围 39
2.1.2.2 浮点数的表数精度 42
2.1.2.3 浮点数的表数效率 45
2.1.2.4 浮点数尾数基值的选择 46
2.1.2.5 浮点数格式的设计 50
2.1.2.6 浮点数的舍入处理 53
2.1.2.7 警戒位的设置方法 61
2.1.3 自定义数据表示 65
2.1.3.1 带标志符的数据表示法 66
2.1.3.2 数据描述符表示法 69
2.2 寻址技术 71
2.2.1 编址方式 71
2.2.1.1 编址单位 71
2.2.1.2 零地址空间个数 75
2.2.1.3 输入输出设备的非线性编址 77
2.2.1.4 并行存储器的编址技术 78
2.2.2 寻址方式 79
2.2.2.1 寻址方式的设计思想 79
2.2.2.2 间接寻址与变址寻址 81
2.2.2.3 寄存器寻址 83
2.2.2.4 堆栈寻址方式 85
2.2.3 定位方式 85
2.2.3.1 逻辑地址与物理地址 86
2.2.3.2 直接定位方式 87
2.2.3.3 静态定位方式 87
2.2.3.4 动态定位方式 88
2.3 指令格式的优化设计 90
2.3.1 指令的组成 90
2.3.2 操作码的优化表示 91
2.3.2.1 固定长操作码 91
2.3.2.2 Huffman编码法 91
2.3.2.3 扩展编码法 93
2.3.3 地址码的优化表示 95
2.3.3.1 地址码个数的选择 96
2.3.3.2 缩短地址码长度的方法 99
2.3.4 指令格式设计举例 100
2.4 指令系统的功能设计 102
2.4.1 基本指令系统 103
2.4.2 复杂指令系统(CISC) 107
2.4.2.1 目标程序的优化 107
2.4.2.2 对高级语言和编译程序的支持 110
2.4.2.3 操作系统的优化实现 111
2.4.3 精简指令系统(RISC) 111
2.4.3.1 从CISC到RISC 111
2.4.3.2 RISC的定义与特点 115
2.4.3.3 减少指令平均执行周期数是RISC思想的精华 116
2.4.3.4 RISC的关键技术 118
2.4.3.5 RISC优化编译技术 123
习题二 124
第三章 存储系统 130
3.1 存储系统原理 130
3.1.1 存储系统的定义 130
3.1.2 存储器的层次结构 134
3.1.3 频带平衡 136
3.1.4 并行存储器 136
3.1.4.1 并行访问存储器 137
3.1.4.2 交叉访问存储器 138
3.1.4.3 一种无访问冲突存储器 143
3.2 虚拟存储器 146
3.2.1 虚拟存储器工作原理 146
3.2.2 地址的映象与变换 147
3.2.2.1 段式虚拟存储器 148
3.2.2.2 页式虚拟存储器 151
3.2.2.3 段页式虚拟存储器 153
3.2.2.4 外部地址变换 155
3.2.3 加快内部地址变换的方法 157
3.2.3.1 目录表 158
3.2.3.2 快慢表 159
3.2.3.3 散列函数 160
3.2.3.4 虚拟存储器举例 161
3.2.4 页面替换算法及其实现 164
3.2.4.1 页面替换算法 164
3.2.4.2 堆栈型替换算法 166
3.2.4.3 页面替换算法的实现 168
3.2.5 提高主存命中率的方法 169
3.2.5.1 页面大小的选择 170
3.2.5.2 主存容量 171
3.2.5.3 页面调度方式 171
3.3 高速缓冲存储器(Cache) 172
3.3.1 基本工作原理 173
3.3.2 地址映象与变换方法 174
3.3.2.1 全相联映象及其变换 174
3.3.2.2 直接映象及其变换 176
3.3.2.3 组相联映象及其变换 178
3.3.2.4 位选择组相联映象及其变换 182
3.3.2.5 段相联映象及其变换 184
3.3.3 Cache替换算法及其实现 186
3.3.3.1 轮换法及其实现 187
3.3.3.2 LFU算法及其实现 188
3.3.3.3 比较对法 189
3.3.3.4 堆栈法 191
3.3.4 Cache的性能分析 193
3.3.4.1 Cache系统的加速比 193
3.3.4.2 Cache的一致性问题 195
3.3.4.3 Cache的预取算法 198
3.4 三级存储系统 198
3.4.1 虚拟地址Cache 200
3.4.2 全Cache技术 201
习题三 202
第四章 输入输出系统 208
4.1 输入输出原理 208
4.1.1 输入输出系统的特点 208
4.1.1.1 异步性 208
4.1.1.2 实时性 209
4.1.1.3 与设备无关性 210
4.1.2 输入输出系统的组织方式 210
4.1.2.1 自治控制 210
4.1.2.2 层次结构 211
4.1.2.3 分类组织 212
4.1.3 基本输入输出方式 212
4.1.3.1 程序控制输入输出方式 212
4.1.3.2 中断输入输出方式 214
4.1.3.3 直接存储器访问(DMA)方式 215
4.2 中断系统 217
4.2.1 中断源的组织 217
4.2.1.1 中断源的种类 217
4.2.1.2 中断源的分类组织 218
4.2.1.3 中断优先级 219
4.2.2 中断系统的软硬件功能分配 221
4.2.2.1 中断处理过程 222
4.2.2.2 中断响应时间 223
4.2.2.3 识别中断源的查询法 224
4.2.2.4 识别中断源的串行排队链法和中断向量法 225
4.2.2.5 识别中断源的独立请求法 227
4.2.2.6 中断现场的保存和恢复 229
4.2.3 中断屏蔽 230
4.3 通道处理机 233
4.3.1 通道的作用和功能 233
4.3.2 通道的工作过程 235
4.3.3 通道种类 238
4.3.3.1 字节多路通道 238
4.3.3.2 选择通道 239
4.3.3.3 数组多路通道 240
4.3.4 通道中的数据传送过程 241
4.3.5 通道的流量分析 243
4.4 输入输出处理机 245
4.4.1 输入输出处理机的作用 245
4.4.2 输入输出处理机的种类 247
4.4.3 输入输出处理机的特点 248
习题四 250
第五章 标量处理机 253
5.1 先行控制技术 253
5.1.1 指令的重叠执行方式 253
5.1.2 先行控制方式的原理和结构 255
5.1.2.1 处理机结构 256
5.1.2.2 指令执行时序 258
5.1.2.3 先行缓冲栈 259
5.1.2.4 缓冲深度的设计 261
5.1.3 数据相关 263
5.1.3.1 指令相关 264
5.1.3.2 主存操作数相关 265
5.1.3.3 通用寄存器数据相关 266
5.1.3.4 变址相关 268
5.1.4 控制相关 269
5.1.4.1 无条件转移 269
5.1.4.2 一般条件转移 270
5.1.4.3 复合条件转移 272
5.1.4.4 转移预测技术 272
5.1.4.5 短循环程序的处理 274
5.2 流水线处理机 276
5.2.1 流水线工作原理 277
5.2.1.1 从重叠到流水线 277
5.2.1.2 时空图 278
5.2.1.3 流水线的特点 279
5.2.2 流水线的分类 280
5.2.2.1 线性流水线与非线性流水线 280
5.2.2.2 流水线的级别 281
5.2.2.3 单功能与多功能流水线 282
5.2.2.4 静态流水线与动态流水线 283
5.2.3 线性流水线的性能分析 285
5.2.3.1 吞吐率 285
5.2.3.2 加速比 288
5.2.3.3 效率 289
5.2.3.4 流水线最佳段数的选择 291
5.2.3.5 流水线性能分析举例 292
5.2.4 非线性流水线的调度技术 294
5.2.4.1 非线性流水线的表示 295
5.2.4.2 非线性流水线的冲突 296
5.2.4.3 无冲突调度方法 298
5.2.4.4 优化调度方法 301
5.2.5 局部相关 303
5.2.5.1 顺序流动与乱序流动 304
5.2.5.2 数据相关及其避免方法 307
5.2.5.3 数据重定向 308
5.2.5.4 Tomasulo动态指令调度算法 310
5.2.6 全局相关 312
5.2.6.1 转移的影响 312
5.2.6.2 动态转移预测技术 315
5.2.6.3 提前形成条件码 317
5.2.6.4 精确断点与不精确断点 319
5.3 超标量处理机与超流水线处理机 320
5.3.1 超标量处理机 321
5.3.1.1 基本结构 322
5.3.1.2 单发射与多发射 323
5.3.1.3 多流水线调度 326
5.3.1.4 资源冲突 330
5.3.1.5 超标量处理机性能 332
5.3.2 超流水线处理机 332
5.3.2.1 指令执行时序 333
5.3.2.2 典型处理机结构 333
5.3.2.3 超流水线处理机性能 336
5.3.3 超标量超流水线处理机 337
5.3.3.1 指令执行时序 337
5.3.3.2 典型处理机结构 338
5.3.3.3 超标量超流水线处理机性能 341
习题五 342
第六章 向量处理机 347
6.1 向量处理的基本概念 347
6.1.1 什么是向量处理 347
6.1.2 向量处理方式 348
6.2 向量处理机的结构 349
6.2.1 存储器-存储器结构 351
6.2.2 寄存器-寄存器结构 355
6.3 向量处理机的存取模式和数据结构 358
6.3.1 数值算法的存取模式 358
6.3.2 向量处理机的数据结构 361
6.4 提高向量处理机性能的方法 365
6.4.1 向量处理机系统结构的设计目标 365
6.4.2 提高向量处理机性能的常用技术 369
6.5 向量处理机实例 376
6.5.1 向量处理机的历史与现状 376
6.5.2 Cray Y-MP,C-90 379
6.5.3 Fujitsu VP2000和VPP500 381
6.5.4 向量协处理器 383
6.6 向量处理机的性能评价 386
6.7 关于向量处理机的几点看法 389
习题六 391
第七章 互连网络 394
7.1 互连网络的基本概念 394
7.1.1 互连网络的作用 394
7.1.2 互连函数 395
7.1.3 互连网络的特性和传输的性能参数 399
7.1.4 互连网络的种类 402
7.2 消息传递机制 414
7.2.1 消息寻径方式 414
7.2.2 死锁和虚拟通道 418
7.2.3 流控制策略 420
7.2.4 选播和广播寻径算法 425
7.3 互连网络实例 427
7.3.1 总线互连 427
7.3.2 环形互连 430
7.3.3 交叉开关互连 431
7.3.4 混洗交换互连和合并开关 434
7.3.5 Omega网络 436
7.3.6 蝶形操作 439
7.3.7 合并网络和取与加指令 442
习题七 446
第八章 SIMD计算机 451
8.1 SIMD计算机模型 451
8.2 SIMD计算机的基本结构 453
8.2.1 分布式存储器结构 453
8.2.2 共享存储器结构 454
8.2.3 SIMD计算机的特点 455
8.3 SIMD计算机实例 456
8.3.1 Illiac Ⅳ阵列处理机 457
8.3.2 BSP计算机 461
8.3.3 CM-2计算机 466
8.3.4 MasPar MP-1系统 469
8.4 SIMD计算机的应用 473
8.4.1 数值应用问题的特征 473
8.4.2 算法举例 483
8.5 连续模型的结构向何处发展 493
习题八 495
第九章 多处理机 499
9.1 多处理机结构 499
9.1.1 两种多处理机结构 499
9.1.2 多处理机系统的特点 500
9.2 多处理机性能模型 502
9.2.1 基本模型 504
9.2.2 N台处理机系统的基本模型 505
9.2.3 随机模型 507
9.2.4 通信开销为线性函数的模型 507
9.2.5 一个完全重叠通信的理想模型 509
9.2.6 一个具有多条通信链的模型 510
9.2.7 多处理机模型 511
9.3 多处理机的Cache一致性 512
9.3.1 问题由来 513
9.3.2 监听协议 514
9.3.3 基于目录的协议 518
9.4 多处理机实例 521
9.4.1 MPP 521
9.4.2 SMP 528
9.4.3 机群系统 541
9.4.3.1 机群系统的组成、特点和关键技术 541
9.4.3.2 机群系统通信技术 545
9.4.3.3 并行程序设计环境 551
9.4.3.4 机群系统负载平衡技术 555
习题九 560
第十章 多处理机算法 563
10.1 简单并行性 563
10.1.1 do par和do seq结构 565
10.1.2 阻塞同步 566
10.1.3 性能分析 567
10.1.4 增大粒度 568
10.1.5 任务的初始化 571
10.2 同步技术 572
10.2.1 使用测试与设置指令的同步技术 573
10.2.2 使用增1和减1指令的同步技术 575
10.2.3 使用比较与交换指令的同步技术 577
10.2.4 使用取与加指令的同步技术 582
10.3 并行搜索 584
10.3.1 搜索单峰函数的极大值 584
10.3.2 并行分支限界法 586
10.4 串行算法到并行算法的转换 589
10.4.1 相关性分析 590
10.4.2 开发迭代的并行性 591
10.5 同步并行算法和异步并行算法 593
10.5.1 同步并行算法 593
10.5.2 异步并行算法 596
10.6 并行程序设计语言及其实现方法 598
10.6.1 并行程序设计语言的特点 598
10.6.2 并行程序设计模型 599
10.6.3 并行程序设计语言涉及的关键技术 600
10.6.4 并行程序设计语言的实现途径 601
10.7 小结 604
习题十 605
第十一章 计算机系统结构的新发展 607
11.1 数据流计算机 607
11.1.1 数据驱动原理 607
11.1.1.1 串行控制流与并行控制流 608
11.1.1.2 数据流计算机中指令的执行过程 609
11.1.1.3 数据流计算机的指令结构 611
11.1.2 数据流计算机模型 611
11.1.2.1 静态数据流计算机模型 612
11.1.2.2 动态数据流计算机模型 612
11.1.2.3 静态与动态两种数据流计算机的比较 613
11.1.2.4 普遍化的数据流计算机结构 613
11.1.3 数据流计算机的性能分析 614
11.1.3.1 数据流计算机的优点 614
11.1.3.2 数据流计算机的缺点 615
11.1.3.3 数据流计算机设计中需要解决的几个问题 616
11.1.4 数据流程序图和数据流语言 617
11.1.4.1 数据流程序图 617
11.1.4.2 数据流语言 623
11.1.4.3 数据流语言的性质 624
11.1.5 静态数据流计算机结构 626
11.1.5.1 静态数据流计算机的组成 626
11.1.5.2 分块结构的静态数据流计算机 628
11.1.5.3 多处理机结构的静态数据流计算机 630
11.1.5.4 静态数据流计算机作为后端机 631
11.1.6 动态数据流计算机结构 632
11.1.6.1 网络结构的动态数据流计算机 632
11.1.6.2 环形结构的动态数据流计算机 634
11.1.6.3 网状结构的动态数据流计算机 635
11.1.7 其它类型的数据流计算机 637
11.1.7.1 利用传统多处理机结构的数据流计算机 637
11.1.7.2 提高并行级别的数据流计算机 637
11.1.7.3 采用多级并行的数据流计算机 638
11.1.7.4 同步与异步相结合的数据流计算机 639
11.1.7.5 控制流与数据流相结合的数据流计算机 639
11.2 数据库机与知识库机 641
11.2.1 数据库机与知识库机模型 641
11.2.1.1 软件后端机数据库机与知识库机 642
11.2.1.2 智能控制后端机数据库机与知识库机 643
11.2.1.3 硬件后端机数据库机与知识库机 643
11.2.2 数据库机和知识库机在智能计算机系统中的作用 644
11.2.2.1 由数据库机和知识库机构成的智能计算机系统 644
11.2.2.2 数据库机与知识库机作为网络系统中的结点机 644
11.2.2.3 分布式数据库机与知识库机系统 645
11.2.3 数据库机与知识库机系统结构 645
11.2.3.1 数据库机与知识库机的逻辑结构 646
11.2.3.2 数据库机与知识库机的物理结构 646
11.2.3.3 多级存储器结构 647
11.2.3.4 操作执行部件的结构 647
11.2.3.5 智能接口的结构 648
11.2.4 后端机与前端机的接口 649
11.2.4.1 逻辑接口 650
11.2.4.2 物理接口 650
11.2.4.3 后端机与前端机之间的接口选择 651
11.2.5 典型的数据库机与知识库机 652
11.2.5.1 高速数据处理技术 653
11.2.5.2 数据库机的分类 653
11.2.5.3 Relational KBM关系知识库机 654
11.2.5.4 PSI+Delta知识库机结构 655
11.2.5.5 PUKBM知识库机 656
11.3 面向函数程序设计语言的归约机 659
11.3.1 引言 659
11.3.2 函数式语言的归约计算方法 660
11.3.3 图归约的并行实现方法 677
11.3.4 并行图归约机系统结构 692
习题十一 700
第十二章 实验:DLX处理器 703
12.1 DLX基本结构 703
12.1.1 寄存器 703
12.1.2 数据类型 704
12.1.3 数据转移寻址模式 704
12.1.4 指令格式 704
12.1.5 操作 704
12.1.6 效率 709
12.2 DLX流水线结构 712
12.2.1 一个简单实现 712
12.2.2 基本流水线 715
12.2.3 扩展DLX操作使其能处理多周期操作 720
12.2.3.1 在长延迟的流水线中的相关和专用通路 723
12.2.3.2 维持精确的异常处理 725
12.2.3.3 浮点流水线的性能 728
12.3 实验环境与内容 729
12.3.1 实验环境 729
12.3.2 实验内容 729
12.3.2.1 使用WINDLX模拟器,对Fact.s(WINDLX附带的例子)作如下分析 729
12.3.2.2 用DLX汇编语言编写矩阵乘程序,并对该程序做如下分析 729
12.3.2.3 用Intel X86汇编语言编写矩阵乘程序 730
12.3.3 实验总结 730
参考文献 731