《计算机系统结构精髓》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)Douglas E. Comer著;方存正译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:7302122717
  • 页数:278 页
图书介绍:本书由五个部分组成:第1部分包括数字逻辑、门电路特性和数据表示方面最简单的基础知识。第2部分包括各种类型处理器、指令系统、指令表示和操作数寻址、微代码、汇编语言和编程范式。第3部分 介绍各种各样的存储机制,包括物理存储器工艺技术和寻址机制,虚拟存储技术和虚拟寻址、高速缓冲存储器和高速缓存技术。第4部分是输入/输出,包括I/O概念和相关技术,总线和总线的体系结构,程序控制和中断驱动I/O,程序员的设备、I/O视图和缓冲。第5部分是体系结构的一些高级话题,包括并行机制、流水线技术、体系结构性能评估,并给出不同层次上的体系结构实例。附录中给出了一系列实验课题,对完成本课程业说是十分重要的。本书的主要读者对象是高等院校计算机科学技术类的学生。因此,它注重概念而不是工程细节,因为多数学生将来并不从事硬件设计,书中十分重视系统结构设计的性能价格比和各种优化技术及其对程序设计的影响。

1.1 系统结构的重要性 1

1.2 学习要旨 1

1.3 本书的组织 1

第1章 引言和纵览 1

1.4 省略的内容 2

1.5 术语:系统结构和设计 2

1.6 小结 2

第1部分 数字逻辑与数据表示基础 4

第2章 数字逻辑基础 4

2.1 引言 4

2.2 有关电的术语:电压和电流 4

2.3 晶体管 4

2.4 逻辑门 5

2.6 用晶体管构建门 7

2.5 逻辑门的符号表示 7

2.7 门和门互连的例子 8

2.8 多门集成电路 10

2.9 不只需要组合电路 10

2.10 能保持状态的电路 11

2.11 状态转换图 11

2.12 二进制计数器 12

2.13 时钟和顺序 12

2.14 反馈的重要概念 15

2.15 启动的一个动作序列 16

2.16 软件重复与硬件副本的比较 16

2.17 门和芯片的极小化 17

2.18 利用空闲的门 17

2.20 定时 18

2.19 供电和散热 18

2.21 物理尺寸和处理工艺 19

2.22 电路板和多层印刷 20

2.23 抽象的层次 20

2.24 小结 21

第3章 数据和程序的表示 22

3.1 引言 22

3.2 数字逻辑和抽象 22

3.3 位和字节 22

3.4 字节大小和可能表示的值 23

3.5 二进制运算 23

3.6 十六进制表示法 24

3.7 十六进制常数和二进制常数表示法 25

3.8 字符集 26

3.10 无符号整数、上溢和下溢 27

3.9 Unicode 27

3.11 位和字节的编号 28

3.12 带符号整数 29

3.13 一个补码表示的数的例子 29

3.14 符号扩展 30

3.15 浮点 31

3.16 特殊值 32

3.17 IEEE浮点值的范围 32

3.18 数据聚集 33

3.19 程序的表示 33

3.20 小结 33

习题 34

4.2 冯·诺依曼体系结构 36

4.1 引言 36

第4章各种处理器和计算引擎 36

第2部分 处理器 36

4.3 处理器的定义 37

4.4 处理器的类别 37

4.5 分层结构和计算引擎 38

4.6 常规处理器的结构 39

4.7 算术逻辑部件(ALU)的定义 40

4.8 处理器的类别及作用 40

4.9 处理器工艺技术 41

4.10 存储程序 42

4.11 读取-执行周期 42

4.12 时钟速率和指令速率 43

4.13 控制:启动和停止 43

4.15 小结 44

4.14 启动读取-执行周期 44

习题 45

第5章 处理器类型和指令系统 46

5.1 引言 46

5.2 数学功能、方便性和代价 46

5.3 指令系统及表示 47

5.4 操作码、操作数和结果 47

5.5 典型的指令格式 47

5.6 可变长度指令和固定长度指令 48

5.7 通用寄存器 48

5.8 浮点寄存器和寄存器标识 49

5.9 利用寄存器编程 49

5.10 寄存器组 50

5.11 复杂指令系统和简化指令系统 51

5.12 RISC设计和执行流水线 51

5.13 流水线和指令阻塞 53

5.14 流水线阻塞的另外一些原因 54

5.15 对程序员的影响 54

5.16 编程、阻塞及空操作 55

5.17 提前传递 55

5.18 操作的类型 55

5.19 程序计数器、读取-执行及转移 56

5.20 子程序调用、变量及寄存器窗口 57

5.21 指令系统的一个例子 58

5.22 最低限度指令系统 60

5.23 正交性原则 60

5.24 条件码和条件转移 61

5.25 小结 61

习题 62

6.2 零地址、一地址、二地址及三地址设计 63

6.1 引言 63

第6章 操作数寻址和指令表示 63

6.3 零操作数指令 64

6.4 单操作数指令 64

6.5 双操作数指令 64

6.6 三操作数指令 65

6.7 操作数源和立即值 65

6.8 冯·诺依曼瓶颈 66

6.9 显式和隐式操作数编码 66

6.9.1 隐式操作数编码 67

6.9.2 显式操作数编码 67

6.10 组合多个值的操作数 68

6.11 操作数选择的权衡 68

6.12 存储器中的数值和间接引用 69

6.14 小结 70

6.13 操作数寻址方式 70

习题 71

第7章 CPU:微代码、保护及处理器模式 72

7.1 引言 72

7.2 中央处理器 72

7.3 CPU的复杂性 72

7.4 执行模式 73

7.5 向后兼容 73

7.6 改变模式 74

7.7 特权和保护 75

7.8 多级保护 75

7.9 微代码指令 76

7.11 微代码的优点 77

7.10 微代码的变体 77

7.12 让程序员看到微代码 78

7.13 纵向微代码 78

7.14 横向微代码 79

7.15 例示横向微代码 80

7.16 一个横向微代码的例子 81

7.17 要求多个周期的操作 82

7.18 横向微代码和并行执行 82

7.19 高性能执行 83

7.20 并行性和执行次序 84

7.21 指令的乱序执行 84

7.22 条件转移和转移预测 84

7.23 对程序员的影响 85

7.24 小结 85

习题 86

8.1 引言 87

8.2 高级程序设计语言的特征 87

第8章 汇编语言和程序设计范例 87

8.3 低级程序设计语言的特征 88

8.4 汇编语言 88

8.5 汇编语言语法和操作码 89

8.5.1 语句格式 89

8.5.2 操作码命名 89

8.5.3 注释约定 90

8.6 操作数的次序 90

8.7 寄存器命名 91

8.8 操作数类型 92

8.9 汇编语言程序设计范式和风格 92

8.11 用于可选条件执行的汇编代码 93

8.10 用于条件执行的汇编代码 93

8.12 用于限定循环的汇编代码 94

8.13 用于未限定循环的汇编代码 94

8.14 用于过程调用的汇编代码 95

8.15 用于参数化过程调用的汇编代码 95

8.16 对程序员的影响 96

8.17 用于函数调用的汇编代码 96

8.18 汇编语言和高级语言之间的交互作用 97

8.19 用于变量和存储的汇编代码 97

8.20 二次扫描汇编程序 98

8.21 汇编语言宏指令 99

8.22 小结 101

9.2 定义 104

9.1 引言 104

9.3 存储器的两个关键方面 104

第3部分 存储器 104

第9章 存储器和存储 104

9.4 存储器工艺的特性 105

9.4.1 存储器的易失性 105

9.4.2 存储器访问范式 105

9.4.3 数值的持久性 105

9.4.4 主存储器和辅助存储器 106

9.5 重要的存储器分级概念 106

9.6 指令和数据的储存 106

9.7 读写范式 107

9.8 小结 107

10.2 计算机存储器的特性 108

10.3 静态和动态RAM的工艺技术 108

10.1 引言 108

第10章 物理存储器和物理寻址 108

10.4 存储器工艺技术的度量 110

10.5 密度 110

10.6 读性能和写性能的分离 110

10.7 等待时间和存储器控制器 110

10.8 同步存储器技术 111

10.9 多倍数据速率存储器技术 112

10.10 存储器工艺技术的例子 112

10.11 存储器组织结构 112

10.12 存储器存取和存储器总线 113

10.13 存储器的传输容量 113

10.14 物理地址和字 113

10.15 物理存储器操作 114

10.16 字长和其他数据类型 114

10.17 一个极端情况:字节寻址 114

10.18 以字传输的字节寻址 115

10.20 字节对齐和程序设计 116

10.19 利用2的幂 116

10.21 存储器容量和地址空间 117

10.22 用字寻址程序设计 117

10.23 存储器容量的量度 118

10.24 指针和数据结构 118

10.25 存储器转储 119

10.26 间接性和间接操作数 120

10.27 存储体和交叉存取 120

10.28 按内容存取存储器 121

10.29 三元CAM 122

10.30 小结 122

习题 123

11.3 一个虚拟的例子:字节寻址 124

11.4 虚拟存储器术语 124

11.1 引言 124

11.2 定义 124

第11章 虚拟存储器技术和虚拟寻址 124

11.5 对多个物理存储器系统的接口 125

11.6 地址转换或地址映射 126

11.7 避免算术运算 127

11.8 不连续地址空间 127

11.9 其他的存储器组织 128

11.10 采用虚拟存储器的动机 129

11.11 多虚拟空间和多道程序设计 129

11.12 多级的虚拟化 130

11.13 动态地创建虚拟空间 130

11.14 起点-界限寄存器 131

11.16 虚存、起点-界限和保护 132

11.17 分段 132

11.15 改变虚拟空间 132

11.18 请求式分页 133

11.19 用于请求式分页的硬件和软件 133

11.20 页面替换 134

11.21 分页的术语和数据结构 134

11.22 分页系统中的地址转换 135

11.23 利用2的幂 136

11.24 存在位、使用位和修改位 137

11.25 页表的存储 137

11.26 分页效率和快速转换旁视缓冲器 138

11.27 对程序员的影响 138

11.28 小结 139

习题 140

12.2 定义 141

第12章 高速缓存和高速缓存技术 141

12.1 引言 141

12.3 高速缓存的特性 142

12.4 高速缓存技术的重要性 142

12.5 高速缓存技术的例子 143

12.6 高速缓存术语 143

12.7 高速缓存性能的最好情况和最坏情况 144

12.8 对一个典型序列的高速缓存性能 145

12.9 高速缓存的替换策略 145

12.10 LRU替代策略 146

12.11 多级高速缓存结构 146

12.12 预装高速缓存 147

12.13 存储器使用高速缓存 147

12.16 物理存储器高速缓存 148

12.15 请求式分页作为一种高速缓存形式 148

12.14 TLB作为高速缓存 148

12.17 直写和写回 149

12.18 高速缓存的相关性 149

12.19 L1,L2和L3高速缓存 150

12.20 L1,L2和L3高速缓存的大小 151

12.21 指令高速缓存和数据高速缓存 151

12.22 虚拟存储器高速缓存技术和高速缓存排空 152

12.23 存储器高速缓存技术的实现 153

12.24 直接映射存储器高速缓存 153

12.25 为提高效率而采用2的幂 154

12.26 组相联存储器高速缓存 155

12.27 对程序员的影响 156

12.28 小结 156

习题 157

13.2 输入和输出设备 160

13.3 外部设备的控制 160

第4部分 输入和输出 160

13.1 引言 160

第13章 输入输出概念和术语 160

13.4 数据传送 161

13.5 串行和并行数据传送 162

13.6 自同步数据 162

13.7 全双工交互和半双工交互 163

13.8 接口的等待时间和吞吐量 163

13.9 多路传输的基本思想 163

13.10 每个外部接口连接多个设备 164

13.11 处理器的I/O视图 165

13.12 小结 165

14.3 处理器、I/O设备与总线 166

14.2 总线的定义 166

第14章 总线和总线体系结构 166

14.1 引言 166

14.4 专有总线和标准化总线 167

14.5 共享总线和存取协议 167

14.6 多个总线 167

14.7 并行、无源机制 167

14.8 物理连接 168

14.9 总线接口 168

14.10 地址线、控制线和数据线 169

14.11 读取-存储范式 170

14.12 总线上的读取-存储 170

14.13 总线的宽度 171

14.14 多路传输 171

14.16 总线地址空间 172

14.15 总线宽度和数据项的大小 172

14.17 潜在的错误 173

14.18 地址配置和插座 174

14.19 多个总线还是一个总线 175

14.20 设备所用的读取-存储 175

14.21 一个使用读取-存储的设备控制例子 175

14.22 接口的操作 176

14.23 不对称指派 176

14.24 统一的存储器和设备寻址 177

14.25 地址空间里的空洞 178

14.26 地址映射 178

14.27 对总线的程序接口 179

14.28 两个总线间的桥接 180

14.29 主总线和辅助总线 180

14.30 对程序员的影响 181

14.31 切换组构网 182

14.32 小结 183

习题 183

第15章 程序控制I/O和中断驱动I/O 184

15.1 引言 184

15.2 I/O范式 184

15.3 程序控制I/O 184

15.4 同步 185

15.5 轮询 185

15.6 用于轮询的代码 185

15.7 控制和状态寄存器 187

15.8 处理器使用和轮询 187

15.10 中断驱动I/O 188

15.9 第一代、第二代和第三代计算机 188

15.11 硬件中断机制 189

15.12 中断和读取-执行周期 189

15.13 中断的处理 189

15.14 中断向量 190

15.15 初始化和中断的允许及禁止 191

15.16 防止中断代码被中断 191

15.17 多级中断 191

15.18 中断向量和优先权的指派 192

15.19 动态总线连接和可插入的设备 193

15.20 中断的优点 193

15.21 灵巧的设备和改进的I/O性能 193

15.22 直接存储器存取(DMA) 194

15.23 缓冲链接 195

15.24 分散读和集中写操作 195

15.26 小结 196

15.25 操作链接 196

习题 197

第16章 程序员眼中的设备、I/O和缓冲 198

16.1 引言 198

16.2 设备驱动器的定义 198

16.3 设备无关性、密封和隐藏 198

16.4 设备驱动器的概念性部件 199

16.5 两种类型的设备 200

16.6 一个设备驱动器的操作流程的例子 200

16.7 队列的输出操作 201

16.8 强制中断 202

16.9 队列的输入操作 203

16.10 支持双向传送的设备 203

16.12 异步性、灵巧设备和互斥 204

16.11 异步还是同步编程范式 204

16.13 应用程序所见的I/O 205

16.14 运行时I/O程序库 205

16.15 程序库和操作系统的两分法 206

16.16 操作系统支持的I/O操作 207

16.17 I/O操作的代价 207

16.18 降低系统调用开销 208

16.19 缓冲的重要概念 208

16.20 缓冲的实现 209

16.21 排空缓冲器 210

16.22 输入的缓冲 211

16.23 缓冲的效能 211

16.27 小结 212

16.26 一个例子:Unix标准I/O库 212

16.25 与高速缓存的关系 212

16.24 操作系统中的缓冲 212

习题 213

第5部分 高级课题 216

第17章 并行性 216

17.1 引言 216

17.2 并行和流水线体系结构 216

17.3 并行性的特征 216

17.4 微观并行性与宏观并行性 217

17.5 微观并行性的例子 217

17.6 宏观并行性的例子 218

17.7 对称并行性与非对称并行性 218

17.11 并行体系结构的类型(弗林分类法) 219

17.10 并行体系结构 219

17.9 显式的与隐式的并行性 219

17.8 细粒并行性与粗粒并行性 219

17.12 单指令单数据流(SISD) 220

17.13 单指令多数据流(SIMD) 220

17.14 多指令多数据流(MIMD) 222

17.15 通信、协调和争用 224

17.16 多处理器的性能 225

17.17 对程序员的影响 226

17.17.1 锁和互斥 226

17.17.2 显式和隐式并行计算机的编程 228

17.17.3 对称多处理器和非对称多处理器的编程 228

17.18 冗余并行体系结构 228

17.19 分布计算机和群集计算机 229

17.20 小结 229

习题 230

18.2 流水线技术的概念 231

18.1 引言 231

第18章 流水线技术 231

18.3 软件流水线技术 233

18.4 19软件流水线的性能和开销 233

18.5 19硬件流水线技术 234

18.6 19硬件流水线技术怎样提高性能 234

18.7 19流水线的使用时机 236

18.8 19处理的概念性分割 237

18.9 19流水线体系结构 237

18.10 19流水线的建立时间、阻塞时间和排空时间 238

18.11 19超级流水线体系结构的定义 238

18.12 19小结 239

习题 239

19.2 19能力和性能的测量 240

19.1 19引言 240

第19章 19性能评估 240

19.3 19计算能力的测量 241

19.4 19使用专门的指令计数 242

19.5 19指令混合比 242

19.6 19标准化的基准测试程序 243

19.7 I/O和存储器瓶颈 243

19.8 19软、硬件之间的分界 244

19.9 19选择要优化的项目 244

19.10 19艾姆德尔法则和并行系统 245

19.11 19小结 245

习题 245

第20章 19体系结构的层次和例子 246

20.1 19引言 246

20.2 19体系结构的层次 246

20.4 19总线互连和桥接 247

20.3 19系统级体系结构:个人计算机 247

20.5 19控制器芯片和物理体系结构 248

20.6 19虚拟总线 249

20.7 19连接速度 250

20.8 19桥接功能和虚拟总线 251

20.9 电路板级体系结构 251

20.10 19芯片级体系结构 252

20.11 芯片上功能部件的结构 253

20.12 小结 254

20.13 计算机系统结构之外的分级 254

附录A 计算机系统结构课程实验 255

A.1 引言 255

A.2 实验所用的数字硬件 255

A.3 免焊实验电路板 255

A.5 测试 256

A.4 免焊实验电路板的使用 256

A.6 电源和接地连接 257

A.7 实验练习题 258

实验1 入门和账号配置 259

实验2 数字逻辑:实验电路板的使用 260

实验3 数字逻辑:用门电路构建一个加法器 262

实验4 数字逻辑:时钟和多路分配 264

实验5 表示法:测试大端法与小端法 266

实验6 表示法:一个用C编写的十六进制转储程序 268

实验7 处理器:学习RISC汇编语言 270

实验8 处理器:能被C程序调用的函数 272

实验9 存储器:数组的行主序存储和列主序存储 273

实验10 输入输出:一个缓冲I/O库 275

实验11 用汇编语言编写的十六进制转储程序 277

参考书目 278