???????? 在这个多层循环中一共有三层循环,而最内层的循环的运算量很小,只有一次乘累加操作,而我们知道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?
模拟设计 | 电源技术 | 嵌入式系统 | 微处理器与DSP | 可编程器件 | 测试与测量 | EDA工具与服务 | 通信 | 医疗电子 | 消费电子设计
工业电子 | 汽车电子 | 新闻 | 热点专题 | 论坛 | 小组 | 博客 | 微博 | 下载 | 视频 | 在线研讨会 | 杂志订阅 | 历史文章回顾
编辑部(编辑计划) - 广告部 - 发行部 - 读者往来 - 网站导航 - 电子网站 - 帮助- EDNChina- edn-china
京 ICP证090436号 | 京ICP备15045871号-4 | 京公网安备11010502019137 | 经营性网站执照信息?
EDN.com |
EDN Asia |
EDN Taiwan | EDN Japan |
EDN Europe |
EDN Australia | 电子工程专辑 |
国际电子商情 | DatasheetsChina
机器人网
友情链接 | 老古开发网 | 21ic中国电子网 | 电子发烧友 | 控制工程网 | 汽车工业网 | 史上最网 | 与非网 | 中自网 |
新版社区已上线,旧版论坛、博客将停用
1、为防数据丢失,旧版论坛、博客不再接受发帖;
2、老用户只需重设密码,即可直接登录新平台;
3、新版博客将于8月底完美归来,敬请期待;
4、全新论坛、问答,体验升级、手机阅读更方便。