当前位置: 首页 > 专利查询>浙江大学专利>正文

基于动态调频技术的节能编译方法技术

技术编号:2852135 阅读:207 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于动态调频技术的节能编译方法。本发明专利技术以编译的扫描阶段产生的参数,将目标代码分段,根据参数判断代码段是否适合DVS(Dynamic  Volatage  Scaling,动态电压调频技术)操作,并对不适合DVS操作的代码段进行一些处理。本发明专利技术能弥补DVS技术应用于编译阶段的一些缺点,降低程序运行的功耗。

【技术实现步骤摘要】

本专利技术涉及DVS即Dynamic Voltage Scaling,动态电压调频技术,尤其涉及一种。
技术介绍
目前,嵌入式领域的节能算法主要有两种DPM即Dynamic Power Management,动态电源管理技术操作系统级别的电源管理策略,包括对外设的调度,对存储器的调度。DVS技术这种方式又分为两种1.操作系统级别的DVS调度算法;2.软件级别的DVS调度算法。软件级别的DVS算法,比如编译器级别的DVS算法,可以根据编译器扫描代码得到的结果来准确地了解代码的详细信息,从而准确的调频。但是编译阶段的DVS算法的应用,往往是以单条指令为调频单位,频率切换的代价非常大的。可以看出,DPM技术与操作系统级别的DVS技术都要依赖于嵌入式操作系统的支持,比如目前已经提出的实时操作系统的一系列DPM和DVS算法。操作系统级别的DVS算法和DPM算法都是建立在操作系统对当前运行的任务的预测的基础上的,而编译阶段的DVS算法可以通过语法扫描得到生成代码的一些详细信息,通过这些详细信息准确地进行调频。传统的编译阶段的优化,大部分的工作目标是提升代码的时间和空间性能,而对功耗的考虑比较少。虽然部分时间和空间的性能优化会带来功耗的降低,但是这些优化都没有针对DVS技术的应用,使得DVS在编译层的应用无法带来明显的功耗节省。
技术实现思路
为了获得更好的功耗节省、提高编译器性能,为了使DVS技术更好的应用于编译器当中,本专利技术的目的在于提供一种一种。本专利技术解决技术问题所采用的技术方案是1)代码段处理方法中间代码分段模块在代码扫描阶段,对目标进行分段,段两端进行标记,并为每个段建立参数表,以备处理;目标代码中的循环和函数调用都是相对独立的模块,适合做为段的候选,而对于跳转指令,因为跳转的不可预知性,不适合做为分段的标准;代码段处理模块根据每个段的参数表,代入数学模型,判断该段两端是否适合插入DVS指令,并对不能插入DVS指令的段进行进一步的处理;函数段的检查通过将参数代入数学模型进行。对于能够进行DVS的程序段,两端插入函数调用;对于不能进行DVS的段,通过窥孔优化中的填充加载等等优化手段进行优化,然后再次进行判断;2)判断程序段的数学模型在一定的假设的理想状态下,模型分成两个部分,一是时间模型,一是功耗模型。两个模型从两个方面限制,如果时间上的损失超过一定的界限,那么这一段程序就不能使用DVS技术;如果时间损失恰好能满足要求,但是功耗节约过少,那么也不能使用DVS技术;3)插入DVS指令对于适合DVS指令的段,在段两端插入DVS指令。DVS指令的插入通过函数调用的形式来进行。在段的两端插入函数调用,而函数调用里面再调用系统的改变频率的系统调用。本专利技术具有的有益效果是两个新增的编译模块,是编译器更佳适合使用DVS技术。首先,程序的分段,让应用DVS技术的单位变大,改正了DVS调频的单位太小引起电池寿命变短的缺点。其次,程序段的检查和调整,使得功耗的节省量化,对于不能节省功耗的程序段并没有直接抛弃,可以通过调整使其尽量适合DVS调频。一方面不会造成因为部分段不适合DVS而导致使用DVS之后反而功耗变大的情况,另一方面也避免很多没有优化的程序段被放弃而没有进行DVS操作。最后本专利技术引入的数学分析模型,把功耗的估算量化,能避免DVS技术引起的功耗增加。附图说明图1的工作流程图2未处理的示例程序图3标注了程序段的示例程序具体实施方式本专利技术按照图1的的编译流程,对原始代码进行处理。1)使用代码段处理方法对代码分段循环和函数调用是段的候选。函数中的循环是一个独立的代码段,在中间代码表示中,循环的两端有具体的标志,通过扫描,可以得到循环的两端,在循环的两端插入函数调用,该函数调用用来进行DVS调频操作。同样的,对于函数调用,也可以在函数两端插入函数调用,做为备选断。对于程序关键路径上的跳转指令,DVS的插入可能引起大幅度的性能变化,所以程序分段的时候不选取这种指令段。分段的同时是函数的扫描过程,在扫描中,编译器记录上述数学模型中的参数,建立参数表,给段检查和调整模块使用。2)使用数学判断模型进行函数段的检查和处理。①假设和限制a)编译器不讨论对分支指令进行DVS操作,因为动态指令流在编译期间比较难分析b)不考虑多线程的条件下,一个DVS过之后的段在执行完之前就被挂起的情况c)存储器工作和CPU工作是异步的d)每条指令都可以运行在不同的电压下。举例考虑附图2中的程序段,检查完一遍,加入标记以后的程序段如下(以flag做为标记点)如图3所示。之后,编译器就可以对每个单独的段进行判断,首先是获取参数,然后进而进算它是否适合DVS技术。模型分成两个部分,一是时间模型,一是功耗模型。两个模型从两个方面限制,如果时间上的损失超过一定的界限,那么这一段程序就不能使用DVS技术;如果时间损失恰好能满足要求,但是功耗节约过少,那么也不能使用DVS技术。假设不采用DVS的情况下,执行完程序段P所需要的时间为T,消耗的功耗为E,插入了DVS切换指令以后,所需要的时间为Tswitch,功耗为Eswtich。插入DVS指令所允许的时间损失比例为δ,期望获得的功耗节省为ρ。对于一个程序段里的指令,划分成两种,一种是CPU指令,一种是访存指令,在当前的高速处理器中,访存指令的执行时间是和CPU的执行频率无关的,在访存的等待期,流水线CPU都执行不需要访存的CPU指令。假设tinvariant为访存指令要执行的时间,tinvariant与CPU的频率无关;假设Noverlap为CPU指令和访存指令并行的情况下,CPU指令执行的次数;Nnonoverlap为CPU指令单独执行的次数。假设f为处理器当前的频率,f0为处理器默认情况下的最高频率,T(R,f)为程序段R在频率f下运行的时间,Num(R)为程序段运行的次数,Pf为频率f下的功率,P-R表示程序段除了R以外的部分,Pswitch代表DVS切换指令自己在切换时的功率。②数学判断模型I.获取上次扫描的函数信息。包括了tinvariant,Noverlap,Nnonoverlap,Num(R)这些可以通过扫描过程中的指令分析得到。f,f0,Pswitch是处理器的自身参数II.把参数代入公式,计算该函数段是否插入DVS指令。首先是计算时间T和功耗E的公式T=max(tinvariant,Noverlap/f0)+Nnonoverlap/f0E=Pf0*T(p,f0)在对段R使用了DVS之后Tswitch=max(tinvariant,Noverlap/f)+Nnonoverlap/f0Eswitch=ER+Ep-R+Eswitch=Pf*T(R,f)+Pf0*T(P-R,f0)+Pswitch*2*Num(R)判断这个段是否满足时间和功耗的限制条件Tswitch/T<=1+δE/Eswitch>=1+ρ综上,如果在代码扫描完成后的计算中,能满足上面两个条件,那么就可以对段R进行DVS操作。对整个程序插入DVS指令的模型对于一段程序,可以划分出多个能进行DVS指令的段,那么T和E的模型就变成了Eswitch=E1+E2+E3+……+EnTswtich=T1+T2+T3+……+Tn要满足的条件仍然是Tsw本文档来自技高网...

【技术保护点】
一种基于动态调频技术的节能编译方法,在代码扫描和代码生成步骤中间,添加编译模块,其特征在于:1)代码段处理方法:中间代码分段模块:在代码扫描阶段,对目标进行分段,段两端进行标记,并为每个段建立参数表,以备处理;   目标代码中的循环和函数调用都是相对独立的模块,适合做为段的候选,而对于跳转指令,因为跳转的不可预知性,不适合做为分段的标准;代码段处理模块:根据每个段的参数表,代入数学模型,判断该段两端是否适合插入DVS指令,并对不能插入DVS指 令的段进行进一步的处理;函数段的检查通过将参数代入数学模型进行。对于能够进行DVS的程序段,两端插入函数调用;对于不能进行DVS的段,通过窥孔优化中的填充加载等等优化手段进行优化,然后再次进行判断;2)判断程序段的数学模型   在一定的假设的理想状态下,模型分成两个部分,一是时间模型,一是功耗模型。两个模型从两个方面限制,如果时间上的损失超过一定的界限,那么这一段程序就不能使用DVS技术;如果时间损失恰好能满足要求,但是功耗节约过少,那么也不能使用DVS技术 ;3)插入DVS指令对于适合DVS指令的段,在段两端插入DVS指令。DVS指令的插入通过函数调用的形式来进行。在段的两端插入函数调用,而函数调用里面再调用系统的改变频率的系统调用。...

【技术特征摘要】
1.一种基于动态调频技术的节能编译方法,在代码扫描和代码生成步骤中间,添加编译模块,其特征在于1)代码段处理方法中间代码分段模块在代码扫描阶段,对目标进行分段,段两端进行标记,并为每个段建立参数表,以备处理;目标代码中的循环和函数调用都是相对独立的模块,适合做为段的候选,而对于跳转指令,因为跳转的不可预知性,不适合做为分段的标准;代码段处理模块根据每个段的参数表,代入数学模型,判断该段两端是否适合插入DVS指令,并对不能插入DVS指令的段进行进一步的处理;函数段的检查通过将参数代入数学模型进行。对于能够进行DVS的程序段,两端插入...

【专利技术属性】
技术研发人员:陈天洲梁晓黄江伟钱杰吴心亮
申请(专利权)人:浙江大学
类型:发明
国别省市:86[中国|杭州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1