1 计算机组成与系统结构综述 1
1.1 概述 1
1.1.1 计算机的基本组成 1
1.1.2 计算机语言和编译器 2
1.1.3 计算机组成和系统结构 5
1.1.4 处理机构成和工作过程 7
1.2 一些基本术语的定义 8
1.3 计算机发展简史 9
1.3.1 早期的机械计算机 9
1.3.2 20世纪30年代的机电计算机 10
1.3.3 电子计算机时代 10
1.4 计算机的性能评价 16
1.5 本书各章内容简介 17
1.6 习题 20
2 逻辑电路设计基础 22
2.1 组合电路 22
2.1.1 逻辑门 22
2.1.2 布尔代数 24
2.1.3 卡诺图化简 26
2.1.4 Quine-McCluskey化简方法 29
2.2 组合电路应用实例 32
2.2.1 一位加法器设计 32
2.2.2 译码器设计 33
2.2.3 编码器设计 34
2.2.4 多路选择器设计 35
2.2.5 移位器设计 36
2.3 时序电路 38
2.3.1 D锁存器 38
2.3.2 D触发器 39
2.3.3 J-K触发器 40
2.3.4 寄存器 40
2.3.5 移位寄存器 43
2.4 时序电路设计 44
2.4.1 有限状态机理论 45
2.4.2 七段显示十进制数双向计数器设计 46
2.5 习题 50
3 计算机算法和算法电路实现 54
3.1 各种数据类型的二进制表示 54
3.1.1 无符号整数 54
3.1.2 小数 55
3.1.3 负数 56
3.1.4 浮点数 58
3.2 加减运算和快速加法器设计 60
3.2.1 补码的加减运算 60
3.2.2 快速加法运算 63
3.3 乘法和高速乘法算法及电路 66
3.3.1 无符号整数乘法及电路 66
3.3.2 高速乘法算法及电路 67
3.4 除法和快速除法电路 72
3.4.1 一般的迭代算法及其电路 72
3.4.2 SRT除法算法 76
3.4.3 Newton-Raphson除法算法 79
3.5 开方算法及电路实现 80
3.5.1 手算开方算法 80
3.5.2 Newton-Raphson开方算法 82
3.5.3 SRT冗余开方算法 83
3.5.4 非冗余开平方算法及电路实现 83
3.6 习题 89
4 计算机指令构成和寻址方式 91
4.1 指令系统概述 91
4.2 操作数类型 95
4.2.1 数字 95
4.2.2 字符 96
4.2.3 数据在存储器中的存放 98
4.2.4 Pentium数据类型 98
4.2.5 SPARC数据类型 100
4.3 指令类型 100
4.3.1 算术运算类型 101
4.3.2 移位操作类型 103
4.3.3 存储器访问类型 103
4.3.4 转移控制类型 104
4.3.5 浮点运算类型 105
4.3.6 Pentium指令类型 105
4.3.7 SPARC指令类型 105
4.4 寻址方式 111
4.4.1 立即数寻址方式 112
4.4.2 直接寻址方式 112
4.4.3 间接寻址方式 112
4.4.4 寄存器寻址方式 112
4.4.5 寄存器间接寻址方式 113
4.4.6 偏移量寻址方式 113
4.4.7 自动增量/减量寻址方式 113
4.4.8 Pentium寻址方式 114
4.4.9 SPARC寻址方式 115
4.5 指令格式 116
4.5.1 指令格式的选择 116
4.5.2 Pentium指令格式 118
4.5.3 SPARC指令格式 120
4.6 习题 123
5 处理机设计——数据路径和控制部件 126
5.1 处理机的基本构成 126
5.2 ALU的设计 128
5.2.1 算术逻辑运算电路 128
5.2.2 运算标志位的产生 129
5.3 寄存器堆的设计 130
5.4 处理机的数据路径 132
5.4.1 取指令电路 132
5.4.2 算术逻辑操作电路 133
5.4.3 存储器访问电路 135
5.4.4 转移控制电路 138
5.4.5 总体数据路径 139
5.5 单周期处理机的控制部件设计 140
5.5.1 控制信号定义 141
5.5.2 处理机执行指令的步骤 142
5.5.3 控制信号的产生 144
5.5.4 单周期处理机的缺点 147
5.6 多周期处理机的控制部件设计 149
5.6.1 多周期处理机总体电路 149
5.6.2 处理机执行指令的5个周期 150
5.6.3 状态转移图及状态转移表 156
5.6.4 输出控制表 160
5.6.5 多周期处理机的性能 164
5.7 微程序控制 164
5.7.1 微程序控制电路结构 165
5.7.2 微指令字段定义 165
5.7.3 微程序设计 167
5.8 异常事件处理 173
5.8.1 异常、陷阱和中断 173
5.8.2 异常事件处理 173
5.9 习题 177
6 流水线处理机及其设计 181
6.1 引言 181
6.2 流水线处理机的数据路径 184
6.2.1 流水线级 184
6.2.2 流水线各级的操作 187
6.3 流水线处理机的控制 191
6.3.1 算术操作和存储器访问控制 192
6.3.2 流水线转移指令控制 200
6.3.3 流水线各级信号的产生 204
6.4 结构相关及解决方法 205
6.5 数据相关及解决方法 208
6.5.1 数据相关问题 208
6.5.2 暂停数据相关流水线 209
6.5.3 提高流水线处理机的性能——内部前推 213
6.5.4 处理load指令——暂停与内部前推相结合 217
6.6 转移相关及解决方法 219
6.6.1 转移相关问题 219
6.6.2 暂停流水线 220
6.6.3 假定转移不发生 221
6.6.4 延迟转移 222
6.7 异常事件处理 223
6.8 习题 225
7 存储器及其设计 229
7.1 存储器概述 229
7.1.1 存储器外部特性 229
7.1.2 存储器性能参数 230
7.1.3 存储器类型 231
7.1.4 计算机存储层次 231
7.2 静态存储器SRAM结构设计 232
7.2.1 一位存储单元结构和一维存储阵列 232
7.2.2 二维存储阵列 234
7.2.3 静态存储器时序 236
7.3 多端口SRAM结构设计 237
7.4 动态存储器DRAM结构设计 238
7.4.1 单管动态存储单元 238
7.4.2 行地址选择和列地址选择 240
7.4.3 动态存储器读写时序 241
7.4.4 动态存储器刷新时序 242
7.4.5 特殊访问方式的动态存储器 244
7.5 只读存储器 245
7.5.1 MROM 245
7.5.2 PROM 246
7.5.3 EPROM 246
7.5.4 EEPROM 247
7.5.5 FLASH EPROM 247
7.6 存储器扩展 248
7.6.1 存储器位扩展 248
7.6.2 存储器字扩展 248
7.6.3 存储器位/字扩展 250
7.7 处理机与存储器模块的连接 251
7.7.1 存储器模块接口 251
7.7.2 多存储器模块的地址映象 252
7.7.3 多存储器模块的交叉访问 253
7.8 习题 254
8 输入输出系统 256
8.1 外部设备 256
8.1.1 显示器 256
8.1.2 键盘和鼠标 258
8.1.3 打印机 259
8.1.4 硬盘 261
8.2 输入输出接口 261
8.2.1 I/O总线和I/O接口 262
8.2.2 分开的I/O空间和存储器映象的I/O空间 262
8.2.3 I/O接口举例 263
8.3 异步数据传输 263
8.3.1 单向选通控制 264
8.3.2 双向握手信号 265
8.3.3 异步串行数据传输 266
8.3.4 异步通信接口 266
8.3.5 先进先出队列 268
8.4 I/O传输控制方式 270
8.4.1 I/O程序查询 271
8.4.2 I/O中断 272
8.4.3 直接存储器访问DMA 272
8.5 优先级中断 272
8.5.1 Daisy-chain优先级 273
8.5.2 并行优先级中断 274
8.6 直接存储器访问DMA 275
8.6.1 DMA控制器 276
8.6.2 DMA传输 277
8.7 出错检测和纠正 278
8.7.1 奇偶校验 278
8.7.2 海明码 279
8.7.3 循环冗余校验 282
8.8 习题 283
9 存储器层次设计——CACHE和虚拟存储器 285
9.1 存储器层次概述 285
9.1.1 三级存储层次 285
9.1.2 CACHE和虚拟存储器的性能 288
9.2 CACHE结构设计 289
9.2.1 直接映象CACHE结构 289
9.2.2 全相联映象CACHE结构 292
9.2.3 组相联映象CACHE结构 294
9.2.4 扇区映象CACHE结构 296
9.2.5 CACHE块替换策略 298
9.2.6 CACHE写策略 299
9.3 虚拟存储器及其管理 300
9.3.1 虚拟存储器分段管理 301
9.3.2 虚拟存储器分页管理 303
9.3.3 逆向页式存储管理 306
9.3.4 段页式存储管理 306
9.3.5 快速地址转换TLB 307
9.3.6 页替换算法 308
9.3.7 存储保护 308
9.4 CACHE与TLB的结合 309
9.4.1 实地址CACHE与TLB 309
9.4.2 虚地址CACHE与TLB 311
9.4.3 用虚地址CACHE取代TLB 312
9.5 习题 314
10 浮点处理机设计 316
10.1 浮点数表示 316
10.1.1 规格化浮点数和特殊浮点数 316
10.1.2 表数范围和表数精度 317
10.1.3 特殊浮点数运算规则 319
10.1.4 IEEE浮点数格式 320
10.2 浮点乘法运算 321
10.2.1 浮点乘法运算规则 321
10.2.2 浮点乘法硬件电路 322
10.3 浮点加减法运算 323
10.3.1 浮点加减运算规则 323
10.3.2 浮点加减硬件电路 325
10.4 浮点除法运算 327
10.4.1 浮点除法运算规则 327
10.4.2 浮点除法硬件电路 328
10.5 浮点开方运算 328
10.5.1 浮点开方运算规则 328
10.5.2 浮点开方硬件电路 329
10.6 浮点运算精度问题 330
10.6.1 警戒位 330
10.6.2 舍入 331
10.6.3 非规格化数 332
10.7 习题 332
11 指令级并行度和超标量处理机 334
11.1 指令级并行度ILP 334
11.2 编译器支持的ILP 335
11.2.1 指令次序重组 335
11.2.2 循环体展开 337
11.2.3 静态寄存器重命名 338
11.2.4 软件流水线 338
11.3 动态指令调度 339
11.3.1 SCOREBOARD调度算法 340
11.3.2 TOMASULO调度算法 343
11.4 减少转移损失 346
11.4.1 动态转移预测和转移预测缓冲区 346
11.4.2 转移目标缓冲区 348
11.4.3 推测执行 350
11.5 ILP处理机结构 353
11.5.1 超标量处理机 353
11.5.2 超长指令字(VLIW)处理机 356
11.6 并行多线程处理机体系结构——PMA 357
11.6.1 PMA的工作原理 358
11.6.2 PMA处理机模型 359
11.7 超标量处理机举例 361
11.7.1 PowerPC 620 361
11.7.2 MIPS R10000 362
11.8 习题 366
12 并行系统的互连网络 367
12.1 互连网络概述 367
12.2 静态网络 369
12.2.1 共享总线 369
12.2.2 线形阵列 370
12.2.3 环 370
12.2.4 二叉树 370
12.2.5 二维网格 371
12.2.6 超立方体 373
12.2.7 n维网格 374
12.2.8 k枝n维立方体 375
12.3 动态网络 376
12.3.1 开关元件和动态网络的分类 376
12.3.2 交叉开关网络 377
12.3.3 阻塞型多级立方体网络 378
12.3.4 阻塞型多级OMEGA网络 380
12.3.5 非阻塞型多级CLOS网络 381
12.3.6 重构型多级BENES网络 381
12.4 静态网络的通信延迟时间 383
12.4.1 存储转发 383
12.4.2 切通 384
12.4.3 死锁和虚拟通道 385
12.5 基本的通信操作 387
12.5.1 一到多广播传送 388
12.5.2 多到多广播传送 389
12.5.3 一到多单独传送 390
12.5.4 多到多单独传送 390
12.6 习题 395
13 多处理机系统 396
13.1 概述 396
13.2 多处理机分类 397
13.2.1 集中共享存储器 397
13.2.2 分布共享存储器 397
13.2.3 CACHE-ONLY存储器 398
13.3 多处理机互连网络 399
13.3.1 总线 399
13.3.2 交叉开关 400
13.3.3 多端口存储器 400
13.3.4 网络性能分析 401
13.4 多处理机CACHE一致性 402
13.4.1 监听CACHE协议 403
13.4.2 目录协议 406
13.5 多处理机举例 410
13.5.1 总线网络SGI Challenge多处理机 410
13.5.2 总线网络SUN Enterprise多处理机 412
13.5.3 超立方体网络 SGI Origin 2000多处理机 414
13.6 习题 418
参考文献 420
中文名词索引 423
英文名词索引 427