1121|0

3741

帖子

0

资源

纯净的硅(中级)

TI 6000系列DSP优化经验 [复制链接]

一、首先考虑从系统结构上优化,比如尽量减少待处理数据的无谓搬移,考虑你DSP片内存储量和每次处理数据量对系统结构优化,这部分的优化应该最早做;
二、其次从算法层面上着手,看采用的算法有没有更好更简单的计算方法,算法是否有某种对称性,可否采用更合适的数据结构等等,这方面的优化比程序上的优化更明显;
三、如果算法层面暂时无更好的优化办法,看看软件结构能否优化。
比如:
      1)多层的循环结构能否减层。我经常看到这样的程序:
         for(i = 0; i++; i< A)
                for(j = 0; j++ j< B)
                {
                      E[i][j] = C[i][j] - D[i][j];
                }
         这个可以优化成:
         for(i = 0; i++; i          {
                  E[i] = C[i] - D[i];
             }
         2) 关键循环结构中的条件、跳转指令应尽量避免,哪怕会增加一些循环次数,循环中没有条件指令优化器更容易优化;
         3)关键循环不要调用子函数
         其它还有一些,具体可以看看手册,手册上讲的很清楚
四、结合DSP系统的硬件结构优化
         1)看你处理的数据是放在片内还是片外,如果放在片外的话这个建议将数据分块分批倒入片内处理,类似于流水结构;
         2)针对外部数据可对L2 cache优化
五、结合DSP优化器、指令系统等进行优化
          这部分可以详细的看TI的手册,大概有这几个方法:
         1)优化选项,-o3 -pm 取消-g 等等这些选项,如果你的软件结构很好,那么它们的优化效果很明显;
         2)加一些优化指示符指导优化,这部分看手册,包括存储地址无关性,SIMD(单指令多数据处理)等等;
         3)用一些专用指令,比如6000提供饱和加、溢出减指令,可以不必用条件判断;
         4)如果效果还是不好,用线性汇编改写你的程序,将你的优化思想用线性汇编表述出来,一般到地步就可以了;
         5)如果线性汇编优化未能尽显你的优化思想,那就汇编吧,优化器不会再帮助你优化,完全是你自己控制程序了;
          这部分需要有比较丰富的优化经验和扎实的优化功底,多多积累,多看资料。
ps:
系统结构上的优化这个需要在方案阶段考虑,主要是硬件和数据流这些方面的!
算法这个东西很重要,做优化的最好对算法有大致地了解才行,有时一个实现思路的改变会帮你优化很多。
就算你不对算法本身做优化,对算法了解对你做程序优化也是有帮助的。
我是从汇编转到C上来的,后来对C做优化的时候发现对汇编指令的了解非常有助于做优化,
你有空的话可以看看汇编指令,尤其是64核的dsp,很多打包指令和SIMD指令对程序级优化帮助很大。
你不用写汇编,写写线性汇编就行了,不用安排并行,这点比汇编省很多功夫。
我现在做优化都是试着用c做,然后看看反汇编的指令,不满意的话用线性汇编写个,一般到这步都差不多了。
还有可以多看看ti imglib的优化代码,ti提供了,多看看你会有收获的!


最后要重点说下:
          优化是没有止境的,在对程序对细致优化前要对程序每个部分测试下时间,要对非常耗时的部分做优化,一但满足你的要求就可以,不要为了优化而优化,我们应该有更重要的东西要学,不要陷在优化上而不能自拔!!


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/9 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表