High-Performance Embedded Computing: Applications in Cyber-Physical Systems and Mobile Computing,Second Edition在第2版中,我试图用新的眼光来看待嵌入式计算和可以用于设计高性能嵌入式系统的各种技术。当前各种应用使用嵌入式多处理器和复杂的软件栈:智能手机、飞机、汽车、电力设备等。这些复杂的应用需要复杂的硬件、软件和设计方法。 我更新了每一章,部分章节进行了较多的修改。新增关于信息物理系统(CPS)的一章(第8章)。CPS在本书第1版出版后作为控制理论和嵌入式计算的一种综合体出现。虽然CPS影响了本书其他章节所描述的许多技术,但许多新的结果又应用在CPS的设计之中。我试图概述这些结果,并强调它们与其他章节所描述结果之间的关系。 本书编辑Todd Green和Nate McFadden给了我非常重要的帮助和建议。我要感谢匿名审稿人的真知灼见。书中任何疏漏(包括概念上、技术上或者文体上的)均由我负责。 ——Marilyn Wolf第1版前言High-Performance Embedded Computing: Applications in Cyber-Physical Systems and Mobile Computing,Second Edition本书旨在为新兴的高性能嵌入式计算领域提供一个参考框架。嵌入式计算机的发展已经远远超越了早期8位微控制器的时代。如今,嵌入式计算机更成为可以运行成千上万行代码的多处理器。它们实时运行并且功耗水平很低。为了更好地设计这类系统,人们对嵌入式软件和硬件特性有关的问题进行了大量持续的研究。现实生活中的飞机、移动电话和数字电视等均依赖于高性能嵌入式系统。我们对如何设计此类系统已有了解,但仍有更多的知识需要掌握。 实时控制实际上是计算机初的应用之一——第1章中提到的研制于20世纪50年代的MIT Whirlwind计算机就用于武器控制。但微处理器使得嵌入式计算占据了计算机应用领域中较为重要的位置。尽管早在1980年就开始应用复杂的嵌入式系统,但嵌入式计算作为一个学术研究领域直到20世纪90年代才形成。直到今天,许多传统的计算机科学和工程学科在探讨嵌入式计算议题时并未充分了解其他学科研究领域中的相关工作。 嵌入式计算机应用广泛,每年售出数十亿台。大量专业人员设计嵌入式系统——超过50万程序员从事嵌入式软件编程。尽管各种嵌入式系统在细节上有很多不同,但也有一些应用于嵌入式计算领域的通用原理。有些原理早已发现,有些则近期刚被人们知晓。嵌入式计算作为一个研究领域的发展促使嵌入式系统设计从一种技术转变为一门学科,鉴于某些重要的(安全关键的)任务完全交由嵌入式计算机执行,这一转变非常合乎时宜。 对于此领域有理由提出一个问题:它与传统计算机系统的主题有何不同,如客户/服务器系统或者科学计算?我们是否仅仅将相同的理论应用于较小的系统,还是需要做一些新的工作?我相信,尽管嵌入式计算使用了计算机科学和工程中的很多技术,但它也提出了一些独特的挑战。首先,绝大多数嵌入式系统必须执行实时任务。这需要软件和硬件设计者的设计思想有重大转变。其次,嵌入式计算更加重视功率和能量消耗。虽然能耗对于计算机系统的各个方面都十分重要,但与很多通用应用相比,嵌入式应用更加注重功耗、效率。相对于为通用用途设计的计算机,所有这些都导致嵌入式系统需要更为复杂的设计来满足特定的需求。 本书假设读者已经了解了嵌入式硬件和软件的基础知识,如《Computers as Components》中提到的内容。本书在此基础之上探讨一系列高级主题。在主题的选择上,我们力图找出嵌入式计算所特有的主题和结论。本书专门介绍了其他学科的背景资料以便于更好地讨论嵌入式系统的问题。 下面是本书简要的介绍。 第1章为本书其他章节提供一些重要的背景资料。本章试图划定嵌入式计算领域中的一组核心主题,着眼于方法学和设计目标。本章综述了各种计算模型,即应用特征的参考框架。本章也对多种依赖于嵌入式计算的重要应用进行了综述,以便于提供全书中将要用到的一些专业术语。 第2章介绍处理器。本章考虑嵌入式系统中使用的不同类型的处理器,讨论调整处理器性能的技术,如电压调整。本章考虑嵌入式CPU中存储层次结构的角色,着眼于优化嵌入式CPU的技术,如代码压缩和总线编码。本章也考虑处理器模拟的技术。 第3章研究程序。编译过程的后端有助于确定代码的质量,这是个主题。本章在存储系统优化上花费大量时间,因为存储行为是性能和功耗的主要决定因素。本章考虑性能分析,包括模拟和坏情况执行时间分析。本章也考虑计算模型如何反映到编程模型和编程语言中。 第4章讨论多处理系统。本章研究和比较调度算法,包括语言设计和调度机制之间的交互。本章评估操作系统的体系结构和操作系统带来的开销,还考虑验证多处理系统行为的方法。 第5章重点介绍多处理器体系结构。本章考虑紧耦合多处理器和车辆中使用的物理分布式系统,考虑体系结构及其组件:处理器、内存和网络。本章也着眼于多处理器设计的方法学。 第6章着眼于多处理器软件。本章考虑多处理器的调度算法,还研究多处理器中用于动态资源分配的中间件体系结构。 第7章重点讨论软硬件协同设计。本章研究用于描述嵌入式应用和目标平台特性的不同模型,研究很多协同综合算法,并且对这些算法使用的模型和假设进行比较。 希望本书能够涵盖高级嵌入式计算系统的从业者和学生感兴趣的绝大部分主题。有些主题的参考文献很少,嵌入式软件测试就是一个典型例子。我试图为每个问题找到其主要解决方法的代表性论文,但是很遗憾,在很多情况下我无法充分描述一个特定的问题。 本书是关于嵌入式计算的,它略微涉及但没有详细阐述下面的一些相关领域。 应用。嵌入式系统支持多媒体、通信等应用。第1章介绍了一些应用涉及的基本概念,对这些应用领域有一些理解非常重要。关于这些应用领域的深入介绍请查阅其他文献。 VLSI。虽然片上系统是嵌入式系统的重要介质,但不是唯一介质。汽车、飞机和很多其他重要系统都由分布式嵌入式网络控制。 混合系统。混合系统研究连续和离散系统之间的交互。这是一个重要且有趣的领域,很多嵌入式系统可以使用混合系统的技术,但混合系统有专门的文献著述。 软件工程。软件设计是一个内容丰富的领域,它提供了关键的基础,但对于嵌入式计算也遗留了很多尚未解决的问题。 我要感谢帮助我编写本书的所有人:Robert P.Adler (Intel) Brian Butler (Qualcomm) Alain Darte (CNRS) Babak Falsafi (CMU) Ran Ginosar (Gen-Gurion University) John Glossner (Sandbridge) Graham Hellestrand (VaSTSystems) Paolo Ienne (EPFL) Masaharu Imai (Osaka University) Irwin Jacobs (Qualcomm) Axel Jantsch (KTH) Ahmed Jerraya (TIMA) Lizy Kurian John (UT Austin) Christoph Kirsch (University of Salzburg) Haris Lekatsas (NEC) Frank Mueller (NCSU) Pierre Paulin (ST Microelectronics) Laura Pozzi (University of Lugano) Chris Rowen (Tensukuca) Rob Rutenbar (CMU) Deepu Talla (TI) David Whalley (FSU) Jiang Xu (Sandbridge) 以及 Shengqi Yang (Intel)。 我非常感谢编辑Nat McFadden以及审校人员对我的支持、指导和鼓励。审校过程有助于明确本书的角色,Nat始终能给我提供深刻的见解和评论。我还要感谢一直支持我的编辑——Morgan Kaufmann出版社的Denise Penrose,他从一开始一直在关注本书的进度。 我还要感谢数字图书馆,特别是IEEE和ACM的数字图书馆。如果没有它们的帮助本书不可能完成。如果我需要在传统图书馆中查找所用到的所有文献,那我就要身心疲惫地奔走在书架间。有了数字图书馆的帮助,我只需要擦亮双眼。 感谢Nancy和Alec的耐心,他们是我亲爱的人。 ——Wayne Wolf新泽西普林斯顿