《计算机系统组成与体系结构》是2003年人民邮电出版社出版的图书,作者是(美)卡帕里。本书详述了有关计算机及其子系统设计的基本概念及相关知识。
全书由三大部分组成:第一部分是数字逻辑和有限状态机,介绍了布尔代数基础、数字部件、组合逻辑和顺序逻辑、可编程逻辑器件。有限状态机是全书的基础。第二部分是计算机组成和系统结构,内容包括指令集系统结构、计算机组成、寄存器传输语言、CPU设计、控制部件设计、算术运算、存储器结构、I/O结构。第三部分是高级专题,内容包括RISC计算机和并行处理。 《计算机系统组成与体系结构》内容适度、可读性好、实用性强,适合作为计算机工程、计算机科学、电子工程、信息系统等专业的计算机体系结构课程的教材。
目录
- 第一部分 数字逻辑与有限状态机
- 第1章 数字逻辑基础 3
- 1.1 布尔代数 3
- 1.1.1 基本函数 4
- 1.1.2 布尔函数的使用 5
- 1.2 基本的组合逻辑 9
- 1.3 更复杂的组合元件 11
- 1.3.1 多路选择器 11
- 1.3.2 译码器 13
- 1.3.3 编码器 14
- 1.3.4 比较器 16
- 1.3.5 加法器和减法器 18
- 1.3.6 存储器 20
- 1.4 组合电路设计 21
- 1.4.1 BCD码的7段译码器 22
- 1.4.2 数据排序器 24
- 1.5 基本时序元件 25
- 1.6 更复杂的时序元件 28
- 1.6.1 计数器 28
- 1.6.2 移位寄存器 30
- 1.7 实例:可编程逻辑设备 31
- 1.8 总结 33
- 1.9 习题 34
- 第2章 介绍有限状态机 37
- 2.1 状态图和状态表 38
- 2.2 Mealy机和Moore机 41
- 2.3 设计状态图 41
- 2.3.1 模6计数器 42
- 2.3.2 串检查器 43
- 2.3.3 收费站控制器 44
- 2.4 从状态图到实现 48
- 2.4.1 状态赋值 49
- 2.4.2 Mealy机和Moore机的实现 50
- 2.4.3 产生次态 51
- 2.4.4 产生系统输出 55
- 2.4.5 一种可替代的设计 58
- 2.4.6 八状态串检查器 59
- 2.5 实例:实际考虑 61
- 2.5.1 未使用状态 61
- 2.5.2 异步设计 63
- 2.5.3 状态机转换 66
- 2.6 总结 67
- 2.7 习题 68
- 第二部分 计算机组成与体系结构
- 第3章 指令集结构 75
- 3.1 程序设计语言的级别 76
- 3.1.1 语言种类 76
- 3.1.2 编译和汇编程序 76
- 3.2 汇编语言指令 79
- 3.2.1 指令类型 80
- 3.2.2 数据类型 81
- 3.2.3 寻址方式 82
- 3.2.4 指令格式 84
- 3.3 指令集结构设计 86
- 3.4 相对简单的指令集结构 87
- 3.5 实例:8085微处理器指令集结构 92
- 3.5.1 8085微处理器的寄存器组 92
- 3.5.2 8085微处理器指令集 93
- 3.5.3 一个简单的8085程序 97
- 3.5.4 分析8085指令集结构 98
- 3.6 总结 99
- 3.7 习题 99
- 第4章 介绍计算机组成 102
- 4.1 基本的计算机组成 102
- 4.1.1 系统总线 103
- 4.1.2 指令周期 104
- 4.2 CPU组成 106
- 4.3 存储器子系统组成和接口 107
- 4.3.1 存储器的种类 107
- 4.3.2 芯片内部组成 109
- 4.3.3 存储器子系统配置 110
- 4.3.4 多字节数据组成 114
- 4.3.5 基本功能的拓展 115
- 4.4 I/O子系统组成和接口 115
- 4.5 相对简单计算机 117
- 4.6 实例:一台基于8085的计算机 120
- 4.7 总结 123
- 4.8 习题 124
- 第5章 寄存器传送语言 126
- 5.1 微操作和寄存器传送语言 127
- 5.2 用RTL描述数字系统 132
- 5.2.1 数字元件 132
- 5.2.2 简单系统的描述与实现 133
- 5.3 更复杂的数字系统和RTL 136
- 5.3.1 模6计数器 137
- 5.3.2 收费站控制器 139
- 5.4 实例:VHDL-VHSIC硬件描述语言 143
- 5.4.1 VHDL语法 144
- 5.4.2 高层抽象的VHDL设计 146
- 5.4.3 低层抽象的VHDL设计 149
- 5.5 总结 151
- 5.6 习题 151
- 第6章 CPU设计 154
- 6.1 CPU的设计规范 154
- 6.2 非常简单CPU的设计与实现 155
- 6.2.1 非常简单CPU的设计规范 155
- 6.2.2 从存储器中取指令 156
- 6.2.3 指令译码 157
- 6.2.4 指令执行 158
- 6.2.5 建立所需的数据通路 160
- 6.2.6 非常简单ALU的设计 163
- 6.2.7 用硬连线控制设计控制单元 164
- 6.2.8 设计验证 168
- 6.3 相对简单CPU的设计和实现 169
- 6.3.1 相对简单CPU的规范 169
- 6.3.2 取指令和指令译码 171
- 6.3.3 执行指令 172
- 6.3.4 创建数据通路 176
- 6.3.5 相对简单ALU的设计 179
- 6.3.6 用硬连线控制设计控制单元 181
- 6.3.7 设计验证 183
- 6.4 简单CPU的缺点 183
- 6.4.1 更多的内部寄存器和高速缓存 183
- 6.4.2 CPU内部的多总线 184
- 6.4.3 指令流水线式处理 185
- 6.4.4 更大的指令集 186
- 6.4.5 子程序和中断 187
- 6.5 实例:8085微处理器的内部结构 187
- 6.6 总结 189
- 6.7 习题 189
- 第7章 微序列控制单元设计 194
- 7.1 微序列控制器设计基础 194
- 7.1.1 微序列控制器的操作 194
- 7.1.2 微指令格式 196
- 7.2 非常简单微序列控制器的设计和实现 197
- 7.2.1 基本布局 197
- 7.2.2 生成正确序列并设计映象逻辑 198
- 7.2.3 用水平微代码生成微操作 199
- 7.2.4 用垂直微代码生成微操作 201
- 7.2.5 从微代码直接产生控制信号 205
- 7.3 相对简单微序列控制器的设计和实现 206
- 7.3.1 修改状态图 206
- 7.3.2 设计顺序硬件和微代码 207
- 7.3.3 用水平微代码完成设计 210
- 7.4 减少微指令数 212
- 7.4.1 微子程序 212
- 7.4.2 微代码跳转 215
- 7.5 微程序控制和硬连线控制的比较 216
- 7.5.1 指令集的复杂度 217
- 7.5.2 修改的容易度 217
- 7.5.3 时钟速度 217
- 7.6 实例:一个(大部分是)微代码的CPU:奔腾微处理器 217
- 7.7 总结 219
- 7.8 习题 219
- 第8章 运算方法 222
- 8.1 无符号表示法 223
- 8.1.1 加法和减法 223
- 8.1.2 乘法 226
- 8.1.3 除法 234
- 8.2 带符号表示法 241
- 8.2.1 符号幅值表示法 242
- 8.2.2 符号补码表示法 246
- 8.3 BCD码(binary coded decimal) 246
- 8.3.1 BCD码的格式 247
- 8.3.2 加法和减法 247
- 8.3.3 乘法和除法 251
- 8.4 专用运算部件 252
- 8.4.1 流水线 253
- 8.4.2 查找表 255
- 8.4.3 华莱士树 256
- 8.5 浮点数 259
- 8.5.1 数据格式 260
- 8.5.2 数据性质 260
- 8.5.3 加法和减法 262
- 8.5.4 乘法和除法 265
- 8.6 实例:IEEE 754 浮点标准 267
- 8.6.1 格式 268
- 8.6.2 非规范数 269
- 8.7 总结 269
- 8.8 习题 270
- 第9章 存储器结构 273
- 9.1 存储器的层次结构 273
- 9.2 cache存储器 274
- 9.2.1 相联存储器 274
- 9.2.2 相联映象的cache存储器 276
- 9.2.3 直接映象的cache存储器 278
- 9.2.4 组相联映象的cache存储器 279
- 9.2.5 在cache中替换数据 281
- 9.2.6 写数据到cache 283
- 9.2.7 cache的性能 284
- 9.3 虚拟存储器 287
- 9.3.1 分页 288
- 9.3.2 分段 294
- 9.3.3 存储保护 296
- 9.4 基本cache和虚拟存储器的扩展 297
- 9.4.1 基本cache的扩展 297
- 9.4.2 基本虚拟存储器的扩展 298
- 9.5 实例:Pentium/Windows个人计算机上的内存管理 299
- 9.6 总结 300
- 9.7 习题 300
- 第10章 输入输出结构 305
- 10.1 异步数据传输 305
- 10.1.1 源启动的数据传送 306
- 10.1.2 目的启动的数据传送 307
- 10.1.3 握手 308
- 10.2 可编程I/O 309
- 10.2.1 新指令 313
- 10.2.2 新控制信号 313
- 10.2.3 新状态和RTL代码 313
- 10.2.4 修改CPU硬件以支持新指令 314
- 10.2.5 确保其他指令正常工作 315
- 10.3 中断 315
- 10.3.1 CPU和I/O设备之间的数据传送 315
- 10.3.2 中断类型 317
- 10.3.3 中断处理 317
- 10.3.4 中断硬件和优先级 319
- 10.3.5 CPU内部中断实现 323
- 10.4 直接存储器访问 325
- 10.4.1 将直接存储器访问(DMA)纳入计算机系统 325
- 10.4.2 DMA传输方式 327
- 10.4.3 修改CPU使其与DMA共处 328
- 10.5 I/O处理器 329
- 10.6 串行通信 332
- 10.6.1 串行通信原理 332
- 10.6.2 通用异步收发器(UART) 334
- 10.7 实例:串行通信标准 336
- 10.7.1 RS-232-C标准 336
- 10.7.2 通用串行总线标准 337
- 10.8 总结 338
- 10.9 习题 339
- 第三部分 高级专题
- 第11章 精简指令集计算 345
- 11.1 RISC基本原理 345
- 11.1.1 定长指令 346
- 11.1.2 只有LOAD和STORE的指令访问存储器 346
- 11.1.3 较少的寻址方式 346
- 11.1.4 指令流水线 346
- 11.1.5 大量的寄存器 347
- 11.1.6 硬连线控制单元 347
- 11.1.7 延时载入和分支 347
- 11.1.8 指令的预测执行 347
- 11.1.9 优化编译器 348
- 11.1.10 分离指令和数据流 348
- 11.2 RISC指令集 348
- 11.3 指令流水线和寄存器窗口 350
- 11.3.1 指令流水线 350
- 11.3.2 寄存器窗口和重命名 353
- 11.4 指令流水线冲突 356
- 11.4.1 数据冲突 356
- 11.4.2 分支冲突 359
- 11.5 RISC与CISC的比较 363
- 11.6 实例:Itanium微处理器 363
- 11.7 小结 365
- 11.8 习题 366
- 第12章 介绍并行处理 369
- 12.1 单处理机系统中的并行机制 369
- 12.2 多处理机系统的组织结构 372
- 12.2.1 弗林分类法 372
- 12.2.2 系统拓扑结构 373
- 12.2.3 MIMD系统的体系结构 375
- 12.3 多处理机系统中的通信 378
- 12.3.1 固定连接 379
- 12.3.2 可重构连接 380
- 12.3.3 多级互连网络(MIN)的路由 384
- 12.4 多处理机系统中的存储器管理 388
- 12.4.1 共享存储器 388
- 12.4.2 Cache一致性 390
- 12.5 多处理机操作系统和软件 393
- 12.6 并行算法 394
- 12.6.1 并行冒泡排序 395
- 12.6.2 并行矩阵乘法 396
- 12.7 其他的并行体系结构 399
- 12.7.1 数据流计算 399
- 12.7.2 脉动阵列 403
- 12.7.3 神经网络 406
- 12.8 小结 406
- 12.9 习题 407