结构化计算机组成(原书第四版)
作者 : Andrew S.Tanenbaum
译者 : 刘卫东 等
丛书名 : 计算机科学丛书
出版日期 : 2001-10-01
ISBN : 7-111-08902-2
定价 : 46.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 496
开本 : 16开
原书名 : Structured Computer Organization
原出版社: Prentice Hall
属性分类: 教材
包含CD :
绝版 : 已绝版
图书简介

计算机组成与结构是计算机专业最为核心的课程之一,它讲述的是计算机的组成部件的功能实现和运行原理。传统的计算机组成与结构教材也仅仅描述了这些,而缺乏对各组成部件之间关系的描述。
  本书开创性地将结构化方法用来描述计算机组成,它以Intel的Pentium II、SUN的Ultra SPARCII和picoJavaII为例,将计算机分解成数字逻辑层、微体系结构层、指令系统层、操作系统层和汇编语言层,详细介绍了各层的组成和实现,并说明了低层为上一层功能的实现提供的支持。最后,讨论了当前方兴未艾的并行计算机技术。
  本书可以作为计算机专业本科生学习计算机组成与结构课程的教材或参考书,也可供其他相关专业人员了解计算机组成和结构方面的知识时参阅。

图书特色

Andrew S.Tanenbaum获得过美国麻省理工学院的理学学士学位和加利福尼亚大学伯克利分校的哲学博士学位,目前是荷兰阿姆斯特丹Vrije大学计算机科学系的教授,并领导着一个计算机系统的研究小组。同时,他还是一所计算与图像处理学院的院长,这是由几所大学合作成立的研究生院。尽管社会工作很多,但他并没有中断学术研究。
  多年来,他在编译技术、操作系统、网络及局域分布式系统方面进行了大量的研究工作。目前的主要研究方向是设计规模达十亿用户的广域分布式系统。在进行这些研究项目的基础上,他在各种学术杂志及会议上发表了85篇论文。他同时还是5本计算机专著的作者。
  Tanenbaum教授还开发了大量的软件。他是Amsterdam编译器套件的主要设计师,这是一个被广泛使用的、用来编写可移植编译器的工具箱。他领导编写的MINIX,是一个用于操作系统教学的类UNIX的小型操作系统。他和他的博士研究生以及其他编程人员一道设计的Amoeba分布式操作系统,是一个高性能的微内核分布式操作系统。目前,可在因特网上免费得到MINIX及Amoeba。
  他的一些博士研究生,在获得学位后继续进行研究,并取得了更大的成就,赢得了社会的赞誉,对此他深感自豪。人们称他为桃李满天下的教育家。
  Tanenbaum是ACM的会员,IEEE的会员,荷兰皇家艺术和科学学院院士,获得过1994年度ACM Karl V.Karlstrom杰出教育家奖和1997年度ACM/SIGCSE计算机科学教育杰出贡献奖。他还入选了《世界名人录》。他在万维网上的主页地址为http://www.cs.vu.nl/~ast/。

图书前言

本书的前三个版本都是建立在计算机是由层次结构组成、每层完成规定的功能这一概念上的。今天,这个基本概念依旧和第1版刚出版时的一样正确,所以它还是我们第4版的基础。和前三版一样,我们将详细讨论数字逻辑层、微体系结构层、指令系统层、操作系统层和汇编语言层(虽然,为更好地和现代计算机吻合,我们把其中的几个名称作了改动)。
  尽管保留了前三版的基本结构,第4版还是作了或大或小的许多变动,以跟上飞速更新的计算机产业的步伐。例如,为反映Java在计算机世界中的流行,书中所有原来用Pascal写的代码都用Java重新写过了。同时,用作示例的机器也跟上了时代,现在用的是Intel公司的Pentium II、Sun公司的UltraSPARC II和Sun公司的picoJava II(内含廉价Java芯片)。
  自第3版出版以后,多处理器和并行计算机已得到了广泛应用,所以,第4版重新组织和扩充了有关并行体系结构的材料,覆盖了从多处理器到COW的多个方面。
  这些年来,由于学科本身的发展和对它的更深的了解,本书也变得越来越厚(虽然还比不上本学科的其他流行书)。这也是不可避免的。因此,当用作教材时,可能就无法在一门课(一个学期)中讲述完所有内容。一种可行的方法是讲述第l、第2和第3章的全部内容,第4章的前4节,以及第5章最低限度的内容。其余的时间可根据教师的兴趣介绍第4章剩余部分和第6、第7、第8章的内容。
  下面逐章介绍各章纲要及对第3版的主要改动。第1章依然是对计算机体系结构发展的历史回顾,指出我们是如何走过来的、目前的位置和发展道路上的主要里程碑。介绍现有的计算机系列和用于本书示例的三种机型(Pentium II、UltraSPARC II和picoJavall)。
  第2章中,修改了关于输入输出设备的内容,重点强调了现代的外部设备技术,包括RAID盘、可刻光盘、DVD和彩色打印机等许多设备。
  第3章(数字逻辑层)已经有过一些变动,这一章介绍计算机总线和现代的输入输出芯片。主要的改动是增加了总线的内容,尤其是PCI总线和USB总线。最后对用作示例的三种机型在芯片级作了介绍。
  第4章(微体系结构层)是完全重写的。保留了用微程序机来说明数据通路的思想,但这里用作例子的机器只是Java虚拟机的一个子集。底层的微体系结构相应地作了改变,给出了设计过程中的一些反复,由此来说明如何在性能和成本中取得平衡。然后,以Mic—4为例,用7步执行过程说明了微程序在现代计算机(如Pentium II)工作中的重要性。本章增加了一节关于提高计算机性能的内容,着重介绍了一些这方面的最新技术,如高速缓存、分支预测、(超标量)乱序执行、预执行和判定执行指令。最后,对用作示例的机型在微体系结构层进行了讨论。
  第5章(指令系统层)介绍被许多人叫做“机器语言”的指令系统集,主要的例子还是Pentium II、UltraSPARCII和Java虚拟机。
  第6章(操作系统层)以PentiumII(Windows NT)和UltraSPARCII(UNIX)为例。
Windows NT是一个全新的操作系统,有很多值得介绍的特性,而UNIX在许多大学和公司中依然是可靠的操作系统平台,并由于其简单和一流的设计依然值得详细介绍。
  第7章(汇编语言层)用我们一直研究而仍没有落伍的机型为例子,同时增加了有关动态连接的内容。
  第8章(并行计算机体系结构)与第3版相比是完全重写的,详细介绍了多处理器(包括UMA、NUMA和COMA)和多计算机(包括MPP和COW)。
  经过扩充的推荐读物跟上了时代的步伐。参考书中超过三分之二的是第3版出版后的新的著作。二进制数和浮点数最近没有太大的变化,故附录和上一版基本上是相同的.
  最后,同第3版相比,对一些习题作了修改,也增加了许多新的习题,相应的新的习题解答可从Prentice Hall得到。习题解答仅提供给教师,可从Prentice Hall的当地代表处免费获得。
  关于本书的Web站点也已经建立,书中使用的所有图例均可从该站点上得到PostScript格式的电子版,可随意获取和打印。另外,站点上还有模拟程序和其他的一些软件工具,其地址是:
  http://www.CS.vu.nl/~ast/sco4/
  模拟程序和软件工具由Ray Ontko提供,作者在此对他编制的这些非常有用的程序表示由衷的谢意。
  许多人读过本书的(部分)手稿,并提出了有益的建议或以其他方式对本书提供了帮助。 我要感谢Henri Bal, Alan Charlesworth,Kourosh Gharachorloo,Marcus Goncalves,
 Karen Panetta Lentz,Timothy Mattson,Harlan McGhan,Miles Murdocca, Kevin Normoyle,Mike O’Connor,Mitsunori Ogihara,Ray Ontko,Aske Plaat,William Potvin II,Nagarajan Prabhakaran,James H.Pugsley, Ronald N.Schroeder,Ryan Shoemaker,Charles Silio Jr.以及Dale Skrien,感谢他们的帮助。我的学生,尤其是Adriaan Bon,Laura de Vries,DolfLoth,Guido van’t Noordende帮助我进行了校对,谢谢你们;
  我要特别感谢Jim Goodman对本书,尤其是第4章和第5章的卓越贡献。使用Java虚拟机的主意是他提出的,并用微体系结构实现。许多先进的想法中也有他的功劳。他的努力为本书增色不少。
  最后,我要感谢Suzanne对我长时间面对我的Pentium计算机的耐心。对我来说,Pentium比起我那台旧386来是一个很大的提高,但对她并没有什么区别。我也要感谢Barbara和Marvin,他们是我的好孩子,特别是Barbara,每当我想写东西时,总能保持安静。 
  Andrew S.Tanenbaum

作者简介

Andrew S.Tanenbaum:Andrew S.Tanenbaum获得过美国麻省理工学院的理学学士学位和加利福尼亚大学伯克利分校的哲学博士学位,目前是荷兰阿姆斯特丹Vrije大学的计算机科学系的教授,并领导着一个计算机系统的研究小组。同时,他还是一家计算与图像处理学院的院长,这是由几家大学合作成立的研究生院。尽管社会工作很多,但他并没有中断学术研究。多年来,他在编译技术、操作系统、网络及局域分布式系统方面进行了大量的研究工作。目前的主要研究方向是设计规模达数百万用户的广域分布式系统。在进行这些研究项目的基础上,他在各种学术杂志及会议上发表了70多篇论文。他同时还是5本计算机专著的作者。 Tanenbaum教授还开发了大量的软件。他是Amsterdan编译器的原理设计师,这是一个被广泛使用的,用来编写可移植编译器的工具箱。他领导编写的MINIX,是一个用于操作系统教学的类UNIX的小型操作系统。他和他的博士研究生及其他编程人员一道设计的Amoeba分布式操作系统,是一个高性能的微内核分布式操作系统。目前,可在因特网上免费得到MINIX及Amoeba,用于教学和研究。他的一些博士研究生,在获得学位后继续进行研究,并取得了更大的成就,赢得了社会的赞誉,对此他深感自豪。人们称他为桃李满天下的教育家。

译者简介

刘卫东 等:刘卫东: 生于1968年3月,清华大学计算机网络技术研究所副所长,副教授。1994年清华大学计算机科学与技术系研究生毕业,获硕士学位。 科研方向:计算机网络及应用,分布式信息系统,数据仓库,数据挖掘及信息安全。 现授课程"计算机组成原理"(本科)为清华大学校级精品课。

译者序

应大学同窗,时任Prentice Hall中国首席代表姜峰的要求,很高兴承担了由Andrew S.Tanenbaum先生所著的“Structured Computer Organization”一书的翻译任务。主要原因有两点:一是本人正承担清华大学计算机科学与技术系“计算机组成原理”课的教学任务,急需一本好的教学参考书;二是Tanenbaum先生的这本书确实是一本计算‘机组成与结构方面的好书,他从结构化角度来描述计算机组成,总结了计算机体系结构的特点,材料也十分翔实。
  翻译的过程非常艰苦。由于本人教学科研任务十分繁忙,只能在节假日和晚上的业余时间来进行这项工作,进展缓慢。为加快翻译速度,我力邀徐恪博士加盟翻译,历时一年有余,终于在新千年到来的时候完成。当最后一遍审阅完后,已经是农历己卯年岁未了。
  计算机组成与结构是计算机系最基础的课程,几乎是每个计算机系本科生的必修课,地位十分重要。但由于近二十年来计算机技术的迅猛发展,目前国内这方面的教材内空略显陈旧,无法反映当前计算机科学发展的最新成果。本书正好弥补了这些不足,所以,我愿意向广大读者推荐。
  本书包含了计算机组成与结构的各方面的内容,如运算器、存储器、输入输出设备、总线、指令系统设计等,甚至还有操作系统及并行计算等最新内容。作者采用结构化方法,将计算机分解成五层层次结构来论述,角度新颖,可以作为计算机专业本科生计算机组成与结构的教材或教学参考书,也可供其他计算机工作者参考。
  翻译过程中我们发现了原书中的一些印刷错误,都进行了更正。这些错误都不是原则性的,所以没有在译本中一一指出。
  本前前言和第1~第3章由刘卫东翻译,第4~第9章及附录A、附录B由徐恪翻译。清华大学计算机科学与技术系主讲教授王诚老师审阅了全书。限于译者水平,译文中一定会有错误和不当之处,敬请读者不吝赐教。 
                            刘卫东
                         2000年4月20日
                     于北京西三旗育新花园

图书目录

出版者的话
专家指导委员会
作者筒介
译者序
前言
第1章 概述
1.1 结构化计算机组成
1.1.1 语言、层次和虚拟机
1.1.2 现代多层计算机
1.1.3 多层次计算机的演化
1.2 计算机体系结构的里程碑
1.2.1 第零代--机械计算机  (1642--1945)
1.2.2 第一代--电子管计算机  (1945--1955)
1.2.3 第二代--晶体管计算机  (1955--1965)
1.2.4 第三代--集成电路计算机  (1965--1980)
1.2.5 第四代--超大规模集成电路计算机  (1980-- )
1.3 计算机家族
1.3.1 技术和经济的推动
1.3.2 计算机扫视
1.4 系列计算机举例
1.4.1 Pentium II简介
1.4.2 UltraSPARC II简介
1.4.3 picoJava II简介
1.5 本书概览
习题
第2章 计算机系统组成
2.1 处理器
2.1.1 CPU的组成
2.1.2 指令执行
2.1.3 RISC和CISC
2.1.4 现代计算机设计原则
2.1.5 指令级并行
2.1.6 处理器级并行
2.2 主存储器
2.2.1 存储位
2.2.2 内存编址
2.2.3 字节顺序
2.2.4 纠错码
2.2.5 高速缓存
2.2.6 内存条及其类型
2.3 辅助存储器
2.3.1 层次存储结构
2.3.2 磁盘
2.3.3 软盘
2.3.4 IDE盘
2.3.5 SCSI盘
2.3.6 RAID盘
2.3.7 只读光盘
2.3.8 可刻光盘
2.3.9 可擦写光盘
2.3.10 DVD
2.4 输入输出设备
2.4.1 总线
2.4.2 终端
2.4. 3 鼠标
2.4.4 打印机
2.4.5 调制解调器
2.4.6 字符编码
2.5 小结
习题
第3章 数字逻辑层
3.1 门和布尔代数
3.1.1 门
3.1.2 布尔代数
3.1.3 布尔函数的实现
3.1.4 等价电路
3. 2 基本数字逻辑电路
3.2.1 集成电路
3.2.2 组合逻辑电路
3.2.3 算术电路
3.2.4 时钟
3.3 内存
3.3.1 锁存器
3.3.2 触发器
3.3.3 寄存器
3.3.4 内存组成
3.3.5 内存芯片
3.3.6 RAM和ROM
3.4 CPU芯片和总线
3.4.1 CPU芯片
3.4.2 计算机总线
3.4.3 总线宽度
3.4.4 总线时钟
3.4.5 总线仲裁
3.4.6 总线操作
3.5 CPU芯片举例
3.5.1 Pentium II
3.5.2 UltraSPARC II
3.5. 3 picoJavs II
3.6 总线举例
3.6.1 ISA总线
3.6.2 PCI总线
3.6.3 通用串行总线
3.7 接口电路
3.7.1 输入输出芯片
3.7.2 地址译码
3.8 小结
习题
第4章 微体系结构层
4.1 微体系结构举例
4.1.1 数据通路
4.1.2 微指令
4.1. 3 微指令控制:Mic-1
4.2 指令系统举例:IJVM
4.2.1 堆栈
4.2.2 IJVM内存模型
4.2.3 IJVM指令集
4.2.4 将Java编译为IJVM
4.3 实现举例
4.3.1 微指令和符号语言
4.3.2 用Mic-1实现IJVM
4. 4 微体系结构层设计
4.4. 1 速度与价格
4.4.2 缩短指令执行路径长度
4.4.3 带预取的设计:Mic-2
4.4.4 流水线设计:Mic'3
4.4. 5 七段流水线设计:Mic-4
4.5 提高性能
4.5.1 高速缓存
4.5.2 分支预测
4.5.3 乱序执行和寄存器重命名
4.5.4 推测执行
4. 6 微体系结构层举例
4.6.1 Pentium II CPU的微体系结构
4.6.2 UltraSPARC-II CPU的微体系结构
4.6.3 pioJavaII CPU的微体系结构
4.6.4 三种CPU的比较
4.7 小结
习题
第5章 指令系统层
5.1 指令系统层概述
5.1.1 指令系统层的性质
5.1.2 存储模式
5.1.3 寄存器
5.1.4 指令
5.1.5 PentiumII指令系统层概述
5.1.6 UltraSPARCII指令系统层概述
5.1.7 Java虚拟机指令系统层概述
5.2 数据类型
5.2.1 数值数据类型
5.2.2 非数值数据类型
5.2.3 Pentium II的数据类型
5.2.4 UltraSPARCII的数据类型
5.2.5 Java虚拟机的数据类型
5.3 指令格式
5.3.1 指令格式设计标准
5.3.2 操作码扩展
5.3.3 Pentium II指令格式
5.3.4 UltraSPARCII指令格式
5.3.5 Java虚拟机指令格式
5. 4 寻址
5.4.1 寻址方式
5.4.2 立即寻址
5.4.3 直接寻址
5.4.4 寄存器寻址
5.4.5 寄存器间接寻址
5.4.6 变址寻址
5.4.7 基址变址寻址
5.4.8 堆栈寻址
5.4.9 转移指令的寻址方式
5.4.10 操作码和寻址方式的关系
5. 4.11 PentiumII的寻址方式
5.4.12 UltraSPARCII的寻址方式
5. 4.13 Java虚拟机寻址方式
5.4.14 寻址方式讨论
5.5 指令类型
5.5.1 数据移动指令
5.5.2 双操作数指令
5.5.3 单操作数指令
5.5.4 比较和条件转移指令
5.5.5 过程调用指令
5.5.6 循环控制指令
5.5.7 输入输出指令
5.5.8 Pentium II指令系统
5.5.9 UltraSPARCll指令系统
5.5.10 picoJavaII指令系统
5.5.11 指令集比较
5.6 控制流
5.6.1 顺序控制流和转移
5.6.2 过程
5.6.3 协同过程
5. 6.4 陷阱
5. 6.5 中断
5.7 详细举例:汉诺塔
5. 7.1 PentiumII汇编语言实现的汉诺塔
5. 7.2 UltraSPARC II汇编语言实现的汉诺塔
5. 7.3 Java虚拟机汇编语言实现的汉诺塔
5.8 Intel的IA-64
5.8.1 Pentium II的问题
5.8.2 IA-64模型:显式并行指令计算
5.8.3 判定
5.8.4 预取
5.8.5 现实障碍
5.9 小结
习题
第6章 操作系统层
6.1 虚拟内存
6.1.1 内存分页
6.1.2 内存分页的实现
6.1.3 请求调页和工作集模型
6.1. 4 页置换策略
6.1. 5 页大小和碎片
6.1.6 分段
6.1. 7 分段的实现
6.1.8 PentiumII中的虚拟内存
6.1.9 UltraSPARC的虚拟内存
6.1.10 虚拟内存和高速缓存
6.2 虚拟输入输出指令
6.2.1 文件
6.2.2 虚拟输入输出指令的实现
6.2.3 目录管理指令
6.3 用于并行处理的虚拟指令
6.3.1 进程创建
6.3.2 竞争条件
6. 3.3 使用信号量的进程同步
6.4 操作系统实例
6. 4.1 简介
6. 4.2 虚拟内存实例
6. 4.3 虚拟输入输出实例
6. 4.4 进程管理实例
6.5 小结
习题
第7章 汇编语言层
7.1 汇编语言简介
7.1.1 什么是汇编语言
7.1.2 为什么使用汇编语言
7.1.3 汇编语言语句的格式
7.1.4 伪指令
7.2 宏
7.2.1 宏定义、调用和扩展
7. 2.2 带参数的宏
7.2.3 高级特性
7.2.4 汇编器中宏处理的实现
7.3 汇编过程
7.3.1 两趟汇编的汇编器
7.3.2 第一趟扫描
7.3.3 第二趟扫描
7.3.4 符号表
7.4 链接和加载
7.4.1 链接器的功能
7.4.2 目标模块的结构
7.4.3 绑定时间和动态重定位
7.4,4 动态链接
7.5 小结
习题
第8章 并行计算机体系结构
8.1 并行计算机设计中的主要问题
8. 1.1 通信模型
8. 1. 2 互连网络
8. 1.3 性能
8. 1.4 软件
8.1.5 并行计算机的分类
8.2 SIMD计算机
8.2.1 阵列处理机
8.2.2 向量处理机
8.3 共享内存的多处理器系统
8.3.1 内存语义
8.3.2 基于UMA总线的SMP体系结构
8.3.3 使用交叉开关的UMA多处理器系统
8.3.4 使用多级交换网络的UMA多处理器系统
8.3. 5 NUMA多处理器系统
8.3.6 cache一致的NUMA多处理器系统
8.3.7 COMA多处理器系统
8.4 基于消息传递的多计算机系统
8.4.1 MPP:大规模并行处理机
8.4.2 COW:工作站集群
8.4.3 调度
8.4.4 用于多计算机系统的通信软件
8.4.5 应用层的共享内存
8.5 小结
习题
第9章 推荐读物和参考文献
9.1 推荐读物
9.1.1 一般性和介绍性的读物
9.1.2 计算机系统组成
9.1.3 数字逻辑层
9.1. 4 微体系结构层
9.1. 5 指令系统层
9.1. 6 操作系统层
9.1. 7 汇编语言层
9.1. 8 并行计算机体系结构
9. 1. 9 二进制数和浮点数
9.2 参考文献
附录A 二进制数
附录B 浮点数
索引

教学资源推荐
作者: 俞辉 李永 刘凯 王晓虹 等编著
作者: [美] 琳达·纳尔(Linda Null) 朱莉娅·洛博( Julia Lobur) 著宾夕法尼亚州立大学
作者: [美]道格拉斯·科莫(Douglas Comer)著
作者: Arnold S. Berger
参考读物推荐
作者: Mark Artiges等
作者: 吴飞青,丁晓,李林功,练斌