DSP程序开发与优化经验之三:C6XX优化经验总结
2014-02-16 18:12
211 查看
1. C6XXX编译选项优化
(一)有关优化的选项,软件流水
-o3:对文件级别进行最强的优化,一般在编译时应该使用这个选项。
-pm:在程序级别进行优化。可以将所以文件联合在一起进行优化,主要有去掉没有被调用的函数、总是常数的变量 以及没有使用的函数返回值。
-ms0:不使用冗余循环进行优化,减小程序的大小。一般情况下这个选项对程序大小的优化作用不明显。
-mh
:去掉流水线的epilog,减小程序的大小。这个选项的作用比较明显。
(二)其它类型 -mln:生成大内存模式的程序。
-ml0:缺省情况下将集合变量(数组和结构)作为far型。
-ml1:缺省情况下将全部函数作为far型
-ml2: 等于-ml0加-ml1
-ml3: 缺省情况下将全部数据和函数作为far型
2. 双重循环和多重循环的优化总结
双重循环多重循环看起来比较复杂,但实际上多重循环优化方法比较简单,就在于一个字:“拆”,一旦完成这一步之后,多重循环就成为单层循环,优化就可以按照普通的单层循环来做了。
多重循环的特点是在优化器优化时只在最内层循环中形成一个pipeline,这样循环语句就不能充分利用C6的软件流水线,而且对于内部循环的次数较少的情况,消耗在prolog和eplog上的cycle数也是不可忽视的。
针对这种状况可以考虑将多重循环拆开形成一个单层循环,可以拆外层循环也可以拆内层循环。
3.
使用C6XXX内联指令,字节操作,半字操作,字操作等。
4.
使用TI自带函数库DSPLIB,IMAGLIB
5.
使用TI自带加速器。例如:VCP2,TCP2.
6.
程序算法层面优化:例如CRC,交织,卷积编码,都可以由比特操作转换为字节,或字操作。
7.
其它优化
键字const可以指定一个变量或者一个变量的存储单元保持不变,这有助于帮助编译器确定指令的不相关性,例如源代码不能并行执行,而结果改编后的代码可以并行执行。使用const可以限定目标,确定存在于循环迭代中的存储器的不相关性。
计数循环用int,unsigned
int; 相乘用short * short ;除法转换为乘法 。
其它详细资料可以参考如下网址:
http://www.cnblogs.com/rainbowzc/archive/2006/09/05/2422306.html http://www.docin.com/p-711793578.html http://wenku.baidu.com/link?url=UuXz1s2n3U05C81tLSL-zRBWbUDFg2mf34lUgMUgR9Hhw9uwt0yvPUMlQfK7FCfEKBfMZnL6fU07EO-TMKe0pstJjWnw6vz2tjHaKQ1sT3O
<联系方式:QQ1279682290>
(一)有关优化的选项,软件流水
-o3:对文件级别进行最强的优化,一般在编译时应该使用这个选项。
-pm:在程序级别进行优化。可以将所以文件联合在一起进行优化,主要有去掉没有被调用的函数、总是常数的变量 以及没有使用的函数返回值。
-ms0:不使用冗余循环进行优化,减小程序的大小。一般情况下这个选项对程序大小的优化作用不明显。
-mh
:去掉流水线的epilog,减小程序的大小。这个选项的作用比较明显。
(二)其它类型 -mln:生成大内存模式的程序。
-ml0:缺省情况下将集合变量(数组和结构)作为far型。
-ml1:缺省情况下将全部函数作为far型
-ml2: 等于-ml0加-ml1
-ml3: 缺省情况下将全部数据和函数作为far型
2. 双重循环和多重循环的优化总结
双重循环多重循环看起来比较复杂,但实际上多重循环优化方法比较简单,就在于一个字:“拆”,一旦完成这一步之后,多重循环就成为单层循环,优化就可以按照普通的单层循环来做了。
多重循环的特点是在优化器优化时只在最内层循环中形成一个pipeline,这样循环语句就不能充分利用C6的软件流水线,而且对于内部循环的次数较少的情况,消耗在prolog和eplog上的cycle数也是不可忽视的。
针对这种状况可以考虑将多重循环拆开形成一个单层循环,可以拆外层循环也可以拆内层循环。
3.
使用C6XXX内联指令,字节操作,半字操作,字操作等。
4.
使用TI自带函数库DSPLIB,IMAGLIB
5.
使用TI自带加速器。例如:VCP2,TCP2.
6.
程序算法层面优化:例如CRC,交织,卷积编码,都可以由比特操作转换为字节,或字操作。
7.
其它优化
键字const可以指定一个变量或者一个变量的存储单元保持不变,这有助于帮助编译器确定指令的不相关性,例如源代码不能并行执行,而结果改编后的代码可以并行执行。使用const可以限定目标,确定存在于循环迭代中的存储器的不相关性。
计数循环用int,unsigned
int; 相乘用short * short ;除法转换为乘法 。
其它详细资料可以参考如下网址:
http://www.cnblogs.com/rainbowzc/archive/2006/09/05/2422306.html http://www.docin.com/p-711793578.html http://wenku.baidu.com/link?url=UuXz1s2n3U05C81tLSL-zRBWbUDFg2mf34lUgMUgR9Hhw9uwt0yvPUMlQfK7FCfEKBfMZnL6fU07EO-TMKe0pstJjWnw6vz2tjHaKQ1sT3O
<联系方式:QQ1279682290>
相关文章推荐
- DSP程序开发与优化经验之二:程序运行时间测量方法总结
- DSP程序开发与优化经验之四:浮点仿真转化为定点化DSP程序
- DSP程序开发与优化经验之二:程序运行时间测量方法总结
- DSP程序开发与优化经验之一:TI多核处理DSP C66XX开发经验
- DSP程序开发与优化经验之四:TMS320C64x+ DSP------Using Cache
- 【DSP开发】DSP程序优化
- EBS开发性能优化之查找需要优化的程序
- 微信小程序开发踩坑经验——小蜗社群
- C#.NET软件项目中程序开发外包经验分享【从接包者转变为发包者】
- Java开发中程序和代码性能优化
- C# 开发WM程序性能优化的几个可能的方面
- PHP开发程序应该注意的42个优化准则
- 基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
- TI-Davinci开发系列之二使用CCS5.2TI Simulator模拟器调试DSP程序
- 使用VC开发程序经验谈(二 续)
- DSP程序优化方法
- 小程序开发基本框架及其限制与优化
- 2015061806 - 10年程序开发经验总结(3)
- 3年前的一个小项目经验,分享给菜鸟兄弟们(公文收发小软件:程序开发部分)
- 16-OMAPL138基于CCS的DSP程序开发入门教程