3.1 高级语言和机器指令中的运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯52

第 3 版 · OCR 辅助 · 原书检索 · 文字用于定位,公式与图表请回原页核验 · 本次导入快照

#### 3.1 高级语言和机器指令中的运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯52
##### 3.1.1 C语言程序中涉及的运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯52
##### 3.1.2 MIPS 指令中涉及的运算 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯54
#### 3.2 基本运算部件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯55
##### 3.2.1 全加器和加法器⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯55
##### 3.2.2 并行进位加法器⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯56
##### 3.2.3 带标志加法器⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯58
##### 3.2.4 算术逻辑部件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯59
#### 3.3 定点数运算 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯59
##### 3.3.1 补码加减运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯60
·3.3.2 原码加减运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯61
##### 3.3.3 原码乘法运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯62
##### 3.3.4 补码乘法运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯65
·3.3.5 快速乘法器⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯67
##### 3.3.6 原码除法运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯69
##### 3.3.7 补码除法运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯74
#### 3.4 整数乘除运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯76
##### 3.4.1 乘除运算溢出判断⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯76


<!-- page: 12 -->

目录
##### 3.4.2 常量的乘除运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯78
#### 3.5 浮点数运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯80
##### 3.5.1 浮点数加减运算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯80
##### 3.5.2 浮点运算的精度和舍入⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯83
·3.5.3 浮点数乘/除运算 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯85
#### 3.6 本章小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯87
习题 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯88
## 第4章 指令系统 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯91
#### 4.1 指令格式设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯91
##### 4.1.1 指令地址码的个数⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯91
##### 4.1.2 指令格式设计原则⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯92
#### 4.2 指令系统设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯92
##### 4.2.1 基本设计问题⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯92
##### 4.2.2 操作数类型⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯93
##### 4.2.3 寻址方式⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯94
##### 4.2.4 操作类型⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯96
##### 4.2.5 操作码编码⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯97
##### 4.2.6 标志信息的生成与使用⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯98
##### 4.2.7 指令系统设计风格⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯99
##### 4.2.8 异常和中断处理机制 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯101
#### 4.3 程序的机器级表示 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯102
##### 4.3.1 MIPS汇编语言和机器语言 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯103
##### 4.3.2 选择结构的机器代码表示 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯107
##### 4.3.3 循环结构的机器代码表示 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯108
##### 4.3.4 过程调用的机器代码表示 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯109
·4.4 指令系统实例:RISC-V架构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯115
##### 4.4.1 RISC-V指令系统概述 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯115
·4.4.2 RISC-V指令参考卡 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯116
##### 4.4.3 基础整数指令集 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯119
#### 4.5 本章小结 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯124
习题⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯124
## 第5章中央处理器 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯129
#### 5.1 CPU概述 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯129
##### 5.1.1 CPU的基本功能⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯129
##### 5.1.2 CPU的基本组成⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯130
##### 5.1.3 数据通路与时序控制 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯132
5,2 单周期处理器设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯133
K


<!-- page: 13 -->

计算机组成与系统结构(第3版)
##### 5.2.1 指令功能的描述 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯134
##### 5.2.2 数据通路的设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯135
##### 5.2.3 控制器的设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯143
##### 5.2.4 时钟周期的确定 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯149
#### 5.3 多周期处理器设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯150
##### 5.3.1 多周期处理器设计思想 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯150
##### 5.3.2 多周期数据通路设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯151
##### 5.3.3 硬连线控制器设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯154
##### 5.3.4 微程序控制器设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯156
#### 5.4 带异常处理的处理器设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯158
##### 5.4.1 CPU 对异常和中断的处理⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯158
##### 5.4.2 带异常处理的数据通路设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯160
##### 5.4.3 带异常处理的有限状态机 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯161
#### 5.5 本章小结 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯162
习题⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯162
## 第6章指令流水线 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯165
#### 6.1 流水线概述 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯165
##### 6.1.1 流水线的执行效率 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯165
##### 6.1.2 适合流水线的指令集特征 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯166
#### 6.2 流水线处理器的实现 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯167
##### 6.2.1 每条指令的流水段分析 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯167
##### 6.2.2 流水线数据通路的设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯168
##### 6.2.3 流水线控制器的设计 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯173
#### 6.3 流水线冒险及其处理 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯174
##### 6.3.1 结构冒险 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯174
##### 6.3.2 数据冒险 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯176
##### 6.3.3 控制冒险 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯182
#### 6.4 高级流水线技术 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯191
·6.4.1 静态多发射处理器 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯191
##### 6.4.2 动态多发射处理器 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯195
·6.4.3 Pentium 4处理器的流水线结构 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯199
#### 6.5 本章小结 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯202
习题⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯203
## 第7章存储器层次结构 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯206
#### 7.1 存储器概述 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯206
##### 7.1.1 存储器的分类 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯206
##### 7.1.2 主存储器的组成和基本操作 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯207


<!-- page: 14 -->

目录
##### 7.1.3 存储器的层次化结构 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯208
#### 7.2 半导体随机存取存储器 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯209
##### 7.2.1 基本存储元件 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯209
##### 7.2.2 SRAM芯片和DRAM芯片 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯210
##### 7.2.3 SDRAM芯片技术 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯213
##### 7.2.4 内存条和内存条插槽 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯214
##### 7.2.5 存储器芯片的扩展 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯215
##### 7.2.6 多模块存储器 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯217
#### 7.3 外部辅助存储器 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯218
##### 7.3.1 磁盘存储器的结构 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯219
##### 7.3.2 磁盘存储器的性能指标 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯220
##### 7.3.3 磁盘存储器的连接 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯222
·7.3.4 冗余磁盘阵列 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯222
*7.3.5 Flash存储器和U盘 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯223
·7.3.6 固态硬盘 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯225
#### 7.4 存储器的数据校验 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯225
##### 7.4.1 数据校验基本原理 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯225
##### 7.4.2 奇偶校验码 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯226
·7.4.3 海明校验码 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯227
##### 7.4.4 循环冗余校验码 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯231
#### 7.5 高速缓冲存储器 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯233
##### 7.5.1 程序访问的局部性 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯233
##### 7.5.2 cache 的基本工作原理⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯235
##### 7.5.3 cache行和主存块之间的映射方式⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯237
##### 7.5.4 cache 中主存块的替换算法⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯244
##### 7.5.5 cache的一致性问题⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯247
·7.5.6 cache 缺失对总体性能的影响⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯248
·7.5.7 cache 设计应考虑的问题⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯249
##### 7.5.8 cache结构举例⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯251
#### 7.6 虚拟存储器 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯252
##### 7.6.1 虚拟存储器的基本概念 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯252
##### 7.6.2 进程的虚拟地址空间 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯253
##### 7.6.3 虚拟存储器的实现 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯255
##### 7.6.4 存储保护 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯263
#### 7.7 本章小结 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯267
习题⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯267
## 第8章系统互连及输入输出组织 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯273
#### 8.1 外部设备的分类与特点 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯273
N


<!-- page: 15 -->

计算机组成与系统结构(第3版)
N
##### 8.1.1 外设的分类 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯273
##### 8.1.2 外设的特点 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯274
·8.2 常用输入输出设备 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯274
·8.2.1 键盘 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯274
·8.2.2 打印机 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯275
·8.2.3 显示器 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯277
#### 8.3 外设与CPU 和主存的互连⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯278
##### 8.3.1 总线的基本概念 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯278
##### 8.3.2 基于总线的互连结构 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯280
##### 8.3.3 I/O接口的功能 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯283
##### 8.3.4 1/O接口的通用结构 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯285
##### 8.3.5 I/O端口及其编址 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯286
#### 8.4 I/O数据传送控制方式 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯288
##### 8.4.1 程序直接控制I/O方式 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯288
##### 8.4.2 中断控制I/O方式 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯291
##### 8.4.3 DMA方式 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯301
8.5内核空间I/O软件 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯304
##### 8.5.1 I/O子系统概述 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯304
##### 8.5.2 与设备无关的I/O软件 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯306
##### 8.5.3 设备驱动程序 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯308
##### 8.5.4 中断服务程序 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯309
#### 8.6 本章小结 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯309
习题⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯310
## 第9章 并行处理系统 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯313
#### 9.1 并行处理系统概述 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯313
##### 9.1.1 并行处理的主要技术问题 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯313
##### 9.1.2 并行处理系统的分类 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯315
#### 9.2 多处理器系统 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯317
##### 9.2.1 UMA多处理器结构 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯318
##### 9.2.2 NUMA多处理器结构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯320
##### 9.2.3 多处理器系统中的互连网络 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯322
##### 9.2.4 多核处理器和硬件多线程技术 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯323
·9.2.5 共享存储器的同步控制 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯325
·9.3 多计算机系统 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯329
·9.3.1 集群多计算机系统 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯330
·9.3.2 网格多计算机系统 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯333


<!-- page: 16 -->

目录
·9.4 向量处理机和 SIMD技术 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯333
·9.4.1 向量计算机 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯334
·9.4.2 Intel架构中的 SIMD技术 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯335
·9.4.3 GPU架构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯338
·9.5 并行处理编程模式简介 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯340
#### 9.6 本章小结 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯343
参考文献 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯345
Ⅱ


<!-- page: 18 -->

第1
章
计算机系统概述
本章主要介绍计算机的发展历程、计算机系统的基本组成、计算机系统层次结构、程序
开发和执行过程,以及计算机系统的性能评价。
1.1计算机的发展历程
*1.1.1通用电子计算机的诞生
世界上第一台真正意义上的电子数字计算机是在1935—1939年由美国艾奥瓦州立大
学物理系副教授阿塔那索夫(John Vincent Atanasoff)和其合作者贝瑞(Clifford Berry,当
时还是物理系的研究生)研制成功的,用了300个电子管,取名为ABC(Atanasoff-Berry
Computer)。不过这台机器只是个样机,并没有完全实现阿塔那索夫的构想。
1946年2月,美国成功研制了真正实用的电子数字计算机 ENIAC(Electronic Numerical
Integrator and Computer,电子数字积分机和计算机)。其设计思想基本来源于ABC,但采
用了更多的电子管,运算能力更强大。它的负责人是莫克利(John W.Mauchly)和艾克特
(J.Presper Eckert)。他们制造完 ENIAC后就立刻申请获得了美国专利。就是这个专利
导致了 ABC和 ENIAC 之间长期的“世界第一台电子计算机”的头衔之争。
1973年,美国明尼苏达地区法院给出了正式宣判,推翻并吊销了莫克利的专利。现在
国际计算机界公认的事实是:第一台电子计算机的真正发明人是阿塔那索夫。阿塔那索夫
在国际计算机界也被称为“电子计算机之父”。
虽然莫克利等人失去了专利,但是他们的功劳还是不能抹杀的,毕竟是他们按照阿塔那
索夫的思想完整地制造出了真正意义上的电子数字计算机。莫克利于1932年获得著名的
霍普金斯大学物理学博士学位并留校任教,1941年转人宾夕法尼亚大学,他常常为物理学
研究中屡屡出现的大量枯燥、烦琐的数学运算而头痛,渴望电子计算机的帮忙。一天,他偶
然发现艾奥瓦州立大学的阿塔那索夫正在试制电子计算机,莫克利深感鼓舞,立即启程拜
访。阿塔那索夫热情接待了这位志同道合的“不速之客”,毫无保留地介绍了研制情况,并无
私地把记录着有关电子计算机设计的珍贵笔记本交给了莫克利。莫克利认真研究了阿塔那
索夫的方案,于1942年写出了一份题为《高速电子管装置的使用》的报告。该报告很快引起
了一个年轻人——23岁的研究生艾克特——的兴趣,于是,师生密切协作,开始了电子计算
机的研制。当时正值第二次世界大战期间,军方急需一种高速电子装置来解决弹道的复杂


<!-- page: 19 -->

计算机组成与系统结构(第3版)
2
计算问题,莫克利与艾克特的方案在1943年得到了军方的支持。在冯·诺依曼(John von
Neumann)等人的帮助下,他们经过两年多的努力,终于研制成了第一台实用的电子计算
机。1946年2月,美国陆军军械部与摩尔学院共同举行新闻发布会,宣布了ENIAC研制成
功的消息。
ENIAC能进行每秒5000次加法运算,每秒400次乘法运算以及平方和立方、sin 和 cos
函数数值运算。当时主要用它来进行弹道参数计算,60s射程的弹道计算时间由原来的
20min一下子缩短到仅需30s。ENIAC是个庞然大物,耗资40多万美元,使用了18800个
电子管,重30t,占地面积170m2,耗电功率约150kW,第一次开机时甚至导致整个费城地区
的照明都闪烁变暗。该机正式运行到1955年10月2日,这10年间共运行了80 223h。
自从第一台实用的通用电子计算机 ENIAC 诞生后,人类社会进入了一个崭新的电子
计算和信息化时代。计算机硬件早期的发展受电子开关器件的影响极大,为此,传统上人们
以元器件的更新作为计算机技术进步和划代的主要标志。
·1.1.2元器件的更新与体系结构的发展
第一代计算机(20世纪40年代中期到 20世纪 50年代末)为电子管计算机。其逻辑元
件采用电子管,存储器件为声延迟线或磁鼓,典型逻辑结构为定点运算,采用低级编程语言
(早期为机器语言,后期为汇编语言)编制程序。电子管计算机体积大,耗电多,速度慢(每秒
计算千次或万次),存储器容量小。
第一代计算机的典型代表是冯·诺依曼及其同事在普林斯顿高级研究院(Institute for
Advance Study at Princeton,IAS)于1946年开始设计的“存储程序”计算机。该机被称为
IAS计算机,它是后来通用计算机的原型。
当时冯·诺依曼在参加原子弹的研制工作中遇到了极为困难的计算问题。1944年夏
的一天,冯·诺依曼巧遇正在参与ENIAC研制工作的美国弹道实验室军方负责人戈尔斯
坦,冯·诺依曼被戈尔斯坦介绍加入ENIAC研制组。在设计和研制ENIAC的过程中,研
制小组意识到ENIAC还存在很多问题,例如,没有存储器,也没有采用二进制的表示方式。
1945年,在共同讨论的基础上,冯·诺依曼以《关于EDVAC的报告草案》为题,起草了长达
101页的总结报告,发表了全新的“存储程序(stored-program)通用电子计算机方案”,宣告
了现代计算机结构思想的诞生。
“存储程序”方式的基本思想是:必须将事先编好的程序和原始数据送入主存后才能执
行程序,一旦程序被启动执行,计算机能在不需操作人员干预下自动完成逐条取出指令并执
行的任务。
第二代计算机(20世纪50年代中后期到 20世纪 60年代中期)为晶体管计算机。1947
年,美国贝尔实验室的三位科学家发明了晶体管,为计算机的发展提供了新的器件技术基
础。该实验室于1954年研制了晶体管计算机TRADIC,而麻省理工学院于1957年完成的
TX-2 对晶体管计算机的发展起了重要作用。IBM公司于1955年宣布的全晶体管计算机
7070和7090,开始了第二代计算机蓬勃发展的新时期,特别是1959年IBM推出的商用机
IBM1401,更以其小巧价廉和面向数据处理的特性而获得广大用户的欢迎,从而促进了计
算机工业的迅速发展。
这一代计算机内存采用磁芯存储器,外存采用磁鼓与磁带存储器,实现了浮点运算,并


<!-- page: 20 -->

计算机系统概述
在系统结构方面提出了变址、中断、I/O处理器等新概念。这时计算机软件也得到了发展,
出现了多种高级语言及其编译程序。和第一代电子管计算机相比,第二代晶体管计算机体
积小、速度快、功耗低、可靠性高。
第三代计算机(20世纪60年代中期到 20 世纪 70年代中后期)为集成电路计算机。
1958年,德州仪器公司的工程师杰克·基尔比(Jack Kilby)和仙童半导体公司的工程师罗
伯特·诺伊斯(Robert Noyce)几乎同时各自独立发明了集成电路,为现代计算机的发展奠
定了革命性的基础,使得计算机的逻辑元件与存储器均可由集成电路实现。集成电路的应
用是微电子与计算机技术相结合的一大突破,为构建运算速度快、价格低、容量大、可靠性
高、体积小、功耗低的各类计算机提供了技术条件。1964年,IBM公司宣布世界上第一个采
用集成电路的通用计算机IBM360系统研制成功,该系统的发布是计算机发展史上具有重
要意义的事件。该系统采用了一系列计算机新技术,包括微程序控制、高速缓存、虚拟存储
器和流水线技术等;一次就推出了6种机型,它们相互兼容,可广泛应用于科学计算、数据处
理等领域;在软件方面首先实现并配置了操作系统,具有资源调度、人机通信和输入/输出控
制等功能。IBM360系列的诞生,对计算机的普及应用和大规模工业化生产产生了重大影
响,到1966年年底,其产量已达到每月400台,5年内总产量超过33 000台。
这一时期还具有另外一个重要特点,即大型/巨型机与小型机同时发展。1964年的
CDC6600 及随后的 CDC 7600和CYBER系列是大型机代表;巨型机有CDC STAR-100 和
64个单元并行操作的ILLIAC IV阵列机等;同时小型计算机也得到很大发展,典型的有
DEC公司的 PDP系列。
第四代计算机(20世纪 70年代后期以来)为超大规模集成电路计算机。20 世纪70年
代初,随着微电子学飞速发展而产生的大规模集成电路和微处理器给计算机工业注入了新
鲜血液。其后,大规模(LSI)和超大规模(VLSI)集成电路成为计算机的主要器件,其集成度
从20世纪70年代初的几千个晶体管/片(如Intel4004为2000个晶体管)到20世纪末的千
万个晶体管/片。半导体集成电路的集成度越来越高,速度也越来越快,其发展遵循以下摩
尔定律:由于硅技术的不断改进,每18个月,集成度将翻一番,速度将提高一倍,而其价格
将降低一半。戈登·摩尔(Golden Moore)是Intel 公司的创始人之一,摩尔定律是摩尔先
生在1965年接受美国《电子》杂志的总编采访时对半导体芯片工业发展前景的预测,50多
年来的实践证明,摩尔定律的预测是基本准确的。
由于计算机在技术和系统结构等方面的不断进步,目前学术界和工业界早已不再沿用
传统的以元器件划分“第x代计算机”的提法。
1.2计算机系统的基本组成
通常所说的计算机系统,除了包含看得见的计算机硬件之外,还包括运行在计算机
硬件上的软件。即计算机系统由硬件和软件两部分组成。硬件是具体物理装置的总称,
人们看到的各种芯片、板卡、外设、电缆等都是计算机硬件。软件包括运行在硬件上的程
序和数据以及相关的文档。程序是指挥计算机如何操作的一个指令序列,数据是指令操
作的对象。
第1章
3


<!-- page: 21 -->

计算机组成与系统结构(第3版)
1.2.1计算机硬件的基本组成
4
尽管计算机硬件技术经历了电子管、晶体管、集成电路和超大规模集成电路等发展阶
段,计算机体系结构也取得了很大发展,但目前为止,绝大部分通用计算机的基本组成仍然
具有冯·诺依曼结构计算机的特征。
冯·诺依曼结构的基本思想主要包括以下几方面。
(1)采用“存储程序”的工作方式。
(2)计算机由运算器、控制器、存储器、输入设备和输出设备5个基本部件组成。
(3)存储器不仅能存放数据,而且也能存放指令,形式上数据和指令没有区别,但计算
机应能区分它们;控制器应能控制指令的自动执行;运算器应能进行加、减、乘、除4种基本
算术运算,并且也能进行逻辑运算;操作人员可以通过输入/输出设备使用计算机。
(4)计算机内部以二进制形式表示指令和数据;每条指令由操作码和地址码两部分组
成,操作码指出操作类型,地址码指出操作数的地址;由一串指令组成程序。
现代计算机中,通常把运算器、控制器和各类寄存器等部件互连做在一个称为中央处理
器(central processing unit,CPU)的芯片中。计算机硬件主要包括中央处理器、存储器、I/O
控制器、外部设备和各类总线等。
1.中央处理器
中央处理器简称 CPU或处理器,是整个计算机的核心部件,主要用于指令的执行。
CPU主要包含两种基本部件:数据通路和控制器。数据通路主要包含算术逻辑部件
(arithmetic and logic unit,ALU)和通用寄存器等,ALU用来执行算术和逻辑运算等操作,
通用寄存器用来暂存指令所用的操作数或执行结果。控制器用来对指令进行译码,生成相
应的控制信号,以控制数据通路进行正确的操作。
2.存储器
存储器分为内存和外存,内存包括主存储器(main memory,简称主存)和高速缓存
(cache)。因为早期计算机中没有高速缓存,所以一般情况下,并不区分内存和主存,两者含
义相同,都是特指主存储器。冯·诺依曼结构计算机采用“存储程序”的工作方式,在程序执
行前,指令和数据都需事先输入到存储器中,这里的存储器就是指主存储器。
外存包括磁盘存储器和固态硬盘等直接和主存交换信息的存储器,以及一些用于数据
备份的海量后备存储器。
3.外部设备和设备控制器
外部设备简称外设,也称为I/O设备,其中,I/O是输入/输出(input/output)的缩写。
外设通常由机械部分和电子部分组成,而且两部分通常是可以分开的,机械部分是外部设备
本身,而电子部分则是控制外部设备的设备控制器。
外设通过设备控制器连接到主机上,各种设备控制器统称为1/O控制器、1/O接口或
I/O模块。例如,键盘接口、打印机适配器、显示控制器(简称显卡)、网络控制器(简称网卡)
等都是一种设备控制器。
4.总线
总线(bus)是传输信息的介质,用于在部件之间传输信息,CPU、主存和I/O模块通过
总线互连,在CPU和I/O模块中都内含相应的存储部件,即各类寄存器或缓存器。


<!-- page: 22 -->

计算机系统概述
图1.1是一个典型的多总线计算机系统硬件结构示意图。其中,CPU包含控制器、
ALU、寄存器堆(有些教材称为寄存器文件 register file或通用寄存器组 GPRs)、总线接口
部件等。CPU通过处理器总线、I/O桥接器等与主存储器和I/O设备交换信息;主存通过
存储器总线、I/O桥接器与CPU和1/O设备交换信息;I/O设备通过各自的外设控制器连
到I/O总线上,例如,可以把鼠标和键盘连接到 USB控制器的接口上,显示器连接到显示
适配卡的接口上。在一个I/O总线上可以设置多个I/O扩展槽,以连接更多的外设。
CPU
寄存器堆
控制器
ALU
处理器总线
存储器总线
总线接口部件
VO
桥接器
主存储器
USB
控制器
显示
适配卡
VO总线
磁盘
控制器
VO扩展槽
鼠标 键盘
显示器
磁盘
图1.1 一个典型计算机系统的硬件组成
ALU是数据处理部件,其处理的数据来自通用寄存器,运算的结果也送到通用寄存器
中;磁盘和主存是存储部件,分别用于存储长期保存信息和临时保存信息;各类总线以及总
线接口部件、I/O桥接器、I/O扩展槽、I/O控制器和显示适配器等都是互连部件,用于完成
数据传送和缓存任务。
从外部来看,普通台式个人计算机是用各种电缆将显示器、键盘、鼠标和机箱等连接而
成的一个装置。打开一台普通台式机的机箱后,看到的是如图1.2所示的一组电路板、芯片
和连线,有主板、电源、风扇和硬盘驱动器等。
电源、
DVD驱动器
电缆
风扇盖
主板-
硬盘驱动器
第1章
5
图1.2 台式个人计算机机箱内的部件