(计算机应用技术专业论文)嵌入式多核编译器研究与开发.pdf_第1页
(计算机应用技术专业论文)嵌入式多核编译器研究与开发.pdf_第2页
(计算机应用技术专业论文)嵌入式多核编译器研究与开发.pdf_第3页
(计算机应用技术专业论文)嵌入式多核编译器研究与开发.pdf_第4页
(计算机应用技术专业论文)嵌入式多核编译器研究与开发.pdf_第5页
已阅读5页,还剩65页未读 继续免费阅读

(计算机应用技术专业论文)嵌入式多核编译器研究与开发.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硕士论文 嵌入式多核编译器研究与开发 摘要 随着集成电路物理极限的到来,单单通过提高处理器速度来提高计算能力的方法 已越来越困难。所以通过增加处理器( 或运算部件) 个数来补偿单个处理器运算能力 的不足,成为满足不断增长的运算能力需求最有希望的选择。多核设计的优点是在频 率不变的情况下让处理器的性能获得明显提升,这一点将是未来嵌入式系统的发展趋 势。为了尽可能减少程序员针对多核系统编写多线程程序的难度和复杂性以及利用大 量的现存代码,将串行程序进行并行化编译处理将是一个很有前途的解决方法。 本文针对在嵌入式系统中广泛使用s p m 提高s o c 存储子系统的性能,介绍了一 种基于s p m 的多核嵌入式系统循环调度算法,它能够尽量使分配到各个处理器上的 循环迭代空间的执行时间保持一致。为了进一步地发掘嵌套循环的并行性和数据访问 的时间局部性,对算法增加了一个线性循环变换的功能模块来进行改进。为了提高嵌 套循环中数组访问c a c h e 局部性,提高c a c h e 命中率,通过编译优化方法的两种主要 手段是循环变换和数据变换,本文将改进后的循环调度算法与一种基于投影分层技术 的数据变换算法进行结合,最终形成一个通过有效提高s p m 使用率从而加快嵌入式 多核应用程序执行效率的解决方案。 最后,用c 抖语言实现了本文所给出的解决方案,开发了一个适用于嵌入式多核 的编译系统,并且通过实验证明给出的解决方案能够有效提高应用程序的执行效率。 关键字:嵌入式多核,程序并行化,数据局部性,片上存储器,循环调度 a b s t r a c t w i t ht h ea d v e n to fi n t e g r a t e dc i r c u i t sp h y s i c a ll i m i t s ,s i m p l yb yi n c r e a s i n gp r o c e s s o r s p e e dt oi m p r o v et h em e t h o do fc a l c u l a t i n gc a p a c i t yh a sb e c a m ei n c r e a s i n g l yd i f f i c u l t t h e r e f o r e ,c o m p e n s a t e dt h ed e f i c i e n c yo ft h es i n g l ep r o c e s s o rc o m p u t i n gc a p a c i t yb y i n c r e a s i n gt h ep r o c e s s o r ( o rc o m p u t i n gc o m p o n e n t s ) n u m b e r ,b e c o m e st h em o s th o p e f u l c h o i c ew h i c hs a t i s f i e st h eg r o w i n gd e m a n df o rc o m p u t i n gc a p a c i t y t h em u l t i p l e - c o r e d e s i g n sm e r i tl e t sp r o c e s s o r sp e r f o r m a n c ei nt h ef r e q u e n c yi n v a r i a b l es i t u a t i o no b t a i nt h e o b v i o u sp r o m o t i o n ,t h i sw i l lb et h ef u t u r et r e n do ft h ed e v e l o p m e n to fe m b e d d e ds y s t e m s i no r d e rt or e d u c ed i f f i c u l t ya n dc o m p l e x i t yt h a tap r o g r a m m e rw r i t e sm u l t i t h r e a d p r o c e d u r e sa sm u c ha sp o s s i b l ea n du t i l i z eal a r g en u m b e ro fo p e ns o u r c ec o d e s ,s e r i a l p r o c e d u r e sc o n d u c t e dp a r a l l e lh a n d l i n gw i l lb eap r o m i s i n gs o l u t i o n t h i sp a p e rf o c u s e so nw i d e l yu s e f u ls p mi nt h ee m b e d d e ds y s t e mt oi m p r o v et h e p e r f o r m a n c eo fs t o r a g es u b s y s t e m so fs o ca n di n t r o d u c e d aa l g o r i t h mt h a ti ss p m c o n s c i o u sl o o ps c h e d u l i n gf o re m b e d d e dc h i pm u l t i p r o c e s s o r s ,i tc a l lc a u s ea sm u c ha s p o s s i b l et h a te a c hp r o c e s s o r so nc i r c u l a t i o ni t e r a t i o ns p a c ee x e c u t i o nt i m ei se q u a l t o f u r t h e re x c a v a t et h en e s t i n gl o o pp a r a l l e l i s ma n dt h ed a t aa c c e s s t i m el o c a l i t y ,al i n e a r i t y c y c l i ct r a n s f o r m a t i o nf u n c t i o n a lm o d u l ei s u s e dt o i m p r o v et h ea l g o r i t h m i no r d e rt o e n h a n c et h ea r r a yi nt h en e s t i n gl o o pl o c a l i t ya n di m p r o v ec a c h eh i tr a t e ,t h et w op r i n c i p a l m e a n so ft h ec o m p i l eo p t i m i z a t i o nm e t h o da r et h ec y c l i ct r a n s f o r m a t i o na n dt h ed a t a c o n v e r s i o n t h e r e f o r e ,t h i sp a p e rp r e s e n t st h es o l u t i o nt h a tc a l le f f e c t i v e l yi m p r o v es p m u t i l i z a t i o nr a t e ,a n ds p e e du pt h ee m b e d d e dm u l t i p r o c e s s o r sa p p l i c a t i o n s ,b yu s i n gt h e i m p r o v e dl o o ps c h e d u l i n ga n d ap r o j e c t i o n - d e l a m i n a t i o nt e c h n i q u e f i n a l l y t h e s o l u t i o n b y t h i s p a p e r i si m p l e m e n t e dw i t hc + + l a n g u a g e a m u l t i p r o c e s s o r sf o re m b e d d e ds y s t e m sc o m p i l e rh a sb e e nd e v e l o p e d ,a n de x p e r i m e n t s s h o wt h a tt h es o l u t i o ni sa b l et oe f f e c t i v e l yi m p r o v et h ee f f i c i e n c yo fa p p l i c a t i o n k e y w o r d :m u l t i p r o c e s s o r se m b e d d e ds y s t e m ,p r o g r a mp a r a l l e l i z a t i o n ,d a t al o c a l i t y , s c r a t c h p a dm e m o r y ,l o o ps c h e d u l i n g i i 声明 本学位论文是我在导师的指导下取得的研究成果,尽我所知,在本学 位论文中,除了加以标注和致谢的部分外,不包含其他人已经发表或公布 过的研究成果,也不包含我为获得任何教育机构的学位或学历而使用过的 材料。与我一同工作的同事对本学位论文做出的贡献均已在论文中作了明 确的说明。 学位论文使用授权声明 南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅或上 网公布本学位论文的部分或全部内容,可以向有关部门或机构送交并授权 其保存、借阅或上网公布本学位论文的部分或全部内容。对于保密论文, 按保密的有关规定和程序处理。 研究生签名: 础喇月多日 硕士论文 嵌入式多核编译器研究与开发 1 绪论 1 1 课题来源 随着i n t e m e t 的普及,我们已经进入了网络时代,进入了后p c 时代。后p c 时代的一 大特点是出现了信息电器,如掌上电脑、个人数字助理( p d a ) 、第二代身份证、可 视电话、电视机顶盒、车载导航系统、移动电话和数码相机等嵌入式设备。在可预见的 将来,人们对嵌入式设备的性能必然会提出更高的要求。人们提高性能的一个最直接的 方法就是使用更快的处理器,但基于现在的技术,随着集成电路物理极限的到来,单单 通过提高处理器速度来提高计算能力的方法已越来越困难,所以通过增加处理器( 或运 算部件) 个数来补偿单个处理器运算能力的不足,也就是采用并行计算能力,成为满足 不断增长的运算能力需求最有希望的选择,把多个c p u 内核封装在一个芯片里这一实用 方法能够让c p u 厂商在能够提供更强大的处理器的同时规避了加速频率的诸多障碍。在 嵌入式设备市场中占据领先地位的a r m 公司最新推出的a r m l1m p c o r e 多核处理器、多 核的x b o x 3 6 0 、p s 3 预示着多核时代,并发时代的来临。 多核设计的优点是在频率不变的情况下让处理器的性能获得明显提升,在多任务应 用中拥有良好的表现,这一点很适合未来家庭消费电子的需要。例如,电视机项盒在录 制多个频道电视节目的同时,还可以通过因特网收看数字视频点播节目、车内导航系统 在提供导航功能的同时,仍然有余力可以向后座乘客播放各类视频娱乐节目。然而这对 软件开发人员提出了一个巨大的挑战,如果程序员不是针对多核处理器的特点,以新的、 多线程的方式撰写应用程序,则无法从这种体系结构中获得一分一毫的好处。对于大多 数程序员来说,这绝对不是一个好消息,编写多线程程序的难度和复杂性远高于单线程 程序,而且很容易出错。这种思想方法的变迁,不仅本身是一个巨大的挑战,而且还会 使一些多年来行之有效的经验立即过时。对于商业公司来说,问题可能更严重,大量的 现存代码将无法享受多核处理器带来的性能提升。i n t e l 公司对此的回答是编译器自动并 行化,也就是将程序进行并行化编译处理,并在p c 机上取得了良好的效果。并行化编译 是串行程序并行化的有效工具,它结合相关性分析发现串行程序中有并行性的程序段并 施以合法的并行化变换,从而能使此程序段并行执行。 1 2 选题背景及当前研究现状 并行化编译的研究始于7 0 年代末,起因是7 0 年代中期,世界上推出第一台并行 机i l l i a ci v 后给用户编程带来的困难。最近十多年来,国内外纷纷研制并行编译系统。 1 绪论 硕士论文 在国外,s u i f 5 s ,p o l 撕s 【5 9 等都是国际著名的的自动并行编译系统。在国内开发的自 动并行编译系统有中科院计算所开发的p o r t 、a u t o p a r ,国防科技大学的k d p a s t e 系统、复旦大学开发的面向共享存储器并行机的并行优化编译器a f t 等系统。 虽然自动并行编译为充分发挥并行计算环境不断增强的计算能力提供了一条重要 的途径,但设计自动并行化系统十分复杂。自动并行编译牵涉到数据依赖关系分析,程 序变换,数据分布及调度等许多技术p 。循环体中的依赖关系分析和过程间依赖关系分 析的质量决定了数据并行性和任务并行性的开发程序,多年来,它们一直是研究的热点。 循环占用了串行程序的绝大部分执行时间,因此,对循环体的依赖关系分析一直最受关 注的,早期的工作主要集中于数组是线性下标的精确方法和运行速度足够快的近似方 法,分析也都是静态的。因此,在大多数情况下只能得到保守的结果。o m e g a t e s t 6 0 】使 用整数规划,综合得到了速度快且精确的结果。r a n g et e s t 6 1 j 突破了线性下标的限制。 r p d ( r e d u c t i o np r i v a t i z i n gd o a l l ) t e s t 和l r p d ( i a z yr e d u c t i o np r i v a t i z i n gd o a l l ) t e s t 6 2 j 对依 赖于输入、静态所不能确定依赖关系的循环进行了动态并行化。为了开发大粒度并行性 以及全程优化,需要利用过程间依赖关系分析技术。过程繁衍技术【6 3 】提高了过程间依赖 关系分析的精度和效率。流敏感的过程间数据流分析框架的引入,使得分析的精度和效 率及可分析的程序的大小都得到了提高。精确而又易于操作的数组表示,为精确的过程 间的数组引用分析奠定了基础。数组私有化、归约操作并行化和广义归纳变量替换是开 发并行性最重要的程序转换技术。标量或数组的私有化是指将标量或数组的拷贝分配于 每一个处理节点,私有化可以消除循反依赖和输出依赖,开发并行性。标量的私有化技 术已被普遍采用,而由于确认可私有化数组的复杂性,数组私有化技术还未被普遍采用。 归约变量x 是指循环体中这样的一个变量,它出现在形如广= x o e x p 的结合操作中,其 中0 是结合操作符,并且x 不出现在表达式e x p 或循环的其他位置。归约变量引起的数 据依赖妨碍了循环的并行性开发,归约变换可删除由归约操作所引起的数据依赖。循环 中的数组下标经常使用形如v = vo pk ( 其中k 的值是循环不变式) 归纳变量的值,称 为广义归纳变量。这样的递归赋值引起跨迭代数据依赖。如果能将归纳变量的值表达为 循环索引的函数,即可删除由此引起的数据依赖,对广义归纳变量的识别和替换并不困 难。它所引起的问题主要是替换后常常会引入非线性表达式,需要使用相应的非线性依 赖分析方法,如前面提到的r a n g et e s t ,才能分析依赖关系。数据分布的选择依赖于目 标机器、问题大小以及可用的处理器数量。一般情况下,这是n p 难题。k r e m e r 等人指 出,利用最新的0 1 整数规划技术可以有效地求这些n p 难题的优化解【6 4 1 。g u o 等人从无 通信的分布入手,研究了线性数据分布的问题【65 。为了回避分布内存系统的数据分布的 复杂性,c o x 等人研究了将软件分布共享内存作为分布内存系统并行编译的目标的可能 性【6 6 1 。并行编译中的调度研究是如何分配给处理器一个作业的任务,以使得作业的执行 时间最短。这个工作一般由编译系统和运行环境负责,在编译时刻进行的调度工作称为 硕士论文 嵌入式多核编译器研究与开发 静态调度,在运行时刻进行的调度工作称为动态调度。静态调度已有很多研究成果,但 由于在很多情况下程序任务图的计算粒度和通信代价只有在程序运行时才知道,如循环 结点的迭代次数,因此,根据运行时的粒度大小和通信代价进行动态调度很受重视。v o s s 等人研究了动态决定单个循环的串并行问题【6 。n g u y e n 等人研究了整个程序的执行过程 中自动调节处理器分配数量以最大化加速比的问题【6 8 1 。由于工作站网络的可用性、廉价 性和不可独占性,b l u m o f e 等人研究了工作站网络的动态调度【6 引。 嵌入式多核应用程序的并行编译技术得益于3 0 多年来在高性能并行计算领域中研 究人员对并行编译技术的大量研究,使得它能够大量借鉴已有的并行编译技术,而不需 要重新进行研究。嵌入式系统是计算能力和数据存储能力等资源受限的计算机系统,其 外形、尺寸、功能、功耗等都受限于应用对象的设计需求,因而不可能有一个标准化的 设计。相应的并行编译技术也需要根据具体的目标机来进行研究,也就是在已有的高性 能计算领域并行编译技术的基础上,根据目标机的某个主要性能进行相应的并行编译技 术研究。如文献 3 8 中提出了一个能够将需要备份的数据存放在已经失效的数据存储空 间的方法,从而大大提高了存储器的利用效率以及程序的可靠性。而文献 4 1 】中作者提 出了另外一种方法来利用多核处理器中的处于空闲状态的处理器,对正在进行的运算进 行备份,这样就可以提高应对瞬时错误的能力,加强系统可靠性。针对嵌入式系统中 能量消耗问题,文献【4 3 】提出了一个称为基于编译器的指令缓存预测策略,它能够减少 指令缓存对能量的消耗。在其它方面,文献【3 6 】提出了一种将在单处理器芯片获得成功 的指令级并行化技术一软件流水线技术( s w p ,s o f t w a r e p i p e l i n i n g ) 移植到多处理器芯片 上的技术。 利用并行编译技术将已有的串行代码直接并行化是并行化应用程序最理想的方法, 它将程序员从繁重的将代码手工并行化的劳动中解放出来。这种策略是在串行语言基础 上扩充显式开发并行性的成份。其一是扩充并行编译指导命令( 一般采用带关键字的注 释行的形式) 。在这种情况下,并行程序设计是由程序员或由并行编译系统自动地或交 互地在串行程序中插入编译指导命令。如果输入为串行程序,则编译器可以称为全自动 并行编译器。如果输入为带编译指导命令的串行程序,则编译器称为半自动并行编译器。 自动并行编译要比半自动并行编译困难很多,主要是因为编译器难以确定较好的数据分 布和计算分割方式。通过加入并行编译指导命令,程序员可以把一些编译器难以确定的 信息告诉编译器,使编译器能够生成高效的并行目标代码。目前大多数研究并行编译的 小组都在研究半自动的并行编译,把编译器难以确定或确定不好的些问题留给程序 员:其二是扩充并行语句。在这种情况下,程序员用原有的串行语言成份和扩充的显式 表达并行性的语言成份来编写并行程序或对已有的串行程序进行扩充【2 4 1 。 为了开发更加实用和强大的自动并行化系统,还特别需要在以下几个方面加以研究 【5 7 】:开发通用的编译器研究平台,编译技术如果脱离了编译器是没有意义的,为了使新 硕士论文 的编译技术能容易地集成于编译器上,以便测试和评价其性能,从而提高编译器技术的 研究质量及加快研究的进展,需要可靠的模块、独立的编译器平台;收集大量的与实际 应用有关的测试程序,测试编译技术离不开测试程序,能够很好地刻画实际程序性质的 测试程序对推进编译器技术的发展具有不可取代的作用;开发高效的编译算法,为了将 编译器的运行时间限制在可接受的范围内,包括依赖关系分析问题、多种循环重构技术 的选择使用和组合问题、数据分布的选择、通信的优化、任务粒度的动态控制等问题, 都需要更高效的算法处理,可以考虑采用并行算法。 1 3 本文的主要内容及组织结构 本文针对在嵌入式系统中广泛使用s p m 提高s o c 存储子系统的性能,介绍了一种 基于s p m 的多核嵌入式系统循环调度算法,以及通过对程序进行c a c h e 局部性优提高 嵌入式应用程序的执行性能的数据变换算法。通过它们的优势和不足,本文对结合这 两种算法共同对多核嵌入式应用程序进行并行化处理,提高程序的执行效率进行了讨 论。 全文共分为六章,分别了介绍嵌入式系统的特点和并行编译技术的基础理论,以 及当前对多核嵌入式应用程序并行编译技术的研究现状。然后重点介绍本文所涉及和 实现的算法。 第一章阐述课题的研究意义及当前的研究现状,并给出了本文的组织结构。 第二章首先介绍了编译程序的相关概念以及构成,然后描述了嵌入式系统的定 义、分类以及发展趋势,和当前单核嵌入式系统编译技术的研究现状。 第三章首先详细介绍了当前在嵌入式多核程序并行化技术领域中研究现状。随后 介绍了数据依赖关系分析和程序并行化理论,重点是关于循环的依赖关系测试和循环 重构技术。 第四章首先介绍了基于投影分层技术的数据变换算法。然后在基于s p m 的嵌入式 多核循环调度算法的基础上增加一个线性循环变换的功能模块。随后,将改进后的循环 调度算法与数据变换算法进行结合,最终形成一个通过有效提高s p m 使用率从而加快嵌 入式多核应用程序执行效率的解决方案。 第五章用第四章提出的程序并行化解决方案开发一个适用于嵌入式多核的编译 系统,最后通过实验证实解决方案能够有效提高程序的执行效率。 第六章对本文的工作进行了总结,并对下一步将要进行的研究方向提出了一些自 己的看法。 硕士论文嵌入式多核编译器研究与开发 2 嵌入式系统编译技术概述 2 1 编译技术及嵌入式系统 2 1 1 编译程序 从功能上看,一个编译程序就是一个语言翻译程序。语言翻译程序把一种语言( 称 作源语言) 书写的程序翻译成另一种语言( 称作目标语言) 的等价程序。如果源语言是 诸如f o r t r a n 、c 、p a s c a l 、a d a 、s m a u t a l k 或j a v a 这样的“高级语言”,而目标语言 如汇编语言之类的“低级语言”,这样的翻译程序则称之为编译程序【l 】。编译进程的六 个基本阶段:词法分析,语法分析,语义分析,中间代码生成,编译优化,目标代码生 成。 ( 1 ) 词法分析【2 】:通过对逐字符地读取输入,并将字符分组为独立的单词和符号来 开始对源程序的分析。这些单词和符号被称为词法记号,代表基本的程序实体,如标识 符、整数、保留字、分隔符等。词法分析是为输入产生高级解释的若干步骤中的第一步。 词法记号被编码( 例如,编码为整数) 并随后传递给语法分析器进行语法分析。有时组 成词法记号的实际字符串( 或者指向存储所有标识符文本的字符串空间的指针) 也被一 同传递以便由语义例程随后使用。 ( 2 ) 语法分析【2 】:给定一个形式语法规范( 典型情况下以上下文无关文法 ( c o n t e x t f r e eg r a m m a r ,c f g ) 的形式提供) ,语法分析器读入词法记号并将它们按照所使 用的c f g 产生式的规定分组为单元。语法分析器在典型情况下由表进行驱动。进行语法 分析时,语法分析器难程序是否正确,如果发现语法错误,则显示适当的诊断信息。它 也能够修复错误( 以形成语法上有效的程序) 。在许多情况下,语法错误恢复或修复能 够通过查阅由语法分析器生成器或修复生成器所创建的错误修复表来自动完成。在识别 语法结构的同时,语法分析器可以直接调用相应的主义例程,或者构造语法树,即该结 构的表示,用来在这棵树被完整构造后驱动语义处理。 ( 3 ) 语义分析【2 】:语义分析执行两种功能。首先,检查每个结构的静态语义。即, 验证结构是合法的和有意义的( 其中涉及的变量是已定义的,类型是正确的,等等) 。 如果结构是语义上正确的,语义分析也进行实际的翻译。即,生成正确实现该结构的中 间表示( i n t e r m e d i a t er e p r e s e n t a t i o n ,取) 代码。保持语义分析的检查和翻译组件的独立通常 是有用的。语义检查首先完成,它由源语言的语义规则单独控制。i r 生成则受源语言语 义( 生成的m 代码必须正确实现语言结构) 和目标机器( i r 代码的选择可能反映所期望 的目标机器的能力) 两者的共同影响。如果这两种组件是清晰分离的,则让一个编译器 为不同的目标机器生成代码的工作就会被简化,因为仅有承生成( 的- d , 部分) 和目标 2 嵌入式系统编译技术概述 硕士论文 代码生成( 的大部分) 是与机器相关的。 ( 4 ) 中间代码的产生:在语法分析和语义分析进行之后,编译程序将源程序翻译 成中间代码。一般而言,中间代码是一种独立于具体硬件的记号系统,它与计算机的指 令形式有某种程度的接近,或者能比较容易地变成计算机的机器指令。中间代码有四元 式、三元式、间接三元式、逆波兰记号、树形表示等。 ( 5 ) 编译优化:优化的任务在于对前端产生的中间代码进行加工,以期在最后阶 段产生为更为高效( 时间和空间两个方面) 的代码,优化所遵循的原则是程序的等价变 换规则,主要技术有:删除多余运算、代码外提、强度削弱、变换循环控制条件、合并 已知量与复写传播、删除无用赋值。 ( 6 ) 目标代码生成:这一阶段的任务是把中间代码( 或经优化处理后) 变换成特 定机器上绝对指令代码或可重定位的指令代码。它的工作与硬件系统的结构和指令的含 义有关。 上述编译过程的六个阶段的任务,可以分别由六个模块完成,它们称作词法分析程 序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成 程序。此外,一个完整的编译程序还必须包括“表格管理程序”和“出错处理程序”。 图2 1 1 1 给出了一个典型的编译程序结构框架图。 源程序 目标程序 图2 1 1 1 编译程序结构框架图 表格管理和出错处理与上述六个阶段都有联系。编译过程中源程序的各种信息被保 存在各种不同的表格中,编译各阶段的工作都涉及到构造、查找或更新有关的表格,因 此需要有表格管理的工作。如果编译过程中发现源程序有错误,编译程序应报告错误的 性质和错误发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程 序的其余部分能继续被编译下去,有些编译程序还能自动校正错误,这些工作由出错处 硕士论文嵌入式多核编译器研究与开发 理程序完成i l j 。 2 1 2 嵌入式系统概念及特点 嵌入式系统最初于二十世纪六十年代晚期在通讯中被用于控制机电电话交换机。当 时的嵌入式系统很多都不采用操作系统,它们只是为了实现某个控制功能,使用一个简 单的循环控制对外界的控制请求进行处理。但随着计算机产业的巨大发展,嵌入式系统 的应用越来越复杂而且应用的范围也越来越广泛,相应的嵌入式技术也不断地被发展创 新。嵌入式技术的发展主要有4 个阶段:以单芯片为核心的可编程控制器形式的系统、 以嵌入式c p u 为基础,以简单操作系统为核心的嵌入式系统、以嵌入式操作系统为标志 的嵌入式系统、以i n t e r n e t 为标志的嵌入式系统。 嵌入式系统与我们日常生活中使用的通用计算机一样也是一种计算机系统,也具有 一个计算机系统的一般特点,拥有中央处理器、存储设备、输入输出设备以及外部接口 等。但是嵌入式系统与通用计算机系统又有明显的不同,它服务于所嵌入的应用对象, 其功能、可靠性、成本、尺寸及功耗等方面受到应用需求及应用对象的制约。从嵌入式 系统所运行的软件看,嵌入式系统的软件固化在硬件系统中,与硬件形成一个不可分割 的整体。它所执行的功能也是面向特定的应用,同一个嵌入式硬件系统一般很难采用更 改软件的方法用于其他领域。这就意味着,嵌入式系统是一种专用的计算机系统,不可 能像通用计算机那样只要更改应用软件就可以适应不同的应用,其软硬件系统的设计应 根据需要量体裁衣,去除冗余,降低成本。也就是说,从资源的使用角度看,嵌入式计 算机系统是计算能力和数据存储能力等资源受限的计算机系统,其外形、尺寸、功能、 功耗等都受限于应用对象的设计需求,因而不可能有一个标准化的设计。嵌入式系统最 大的特点也就在于此,其系统构成多种多样,需要根据具体应用量身定制【3 1 。 嵌入式系统的定义有许多书籍和文献分别给出了自己的阐述,在i e e e 中嵌入式系统 是“用于控制、监视或者辅助操作机器和设备的装置 。而一般定义为:嵌入式系统是 一个具有特定功能或用途的计算机软硬件综合体,即以应用为中心、以计算机技术为基 础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专 用计算机系统。简言之,嵌入式系统就是嵌入到对象体中的一种专用计算机系统。它是 将先进的计算机技术、半导体技术、电子技术和各个行业的具体应用相结合后的产物, 这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系 统。 嵌入式系统可以分成以下三种类型4 j : ( 1 ) 小型嵌入式系统 这些系统是采用一个8 位或者1 6 位的微控制器设计的:硬件和软件复杂度很小,需 要进行板级设计。它们甚至是可以是电池驱动的。当为这些系统开发嵌入式软件时,主 7 2 嵌入式系统编译技术概述 硕士论文 要的编程工具是所使用的微控制器或者处理器专用的编辑器、汇编器和交叉汇编器。通 常利用c 语言来开发这些系统。c 程序被编译为汇编程序,然后将可执行代码存放到系 统存储器的适当位置上,为了满足系统连续运行时的功耗限制,软件必须放置在存储器 中。 ( 2 ) 中型嵌入式系统 这些系统是采用一个1 6 位或者3 2 位的微控制器、d s p 或者精简指令计算机( p d s c ) 设 计的;硬件和软件复杂度都比较大。对于复杂的软件设计,可以使用如下的编程工具: r t o s 、源代码设计工具、模拟器、调试器和集成开发环境。软件工具还提供了硬件复 杂性的解决方法。汇编器作为编程工具来说用处不大。这些系统还可以运用已有的a s s p 和口来完成各种功能,例如总线接口、加密、解密、离散余弦变换和逆变换、t c p i p 协 议栈和网络连接功能。 ( 3 ) 复杂嵌入式系统 复杂嵌入式系统的软件和硬件都非常复杂,需要可升级的处理器或者可配置的处理 器和可编程逻辑阵列。它们用于边缘应用,在这些应用中,需要硬件和软件协同设计, 并且都集成到最终的系统中,然而,它们却受到硬件单元所提供的处理速度的限制。为 了节约时间并提高运行速度,可以在硬件中实现一定的软件功能,例如加密和解密算法、 离散余弦变换和逆变换算法、t c p i p 协议栈和网络驱动程序功能。系统中某些硬件资源 的功能也可以用软件来实现。这些系统的开发工具要么十分昂贵,要么根本就不存在。 有时候,必须为这些系统开发编译或者可重定目标的编译器( 可重定目标的编译器,就 是一种可以根据系统中给定的目标配置进行配置的编译器) 。 随着以计算机技术、通信技术和软件技术为核心的信息技术的迅猛发展,嵌入式技 术在各个领域得到了广泛的应用,在市场的推动下,出现了一些的发展趋势【3 】: 1 嵌入式系统硬件集成化发展 将整个嵌入式系统集成整合在一个芯片上,即所谓的片上系统( s o c ) ,已经由于微 电子技术与集成电路工艺技术的不断发展和集成度的大幅提高而成为现实。s o c 作为系 统级集成电路,能在单一硅芯片上实现信号采集、转换、存储、处理和f o 等功能,将 数字电路、存储器、m p u 、m c u 、d s p 等集成在一块芯片上实现一个完整系统的功能。 随着现场可编程技术的发展,用户可以根据需要动态地配置s o c 的功能。更强大的功能、 更低的成本、更小的产品体积、更好的可靠性和更灵活的配置,使得s o c 成为新一代应 用电子技术的核心,它是当今超大规模集成电路发展的趋势年1 3 2 1 世纪集成电路技术的主 流。 2 嵌入式操作系统得到快速发展 嵌入式操作系统是随着嵌入式系统的发展而出现的,它作为一个嵌入式系统的核心 是毋庸置疑的,也是嵌入式处理器性能和硬件复杂度提高的必然结果。嵌入式操作系统 硕士论文 嵌入式多核编译器研究与开发 的出现,大大提高了嵌入式系统开发的效率,改变了以前只能针对具体的应用具体设计, 软件不能重复利用的历史。随着高性能的3 2 位嵌入式处理器,尤其是3 2 位的s o c 处理器 在嵌入式领域得到广泛应用,嵌入式操作系统也随之得到了快速发展。现在的嵌入式操 作系统已从简单的任务调度内核发展为具有各种丰富功能的嵌入式操作系统。当前嵌入 式操作系统的发展趋势是强调高可靠性、强实时性,采用构件组件化技术增加操作系统 的可配置性、可裁剪性和可移植性。 3 软件开发环境集成化、智能化和图形化 目前,嵌入式软件工具向着集成化,智能化和图形化的方向发展,其使用越来越简 单,功能越来越强大,自动化程序越来越高。这是由于在激烈的市场竞争下,许多公司 由于市场的压力,要求在尽可能短的时间内将产品开发出来。因此,能否使用优秀的软 件开发工具,提高软件的开发效率,成为影响嵌入式系统开发的一个重要因素。 4 与网络及通信的结合是嵌入式技术的未来 i n t e m e t 是2 0 世纪人类最伟大的发明之一,网络与通信的结合为人类提供了更强有力 的通信手段,人们不仅可以使用电话、信件和传真等传统的通信手段进行通信,也能通 过电子邮件,即时通讯工具和网络视频电话与异地的亲朋好友进行文字、声音以及视频 的交流。随着各种各样的新型嵌入式设备的涌现,人们获得了能够不使用p c 机访问互联 网的能力,仅使用手机、p d a 和机顶盒等嵌入式设备就能够上网访问与处理信息。随着 网络、通信( 特别是无线通信) 和多媒体技术与嵌入式技术的相互融合、互相促进与发 展,种类繁多的新型嵌入式设备必将给人类带来更好快捷性和便利性。 5 l i n u x 和j a v a 技术对嵌入式软件的发展产生深远影响 l i n u x 凭借其开放性、模块化、出色的执行效率和稳定性以及来自全世界自由软件 爱好者的技术支持,成为嵌入式操作系统开发的重要参考平台。以l i n u x 为基础的嵌入 式软件平台将在未来扮演越越重要的角色。号称“一次编写,到处运行的j a v a 随着 j 2 m e 技术的目趋成熟,也将对嵌入式软件的发展产生深远的影响。 2 1 3 交叉编译系统简介 在嵌入式应用开发技术发展的早期,嵌入式系统的软件开发是相当艰难的。这时采 用的开发方法往往是最原始的崩溃与烧铝j j ( c r a s ha n db u r n ) 的方法。开发人员先在宿主机 上编写完成程序代码,并用编译连接生成可以直接烧制到目标机的目标码。目标码通常 需要通过专用的烧制设备固化到目标机上,固化完成后再启动目标机运行,观察其执行 结果是否正确。一旦发现执行崩溃,需要重复上述步骤,直到目标机的执行结果正确为 止。这种开发的不足之处在于烧制代码需要较长的时间,有的还要先擦除再烧制,则需 要更长的时间,反复烧制执行代码,不仅消耗大量的开发时间,而且容易缩短芯片的使 用寿命;错误往往不能直接定位,只能通过执行时硬件的某些输出结果猜测可能的错误, 9 2 嵌入式系统编译技术概述硕士论文 从而导致修改代码也带有一定的盲目性,进一步增加猜测和烧制的次数,如此恶性循环; 浇制执行代码时,往往还需要专用的擦除、烧制设备。这些换来的都是开发效率极其低 下的结果。 所谓的交叉开发方式,就是指采用宿主机开发、宿主机与目标机之间交叉调试、目 标机运行的开发方式。进行交叉开发的先决条件是,除了必须具备交叉编译器以外,还 必须具备交叉调试器。 交叉编译器,又叫做跨平台编译器,就是程序代码经过它编译后产生的执行代码并 不是为了在本机或与本机类似的系统上直接运行,而是为了提供给其他的系统或平台予 以执行。 交叉调试器根据交叉编译器生成的调试信息,通过宿主机与目标机之间信息或命令 的交互,不仅可以控制目标代码在目标机上执行的每一步骤,而且可以获得每一步的执 行效果或结果信息,用以判断执行的正确性。 现代的嵌入式系统的软件开发绝大多数采用交叉开发方式。之所以如此,主要是由 嵌入式系统的硬件资源所决定的。嵌入式设备大多功能专一、针对性强,这就决定了它 的硬件资源一般不会也没有必要像计算机一样丰富,有的甚至连任何显示都没有。如果 不采用交叉开发方式,即使软件编码完成并编译成执行代码后,放到这样的嵌入式设备 上运行,软件人员难以得知其运行的正确性;就算知道有错误发生,也难以定位错误, 这样必然会导致产品的研发周期延长,产品的开发成本成倍增加。另外,个人计算机、 工作站等通常都有通用操作系统的支持,并拥有其他许多软件资源,而嵌入式系统一般 都是裸机,没有任何软件资源。所以,只有采用交叉开发的方式,才有利于嵌入式软件 的调试,从而缩短开发周期,提高软件可靠性。 2 2 嵌入式系统编译技术的研究现状 嵌入式系统是针对具体应用的专用系统,一般具有成本敏感性,它的硬件和软件都 必须高效率设计,量体裁衣、去除冗除,力争在同样的硅片面积实现更高的性能。好的 嵌入式系统是完成目标功能的最小系统。嵌入式系统本身不具备自主开发能力,必须有 交叉编译开发工具和环境才能进行开发。同时,嵌入式系统的特殊产品特征决定了其对 软件有特殊的要求,自然就对相应的软件开发工具有更高的要求。区别于一般计算机中 的c 语言编译器,嵌入式系统中的c 语言编译器要专门进行优化,以提高编译效率。优 秀的嵌入式系统c 编译器代码长度和执行时间仅比以汇编语言编写的同样功能程序长 5 - 2 0 。编译质量的不同是区别于嵌入式c 编译器工具的重要指标。而c 编译器与汇编语 言工具相差的5 - - 2 0 的效率差别,完全可以由现代微控制器的高速度、大存储器空间以 及产品提前进入市场的优势来弥补【5 j 。 在嵌入式系统软件开发与通用计算机软件开发中一个最主要的不同点是前者出现 1 0 硕士论文 嵌入式多核编译器研究与开发 了一个交叉编译系统的概念。交叉编译系统是运行在主机平台上,为另一个不同的目标 机平台生成可执行代码的特殊的编译系统。而一般的编译器系统,其运行的主机平台和 生成的可执行代码的运行平台是相同的,即它的主机平台和目标机平台是一致的。这就 是交叉编译系统和一般编译系统的差别。需要注意的是,所谓的平台,实际上包含两个 概念:体系结构和操作系统。同一个体系结构可以运行不同的操作系统;同样,同一个 操作系统也可以在不同的体系结构上运行。交叉编译系统也是嵌入式技术所特有的,这 是由于嵌入式系统的设计需要根据所针对的硬件平台量体裁衣,去除冗余,降低成本, 从资源的使用角度看,嵌入式计算机系统是计算机能力和数据存储能力等资源受限的计 算机系统所决定的。有的目的平台上的资源根本无法运行我们所需要的编译器,甚至有 的目的平台都还没有建立,连操作系统都没有,根本谈不上运行什么编译器。因此,对 于这些嵌入式平台,要得到应用程序的可执行文件,只有借助运行与其他资源相对丰富 的主机平台上的交叉编译器实现1 7 j 。 目前很多设计开发人员仍然采用汇编语言对嵌入式程序进行编程,但由于汇编语言 在可移植性、可维护性和可靠性方面与高级编程语言的差距,使得开发人员对于采用高 级语言进行编程以获得更短的开发周期具有很高的需求。传统的嵌入式系统编译器开发 就是针对一个特定的目标机,根据它的特点量身定做一个全新的编译器。文献【8 】就实现 了一个基于m 6 8 h c l l 的嵌入式系统c 编译器。作者首先对目标机m 6 8 h c l l 体系结构以及 m 6 8 h c l1c 语言编译程序的特征进行了分析,然后建立了包括宿主机、m 6 8 h c llc 语 言编译器以及目标机的整体系统框架,并给出了目标系统初始化的详细过程。再对编译 过程进行了深入的研究,根据对目标机的依赖程度,将编译过程分为与目标机无关的前 端设计,与目标机直接相关的后端设计两部分。对c 语言编译实现过程中的词法分析、 语法分析、符号表设计、语义分析及中间代码生成都进行了详细的讨论。并给出了对编 译程序前端产生的中间代码进行优化方法及目标代码生成中符号表的操作、相关数据结 构设计、目标机寄存器的分配以及代码生成算法。最后又阐述了如何将编译程序产生的 目标代码加载到目标系统执行。 文献【8 】只是单纯的从编译器构造技术来进行编译器的开发,而文献【9 】则进一步针 对目标机的特点从编程所用的源语言就开始了针对性的优化。作者针对目标处理器s i 0 2 所专用的c 0 2 语言实现了到汇编语言s i 0 2 编译工作。c 0 2 语言是专用于嵌入式处理器s i 0 2 的一种高级编译语言,它是c 语言一个子集的扩充,继承了c 的部分数据类型和语法规 则,同时又提供了一些处理s i 0 2 处理器的一些端1 :3 操作。文献 1 0 中根据在工业控制中 应用广泛的监控组态软件中用户编程接口的研究,在充分考虑监控组态软件行业应用特 点的基础上,设计了一种组态语言一i n v a 语言。并对其编译器及开发环境的实现方案 进行论述,对语言设计、语法分析、语义分析及编译器的实现进行了深入的讨论,给出 了其实现方案,并成功运用在了某重大项目中。 2 嵌入式系统编译技术概述 硕士论文 从文献 8 9 】【1 0 】所做的工作可以看出构造一个全新的编译器不仅是一项相当复杂 的工程,而且所开发出来的编译器只能用于具体的目标机,软件不能重用,工作量大, 开发周期较长。如果在已有的系统功能完备、具备良好模块结构的、可重定向性优秀的 编译器之上,开发一个面向嵌入式系统的可重定向的优化编译器将是一个可行的方案。 这其实就是一种现在编译器设计所广泛使用的多目标设计方法。这种方法最直接的实现 就是修改一些已开发的编译器与目标机有关的后端文件,当需要为一个新的目标机设计 其相应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论