




已阅读5页,还剩71页未读, 继续免费阅读
(计算机系统结构专业论文)基于可重定向编译器的低功耗编译技术研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 嵌入式系统是一种以应用为中心的专用计算机系统,对功能、可靠性、成 本、体积、功耗有着严格要求。当前,功耗已经成为嵌入式系统设计中关键性 的约束条件,而编译中的低功耗设计作为目标代码级的优化在系统低功耗设计 中扮演着重要的角色。 可重定向编译是嵌入式系统设计时用到的一种编译技术,在嵌入式系统的 设计空间搜索过程中,可队快速生成针对该体系结构的编译器。可重定向编译 器重定向到不同体系结构的关键在于其编译后端。编译后端基于体系结构描述 语言对目标体系结构相关性质的描述,进行指令调度、寄存器分配和代码生成 的工作。另一方面,由于功耗优化策略往往针对特定体系结构的目标机器展开, 因此,在可重定向编译器后端,基于体系结构描述语言的支持,展开特定的功 耗优化策略是可行的。这样,可以在嵌入式系统设计的初期就预先考虑系统的 功耗问题。 本论文以嵌入式系统上的可重定向优化编译技术为基础,针对r i s c 体系 结构和v l l w 体系结构,深入研究了几种编译后端所能展开的功耗优化策略。 对于p d s c 体系结构,已有较成熟的指令级功耗模型。本文采用体系结构 描述语言描述指令的功耗信息,在编译后端根据指令的相关功耗信息进行针对 功耗的指令调度,从而降低指令执行的功耗。本文还将针对功耗的调度和针对 性能的调度进行了对比实验,给出了实验数据和具体分析。此外,寄存器再分 配也是一种在寄存器分配阶段所采用的功耗优化技术,可以有效降低系统功能 部件和指令传输路径上的高低电位翻转数量。 对于v l l w 体系结构,由于其指令的复杂性,缺乏成熟的指令级功耗模型。 本文基于体系结构描述语言,构建了一个在指令调度阶段对指令进行调整以降 低指令总线上高低电位翻转的框架,并结合编译后端的两种陆能优化策略一一 软件流水和超块调度进行了细致的分析,总结出该功耗优化策略与代码指令级 并行性的关系。基于此,本文最后对该功耗优化策略提出改进,即以编译过程 摘要 中代码的指令级并行度信息指导功耗优化,从而优化功耗优化中的无效开销。 关键字:嵌入式系统、可重定向编译器、功耗优化 l i a b s t r a c t a b s t r a c t a ne m b e d d e ds y s t e mi sas p e c i a lp u r p o s es y s t e mw h i c hh a ss t r i c tl i m i to n f u n c t i o n a l i t y , r e l i a b i l i t y , c o s t ,s i z e ,a n de n e r g yd i s s i p a t i o n n o w a d a y s ,e n e r g y c o n s u m p t i o nh a sb e c o m eac r i t i c a ld e s i g nc o n s t r a i n ti nm a n ye m b e d d e ds y s t e m a s t h eo p t i m i z a t i o ni nt h et a r g e tc o d el e v e l ,t h ec o m p i l e r sp a r t i c i p a t i o ni nt h el o w p o w e rd e s i g np l a y sa ni m p o r t a n tr o l e r e t a r g e t a b l ec o m p i l i n gi st h ec o m p i l i n gt e c h n o l o g yu s e di n t h ee m b e d d e d s y s t e md e s i g n w h e ne x p l o r i n gi nt h ed e s i g ns p a c eo ft h ee m b e d d e ds y s t e m ,t h e r e t a r g e t a b l ec o m p i l e r c o u l dg e n e r a t et h e p r o p e rc o m p i l e r f a s tf o r t h et a r g e t a r c h i t e c t u r e t h ek e yt h a tt h er e t a r g e t a b l ec o m p i l e re a r lr e t a r g e ti t s e l ft oad i f f e r e n t a r c h i t e c t u r er e s t sw i t ht h eb a c ke n do ft h ec o m p i l e r t h eb a c ke n do ft h ec o m p i l e r p r o c e s s e si n s t r u c t i o ns c h e d u l i n g ,r e g i s t e ra l l o c a t i o na n dc o d eg e n e r a t i o na c c o r d i n g t ot h ed e s c r i p t i o no ft h et a r g e ta r c h i t e c t u r e ,u s i n ga d l ( a r c h i t e c t u r ed e s c r i p t i o n l a n g u a g e ) o nt h eo t h e rh a n d ,p o w e ro p t i m i z a t i o n i sa l w a y sp r o c e s s e df o r t h e s p e c i f i c a la r c h i t e c t u r e t h e r e f o r e ,p o w e ro p t i m i z a t i o nb a s e do nt h er e t a r g e t a b l e c o m p i l e ra n di t sa d l i sf e a s i b l e w i t ht h i sk i n do f p o w e ro p t i m i z a t i o n ,t h ed e s i g n e r s c o u l dc o n s i d e rt h ep o w e r p r o b l e mo f t h es y s t e ma se a r l ya sp o s s i b l e t h et h e s i sr e s e a r c h e ss o m ep o w e ro p t i m i z a t i o nt e c h n i q u e sf o rb o t hr i s ca n d v l i wa r c h i t e c t u r e o nt h eb a s i so ft h er e t a r g e t a b l ec o m p i l e r f o rt h er i s ca r c h i t e c t u r e ,t h i sp a p e rc a r r i e so u tt h el o wp o w e ri n s t r u c t i o n s c h e d u l i n gg u i d e db yt h ei n s t r u c t i o nl e v e lp o w e rm o d e l c o n t r a s t i v ee x p e r i m e n t s a n da n a l y s i sa r ed o n ef o rb o t ht r a d i t i o n a li n s t r u c t i o ns c h e d u l i n ga i m i n ga tt i m e p e r f o r m a n c ea n dl o wp o w e ri n s t r u c t i o ns c h e d u l i n ga i m i n ga tp o w e rc o n s u m p t i o n a n d ,r e g i s t e rr e a s s i g n m e n ti sa l s oa l le f f e c t i v ep o w e ro p t i m i z a t i o nt e c h n i q u e ,w h i c h w o u l dr e d u c et h en u m b e ro f v o l t a g es w i t c hi nt h ei n s t r u c t i o np a t ha n df u n c t i o nu n i t s f o rt h ev l i wa r c h i t e c t u r e t h i sp a p e ri m p l e m e n t sal o wp o w e ro p t i m i z a t i o n a b s t r a c t f r a m e w o r kt a r g e t i n gt h ep o w e rc o n s u m p t i o ni nt h ei n s t r u c t i o nb u s t h ef r a m e w o r k r e d u c e st h en u m b e ro fv o l t a g es w i t c ho ni n s t r u c t i o nb u sb yr e s c h e d u l i n gt h e g e n e r a t e db i n a r yc o d ei nh o r i z o n t a l ,w h i c hl e a d st ot h er e d u c t i o no fs y s t e mp o w e r e x p e r i m e n t sa n da n a l y s i s a r ec a r r i e d o u t ,t a k i n gt w od i f f e r e n tp e r f o r m a n c e o p t i m i z a t i o ns t r a t e g i e so ft h eb a c k - e n d si n t oa c c o u n t :s o 矗w a mp i p e l i n ea n ds u p e r b l o c ks c h e d u l i n g ,t h er e s u l t ss h o w st h ee f f i c i e n c yo ft h i ss t r a t e g yh a sm u c hr e l a t i o n t ot h ei n s t r u c t i o nl e v e lp a r a l l e l i s m ( i l p ) a tl a s t ,t h i s a r t i c l e p r o p o s eai l pg u i d e d s t r a t e g yw h i c hc o u l dr e d u c et h ec o s to fa l g o r i t h mg r e a t l yw h i l ep e r s e v e r i n gt h e e f f i c i e n c i e so f l o w p o w e ro p t i m i z a t i o n k e yw o r d s :e m b e d d e ds y s t e m ,r e t a r g e t a b l ec o m p i l e r , l o wp o w e ro p t i m i z a t i o n 图表索日 图表索引 图1 1 嵌入式系统设计流程4 图1 2 嵌入式系统中硬件各层的功耗评估,5 图1 - 3 现代编译器的工作流程,8 图1 4 可重定向编译器结构图,】1 图1 5 低功耗s o c 系统的软硬件协同设计环境的框架结构1 3 一 图2 1g c c 的结构图,一1 8 图2 - 2e 1 c o r 结构图2 0 一 图3 1 一个简单的调度依赖图和所得调度序列3 6 图3 2 实验方案图一4 1 一 图3 3c m o s 反向器电路中的功耗4 5 图3 - 4 指令流中寄存器对示意图4 6 图3 5 寄存器对重分配示意图4 7 圈4 1v l i w 针对指令总线翻转优化示意图5 2 。 图4 2 v l l w 指令格式5 3 图4 3 v l i w 操作格式5 3 图4 - 4 相邻操作之间的海明距离一5 4 一 图4 5 v l i w 指令中操作横向调度示意图5 5 表1 ,1 硬件各层次的功耗技术 表3 - 1 指令基本功耗和执行周期 表3 - 2d l x 部分指令基本功耗表 表3 - 3d l x 部分双指令相干功耗表 表3 - 4 两种调度策略的实验数据及比较 表3 - 5 寄存器再分配实验数据, 表4 1 静态代码实验结果 表4 - 2 代码动态执行实验结果 表4 ,3 软件流水对该功耗优化策略的影响 表4 4 超块调度对功耗优化策略的影响 表4 - 5 功耗优化策略改进的实验数据 v l i o”扣柏“骢靳卯鲴n - - 一 - _ - - _ 第1 章绪论 1 1 引言 第1 章绪论 嵌入式系统被定义为以应用为中心、以计算机技术为基础、软件硬件可裁 剪、适应对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 嵌入式计算机系统已被广泛地应用于航空航天、武器装备、机器人、通信 设备、工业控制、汽车、船舶直至个人电子等广阔的领域,形成了巨大的产业 规模。进入二十一世纪后,世界嵌入式硬件和软件开发工具市场已经达到2 0 0 0 亿美元,嵌入式系统带来的工业年产值达1 万亿美元。特别是最近几年,在无 线通讯和网络技术的带动下,移动电话、数字电视等产品的市场不断扩大,嵌 入式系统迎来了一个新的发展高潮。 流行的嵌入式处理器包括:m o t o r o l a 的6 8 0 0 0 ,i n t e l 的i 9 6 0 ,m o t o r o l a 的 c o l d f i r e ,s u n 的s p a r c ,嵌入式x 8 6 ,h i t a c h i 的s u p e r h ,a d v a n c e dr i s cm a c h i n e s 的a r m ,以及m i p s 等等( a r m 和m i p s 出售许可证,由多种半导体公司生 产) 。对嵌入式系统的需求不仅来自消费类产品,如视频游戏、数码相机、手机, 还来自工业控制、武器系统和航空航天等关系国计民生的重要领域。 随着嵌入式应用日益普及,嵌入式系统的复杂度也在迅速增长,在嵌入式 系统设计中,功耗已成为项关键性的设计约束,特别是对于电池供电的移动 和便携式产品,功耗决定了产品的可用性。 为了满足系统能耗的需求,低功耗设计技术成为当前研究的重点。编译中 的低功耗优化作为目标代码级的优化,在低功耗系统设计中起到重要的作用。 传统的编译器研究已比较成熟 1 2 ,但大多数通用编译器对系统功耗问题并没 有考虑或者考虑得不多。然而,由于嵌入式系统特殊的设计约束,编译阶段的 功耗优化是嵌入式系统功耗优化的一个重要组成部分,编译阶段生成功耗优化 第l 章绪论 的代码将对整个系统功耗的优化产生重要影响。 可重定向编译器是嵌入式系统设计中用到的一种编译技术。基于体系结构 描述语言的支持,可重定向编译器可以帮助设计者在系统设计初期的设计空间 搜索过程中,快速生成针对目标体系结构的编译器。同样,在可重定向编译器 中,基于体系结构描述语言对功耗优化所需信息的描述,在编译后端展开功耗 优化,可以帮助系统设计者在设计初期考虑系统的功耗问题。 本文依托于可重定向编译器,及体系结构描述语言,研究编译阶段的低功 耗优化策略。作为本文的相关背景,本章第二节介绍嵌入式系统的功耗问题; 第三节介绍嵌入式系统的低功耗设计和编译中的低功耗优化;第四节介绍可重 定向编译以及其体系结构描述语言。 1 2 嵌入式系统的功耗问题 衡量嵌入式系统( 包括硬件和软件两方面) 是否优秀,并不单纯从性能角 度考虑,衡量标准包括功耗,性能,代码密度,多媒体支持能力等。 近年来,随着嵌入式芯片和系统复杂度的不断提高,以及嵌入式处理器在 以电池供电的便携设备上的广泛应用,功耗已取代性能成为嵌入式系统设计中 的最重要准则。究其原因主要有如下几个: a ) 由于为设各供电的电池受技术,重量和体积的限制,储存能力有限, 需要经常充电,从而给使用者带来很大不便: b ) 对性能的追求导致微处理器芯片工作频率越来越高,导致系统的散热 问题越来越严重,而受体积的限制,嵌入式系统无法采用如一般p c 的 散热装置,如风扇等: c ) 功耗问题导致系统温度上升,从而影响了系统的稳定性。 在研究功耗的评估和优化问题上,常常涉及两个概念: 1 能耗:指能量的消耗,国际单位为焦耳。能耗主要衡量一段时间内能量的 消耗,常用来考虑系统中电池的使用时间; 2 功耗:表示单位时间内的能耗,国际单位为瓦特。功耗常用来衡量系统的 第l 章绪论 散热问题; 能耗和功耗的侧重点并不相同,本文对这两个概念并没有做严格的区分。 1 3 嵌入式系统的低功耗设计 嵌入式系统设计的任务是定义系统的功能,并将功能转化为物理实现,同 时还要满足某些设计指标的约束,并使其他设计指标达到最佳。低功耗设计就 是以功耗为首要的设计目标,兼顾在系统设计以及软硬件的实现中达到功耗和 能耗最低。 经过多年的研究,低功耗设计技术已经贯穿于嵌入式系统设计的每一个阶 段,在系统软硬件的每个抽象层次上都有相应的评估和优化手段,以满足目标 系统的能耗要求。 1 3 1 嵌入式系统的设计方法学 介绍各种低功耗设计技术之前,首先来了解一下嵌入式系统的设计流程。 如图卜l ,传统的嵌入式系统设计被划分为三个阶段:系统规范阶段、硬件软 件设计阶段和整合测试阶段,每个阶段各占用三分之一的开发时间 3 。 在系统规范阶段,设计者将系统看作一个整体,不区分硬件和软件组件, 使用嵌入式系统规范语言【4 描述整个系统的行为,最后将系统划分为软件和硬 件子系统。 、 在硬件软件设计阶段,硬件和软件设计者分别独立的完成各自亍系统的设 计和调试。嵌入式系统的硬件设计流程一般自顶向下被划分为行为层( b e h a v i o r l e v e l ) 、寄存器传输层( r e g i s t e r t r a n s f e r l e v e l ) 、逻辑层( l o g i c l e v e l ) o , 及电路 层( c i r c u i tl e v e l ) 等不同层次,在各个层次上分别完成设计输入、模拟,并依据 设计约束条件进行评估验证。通常还包括固件的设计,开发低层次的软件,向 高层软件提供接口。 第1 章绪论 i 需求分析 l 体系结构 i 软硬件划分 i ii 硬件设计与实现软件设计与实现 li i 整合测试 l ( 结束) 、 规范阶段 l 设计阶段 l 测试阶段 图1 1 嵌入式系统设计流程 在整合测试阶段将分离设计的硬件和软件结合在一起,作为个完整的系 统进行测试。虽然从理论上,本阶段似应花费最短的时间,但在实践中,绝大 多数的错误都在本阶段发现。造成错误的原因包括软硬件接口定义的错误理解、 过期无效的系统规范、未及时通知更改以及无效的系统性能模型等。因此,整 合测试阶段往往实际花费最多的时间,甚至会要求设计流程回溯,重新设训软 件和硬件,即所谓的f i x i n 1 a t e r 问题。 为了适应嵌入式系统的发展,现在又开始采用自动化设计、1 p ( i n t e l l e c t u a l p r o p e r t y ) 复用等技术来提高设计的效率,还有软硬件协i 司设计、基于平台的设 计等设计方法学上的革新。 但是,不管采用什么样的设计方法和技术都应注意到,越是设计早期在高 抽象层所作的决策对整个系统的影响越大。这就特别需要在设计早期,对各项 设计要求进行快速的分析和评估,以支持设计者在各项指标中做出合理的权衡。 第1 章绪论 1 3 2 硬件设计中的低功耗技术 低功耗设计技术最早就是针对系统的硬件,发展到现在已经比较成熟。在 表1 - 1 中对各个层次上常见的功耗优化技术作了简单的总结 5 】 6 】,从中不难看 出,越往高层,低功耗优化设计的空间也更大,优化的效果也越发明显。 表1 1 硬件各层次的功耗技术 抽象层次常用优化技术优化效果 电路级( c i r c u i tl e v e l )调节节点电容,优化布线减小电容5 2 0 门级( g a t el e v e l )简化逻辑,门控时钟( c l o c kg a t i n g ) 2 0 3 0 流水线结构,并行结构,异步电路, 寄存器传输级( r tl e v e l ) 4 0 - - - 7 0 电压调节 行为级( b e h a v i o rl e v e l )行为级综合中减少所用硬件资源几倍 图l - 2 所示,底层的评估结果最为精确,但因为计算量庞大所以需要很长 的评估时间,同时因为依赖电路的实现细节,因此无法满足设计早期快速搜索 设计空间的要求。 抽象层 行为级 r t 级 门级 电路级 分析能力 疆 分析精度 掰 分析速度 赞 分析资源 少 贫够贫粤 弱高慢多 图1 2 嵌入式系统中硬件各层的功耗评估 现在对于高层的功耗评估,要求满足快速、可靠( 即结果要有一定的准确 度) 和可重定向( 具有对多个结构设计进行选择的能力) 的要求。比较成熟的 高层功耗评估主要集中在体系结构级或者说r t l ( r e g i s t e rt r a n s f e rl e v e l l 级, 这也是对评估精度和速度做出合理权衡的结果。目前常用的体系结构级的功耗 评估工具包括w a t t c h 7 ,s i m p i e p o w e r 8 】【9 和s i r e p a n a l y z e r 1o 等。 第l 章绪论 1 3 3 软件设计中的低功耗技术 软件开发流程,从上至下大致可以分为:算法设计和选择、程序编码、编 译和验证几个阶段。在低功耗设汁中,从上至下可阱分为几个层次: 夺操作系统级 动态功耗管理( d y n a m i cp o w e r m a n a g e m e n t ,简称d p m ) 是操作系统中常 用的能耗优化手段,在w i n d o w sc e 中就有电源管理器机制来实现对不同部件 的动态管理,关闭空闲的设备来减少了不必要的能耗开销。动态电压调节 ( d y n a m i cv o l t a g es c a l i n g ,简称d v s ) 技术是对处理器更细粒度的调节,在不 影响用户使用的前提下,根据负载状况来调节电压频率,从而优化处理器的功 耗。 夺 算法级 算法设计和选择一直是程序设计中相当重要的一个环节,不同算法的能耗 常有数量级上的差别。传统的算法研究多是针对算法的执行时问,以提高程序 性能为优化目标,算法级能耗分析方法可以在设计早期对候选算法的能耗做出 量化的比较,从而支持设计者以能耗为指标选择和优化算法。 夺源代码级 源程序级的优化包括数据表示的优化和源代码的几何变换,早期是用手工 实现高效的代码【1 1 】,更新的研究可以通过对源程序的剖析来自动完成变换 【1 2 。 夺 目标程序级 目标程序级对功耗的评估和优化,主要通过编译器来实现。 长期以来,编译器的研究设计者都将后端代码生成和优化的目标集中在性 能参数上,而忽视了对低功耗编译优化的研究。编译器具有能够分析整个应用 程序行为的能力,它可以对应用程序的整体结构按照给定的优化目标进行重新 构造。随着系统能耗问题的突出,更多的编译器的研究目标逐渐转向降低后端 输出代码的能耗。在编译器后端通过指令重排降低能耗不需要额外的硬件代价, 更为灵活。目前常见的嵌入式系统多采用v l i w ( v e r yl o n gi n s t r u c t i o nw o r d ) 或 d s p ( d i g i t a ls i g n a lp r o c e s s o r ) 体系结构,使用编译器在编译时显式安排指令的并 第1 章绪论 行,而不象超标量体系结构那样使用复杂的硬件机制,通过低功耗编译技术降 低输出代码能耗,对于嵌入式系统更为有效。 现有的低功耗编译技术 1 3 主要集中在指令调度技术研究上,旨在增加指 令级并行,通过提高执行性能降低功耗。己有的功耗优化方法有:指令重排减 少翻转 1 4 】 15 ,减少内存操作数 1 6 】,代码转换提高c a c h e 命中率 1 7 】,减少地 址线上的翻转 1 8 ,寄存器分配技术 1 9 2 0 ,软件流水线技术 2 1 】 2 2 】【2 3 ,以 及其他调度优化方法 2 4 1 。 在与体系结构硬件相关的功耗优化 2 5 方面,己提出了功能部件管理技术、 超块调度技术 2 6 2 7 以及在程序的某些非关键执行路径降低执行电压等技术。 当前的商用编译器一般不支持功耗优化。针对功耗的优化编译器对支持各 种体系结构的设计和评估是很有意义的。特别是在对嵌入式系统体系结构设计 进行评估时,一个很好的功耗优化编译器可以充分利用体系结构设计上的特点, 降低输出代码的功耗参数,展现出体系结构设计在低功耗方面的优势。相反, 若使用缺乏功耗优化的编译器,那么最后得到的功耗参数很难准确的反映体系 结构设计在功耗方面的优劣。因此,可以说一个好的功耗优化编译器是进行嵌 入式系统体系结构设计评估的必要工具。 本文以编译阶段的低功耗优化技术作为研究的重点。 1 4 支持嵌入式系统的编译技术 1 4 1 当前编译器的组成和工作流程 编译器可以按照图1 - 3 所示划分成各个模块,每个模块也就是一趟编译遍 ( p a s s ) ,每一遍读入上一遍输出的代码,作变换( t r a n s f o r m a t i o n ) 后输出给下 一遍。为了支持多语言和多目标机的需要,编译器常划分为前端和后端。 编译器前端与高级语言交互,关心高级语言的特性。高级语言通常按模式 ( p a r a d i g m ) 分为:命令式( i m p e r a t i v e ) 、函数式( f u n c t i o n a l ) 、面向对象( o h 3 e c t o r i e n t e d ) 以及逻辑式( 1 0 9 i c ) 。在业界软件开发多采用命令式( c 、p a s c a l ) 和 第l 章绪论 面向对象( c + + 、s m a l l t a l k ) 。函数式( l i s p 、m l 、h a s k e l l ) 和逻辑式( p r o l o g ) 有着很多有趣的特性,但多用于学术研究中,在软件开发尤其是嵌入式软件开 发中并不常用。前端的主要任务是将高级语言翻译成中间语言,使得后端与语 言相对独立,其中最主要的环节是语法分析。语法分析将标记流( s t r i n go f t o k e n s ) 转换成分析树,可以是手工编码的l l 分析或者自动根据上下文无关文 法生成的l r 分析。编译器前端的技术,特别是c 语言的分析技术发展较为成 熟,例如e d g 公司f 2 8 就专门为o e m 市场提供编译器前端。 s t r i n qo f c h a r a c t e r s i i :i k 。i 一r 1 s n g o f t o k e n s 巳a c s e rif r o n te n d ip a r s et r e e : r 。m 口i pj n 口”,口ri ip a r s e t r e e i n t e r m e d i m t e c o d ed e f i e r a t o f l ;m e d i u m - i e 婚m 8 r m e d i a t ec o d e m a e h i n ei n d e o e n d e n t0 e t 阳i z e rl c o d eg 4 e n e r a t o r | | , tl o w - l e v e li n t e e d i a t ec e d e l 口n d 。t h :j 。,i 1 蚝岫e l :a i e e 抽b c o d e a s s g m b 赫1 _ _ 妒r e = 6 c a :i a b l e :m a c h i n ec o d e | b a c ke n d 。一 u n k e ri ”:, i 。事i 。,气b 芎蔷溘套诩萏毫撕n 誊e o d e ” 图1 3 现代编译器的工作流程 中问代码的设计也有很多要考虑的问题,几乎每个编译器都有自己的中间 代码格式。中间代码的设计要在可移植性、效率、易调试性之问取得平衡。将 高级语言和体系结构的特性保留的越多越可以指导编译器优化,但是可移植性 就会降低。为了支持调试,很多源程序中的信息也需要保留到中间代码当中。 第1 章绪论 中间代码的格式通常有三元式,四元式,分析树式,这几种格式之间都可以方 便的互相转化。现在常用的中间代码常采用r t l ( r e g i s t e r t r a n s f e r l a n g u a g e ) 格式,这种格式语法类似于l i s p 语言,操作码集合类似于r i s c 指令集,具有 无限多的虚拟寄存器。 本论文主要讨论编译后端,在涉及到前端时也均针对c 语言。后端将中间 代码进一步绑定到机器码上,也就是要为中问代码的操作码选择合适的机器操 作,为虚拟寄存器分配实际寄存器,并按照指令间的依赖关系调度代码,最终 生成指令序列。鉴于编译后端的代码选择,指令调度,寄存器分配,代码生成 都和具体体系结构密切相关,而一般的功耗优化也是针对某种特定的体系结构 展开,因此本文主要基于编译后端来讨论具体的功耗优化策略。 1 4 2 可重定向编译及体系结构描述语言 1 4 2 1 可重定向编译 目前,针对通用处理器的编译技术己经相当成熟。但是由于嵌入式处理器 的异构性,针对通用处理器的编译器用于嵌入式系统时生成代码的质量通常不 是很高,往往不能满足嵌入式应用的要求。因此,必须针对嵌入式系统的特性 研究新的编译技术,其关键在于可重定向编泽技术。因为在嵌入式系统的设计 空间搜索中需要可重定向编译技术的支持,以便能为每一种可能的体系结构生 成代码。因此,必须有一种能为设计空间的所有体系结构快速生成编译器的编 译器生成机制。 在嵌入式系统的设计初始阶段,目标体系结构还没有完全确定,典型的表 示为一个参数化可重配置的平台。可重定向编译器支持目标体系结构的设计空 间搜索,帮助确定目标体系结构,以达到嵌入式系统设计者对系统性能,功耗 等多方面设计约束条件的要求。 可重定向编译器又称可重定目标编译器,是指可通过接受目标处理器体系 结构描述而生成在该处理器上高效运行的目标代码,而编译器本身的大部分代 第l 章绪论 码可以重用。只要给出目标硬件的体系结构描述,就可以使该编译器为该体系 结构生成代码。 根据重定向的难易程度,可重定向编译器一般分为几个级别,简要说明如 下: 1 用户可重定向( u s e r - r e t a r g e t a b l e ) ,该类编译器使用的目标机器描述是 用编译器特定的描述语言编写的,用户可以对机器描述进行编辑或修改。重定 向过程可能需要改写编译器的部分代码,从而向编译器提供处理器信息。该类 编译器重定向工作不需要很多编译器知识,一般用户就可以完成。例如对于 i m p a c t 编译器,它要求设计者重写代码生成源码来完成对特定体系结构的重 定向。 2 机器独立( m a c h i n e i n d e p e n d e n t ) ,该类编译器使用的目标机器描述是用 外部描述语言编写的,用户可以对机器描述进行编辑或修改。但是所有与代码 生成相关的指令集信息都是由目标机器描述中自动生成的。因此不需重写编译 器源码。如在r e c o r d 编译器中仅需重写目标机器的m i m o l a 语言描述就可 完成重定向。 3 参数化的( p a r a m e t e r i z a b l e ) 重定向,这类编译器只能用于总体结构一 致的同一类处理器结构。它的机器描述中仅包含若干参数( 如字长,寄存器文 件的大小,功能单元的数目等等) ,只要修改参数而无须修改编译器的源代码便 可实现重定向。但是其重定向范围非常狭窄。 4 开发者可重定向( d e v e l o p e rr e t a r g e t a b l e ) 。欲使编译器代码生成除了指 令选择以外的部分也能进行机器相关优化,就必须允许开发者修改编译器的内 部结构以便进行重定向。重定向开发者可阻使用体系结构相关信息来剪裁编译 器内部的优化算法,并将它们更好的排序。s p a m 属于这一类编译器,重定向 s p a m 需要为其重写机器相关代码。 如上所述,现代编译器一般被划分为编译前端和编译后端。编译前端与高 级语言交互,进行词法分析,语法分析以及一些体系结构无关的优化最后生成 中间代码;编译后端读入前端生成的中间代码,进行与目标体系结构相关的指 令调度,寄存器分配和代码生成工作。如图1 - 4 所示,可重定向编译器的关键 技术集中在编译后端:由体系结构描述语言所建立的目标体系结构信息库来指 第l 章绪论 导后端的流程以及相关的优化。 高级语 源码代码 码 图1 - 4 可重定向编译器结构图 因此,可重定向编译器的关键技术可以概括为以下两点: 1 体系结构描述语言 2 基于语言描述的硬件信息的编译优化技术 1 4 2 2 体系结构描述语言a d l 可重定向性意味着软件工具的算法的目标模型不能是隐式的,而必须是显 式的。可重定向性要求提供一种使工具软件理解目标系统的机制,从而可以依 据体系结构的变化自动调整工具的配置。可重定向性有不同的级别:最低级为 可移植性( p o r t a b i l i t y ) ,即工具经过简单的调整就可以适应新的目标;堆高级 为目标无关性( t a r g e t i n d e p e n d e n c e ) ,要求目标模型的定义是完全显式的,在工 具的算法中不对它进行任何假设。 基于语言的方法获得可重定向性是最有效的。借助于描述体系结构的语言 ( a d l ,a r c h i t e c t u r ed e s c r i p t i o nl a n g u a g e ) ,可以进行形式化验证和一致性验 证,可以很容易的修改目标体系结构和存储器组织以支持s o c ( s y s t e m o i l c h i p s ) 体系结构设计空间搜索,可以实现工具软件的快速自动生成,还可以实现向低 层描述的映射。 a d l 是种用于定义s o c 的体系结构模板的抽象语言。a d l 主要定义了 系统的行为、组成结构以及系统部件的延时和功耗等属性,其中系统的行为定 义指描述处理器的指令集,而对系统结构的定义采用类似于网表( n e t l i s t ) 的形式, 描述微结构部件的互连关系。根据对目标机硬件结构所做的抽象级别不同,a d l 第1 章绪论 通常被分为三类:面向结构描述的a d l 、面向行为描述的a d l 以及混合描述 的a d l : 面向结构描述的a d l 往往在寄存器传输级对目标机结构进行描述,其描述 包含了硬件微结构的细节,使得这一类a d l 近似于v h d l ,它们能够详尽地描 述硬件体系结构,但是对于可重定向编译器的开发者来说,要使用这一类a d l 对硬件的r t - l e v e l 的描述中提取编译器所需的机器相关信息,则是一项非常繁 重的任务。m i m o l a 和u d l i 属于这一类。 面向行为描述的a d l 通过从微结构中的细节描述中抽象出行为信息,从而 避免了直接从微结构的r t - l e v e l 级别的描述中提取指令集信息的复杂过程。指 令语义以寄存器链表的形式直接予以说明,从而隐去了硬件实现的底层信息。 该类a d l 对硬件的描述近似于指令集手册的说明。面向行为描述的a d l 具有 一个共性,那就是基于属性语法的对指令集的层次化描述。这特性极大的降 低了对指令集进行描述的难度。但是流水线信息和时间信息的缺乏使得这类 a d l 没有扩展能力,无法成为可扩展的体系结构的描述模型语言,也使得基于 资源的调度算法无法直接从该语言的描述中获取所需的信息。n m l 、i s d l 和 c s d l 等是这一类a d l 的代表。 混合描述的a d l 在面向行为描述的a d l 的基础上,包含了硬件资源的抽 象信息。流水线结构,延退等特性可以在描述中表现出来。用于i m p a c t 编译 器的h m d e s 属于这一类a d l ,用h m d e s 描述语言创建机器信息的数据库, 而于机器相关的编译器后端则通过对这一数据库的访问获得进行优化所需的机 器相关信息。而编译器的重定向工作就通过更改h m d e s 描述以建立新的机器 信息数据库来完成。其它此类a d l 还包括f l e x w a r e 、e x p r e s s i o n 和l i s a 等。 1 5 研究动机和目标 本论文的研究动机来源于本实验室s o c 系统研究课题,在其重定向编译器 的研究中,考虑更多能够在编译阶段展开的功耗优化策略。 第l 章绪论 微电子科学和半导体工艺的进步使得可以在一个硅片上实现一个更为复杂 的系统,即“片上系统( s o c ,s y s t e m - o n - c h i p s ) ”。为了找到优化的s o c 结构, 需要在s o c 设计阶段的早期就在众多的候选体系结构中进行筛选。在这个阶 段,每个模块( 处理器、存储器和a s i c 等) 的结构细节尚未确定,它们需要 到设计的后期( 底层) 才确定。完整的s o c 体系结构层设计流程如图i - 5 所示。 首先,根据系统需求进行软硬件功能划分,然后并行的进行应用软件和硬件系 统的体系结构设计,接着依据体系结构设计的结果对编译器和仿真器进行配置, 并对应用程序进行仿真评估,再依据评估结果,判断是否满足设计约束,决定 是否进入下一设计阶段。 s o c 设计的关键在于自动的软件工具生成环境而自动生成d s e 软件工具 的关键又在于实现工具软件的可重定向性( r e t a r g e t a b i l i t y ) ,即要求工具软件可 以在很大程度上适应不同体系结构的变化。 图1 - 5 低功耗s o c 系统的软硬件协同设计环境的框架结构 在s o c 系统设计过程中,一个重要的课题就是低功耗( 能耗) 优化。综上 第l 章绪论 所述,编译阶段的低功耗优化是低功耗设计中一个重要并且有效的手段,因此, 本文的研究目标为:借助于可重定向编译平台,发掘和研究可融入重定向编译 器中的低功耗优化技术,这样在系统设计初期,就可以针对系统功耗进行预 先的考虑。 1 6 论文的工作和组织 本论文注意到嵌入式系统上编译器研究的新方向,分析了国内外相关研究 工作的不足之处,配合实验室的s o c 系统研究课题,就如何使编译器后端支持 低功耗优化展开了深入研究。 本文基于可重定向编译器展开低功耗优化研究,借助于具体的重定向编译 s f 台和体系结构描述语言对目标体系结构的建模。第二章主要介绍了本文用到 的可重定向编译平台t r i m a r a n 和体系结构描述语言x p a d l 。 本实验室s o c 课题编译组将t r i m a r a n 分别定向到了r i s c 体系结构和v l l w 体系结构,本文的编译低功耗优化研究分别基于这两种体系结构展开。第三章 针对r i s c 体系结构,实现了两种功耗优化策略:指令级功耗模型指导的功耗 优化以及寄存器再分配以降低系统中指令传输路径和功能单元中高低电位翻转 的功耗优化策略。第四章针对v l l w 体系结构,主要研究了针对指令总线翻转 的功耗优化策略,并结合编译后端的软件流水和超块调度分析了该功耗优化策 略的特点和有效性,进一步地,还对该功耗优化策略提出了改进方案。针对两 种体系结构下的各种功耗优化策略,本文都给出了实验数据,进行了仔细分析, 得出一些结论。 第五章给出全文总结和进一步研究方向的设想。 第2 章可重定向编译平台和体系结构描述语言的选择 第2 章可重定向编译平台和体系结构描述语言的 选择 2 1 可重定向编译平台的选择 关于可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025银发旅游市场研究报告:需求洞察与旅游产品多元化开发策略
- 扶贫督查知识培训课件
- 2026届安徽省长丰二中化学高一第一学期期中达标检测模拟试题含解析
- 统编版语文三年级上册 26 一个粗瓷大碗教学课件
- 2025年食品安全监测师职业技能考试试题及答案
- 游戏行业游戏安全与防沉迷策略设计
- 妇联纪检考试题库及答案
- 产品保修期服务协议
- 丰台一小考试题及答案
- 农村生态种植与保护联动协议
- 大学班助培训
- 学校公文写作培训
- 药品责任赔偿管理制度
- 中国2030年能源电力发展规划研究及2060年展望
- 子公司设立管理制度
- 阿氏圆教学课件
- 陇南市成县县属国有企业招聘笔试真题2024
- 公安擒拿教学课件
- 内蒙古自治区“十五五”农牧业发展计划
- 中等职业学校幼儿保育专业《婴幼儿行为观察与引导》课程标准
- 产后耻骨护理
评论
0/150
提交评论