目录出版者的话专家指导委员会译者序作者简介前言第1章 计算机的基本结构 1
1.1 计算机的类型 1
1.2 功能部件 2
1.2.1 输入设备 3
1.2.2 存储器 3
1.2.3 运算器 4
1.2.4 输出设备 4
1.2.5 控制器 4
1.3 基本操作概念 5
1.4 总线结构 6
1.5 软件 7
1.6 性能 9
1.6.1 处理器时钟 10
1.6.2 基本性能公式 10
1.6.3 流水线和超标量操作 10
1.6.4 时钟频率 11
1.6.5 指令集:CISC和RISC 11
1.6.6 编译器 12
1.6.7 性能测量 12
1.7 多处理器和多计算机 13
1.8 发展历程 13
1.8.1 第一代计算机 13
1.8.6 性能的发展 14
1.8.5 后第四代计算机 14
1.8.3 第三代计算机 14
1.8.2 第二代计算机 14
1.8.4 第四代计算机 14
1.9 结束语 15
习题 15
参考文献 16
第2章 机器指令和程序 17
2.1 数、算术运算以及字符 18
2.1.1 数的表示 18
2.1.2 正数的加法 19
2.1.3 有符号数的加法和减法 19
2.1.4 整数算术运算中的溢出 21
2.2 内存单元和寻址 22
2.1.5 字符 22
2.2.1 按字节寻址能力 23
2.2.2 big-endian和little-endian分配 23
2.2.3 字的对齐 24
2.2.4 访问数、字符和字符串 24
2.3 存储器操作 24
2.4 指令和指令序列 25
2.4.1 寄存器传送标记 25
2.4.2 汇编语言符号 25
2.4.3 基本指令类型 26
2.4.4 指令执行和线性序列 29
2.4.5 转移 30
2.4.6 条件码 31
2.4.7 生成存储器地址 32
2.5 寻址方式 32
2.5.1 变量和常数的实现 33
2.5.2 间接和指针 34
2.5.3 变址和数组 36
2.5.4 相对寻址 38
2.5.5 附加方式 39
2.6 汇编语言 40
2.6.1 汇编指示 41
2.6.2 程序的汇编和执行 43
2.7 基本输入/输出操作 44
2.6.3 数的表示 44
2.8 堆栈和队列 47
2.9 子程序 50
2.9.1 子程序嵌套及处理器堆栈 51
2.9.2 参数传递 51
2.9.3 堆栈的结构 52
2.10 附加的指令 56
2.10.1 逻辑指令 56
2.10.2 移位和循环移位指令 57
2.10.3 乘法和除法 60
2.11 实例程序 60
2.11.1 向量点积程序 60
2.11.2 字节排序程序 61
2.11.3 链表 62
2.12 机器指令的编码 66
2.13 结束语 69
习题 69
第3章 ARM、Motorola与Intel指令集 73
部分Ⅰ ARM实例 73
3.1 寄存器、内存访问及数据传递 73
3.1.1 寄存器结构 74
3.1.2 内存访问指令和寻址方式 74
3.2 算术和逻辑指令 80
3.2.1 算术指令 80
3.1.3 寄存器传送指令 80
3.2.2 逻辑指令 81
3.3 转移指令 82
3.3.1 设置条件码 83
3.3.2 用于数值相加的循环程序 83
3.4 汇编语言 84
3.5 I/O操作 85
3.6 子程序 86
3.7 实例程序 89
3.7.1 向量点积程序 89
3.7.2 字节排序程序 90
3.7.3 链表的插入和删除子程序 91
3.8.2 寻址方式 93
3.8.1 68000寄存器结构 93
3.8 寄存器与寻址方式 93
部分Ⅱ 68000实例 93
3.9 指令 97
3.10 汇编语言 99
3.11 程序流控制 100
3.11.1 条件码标志 100
3.11.2 转移指令 100
3.12 I/O操作 102
3.13 堆栈和子程序 103
3.14 逻辑指令 107
3.15.2 字节排序程序 108
3.15.1 向量点积程序 108
3.15 实例程序 108
3.15.3 链表的插入和删除子程序 109
部分Ⅲ IA-32 Pentium实例 109
3.16 寄存器和寻址方式 110
3.16.1 IA-32寄存器结构 111
3.16.2 IA-32寻址方式 113
3.17 IA-32指令 116
3.18 IA-32汇编语言 121
3.19 程序流控制 122
3.19.1 条件跳转及条件码标志 122
3.20.2 移位与循环移位操作 123
3.20.1 逻辑操作 123
3.20 逻辑和移位/循环移位指令 123
3.19.2 无条件跳转 123
3.21 I/O操作 124
3.21.1 存储器映射I/O 124
3.21.2 独立I/O 124
3.21.3 块传送 125
3.22 子程序 126
3.23 其他指令 127
3.23.1 乘法与除法指令 128
3.23.2 多媒体扩展(MMX)指令 130
3.24.2 字节排序程序 131
3.24.1 向量点积程序 131
3.24 实例程序 131
3.23.3 向量(SIMD)指令 131
3.24.3 链表的插入与删除子程序 132
3.25 结束语 133
习题 134
参考文献 143
第4章 输入输出组织结构 145
4.1 访问I/O设备 145
4.2 中断 148
4.2.1 中断的硬件 149
4.2.2 中断的允许和禁止 150
4.2.3 处理多台设备 151
4.2.4 控制设备请求 154
4.2.5 异常 155
4.2.6 在操作系统中使用的中断 156
4.3 处理器举例 159
4.3.1 ARM中断结构 159
4.3.2 68000中断结构 163
4.3.3 Pentium的中断结构 164
4.4 直接存储器访问 166
4.5 总线 170
4.5.1 同步总线 171
4.5.2 异步总线 173
4.5.3 讨论 175
4.6.1 并行端口 176
4.6 接口电路 176
4.6.2 串行端口 182
4.7 标准I/O接口 184
4.7.1 外围部件互连(PCI)总线 185
4.7.2 SCSI总线 189
4.7.3 通用串行总线(USB) 193
4.8 结束语 200
习题 200
参考文献 205
第5章 存储器系统 207
5.1 基本概念 207
5.2 半导体随机存储器 209
5.2.1 存储器芯片的内部组织结构 210
5.2.2 静态存储器 211
5.2.3 异步动态随机存储器 212
5.2.4 同步动态随机存储器 214
5.2.5 大容量存储器的结构 216
5.2.6 存储器系统因素 217
5.2.7 Rambus存储器 218
5.3 只读存储器 219
5.3.1 ROM 220
5.3.2 PROM 220
5.3.3 EPROM 220
5.3.4 EEPROM 221
5.3.5 闪存 221
5.4 速度、容量和成本 222
5.5 高速缓存 223
5.5.1 映射功能 224
5.5.2 替换算法 227
5.5.3 映射技术的例子 228
5.5.4 商用处理器中高速缓存的例子 230
5.6 性能因素 233
5.6.1 交叉 233
5.6.2 命中率和失效开销 235
5.6.3 处理器芯片上的高速缓存 237
5.6.4 其他改进 237
5.7 虚拟存储器 239
5.8 存储器管理需求 242
5.9.1 磁性硬盘 243
5.9 辅助存储器 243
5.9.2 光盘 249
5.9.3 磁带系统 253
5.10 结束语 254
习题 255
参考文献 259
第6章 算术运算 261
6.1 有符号数加减法 261
6.2 快速加法器设计 264
6.3 正数乘法 267
6.4 有符号操作数乘法 270
6.5.1 乘数位偶重编码 272
6.5 快速乘法 272
6.5.2 求和项的进位保留加法 273
6.6 整数除法 276
6.7 浮点数及其操作 278
6.7.1 浮点数的IEEE标准 279
6.7.2 浮点数算术运算 281
6.7.3 保护位与截取 282
6.7.4 浮点操作的实现 283
6.8 结束语 285
习题 285
参考文献 290
7.1 一些基本概念 291
第7章 基本处理部件 291
7.1.1 寄存器传送 293
7.1.2 执行算术或逻辑操作 294
7.1.3 从存储器中取出一个字 295
7.1.4 向存储器中存储一个字 296
7.2 一条完整指令的执行 297
7.3 多总线结构 298
7.4 硬件控制 300
7.5 微程序控制 302
7.5.1 微指令 304
7.5.2 微程序的顺序 306
7.5.3 宽转移寻址方式 307
7.5.4 带有下一地址字段的微指令 309
7.5.5 预取微指令 311
7.5.6 仿真 313
7.6 结束语 313
习题 314
第8章 流水线 319
8.1 基本概念 319
8.1.1 高速缓存的作用 321
8.1.2 流水线性能 322
8.2 数据阻塞 324
8.2.1 操作数传递 325
8.2.2 用软件方法处理数据阻塞 326
8.3.1 无条件转移 327
8.3 指令阻塞 327
8.2.3 副作用 327
8.3.2 条件转移和转移预测 330
8.4 对指令集的影响 334
8.4.1 寻址方式 334
8.4.2 条件码 336
8.5 数据通路和控制 336
8.6 超标量操作 338
8.6.1 无序执行 339
8.6.2 执行完成 340
8.6.3 调度操作 341
8.7.1 SPARC体系结构 342
8.7 UltraSPARCⅡ实例 342
8.7.2 UltraSPARCⅡ 346
8.7.3 流水线结构 346
8.8 性能考虑 353
8.8.1 指令阻塞的影响 354
8.8.2 流水线的段数 355
8.9 结束语 355
习题 356
参考文献 358
第9章 嵌入式系统 359
9.1 嵌入式系统的实例 359
9.1.1 微波炉 360
9.1.2 数码照相机 361
9.1.3 家用遥测技术 362
9.2 嵌入式应用中的处理器芯片 363
9.3 一个简单的微控制器 364
9.3.1 并行I/O端口 364
9.3.2 串行I/O接口 366
9.3.3 计数器/定时器 367
9.3.4 中断控制机制 368
9.4 程序设计问题 369
9.4.1 轮询方法 369
9.4.2 中断方法 372
9.5 I/O设备的时序限制 373
9.6 反应计时器实例 374
9.5.2 通过环形缓冲区做传送的汇编语言程序 374
9.5.1 通过环形缓冲区做传送的C程序 374
9.6.1 用于反应计时器的C程序 377
9.6.2 用于反应计时器的汇编语言程序 379
9.6.3 最后评价 380
9.7 嵌入式处理器系列 380
9.7.1 基于Intel 8051的微控制器 381
9.7.2 Motorola微控制器 381
9.7.3 ARM微控制器 382
9.8 设计问题 382
9.9 片上系统 384
9.10 结束语 386
习题 387
参考文献 389
第10章 计算机外围设备 391
10.1 输入设备 391
10.1.1 键盘 392
10.1.2 鼠标 392
10.1.3 跟踪球、操作杆和触摸垫 392
10.1.4 扫描仪 394
10.2 输出设备 394
10.2.1 视频显示器 394
10.2.2 平面显示器 395
10.2.3 打印机 396
10.2.4 图形加速卡 396
10.3 串行通信连接 398
10.3.1 异步传输 400
10.3.2 同步传输 401
10.3.3 标准通信接口 404
10.4 结束语 405
习题 405
第11章 处理器系列 409
11.1 ARM系列 410
11.1.1 Thumb指令集 410
11.1.2 处理器和CPU内核 411
11.2 Motorola 680XO和ColdFire系列 412
11.2.1 68020处理器 412
11.2.4 ColdFire系列 414
11.2.3 68060处理器 414
11.2.2 68030和68040处理器的改进 414
11.3 IntelIA-32系列 415
11.3.1 IA-32存储器分段 415
11.3.2 16位模式 416
11.3.3 80386和80486处理器 417
11.3.4 Pentium处理器 417
11.3.5 Pentium Pro处理器 417
11.3.6 Pentium Ⅱ和Pentium Ⅲ处理器 418
11.3.7 Pentium 4处理器 418
11.4.1 寄存器集 419
11.4.3 指令 419
11.4.2 存储器寻址方式 419
11.4 PowerPC系列 419
11.3.8 AMD公司的IA-32处理器 419
11.4.4 PowerPC处理器 420
11.5 Sun公司SPARC系列 421
11.6 康柏ALPHA系列 422
11.6.1 指令和寻址方式的格式 422
11.6.2 ALPHA 21064处理器 423
11.6.3 ALPHA 21164处理器 423
11.6.4 ALPHA 21264处理器 423
11.7 Intel IA-64系列 424
11.7.1 指令包 424
11.7.2 条件执行 424
11.7.4 寄存器和寄存器堆栈 425
11.7.3 推测性装入 425
11.7.5 Itanium处理器 427
11.8 堆栈处理器 427
11.8.1 堆栈结构 428
11.8.2 堆栈指令 430
11.8.3 堆栈中的硬件寄存器 433
11.9 结束语 433
习题 434
参考文献 435
第12章 大型计算机系统 437
12.1 并行处理的形式 438
12.2 阵列处理器 439
12.3 通用多处理器结构 440
12.4 互连网络 441
12.4.1 信号总线 442
12.4.2 纵横(Crossbar)网络 443
12.4.3 多段网络 444
12.4.4 超立方体网络 445
12.4.5 网状网络 446
12.4.6 树状网络 446
12.4.7 环状网络 447
12.4.8 实用性因素 448
12.4.9 混合拓扑网络 450
12.4.10 对称式多处理器 450
12.5 多处理器的存储器组织结构 451
12.6 程序并行性与共享变量 452
12.6.1 共享变量访问 452
12.6.2 高速缓存一致性 454
12.6.3 加锁和高速缓存一致性 456
12.7 多计算机 456
12.7.1 局域网 457
12.7.2 以太网(CSMA/CD)总线 457
12.7.3 令牌环 458
12.7.4 工作站网络 458
12.8 共享存储器和消息传递实例 458
12.8.1 共享存储器实例 459
12.8.2 消息传递实例 461
12.9 性能因素 462
12.9.1 Amdahl定律 463
12.9.2 性能指标 464
12.10 结束语 464
习题 465
参考文献 467
附录A 逻辑电路 469
附录B ARM指令集 519
附录C Motorola 68000指令集 533
附录D Intel IA-32指令集 549
附录E 字符编码与数的转换 565
索引 569