论文部分内容阅读
动芯是由中科院计算所无线通信技术研究中心自主研发的面向宽带无线通信的基带信号处理芯片,矢量DSP(Digital signal processor)是芯片的核心处理器。动芯矢量DSP上运行的是基带信号处理程序,由于基带信号处理数据流呈现数据计算密集,控制流交互的特点,动芯矢量DSP采用SIMD(Single Instruction Multiple Data)/VLIW(VeryLong Instruction Word)混合架构。 动芯矢量DSP的SIMD/VLIW架构特点,要求动芯矢量DSP的编译器生成的可执行代码能充分利用处理器的并行性。但动芯矢量DSP基于GCC移植的编译器向量指令的识别率不是很高,程序的并行性基本靠程序员手写汇编或者C嵌汇编以及Intrinsic函数来对程序的关键部分进行优化,这是一种低附加值的方式。 本篇论文旨在挖掘基带信号处理算法程序的并行性,提升动芯矢量DSP生成代码的数据并行性和指令并行性。研究路线是对基带信号处理程序进行特性分析,根据程序分析结果提出动芯矢量DSP的SIMD自动向量化优化方法及VLIW代码生成优化方法。 本文基于LLVM(Low Level Virtual Machine)架构,采用编译辅助的程序量化分析方法,对程序热点、程序控制流特点等进行了分析,针对程序热点的访存向量化问题进行了SIMD自动向量化优化;针对循环进行了VLIW指令调度优化。最后,搭建完成了基于LLVM架构的动芯矢量DSP编译优化平台,在该平台对优化方法进行了实现与评估,通过实验结果可看出提出的编译优化方法提升了生成代码的并行性。