论文部分内容阅读
现代DSP(Digital Signal Processor)处理器大多使用VLIW(Very Long Instruction Word,超长指令字)体系结构,它主要通过挖掘指令级并行性,即将多条指令放在同一时钟周期发射来获得高性能处理能力,这个任务通常是由编译器来完成的。随着在同一时钟周期发射数目的增加,对资源的需求也迅速增加,传统上使用的集中式寄存器文件很快就达到了设计的瓶颈。为了解决这个问题,越来越多的DSP处理器采用分簇体系结构,这也给编译器的设计带来了巨大的挑战。本文的主要工作是基于可重定向编译基础设施IMPACT为某研究所生产的一款DSP处理器BWDSP100开发C语言编译器,并针对DSP体系结构的特点和其应用领域对编译器的优化技术进行研究。主要包括研制和优化两个部分,具体的工作和贡献如下:1.为BWDSP100制定机器描述,并实现机器描述驱动的编译后端。机器描述主要通过描述目标机器的指令格式信息、资源使用信息、延迟信息和指令信息来将目标机器的指令集信息提供给编译器。这样编译器的后端可以很大程度上独立于目标机器并可以很方便的移植到各种平台。本文使用MD语言为BWDSP100编写了机器描述文件,减少了后端开发的工作量。2.针对BWDSP100的分簇体系结构,设计分簇算法。指令分簇的主要任务是将每一条指令分配到簇上,这个过程中要考虑到指令之间的依赖关系以尽量减少分簇结束后由于指令各操作数位于不同簇上而添加的簇间转移指令。我们基于DFG(Dataflow Graph,数据流图)提出了一种启发式的指令分簇算法,并考虑体系结构的特点进行优化,相对于传统分簇算法获得了8%的性能提升。3.针对体系结构特点和典型算法,对编译器进行了优化。设计了内建函数以在C语言中使用一些特殊机器指令,并针对调试模式和FFT算法进行了优化。实验表明,使用了这些优化措施之后BWDSP100编译器生成的汇编代码效率(时钟周期数)相对于主流DSP处理器TS201的编译器获得了30%的平均提升,在计算规模较大时性能更好。