论文部分内容阅读
BWDSP是一款高性能数字信号处理器,采用超长指令字(Vety LongInstruction Word, VILW)和单指令多数据流(Single Instruction Multiple Data, SIMD)体系结构。较通用处理器而言,VLIW将指令调度的工作交由编译器处理,对编译器提出了更多的要求,并且BWDSP本身提供了大量特殊指令,通用编译器无法合成这些特殊指令。本文的主要工作是将Open64重定向到BWDSP目标体系结构,然后在此基础上,结合目标体系结构的特性提出了基于存储位置的向量化算法和基于whirl树的向量化算法,以及特殊指令的合成算法框架。基于存储位置的向量化算法借助编译制导在前端将可合成向量化的循环进行标示,经过预处理、代码移动后合成向量化指令,然后对向量化指令调用支持向量化的分簇算法和支持向量化的寄存器分配算法,并在指令链上插入必要的簇间传输指令。最后的评估结果表明该算法对于计算密集型的程序有很大的性能提升。Open64中间表示whirl具有清晰的树形结构,所以基于whirl树的向量化算法另辟蹊径,在中层whirl上对whirl树进行变换,加入向量化指令信息。该算法针对嵌套循环的最内层循环,进过预分析、特殊的向量化处理、预处理、SIMD指令合成、SIMD归约处理、SIMD后续处理等步骤,最终合成BWDSP体系结构中特殊的向量化指令。在基于whirl树的向量化算法的基础上,本文还提出了针对BWDSP的特殊指令的合成算法框架。特殊指令合成算法框架首先对特殊指令进行建模,分析出合理匹配指令的whirl树框架,在机器描述以及whirl语言中增加关于特殊指令的操作码和操作符信息,最终对whirl树进行匹配,将符合匹配框架的whirl树替换为新生成的包含特殊指令操作符的whirl node,达到合成特殊指令的效果。该算法框架已经在MIN、MAX指令的合成中得到了初步的验证。