论文部分内容阅读
BWDSP100是一款国内近期开发的高性能数字信号处理器,本文所论述的工作是以Openimpact为编译基础架构,为BWDSP100实现调试信息的生成和复数乘法操作的优化。
基于编译基础设施Openimpact开发DSP编译器的过程中,调试信息的生成是支持调试功能的必要条件。Openimpact本身并不支持调试信息的生成,它仅仅将调试信息从源代码携带到前端,以高级中间语言Pcode格式存放。为了支持调试信息的生成,我们必须对Openimpact进行适当扩展。本文详细讨论了具体扩展方法,包括调试信息从Pcode格式到低级中间语言Lcode格式的转换以及从Lcode格式到汇编格式的生成。从Pcode到Lcode的转换阶段对应有行号与变量等调试信息的转化、块作用域调试信息的传递、全部变量与自定义数据类型信息的转换;而从Lcode到汇编的转换阶段对应有局部变量与参数变量数据结构的变换、自定义数据类型的设计、打印输出算法的优化以及主要调试信息布局的最终确立。
DSP编译器在平时进行各类常用运算和变换时,通常会用到复数的乘法操作。程序执行完毕所需要的时间常常与复数的乘法操作完成的快慢有很大关系。例如,在快速傅里叶变换(fft)程序中,经常要用到大量的复数乘法操作。我们以编译制导为基础,针对数字信号处理芯片(DSP)在进行复数的乘法运算时效率偏低的问题,实现相关复数乘法操作模块的优化。实验结果表明该优化模块能够有效地降低快速傅里叶变换(fft)程序的执行时间。对于fft_radix2程序,有9.1%的性能提升;而对于fft_radix4程序,性能提升率为8.7%。BWDSP100芯片C编译器复数乘法操作优化的实现涉及到编译器的多个模块,这其中包括指令注释模块、指令分簇模块、寄存器分配模块、指令调度模块。本文对复数乘法操作的优化所涉及到的每个子模块均进行了详细的分析。