微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > TL6748 DSP 程序运行时间量测与程序优化

TL6748 DSP 程序运行时间量测与程序优化

时间:10-02 整理:3721RD 点击:
        接触DSP有大半年时间,对DSP有了一个大概的了解。
        本人尝试用DSP做了几个小项目,现在看来对自己从单片机到DSP的过度起到了不小作用。
        先说说DSP程序运行时间测量吧,以前在做单片机项目里面考虑得比较少。现在使用DSP就不同了,DSP在项目中主要起数据处理、数据运算作用。
        数据运算时间对整个项目的性能起着决定性作用,DSP程序中经常要用到测量某个程序的运行时间。
        我们在项目中测量程序运行时间主要有一下几种方法:
                1>.      TI DSP编译环境CCS3.3, 在profiler菜单中,选择Enable Clock和view clock,在view clock窗口中可                                   以看到程序运行的时间/周期(时钟)数。

                  在view clock窗口中第2行显示的时间就是程序从第1行所在位置到第2行位置的时间,也就是你要测定的                         时间。

                 缺点:时间cycle数据不准确,比实际的要大。如果用profiler得到的数据比你的要求好要少的话,那就说明                                  已经达到了要求。

                 克服方法:(1)多次统计;

                                     (2)测量之前重新使能  Enable Clock和view clock 。


                2>.    使用clock 测试程序运行时间

                          #include
                              clock_t start,stop,overhead,t;

                          start=clock();
                              stop=clock();
                              overhead=start-stop;
                              start=clock();

                          ****************************

                           中间是要测试的代码

                         ****************************

                        stop=clock();
                             t=stop-start-overhead;

                          在profiler中设置Enable Clock以及时钟周期,完了单步运行后就能看见结果。


                3>.   利用TSCL和TSCH来测量DSP程序运行时间

                           #include

                           #include

                          void main()

                          {

                            unsigned long long start;
                                unsigned long long end;

                            TSCH=0; //Very important! Enable the registers.

                            TSCL=0; //Very important! Enable the registers.

                             start = _itoll (TSCH, TSCL);

                             // start = TSCL;
                                  ...
                                end = _itoll (TSCH, TSCL);

                             // end = TSCL;

                             printf("%d DSP-cycles\n",end-start);

                       }


           DSP开发,测量某个函数或某段代码的cycles消耗是经常要做的事情,常用的profiling和clock()一般在simulation下使用。其实在c64x+ core上有两个计数寄存器TSCL/TSCH,它们与CPU同频,共同表示一个64-bit数,CPU运行一个cycle,该寄存器就加1,因此可以用它们来准确的测量cpu在某个执行段中消耗的cycles。一般我们只会用到TSCL这个寄存器,而TSCH是高32位,除非测试整个工程,一般用不到它。


   我使用的开发板DSP芯片是TMS320C6748,用第三种方法特别方便。我做项目是用的时间测量方法就是方法3.


   再说说程序优化,程序优化对DSP的重要性就不在提了,现在主要分析程序优化的方式。

   1>   选择合适的算法和数据结构;

   2>   使用尽量小的数据类型;

   3>   减少运算的强度;

   4>   结构体成员的布局;

   5>   循环优化;


    每一种优化方式都需要工程师针对相应的开发环境对症下药。

    授人以鱼不如授人以渔。

    在工作中学习,学习后工作!



还在用ccs3.3?创龙的仿真器不支持吧?

   之前用过CCS3.3,创龙的开发板用CCS5.5

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top