完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛扫一扫,分享给好友
|
开发板是6360evk,环境是win11,ses 7.32. memcpy耗时一会2.5us,一会8.5us,这是怎么回事?
完整函数如下,是一个通过网口发送数据的函数。
尝试修改变量定义,修改代码存放位置,都无法改善。
|
|
相关推荐
2个回答
|
|
|
可能的原因是由于memcpy操作受到缓存的影响,使用缓存时会遇到缓存命中和缓存不命中的情况,从而导致memcpy操作的耗时不稳定。
尝试取消缓存,将变量定义为非缓存类型,即使用ATTR_PLACE_AT_NONCACHEABLE __RW关键字,可以解决这个问题。 此外,也可以尝试在代码中使用CPU屏障来保证内存操作的顺序性和可见性,进一步提高程序的稳定性和可靠性。 |
|
|
1 条评论
|
|
|
1.memcpy拷贝,目标地址和源地址如果均是4字节对齐的,会按照4字节对齐拷贝。如果不是按照4字节对齐的,会变成单字节拷贝,速度会变慢,理论速度会慢4倍。请确保dest_ptr和data地址是4字节对齐。如果memcpy拷贝速度不稳定,有可能是地址不对齐导致,也有可能是cache未命中造成。可尝试用两个4字节对齐的buf拷贝验证。
2.如果要提升memcpy速率,可尝试将目标地址和源地址均放到ILM/DLM区,该内存区域CPU访问是0等待的。 可如下定义:ATTR_RAMFUNC_WITH_ALIGNMENT(4) uint8_t dest_buff[1024]; |
|
|
1 条评论
|
|
只有小组成员才能发言,加入小组>>
457个成员聚集在这个小组
加入小组1413 浏览 0 评论
HPM5E00EVK,ecat_io例程,卡在DisableSyncManChannel函数
1105 浏览 1 评论
1870 浏览 2 评论
1286 浏览 1 评论
HPM monitor studio 只能在 hpm芯片+hpm_sdk 的组合下才能用吗?
1670 浏览 0 评论
5859浏览 22评论
2707浏览 4评论
自己做的hpm5321和6750板子怎么都没有1.1的输出呢?
2732浏览 4评论
编译错误: error: unrecognizable insn,不知道原因,请教!
932浏览 4评论
1831浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 14:21 , Processed in 0.711366 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2713
