论文部分内容阅读
BWDSP100是一款采用了超长指令字体系结构(VLIW)以及单指令多数据流(SIMD)技术相结合的32bit浮点数字信号处理器(DSP)。它是由中国电子科技集团某研究所自主设计、自主研发,拥有完全自主知识产权。它是主要运用在图像处理、精确制导等高性能计算领域的高端DSP。由于采用VLIW和SIMD相结合技术,因此并行计算能力非常强大,可以满足实时高速信号处理的应用要求。
我们在编译基础设施Openimpact的基础上开发BWDSP100的C语言编译器。编译器把源程序处理成由控制块组成的控制流图。Openimpact编译器的调度器分别调度每个控制块,但是没有跨越控制块的边界调度指令。控制块通常体积很小,也就是块中的指令数目比较少,这样潜在的指令级并行度(ILP)很小。然而BWDSP100处理器所包含的资源是很丰富的。指令调度只有跨越控制块的边界才能够充分发挥处理器多资源的特点,才能充分挖掘出程序中固有的并行性。本文提出了基于超长指令字的全局无环指令调度算法,采用顺序调度和基于编译制导的分支调度相结合的方法改进Openimpact原有的局部指令调度算法。基本思想就是保持原有的数据相关和控制相关的前提下,在循环体的多个控制块间移动指令,合并控制块,扩大那些执行频率比较高的控制块体积来减少整体的执行时钟周期。实验结果显示,该算法可以有效的减少不同点数下的fft_radix2、fft_radix4和fir_real以及fir_cplx程序的执行时钟周期。
图像处理中经常要做快速傅里叶变换(fft)运算,而fft运算包含了大量的浮点复数乘法运算。fft程序的执行时间很大程度上取决于复数乘法运算的执行时间。本文提出了基于编译制导的复数乘法优化模块,该模块由指令移动,指令识别,指令替换三个子模块构成。通过传递编译制导命令,使得Openimpact在控制块中移动相关指令,并运用识别算法,识别出与复数乘法运算相关的所有指令,最后替换其中所有的乘法指令为单条复数乘法指令。实验结果证明,该优化模块有效地缩短不同点数下的fft_radix2和fft_radix4程序的执行周期。