本书包含大量现实世界中嵌入式计算应用(比如移动电话、打印机和数字电视等)和体系结构(比如TI C5000系列DSP、Freescale Starcore处理器和TI OMAP多处理器等)的实例,涵盖嵌入式计算领域的高级主题,深入论述了网络、可重构系统、软硬件协同设计、安全性以及程序分析。
高性能嵌入式计算
High-Performance Embedded Computing
Architectures, Applications,
and Methodologies
(美) Wayne Wolf 普林斯顿大学 著 鞠大鹏 王海霞 汪东升 清 华 大 学 译
在过去的20年中,虽然嵌入式系统仍是许多消费电子设备、工业设备和军用设备中不可见的部分,但它作为一个整体已经脱颖而出。如今,嵌入式计算不再限于简单设备控制,它已经能以高实时处理能力和低能耗来执行复杂的处理任务。
本书采用一种独特的量化方法来论述现代嵌入式计算系统的设计,书中根据性能、功率和能量消耗以及成本应达到的量化目标描述了在设计中亟待解决的问题。贯穿全书的实际应用使得本书对专业人员、研究人员和学生来说都是及时且非常有价值的资源。
本书特色
包含大量现实世界中嵌入式计算应用 (比如移动电话、打印机和数字电视等) 和体系结构 (比如TI C5000系列DSP、Freescale Starcore处理器和TI OMAP多处理器等) 的实例。
涵盖嵌入式计算领域的高级主题,比如可配置处理器、针对实时和功率损耗的软件优化、异构多处理器以及嵌入式中间件。
深入论述了网络、可重构系统、软硬件协同设计、安全性以及程序分析。
作者简介
Wayne Wolf
拥有斯坦福大学电子工程博士学位,现为普林斯顿大学电子工程教授。在1989年加入普林斯顿大学之前,他曾在AT&T贝尔实验室工作。他是IEEE和ACM会员、IEEE计算机协会核心成员以及ASEE和SPIE成员。Wolf教授于2003年获得了ASEE Frederick E. Terman奖,于2006年获得了IEEE电路与系统教育奖。除本书外,他还著有《嵌入式计算系统设计原理》和《基于FPGA的系统设计》等书。
本书的目标是为新兴的高性能嵌入式计算领域提供一个参考框架。计算机的发展已经远远超越了早期的8位微控制器时代。如今,嵌入式计算机由能够运行成千上万行代码的微处理器构成。它们实时运行并且功耗很低。为了适当地设计这类系统,人们已经对嵌入式硬件和软件特性展开了深入研究。现实生活中的飞机、手机和数字电视等都依赖于高性能嵌入式系统。我们对如何设计这类系统已经相当了解,但还有更多的知识需要掌握。
实时控制实际上是计算机最初的应用之一——第1章中提到的MIT Whirlwind(旋风)计算机研制于20世纪50年代,用于武器控制。但微处理器使嵌入式计算开始在计算机应用领域中占据相对非常重要的位置。尽管复杂的嵌入式系统在1980年以前就已经开始使用,但嵌入式计算作为一个学术研究领域直到20世纪90年代才形成。即便现在,许多传统的计算机科学和工程学科在探讨嵌入式计算课题时并没有充分了解其他学科研究领域中的相关工作。
嵌入式计算机应用非常广泛,每年售出数十亿台。成千上万的专业人员设计嵌入式系统,至少50万程序员从事嵌入式软件编程。尽管嵌入式系统在构成细节上千差万别,但应用于嵌入式计算领域的原理是通用的。有些原理几十年前就已经被发现,而另外一些则是近期刚被人们知晓的。嵌入式计算作为一个研究领域,其发展促使嵌入式系统设计从一种技术转变为一门学科,这种转变适当地使某些重要的、有时甚至是对安全至关重要的任务可以完全托付给嵌入式计算机来完成。
关于这个领域,有理由提出这样一个问题:它与传统的计算机系统课题——例如客户端/服务器系统或科学计算——相比有什么区别?我们是否仅仅将相同的理论应用于更小的系统,还是需要研究一些新的东西?我相信,尽管嵌入式计算利用了很多计算机科学和工程技术,但它也提出了一些特有的挑战。
首先,绝大多数嵌入式系统必须实时完成任务。这需要软件和硬件设计人员的设计思想有重大转变。其次,嵌入式计算更加侧重于能耗。能耗在计算机系统的各个方面都是十分重要的,但嵌入式应用与很多通用系统相比,更加注重能耗效率。上述两点导致要满足特定的需求,嵌入式系统与通用系统相比,需要更加复杂的设计。
本书假设读者已经熟悉嵌入式硬件和软件的基础知识,例如在《计算机组成原理》中可能提到的内容。在此基础上,本书探讨一系列深入的课题。在要介绍的课题的选择上,我力图确保它们是在嵌入式计算领域中独有的课题和结论。我特意介绍了一些来自其他学科的背景材料,从而做好准备以便更好地探讨嵌入式系统问题。
下面是本书简要的介绍:
第1章为其他章提供了一些重要的背景材料。其中将定义一组嵌入式计算领域的中心课题。它着眼于方法论和设计目标。我们研究了计算模型,它是应用特性的参考框架。这一章还研究了一些基于嵌入式计算的重要应用,为全书中将要用到的一些术语提供背景。
第2章着眼于一些嵌入式系统中使用的不同类型的处理器。我们考虑优化处理器性能的技术,例如电压调整和嵌入式CPU中的处理器内存体系。我们着眼于优化嵌入式CPU的技术,例如代码压缩和总线编码,以及模拟处理器技术。
第3章研究程序。编译过程的后端有助于决定代码的质量,它是第一个主题。我们将在内存系统优化方面花费很多时间进行研究,因为内存特性是性能和能耗的主要决定性因素。我们考虑性能分析,包括模拟和最坏执行时间分析。我们还讨论计算模型如何反映到编程模型和编程语言中。
第4章转向多处理器系统。我们将研究和比较调度算法,包括语言设计和调度机制之间的交互。我们评估操作系统体系结构及其导致的负载。我们还会考虑检验多处理器系统特性的方法。
第5章集中讨论多处理器体系结构。我们考虑交通工具中使用的紧耦合的多处理器和物理分布的系统。我们描述体系结构及其组件:处理器、内存和网络。我们还将讨论多处理器的设计方法。
第6章着眼于多处理器的软件和它们的调度算法。我们还研究多处理器中动态资源分配使用的中间件体系结构。
第7章专注于硬件和软件的协同设计。我们研究用于描述嵌入式应用和目标体系结构的不同模型。我们将会涉及很多用于协同综合的算法,并比较这些算法使用的模型和假设。
希望这本书能涵盖高级嵌入式计算系统的技术人员和学生感兴趣的绝大部分主题。有些主题的参考文献很少:嵌入式系统的软件测试就是一个典型例子。我试图为每个问题找到其主要解决方法的代表性文章。但是很遗憾,在很多情况下我无法充分描述一个特定的问题。
这本书是关于嵌入式计算的;它略微涉及但没有详细阐述下面的一些相关领域:
应用——嵌入式系统被设计用来支持例如多媒体、通信等应用。由于对应用领域有一定了解非常重要,因此第1章介绍了一些关于应用的基本概念。关于这些应用领域的深入介绍请查阅其他文献。
VLSI——尽管片上系统是嵌入式系统的重要介质,但它们不是唯一的介质。汽车、飞机和很多其他重要系统由分布式嵌入网络控制。
混合系统——混合系统研究连续系统和离散系统之间的交互。这是一个重要且有趣的领域,很多嵌入式系统能够利用混合系统技术,但混合系统有专门的文献进行阐述。
软件工程——软件设计是一个内容很丰富的领域,它提供了重要的基础。但对于特定于嵌入式计算的很多问题并未回答。
我要感谢很多在编写这本书过程中帮助过我的人:Brian Butler(Qualcomm)、Robert P Adler(Intel)、Alain Darte(CNRS)、Babak Falsafi(CMU)、Ran Ginosar(Technion)、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)、Phil Koopman(CMU)、Haris Lekatsas(NEC)、Pierre Paulin(ST Microelectronics)、Laura Pozzi(University of Lugano)、Chris Rowen(Tensilica)、Rob Rutenbar(CMU)、Deepu Talla(TI)、Jiang Xu(Sandbridge)和Shengqi Yang(Princeton)。
我非常感谢我的编辑Nate McFadden以及审校人员对我的支持、指导和鼓励。审校过程有助于明确本书的角色,Nate始终带给我具有深刻见解的想法和评论。我还要感谢一直支持我的编辑——Morgan Kaufmann的Denise Penrose,她从一开始一直在指导本书。
我还要感谢数字图书馆,尤其是那些IEEE和ACM数字图书馆。如果没有它们这本书不可能完成。如果我需要在图书馆中查找所有需要用到的论文,那我就要带着疲倦的双眼和成千上万张纸,拖着疲惫的双腿在书架间奔走。数字图书馆的确帮了我大忙。
感谢Nancy和Alec的耐心,我最爱的亲人。
Wayne Wolf
普林斯顿,新泽西
计算机科学及应用
封底宣传文字同影印书。
封底加影印书信息:书号ISBN 7-111-20416-6,定价65.00元
鞠大鹏 王海霞 汪东升 等译清华大学:暂无简介
嵌入式计算应用非常广泛,发展历史也很悠久。Wayne Wolf是这一研究领域的翘楚,本书是他在嵌入式计算系统设计方面的代表作。该书针对诸如空间、时间及功耗等关键性嵌入式系统资源,从设计方法、实现机制到优化技术提供了一整套详尽论述,同时还大量涉及了与多处理器系统相关的重要设计问题。
尽管嵌入式计算利用了很多已有的计算机科学和工程技术,但它也提出了一些独特的挑战。首先,绝大多数嵌入式系统必须实时完成任务,需要软硬件设计人员的设计思想有重大转变。其次,嵌入式计算更加侧重于功耗。要满足这两点特定需求,更好地设计这类更加复杂的系统,有必要对嵌入式硬件和软件特性展开深入研究。本书的目标是为新兴的高性能嵌入式计算领域提供一个参考框架,包含了绝大部分技术人员和学生感兴趣的高级嵌入式计算系统的课题。在所涉及课题的选择上,Wayne Wolf力图确保它们是在嵌入式计算领域中独有的课题和结论。同时作者特意介绍了一些来自其他学科的背景材料,以此为平台更好地探讨嵌入式系统问题。
尤为难能可贵的是,Wayne Wolf除了引经据典,竭尽所能为每个问题找到其主要解决方法的代表性文献之外,还亲自指导了书中提到的许多课题的研究工作,而且在许多他构造的嵌入式系统中实践了提出的设计方法,收到了良好的效果。
要做好本书的中文翻译工作的确很不容易,不仅是因为书中的许多新技术、新方法,而且作者在各个相关的研究领域都有所涉猎,对于初次接触的我们来说,翻译本书也是一个经验积累、不断学习改进的过程,因此本书延迟了很长一段时间才完稿。当然,书中译文不确切的地方可能会有不少,我们表示歉意的同时也衷心恳请读者批评指正。
在中译本行将出版之际,对参与本书翻译及校对工作的刘振宇博士等表示由衷的感谢,正是他们辛苦、细致的工作才促成今天这一成果的实现。
译者
2010年5月
出版者的话
译者序
前言
本书赞誉
第1章嵌入式计算
11高性能嵌入式计算的前景
12示例应用
121无线电和网络
122多媒体
123车辆控制和操作
124传感器网络
13设计目标
14设计方法
141基本设计方法
142嵌入式系统设计流程
143基于标准的设计方法
144设计检验和确认
145方法论
146算法与体系结构联合开发
15计算模型
151为什么研究计算模型
152有限与无限状态
153控制流和数据流模型
154并行和通信
155并行的来源和使用
16可靠性、安全与防卫
161为什么需要可靠的嵌入式系统
162可靠系统设计的基础
163新式攻击和对策
17电子消费品体系结构
171蓝牙
172WiFi
173联网的电子消费品
174高层次服务
18小结
问题
实验练习
第2章CPU
21介绍
22处理器的比较
221评价处理器
222处理器的分类
223嵌入式处理器与通用处理器
23RISC处理器与数字信号处理器
231RISC处理器
232数字信号处理器
24并行执行机制
241超长指令字处理器
242超标量处理器
243SIMD与向量处理器
244线程级并行
245处理器资源利用率
25性能可变处理器体系结构
251电压和频率的动态调整
252“优于最坏情况”设计
26处理器存储层次结构
261存储组件模型
262寄存器堆
263cache
264片上SRAM
27附加的CPU技术
271编码压缩
272代码和数据压缩
273低功耗总线编码
274安全性
28CPU模拟
281基于执行日志的分析
282直接执行
283微系统结构建模模拟器
29CPU的自动化设计
291可配置处理器
292指令集综合
210小结
问题
实验练习
第3章编程
31介绍
32代码生成和后端编译
321指令模型
322寄存器分配
323指令选择和调度
324代码放置
325编程环境
33面向内存的优化
331循环变换
332全局优化
333缓冲区、数据传输和存储管理
334面向cache和片上SRAM的优化
335面向主存的优化
34程序性能分析
341性能模型
342路径分析
343路径计时
35计算与编程模型
351面向中断的语言
352数据流语言
353面向控制的语言
354Java
355计算异构模型
36小结
问题
实验练习
第4章进程和操作系统
41介绍
42实时进程调度
421预备知识
422实时调度算法
423动态电压调整的调度
424性能估算
43语言和调度
44操作系统的设计
441嵌入式操作系统中的内存管理
442实时操作系统的结构
443操作系统开销
444对调度的支持
445进程间通信机制
446电源管理
447嵌入式设备中的文件系统
45验证
46小结
问题
实验练习
第5章多处理器体系结构
51介绍
52为什么需要嵌入式多处理器
521嵌入式系统的需求
522性能和能耗
523专用性和多处理器
524可扩展性和效率
53多处理器的设计技巧
531多处理器设计方法
532多处理器的建模和模拟
54多处理器的结构
55处理单元
56互连网络
561模型
562网络拓扑
563路由和流控制
564片上网络
57内存系统
571传统的并行内存系统
572内存模型
573异构内存系统
574一致性并行内存系统
58物理分布式系统和网络
581时间触发的结构
582FlexRay
583飞机网络
59多处理器的设计方法和算法
510小结
问题
实验练习
第6章多处理器软件
61简介
62嵌入式多处理器软件的不同之处
63实时多处理器操作系统
631操作系统的角色
632多处理器调度
633动态任务的调度
64嵌入式多处理器系统服务与中间件
641基于标准的服务
642片上系统服务
643服务质量
65设计验证
66小结
问题
实验练习
第7章硬件/软件协同设计
71简介
72设计平台
73性能分析
731高层综合
732加速器评估
74硬件/软件协同综合算法
741程序表示
742平台描述
743模板驱动的综合算法
744通用多处理器的协同综合
745多对象优化
746控制和I/O综合
747内存系统
748可重构系统的协同综合
75硬件/软件协同模拟
76小结
问题
实验练习
术语表
参考文献