本书系统阐述了嵌入式多核系统软件开发的技术,并基于主流的Intel嵌入式多核系统给出了开发实例。全书共分为11章,分别介绍了嵌入式多核处理器的概念、嵌入式Intel多核体系结构处理器、多核处理器性能量化方法、嵌入式多核处理器移植、可用性技术、多线程开发、线程级并行优化、虚拟化和分区、多处理器优化技术、电能利用技术等内容。
嵌入式多核系统软件开发
嵌入式Intel体系结构实用指南
Software Development for Embedded Multi-core Systems
A Practical Guide Using Embedded Intel Architecture
(美) Max Domeika 著 宋廷强 等译
多核开发速成!
在嵌入式软件开发中,如何才能充分利用多核处理器呢?使用多核和虚拟化技术,可在系统中同时运行多个操作系统,这一技术可以激发嵌入式设备的潜能。通过本书可深入理解多核处理器,理解其在嵌入式应用开发过程中所面临的挑战及机遇。全书对在多核体系结构中处于领先的Intel体系结构进行了详细讲解及应用。
本书注重实践指导,并提供基本素材,帮助开发人员抓住应用多核处理器时的问题根源。对于嵌入式应用,本书通过详细的实例,逐步给出有效利用多核处理器的学习指导。
本书要点
Intel多核体系结构应用
多核处理器给嵌入式系统带来的好处
利用线程进行标量优化及并行优化
虚拟化及任务分配
嵌入式系统调试
在2006年的嵌入式系统会议的闭幕式上,Elsevier公司的策划编辑Tiffany Gasbarrini问我,是否有兴趣写一本关于嵌入式多核方面的书。我刚好在会议上发表了题为“多核SMP的开发与优化技术”的演讲,而且在前几届的嵌入式系统会议上我发表演讲并写了许多关于软件方面的论文。写书当然比演讲或发表技术论文要付出更大的精力。毋庸多言,我答应了他的请求,于是才有了这本书。我衷心希望大家能在后面的内容中找到有用的东西。
为什么写这本书
嵌入式多核软件开发是本书的主题,当然也是目前开发的主流技术。其实,多核技术不是凭空出现的,嵌入式领域也在不断变化,不断地与其他技术融合产生新的机遇。如多核技术与虚拟技术的融合使得在一个系统上可同时运行多个操作系统,每个操作系统可使用所有的处理器核,而且不会引起太大的性能降低。随着处理器芯片封装的晶体管数量的增加,内置不同功能核的多结构多核处理器不断出现。现在应该开始考虑,随着技术的不断演变,未来的机遇在哪儿?因此,本书除了探讨多核处理器外,还包含了嵌入式市场的发展趋势。
我认为接触这个题目需要一定的基础。有两个原因:一是没有一定的基础无法理解那些比较前沿的课题;二是越前沿的课题感兴趣的人越少。我曾在一家仪器设备公司与人探讨多核开发工具,话题转到了8位代码优化。我注意到了一个名叫“部分寄存器堆”的处理器问题,开始仔细讨论问题发生的原因以及处理器的内部工作流程(寄存器重命名以消除差错依赖,在无硬件支持的情况下跟踪部分寄存器的值)。我发现与我讨论的人完全被这话题迷住了,而房间里其他的人却都走开了。这更好地说明了在8位代码中部分寄存器堆确实是一个问题,有关该问题的详情可参考优化手册。
因此,我的书注重基础,而且遵循“简单化、傻瓜化”的原则:
X的最详细内容是什么?
Y的操作流程是什么?
下面我将逐步展示书中的知识以及开发中的问题,以下是本书的简要提纲:
1) 提供充足的信息,不多也不少。
2) 在应用这些知识的过程中构建出知识框架。
3) 通过研发实例,逐步引导进行嵌入式多核项目的开发。
感兴趣的读者
感兴趣的读者将包括公司内嵌入式市场部的员工,他们想在其产品中发挥多核处理器的优势;感兴趣的读者绝大部分将是嵌入式软件工程师;当然,对于不是每天都进行研发的嵌入式市场工程师及管理员来说也是非常有用的。
对于具有丰富实践经验及一定技术水平的读者来说,将会有以下收获:
对多核处理器更加深入的理解,直接面对嵌入式市场的机遇与挑战。
了解有关多核及其体系方面的复杂术语。
技术工程师还可有以下收获:
可以更好地理解单核处理器及多核处理器的优化过程。
通过详细的研发实例,一步步学会在嵌入式应用中如何使用多核处理器。
这是使用多核处理器完成手头任务的详细参考。例如,要做一个虚拟化项目,步骤是什么?需要什么样的详细资料手册?
本书注重于提供关于理论知识的实用性建议。也就是说,如果有大量的理论知识需要讨论,或需要某个领域的大量背景知识,本书只给出关于该领域的简要论述以及相关的参考书。本书将努力为多核处理器的开发者提供解决问题的关键知识点。
致谢
有许多人需要感谢,首先,我要感谢本书的编辑Rachel Roumeliotisfor。
我还要感谢对本书做出贡献的以下各位:
Jamel Tayeb编写了第9章,十分感激他在分区技术上所具有的专业知识。
Arun Raghunath编写了第8章,感谢他指出怎样执行数据流定位,并使用Intel线程检测器进行了详细的分析。还要感谢Shwetha Doss给予该章的帮助。
Markus Levy, Shay GalOn和Jeff Biers完成了第3章基准测试程序部分的输入工作。
Lori Matassa对第4章的大端和小端问题以及操作系统移植问题做了大量工作。
Clay Breshears帮助完成了第4章中工具概述部分的编写。
Harry Singh协作编写了第5章中的MySQL实例学习部分。
Bob Chesebrough完成了对第5章中的可用性部分的编写。
Lerie Kane完成了第6章的编写。
Rajshree Chabukswar编写了第10章中关于杂项用电技术的内容。
Rob Mueller完成了第10章中关于嵌入式调试的内容。
Lee Van Gundy帮助校验了本书,他的许多建议使本书更易于理解,还帮助完成了BLTK实例研究的编写工作。
Charles Roberson和Shay GalOn检查了许多章节的技术细节。
David Kreitzer, David Kanter, Jeff Meisel, Kerry Johnson和Stephen Blairchappell帮助输入并检查了本书的许多章节。
感谢Joe Wolf在本书编写上给予的支持,能在他的团队工作4年感觉十分高兴。
本书在很大意义上得益于我在工业领域20余年的工作经历,也是这段工作经验的总结,因此,必须向我的导师致谢,我要感谢我的导师Jerry Kerrick博士、Mark DeVries、Edward Page博士、Gene Tagliarini博士、Mark Smotherman博士和Andy Glew,感谢他们对我整个职业生涯的帮助。
我尤其要感谢我的妻子Michelle和我的孩子James、Caleb和Max Jr,感谢他们对我的宽容、给予的支持和所付出的爱。感谢他们允许我将个人的业余时间都用来编写本书,作为补偿我应该与他们共度一个假期。
本书译自原版Software Development for Embedded Multi-core Systems: A Practical Guide Using Embedded Intel? Architecture,并由Elsevier授权出版
多核开发速成!
在嵌入式市场领域,如何才能充分利用多核处理器呢?使用多核和虚拟化技术,允许在系统中同时运行多个操作系统,这一技术可以激发嵌入式设备的潜能。在开发嵌入式应用时,本书可以作为一本参考资料,用于深入理解多核处理器,理解其在开发过程中所面临的挑战及机遇。全书对在多核体系结构中处于领先的Intel体系结构进行了详细讲解及应用。
本书注重进行实践指导,并提供基本素材,帮助开发人员抓住应用多核处理器时的问题根源,并进行全面优化。对于嵌入式应用,本书通过详细的实例学习,逐步给出有效利用多核处理器的学习指导。
主题要点
? 英特尔多核体系结构应用
? 多核处理器给嵌入式带来的好处
? 利用线程进行标量优化及并行优化
? 虚拟化及任务分配
? 嵌入式系统调试
免费注册在线会员
新注册Newnes在线会员,可以获得4位技术前沿专家提供的可下载资源。
宋廷强 肖传伟 马兴录 高树静 译:暂无简介
当今,多核技术正飞速发展,已经广泛进入人们的生活。根据Intel公司的战略计划,在不久的将来,主流处理器的内核数量将达到100个以上,这种多核发展趋势不但对计算机领域产生巨大影响,也将对通信、消费电子、移动计算等嵌入式领域带来巨大的转变。
多核技术的出现,使得未来的软件开发及硬件平台都将逐渐转变到多核技术上。嵌入式领域正面临着该技术所带来的挑战与机遇,并不断地与其他技术相融合,推动着嵌入式系统的技术发展。随着多核技术、应用开发工具的成熟,基于多核的嵌入式系统开发正面临着新的机遇和挑战。根据市场预计,今后3~5年,Intel将没有单核,市场上对多核软件产生了迫切要求,以利用更多的内核资源。而在嵌入式技术方面,由于Intel全面引入了多核,必将促进需要高性能、超低功耗的嵌入式领域的飞速发展。
本书从多处理器的硬件结构入手,全面阐述了嵌入式多核软件开发技术,以及嵌入式多核技术与其他技术的融合,如多线程技术和虚拟化等。并基于最新的Intel嵌入式多核体系结构对嵌入式多核软件开发过程中所遇到的技术问题进行了全面阐述。全书共分为11章,分别介绍了嵌入式多核处理器的概念、嵌入式Intel多核体系结构处理器及开发技术、多核处理器性能量化方法、嵌入式多核x86处理器移植、可用性技术、多线程开发技术、虚拟化和分区、多处理器优化技术、电能利用技术等内容。本书面向当前嵌入式多核软件开发的技术前沿,对嵌入式多核软件开发过程中面临的一些技术挑战进行了全面阐述。
本书作者从事体系结构技术研究及嵌入式系统开发20余年,熟悉多种软件工具的开发,具备坚实的知识背景和实践经验。在翻译本书的过程中,我们充分体会到了作者在嵌入式多核软件开发方面有大量的积累,并认为本书的最大特色在于:
覆盖范围广书中涵盖了嵌入式多核处理器概念、体系结构等硬件基础,还包含了相关开发工具及软件开发技术,如多线程、虚拟化和分区、可用性技术等,并讲述了多核处理器的性能评价及基准测试,以及嵌入式多核处理器的电能利用技术等内容。
注重实践书中很多内容都基于实例进行讲解,在理论讲解时配以实例运行结果,通过对结果的分析,直观呈现出问题的实质,使许多枯燥的原理及技术都易于理解,而且读者也能够真正从实例中进行理解与掌握。
实用性强本书将嵌入式系统开发与多核技术相结合,基于业界领先的Intel嵌入式多核处理器,针对其中的多项技术及挑战进行展开,内容具有前瞻性和实用性。
本书的翻译工作主要由宋廷强、肖传伟、马兴录和高树静完成。其中肖传伟负责第4~6章的翻译,马兴录负责本书的前言、第7~8章的翻译,高树静负责9~11章的翻译,宋廷强负责了本书其他部分的翻译及全书的统稿工作。对于本书的出版我们首先要感谢机械工业出版社的盛东亮编辑和他的同仁们,是他们的努力促成了本书的顺利翻译与发行,使读者能够通过本书及时了解嵌入式多核软件开发技术,同时也感谢李鹏程、张朝阳、周京地、申凤兰等给予本书的核对与检查。
在本书的翻译过程中,我们力求忠实于原著,但由于译者技术和翻译水平都很有限,再加上多核技术刚刚兴起,很多词句译者一时很难把握准确,导致书中难免存在各种翻译错误,敬请读者批评指正,以便在重印时修改完善。我们的邮箱是songtq@163com,敬请赐教。
译者序
前言
致谢
第1章绪论
11写作目的
12多核处理器的出现
13多处理器系统不是一项新技术
14应用程序需要采用多线程
15软件是负担还是机遇
16什么是嵌入式
17嵌入式有何独特性
本章小结
第2章基本系统和处理器体系结构
21性能
22嵌入式Intel体系结构处理器发展历程
221Intel 186处理器
222Intel 386处理器
223Intel 486处理器
224Intel Pentium处理器
225Intel Pentium Ⅲ处理器
226Intel Pentium Ⅳ处理器
227Intel Pentium M处理器
228Intel Xeon LV及ULV双核处理器和Intel Xeon 5100系列双核处理器
229嵌入式Intel Core2双核处理器
2210Intel Xeon 5300系列四核处理器
23嵌入式系统及其处理器的发展趋势
231未来45nm工艺嵌入式处理器
232Intel Atom处理器内核
233Tolapai片上系统加速器
24x86汇编语言指导
241x86汇编基础
242提示1:关注小范围
243提示2:快速识别源操作数和目标操作数
244提示3:了解基本寄存器和存储器访问
245提示4:熟悉常用操作
246提示5:把参考手册当成好助手
247提示6:注意编译器的优化
248提示7:反汇编与源程序的相关性
249汇编实例指南
本章小结
相关阅读
第3章多核处理器与嵌入式
31采用多核处理器的目的
32多核处理器体系结构
321同构多核与异构多核
322对称多核与非对称多核
33多核处理器给嵌入式系统带来的好处
34嵌入式市场与多核处理器
341无线通信基础设施
342工业控制
343国家机关的应用
344企业基础安全
345车载娱乐
346互动终端
347语音及整合通信
348数字安全监控
349存储
3410医疗
35多核处理器的性能评价
351单核性能基准测试程序
352多核性能基准测试程序
353功耗基准测试
354应用性能评价
355嵌入式系统的性能特点
356审查基准测试程序数据
本章小结
相关阅读
第4章移植到Intel多核处理器
41移植到Intel体系结构
41132位与64位支持
412字节顺序:大端与小端
413关于BIOS和OS
42支持SMP操作系统
421基本MESI协议
422设备驱动程序和内核程序
43多核处理器开发工具的发展
431OpenMP
432自动并行化
433猜测预执行
434线程库
435图形设计工具
436调试
437性能分析工具
本章小结
相关阅读
第5章标量优化与可用性
51编译器优化
511一般优化
512高级优化
513高级优化选项
514辅助优化
52优化流程
53可用性
531诊断
532兼容性
533编译时间
534预编译头文件
535并行编译
536代码规模
537代码覆盖
538调试优化结果
本章小结
相关阅读
第6章线程级并行优化
61并行化基础知识
611线程
612分解
613可伸缩性
614并行处理的局限性
615线程技术需求
62线程开发周期
621分析
622设计与实现
623调试
624调整
本章小结
相关阅读
第7章案例研究:数据分解
71案例概述
72构建过程
73分析
74设计和实现
75调试
76调整
本章小结
第8章案例研究:功能分解
81Snort
811程序简介
812构建过程
82分析
821串行优化
822基准
823串行优化结果
824执行时间分析
825函数调用关系图
83设计与实现
831线程化Snort
832代码修改
833流定位
834流定位的代码修改
84Snort调试
85调整
本章小结
第9章虚拟化和分区
91概述
92虚拟化和分区
921VMM体系结构
922虚拟化的应用模型和优点
923电信/嵌入式领域中的应用前景
93技术和设计因素
94虚拟化的电信实例
941建立和配置BKM
942计算和网络I/O性能
本章小结
相关阅读
第10章迎接低功耗Intel体系结构
101体系结构
1011顺序执行
1012节能软件的多种技术
102嵌入式系统调试
1021嵌入式系统调试历史概述
1022JTAG和嵌入式调试未来发展趋势
1023硬件平台的构建
1024操作系统和设备驱动程序调试
1025应用程序调试
1026多核调试的考虑因素
本章小结
第11章总结、趋势和结论
111发展趋势
1111处理器发展趋势
1112软件挑战
1113带宽挑战
112结论
附录
术语表