论文部分内容阅读
为满足无线通信对实时性、低功耗的要求,信号处理器多采用SIMD(single instruction multiple data,单指令多数据)架构以加速对程序的处理。本文依托动芯矢量DSP(Digital Signal Processor,数字信号处理器),在LLVM(Low Level Virtual Machine,低级虚拟机)编译框架下改进并实现面向基本块的自动向量化算法,全文研究内容如下:1.深入研究LLVM中以基本块为单位的传统自动向量化算法,并分析该算法目前影响向量化效果的原因。2.通过分析自动向量化算法,发现基本块内部指令数目较少以致于向量化挖掘困难,因此本文通过调研行业现状采用循环正规化方法扩展基本块内指令数目,加大并行指令挖掘范围。3.自动向量化中的大规模并行指令对选取算法依赖于生成有向无环图和使用深度因子修剪有向无环图中冲突节点的方法实现,因此深度因子的好坏直接决定向量化优化效果。目前在依赖关系较为复杂的条件下原算法的深度因子已不能满足最初设计需求,易造成修剪枝时的误判,最终影响程序的向量化效率。本文从以下三点优化原算法:1)改进静态深度因子,获取更加正确的先验信息以修剪枝,从而提高优化指令数。2)构建动态深度因子,使得修剪枝时获取的指令链更长。3)使用深度因子改进子树的构造顺序,合理利用深度因子对优化潜在性的表达,使得深度因子大的子树先生成,降低子树生成的随机性,最终提高程序优化效率。4.研究广度因子替代深度因子的自动向量化方法,并在LLVM平台上实现该算法,实验结果表明在寄存器压力和复杂度的影响下,该方法运行时间过长,限制了它的应用。最后,在LLVM编译架构下实现改进的自动向量化算法,并使用行业通用测试例进行验证,实验结果表明改进的自动向量化算法主要从两个方面影响向量化效果:1)并行指令数的提升。2)在生成相同数目向量指令的条件下,产生更少的额外开销。