1321|0

1140

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

DSP下的简单性能优化 [复制链接]

     在DSP6416下开发TDD模式的MAC层协议,发现了一些问题,也对时间性能做了简单优化。

     在开发MAC层的过程中,发现了很多影响DSP运行速度的因素,主要包括:

1.     动态内存申请和释放,即malloc和free函数的使用。

当使用次数不多时,malloc和free的处理过程耗时为us级。但当多次动态申请内存后,free函数中会进行内存碎片整理和回收,持续时间可能会到达ms级,且具有系统最高优先级,不可被打断。严重影响MAC层实时性的响应。

因此需将使用动态申请内存的部分改为静态的内存,即用数组的方式固定占用内存。考虑到IRAM空间小,将实时性不高且大量占用空间的存储结构放到SDRAM中,通过IRAM的指针去访问。

2.     存储拷贝memcpy函数

memcpy函数是影响MAC运行速度的一个因素。memcpy对源地址和目的地址以及拷贝长度是有不同的传输速率,速率最多可相差2.5倍。如果源与目的地址都是IRAM, IRAM中代码运行速率很快,此差距可忽略。但当源与目的有一个为SDRAM时,对于8K字节,此时延可到达175us-400us范围。

原理不再赘述,目前工程中对于此问题的优化:

A.   对于大数据量的拷贝对于源地址和目的地址以及传输长度进行了规范,即源地址对齐偶地址,拷贝长度对齐8字节。效率提高将近2倍;

B.    减少memcpy的操作次数,尽量使用指针进行转移等操作。                

3.     printf及其他用于调试或显示的系统函数

经测试,printf函数或其它调试以及系统函数的占用时间为ms级,且具备最高的系统优先级,不响应中断,对于代码运行有严重影响。

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表