Ti c64x 优化基本策略 zz

来源:百度文库 编辑:神马文学网 时间:2024/10/02 21:22:37
Ti c64x 优化基本策略
以下摘自新浪博客一、优化流程一般分为三个阶段。阶段一:直接按照需要用C语言实现功能。在实际的DSP应用中,许多算法直接用汇编代码编写,虽然优化效率很高,可是实现的难度却很大,所以一般先用C语 言来实现,然后编译运行,利用C64X开发环境的profile; clock工具测试程序运行时间,若不能满足要求,则进行第二阶段。阶段二:C语言级的优化。选择C64X开发环境提供的优化方式以及充分运用其他技巧,优化C代码,若还不能满足效率要求,则进行第三步。阶段三:汇编级的优化。将上一阶段C程序中优化效率较低的部分提出来,用线性汇编语言编写,利用汇编优化器进行优化。汇编优化器的作用是让开发人员在不考 虑C64X流水线结构和分配其内部寄存器的情况下,编写线形汇编语言程序,然后汇编优化器通过分配寄存器和循环优化将汇编语言程序转化为利用流水线方式的 高速并行汇编程序。上述的三个阶段不是都必须经过,当在某一阶段获得了期望的性能,就不必进行下一阶段的优化。二、选用C编译器提供的优化选项● -o:使能软件流水和其他优化方法● -pm:使能程序级优化● -mt:使能编译器假设程序中没有数据存储混淆,可进一步优化代码。● -mg:使能分析(profile)优化代码● -ms:确保不产生冗余循环,从而减小代码尺寸● -mh:允许投机执行● -mx:使能软件流水循环重试,基于循环次数对循环试用多个方案,以便选择最佳方案。三、减小存储器相关性为使指令达到最大效率   C64X编译器尽可能将指令安排为并行执行。为使指令并行操作,编译器必须知道指令间的关系,因为只有不相关的指令才可以并行执行。当编译器不能确定 两条指令是否相关时,则编译器假定它们是相关的,从而不能并行执行。设计中常采用关键字const来指定目标,const表示一个变量或一个变量的存储单 元保持不变。因此,在代码中加入关键字const,可以去除指令间的相关性。例如下面的程序:void vecsum(short *sum,short*in1,short*in2,unsigned int N){ int i;   for(i=0;i