变量都是全局变量,定义成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实现同步计算????