本书系统地介绍了计算机的基本组成原理和内部工作机制。全书共分8章,主要内容分成两个部分: 第1、2章介绍了计算机的基础知识;第3~8章介绍了计算机的各子系统(包括运算器、存储器、控制器、外部设备和输入输出子系统等)的基本组成原理、设计方法、相互关系以及各子系统互相连接构成整机系统的技术。
本书讲述了计算机的一般原理,并注意到与实际应用相结合。全书内容由浅入深,每章之后均附有习题,便于自学。
本书可以作为高等院校计算机及相关专业“计算机组成原理”课程的教材,也可供从事计算机工作的工程技术人员参考。
前言(第2版)FOREWORD承蒙读者的厚爱,本书第1版出版仅三年,已连续印刷10次,总印数达到41 000册。本书2004年被评为北京市精品教材,2007年入选教育部普通高等教育“十一五”国家级规划教材。本书作为主教材,与2005年以来相继出版的《计算机组成原理学习指导与习题解析》和《计算机组成原理教师用书》一起形成了一个比较完整的教材教学体系,可以适应大多数高校的计算机及相关专业“计算机组成原理”课程教学的需要,受到了许多老师的欢迎。
随着计算机技术发展的日新月异,对第1版教材中部分内容的更新也被提上了议事日程。此次修订,保留了原书的框架和风格,全书章节基本保持不变,但与原书相比,进行了必要的调整、删减,补充了一些新的内容,增加了不少新的概念和新的技术。
第1章增加哈佛结构的内容,第3章增加指令系统的发展的内容,第5章增加DDR2 SDRAM和DDR3 SDRAM等内容,第6章增加微处理器中的新技术的内容,第7章增加SATA硬盘、NCQ技术和显卡等内容,第8章增加PCI-Express总线的内容。
除去这些大的变化,其余章节的内容也有一些修改和补充。
修订后的本书力求概念清楚、通俗易懂,并注意处理好基本原理、基本概念与实用性、先进性之间的关系。
本书第1版自面市以来,收到了许多同行和读者发来的电子邮件,对于读者的来信,本人均给予了一一回复和解答。希望修订之后的本书能对读者有所帮助,欢迎来信提出意见和建议。电子邮箱: bs.jiang@163.com. 作 者
2008年6月前言(第1版)FOREWORD“计算机组成原理”是计算机类各专业学生的必修核心课程之一,主要讨论计算机各大部件的基本组成原理,各大部件互连构成整机系统的技术。本课程在计算机学科中处于承上启下的地位,先修课程应包括计算机基础、数字电路等。本课程的参考教学时数为56~72学时。
全书共分8章: 第1、2章介绍了计算机的基础知识(概论、数据的机器层次表示), 第3~8章介绍了计算机的各子系统(指令系统、数值的机器运算、存储系统和结构、中央处理器、外部设备、输入输出系统)的基本组成原理。
本书的内容与教学时数允许的分量相比偏多一些,有些内容对某些专业来说可能已在先导课程中讨论过,因此,在使用本教材时,可根据各专业的具体情况在章节上有选择地进行取舍。
计算机组成原理类的教材在国内已有不少,本书在下列几个方面具有一定的特色。
首先,本书是中国计算机学会和清华大学出版社共同规划的面向全国高等院校计算机专业本科生的“21世纪大学本科计算机专业系列教材”之一,内容覆盖了《中国计算机科学与技术学科教程2002 (CCC2002) 》对本课程所列出的知识单元。
其次,本书既强调计算机的基本概念和基础知识,对计算机的各大基本部件的组成原理、设计方法及相互关系都进行了较详细的描述,又注意与实际应用相结合,具有一定的针对性,以避免理论和实际脱节。
第三,计算机技术的发展日新月异,作为一本专业基础课教材,不可能也没有必要处处体现先进技术;有时过于求新,反倒会使内容显得高深且难以理解。本书在阐述中注意由浅入深、循序渐进,在讲清基本原理的基础上,再提出先进技术和新的发展方向,以降低学习的难度。
第四,本书根据各章节内容的要求按横向方式组织课程实例,而不拘泥于某一种具体的机型,以减少局限性,扩大读者的视野和适用面。考虑到目前国内的实际情况,实例以微、小型计算机为主。
第五,为了帮助读者建立整机概念,本书中介绍了一个仅有十几条指令的模型机,试图通过解剖这样一个小小的“麻雀”来介绍控制器的设计方法。
第六,各章内容相对独立,由浅入深,同时注意章节间内容的衔接,适合于自学。
总之,本书力求做到内容全面、概念清楚、通俗易懂,并注意到实用性和先进性。
本书每章后附有大量的习题,为读者提供较多的练习机会。
本书还附有配套的电子教案,以便于教学使用,需要的教师可直接与清华大学出版社联系索取。
在本书编写过程中得到了“21世纪大学本科计算机专业系列教材”编委会的多次指导和建议。重庆大学计算机系袁开榜教授亲自仔细审阅了本书的全部内容,提出了许多宝贵的修改意见。清华大学出版社的编辑们也为本书的出版做了许多工作。在此对他们辛勤的工作和热情的支持表示诚挚的感谢!
由于时间的原因以及个人的水平限制,书上难免出现错误和不妥之处,欢迎同行和广大读者批评指正。
作 者
2003年11月
第1章 概论11.1 电子计算机与存储程序控制1
1.1.1 电子计算机的发展1
1.1.2 存储程序概念2
1.2 计算机的硬件组成3
1.2.1 计算机的主要部件4
1.2.2 计算机的总线结构5
1.2.3 大、中型计算机的典型结构7
1.2.4 不同对象观察到的计算机硬件系统7
1.2.5 冯·诺依曼结构和哈佛结构的存储器设计思想9
1.3 计算机系统10
1.3.1 硬件与软件的关系10
1.3.2 系列机和软件兼容11
1.3.3 计算机系统的多层次结构12
1.3.4 实际机器和虚拟机器13
1.4 计算机的工作过程和主要性能指标13
1.4.1 计算机的工作过程13
1.4.2 计算机的主要性能指标14
习题16
第2章 数据的机器层次表示17
2.1 数值数据的表示17
2.1.1 计算机中的数值数据17
2.1.2 无符号数和带符号数18
2.1.3 原码表示法18
2.1.4 补码表示法19
2.1.5 反码表示法21
2.1.6 3种机器数的比较与转换22
2.2 机器数的定点表示与浮点表示23
2.2.1 定点表示法23
2.2.2 浮点表示法25
2.2.3 浮点数阶码的移码表示法27
2.2.4 定点、浮点表示法与定点、浮点计算机29
2.2.5 浮点数尾数的基数30
2.2.6 实用浮点数举例31
2.3 非数值数据的表示33
2.3.1 字符和字符串的表示33
2.3.2 汉字的表示35
2.3.3 统一代码38
2.4 十进制数和数串的表示39
2.4.1 十进制数的编码39
2.4.2 十进制数串41
2.5 现代微型计算机系统中的数据表示举例42
2.6 数据校验码44
2.6.1 奇偶校验码44
2.6.2 海明校验码46
2.6.3 循环冗余校验码50
习题52
目 录第3章 指令系统55
3.1 指令格式55
3.1.1 机器指令的基本格式55
3.1.2 地址码结构56
3.1.3 指令的操作码58
3.2 寻址技术61
3.2.1 编址方式61
3.2.2 指令寻址和数据寻址62
3.2.3 基本的数据寻址方式63
3.2.4 变型或组合寻址方式69
3.3 堆栈与堆栈操作71
3.3.1 堆栈结构71
3.3.2 堆栈操作73
3.4 指令类型74
3.4.1 数据传送类指令74
3.4.2 运算类指令75
3.4.3 程序控制类指令76
3.4.4 输入输出类指令78
3.4.5 80x86指令系统举例78
3.5 指令系统的发展82
3.5.1 x86架构的扩展指令集82
3.5.2 从复杂指令系统到精简指令系统83
3.5.3 VLIW和EPIC83
习题85
第4章 数值的机器运算88
4.1 基本算术运算的实现88
4.1.1 加法器88
4.1.2 进位的产生和传递90
4.1.3 并行加法器的快速进位90
4.2 定点加减运算93
4.2.1 原码加减运算93
4.2.2 补码加减运算94
4.2.3 补码的溢出判断与检测方法96
4.2.4 补码定点加减运算的实现99
4.3 带符号数的移位和舍入操作99
4.3.1 带符号数的移位操作100
4.3.2 带符号数的舍入操作101
4.4 定点乘法运算102
4.4.1 原码一位乘法102
4.4.2 补码一位乘法104
4.4.3 补码两位乘法108
4.4.4 阵列乘法器110
4.5 定点除法运算111
4.5.1 原码除法运算111
4.5.2 补码除法运算114
4.5.3 阵列除法器118
4.6 规格化浮点运算118
4.6.1 浮点加减运算119
4.6.2 浮点乘除运算121
4.6.3 浮点运算器的实现123
4.7 十进制整数的加法运算123
4.7.1 一位十进制加法运算123
4.7.2 十进制加法器125
4.7.3 多位十进制加法126
4.8 逻辑运算与实现127
4.9 运算器的基本组成与实例129
4.9.1 运算器结构129
4.9.2 ALU举例131
4.9.3 浮点运算器举例133
习题135
第5章 存储系统和结构138
5.1 存储系统的组成138
5.1.1 存储器分类138
5.1.2 存储系统层次结构140
5.2 主存储器的组织141
5.2.1 主存储器的基本结构141
5.2.2 主存储器的存储单元142
5.2.3 主存储器的主要技术指标143
5.2.4 数据在主存中的存放144
5.3 半导体随机存储器和只读存储器145
5.3.1 RAM记忆单元电路146
5.3.2 动态RAM的刷新148
5.3.3 RAM芯片分析151
5.3.4 半导体只读存储器154
5.3.5 半导体存储器的封装156
5.4 主存储器的连接与控制156
5.4.1 主存容量的扩展157
5.4.2 存储芯片的地址分配和片选159
5.4.3 主存储器和CPU的连接161
5.4.4 主存的校验163
5.4.5 PC系列微型计算机的存储器接口164
5.5 提高主存读写速度的技术168
5.5.1 主存与CPU速度的匹配168
5.5.2 FPM DRAM168
5.5.3 EDO DRAM169
5.5.4 SDRAM169
5.5.5 DDR SDRAM170
5.5.6 DDR2 SDRAM和DDR3 SDRAM171
5.5.7 Rambus DRAM171
5.5.8 双通道内存技术172
5.6 多体交叉存储技术173
5.6.1 并行访问存储器173
5.6.2 交叉访问存储器173
5.7 高速缓冲存储器175
5.7.1 高速缓存工作原理175
5.7.2 Cache的读写操作176
5.7.3 地址映像177
5.7.4 替换算法177
5.7.5 更新策略179
5.7.6 PC机中Cache技术的实现179
5.8 虚拟存储器180
5.8.1 虚拟存储器的基本概念180
5.8.2 页式虚拟存储器181
5.8.3 段式虚拟存储器182
5.8.4 段页式虚拟存储器183
5.8.5 快表与慢表183
习题184
第6章 中央处理器187
6.1 中央处理器的功能和组成187
6.1.1 CPU的功能187
6.1.2 CPU中的主要寄存器187
6.1.3 CPU的组成189
6.1.4 CPU的主要技术参数190
6.2 控制器的组成和实现方法192
6.2.1 控制器的基本组成193
6.2.2 控制器的硬件实现方法194
6.3 时序系统与控制方式195
6.3.1 时序系统196
6.3.2 控制方式198
6.3.3 指令运行的基本过程199
6.3.4 指令的微操作序列200
6.4 微程序控制原理202
6.4.1 微程序控制的基本概念202
6.4.2 微指令编码法204
6.4.3 微程序控制器的组成和工作过程206
6.4.4 微程序入口地址的形成208
6.4.5 后继微地址的形成208
6.4.6 微程序设计209
6.5 控制单元的设计212
6.5.1 简单的CPU模型212
6.5.2 组合逻辑控制单元设计215
6.5.3 微程序控制单元设计220
6.6 流水线技术223
6.6.1 重叠控制223
6.6.2 先行控制原理224
6.6.3 流水工作原理225
6.7 精简指令系统计算机227
6.7.1 RISC的特点和优势227
6.7.2 RISC基本技术229
6.8 微处理器中的新技术230
6.8.1 超标量和超流水线技术230
6.8.2 EPIC的指令级并行处理230
6.8.3 超线程技术231
6.8.4 双核与多核技术231
习题233
第7章 外部设备237
7.1 外部设备概述237
7.1.1 外部设备的分类237
7.1.2 外部设备的地位和作用238
7.2 磁介质存储器的性能和原理239
7.2.1 磁介质存储器的读写239
7.2.2 磁介质存储器的技术指标241
7.2.3 数字磁记录方式242
7.2.4 编码方式的比较245
7.3 磁介质存储设备246
7.3.1 硬盘存储器的基本结构与分类246
7.3.2 硬盘驱动器247
7.3.3 硬盘的信息分布和磁盘地址248
7.3.4 硬盘存储器的技术参数249
7.3.5 硬盘的分区域记录252
7.3.6 硬盘的NCQ技术252
7.3.7 软磁盘存储器253
7.4 磁盘阵列254
7.4.1 RAID简介255
7.4.2 RAID的分级255
7.5 光盘存储器257
7.5.1 光盘存储器的类型257
7.5.2 光盘存储器的组成及工作原理257
7.5.3 光盘驱动器260
7.5.4 DVD261
7.6 新型辅助存储器262
7.6.1 大容量可移动存储器262
7.6.2 闪存卡和USB电子盘265
7.7 键盘输入设备266
7.7.1 键开关与键盘类型266
7.7.2 键盘扫描267
7.7.3 微型计算机键盘268
7.8 其他输入设备271
7.8.1 鼠标器271
7.8.2 其他定位设备272
7.8.3 扫描仪272
7.9 打印输出设备275
7.9.1 打印机概述275
7.9.2 打印机的主要性能指标276
7.9.3 针式打印机工作原理276
7.9.4 喷墨打印机工作原理278
7.9.5 激光打印机工作原理280
7.10 显示设备281
7.10.1 显示器概述281
7.10.2 CRT显示器281
7.10.3 字符显示器的工作原理285
7.10.4 图形显示器的工作原理288
7.10.5 LCD显示器290
7.10.6 视频显示标准292
7.10.7 微型计算机的显示适配器294
习题294
第8章 输入输出系统297
8.1 主机与外设的连接297
8.1.1 输入输出接口297
8.1.2 接口的功能和基本组成298
8.1.3 外设的识别与端口寻址300
8.1.4 输入输出信息传送控制方式302
8.2 程序查询方式及其接口303
8.2.1 程序查询方式304
8.2.2 程序查询方式接口305
8.3 中断系统和程序中断方式307
8.3.1 中断的基本概念307
8.3.2 中断请求和中断判优310
8.3.3 中断响应和中断处理313
8.3.4 多重中断与中断屏蔽317
8.3.5 中断全过程321
8.3.6 程序中断接口结构322
8.4 DMA方式及其接口323
8.4.1 DMA方式的基本概念323
8.4.2 DMA接口324
8.4.3 DMA传送方法与传送过程328
8.5 通道控制方式330
8.5.1 通道的基本概念330
8.5.2 通道的类型与结构331
8.5.3 通道程序334
8.5.4 通道工作过程337
8.6 总线技术337
8.6.1 总线通信控制338
8.6.2 总线管理339
8.6.3 总线类型和总线标准342
8.6.4 I/O接口标准344
习题348
索引351
参考文献362