2 TMS320C64X的软件开发
流程。
TMS320C64X内部有8个独立的功能单元,所以在一个周期内最多可以并行执行8条指令。然而指令与功能单元之间特殊的映射关系、每一条指令执行时间的不相同、每一条指令的数据通路的不相同和指令间操作数的相关性等因素,致使一个周期内实际能并行执行的指令数达不到8条,从而降低了DSP的性能,因此,必须采用合理的开发和优化流程,尽可能的对代码进行优化,从而提高指令执行的并行度。
如图1所示,工作流程一般分为三个阶段。
阶段一:直接按照需要用C语言实现功能。在实际的DSP应用中,许多算法都是非常复杂,直接用汇编代码编写,虽然优化效率很高,可是实现的难度却很大,所以一般都采用先用C语言来实现,然后编译运行,利用C64X开发环境的profile clock工具测试程序运行时间,若不能满足要求,则进行第二阶段。
阶段二:C语言级的优化。选择C64X开发环境提供的优化方式以及充分运用其他技巧,优化C代码,若还不能满足效率要求,则进行第三步。
阶段三:汇编级的优化。将上一阶段C程序中优化效率较低的部分提出来,用线性汇编语言编写,利用汇编优化器进行优化。汇编优化器的作用是让开发人员在不考虑C64X流水线结构和分配其内部寄存器的情况下,编写线形汇编语言程序,然后汇编优化器通过分配寄存器和循环优化将汇编语言程序转化为利用流水线方式的高速并行汇编程序。
上述的三个阶段不是都必须经过,当在某一阶段获得了期望的性能,就不必进行下一阶段的优化。
3 C代码的优化方法
对于C64X平台下的C源程序,可以选用的优化方法有:
1) 选用C编译器提供的优化选项
在编译器中提供了分为若干等级和种类的自动优化选项,如下:
● -o:使能软件流水和其他优化方法
● -pm:使能程序级优化
● -mt:使能编译器假设程序中没有数据存储混淆,可进一步优化代码。
● -mg:使能分析(profile)优化代码
● -ms:确保不产生冗余循环,从而减小代码尺寸
● -mh:允许投机执行
● -mx:使能软件流水循环重试,基于循环次数对循环试用多个方案,以便选择最佳方案。