嵌入式计算系统设计原理
作者 : (美)Wayne Wolf
译者 : 孙玉芳 梁彬 罗保国 谢谦 等
丛书名 : 计算机科学丛书
出版日期 : 2002-02-01
ISBN : 7-111-09640-1
定价 : 65.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 460
开本 : 16开
原书名 : Computers as Components: Principles of Embedded Computing System Design
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

绝大多数现存计算机都是被嵌入到无数的智能设备和应用系统中而不仅仅是桌面系统。我们正见证着一个新的学科及其原理、限制和设计过程的出现。
  本书是第一本用于讲授这个新学科的书。它提示了这些系统的复杂性以及用于设计此类系统所需工具和方法的奥秘。硬软件领域的研究人员、学生见多识广的专业人员都将会重视这一快速发展领域的集成工程设计方法的价值。

图书特色

Wayne Wolf是美国普林斯顿大学电子工程系教授。在进入普林斯顿大学之前他在新泽西州的默里山AT&T贝尔实验室工作。他在斯坦福大学获得电子工程学士、硕士和博士学位。众所周知,他的研究领域涉及硬件/软件协同设计、嵌入式计算、VLSI CAD以及多媒体计算系统。他是IEEE的会员并且是ACM和SPIE的成员。他曾任硬件/软件协同设计第一届国际研讨会的程序委员会主席,他亦是1996年IEEE计算机设计国际会议程序委员会主席。他曾是《IEEE Transactions on VLSI Systems》(1999-2000)的主编、Kluwer杂志《Design Automation for Embedded Systems》的编辑、新的“Morgan Kaufmann Series in Systems on Silicon”的丛书编辑。

图书前言

微处理器很长时间以来已经是我们生活的一部分,然而,微处理器对于真实复杂功能所产生的强有力影响还只是近几年的事。根据摩尔定律,微处理器飞速发展的结果是嵌入式计算作为一门学科出现。在微处理器的早期阶段,所有组件相对较小也较简单,需要且期望把一些单独的指令和逻辑门集中在一起。今天,当系统包含了几千万个晶体管和数万行高级语言代码时,我们必须使用有助于我们处理复杂性的设计技术。
本书试图捕捉嵌入式计算这一新学科的某些基本原理和技术。嵌入式计算的某些挑战在台式机计算世界中是众所周知的。例如,为从带流水线的高速缓存体系结构中取得最高性能,经常需要仔细分析程序轨迹。类似地,随着嵌入式系统的复杂性不断增长,在软件工程中针对特定复杂系统开发的技术变得十分重要。另外一个例子是多进程的系统设计。对于台式机的通用操作系统的需求与实时操作系统的需求是截然不同的;过去30年针对大型实时系统开发的实时技术现在在基于微处理器的嵌入式系统中能得到很普遍的应用。
其他的挑战对于嵌入式计算来说是全新的。一个较好的例子是功耗问题。在传统计算机系统中功耗已经不是一个主要考虑因素,但是对于用电池供电的嵌入式计算机,这是一个基本考虑因素,而且在功耗容量受重量、成本或噪声等限制的许多情况下是十分重要的。另外一种挑战是期限驱动的程序设计。嵌入式计算机常常对程序完成的期限做硬性限制;这种形式的约束在台式机世界里是罕见的。当嵌入式处理器变得更快时,高速缓存和其他CPU元素亦使得执行时间难于预测。然而,通过仔细分析和巧妙编程,我们可以把嵌入式程序设计得具有可预测的执行时间,甚至面对不可预测的系统部件如高速缓存也如此。
幸运的是,有许多处理复杂嵌入式系统所面临的挑战的工具:高级语言、程序性能分析工具、进程和实时操作系统等等。但是理解这些工具如何协调地一起工作本身就是一项很复杂的任务。本书提供了一种自底向上的方法来理解嵌入式系统设计技术。通过先理解微处理器硬件和软件的基础知识,我们就能获得有助于创建复杂系统的强有力的抽象能力。
对于嵌入式系统专业人员的忠告
本书不是一本用来理解某种特定微处理器的手册。为什么在这里呈现的技术你会感兴趣呢?有两个理由:第一,诸如高级语言编程和实时操作系统那样的技术在构造大型实际的复杂的嵌入式系统中是非常重要的。生产会因为不能工作的错误系统设计而被弄得杂乱无章,系统之所以不能工作是因为它们的设计者试图从出现的问题中寻求解决方法而不是在错误处往回走再从更大的视角研究问题。第二,用于建造嵌入式系统的构件是经常变化的,但其原理不变。一旦你理解了创建复杂嵌入式系统所涉及的基本原理,就可以迅速地学习一种新的微处理器(或编程语言)并且把同样的基本原理用于新的构件。
对于教师的忠告
传统的微处理器系统设计起源于20世纪70年代,当时微处理器的种类相对有限。这种传统方法的重点是教授如何构建一个完整系统的硬件和软件。结果导致它只强调某一特定微处理器的特性,包括其指令系统、总线接口等等。
本书采用更抽象的途径研究嵌入式系统。本书利用每次机会讨论实际组件和应用,但本质上它不是一本微处理器数据手册,为此它的论述方法初看起来是新奇的。本书不是集中于某种特定微处理器上,而是试图用一般性的例子来推出更一般性的应用原理。本人认为这种方法对于教学更为容易,而从长远角度来看对于学生也更有用。教学更容易是因为不必太过于依赖复杂的实验室装置而只需花费一些时间用于纸笔上的练习、模拟和编程练习。对于学生更有用是因为他们在这一领域的最终工作将大多使用不同于那些在学校里的组件和设施。一旦学生学会了基础知识,他们学习新组件的细节就会容易得多。
对于获得有关嵌入式系统的物理直觉,实践经验特别重要。某些硬件构造经验是非常有价值的;我相信每一个学生都应该知道烧制塑封集成电路块的气味。但我极力让你避免构建硬件。如果你花费太多的时间去构建一个硬件平台,那么你就没有足够时间去编写有趣的程序。一个实际问题是,大多数班级没有时间让学生用高性能I/O设备和可能的多处理器来建造复杂的硬件平台。多数学生可以通过测量和评价一个现存硬件平台来学习硬件。编制复杂嵌入式系统的程序的实践将教会学生相当多的有关硬件的知识,调试中断驱动代码是学生基本不会忘记的一种经验。
本书的主页(www.mkp.com/embed)中包括辅助操作、导师手册、实验材料、到相关Web站点的链接以及与包含习题解答的口令保护的ftp站点的连接。

图书序言

数字系统设计已经进入一个新的时代。当微处理器设计转向一种典型的优化工作时,只把微处理器作为其部件的嵌入式计算系统设计已经成为一种广阔的科技前沿。无线系统、耐耗系统、网络系统、智能家电、工业过程系统、高级自动化系统以及生物接口系统由于与这个新领域产生了交叉而提供了一些例子。
受传感器、转换器、微电子学、处理器性能、操作系统、通信技术、用户接口和封装技术进步的推动以及对于人们的需要和市场潜能更深入的理解,正在涌现出大量新的系统和应用。现在系统设计师和嵌入式系统的设计人员的责任是把这些可能变成现实。
然而,在现阶段,嵌入式系统设计仍处于一种手工阶段。虽然有关硬件构件和软件子系统的知识是很清楚的,但是还没有协调整个设计过程的通用系统设计方法,在大多数项目中嵌入式系统的设计仍然采用某种特定方法。
嵌入式系统设计所面临的某些挑战源于基础技术的改变以及系统各部件如何能全部正确地混合和集成在一起的细微之处,另一些挑战源于新的并且常常是不熟悉的系统需求。此外用于通信和协作的基础设施和技术的改善已经使快速设计以响应市场需求呈现出前所未有的可能性。但是,还没有有效的设计方法和相关的设计工具足以迅速应付这些挑战。
在VLSI时代的开始阶段,晶体管和导线是基本部件,快速设计基于芯片的计算机是一种梦想。今天,CPU和各种特殊处理器以及子系统仅是一些基本部件,但快速、高效地设计极复杂的嵌入式系统却仍是一个梦想。现在不但系统规格说明极其复杂,而且它们遇到了实时期限、低功耗、有效地支持复杂实时用户界面、强劲的成本竞争以及设计的系统必须可升级等等问题。
Wayne Wolf教授编写了系统地处理大量新的系统设计需求和挑战的第一本教科书。他提出了嵌入式系统设计的形式体系和方法学,那些真正要理解跨越大量部件技术的系统设计基础、构造新型“超薄”系统的设计师可以运用这些方法。
从分析每一种技术基础出发,Wolf教授为规范和建造系统结构及行为提供了形式化方法,然后通过一系列示例解析这些思想。他仔细研究了所涉及到的复杂性以及如何去系统化地处理这些复杂问题。你会提前清楚地理解这些设计问题的本质,并知道如何攻克这些难关的关键方法和工具。
作为嵌入式系统设计的第一本教科书,本书将被证明是在这个重要和最新出现的领域里获得知识的一个无价的工具。本书亦可以作为实际设计工作的参考,并在设计过程中作为可信的指南。我强烈地向读者推荐本书。

Lynn Conway
密歇根大学电子工程和计算机科学系名誉教授

译者简介

孙玉芳 梁彬 罗保国 谢谦 等:暂无简介

译者序

今天,嵌入式系统带来的工业年产值已超过了1万亿美元,它正在成为信息技术(IT)产业争夺的重点之一。据统计,每年只有10%~20%的计算机芯片用于台式机或笔记本电脑等,这就意味着每年有10~20亿块CPU是为嵌入式系统设计和制造的;每年有超过1万个新的嵌入式系统计划产生,它们被广泛地应用到工业控制系统、仿真系统、医疗仪器、信息家电、通信设备等众多领域中。尤其是在最近几年,嵌入式设备不断地进入到新的应用领域,比如PDA、手持设备、AutoPC、智能电话和机顶盒(STB)等。在中国有8000万有线电视网用户,1亿以上的有线电话网用户,为其发展提供了巨大市场。机顶盒不仅可使模拟电视接收数字电视节目,而且可以上网,还可能成为未来家庭的控制中心。掌上电脑在未来几年内也将在我国得到快速发展,估计5年内总销量将达到3000万台。从功能上看,掌上电脑(或PDA)将扩充通信功能,甚至会具有手机和寻呼机的功能。另外,手机和寻呼机上网将成为新的趋势,车载盒随着全球定位技术的成熟也会得到广泛的应用。
针对如此巨大的市场,围绕嵌入式系统展开研究和开发也就成了计算机软硬件技术发展最活跃的方向之一。嵌入式系统的研发和生产也给我国信息产业实现跨越式发展提供了良好的机遇。中国科学院软件研究所和以其技术为依托的中科红旗软件技术有限公司的同仁们几年前就已涉足嵌入式系统的研究和开发,尽管我们已经基于Linux研制出了一组嵌入式系统及其产品,但是在研究和开发过程中我们感到经验缺乏,有许多问题迟迟得不到很好解决,延缓了研发工作的进展。正是在这种情况下,我们学习了美国普林斯顿大学Wayne Wolf教授所著的《Computers as Components: Principles of Embedded Computing System Design》一书,它给我们提供了许多有益的指导。
我们在学习过程中,感到本书对于嵌入式这一新领域的研发者有巨大帮助,所以在机械工业出版社的大力支持下,我们把本书译成中文版,希望与大家分享。
本书重点讲述嵌入式计算这一新兴学科的基本原理和技术。它不是详细讨论某一种微处理器,尽管本书以ARM和SHARC作为嵌入式系统微处理器重点讲述的对象;也不是讲述某种语言和编程方法,尽管在本书中讲述了相关的汇编语言和高级语言(如C)的编程工作。本书寻求更抽象的途径来研究嵌入式系统,但是这种研究既是系统的也是实际的,特别是讲述了大量实际例子,以利于读者掌握。
本书的另一特点是,在讨论原理的同时,讲述原理的具体应用。本书的主要章节都是一章一个重点,遍及构造嵌入式系统相关的指令系统、CPU、嵌入式计算平台、程序设计和分析、进程和操作系统、硬件加速器、网络、系统设计技术等各主要方面。每章后列出了供进一步学习的推荐读物,以及习题和实习题,有利于读者进一步领会该章陈述的内容。
由于嵌入式计算系统是一个新的领域,相关的书籍即使在信息技术发达的美国也不多见。正如密歇根大学电子工程和计算机科学系教授Lynn Conway在序中所说的本书是“嵌入式计算系统设计的第一本教科书”。它涉及的范围较广,许多术语是新的。加上我们以前的学习是为了“致用”,在某种程度上是为了“救急”,难免有理解不够深入和系统之处。虽然我们一再努力,但是译文中难免有疏漏和错误之处。敬请读者指正。
最后感谢参与本书翻译和讨论的其他同仁,恕不在此一一列出。

孙玉芳
2001年8月


孙玉芳  男,1947年生,江苏省张家港人。中国科学院软件研究所副所长、博士生导师、研究员。1970年毕业于北京大学数学力学系,1978年考入中科院研究生院,1981年获计算机软件硕士学位。社会兼职中国中文信息学会副理事长,中国信息技术标准化委员会委员,北京市政府顾问,中国软件行业协会UNIX分会秘书长,国际开放系统互连亚洲大洋洲AOW技术协调组多国语言处理专委主席,香港特区大学研究资助局特邀评委,厦门大学、云南大学兼职教授。先后多次在新加坡、日本、美国等国家和香港地区的大学、科研单位和公司作访问学者、讲学和合作研究开发。在计算机软件特别是操作系统、中文信息处理、大型数据库和网络工程方面有精深的研究。在国内率先引进、推广和开发UNIX系统,实现该环境下的中文处理,并主持或参与主持完成了十余项国家和中科院科技奖攻关项目及数十项大型应用工程,取得了多项具有国际和国内先进水平的成果,先后获得国家科技进步奖(二等、三等各2项)、部委科技进步奖(电子工业部特等1项、中科院一等1项、二等2项、国家技术监督局一等1项)计九项。科技专著《操作系统原理与应用》、《实用C语言程序设计教程》等22本;“文件系统的设计与实现”、“UNIX系统中文应用环境的开发”等论文280余篇;《UNIX操作系统》等编译著122本。指导博士后、博士生、硕士生60余名。享受国务院颁发的政府特殊津贴。

图书目录

出版者的话
专家指导委员会
译者序

前言
第1章  嵌入式计算 1
1.1  引言 1
1.2  复杂系统和微处理器 1
1.2.1  嵌入式计算机 1
1.2.2  嵌入式计算应用的特点 3
1.2.3  为什么要使用微处理器 4
1.2.4  嵌入式计算系统设计所面临的挑战 5
1.3  嵌入式系统的设计过程 6
1.3.1  需求 8
1.3.2  规格说明 11
1.3.3  体系结构设计 11
1.3.4  设计硬件构件和软件构件 13
1.3.5  系统集成 13
1.4  系统设计的形式化方法 13
1.4.1  结构描述 14
1.4.2  行为描述 19
1.5  设计示例:模型火车控制器 21
1.5.1  需求 22
1.5.2  概念性规格说明 22
1.5.3  详细的规格说明 25
1.5.4  本节所学内容 31
1.6  本书导读 31
1.6.1  第2章:指令系统 31
1.6.2  第3章:CPU 32
1.6.3  第4章:嵌入式计算平台 32
1.6.4  第5章:程序设计和分析 32
1.6.5  第6章:进程和操作系统 33
1.6.6  第7章:硬件加速器 33
1.6.7  第8章:网络 34
1.6.8  第9章:系统设计技术 34
1.7  小结 35
推荐读物 35
习题 35
实习题 36
第2章  指令系统 37
2.1  引言 37
2.2  预备知识 37
2.2.1  计算机体系结构分类 37
2.2.2  汇编语言 39
2.3  ARM处理器 40
2.3.1  处理器和存储器组织 40
2.3.2  数据操作 41
2.3.3  控制流 47
2.4  SHARC处理器 53
2.4.1  存储器组织 53
2.4.2  数据操作 54
2.4.3  控制流 60
2.4.4  指令的并行性 64
2.5  小结 64
推荐读物 65
习题 65
实习题 67
第3章  CPU 68
3.1  引言 68
3.2 输入输出编程 68
3.2.1  输入输出设备 68
3.2.2  输入输出原语 69
3.2.3  忙等I/O 70
3.2.4  中断 71
3.3  管态、异常和陷阱 82
3.3.1  管态 82
3.3.2  异常 82
3.3.3  陷阱 83
3.4  协处理器 83
3.5  存储系统机制 83
3.5.1  高速缓存 84
3.5.2  存储管理单元和地址转换 89
3.6  CPU的性能 93
3.6.1  流水线技术 93
3.6.2  超标量执行 96
3.6.3  高速缓存 97
3.7  CPU的功耗 97
3.8  设计示例:数据压缩器 101
3.8.1  需求和算法 101
3.8.2  规格说明 103
3.8.3  程序设计 105
3.8.4  测试 109
3.9  小结 110
推荐读物 111
习题 111
实习题 113
第4章  嵌入式计算平台 114
4.1  引言 114
4.2  CPU总线 114
4.2.1  总线协议 114
4.2.2  DMA 119
4.2.3  系统总线配置 121
4.2.4  ARM总线 123
4.2.5  SHARC总线 123
4.3  存储设备 125
4.3.1  存储设备组织 125
4.3.2  随机存储器 125
4.3.3  只读存储器 129
4.4  I/O设备 130
4.4.1  定时器和计数器 130
4.4.2  A/D和D/A转换器 131
4.4.3  键盘 131
4.4.4  发光二极管 133
4.4.5  显示器 133
4.4.6  触摸屏 134
4.5  组件接口 135
4.5.1  存储器接口 135
4.5.2  设备接口 136
4.6  用微处理器设计 137
4.6.1  系统的体系结构 137
4.6.2  硬件设计 138
4.6.3  PC作为平台 139
4.7  开发与调试 142
4.7.1  开发环境 142
4.7.2  调试方法 143
4.7.3  调试难点 146
4.8  制造测试 147
4.9  设计示例:闹钟 150
4.9.1  需求 150
4.9.2  规格说明 151
4.9.3  系统体系结构 154
4.9.4  构件设计与测试 154
4.9.5  系统集成与测试 155
4.10  小结 155
推荐读物 155
习题 155
实习题 157
第5章  程序设计和分析 158
5.1  引言 158
5.2  程序设计 158
5.2.1  设计范型 158
5.2.2  嵌入式系统设计范型 159
5.3  编程模型 162
5.3.1  数据流图 162
5.3.2  控制/数据流图 164
5.4  汇编和链接 166
5.4.1  汇编程序 166
5.4.2  链接 169
5.5  基本编译技术 170
5.5.1  语句翻译 171
5.5.2  过程 175
5.5.3  数据结构 176
5.5.4  表达式简化 177
5.5.5  死代码清除 177
5.5.6  过程内嵌 178
5.5.7  循环变换 178
5.5.8  寄存器分配 180
5.5.9  调度 183
5.5.10  指令选择 184
5.5.11  理解并使用你的编译程序 185
5.5.12  解释程序与JIT编译程序 185
5.6  执行时间的分析与优化 186
5.6.1  程序性能的要素 187
5.6.2  跟踪驱动的性能分析 189
5.6.3  优化执行速度 194
5.7  能量和功率的分析和优化 195
5.8  程序长度的分析及优化 198
5.9  程序验证和测试 200
5.9.1  白盒测试 200
5.9.2  黑盒测试 206
5.9.3  评估功能测试 206
5.9.4  性能测试 207
5.10  设计示例:软件调制解调器 207
5.10.1  工作原理和需求 208
5.10.2  规格说明 209
5.10.3  系统体系结构 210
5.10.4  构件设计和测试 210
5.10.5  系统集成和测试 210
5.11  小结 211
推荐读物 211
习题 211
实习题 217
第6章  进程和操作系统 218
6.1  引言 218
6.2  多任务和多进程 219
6.2.1  多速率系统 220
6.2.2  早期多任务技术:协同例程 221
6.3  进程 222
6.4  文境切换 224
6.4.1  协作多任务处理 224
6.4.2  抢先式多任务处理 227
6.4.3  进程和面向对象设计 228
6.5  操作系统 228
6.5.1  进程状态和进程调度 229
6.5.2  操作系统结构 230
6.5.3  进程中的计时需求 231
6.5.4  进程间通信 233
6.5.5  操作系统的其他功能 236
6.6  调度策略 237
6.6.1  单一速率调度 237
6.6.2  期限最近者优先调度 241
6.6.3  RMS和EDF比较 244
6.6.4  对建模假设的进一步分析 244
6.6.5  其他POSIX调度策略 246
6.7  进程间通信机制 246
6.7.1  信号 246
6.7.2  UML中的信号 248
6.7.3  共享内存通信 248
6.7.4  基于消息的通信 250
6.8  评估操作系统的性能 251
6.9  进程的功率优化策略 253
6.10  设计示例:电话应答机 255
6.10.1  工作原理和需求 255
6.10.2  规格说明 257
6.10.3  系统体系结构 259
6.10.4  构件设计和测试 261
6.10.5  系统集成和测试 261
6.11  小结 261
推荐读物 262
习题 262
实习题 266
第7章  硬件加速器 267
7.1  引言 267
7.2  CPU和加速器 267
7.2.1  为什么使用加速器 268
7.2.2  加速器的设计 269
7.3  加速系统的设计 270
7.3.1  性能分析 270
7.3.2  系统体系结构框架 273
7.3.3  划分 275
7.3.4  调度和分配 276
7.3.5  系统集成和调试 278
7.4  设计示例:视频加速器 278
7.4.1  算法和需求 278
7.4.2  规格说明 281
7.4.3  体系结构 282
7.4.4  构件设计 283
7.4.5  系统测试 284
7.5  小结 284
推荐读物 284
习题 284
实习题 285
第8章  网络 286
8.1  引言 286
8.2  分布式嵌入体系结构 286
8.2.1  为什么使用分布式系统 287
8.2.2  网络抽象模型 287
8.2.3  硬件和软件体系结构 288
8.2.4  报文传递编程 291
8.3  嵌入式系统网络 292
8.3.1  I2C总线 292
8.3.2  CAN总线 296
8.3.3  SHARC链接端口 298
8.3.4  以太网 300
8.3.5  Myrinet 301
8.3.6  因特网 301
8.4  基于网络的设计 303
8.4.1  通信分析 303
8.4.2  系统性能分析 306
8.4.3  硬件平台设计、分配和调度 308
8.5  可达Internet系统 309
8.6  设计示例:电梯控制器 310
8.6.1  工作原理和需求 310
8.6.2  规格说明 312
8.6.3  体系结构 314
8.6.4  测试 314
8.7  小结 315
推荐读物 315
习题 315
实习题 317
第9章  系统设计技术 318
9.1  引言 318
9.2  设计方法学 318
9.2.1  为什么研究设计方法学 318
9.2.2  设计流程 319
9.3  需求分析 324
9.4  规格说明 325
9.4.1  面向控制的规格说明语言 325
9.4.2  高级规格说明 327
9.5  系统分析和体系结构设计 329
9.6  质量保证 332
9.6.1  质量保证技术 334
9.6.2  验证规格说明 335
9.6.3  设计评审 337
9.6.4  测量驱动的质量保证 338
9.7  设计示例:电话用户交换机 341
9.7.1  工作原理 341
9.7.2  系统体系结构 343
9.8  设计示例:喷墨打印机 344
9.8.1  硬件设计 346
9.8.2  软件设计 349
9.9  设计示例:个人数字助理 351
9.10  设计示例:机顶盒 353
9.11  片上系统 355
9.12  小结 357
推荐读物 357
习题 357
实习题 358
附录A  UML符号 359
附录B  硬件设计附注 363
术语表 371
参考文献 385
索引 395

教学资源推荐
作者: (美)David A. Patterson; John L. Hennessy 著
作者: (美)David A. Patterson加州大学伯克利分校John L. Hennessy 著斯坦福大学
作者: [德] 彼得·马韦德尔(Peter Marwedel) 著
参考读物推荐
作者: [美] 沃尔弗拉姆·多纳特(Wolfram Donat) 著
作者: 邱郁惠
作者: [英]姚文祥(Joseph Yiu) 著
作者: [美]阿诺德·S.伯格(Arnold S.Berger) 著