TI中文支持网
TI专业的中文技术问题搜集分享网站

(CCS开启优化功能后) C语言写的并列加法,寄存器A/B及8个处理单元为什么没有并行运行?

     变量都是全局变量,定义成Uint32变量.

Chan0Delta0 = Chan0Delta0 + Chan0Delta;
Chan1Delta0 = Chan1Delta0 + Chan1Delta;
Chan2Delta0 = Chan2Delta0 + Chan2Delta;
Chan3Delta0 = Chan3Delta0 + Chan3Delta;

    C64X有8个单元(2个运算单元),于是我把CCS优化开关打到-03,本来想让代码能同时执行加法运算,反汇编发现并没有并行执行??

                   

================================================================================================

         我本意想让DSP加法运算两两一起计算,因为C64X+内部有8个单元(2个加法器),优化开关是打开了的,为什么DSP就不多个加法一起运算呢?或者有说明办法在定义上让:

        Chan0Delta0保存到A寄存器,Chan0Delta保存到B寄存器,这样第一组运算可以同时取数据,

       Chan0Delta1保存到A寄存器,Chan1Delta保存到B寄存器,这样第二组运算可以同时取数据,

然后两组加法又实现同时计算!!!

      Chan0Delta0 = Chan0Delta0 + Chan0Delta;

      Chan1Delta0 = Chan1Delta0 + Chan1Delta;

               从C语言上,有说明办法实现没有???

谢谢赐教!!!!!!!

Thomas Yang1:

B4计算资源冲突了,不可能同时执行的,并且都是用的L2,你可以用矢量运算指令,比如DADD进行优化

dong wei1:

回复 Thomas Yang1:

       就是因为都读到了B4所以冲突,这个我明白。

      我问的本意是有啥子办法,比如让编译器将Chan0Delta0,Chan0Delta0读到A寄存器,Chan1Delta0,Chan1Delta0读到B寄存器,这样L1计算A寄存器,L2计算B寄存器,还有S1,S2都能计算加法。这样不是就可以几个加法同步计算了。。

      用汇编,我知道可以认为这样写,能达到。我想问问,C语言怎么写才能让DSP实现同步计算????

赞(0)
未经允许不得转载:TI中文支持网 » (CCS开启优化功能后) C语言写的并列加法,寄存器A/B及8个处理单元为什么没有并行运行?
分享到: 更多 (0)