论文部分内容阅读
编译器是计算机系统的重要组成部分,它可以将用户编写的高级语言程序翻译作目标机器上的汇编程序,从而方便了应用程序的开发。在数字信号处理、媒体处理、嵌入式系统等领域,数字信号处理器、媒体处理器有着广泛的应用。相对于通用处理器,这些专门用途处理器可以提供复杂而针对性强的指令,从而使得特定领域中的应用程序可以获得更高的执行速度。但是在这些目标机器上,要么专用指令难以从高级语言直接生成,要么寄存器和指令集异构,所以面向这些目标机器的编译器往往难以生成高效的代码。 寄存器分配和代码生成是决定编译器能否生成高效代码的关键部分。由于目标机器结构上的不同,面向媒体处理等领域的编译器在寄存器分配和代码生成上往往不能照搬面向通用处理器编译器中的相应部分,而应该根据特殊情况加以设计和改造。 MD160x和MD320x是浙江大学信息与通信工程研究所自行开发设计的两个系列的媒体处理器,主要面向数字信号处理和媒体处理等应用。针对MD160x和MD320x,分别设计开发了配套编译器MD16CC和MD32CC。MD16CC和MD32CC在寄存器分配和代码生成上分别具有各自的特点。 MD160x是具有流水结构的16位数字信号处理器,在MD160x中,指令集和寄存器异构,难以利用面向通用处理器编译器的图着色寄存器分配和基于模版匹配的代码生成法。为了生成高效的代码,作者设计了改进的直接代码生成器IDCG并在MD16CC上加以应用。 MD320x是一种结合了RISC和DSP各自特点的32位媒体处理器,提供通用目的寄存器,同时利用将一些通用目的寄存器用作索引寄存器或辅助寄存器提供了多种寻址方式。此外还提供了并行指令和SIMD指令,使得处理器具有强大的媒体处理能力。但同时,上述特点也使得MD32CC中可用来进行分配的寄存器数目较少,对寄存器分配算法带来很大的挑战。为了生成高效的代码,作者设计了改进的基于图着色的寄存器分配算法,有效提高了生成代码的质量。