关于我们
书单推荐
新书推荐
|
计算机组成与体系结构(原书第4版)
全书揭示现代计算机的内部工作方式,采用大量真实的例子,引导读者逐步由浅入深地学习计算机体系结构的概念和理论。
致学生
这是一本关于计算机组成与体系结构的书。它重点研究处理数字信息所需要的各种组件的功能和设计。我们把计算系统分成一系列的层次,从低层的硬件到更高层的软件,包括汇编程序和操作系统。这些层构成了虚拟机的层次结构。关于计算机组成的研究主要集中在这种层次结构上,包括如何划分所涉及的层次和如何实现每个层次。关于计算机体系结构的研究主要集中在硬件和软件之间的接口上,强调系统的结构和行为。本书中包含的主要信息涉及计算机硬件、计算机组成和体系结构以及它们与软件性能的关系。 学生总是问,“如果我是一名计算机科学专业的学生,我必须学习计算机硬件吗?那不是计算机工程师要学的吗?为什么我要关心计算机内部是什么样子呢?”作为计算机的使用者,我们可能不必关心计算机内部是什么样子的,就像开车时我们不需要知道汽车发动机下面是什么样子一样。在不理解高级语言程序如何执行的情况下,我们当然能写高级语言程序;在不理解各种应用程序包实际如何工作的情况下,我们也可以使用各种应用程序包。但是,当需要使写出来的程序变得更快和更有效,或者正在使用的应用程序没有达到要求时,我们该怎么办?作为计算机科学家,为了解决这些问题我们需要对计算机系统本身有基本的理解。 在计算机系统中,计算机硬件与程序和软件组件的许多方面之间有一种基本的关系。为了写出好软件,理解整个计算机系统是非常重要的。理解硬件能够帮助你解释有时潜入程序中的神秘错误,如分段错误和总线错误。高级程序员必须具备的计算机组成和计算机体系结构的知识水平,取决于所要完成的任务。 例如,在写编译器程序时,你必须理解运行所编译的程序的特定硬件。一些在硬件中使用的思想(如流水线)可能适合于编译技术,从而使编译器更快和更高效。对大型复杂的实时系统建模时,你必须理解浮点运算是如何实现和如何工作的(它们不一定是同一回事)。在为视频设备、磁盘或其他I/O设备写驱动程序时,一般来说,你需要很好地理解I/O接口和计算机体系结构。如果你想做嵌入式系统方面的工作,由于嵌入式系统通常是非常受资源约束的,你必须理解所有的时间、空间和价格的权衡。在进行硬件、网络或特殊算法方面的研究和提出硬件、网络或特殊算法方面的建议时,你必须理解基准测试并且学习如何表示性能结果。在买硬件之前,你需要理解基准测试和其他可以巧妙处理性能结果以“证明”一个系统比另一个系统更好的所有方法。不管我们擅长的专业领域是什么,作为计算机科学家,理解硬件如何与软件交互是非常重要的。 你可能会奇怪,为什么英文书名中写着essentials的书会这么厚。原因有两个方面。首先,计算机组成的主题是宽泛和日益发展的。其次,在这个迅速发展的信息海洋中哪些主题是真正的基础,哪些主题只是有助于了解这个领域,几乎没有共识。这本书的一个目的是符合由ACM和IEEE联合发布的关于计算机体系结构课程指南的要求。这个指南包含了专家认可的关于计算机组成和体系结构主题的基础核心知识。 我们已经扩大了ACM/IEEE建议的主题,增加了我们认为对继续研究计算机科学和提高专业水平有用的(未必是基础的)主题。我们认为这些主题将有助于你继续在操作系统、编译程序、数据库管理和数据通信等计算机科学领域的学习。本书中包含的其他主题将有助于理解实际系统在现实生活中是如何工作的。 我们希望你阅读本书是一次愉快的经历,并且花时间深入钻研我们提供的一些材料。我们的目的是在你正式完成课程后,这本书仍将是有用的参考书。虽然我们给了你大量的信息,但这仅是你学习和职业生涯的基础。成功的计算机专业人员会不断深入了解计算机工作原理。 致教师 本书是在宾夕法尼亚州立大学哈里斯堡校区教两个班的计算机组成和体系结构课程的基础上形成的。随着计算机科学课程的发展,我们发现不仅需要修改课程中所教的材料,而且需要把课程从连续开设两个学期压缩为一个学期(三学分)。许多其他学校也已经认识到需要压缩教材,以便为新出现的主题腾出空间。这门新课程以及这本教材主要是针对计算机科学专业的,旨在讨论计算机科学专业学生必须熟悉的计算机组成和体系结构中的主题。本书整合了这些领域的基本原理,为计算机科学专业的学生提供了必要的广度,同时为在计算机科学领域继续学习的学生提供了必要的深度。 在写本书时,我们的主要目标是改变讲授计算机组成和体系结构课程的典型方式。计算机科学专业的学生在学完计算机组成和体系结构课程之后,不仅要了解构建数字计算机的重要基本概念,而且还要理解这些概念如何应用于现实世界。这些概念应该超越特定厂家的术语和设计。事实上,学生应该能够理解给定的特定概念并且能将其翻译成一般概念,反之亦然。此外,学生必须为进一步的专业学习打下坚实的基础。 本书介绍的主题是每个计算机科学专业的学生都应该接触、熟悉或精通的。我们并没有期望学生能完全掌握所有主题。然而,我们坚信有些主题必须要掌握,有些主题必须有一定程度的了解,有些主题接触一下就足够了。 我们不认为孤立地研究一般性的原理就可以把这些主题学到足够深入。因此,我
Linda Null 艾奥瓦州立大学计算机科学博士,现为宾夕法尼亚州立大学计算机科学系副教授,计算机科学研究生课程协调员和课程副主席。研究领域包括:计算机组成和体系结构、操作系统、计算机科学教育和计算机安全。她已经从事数学和计算机科学教学工作超过35年,是广受欢迎的教材作者,编写的教材曾多次获得美国教材和学术著作者协会颁发的计算机科学与工程教材奖。
Julia Lobur 在计算机工业界和教育界从业超过30年的专业人员。她除了在宾夕法尼亚州立大学兼职教学工作外,还担任过系统顾问、高级程序员/分析师、系统和网络设计师、软件开发经理和项目经理等职位。Julia是计算机科学硕士、IEEE认证的软件开发专业人员。
出版者的话
译者序 前言 第1章 绪论1 1.1 引言1 1.2 计算机的主要部件2 1.3 一个实例系统:吃力地读专业词汇3 1.4 标准组织12 1.5 发展历史13 1.5.1 第零代:机械计算机(1642~1945年)13 1.5.2 第一代:电子管计算机(1945~1953年)15 1.5.3 第二代:晶体管计算机(1954~1965年)18 1.5.4 第三代:集成电路计算机(1965~1980年)20 1.5.5 第四代:超大规模集成电路计算机(1980~)20 1.5.6 摩尔定律22 1.6 计算机层次结构23 1.7 云计算:计算即服务24 1.8 冯·诺依曼模型26 1.9 非冯·诺依曼模型28 1.10 并行处理器和并行计算29 1.11 并行性:机器智能的 推动者——深蓝和沃森30 本章小结32 扩展阅读32 参考文献33 复习题34 习题35 第2章 计算机系统中的数据表示37 2.1 引言37 2.2 按位计数系统37 2.3 不同进制之间的转换38 2.3.1 无符号整数的转换38 2.3.2 小数的转换40 2.3.3 2的幂次作为基数的计数系统之间的转换41 2.4 有符号整数表示42 2.4.1 原码42 2.4.2 补码系统45 2.4.3 有符号数的移码表示49 2.4.4 无符号数与有符号数50 2.4.5 计算机、算术和布斯算法50 2.4.6 进位和溢出53 2.4.7 使用移位进行二进制乘法和除法54 2.5 浮点数表示55 2.5.1 一个简单的模型55 2.5.2 浮点运算57 2.5.3 浮点误差58 2.5.4 IEEE- 754浮点标准59 2.5.5 表数范围、精度和准确度60 2.5.6 有关浮点数的其他问题61 2.6 字符编码62 2.6.1 二进制编码的十进制63 2.6.2 EBCDIC64 2.6.3 ASCII64 2.6.4 Unicode65 2.7 错误检测与纠错67 2.7.1 循环冗余校验67 2.7.2 汉明码69 2.7.3 里德-所罗门纠错码74 本章小结74 扩展阅读75 参考文献75 复习题76 习题76 特别关注:数据记录和传输的编码82 第3章 布尔代数与数字逻辑88 3.1 引言88 3.2 布尔代数89 3.2.1 布尔表达式89 3.2.2 布尔代数的基本定律90 3.2.3 化简布尔表达式91 3.2.4 求反92 3.2.5 表示布尔函数93 3.3 逻辑门94 3.3.1 逻辑门符号94 3.3.2 通用逻辑门95 3.3.3 多输入逻辑门96 3.4 数字组件96 3.4.1 数字电路及其与布尔代数的关系96 3.4.2 集成电路97 3.4.3 汇总:从问题描述到电路99 3.5 组合逻辑电路100 3.5.1 基本概念100 3.5.2 典型的组合逻辑电路示例100 3.6 时序电路105 3.6.1 基本概念105 3.6.2 时钟105 3.6.3 触发器105 3.6.4 有限状态机108 3.6.5 时序电路示例112 3.6.6 时序逻辑的应用:卷积编码和维特比检测115 3.7 电路设计119 本章小结119 扩展阅读120 参考文献120 复习题121 习题122 特别关注:卡诺图128 第4章 一个简单的计算机模型MARIE139 4.1 引言139 4.2 CPU基本知识和组织结构139 4.2.1 寄存器139 4.2.2 ALU140 4.2.3 控制单元140 4.3 总线140 4.4 时钟143 4.5 输入/输出子系统144 4.6 存储器的组成和寻址方式145 4.7 中断148 4.8 MARIE149 4.8.1 组织结构149 4.8.2 寄存器和总线150 4.8.3 指令集架构151 4.8.4 寄存器传输表示153 4.9 指令的执行过程155 4.9.1 取指-译码-执行周期155 4.9.2 中断和指令周期155 4.9.3 MARIE的I/O157 4.10 一个简单的程序157 4.11 关于编译程序的讨论159 4.11.1 编译程序的作用159 4.11.2 使用汇编语言的原因160 4.12 指令集的扩展161 4.13 关于译码的讨论:硬连线和微程序控制166 4.13.1 机器控制166 4.13.2 硬连线控制169 4.13.3 微程序控制171 4.14 实际的计算机体系结构174 4.14.1 Intel体系结构175 4.14.2 MIPS体系结构179 本章小结181 扩展阅读182 参考文献183 复习题184 习题185 第5章 仔细审视指令集架构192 5.1 引言192 5.2 指令格式192 5.2.1 指令集设计决策192 5.2.2 小端和大端方式193 5.2.3 CPU内部的存储:堆栈和寄存器195 5.2.4 操作数个数和指令长度196 5.2.5 扩展操作码199 5.3 指令类型202 5.3.1 数据传送202 5.3.2 算术运算202 5.3.3 布尔逻辑运算指令203 5.3.4 位操作指令203 5.3.5 输入/输出指令203 5.3.6 传送控制指令204 5.3.7 专用指令204 5.3.8 正交指令集204 5.4 寻址204 5.4.1 数据类型204 5.4.2 寻址方式205 5.5 指令流水线207 5.6 指令集架构实例210 5.6.1 Intel211 5.6.2 MIPS211 5.6.3 Java虚拟机212 5.6.4 ARM215 本章小结216 扩展阅读217 参考文献218 复习题218 习题219 第6章 存储器224 6.1 引言224 6.2 存储器类型224 6.3 存储器的层次结构225 6.4 高速缓存227 6.4.1 缓存映射策略229 6.4.2 替换策略240 6.4.3 有效访问时间和命中率240 6.4.4 发生缓存失效的时间241 6.4.5 缓存写策略241 6.4.6 指令和数据缓存243 6.4.7 缓存的级别244 6.5 虚拟存储器244 6.5.1 分页245 6.5.2 使用分页管理的有效访问时间250 6.5.3 汇总:使用缓存、TLB和分页技术252 6.5.4 分页和虚拟存储器的优缺点253 6.5.5 分段253 6.5.6 分段和分页的组合254 6.6 存储器管理实例254 本章小结255 扩展阅读255 参考文献256 复习题256 习题257 第7章 输入/输出和存储系统263 7.1 引言263 7.2 I/O及其性能263 7.3 阿姆达尔定律263 7.4 I/O体系结构266 7.4.1 I/O控制方法267 7.4.2 字符I/O与块I/O271 7.4.3 I/O总线操作272 7.5 数据传输模式274 7.5.1 并行数据传输275 7.5.2 串行数据传输276 7.6 磁盘技术277 7.6.1 硬盘驱动器278 7.6.2 固态硬盘280 7.7 光盘282 7.7.1 CD- ROM282 7.7.2 DVD285 7.7.3 蓝光光盘286 7.7.4 光盘记录方式286 7.8 磁带287 7.9 RAID290 7.9.1 RAID- 0290 7.9.2 RAID- 1291 7.9.3 RAID- 2291 7.9.4 RAID- 3292 7.9.5 RAID- 4293 7.9.6 RAID- 5293 7.9.7 RAID- 6294 7.9.8 RAID DP295 7.9.9 混合RAID系统297 7.10 数据存储的未来298 本章小结300 扩展阅读300 参考文献301 复习题302 习题303 特别关注:数据压缩308 第8章 系统软件327 8.1 引言327 8.2 操作系统327 8.2.1 操作系统的历史328 8.2.2 操作系统的设计332 8.2.3 操作系统的服务332 8.3 保护环境335 8.3.1 虚拟机336 8.3.2 子系统和分区337 8.3.3 保护环境和系统结构的演变339 8.4 编程工具340 8.4.1 汇编程序和汇编340 8.4.2 链接器342 8.4.3 动态链接库342 8.4.4 编译器344 8.4.5 解释器346 8.5 Java:以上全部346 8.6 数据库软件351 8.7 事务管理器354 本章小结356 扩展阅读356 参考文献357 复习题357 习题358 第9章 可供选择的体系结构360 9.1 引言360 9.2 RISC设备361 9.3 Flynn分类法365 9.4 并行和多处理器体系结构367 9.4.1 超标量和超长指令字368 9.4.2 向量处理器369 9.4.3 互连网络370 9.4.4 共享存储器的多处理器373 9.4.5 分布式计算375 9.5 其他的并行处理方法377 9.5.1 数据流计算377 9.5.2 神经网络379 9.5.3 脉动阵列381 9.6 量子计算382 本章小结384 扩展阅读385 参考文献385 复习题387 习题388 第10章 嵌入式系统专题390 10.1 引言390 10.2 嵌入式硬件概述391 10.2.1 标准的嵌入式系统硬件391 10.2.2 可重构硬件394 10.2.3 定制设计的嵌入式硬件398 10.3 嵌入式软件概述403 10.3.1 嵌入式系统的存储器组织403 10.3.2 嵌入式操作系统404 10.3.3 嵌入式系统的软件开发406 本章小结407 扩展阅读408 参考文献409 复习题410 习题410 第11章 性能测量和分析412 11.1 引言412 11.2 计算机性能公式412 11.3 数学准备工作413 11.3.1 均值的含义413 11.3.2 统计学和语义417 11.4 基准测试418 11.4.1 时钟频率、MIPS和FLOPS419 11.4.2 综合测试基准:Whetstone、Linpack和Dhrystone420 11.4.3 SPEC基准421 11.4.4 事务处理性能委员会基准424 11.4.5 系统仿真428 11.5 CPU性能优化428 11.5.1 分支优化429 11.5.2 使用好的算法和简单代码431 11.6 磁盘性能433 11.6.1 理解问题433 11.6.2 物理因素434 11.6.3 逻辑因素434 本章小结438 扩展阅读438 参考文献439 复习题440 习题440 第12章 网络的组成和体系结构444 12.1 引言444 12.2 早期的商用计算机网络444 12.3 早期的学术和科研网络:因特网的根源和体系结构444 12.4 网络协议I:ISO/OSI统一协议447 12.4.1 一个小故事447 12.4.2 OSI参考模型448 12.5 网络协议II:TCP/IP网络体系结构451 12.5.1 IPv4452 12.5.2 IPv4的麻烦453 12.5.3 传输控制协议456 12.5.4 TCP的工作过程457 12.5.5 IPv6460 12.6 网络组成464 12.6.1 物理传输介质465 12.6.2 接口卡469 12.6.3 中继器469 12.6.4 集线器469 12.6.5 交换机470 12.6.6 网桥和网关470 12.6.7 路由器和路由471 12.7 因特网
你还可能感兴趣
我要评论
|