论文部分内容阅读
BWDSP是一款高性能数字信号处理器,同时兼容16位和32位定点数据格式,采用超长指令字架构,具有强大的并行处理能力,能较好的满足高速实时信号处理的应用要求。BWDSP具有多个执行簇,每个执行簇上有多个运算部件,同时提供了多种类型的向量化指令,为SIMD编译优化提供了大量的机会和支持。本文的主要工作包括两点。其一,设计并实现了BWDSP指令译码器的自动化验证平台;其二,在Open64编译基础设施的基础上研究并实现了基于高层WHIRL表示的支持BWDSP程序SIMD优化的编译算法。DSP译码器自动化验证平台是在BWDSP译码器的基础上,为了验证不断变动的指令集译码器的正确性,基于面向对象的理念设计的一套译码器验证工具。平台的设计首次使用了面向对象的思想。自动化译码器验证方案能够很好的支持重用和扩展,针对指令集的变动和扩展,能够在极短的时间内完成对应的测试版本。本文在OPEN64编译基础设施的基础之上,提出并实现了基于高层WHIRL表示的SIMD向量化算法。算法主要在OPEN64的中间语言高层WHIRL上进行,以最内层循环为主要优化对象,通过一系列的分析和变换工作,发现并利用程序循环潜在的指令并行,将该类操作进行SIMD优化处理。此外,BWDSP指令集还包括一些特殊的向量化指令,针对这些指令,算法也增加了对应的SIMD替换过程,通过对特殊向量化机会的识别,找到并替换成特殊SIMD操作,从而在WHIRL树层次上完成特殊指令SIMD变换。特殊SIMD操作替换算法已经实现了BWDSP指令集中的所有特殊向量化指令的替换优化算法。最终的实验结果表明,基于高层WHIRL表示的SIMD优化算法在BWDSP上针对可合成单字和双字的循环程序能够分别取得平均6.30倍和4.15倍的加速比。这表明,基于树匹配的SIMD优化算法对循环程序的效率提高是非常可观的。