VLIW DSP编译器设计及性能与功耗的优化研究
发布时间:2020-11-05 10:32
超长指令字(VLIW)体系结构已经为高端数字信号处理器(DSP)所普遍采用。VLIW体系结构主要采用静态指令调度技术,因此其硬件行为很大程度上依赖于编译器的安排,这为编译器提供了广阔的舞台,也对其提出了严峻的挑战。一方面,VLIW DSP的高性能是否能够发挥出来,完全取决于编译器效率的高低;另一方面,因为编译器可以很大程度上控制芯片的运行轨迹,除了最大程度挖掘指令级并行(ILP)外,还可以通过适当的调度优化,使得DSP执行某一个程序时的功耗变小。可见对于VLIW DSP高性能低功耗编译技术的研究具有非常现实的理论与实践意义。 本文的工作是863项目“32位高性能嵌入式数字信号处理器(DSP)芯片技术研究”的一部分。论文针对VLIW DSP编译器的设计与实现技术、性能优化技术、功耗优化技术进行了深入研究。主要工作分为三大部分:首先基于可重定向编译基础设施IMPACT,设计和实现了VLIW DSP的C编译器;其次针对VLIW DSP体系结构的特点,对利用谓词执行机制和软件流水进行性能优化的技术展开了研究;然后对利用SIMD指令自动向量化和循环缓冲进行低功耗优化的技术展开了研究。 本文所做编译优化工作是围绕VLIWDSP体系结构展开的,并以YHFT-D4为实例进行了验证,但所提出的优化方法具有普遍的适用性。主要贡献如下: 一、提出了基于互补谓词的优化方法。该方法从三方面进行编译优化:一是基于二进制决策图(BDD)谓词分析系统,建立了一种利用互补谓词机制对控制结构进行优化的方法;二是对传统着色图寄存器分配算法进行改进,给出了一种建立统一简化干涉图的新算法,减少了代码溢出;三是利用互补谓词的特性改进了指令调度中资源的利用情况和目标体系结构中谓词读取时间,提高了指令调度中的资源利用率,可以获得更高的ILP。 二、提出了基于超块的统一分簇与模调度方法。使用超块作为调度单位是扩大优化范围,获得更高ILP的重要手段,并且可以处理含有控制流的循环体,增加了模调度的适用范围。VLIWDSP中的分簇结构,使得编译器必须将指令和操作数在簇间进行合理分配才能得到较好的ILP。基于超块的统一分簇与模调度方法,先使用互补谓词将中间代码变成超块,再进行模调度,在调度过程中同时进行指令和操作数的簇分配,实验证明是一种有效方法。 三、在全面而深入地评述了低功耗编译技术,特别是指令级、功能级功耗模型的基础上,提出了基于SIMD指令自动向量化的低能耗编译方法。与普通指令相比,SIMD指令具有较高的能量效率。现有的一些自动生成SIMD指令的编译方法,或者只能生成一般SIMD指令,或者高度领域相关,缺乏通用性。针对此,本文提出一种基于SIMD指令自动向量化的低能耗编译方法,该方法将SIMD自动向量化的任务划分为两阶段:首先从高层中间代码识别出复杂SIMD指令的备选指令;然后在低层中间代码中经循环展开之后,用扩展的树模式匹配、以指令的能耗为代价生成真正的SIMD指令。这种方法清晰直观、通用性强。实验证明对于能耗和性能都有优化作用。 四、提出了一种通过编译控制循环缓冲降低指令存储器功耗的方法。VLIWDSP中指令存储器的功耗所占比重较大。但根据DSP应用中循环较多的特点,可以采用循环缓冲来减小指令存储器的功耗。设计了一种编译器控制的循环缓冲,编译器通过功耗分析确定放入缓冲的循环体,并确定打开/关闭循环缓冲的时机。该方法在不影响性能的情况下,减小了程序运行的总功耗。 五、设计与实现了VLIW DSP的优化编译器。以可重定向编译基础设施IMPACT为平台,设计与实现了VLIW DSP编译器,并从性能和功耗两方面对其进行了优化。
【学位单位】:国防科学技术大学
【学位级别】:博士
【学位年份】:2006
【中图分类】:TP368.12
【部分图文】:
Predieate一 awareSehedulingClassic&SuPersealar图3.12的实验结果给出了scen丽00碑情况下得到的IPC。从中可以看出,与Scenari0O相比,使用超块并进行谓词优化的Scenariol情况的加速比最大,无第62页
物理寄存器的模块即可,即按照符号寄存器的簇属性从相应的簇中选取空闲物理寄存器。4.3.9.3与后遍调度的关系但寄存器分配后,在寄存器压力比较大的情况下有可能会在模调度的核中插入溢出代码(spillcode),这种情况下将在后遍调度中使用列表调度对模调度的核重新调度。4.4实验结果在面向图4.1中的分簇结构VUWDSP编译器中应用本章提出的基于超块的分簇与模调度(HBUCAMs)方法,我们得到图4.8的编译结果。这里HBUCALS指的是应用本章的统一分簇与调度的方法于LISt调度对所有循环或非循环代码进行调度所得到的结果;而ITss则是在文献193]中提出的方法,HBuCALs和HBucAMs对这种方法进行了改进。
二==二二二二二二二二二二二二二二二二二二二二二二=:一二=二二二二二二二二二二二二二二二二二二二二二二=二=一二一二二二二二二二二了使用循环缓冲技术后的程序功耗。图7.8给出了采用循环缓冲后的指令存储器功耗比重。从图7.8可以看出,在使用了循环缓冲后,指令存储和传输部分的功耗在系统总功耗中的比重大幅降低(一与图7.1相比较)。 }}}}}}}}}下下 下 下 下下 下 下 下下……一 一 一一一 一一一 一一一一一一 一 一一一一 一 }}}}}}}}}}}}}娜尔斗斗 斗 斗比 比 比 比 比 比 比淤淤 淤 淤 ....................口Cloek」口Proeessing.Feteh%%%n︵日︺八曰日八︸O︹︺汽︸.上%%%nU八曰n口任月O‘二十‘沁触的只林《抽·曰·洲三·洲O灿响·洲洲沁代二十‘时已图7.8米用循环缓冲后的指令存储器功耗比重图7.9给出了采用循环缓冲后的程序平均功耗的变化。系统平均功耗也随着循环缓冲的使用,有比较明显的降低。这里降低主要是指令存储器的访问功耗,考虑到时钟功耗约占指令存储器功耗的近1/2,若在循环缓冲工作的时候令指令存储器进入休眠状态
【参考文献】
本文编号:2871513
【学位单位】:国防科学技术大学
【学位级别】:博士
【学位年份】:2006
【中图分类】:TP368.12
【部分图文】:
Predieate一 awareSehedulingClassic&SuPersealar图3.12的实验结果给出了scen丽00碑情况下得到的IPC。从中可以看出,与Scenari0O相比,使用超块并进行谓词优化的Scenariol情况的加速比最大,无第62页
物理寄存器的模块即可,即按照符号寄存器的簇属性从相应的簇中选取空闲物理寄存器。4.3.9.3与后遍调度的关系但寄存器分配后,在寄存器压力比较大的情况下有可能会在模调度的核中插入溢出代码(spillcode),这种情况下将在后遍调度中使用列表调度对模调度的核重新调度。4.4实验结果在面向图4.1中的分簇结构VUWDSP编译器中应用本章提出的基于超块的分簇与模调度(HBUCAMs)方法,我们得到图4.8的编译结果。这里HBUCALS指的是应用本章的统一分簇与调度的方法于LISt调度对所有循环或非循环代码进行调度所得到的结果;而ITss则是在文献193]中提出的方法,HBuCALs和HBucAMs对这种方法进行了改进。
二==二二二二二二二二二二二二二二二二二二二二二二=:一二=二二二二二二二二二二二二二二二二二二二二二二=二=一二一二二二二二二二二了使用循环缓冲技术后的程序功耗。图7.8给出了采用循环缓冲后的指令存储器功耗比重。从图7.8可以看出,在使用了循环缓冲后,指令存储和传输部分的功耗在系统总功耗中的比重大幅降低(一与图7.1相比较)。 }}}}}}}}}下下 下 下 下下 下 下 下下……一 一 一一一 一一一 一一一一一一 一 一一一一 一 }}}}}}}}}}}}}娜尔斗斗 斗 斗比 比 比 比 比 比 比淤淤 淤 淤 ....................口Cloek」口Proeessing.Feteh%%%n︵日︺八曰日八︸O︹︺汽︸.上%%%nU八曰n口任月O‘二十‘沁触的只林《抽·曰·洲三·洲O灿响·洲洲沁代二十‘时已图7.8米用循环缓冲后的指令存储器功耗比重图7.9给出了采用循环缓冲后的程序平均功耗的变化。系统平均功耗也随着循环缓冲的使用,有比较明显的降低。这里降低主要是指令存储器的访问功耗,考虑到时钟功耗约占指令存储器功耗的近1/2,若在循环缓冲工作的时候令指令存储器进入休眠状态
【参考文献】
相关期刊论文 前3条
1 戴桂兰,张素琴,田金兰,蒋维杜;基于抽象语法描述的中间表示技术[J];清华大学学报(自然科学版);2003年04期
2 赵荣彩,唐志敏,张兆庆,GuangR.Gao;低功耗多线程编译优化技术[J];软件学报;2002年06期
3 赵荣彩,唐志敏,张兆庆,Guang R.Gao;软件流水的低功耗编译技术研究[J];软件学报;2003年08期
本文编号:2871513
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/2871513.html