完善资料让更多小伙伴认识你,还能领取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 条评论
|
|
只有小组成员才能发言,加入小组>>
397个成员聚集在这个小组
加入小组自己做的hpm5321和6750板子怎么都没有1.1的输出呢?
986 浏览 1 评论
关于hpm6364的femc同时使用外接sdram和sram的问题
834 浏览 1 评论
795 浏览 0 评论
708 浏览 1 评论
808 浏览 0 评论
【盖楼抢好礼】欢迎先楫半导体HPMicro入驻电子发烧友社区!
24608浏览 532评论
2578浏览 22评论
USBX范例中启用 double FPU , 运行异常,卡死在tx_risc_v_trap_handler函数
2931浏览 5评论
1745浏览 5评论
请问Segger Embedded Studio这个窗口不小心拉出来悬浮后怎么塞回去?
2902浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 12:43 , Processed in 0.382057 second(s), Total 50, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号