计算机系统:嵌入式方法
作者 : [英]伊恩·文斯·麦克洛克林(Ian Vince McLoughlin) 著
译者 : 刘雯 译
丛书名 : 计算机科学丛书
出版日期 : 2020-06-18
ISBN : 978-7-111-65722-4
定价 : 139.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 401
开本 : 16
原书名 : Computer Systems: An Embedded Approach
原出版社: McGraw-Hill
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

这是一本从嵌入式角度探索计算硬件和软件原理的综合教科书。本书将逐步揭示如何在现实世界中运用这些计算原理构建计算机系统,从小型嵌入式设备到仓库大小的计算机集群,以及这些概念是如何通过互联网在全球范围内相互连接的。《计算机系统:嵌入式方法》首先会完整地讲述主要的硬件组件——包括处理器、内存、存储设备与性能加速器;接着又充分探讨操作系统、连接以及网络。通过此书,您将了解计算机硬件和软件是如何协同工作来支持无处不在的计算、物联网、移动计算技术以及最小到最大的应用和程序。

图书特色

探索全面推动从微型嵌入式设备到全球物联网的现代计算机系统技术

图书前言

智能手机、便携式游戏设备等都是广义上的计算机,它们在人们的日常生活中正变得越来越重要。本书致力于从多个层面理解这些系统,让读者明白是什么使其成为计算机,并强调它们背后的内核——嵌入式系统,以及嵌入式系统真正令人着迷的技术。审视嵌入式系统的内部,对于一个有技术头脑的人来说,就像打开了一个充满知识的圣诞礼物。
书店(特别是大学城里的书店)里关于这个主题的教科书似乎随处可见,比如计算机体系结构、计算机系统设计、网络、操作系统,甚至是嵌入式系统。许多著名的技术作者也都尝试过在这个领域写作,但计算机是一个不断发展的技术领域,很难用会很快过时的静态教科书充分地描述。特别是在过去十年,嵌入式计算系统的兴起让一些思维保守的作者感到惊讶:在20世纪五六十年代的一些教科书中,人们坚持将计算机视为房间大小的机器,20世纪八九十年代的教科书将计算机视为台式和服务器计算机,只有少数作者真正认为未来使用的绝大多数计算机都是嵌入在日常物品中的,认为计算机在未来是嵌入式的、互通的和无处不在的。在未来,台式机甚至笔记本电脑将会像50年前的打孔机一样不合时宜。
本书中的讨论尽可能直接面向嵌入式,并使用来自嵌入式世界的例子,这些例子适用于计算机体系结构、操作系统和连接这三个子领域。有些主题与嵌入式处理器有更紧密的联系,其他的可能是更传统的主题。这里将尽可能给出嵌入式领域的一些例子,以及可以描述章节主题与读者的联系的相关资料。
全书结构
本书由12章构成,除了第1、2章的介绍与第12章的总结部分之外,其他章节可以粗略分为三个部分,依次解决以下三个问题:
现代计算机系统(嵌入式或其他系统)所用的内部硬件,其工作原理以及协同方法。
在使用计算机编程实现功能时需要怎么做?软件如何被写入、加载并执行?如何系统化并呈现给用户?现代计算机内部的系统如何管理?
计算机之间如何通过连接来交换信息并为用户提供分布式服务?
总的来说,在“引言”和“基础知识”章节之后,第3~7章会讨论硬件,相关的软件编程和操作系统知识将在第8章和第9章介绍,连接性和网络系统的内容在第10章和11章介绍。本书各部分之间紧密联系,但是读者不必按顺序学习本书——这三部分都包含对其他部分的介绍,非常通俗易懂。
适用读者
本书适用于计算机、计算机科学、计算机工程、计算机系统工程、电子与计算机工程、电子与电气工程等专业的本科生。对于工作在其他技术领域的人来说,如果对学习计算机基础有兴趣,本书也是不错的选择。引言与基础知识部分适合本科生前两年学习,本书还有足够的深度与拓展部分,适合学习计算机架构或计算机系统设计的大四学生阅读。
对于从事嵌入式系统相关工作的程序员与工程师来说,本书是十分有用的参考。本书对各个行业都十分适用的ARM处理器的重点介绍一定会受到业内人士的欢迎。
本书设计
本书的内容是自下而上编写的,除了本书的硬件和计算机体系结构章节的某些部分以我以前的作品《计算机体系结构:嵌入式方法》(Computer Architecture:An Embedded Approach)为基础以外,其他部分并没有借鉴现有的任何教科书。我采用了一种新的方法,并在不受传统结构约束的情况下规划本书,避开了计算机进化过程中出现的“死胡同”以及一些不相关的问题。这让读者的思路更加清晰,可以将注意力集中在嵌入式系统上(本书没有完全略去大型机器,因为它们包含了多年来已普及的更重要且更好的技术演变的优秀例子)。
在创作本书的过程中,我的目的是通过编写简单易懂的文字来培养读者的兴趣,并努力保持本书与影响日常生活的流行前沿技术的相关性。然而,在任何研究领域都存在一些棘手的概念,遇到这些概念时,我会写出明确的解释性文字,同时在许多地方提供了充分而直观的说明来帮助读者理解。此外,本书还提供了许多解释框,这些解释框包含了额外的示例、有趣的信息和其他解释之类的材料,目的是扩充正文内容并帮助读者吸收知识。
本书使用SI(国际单位制),包括新的计算机存储度量单位kibibyte和mebibyte(附录A中对此进行了解释)。本书的主要章节附有思考题。
本书的编写
书中的示例代码和大多数嵌入式系统描述源自作者的硬件和软件设计经验。非常感谢GNU项目中出色的GCC ARM编译器,以及Busybox(嵌入式系统编码的“瑞士军刀”)和ARM / Linux项目。
本书中的一些图像由Wikimedia Commons等在线资源提供,均在图题中有所标注。这些图像均有知识共享(CC)归属(BY)许可或共享(SA)许可。特别要感谢Wikimedia Commons提供了优秀资源以及Creative Commons提供了保护许可证。
开始之前
我们应该铭记数十年来辛勤工作的计算机工程师们,他们为现代社会的移动电话、智能机、计算机和嵌入式技术的蓬勃发展注入了重要的力量。 我们赞扬过去那些伟大的贡献,并希望读者能够畅游在嵌入式计算机系统知识的海洋里,努力建设更美好的科技未来。

Ian Vince McLoughlin

关于本书教辅资源,只有使用本书作为教材的教师才可以申请,需要的教师可向麦格劳-希尔教育出版公司北京代表处申请,电话010-57997618/7600,传真010-59575582,电子邮件instructorchina@mheducation.com。——编辑注
可以在https://creativecommons.org/licenses上查看本书中所使用的CC图像的完整许可文件。

上架指导

计算机科学及应用

封底文字

这是一本从嵌入式系统角度探索计算机硬件与软件原理的教科书。本书逐步揭示了在现实世界中如何运用基本概念构建从小型嵌入式设备到大型计算机集群的计算机系统,以及这些概念是如何通过互联网在全球范围内相互关联的。本书首先完整地阐述主要的硬件组件,包括处理器、内存、存储设备与性能加速器,接着又充分探讨操作系统、连接以及网络。通过本书,读者将了解计算机硬件和软件是如何协同工作来支持泛在计算、物联网、移动计算和大小不一的各种应用程序的。

本书主要涵盖内容
计算机基础                编程
CPU基础                 操作系统
处理器内部结构            连接
CPU性能增强              网络
外部硬件和外围设备         嵌入式计算系统的未来
实际嵌入式CPU

作者简介
伊恩·文斯·麦克洛克林(Ian Vince McLoughlin) 是英国肯特大学计算机学院院长、计算机教授。 在30多年的职业生涯中,他一直从事工业、政府和学术领域的工作并专注于研究与创新。 他也是一名计算机工程师,曾经参与设计过对流层和太空中的计算系统,以及海底通信网络;在民用领域,他曾将嵌入式设备设计应用到喉咙手术上帮助病人说话。 麦克洛克林教授同时是IET会员、IEEE高级会员、英国注册工程师和全欧工程师。

作者简介

[英]伊恩·文斯·麦克洛克林(Ian Vince McLoughlin) 著:伊恩·文斯·麦克洛克林(Ian Vince McLoughlin)是英国肯特大学计算机学院院长、计算机教授。 在职业生涯的30多年中,他在三大洲一直从事工业、政府和学术领域工作并专注研究与创新。 他也是一名计算机工程师,曾经参与设计过对流层和太空中的计算系统,以及海底通信网络;在民用领域,他曾将嵌入式设备设计应用到喉咙手术上帮助病人说话。 麦克洛克林教授同时是IET会员、IEEE高级会员、英国注册工程师和全欧工程师。

译者序

人工智能与智能硬件离我们的生活越来越近了,我们在日常生活的方方面面都能感受到这些技术带来的便利,然而这些对我们的生活产生潜移默化影响的科技还是需要以计算机为载体。目前国内很多学生受就业热潮的影响选择计算机专业,但大多偏向于应用算法的研究,对计算机系统的基础理论重视不够,这在一定程度上阻碍了计算机事业的发展。本书是一本对计算机系统解读、梳理得比较透彻的书籍。伊恩·文斯·麦克洛克林教授是英国查塔姆肯特大学梅德韦校区现任计算机学院院长、计算机教授,还是IET的成员、IEEE高级会员、英国的特许工程师和欧洲(欧盟)工程师,在计算机系统,尤其是嵌入式技术应用方面颇有建树,同时还有丰富的工程经验。本书内容由浅入深,既有对计算机系统软硬件基础详细的入门介绍,又有结合实际应用,对嵌入式系统技术存在的瓶颈的深入探讨,适合作为计算机及相关专业本科生的教材或教学参考书,同时适合其他热爱计算机科学技术,希望进一步提升自己的计算机基础和能力的读者阅读参考,甚至对于工作在嵌入式系统产业的工程师来说,本书也是一本不错的参考书。
本书将计算机技术的发展背景与基础知识作为切入点,以嵌入式系统的方向为特色,涉及计算机系统内部包含的硬件、软件编程与操作系统、连接性与网络系统。硬件部分结合嵌入式系统与实际应用对CPU的功能、内部组成单元以及计算机接口进行详细介绍。软件部分包括程序设计、工作原理以及操作系统。连接性与网络系统部分介绍计算机网络发展至今的拓扑与连接方法(网络协议等)。最终以对计算机系统的未来展望作为结尾。纵观全书,作者用通俗易懂的语言将嵌入式开发设计流程与核心技术进行了详细介绍。与其他高等教育专业教科书不同,作者的叙述风格诙谐幽默,并且结合了实际应用案例,十分便于读者理解,字里行间可以感受到作者极高的写作热情、深厚的学术背景与丰富的嵌入式系统开发经验。
当朱捷编辑将这本教材推荐给我,并邀请我作为中文版的译者时,我还是心怀敬畏的,日常科研教学工作任务繁重,自己是否能再接下这本书的翻译工作?通过对原著的阅读以及与编辑的沟通,我认为本书是基于嵌入式系统架构讨论计算机体系的一本好书,值得推荐给我们的学生和嵌入式系统的从业工程师。在翻译过程中力争既要忠实于原著,又要尊重中文的表达方式,尤其要将英文中的幽默语气用中文表达方式传达给读者,实践起来也颇为不易。在这里要感谢我的同事徐国鑫老师,他对“嵌入式原理”这门课程教学的一些需求及对原著的肯定促使我下决心开始翻译本书。我的学生程倩倩、莫耀凯、隋钰童、王博斐、贾铭杰分担了许多协助翻译、查找资料及校对工作。他们的付出与努力是整个翻译工作能够顺利完成的强有力的保障!同时也感谢朱捷编辑在整个过程中的耐心指导和悉心审阅。
本书的翻译工作历时近7个月,每章译稿都经过至少两个人的多遍校阅。作为译者,我们努力保证译本的准确、易读,但由于时间紧、任务急,译作之中难免存在疏漏之处,恳请各位同行及广大读者批评指正。希望我们努力的结果能够使读者满意,同时也希望本书中文版的出版能为嵌入式系统技术在中国的发展贡献力量。

图书目录

出版者的话
译者序
前言
致谢
关于作译者
第1章 引言1
 1.1 计算机的进化1
 1.2 进化过程1
 1.3 计算机发展阶段划分4
  1.3.1 第一代计算机4
  1.3.2 第二代计算机5
  1.3.3 第三代计算机5
  1.3.4 第四代计算机6
  1.3.5 第五代计算机7
 1.4 云、普适、网格和超并行计算机7
 1.5 未来8
 1.6 小结10
第2章 基础知识11
 2.1 计算机组成11
  2.1.1 Flynn分类法11
  2.1.2 连接方式12
  2.1.3 计算机结构层次视图13
 2.2 计算机基本原理13
 2.3 数字格式16
  2.3.1 无符号二进制16
  2.3.2 原码17
  2.3.3 反码17
  2.3.4 补码17
  2.3.5 移码18
  2.3.6 BCD码19
  2.3.7 定点数表示法19
  2.3.8 符号扩展20
 2.4 算术运算20
  2.4.1 加法20
  2.4.2 并行进位传递加法器20
  2.4.3 超前进位22
  2.4.4 减法22
 2.5 乘法24
  2.5.1 加法迭代法24
  2.5.2 部分积方法25
  2.5.3 移位加方法27
  2.5.4 Booth和Robertson方法27
 2.6 除法29
 2.7 定点数格式的运算30
  2.7.1 定点数的运算31
  2.7.2 定点数的乘除32
 2.8 浮点数32
  2.8.1 广义浮点数33
  2.8.2 IEEE754浮点标准33
  2.8.3 IEEE754标准模式34
  2.8.4 IEEE754数的范围36
 2.9 浮点数处理38
  2.9.1 IEEE754数的加减运算39
  2.9.2 IEEE754数的乘除运算41
  2.9.3 IEEE754中间格式41
  2.9.4 舍入42
 2.10 小结42
 思考题43
第3章 CPU基础45
 3.1 什么是计算机45
 3.2 让计算机为你服务45
  3.2.1 程序存储46
  3.2.2 存储架构46
  3.2.3 程序传输47
  3.2.4 控制单元48
  3.2.5 微指令52
  3.2.6 RISC和CISC的对比53
  3.2.7 处理器实例——ARM55
  3.2.8 关于ARM的更多内容56
 3.3 指令处理56
  3.3.1 指令集57
  3.3.2 取指和译码59
  3.3.3 压缩指令集63
  3.3.4 寻址模式65
  3.3.5 堆栈机和逆波兰表示法67
 3.4 数据处理68
  3.4.1 数据的格式和表达68
  3.4.2 数据流71
  3.4.3 数据存储72
  3.4.4 内部数据72
  3.4.5 数据处理73
 3.5 自顶向下方法75
  3.5.1 计算机的能力75
  3.5.2 性能衡量和统计76
  3.5.3 性能评估78
 3.6 小结79
 思考题80
第4章 处理器内部组成82
 4.1 内部总线结构82
  4.1.1 程序员的角度82
  4.1.2 分解互联排列83
  4.1.3 ADSP21xx总线排列84
  4.1.4 数据与程序同时访存84
  4.1.5 双总线体系结构86
  4.1.6 单总线体系结构87
 4.2 算术逻辑单元88
  4.2.1 ALU功能88
  4.2.2 ALU设计89
 4.3 内存管理单元91
  4.3.1 对虚拟存储的需求91
  4.3.2 MMU操作91
  4.3.3 退回算法93
  4.3.4 内部存储碎片和片段93
  4.3.5 外部碎片94
  4.3.6 改进的MMU95
  4.3.7 内存保护96
 4.4 cache97
  4.4.1 直接相联cache98
  4.4.2 组相联cache99
  4.4.3 全相联cache100
  4.4.4 局部性原则100
  4.4.5 cache替换算法102
  4.4.6 cache性能104
  4.4.7 cache一致性105
 4.5 协处理器107
 4.6 浮点运算单元107
 4.7 SIMD流指令扩展和多媒体扩展109
  4.7.1 MMX109
  4.7.2 MMX实现110
  4.7.3 MMX的使用111
  4.7.4 SIMD流指令扩展111
  4.7.5 使用SSE和MMX111
 4.8 嵌入式系统中的协处理112
 4.9 小结112
 思考题113
第5章 提高CPU性能116
 5.1 加速116
 5.2 流水线117
  5.2.1 多功能流水线118
  5.2.2 动态流水线119
  5.2.3 改变流水线模式119
  5.2.4 数据相关冒险121
  5.2.5 条件冒险122
  5.2.6 条件分支123
  5.2.7 编译时流水线补偿125
  5.2.8 相对地址分支126
  5.2.9 流水线的指令集补偿127
  5.2.10 运行时流水线补偿128
 5.3 复杂指令集和精简指令集130
 5.4 超标量体系结构130
  5.4.1 简单超标量130
  5.4.2 多发送超标量132
  5.4.3 超标量的性能133
 5.5 每周期的指令数133
  5.5.1 不同体系结构的IPC133
  5.5.2 IPC度量134
 5.6 硬件加速器135
  5.6.1 零开销循环135
  5.6.2 地址处理硬件137
  5.6.3 影子寄存器140
 5.7 分支预测140
  5.7.1 分支预测的必要性141
  5.7.2 单T位预测器142
  5.7.3 双位预测器143
  5.7.4 计数器和移位器预测器145
  5.7.5 局部分支预测器145
  5.7.6 全局分支预测器148
  5.7.7 G选择预测器149
  5.7.8 G共享预测器150
  5.7.9 混合预测器151
  5.7.10 分支目标缓冲152
  5.7.11 基本代码段153
  5.7.12 分支预测总结154
 5.8 并行机器155
  5.8.1 SISD向MIMD的演变157
  5.8.2 为提高性能而采用并行159
  5.8.3 其他并行处理160
 5.9 Tomasulo算法163
  5.9.1 Tomasulo算法的原理163
  5.9.2 Tomasulo系统的例子164
  5.9.3 嵌入式系统中的Tomasulo算法167
 5.10 超长指令架构集168
  5.10.1 什么是VLIW168
  5.10.2 VLIW的优势169
  5.10.3 VLIW的瓶颈170
  5.10.4 与超标量处理器的比较170
 5.11 小结171
 思考题171
第6章 外部总线174
 6.1 总线接口174
  6.1.1 总线控制信号175
  6.1.2 直接存储器存取175
 6.2 并行总线规范176
 6.3 标准接口177
  6.3.1 系统控制接口177
  6.3.2 系统数据总线178
  6.3.3 输入/输出总线182
  6.3.4 外设器件总线182
  6.3.5 与网络设备的接口183
 6.4 实时性问题183
  6.4.1 外部激励184
  6.4.2 中断184
  6.4.3 实时性定义184
  6.4.4 时间范围参数185
  6.4.5 硬件体系结构对实时操作系统的支持186
 6.5 中断和中断处理187
  6.5.1 中断的重要性187
  6.5.2 中断过程187
  6.5.3 高级中断处理191
  6.5.4 共享中断191
  6.5.5 可重入代码192
  6.5.6 软件中断192
 6.6 嵌入式无线连接192
  6.6.1 无线技术192
  6.6.2 无线接口194
  6.6.3 无线相关问题194
 6.7 小结194
 思考题195
第7章 实用嵌入式CPU198
 7.1 概述198
 7.2 微处理器不只是核198
 7.3 功能需求200
 7.4 时钟203
 7.5 时钟与功耗205
  7.5.1 传输延迟206
  7.5.2 电流相关问题206
  7.5.3 时钟问题解决方法207
  7.5.4 低电压设计207
 7.6 存储208
  7.6.1 早期的计算机存储208
  7.6.2 只读存储器209
  7.6.3 随机存取存储器213
 7.7 分页与重叠220
 7.8 嵌入式系统中的存储221
  7.8.1 非易失存储器222
  7.8.2 其他存储器224
 7.9 测试和验证225
  7.9.1 集成电路设计和制造问题225
  7.9.2 BIST226
  7.9.3 JTAG228
 7.10 错误检测和纠正230
 7.11 看门狗定时器和复位监测233
 7.12 逆向工程235
  7.12.1 逆向工程过程236
  7.12.2 详细的物理布局239
 7.13 防止逆向工程242
  7.13.1 存储程序的被动模糊243
  7.13.2 可编程逻辑家族244
  7.13.3 主动RE防范244
  7.13.4 主动RE防范分类245
 7.14 软核处理器246
  7.14.1 微处理器不仅仅是核心246
  7.14.2 软核处理器的优点246
 7.15 硬件软件协同设计248
 7.16 商业处理器内核251
 7.17 小结252
 思考题252
第8章 编程254
 8.1 运行一个程序254
  8.1.1 执行的含义255
  8.1.2 注意事项257
 8.2 编写程序258
  8.2.1 编译型语言258
  8.2.2 解释型语言261
 8.3 UNIX编程模型263
  8.3.1 shell263
  8.3.2 重定向和数据流264
  8.3.3 实用软件266
 8.4 小结266
 思考题266
第9章 操作系统268
 9.1 操作系统的含义268
 9.2 为什么需要操作系统268
  9.2.1 操作系统的特征269
  9.2.2 操作系统的类型270
 9.3 操作系统的作用271
  9.3.1 资源管理271
  9.3.2 虚拟机271
  9.3.3 CPU时间272
  9.3.4 内存管理273
  9.3.5 存储和归档274
  9.3.6 保护和错误处理274
 9.4 操作系统的结构275
  9.4.1 分层操作系统276
  9.4.2 客户端-服务器操作系统277
 9.5 启动277
  9.5.1 从并行闪存启动278
  9.5.2 从HDD/SSD启动279
  9.5.3 启动之后280
 9.6 进程281
 9.7 调度283
 9.8 存储与文件系统286
  9.8.1 二级存储286
  9.8.2 文件系统的作用289
  9.8.3 什么是文件系统291
  9.8.4 备份297
 9.9 小结298
 思考题298
第10章 连接性300
 10.1 连接的原因与方法300
  10.1.1 一对一通信300
  10.1.2 一对多通信301
  10.1.3 包交换302
  10.1.4 简单通信拓扑303
 10.2 系统要求304
  10.2.1 分组化304
  10.2.2 编码与解码305
  10.2.3 传输305
  10.2.4 接收305
  10.2.5 错误控制306
  10.2.6 连接管理309
 10.3 可扩展性、效率与重复利用310
 10.4 OSI分层311
 10.5 拓扑与架构311
  10.5.1 分层网络312
  10.5.2 主从架构312
  10.5.3 对等架构313
  10.5.4 点对点连接313
  10.5.5 移动性与切换313
 10.6 小结314
 思考题314
第11章 网络系统316
 11.1 因特网316
  11.1.1 因特网的历史317
  11.1.2 因特网治理317
 11.2 TCP/IP和IP层模型318
 11.3 以太网概述321
  11.3.1 以太网数据格式322
  11.3.2 以太网封装323
  11.3.3 以太网载波侦听324
 11.4 网络层325
  11.4.1 IP地址325
  11.4.2 网络数据包格式326
  11.4.3 路由327
  11.4.4 单播与多播327
  11.4.5 任播328
  11.4.6 命名328
  11.4.7 域名服务器329
 11.5 传输层331
  11.5.1 端口号331
  11.5.2 UDP332
  11.5.3 TCP332
  11.5.4 UDP与TCP对比333
 11.6 其他信息333
  11.6.1 地址解析协议333
  11.6.2 控制信息334
 11.7 无线连通性334
  11.7.1 WiFi334
  11.7.2 WiMax335
  11.7.3 蓝牙335
  11.7.4 ZigBee336
  11.7.5 近场通信336
 11.8 网络量表336
 11.9 小结337
 思考题337
第12章 未来338
 12.1 单比特结构338
  12.1.1 比特-串行加法339
  12.1.2 比特-串行减法340
  12.1.3 比特-串行逻辑和处理340
 12.2 多并行机器341
  12.2.1 小型CPU集群341
  12.2.2 并行和集群处理注意事项345
  12.2.3 互连策略345
 12.3 异步处理器347
  12.3.1 数据流控制348
  12.3.2 避免管道冒险349
 12.4 替代数字格式系统349
  12.4.1 多值逻辑350
  12.4.2 有符号数字表示350
 12.5 光学计算353
  12.5.1 电-光全加器353
  12.5.2 电-光底板354
 12.6 是科幻小说还是未来的现实355
  12.6.1 分布式计算356
  12.6.2 湿件356
 12.7 小结357
附录A 标准内存大小表示方法358
附录B 标准逻辑门360
索引361

教学资源推荐
作者: 陈仪香 陈彦辉 编著
作者: [美]胡文美(Wen-mei W. Hwu)编著
作者: (美)Ken Kennedy,Randy Allen
作者: (美)Umakishore Ramachandran,William D. Leahy,Jr. 著
参考读物推荐