当前: 首页 - 图书专区 - 计算机组成:结构化方法(原书第6版)
计算机组成:结构化方法(原书第6版)


  在线购买
(荷)Andrew S. Tanenbaum (美)Todd Austin 著
978-7-111-45380-2
99.00
568
2014年08月25日
刘卫东 宋佳兴 译
计算机 > 计算机组织与体系结构
Pearson Education Asia
2467
简体中文
16
Structured Computer Organization
教材
计算机科学丛书







本书采用结构化方法介绍计算机系统,书的内容完全建立在“计算机是由层次结构组成的,每层完成规定的功能”这一概念之上。作者对本版进行了彻底的更新,以反映当今最重要的计算机技术以及计算机组成和体系结构方面的最新进展。书中详细讨论了数字逻辑层、微体系结构层、指令系统层、操作系统层和汇编语言层,并涵盖了并行体系结构的内容,而且每一章结尾都配有丰富的习题。

作者简介:
Andrew S. Tanenbaum 拥有美国麻省理工学院理学学士学位和加州大学伯克利分校哲学博士学位,目前是荷兰阿姆斯特丹Vrije大学计算机科学系教授,讲授操作系统、网络、计算机系统等相关课程30余年。多年来,他在编译技术、操作系统、分布式系统、安全等方面做了大量的研究工作,在各种学术杂志及会议上发表论文150多篇,著有计算机教材5本,同时还开发了大量的软件。Tanenbaum教授是ACM会士、IEEE会士以及荷兰皇家科学艺术院院士。他还获得了许多科学奖,包括2010年美国教科书与高等院校作者协会(TAA)的麦格菲奖(McGuffey Award)(授予经典教材),2007年IEEE James H. Mulligan, Jr.教育奖章,2002年美国教科书与高等院校作者协会的教材奖(Texty Award)(授予新教材),1997年ACM/SIGCSE计算机科学教育杰出贡献奖,1994年ACM Karl V.Karlstrom杰出教育家奖。

Todd Austin 拥有威斯康星大学计算机科学博士学位,现为密歇根大学安娜堡分校电子工程和计算机科学教授。他的研究兴趣包括计算机体系结构、可靠系统设计、硬件和软件验证、性能分析工具和技术。他获得过许多奖项,其中包括2002年的美国斯隆研究奖(Sloan Research Fellow),2007年的ACM莫里斯威尔克斯奖(Maurice Wilkes Award)。
本书的前5个版本都是建立在计算机由层次结构组成、每层完成规定的功能这一思想上的。今天,这一基本思想依旧和第1版刚出版时一样正确,它依然是第6版的基础。和前5版一样,我们将详细讨论数字逻辑层、微体系结构层、指令系统层、操作系统层和汇编语言层。
尽管保留了基本的结构,但第6版还是包含了或大或小的许多变动,以跟上飞速更新的计算机产业的步伐。例如,本版的示例计算机均已改成当前的主流计算机系统,即Intel公司的Core i7、德州仪器的OMAP4430和Atmel的ATmega168。其中,Core i7是广泛应用于笔记本、台式机和服务器的CPU,而OMAP4430是一款基于ARM的主流CPU,被很多智能手机和平板电脑采用。
许多人可能从未听说过ATmega168微控制器,但也许每天都会和它打交道。由于极其低廉的成本(几美分)、高附加值的软件和外部设备,以及数量众多的程序员,基于AVR的ATmega168广泛用于从定时收音机到微波炉的许多嵌入式系统中,世界上ATmega168的数量要比Pentium以及Core i3、i5和i7 CPU多出许多个数量级。同时,ATmega168也是Arduino单片嵌入式系统中使用的处理器,Arduino是一个基于开源代码的软硬件平台,最初由意大利一所大学设计,价格低廉,比在比萨店吃顿晚饭还便宜。
近年来,许多讲授本课程的教授多次询问关于汇编语言程序设计的内容,第6版把这些材料放在了本书的网站中(地址见后),这样做可以方便更新这些材料,以保持它们的时新性。我们选择的是8088汇编语言,主要原因在于它是当前流行的Core i7处理器使用的IA32指令集的先前版本,我们当然也可以选择ARM或者AVR指令集,甚至其他没人听说过的指令系统作为例子,但作为目的性很强的教学工具,由于大多数同学家里都有一台兼容8088的计算机,8088显然是一个更好的选择。Core i7的全集太复杂,不适宜让学生了解全部细节,8088则要简单得多。
另外,本版使用Core i7作为例子,讲解了不少该CPU的细节,Core i7本身就能运行8088汇编语言程序。尽管如此,调试汇编语言代码依然比较困难,我们提供了一系列工具来帮助大家学习汇编语言编程,包括8088的汇编器、模拟程序和跟踪程序。这些工具可在Windows、Unix和Linux环境下运行,都可在本书的网站上下载。
这些年来,本书也变得越来越厚(第1版有443页,而本版有769页)。由于学科本身的发展和对它的了解的加深,这也是不可避免的。因此,当用作教材时,可能就无法在一门课(一个学期)中讲述完所有内容。一种可行的方法是讲述第1、第2和第3章的全部内容,第4章的前4节,以及第5章的少量内容。其余的时间可根据教师和学生的兴趣介绍第4章剩余部分和第6、第7、第8章的部分内容。
下面逐章介绍一下各章纲要及对第5版的主要改动。第1章依然是对计算机体系结构发展的历史回顾,指出我们是如何走过来的,目前的位置和发展道路上的主要里程碑。当了解到20世纪60年代世界上最强大的计算机的成本高达数百万美元,而计算能力还不及现在智能手机的1%时,许多同学可能会十分惊讶。我们还要介绍广义上的计算机系列,包括FPGA、智能手机、平板电脑和游戏控制器。当然,本版新的3种示例处理器(Core i7、OMAP4430和ATmega168)的体系结构也在本章中有简单说明。
第2章在处理方式方面,增加了数据并行处理器也就是图形处理器(Graphics Processing Unit,GPU)的相关材料。存储技术领域引入了当前正趋于流行的基于Flash的存储设备。而2.4节中,加入了对现代游戏控制器(如Wiimote、Kinect)和智能手机、平板电脑上使用的触摸屏等的介绍。
第3章的许多地方都进行了修改。该章依然从晶体管开始论述,这样做的好处是没有任何硬件基础的同学也能理解现代计算机的运行原理。新增加的内容主要是现场可编程门阵列(Field-Programmable Gate Array,FPGA)的相关内容,现场可编程芯片价格降低到可以在教学中广泛使用,使得真正的大规模门级设计可以引入课堂。对用作示例的三种新的处理器体系结构做了芯片级的介绍。
第4章讲解计算机是如何运行的。这章一直就颇受好评,因此从第5版开始就没做大的改变。当然,用作示例的Core i7、OMAP4430和ATmega168的微体系结构层的内容是新的。
第5、6章仅就新的示例体系结构所涉及的部分做了改写,尤其是增加了对ARM和AVR指令系统的描述。第6章用Windows 7取代Windows XP作为例子。
第7章的内容是关于汇编语言编程的,和前一版比基本没有变化。
第8章做了许多修改,以反映在并行计算机领域各方面的新的研究动向。增加了Core i7多处理器体系结构的一些新的特征,并详细介绍了NVIDIA Fremi的通用GPU体系结构。最后,对BlueGene和Red Storm超级计算机的内容进行了更新,以跟上这些巨型机最近的升级。
参考文献也做了修改。将推荐读物放在了网站上,因此,这一版中引出的仅仅是本书引用过的参考文献,许多都是全新的。计算机组成是一个快速发展的领域。
附录A和附录B从上一版本开始就没有修改,这些年以来,二进制数和浮点数的表示没有什么变化。附录C是关于汇编语言程序设计的,由阿姆斯特丹Vrije大学的Evert Wattel博士编写,Wattel博士拥有多年使用这些工具进行教学的经验。我们十分感谢他写的这个附录,主要内容没有做调整,但将工具放到了网站上。
除汇编语言的工具之外,本书网站还包含一个配合第4章使用的图形模拟器。它是由Oberlin学院的Richard Salter教授编制的,可用于帮助同学们掌握第4章讨论的基本原理。十分感谢Richard Salter教授提供该软件。
包含这些工具以及其他内容的本书网站的网址是:
http://www.pearsonhighered.com/tanenbaum
从网页上点击本书的链接,并从菜单项中选择你所找寻的页面。其中的学生资源包括:
汇编器/追踪器软件。
图形模拟器。
推荐读物。
教师资源包括:
课程的PowerPoint幻灯片。
每章习题的解答。
教师资源需要通过密码访问。使用本书作为教材的教师可通过联系当地的Pearson教育代表获得密码。
许多人读过本书的(部分)手稿,并提出了有益的建议或以其他方式对本书提供了帮助。我们要特别感谢Anna Austin、Mark Austin、Livio Bertacco、Valeria Bertacco、Debapriya Chatterjee、Jason Clemons、Andrew DeOrio、Joseph Greathouse和Andrea Pellegrini。
下列人士审阅了手稿并提出了修改意见:Jason D. Bakos(University of South Carolina),Bob Brown(Southern Polytechnic State University)、Andrew Chen(Minnesota State University, Moorhead)、J. Archer Harris(James Madison University)、Susan Krucke(James Madison University)、A. Yauvz Oruc(University of Maryland)、France Marsh(Jamestown Community College)和Kris Schindler(University at Buffalo)。十分感谢他们。
还有几位帮助我们提供了新的习题。他们是:Byron A. Jeff(Clayton University)、Laura W. McFall(Depaul University)、Taghi M. Mostafavi(University of North Carolina at Charlotte)和James Nystrom(Ferri State University)。我们再次感谢他们的帮助。
我们的编辑Tracy Johnson给了我们全方位的帮助,十分感谢他的耐心。Carole Snyder在协调参与本书写作工作的各类人士方面提供了十分专业的帮助。Bob Englehardt对本书的最后出品做了很好的贡献。
我(Andrew S. Tanenbaum)要再次感谢Suzanne的爱和耐心,她一直陪伴我完成了21本著作的写作。Barbara和Marvin永远是开心果,他们现在也知道了教授是如何谋生的。Aron属于新生的一代:上幼儿园之前就已经是资深的计算机用户了。Nathan还没有达到这个程度,但他学会走路后,iPad将会是他的下一个学习目标。
最后,我(Todd Austin)要趁此机会感谢我的岳母Roberta,她为我写作本书提供了许多黄金时间。她在意大利Bassano Del Grappa的餐桌上刚好有足够的幽静、舒适和葡萄酒,供我完成这项重要的工作。

Andrew S. Tanenbaum
Todd Austin
出版者的话
译者序
前言
第1章 概述 1
1.1 结构化计算机组成 1
1.1.1 语言、层次和虚拟机 1
1.1.2 现代多层次计算机 3
1.1.3 多层次计算机的演化 5
1.2 计算机体系结构的里程碑 8
1.2.1 第零代——机械计算机(1642—1945) 8
1.2.2 第一代——电子管计算机(1945—1955) 10
1.2.3 第二代——晶体管计算机(1955—1965) 12
1.2.4 第三代——集成电路计算机(1965—1980) 14
1.2.5 第四代——超大规模集成电路计算机(1980年至今) 15
1.2.6 第五代——低功耗和无所不在的计算机 17
1.3 计算机家族 18
1.3.1 技术和经济推动 18
1.3.2 计算机扫视 20
1.3.3 一次性计算机 21
1.3.4 微型控制器 22
1.3.5 移动计算机和游戏计算机 23
1.3.6 个人计算机 24
1.3.7 服务器 25
1.3.8 大型主机 26
1.4 系列计算机举例 26
1.4.1 x86体系结构简介 27
1.4.2 ARM体系结构简介 31
1.4.3 AVR体系结构简介 32
1.5 公制计量单位 33
1.6 本书概览 34
习题 35
第2章 计算机系统组成 38
2.1 处理器 38
2.1.1 CPU组成 39
2.1.2 指令执行 40
2.1.3 RISC和CISC 42
2.1.4 现代计算机设计原则 43
2.1.5 指令级并行 44
2.1.6 处理器级并行 47
2.2 主存储器 50
2.2.1 存储位 50
2.2.2 内存编址 51
2.2.3 字节顺序 52
2.2.4 纠错码 53
2.2.5 高速缓存 56
2.2.6 内存封装及其类型 58
2.3 辅助存储器 59
2.3.1 层次存储结构 59
2.3.2 磁盘 60
2.3.3 IDE盘 62
2.3.4 SCSI盘 63
2.3.5 RAID盘 64
2.3.6 固盘 67
2.3.7 只读光盘 68
2.3.8 可刻光盘 71
2.3.9 可擦写光盘 73
2.3.10 DVD 73
2.3.11 Blu-Ray 74
2.4 输入/输出设备 75
2.4.1 总线 75
2.4.2 终端 78
2.4.3 鼠标 81
2.4.4 游戏控制器 83
2.4.5 打印机 84
2.4.6 电信设备 88
2.4.7 数码相机 94
2.4.8 字符编码 95
2.5 小结 99
习题 99
第3章 数字逻辑层 103
3.1 门和布尔代数 103
3.1.1 门 103
3.1.2 布尔代数 105
3.1.3 布尔函数的实现 107
3.1.4 等价电路 108
3.2 基本数字逻辑电路 110
3.2.1 集成电路 111
3.2.2 组合逻辑电路 111
3.2.3 算术电路 114
3.2.4 时钟 118
3.3 内存 119
3.3.1 锁存器 119
3.3.2 触发器 121
3.3.3 寄存器 122
3.3.4 内存组成 123
3.3.5 内存芯片 125
3.3.6 RAM和ROM 128
3.4 CPU芯片和总线 130
3.4.1 CPU芯片 130
3.4.2 计算机总线 132
3.4.3 总线宽度 134
3.4.4 总线时钟 135
3.4.5 总线仲裁 138
3.4.6 总线操作 141
3.5 CPU芯片举例 143
3.5.1 Intel Core i7 143
3.5.2 德州仪器的OMAP4430片上系统 147
3.5.3 Atmel的ATmega168微控制器 150
3.6 总线举例 152
3.6.1 PCI总线 152
3.6.2 PCI Express 159
3.6.3 通用串行总线USB 162
3.7 接口电路 165
3.7.1 输入/输出接口 165
3.7.2 地址译码 166
3.8 小结 169
习题 169
第4章 微体系结构层 173
4.1 微体系结构举例 173
4.1.1 数据通路 174
4.1.2 微指令 178
4.1.3 微指令控制:Mic-1 180
4.2 指令系统举例:IJVM 183
4.2.1 栈 183
4.2.2 IJVM内存模型 185
4.2.3 IJVM指令集 186
4.2.4 将Java编译为IJVM 189
4.3 实现举例 190
4.3.1 微指令和符号 190
4.3.2 用Mic-1实现IJVM 193
4.4 微体系结构层设计 201
4.4.1 速度与价格 202
4.4.2 缩短指令执行路径长度 203
4.4.3 带预取的设计:Mic-2 208
4.4.4 流水线设计:Mic-3 211
4.4.5 七段流水线设计:Mic-4 215
4.5 提高性能 217
4.5.1 高速缓存 218
4.5.2 分支预测 222
4.5.3 乱序执行和寄存器重命名 226
4.5.4 推测执行 230
4.6 微体系结构层举例 232
4.6.1 Core i7 CPU的微体系结构 232
4.6.2 OMAP4430 CPU的微体系结构 236
4.6.3 ATmega168微控制器的微体系结构 240
4.7 Core i7、OMAP4430和ATmega168三种CPU的比较 241
4.8 小结 242
习题 243
第5章 指令系统层 246
5.1 指令系统层概述 247
5.1.1 指令系统层的性质 247
5.1.2 存储模式 249
5.1.3 寄存器 250
5.1.4 指令 251
5.1.5 Core i7指令系统层概述 251
5.1.6 OMAP4430 ARM指令系统层概述 253
5.1.7 ATmega168 AVR指令系统层概述 255
5.2 数据类型 256
5.2.1 数值数据类型 257
5.2.2 非数值数据类型 257
5.2.3 Core i7的数据类型 258
5.2.4 OMAP4430 ARM CPU的数据类型 258
5.2.5 ATmega168 AVR CPU的数据类型 259
5.3 指令格式 259
5.3.1 指令格式设计准则 260
5.3.2 扩展操作码 261
5.3.3 Core i7指令格式 263
5.3.4 OMAP4430 ARM CPU指令格式 264
5.3.5 ATmega168 AVR指令格式 266
5.4 寻址 267
5.4.1 寻址方式 267
5.4.2 立即寻址 267
5.4.3 直接寻址 267
5.4.4 寄存器寻址 267
5.4.5 寄存器间接寻址 267
5.4.6 变址寻址 269
5.4.7 基址变址寻址 270
5.4.8 栈寻址 270
5.4.9 转移指令的寻址方式 272
5.4.10 操作码和寻址方式的关系 273
5.4.11 Core i7的寻址方式 274
5.4.12 OMAP4430 ARM CPU的寻址方式 276
5.4.13 ATmega168 AVR的寻址方式 276
5.4.14 寻址方式讨论 276
5.5 指令类型 277
5.5.1 数据移动指令 277
5.5.2 双操作数指令 278
5.5.3 单操作数指令 279
5.5.4 比较和条件转移指令 280
5.5.5 过程调用指令 281
5.5.6 循环控制指令 282
5.5.7 输入/输出指令 283
5.5.8 Core i7指令系统 285
5.5.9 OMAP4430 ARM CPU指令系统 287
5.5.10 ATmega168 AVR指令系统 289
5.5.11 指令集比较 291
5.6 控制流 291
5.6.1 顺序控制流和转移 291
5.6.2 过程 292
5.6.3 协同过程 295
5.6.4 陷阱 297
5.6.5 中断 297
5.7 详细举例:汉诺塔 300
5.7.1 Core i7汇编语言实现的汉诺塔 300
5.7.2 OMAP4430 ARM汇编语言实现的汉诺塔 302
5.8 IA-64体系结构和Itanium 2 303
5.8.1 IA-32的问题 303
5.8.2 IA-64模型:显式并行指令计算 304
5.8.3 减少内存访问 305
5.8.4 指令调度 305
5.8.5 减少条件转移:判定 307
5.8.6 推测加载 308
5.9 小结 309
习题 310
第6章 操作系统层 314
6.1 虚拟内存 314
6.1.1 内存分页 315
6.1.2 内存分页的实现 316
6.1.3 请求调页和工作集模型 319
6.1.4 页置换策略 320
6.1.5 页大小和碎片 321
6.1.6 分段 322
6.1.7 分段的实现 324
6.1.8 Core i7的虚拟内存 326
6.1.9 OMAP4430 ARM CPU的虚拟内存 329
6.1.10 虚拟内存和高速缓存 331
6.2 硬件虚拟化 331
6.3 操作系统层I/O指令 333
6.3.1 文件 333
6.3.2 操作系统层I/O指令的实现 335
6.3.3 目录管理指令 337
6.4 用于并行处理的操作系统层指令 338
6.4.1 进程创建 339
6.4.2 竞争条件 339
6.4.3 使用信号量的进程同步 342
6.5 操作系统实例 345
6.5.1 简介 345
6.5.2 虚拟内存实例 350
6.5.3 操作系统层I/O举例 352
6.5.4 进程管理实例 361
6.6 小结 365
习题 366
第7章 汇编语言层 371
7.1 汇编语言简介 371
7.1.1 什么是汇编语言 372
7.1.2 为什么使用汇编语言 372
7.1.3 汇编语言语句的格式 373
7.1.4 伪指令 374
7.2 宏 376
7.2.1 宏定义、调用和扩展 376
7.2.2 带参数的宏 377
7.2.3 高级特性 378
7.2.4 汇编器中宏处理的实现 378
7.3 汇编过程 379
7.3.1 两趟汇编的汇编器 379
7.3.2 第一趟扫描 379
7.3.3 第二趟扫描 382
7.3.4 符号表 384
7.4 链接和加载 385
7.4.1 链接器的处理过程 386
7.4.2 目标模块的结构 388
7.4.3 绑定时间和动态重定位 389
7.4.4 动态链接 390
7.5 小结 393
习题 393
第8章 并行计算机体系结构 396
8.1 片内并行 397
8.1.1 指令级并行 397
8.1.2 片内多线程 402
8.1.3 单片多处理器 406
8.2 协处理器 410
8.2.1 网络处理器 411
8.2.2 图形处理器 416
8.2.3 加密处理器 418
8.3 共享内存的多处理器 418
8.3.1 多处理器与多计算机 418
8.3.2 内存语义 424
8.3.3 UMA对称多处理器体系结构 426
8.3.4 NUMA多处理器系统 432
8.3.5 COMA多处理器系统 439
8.4 消息传递的多计算机 440
8.4.1 互联网络 441
8.4.2 MPP——大规模并行处理器 443
8.4.3 集群计算 450
8.4.4 多计算机的通信软件 454
8.4.5 调度 456
8.4.6 应用层的共享内存 457
8.4.7 性能 461
8.5 网格计算 465
8.6 小结 467
习题 468
参考文献 471
附录A 二进制数 479
附录B 浮点数 487
附录C 汇编语言程序设计 493
索引 534
2013年春节刚过,接到机械工业出版社华章分社的电话,希望我们能继续翻译《Structured Computer Organization》第6版。合作多年,盛情难却,踌躇一番后,也只好应承下来。
第6版和第5版,从出版时间上看,相差了差不多8年,而这段时间是计算机组成和系统结构领域飞速发展的时期。一系列新的概念兴起和新应用的普及,如云计算、物联网、移动计算等,使计算机应用更为广泛地深入到社会的各个方面,甚至成为推动社会发展的重要力量。反过来,这些新概念和新应用,也对计算机组成和结构提出了新的要求,引导着计算机组成和结构发展方向。
在此背景下,《Structured Computer Organization》第6版在保持原有的基本结构和主要内容时,高度关注计算机组成和结构领域的发展趋势,特别注意将计算机组成方面一些新的技术增加进来。在实例的选择上,Core i7、OMAP4430和ATmega168分别作为桌面计算、移动计算和嵌入式计算的代表,且在指令系统上又分别采用了x86、ARM和AVR指令系统,覆盖了当前流行计算模式的主要内容,体现了作者选材的独具匠心。而GPU、FLASH、FPGA和并行技术等的引入,也使教材内容与时俱进,让读者能在掌握计算机组成的基本原理的同时,领略到该领域内一些新的发展方向和趋势。
本书一直保持了从层次化角度描述计算机硬软件系统完整体系体系结构的特点。在计算机专业教育中强调系统能力培养这一观点,也逐步得到我国教育界的重视。可以说,这本书是进行计算机系统能力培养的一本好教材。
本版前言和第1~4章由刘卫东翻译,第5~8章、附录A、附录B、附录C及索引由宋佳兴翻译。清华大学计算机科学与技术系王诚教授审阅了全书。
虽然我们特别注意改正了第5版译文中我们自己发现的和一些读者指出的翻译错误,也尽我们的能力纠正了第6版(英文版)本身的一些小的纰漏,但限于译者水平,译文中肯定还会有错误和不当之处,依然敬请读者不吝赐教。

刘卫东 宋佳兴
2014年4月14日
计算机\计算机组成
读者书评
发表评论



高级搜索
逻辑与计算机设计基础(原书第5版)
数字逻辑设计与计算机组成
并行计算机组成与设计


版权所有© 2017  北京华章图文信息有限公司 京ICP备08102525号 京公网安备110102004606号
通信地址:北京市百万庄南街1号 邮编:100037
电话:(010)68318309, 88378998 传真:(010)68311602, 68995260
高校教师服务
华章教育微信
诚聘英才
诚聘英才