EDN China > 技术文章 > 微处理器与DSP > 多媒体处理器 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

C6000软件优化经验总结(1)

来源:无忧电子开发网?? 2006年07月05日 ?? 收藏0

???????? 在这个多层循环中一共有三层循环,而最内层的循环的运算量很小,只有一次乘累加操作,而我们知道C6中一个packet中可以做两个乘累加运算,所以为了增加内部循环的运算,减少外部循环的层数,我们可以将第一层循环的操作拆开,其负责的运算加入到内部循环中,也就是在内层循环中一次做四次的乘累加运算,这样将多次操作形成pipeline,提高了运行效率,优化后的C代码如下:??????????????????????????????????????????????????????

??? tot = 4;???????

max0=0;

? max1=0;

? max2=0;

? max3=0;

?for (i = 0; i <44; i += STEP)???????????????? //STEP=4,? 11 times cirs

? {?

?????????????????????? //code

????? for (j=0;j<=40-i;j++)

????????????????????? {s0=(Word32)(_sadd(s0,_smpy(hh[j],xx[j+i])));

??????????????????????? s1=(Word32)(_sadd(s1,_smpy(hh[j],xx[j+i+1])));?

??????????????????????? s2=(Word32)(_sadd(s2,_smpy(hh[j],xx[j+i+2])));

??????????????????????? s3=(Word32)(_sadd(s3,_smpy(hh[j],xx[j+i+3])));

?????????????????????? }

???????????? }

??????????????? //code?


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

软件优化? C6000? 总结?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈