论文部分内容阅读
现代高性能数字信号处理器(Digital Signal Processor,DSP)许多都是超长指令字(Very Long Instruction Word,VLIW)体系结构,拥有丰富的指令执行单元和存储单元。程序指令序列中的前后指令之间往往存在不同原因的依赖关系,如何通过代码调度来有效地利用处理器提供的指令级并行性能力也成了一个大问题。对于支持谓词执行的VLIW DSP处理器,指令的条件执行让指令并行的问题变得更加复杂。传统方法通过人工编写汇编代码来保证代码的高并行度,但这种耗时易错的方法对超长指令字处理器来说已经日益显得难以满足需要。因此,结合处理器的硬件特性在编译层面对代码调度进行优化处理变得十分重要。考虑VLIW DSP处理器指令执行单元较多以及谓词执行的特性,本文对基本块调度的相关问题进行研究,提出了有助于提高指令并行度的相关算法。具体包含以下几个方面:1.面向谓词执行高性能DSP的指令间依赖关系分析方法。DSP处理器是一类嵌入式系统,它们都具有硬件资源可配置的特性,部分高性能DSP还具有谓词执行特性。为充分利用处理器的硬件特性,本文提出了面向谓词执行高性能DSP的指令间依赖关系分析方法。该方法在分析过程中主要考虑了程序中某条件执行指令与其它指令间的依赖关系,其中包括了指令间的配置依赖关系。并在分析访存依赖和变量依赖关系的过程中特别考虑了互补条件执行指令对的情况,能为具有谓词执行特性的DSP处理器分析出指令间更准确直接的依赖关系。2.前瞻功能单元完成时间的成组启发式指令选择方法。VLIW DSP处理器指令执行单元较多,多条指令可以在不同功能单元中并行执行。为充分发挥处理器功能单元的执行效率,本文提出了前瞻功能单元完成时间的成组启发式指令选择方法。该方法将指令间依赖关系对功能单元就绪指令集合内容的影响抽象为功能单元间的关联模型,提出两个组合启发式元素:有多级剩余指令待执行的功能单元数量、功能单元的完成时间。结合功能单元中剩余指令的依赖优先级数,在调度时预估功能单元执行完剩余指令的时间,使各功能单元执行指令的过程更协调,减少基本块代码的执行时间。3.低级中间代码的基本块合并方法。考虑高性能DSP处理器的谓词执行特性,在不改变控制流图构造过程的基础上,本文提出了能精简流图的低级中间代码的基本块合并方法。该方法主要考虑到代码中的跳转指令都可能是条件执行的,并特别考虑到会出现互补条件执行跳转指令对的情况,对含有互补条件执行跳转指令的基本块对以及它们的跳转目标基本块对进行合并。由于不必在进行控制流分析时就考虑处理器的谓词特性,从而构造流图的过程更简单清晰,为低级中间代码分析提供了一个清楚有效的方案。