DSP程序优化方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26623315/article/details/81199224

对程序进行优化前后,程序在DM6437平台上的运行效率能有明显的提升,常用的优化方法一般从三个方面展开。

1 对程序编译工具进行合理配置

单击project然后选择build options打开配置界面,如下图所示。

这些编译选项分为以下几类:

  1. Basic:所包含的具体选项有:-g,用于选择是否生成全面的调试诊断信息;-ms(n),在进行减小代码尺寸与提升程序执行效率之间权衡;-o(n),n表示优化的级别,级别越高,程序效率越高,但越不稳定,一般选择-o2优化;-opt(n),用于确定编译器是否对外部函数、外部变量进行优化;-pm,表示是否允许编码器对整个工程的所有源代码联合观测。
  2. Advanced:所包含的选项有:-mh(n),优化程序中循环体软件流水的编排从而加速程序执行;RTS Modification,其中Defns No RTS指没有说明和改变库函数,Contains RTS指用户文件说明了标准库函数,Alter RTS指用户文件改变了标准库函数;Aliased Variables,避免发生混叠,使编译器产生更佳的指令集并执行程序。

2 硬件层面的优化

  1. 通过编译器选项设置-o2及以上,预处理指令#pragma MUST_ITERATE()的使用,将大量的一种循环以及内循环为常数次的二重循环展开。
  2. 通过编译器设置-k选项,获得编译器对循环体的编译信息,对过大的、编译器难以完成软件流水编排的循环体进行手动分离,通过分离为多个较小的循环体实现原大循环体的软件流水执行效果。
  3. 通过restrict关键字的使用,消除编译器对不同数据域可能存在依赖性的顾虑,减少了Loop carried dependency与memory aliasing等造成的依赖性,有利于指令的并排编排与运行。
  4. 使用Cache,DM6437基于哈佛结构,设计了两级缓存,各缓存区能够根据实际需要灵活配置,可以通过DSP/BIOS静态配置界面对Cache进行设置,选择Global Settings选项,配置后的界面如图所示。

 

  1. DSP程序生成的可执行文件按段的方式进行存储,不同的段存储于不同的区域,而这会在影响内核访存的基础上进一步影响程序执行的效率,因此可以优化设置各个段的存放位置,提升程序执行效率,可通过配置DSP/BIOS实现。

3 支持库的使用 

       TI对其DSP配备了一些高性能的支持库,如对DM6437的优化浮点运算的IQmath库和包含许多常用图像处理算法的VLIB库,使用这些库,能够明显提高DSP的运算效率。需要注意的是在使用IQmath库时需要对使用IQ数据类型的精度和支持数据范围进行权衡,从而获得较好的效果。

猜你喜欢

转载自blog.csdn.net/qq_26623315/article/details/81199224
dsp