Part Number:TMS320C6748
点乘优化时使用了LDDW保证加载数据的效率,但存在如下现象:
1.若点乘的两路输入都32字节对齐,则点乘效率较最优时下降一半,此时,若两者同步后移8/16/24字节,工作效率均恢复正常。
2.若其中第一组数据的起始地址对齐方式往后偏移16字节,则两者同步后移8/16/24/32字节,都可以保证效率正常。
CPU指令集手册(sprufe8b)中,介绍LDDW指令时,未提及两个.D单元LDDW并行load数据时存在限制。考虑到1/2两种情况下,数据都始终保持8字节对齐,故不能用mem_bank冲突来解释。
我的疑问是,这一现象产生的原因是什么?
Nancy Wang:
我已将您的帖子转给相关专家,请等待回复。
,
jiuchao yin:
using namespace std; #pragma DATA_ALIGN(32) unsigned short index[4096+4];#pragma DATA_ALIGN(32) unsigned short index2[1024];//#pragma DATA_SECTION(".far:optimized"); #pragma DATA_ALIGN(32) float x1[1024+16+4];//#pragma DATA_SECTION(".far:optimized"); #pragma DATA_ALIGN(32) float x2[1024+16+4];#pragma DATA_ALIGN(32) float x3[1024+16+4];void CPerformanceTester::test() {for(int offset=0;offset<8;offset+=2){mTC.StartTimer(1);//启动1号计时器for(int i=0; i<1000000; i++){DSPF_sp_dotprod(x1+offset, x2, 1024);//DSPF_sp_dotprod_lib_n2a8(x1+offset, x2, 1024);}mTC.StopTimer(1);mTC.PrintResult(1);} }这是测试代码和结果