第1章 绪论 1
1.1 计算机结构和组织的领域 1
目录 1
1.2 计算机组织的模型 2
1.2.1 计算机设计过程的层次结构 2
1.2.2 计算机组织的RTL模型 3
1.2.3 计算机系统的性能模型 6
1.3 计算机进化简史 8
1.4 有代表性的计算机系列 9
1.4.1 Pentium系列 9
1.4.2 SPARC系列 10
1.4.3 PowerPC系列 11
1.5.1 十亿晶体管芯片的挑战 12
1.5 计算机进化的前景 12
1.5.2 下一代个人计算机的新角色 13
1.5.3 嵌入式系统 14
1.6 小结 16
第2章 计算机的信息表示 17
2.1 计算机中表示信息的数据类型 17
2.2 定点无符号数的表示 18
2.2.1 一般的位置数制 18
2.2.2 小数的表示 20
2.2.3 不同表示的数之间的转换 21
2.3 定点符号数的表示 24
2.3.1 符号数值表示 24
2.3.2 二进制补码表示 25
2.3.3 二进制补码的使用动机 27
2.3.4 二进制反码表示 29
2.4 二进制加减法 30
2.4.1 符号数值加减法 31
2.4.2 二进制补码加减法 32
2.4.3 二进制反码加减法 34
2.5 利用二进制位串的其他代码制 35
2.5.1 格雷码 35
2.5.2 十进制码 36
2.5.3 字符码 38
2.6 小结 39
习题 39
3.1.1 使用真值表定义组合逻辑函数 43
第3章 组合线路的逻辑设计 43
3.1 组合逻辑函数及表达式 43
3.1.2 原始组合函数和基本逻辑操作 44
3.1.3 布尔代数和逻辑表达式 45
3.1.4 正则逻辑表达式 46
3.2 用于简化逻辑函数的卡诺图 49
3.3 组合逻辑函数的实现 51
3.3.1 AND,OR和NOT门 51
3.3.2 NAND和NOR门 52
3.3.3 XOR和XNOR门 53
3.4 组合逻辑线路的设计 54
3.4.1 全加器的设计 55
9.2.3 同步控制与异步控制 57
3.4.2 用外部线路做减法的波浪进位加减法器 57
3.4.3 双精度加减法 59
3.4.4 用于符号数值表数法的波浪进位加法器 60
3.5 组合逻辑线路的动态特性 62
3.5.1 组合逻辑线路的传递延迟 62
3.5.2 组合逻辑线路的波形图 63
3.5.3 组合逻辑线路中的冒险 64
3.6 MSI组合电路模块 67
3.6.1 多路转接器 68
3.6.2 译码器/多路分离器 72
3.6.3 编码器 73
3.7 可编程逻辑器件 75
3.7.1 可编程逻辑阵列(PLA) 76
3.7.2 只读存储器(ROM) 76
3.7.3 可编程阵列逻辑(PAL) 78
3.7.4 复杂可编程逻辑器件(CPLD) 78
3.7.5 现场可编程门阵列(FPGA) 81
3.8 小结 83
习题 83
第4章 时序线路的逻辑设计 89
4.1 时序线路的普遍模型 89
4.2 触发器 90
4.2.1 简单SR暂存器的分析 90
4.2.2 SR触发器 92
4.2.3 JK触发器 93
4.2.4 T触发器 95
4.2.5 D触发器 96
4.2.6 实际的触发器线路 97
4.3 时序逻辑线路的分析 101
4.3.1 从线路到状态转换图 101
4.3.2 从状态转换图到有限状态机 103
4.4 时序逻辑线路的综合 104
4.5.1 寄存器 107
4.5 MSI时序线路模块 107
4.5.2 移位寄存器 108
4.5.3 计数器 108
4.6 有限状态机的设计 112
4.7 小结 115
习题 116
第5章 算术逻辑单元 121
5.1 冯·诺依曼计算机模型 121
5.2 并行快速加法器 122
5.2.1 进位传递的性质 122
5.2.2 波浪进位并行加法器(再访) 123
5.2.4 分块式先行进位加法器线路 125
5.2.3 四位先行进位加法器 125
5.3 一个商售ALU芯片设计的分析 128
5.3.1 基于加法器的ALU的组织 128
5.3.2 针对逻辑操作进行输入线路的设计 129
5.3.3 ALU用于算术操作的分析 132
5.4 算术逻辑单元的设计方法 134
5.4.1 设计一个利用外接门以实现逻辑操作的ALU 134
5.4.2 设计基于标准ALU芯片的ALU 136
5.4.3 重新设计ALU的输入线路 138
5.4.4 设计利用加法器的内部线路的ALU 141
5.4.5 重新设计加法器的输出线路 143
5.4.6 ALU的不同设计方法的比较 146
5.5 ALU中配备移位器 147
5.5.1 设计一个在ALU中的嵌入式移位器 148
5.5.2 设计作为一个独立单元的移位器 152
5.5.3 鼓形移位器的设计 154
5.6 小结 157
习题 157
6.1.1 二进制补码乘法的基本算法 166
6.1 单精度乘法 166
第6章 复杂算术操作 166
6.1.2 快速乘法 169
6.2 双倍精度乘法 175
6.2.1 对算法的特殊要求 175
6.2.2 双精度正数乘法的算法 176
6.2.3 双精度二进制补码乘法的算法 178
6.3 单精度除法 181
6.4 双精度除法 185
6.4.1 对算法的特殊要求 185
6.4.2 双精度小数除算法 186
6.4.3 双精度整数除算法 187
6.5 浮点操作 190
6.5.1 浮点数的表示 190
6.5.2 浮点数操作算法 193
6.5.3 一个完整的浮点加减算法 194
6.5.4 用时序逻辑实现浮点加减法 195
6.6 小结 196
习题 197
第7章 指令系统结构 201
7.1 指令格式 201
7.2.1 在指令码中指定操作数 205
7.2 寻址方式 205
7.2.2 在寄存器中指定操作数 206
7.2.3 指定存储器中的操作数 206
7.2.4 在汇编语言程序内部指定一个位置 210
7.2.5 寻址方式的实例研究 212
7.3 指令系统设计 214
7.3.1 数移动指令 214
7.3.2 算术逻辑指令 216
7.3.3 控制指令 217
7.4 精简指令系统计算机(RISC) 220
7.5 小结 224
习题 224
第8章 中央处理器 229
8.1 中央处理器的功能和功能部件 229
8.2 CPU的基本组织 230
8.2.1 基于通用寄存器的CPU组织 230
8.2.2 基于累加器的CPU组织 231
8.2.3 基于处理器堆栈的CPU组织 232
8.3 基于累加器的CPU的构造 233
8.3.1 建立在单总线上基于累加器的CPU的设计 234
8.3.2 双总线和三总线基于累加器的CPU的设计 238
8.3.3 设计一个在ALU上构造的基于累加器的CPU 240
8.4 基于通用寄存器的CPU的构造 242
8.4.1 通用寄存器组的构造 243
8.4.2 基于通用寄存器的CPU的设计 244
8.5 CPU位片器件—实例研究 246
8.6 小结 249
习题 249
第9章 控制器 254
9.1 控制器的功能和一般组织 254
9.2 控制线路设计初步 255
9.2.1 控制电位信号与控制脉冲信号 255
9.2.2 一个基于计数器的信号发生器的设计 256
9.2.4 信号发生器的异步线路 258
9.3 算术操作串行控制的设计 264
9.3.1 按位串行加法器的设计 264
9.3.2 串行二进制补码乘法器的设计 268
9.4 一个简单计算机的硬联控制的设计 272
9.4.1 一个简单RISC处理机的规格 272
9.4.2 基本指令周期 275
9.4.3 为指令系统设计操作图 276
9.4.4 控制信号的设计与实现 281
9.4.5 数据路径和定时信号的设计和实现 284
9.5 一个简单计算机微程序控制的设计 289
9.5.1 微程序控制的一般性探讨 289
9.5.2 微程序控制的数据路径设计 291
9.5.3 微程序控制的微指令格式的设计 295
9.5.4 微程序控制的流程图设计 297
9.5.5 获得微程序代码表 301
9.6 小结 303
习题 304
第10章 主级存储器 312
10.1 存储器层次结构 312
10.1.1 存储器系统的层次组织 312
10.1.2 存储器层次结构的功能和性能 312
10.2 主存储器的组织 314
10.2.1 RAM芯片的功能和特性 315
10.2.2 RAM芯片的内部组织 315
10.2.3 访问RAM的基本操作 317
10.2.4 RAM芯片互联以扩大容量 318
10.3 性能优化的RAM技术 320
10.3.1 异步DRAM 321
10.3.2 FPM和EDO 322
10.3.3 同步DRAM(SDRAM) 323
10.3.4 Rambus DRAM(RDRAM) 324
10.3.5 闪烁存储器与EEPROM的对比 325
10.3.6 分割总线 326
10.4 高速缓存 326
10.4.1 存储器访问局部性 327
10.4.2 映射函数 328
10.4.3 写操作策略 334
10.4.4 替换算法 334
10.4.5 高速缓存的组织和性能 335
10.5 主级存储器总体组织 337
10.5.1 串行存储器窄总线组织 337
10.5.2 并行存储器宽总线组织 338
10.5.3 并行存储器窄总线组织 339
10.5.4 交叉存储器窄总线组织 340
10.6 小结 343
习题 343
第11章 输入输出 347
11.1 I/O子系统的功能和特点 347
11.2 次级存储器 349
11.2.1 磁盘 350
11.2.2 廉价冗余磁盘阵列(RAID) 352
11.2.3 光盘 355
11.2.4 磁带 358
11.3 输入输出访问 359
11.3.1 I/0寄存器的寻址 359
11.3.2 程控I/0 360
11.3.3 中断驱动I/O 362
11.3.4 直接存储器访问 364
11.4 异常事件和异常事件处理 366
11.4.1 中断请求和中断回答 366
11.4.2 中断辨认 367
11.4.3 中断服务和中断返回 371
11.5 I/O接口 372
11.5.1 I/O总线规程 372
11.5.2 并行I/O端口 375
11.6 串行I/O数据通信 376
11.6.1 串行传输的时间同步 376
11.6.2 错误检测和纠正码 378
11.6.3 串行接口和I/O端口 389
11.7 总线标准 394
11.7.1 PCI总线 394
11.7.2 SCSI并行接口 397
11.7.3 USB串行总线 401
11.7.4 Fire Wire串行总线 407
11.7.5 开关纤维结构和InfiniBand 409
11.8 小结 411
习题 412
第12章 流水线 416
12.1 流水线的基本概念 416
12.1.1 时间并行性比较空间并行性 417
12.1.2 流水线中的时间并行性 417
12.1.3 流水线的性能 421
12.2 流水线的一般组织 422
12.2.1 同步流水线 422
12.2.2 异步流水线 424
12.3 通过函数分解设计流水线 425
12.3.1 指令流水线的特性 426
12.3.2 数据流样式向流水线的映射 427
12.3.3 流水线基本数据路径的设计 429
12.4 从冒险分析设计流水线数据路径 431
12.4.1 构造冒险 431
12.4.2 数据冒险的一般讨论 432
12.4.3 数据冒险分析 433
12.4.4 控制冒险 440
12.4.5 流水线完整的数据路径 445
12.5 超标量处理机 447
12.5.1 超标量处理机的特性 447
12.5.2 超标量处理机的概念性结构 448
12.5.3 指令发送和指令执行策略 450
12.6 小结 452
习题 452
略语表 458
参考文献 464