首页>参考读物>计算机科学与技术>计算机组织与体系结构

嵌入式系统设计与实践
作者 : (美)Elecia White 著
译者 : 余水清 译
出版日期 : 2013-06-05
ISBN : 978-7-111-41584-8
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 300
开本 : 16
原书名 : Making Embedded Systems
原出版社: OReilly Media, Inc.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

对嵌入式系统的开发感兴趣吗?由于嵌入式系统对效率有很高的要求,所以需要遵循严格的设计原则。本书简单易读,结合传统的软件设计模式和嵌入式程序设计领域中新颖、独特的设计模式,帮助你建立良好的程序设计实践技巧,学习如何针对处理器而非操作系统建立系统架构,以及处理硬件难题与制造需求的特殊技能。本书作者是嵌入式系统专家,创建过各种嵌入式系统,从城市道路监控系统到DNA扫描仪再到儿童玩具。
本书主要内容:
■ 深入分析嵌入式系统的架构设计步骤和架构设计模式。
■ 介绍嵌入式系统中独有的设计模式,如环形缓冲区、中断和定时器、硬件调试、PID控制、系统优化等。
■ 如何优化系统以降低成本并提高性能。
■ 如何在资源有限的环境中建立健壮的软件架构。
■ 探讨了扫描仪、电机以及其他I/O设备。
■ 介绍事半功倍的方案:降低内存消耗、代码空间占用、处理器周期以及功耗。
■ 学习如何在处理器中直接更新嵌入式程序代码。
■ 掌握如何在小型处理器上实现复杂的数学计算。
■ 提供了招聘嵌入式工程师的面试题,以及回答这些面试题的独到 思路。

作者简介
  Elecia White 资深嵌入式系统设计专家,Logical Elegance公司的创办人,获得美国FAA和FDA认证。她有多年的管理经验,但是更加热爱技术产品设计并醉心于创造优秀的产品。她喜欢创建新奇的小装置,包括小型医疗器材、飞机和赛车的惯性测量单元、教育玩具以及射击定位系统,开发并设计了各种优秀的嵌入式系统,擅长信号处理、硬件集成、复杂系统设计、演示系统等。

“对于C程序员,如果想进入充满乐趣(和“钱途”)的嵌入式系统世界,本书就是必读之物。这本书写得非常好,寓教于乐,示例精彩,有大量非常清晰的图示。”
——Jack Ganssle 作家与嵌入式系统专家
“作者在这本书中分享了她多年的开发经验,包含了大量信息和智慧,揭示了嵌入式开发过程中许多不为人知的秘密,并给出了清晰的解读和最佳解决方案。 ”
——James W. Grenning 《Test-Driven Development for Embedded C》的作者

图书前言

我热爱嵌入式系统。当我第一次让马达转动时,我着迷了。我很快从单纯软件开发进入到我可以触摸真实物体的一个领域。在我离开软件开发的时候,设计模式注1开创性的工作已经完成。我和我的团队通读了这本书,讨论这些模式以及可以在哪儿应用这些模式。随着我进一步深入研究嵌入式系统,我发现不能处理C++继承的编译器,在处理器极其有限的内存中去实现模式,以及一系列新的问题使设计模式看起来难以应用。但是我从来没有忘记在工程化方法中存在着模式。通过学习识别模式,我们可以反复地使用这些健壮的解决方案。本书大部分内容着重于阐述在嵌入式系统开发中的标准设计模式,同时也给出了一些新的模式。而且,我还增加了一些章节,这些内容在绝大部分书里都找不到。
关于这本书
  在研究了医疗设备、赛车、飞机、儿童玩具以及射击瞄准系统中的嵌入式系统之后,我发现了很多共性。如何为嵌入式系统设计和实现软件,要是那时候懂得很多就好了。本书包含了我所学到的知识。这是一本教授大家如何在资源受限的环境下设计优秀软件的书。
  本书告诉你在应聘嵌入式系统开发工作时,了解面试官希望从你身上看到什么。每章的最后都会有一道面试题。这些题通常与具体的语言不相关,而是希望能启发你的思路。好的面试题一般都没有唯一正确的答案,因此我在每道面试题下面给出了提示,没有列举所有可能的答案,而是给出了面试官期望从你的回答中看到什么的一些提示。毕竟,你得凭借你自身的优势去获得工作(和答案)。
  有一点需要说明,这里提到的嵌入式系统是没有操作系统的、运行在裸机上的软件。当软件发出打开灯的指令时,它直接向处理器发出而没有经过任何中间层。本书不讨论嵌入式操作系统,但是相关概念可以运用到运行操作系统的处理机上。因此,如果你深入研究,就可以了解操作系统底层的原理。运行在没有操作系统的环境下会让人真正体会并感谢操作系统为我们所做的一切。
  本书给出了在设计嵌入式软件时通用的原型和原则。我并没有基于任何特定的平台、处理器、编译器或者编程语言,因为通过本书打下扎实的基础之后,转向特定的平台自然水到渠成。
关于作者
  在嵌入式系统领域中,我设计过DNA扫描器、飞机惯性测量单元、赛车、儿童玩具、抓捕罪犯的射击瞄准系统以及各种医疗和消费类设备。
  我曾专门从事信号处理、硬件集成、复杂系统设计和性能优化工作。在经过美国联邦航空局(FAA)和美国食品药品监督局(FDA)认证过程后,我理解了高质量设计的重要性,以及高质量的设计如何引领高质量的实现。
  我从事过多年的管理工作,但我更享受动手实践的工程设计工作以及交付优秀产品的兴奋和快感。我可以很高兴地说,离开管理工作并没有减少我领导和指导别人的机会。
致谢
  本书并不是诞生于真空之中,而是始于同事的这样一句话:“嗨,你是否知道有哪本书我可以拿去给我的一个新手工程师阅读?”这句话埋下了后面数月写作的种子。我学会了真诚地感谢善解人意并且富于勇气的朋友,其中有花费了不少时间来评阅技术材料的工程师(当然,任何遗留的问题都是我的疏忽)。最后,在整个过程中,O’Reilly出版社提供了巨大的支持。
  对每一个人表达恰如其分的感谢,可能需要好几页纸的篇幅,因此,这里我只是简单地把他们罗列一下,没有按照什么特别的顺序:Phillip King、Ken Brown、Jerry Ryle、Matthew Hughes、Eric Angell、Scott Fitzgerald、John Catsoulis、Robert P.J.Day、Rebecca Demarest以及Jen Costillo。这些同事为本书提供了与众不同的素材。此外,在本书写作的过程中,我还对那些在独特的领域给我提供帮助的人们表达了特别的感谢。因此,这些名字(或者这里没有提到的名字)还会出现在本书的其他地方。
  还有两个人没有列在这个表中。 Andy Oram是O’Reilly出版社的一个非常优秀的编辑,我非常幸运能够和他一起合作。他的工作让本书以及我的写作如此卓尔不凡。最后,作者通常会热情洋溢地感谢他们的伴侣,这是惯例。我在写完这本书之后,才明白了其中的道理。我最钟爱的鼓手、物理学家,同时也是一名嵌入式系统工程师,Christopher White,最特别地感谢给你,感谢你所做的一切。
本书的组织结构
  闲暇时我读过散文,但读的更多的是小说,总之我喜欢读好书。我力争把本书写得通俗易读,从头到尾像在讲故事,把技术内容(特别在一些点上)以一种愉悦的方式展现给你。阅读时,不需要编程就可以理解本书的实质性内容。但是,尝试书中的例子并且将书中的建议应用到代码中可以进一步加深理解。
  本书不是一本仅用来查阅所需内容的技术手册。你当然可以这样做,但这种即查即丢的方式会让你错失书中的很多信息。如果因此错过有趣的笑话,我会感到很遗憾。所以,我希望你按顺序阅读本书。如果你火烧眉毛地需要快速实现一个函数,那么拿起本书,翻到相应章节,本书会像向导一样向你展示一个命令表或者方差的定点数实现。
  你也可以跳过某些部分,直接阅读针对你棘手问题的解决方案。我明白,有些时候你必须解决麻烦问题。如果是这样,我希望当你解决了这个棘手问题之后能够返回来看看,找到让你兴趣盎然的部分接着往下阅读。
  章节顺序:
  第1章
  什么是嵌入式系统软件?嵌入式软件开发和传统软件开发有什么不同?
  第2章
  如何建立并且用文档描述一个系统架构。
  第3章
  在开发调试电路板过程中集成硬件和软件可能让人头疼,但该章介绍的一些方法可以让这个过程更加顺利。
  第4章
  嵌入式系统版的“Hello World”让发光二极管闪烁。这可能比预想得要复杂。
  第5章
  该章讲述如何构建你的系统,如在什么情况下使用中断,什么时候不使用中断,如何构造一个状态机。
  第6章
  各种串行通信方式主导着嵌入式系统(如UART、SSP、SPI、I2C、USB等),网络、位爆炸(bit-bang)以及并行总线也同等重要。
  第7章
  在需要升级处理器中运行的代码时,可以有多种选择,如内部引导程序、构建自己的解决方案等。
  第8章
  该章包括如何减少内存消耗、代码空间和处理器周期的方法。
  第9章
  大部分嵌入式系统需要进行某些形式的数学计算和分析,理解数学运算和浮点运算的工作原理会让你的系统运行得更快。
  第10章
  如果系统依赖电池运行,那么该章给出一些如何降低功耗的建议,如减少处理器周期、优化系统架构等。
  之所以如此安排章节顺序,是因为我希望我们的工程师可以按照这个顺序去思考这些内容。把架构放在开始介绍有些少见,因为对大多数人来说只有到了职业生涯的高级阶段才会接触架构。总之,我期望和我一起工作的人能在考虑怎么优化前更多地思考代码是如何配合系统工作的。
本书约定
  排版
  本书使用以下排版风格:
  斜体(Italic)
  表示新的术语、统一资源定位符(URL)、文件名以及文件扩展名。
  等宽字体(Constant width)
  用来表示程序代码,同时也用来表示在段落中引用程序代码中的内容,如变量、函数名、数据类型以及关键字。
  注意: 表示一个技巧、建议或者一般性的注释。
  警告: 表示一个警告(或注意事项)。
术语
  微控制器是一个具有片上器件,如RAM、代码空间(通常是闪存)以及各种外围接口(如输入/输出线)的处理器。代码通常运行在处理器或者中央处理单元(CPU)。微控制器是一个小的处理器,但定义上有些“小”差别。
  数字信号处理器(DSP)是一种专用于信号处理的特殊形式的微控制器,它通常对模拟信号进行采样并对结果进行特殊的处理。通常DSP也是一种微控制器,但它经过了优化设计以便更快地进行数学运算(特别是乘法和加法)。
  在写这本书的时候,我想使用符合习惯的正确术语。然而,不要频繁地改换术语名称就非常关键。纵观全书,使用处理器这个术语来代表用来实现嵌入式系统的任何器件。不管实际用的是什么,本书绝大部分内容都可以适用。
例子代码的使用
  本书旨在帮助你完成你的工作。总的来说,可以在程序和文档中使用本书的代码。如果你复制了代码的关键部分,那么你就不需要联系我们获得许可。比如在一个程序中使用了本书的几段代码不需要许可。以光盘的形式销售或者出版O'Reilly书中的例子需要得到许可。引用本书回答问题以及引用例子代码不需要我们的许可。将本书的绝大部分代码使用在你的产品文档中需要得到许可。
  我们会非常感谢你在引用本书时声明版权,虽然这不是必须的。声明版权通常包括书名、作者、出版社和ISBN。例如:《Making Embedded Systems》by Elecia White (O'Reilly). Copyright 2011 Elecia White, 978-1-449-30214-6。
  如果你觉得你对示例代码的使用超过合理使用或者上面所述的几种许可范围,我们欢迎你通过permissions@oreilly.com联系我们。
Safari联机丛书
  Safari联机丛书是一个按需服务的数字图书馆,超过7500本技术、创意参考书和视频,可以轻松、快速地找到你需要的内容。
  只需要提交注册信息,你就可以阅读在线图书馆的所有图书,观看所有的视频。你还可以通过手机和移动设备阅读书籍、在新书印刷之前得到书名、独占访问正在写作中的书的手稿并给作者反馈和评论、复制和粘贴例子代码、组织喜欢目录、下载某些章节、对关键部分做书签;写备注、打印以及享受其他无数高效率的功能带来的益处。
  O'Reilly 媒体集团已经将本书上传到Safari图书在线。要访问本书和由O'Reilly或者其他出版商出版的书其他类似主题的,请登录http://my.safaribooksonline.com免费在线注册。
联系我们
  关于本书的建议和疑问,可以与下面的出版社联系:
  美国:
  O'Reilly Media, Inc.
  1005 Gravenstein Highway North
  Sebastopol, CA 95472
  中国:
  北京市西城区西直门南大街2号成铭大厦C座807室(100035)
  奥莱利技术咨询(北京)有限公司
  我们将关于本书的勘误表,例子以及其他信息列在本书的网页上,网页地址是:
  http://www.oreilly.com/catalog/9781449302146
  如果要评论本书或者咨询关于本书的技术问题,请发邮件到:
  bookquestions@oreilly.com
  想了解关于O'Reilly图书、课程、会议和新闻的更多信息,请访问以下网站:
  http://www.oreilly.com.cn
  http://www.oreilly.com

上架指导

计算机\程序设计

封底文字

对于C程序员,如果想进入充满乐趣(和“钱途”)的嵌入式系统世界,本书就是必读之物。这本书写得非常好,寓教于乐,示例精彩,有大量非常清晰的图示。
——Jack Ganssle, 作家与嵌入式系统专家

作者在这本书中分享了她多年的开发经验,包含了大量信息和智慧,揭示了嵌入式开发过程中许多不为人知的秘密,并给出了清晰的解读和最佳解决方案。
——James W. Grenning, 《Test-Driven Development for Embedded C》的作者

对嵌入式系统的开发感兴趣吗?由于嵌入式系统对效率有很高的要求,所以需要遵循严格的设计原则。本书简单易读,结合传统的软件设计模式以及嵌入式程序设计领域中新颖、独特的设计模式,帮助你建立良好的程序设计实践技巧,学习如何针对处理器而非操作系统建立系统架构,以及处理硬件难题与制造需求的特殊技能。本书作者是嵌入式系统专家,创建过各种嵌入式系统,从城市道路监控系统到DNA扫描仪再到儿童玩具。
本书主要内容:
 深入分析嵌入式系统的架构设计步骤,以及架构设计模式。
 介绍嵌入式系统中独有的设计模式,如环形缓冲区、中断和定时器、硬件调试、PID控制、系统优化等。
 如何优化系统以降低成本并提高性能。
 如何在资源有限的环境中建立健壮的软件架构。
 探讨了扫描仪、电机以及其他I/O设备。
 介绍事半功倍的方案:降低内存消耗、代码空间占用、处理器周期以及功耗。
 学习如何在处理器中直接更新嵌入式程序代码。
 掌握如何在小型处理器上实现复杂的数学计算。
 提高了招聘嵌入式工程师的面试题,以及回答这些面试题的独到思路。

作者简介

(美)Elecia White 著:Elecia White是Logical Elegance创办人,这是总部位于圣何塞(San Jose)的一家嵌入式系统咨询公司。她喜欢创建新奇的小装置,包括小型医疗器材、惯性测量单元、教育玩具以及射击定位系统。

译者简介

余水清 译:暂无简介

译者序

谈到设计模式,不得不提“四人帮”所著的《设计模式:可复用面向对象软件的基础》,在那本经典著作中,作者总结了设计灵活、易扩展的面向对象软件的23种设计模式,使软件开发人员在面对类似应用场景、要解决类似问题的时候可以应用这些优秀的解决方案。
  在此之后,“设计模式”称为软件开发领域的研究热点之一,诞生了一系列著作,涵盖了从需求到分析,再到设计、实现、测试,甚至软件界面设计等主题。然而,在嵌入式系统开发领域里是否可以应用设计模式,如果可以的话,又该如何应用?作为热衷软件开发以及模式应用的我来说,一直在思考和探索这个问题。直到看到White的这本书,这个问题才算有了一个比较完美的解答。
  作者以高屋建瓴的方式,从嵌入式系统设计的重中之重——架构设计入手,介绍了嵌入式系统的架构设计步骤以及架构设计模式,在此基础上转向如何运行代码,如何与外设通信,如何进行代码更新,如何使用定时器和中断,以及如何在小型处理器上实现复杂的数学运算,同时也介绍了如何降低系统功耗的一些有效方法。对本书内容的组织,也是一个非常优秀的架构设计示例,体现了作者构思的巧妙。
  本书中,作者不仅结合具体的例子讨论了如何在嵌入式软件中使用经典的设计模式,如门面模式、命令模式等,而且也深入讨论了在嵌入式系统中独有的设计模式,如环形缓冲区、中断和定时器、硬件调试、PID控制、系统优化等。
  也许很多人会质疑,用C语言很难实现C++的面向对象设计方法。但在本书中,可以看到,用C语言的指针很容易就可以做到。而且,掌握了这点之后,就可以发现面向对象设计思想在嵌入式系统开发中也可以得心应手地运用,与语言没有关系。
从事过嵌入式开发的技术人员,对如何调试电路板可能都非常熟悉,这其中不仅仅是技术,更多的是要面对交付的压力。要学会如何沟通,遇到问题时如何寻求帮助。在本书中,作者给出了具体的例子,读完之后,就会发现其中某些部分也许就是自己开发过程中的某段过程的缩影,让人回味良久。
  本书主要介绍没有使用操作系统的嵌入式系统的开发,因此必然涉及实现一些简单操作系统的功能,比如任务调度、状态机等。本书也给出了非常简明的例子,讨论了状态机的不同实现机制以及在什么情况下使用中断,如何不使用中断实现相应的功能。
  不夸张地说,软件模式的介绍只是本书的一小部分,但本书将模式的思想发挥得更加自如,任何部分都可以称为一个模式。贯穿这些软件设计、硬件设计、调试模式中的一个核心思想就是权衡,而这一点恰恰是最难掌握的设计艺术之一,值得用心去体会。
  本书字字珠玑,行文生动有趣,每章还附上了一个面试问题,并且给出了回答这个面试问题的独到思路。这也是本书与众不同的地方,作者将面试也“模式”化了。同时这也体现了作者写作本书的目的之一,帮大家解决问题。
  有些书教给人们某个工具的使用,有些书教给人们某个方法,而本书则既教给人们工具、方法,又启发大家如何去思考和权衡。通读本书,就像经历过一个完整的嵌入式开发项目,让人难以忘怀。
  在本书的翻译过程,得到了机械工业出版社吴怡编辑的精心指导和帮助,机械工业出版社华章分社的编辑们对技术的熟练掌握以及对语言的精准把握让人受益匪浅。
  同时,感谢好友韩丽萍的热心帮助,感谢妻子和家人的宽容和耐心,你们的关心和鼓励让我可以安心地专注于技术、翻译和文字所带来的乐趣。
  时间有限,错误之处在所难免。因此,怀着忐忑的心情,向广大读者呈上这本译著,希望大家不吝指正。
译者介绍
  余水清 国家认证系统分析师,信息系统项目管理师,系统架构师,中国系统分析员协会(CSAI)专业顾问。曾参与过多项大型软件开发项目,担任软件设计师、系统架构设计师、项目经理等职位,涉及多个行业,包括银行、医疗、制造业、国家单位等。热衷于软件设计模式和架构模式的研究和应用。

图书目录

前言 1
第1章 导论 7
1.1 编译器、编程语言以及面向对象编程 7
1.2 嵌入式系统开发 8
1.2.1 调试 8
1.2.2 更多挑战 10
1.2.3 解决问题的原则 11
1.3 延伸阅读 12
第2章 创建系统架构 15
2.1 构建系统框图 16
2.1.1 架构框图 16
2.1.2 控制层级图 18
2.1.3 层次图 20
2.2 从框图到架构 21
2.2.1 封装模块 22
2.2.2 分派任务 22
2.2.3 驱动程序接口:打开(Open)、关闭(Close)、读(Read)、写(Write)和输入输出控制(IOCTL) 23
2.2.4 适配器模式 24
2.2.5 开始设计其他接口 26
2.2.6 例子:一个日志接口 27
2.3 一个可以实践的沙盒 33
2.4 延伸阅读 37
第3章 检视硬件 39
3.1 硬件/软件集成 39
3.1.1 理想的项目流程 40
3.1.2 电路板调试 41
3.2 阅读数据表 42
3.2.1 遇到问题时需要查找的数据表部分 44
3.2.2 对软件开发者比较重要的内容 46
3.2.3 用数据表评估元器件 48
3.3 处理器是一门语言 51
3.4 阅读原理图 53
3.5 调试工具箱(和灭火器) 56
3.5.1 保管好电路板 56
3.5.2 工具箱 57
3.5.3 数字万用表 58
3.5.4 示波器和逻辑分析仪 58
3.6 测试硬件(和软件) 61
3.6.1 构建测试 62
3.6.2 闪存测试范例 63
3.6.3 命令和响应 66
3.6.4 命令模式 70
3.7 处理错误 71
3.7.1 一致的方法 72
3.7.2 错误处理库 73
3.7.3 调试时序错误 73
3.8 延伸阅读 74
第4章 输入、输出和定时器 76
4.1 触发输出 76
4.1.1 从寄存器开始 77
4.1.2 将引脚设置为输出 78
4.1.3 点亮LED 80
4.1.4 LED闪烁 81
4.1.5 故障诊断 81
4.2 将硬件和动作分离 82
4.2.1 特定于电路板的头文件 83
4.2.2 I/O处理代码 84
4.2.3 主循环 86
4.2.4 门面模式 86
4.3 I/O中的输入 87
4.3.1 按钮的简单接口 88
4.4 瞬间按钮动作 90
4.4.1 按钮按下时的中断 90
4.4.2 配置中断 91
4.4.3 去抖动开关 92
4.5 运行时不确定性 94
4.5.1 依赖注入 95
4.6 使用定时器 96
4.6.1 时间片 97
4.6.2 数学计算 99
4.6.3 定时器节拍之间的漫长等待 103
4.6.4 使用定时器 104
4.7 使用脉冲宽度调制 104
4.8 产品发货 106
4.9 延伸阅读 108
第5章 任务管理 109
5.1 调度和操作系统基础 109
5.1.1 任务 109
5.1.2 任务间通信 110
5.1.3 避免竞争条件 110
5.1.4 优先级倒置 112
5.2 状态机 113
5.2.1 状态机范例:信号灯控制器 114
5.2.2 以状态为中心的状态机 114
5.2.3 具有隐式迁移的以状态为中心的状态机 115
5.2.4 以事件为中心的状态机 116
5.2.5 状态模式 117
5.2.6 表格驱动的状态机 118
5.2.7 选择状态机的实现 120
5.3 中断 120
5.3.1 中断请求 121
5.3.2 保存上下文 128
5.3.3 从向量表中获得ISR 130
5.3.4 调用ISR 132
5.3.5 恢复上下文 134
5.3.6 何时使用中断 135
5.4 怎样不使用中断 135
5.4.1 轮询 136
5.4.2 系统节拍 136
5.4.3 基于时间的事件 138
5.4.4 一个极小型调度器 138
5.5 监控程序(看门狗) 140
5.6 延伸阅读 142
第6章 外设通信 145
6.1 应用广泛的外设 145
6.1.1 外部存储器 145
6.1.2 按钮和按键矩阵 146
6.1.3 传感器 147
6.1.4 执行器 150
6.1.5 显示器 155
6.2 种类繁多的通信方式 160
6.2.1 串行通信 161
6.2.2 并行 170
6.2.3 以太网和WiFi 171
6.3 将外设和通信结合 172
6.3.1 数据处理 172
6.3.2 增强通信的健壮性 182
6.3.3 修改数据 185
6.3.4 修改算法 187
6.4 延伸阅读 188
第7章 更新代码 191
7.1 板载启动装载器 192
7.2 构建自己的更新程序 193
7.2.1 修改驻留的更新程序 194
7.3 砖块装载器 195
7.3.1 将装载器复制到内存 196
7.3.2 运行装载器 198
7.3.3 复制新代码到暂存空间 198
7.3.4 危险时刻:擦除和编程 199
7.3.5 重置到新代码 199
7.4 安全 200
7.5 链接器脚本 201
7.6 总结 204
第8章 事半功倍 206
8.1 代码空间 207
8.1.1 读映射文件(第1部分) 207
8.1.2 简化的过程 210
8.1.3 库 212
8.1.4 函数和宏 212
8.1.5 常量和字符串 214
8.2 RAM 214
8.2.1 释放和分配 215
8.2.2 读映射文件(第2部分) 216
8.2.3 寄存器和局部变量 217
8.2.4 函数链 219
8.2.5 全局变量的优点和缺点 221
8.2.6 内存覆盖 221
8.3 速度 222
8.3.1 程序性能分析 223
8.3.2 优化 227
8.4 总结 236
8.5 延伸阅读 237
第9章 数学运算 240
9.1 区别快、慢运算 241
求平均值 242
9.2 使用已知的算法 245
9.3 设计与修改算法 248
9.3.1 多项式因式分解 248
9.3.2 泰勒级数 248
9.3.3 除以常数 250
9.3.4 放大输入 251
9.3.5 查找表 253
9.4 伪浮点数 259
9.4.1 有理数 260
9.4.2 精度 261
9.4.3 加法(和减法) 262
9.4.4 乘法(和除法) 263
9.4.5 决定误差 264
9.5 延伸阅读 268
第10章 降低功耗 270
10.1 理解功耗 271
10.2 离开房间的时候请关灯 273
10.2.1 关掉外围设备 273
10.2.2 关掉不用的I/O设备 274
10.2.3 关掉处理器子系统 274
10.2.4 降速节能 274
10.3 让处理器休眠 276
10.3.1 基于中断的代码流模型 277
10.3.2 深度研究主循环 279
10.3.3 处理器看门狗 280
10.3.4 避免频繁唤醒 280
10.3.5 处理器链 281
10.4 延伸阅读 281

教学资源推荐
作者: [美]戴维·A. 帕特森(David A. Patterson),[美]约翰·L. 亨尼斯(John L. Hennessy) 著
作者: [美] 戴维 A.帕特森 (David A. Patterson) 加州大学伯克利分校 约翰 L.亨尼斯(John L. Hennessy) 斯坦福大学 著
作者: 袁春风 吴海军 武港山 余子濠 编著
作者: [美]莫里斯·赫利希(Maurice Herlihy),[美]尼尔·沙维特(Nir Shavit),[美]维克多·卢昌科(Victor Luchangco),[美]迈克尔·斯皮尔(Michael Spear) 著
参考读物推荐
作者: [丹麦]克劳斯·埃尔克(Klaus Elk) 著
作者: Douglas Schmidt,Michaes Stal,Hans Rohnert,Frank Buschmann
作者: [美]阿诺德·S.伯格(Arnold S.Berger) 著