论文部分内容阅读
编译器是任何计算机系统不可缺少的重要部分,它负责将用户用高级语言开发的程序翻译为汇编语言,进而转换成可执行的目标机器代码。随着语言和目标平台体系结构的发展,编译器的设计也面临了越来越大的挑战,它不但要适应各种新的高级编程语言,而且要支持目标机器中出现的新的硬件特征。媒体处理器在数字信号处理和多媒体处理等领域有着广泛的应用,为了提高多媒体处理的能力,媒体处理器中在硬件设计方面的一个普遍特征是引入了SIMD指令,从而使得媒体数据的快速处理成为可能。但目前的编译技术不能很好的提供对SIMD指令的支持,因此本文深入研究了面向媒体处理器的编译器中的一些关键技术。目前使用SIMD指令的主要手段是程序员在编译器的有限支持下,直接通过汇编语言来编写代码,这样不仅费时费力,而且代码重用率低下,严重影响了软件开发的效率。为了能够让SIMD指令被充分利用,我们需要编译器自动的从高级语言生成与媒体处理器相对应的SIMD指令(称为SIMD编译优化)。MD32是浙江大学信息与通信工程研究所自行开发设计的32位媒体处理器,它结合了RISC和DSP各自的特点,主要面向媒体处理等应用。并提供了以MMX技术为基础的多条面向多媒体运算的SIMD指令,称为MDS指令。本文首先从媒体处理器MD32中的SIMD指令的特点和编译器中代码生成两个角度去分析传统编译器无法生成SIMD指令原因,并结合基于树模式匹配的代码生成的特点,设计了一种改进的指令选择器来支持SIMD指令的生成。MD32还在不断的发展之中,其功能也在不断的增强。为了适应目标机器的这种变化,需要在可重定向编译器中实现对SIMD指令的支持,本文提出了一种基于中间表示树合并的SIMD编译优化方法,在提高了代码质量的同时,能保持原编译器的可重定向性不变,使其能够快速的适应目标机器在指令系统等方面的变化。另外,改进后的编译器也能够十分方便地重定向到其他媒体处理器。