论文部分内容阅读
BWDSP是一款采用分簇体系结构、支持SIMD的16发射的VLIW浮点运算数字信号处理器。由于其具有强大的并行处理能力,能够较好得满足实时信号处理的要求,被广泛应用于各种高性能计算领域。本文在面向BWDSP目标体系结构、基于开源编译基础设施Open64的OCC编译器上设计并实现了针对程序循环部分的SIMD编译优化技术及其后端相关编译优化。OCC编译器在其层次化的中间语言WHIRL上进行SIMD编译优化。优化之前首先对程序循环体进行循环嵌套优化,将其中一些具有特定格式的程序转换为BWDSP所支持的高效特殊操作指令。SIMD编译优化阶段首先对候选循环进行预分析,剔除那些不易进行SIMD优化的循环程序,然后再进行收益分析计算、依赖关系分析优化和单双字寻址模式判别,根据循环体特点和寄存器压力选择出循环体中能够进行SIMD优化的指令类型,OCC编译器采用两套寻址模式能够同时支持多簇单字和多簇双字、以及复数寄存器对的SIMD编译优化,最后根据分析结果选择出其所支持的向量化类型进行SIMD代码生成。本文采用一些常用的DSP算法程序作为测试,比较了SIMD优化前后程序的加速比,实验结果表明SIMD优化前后程序的性能能够得到很大的提升。OCC编译器后端的代码生成模块是与BWDSP体系结构最为密切相关的部分,因而有必要针对SIMD编译优化进行后端重定向。根据BWDSP的硬件资源和指令集特点,扩展后端代码生成模块中的各个阶段,完成SIMD编译后端相关的优化。该模块中主要阶段包括机器描述、SIMD指令注释、SIMD指令分簇、SIMD分簇寄存器分配和SIMD代码生成等。最后本文采用上述的DSP算法程序作为测试集,将面向BWDSP的OCC编译器和面向ADI TS201的C编译器进行SIMD优化后的性能对比,结果表明OCC编译器的SIMD优化性能大体是TS201 C编译器的2.5倍左右。