LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1516|回复: 8

请问在用户空间用DMA方式进行memcpy有什么好的办法吗?

[复制链接]
发表于 2006-5-22 10:57:11 | 显示全部楼层 |阅读模式
小弟的程序要大量用到memcpy(),如果不用DMA的话,程序运行效率很低,有什么办法在用户空间上使用DMA吗?
发表于 2006-5-22 10:58:51 | 显示全部楼层
内存拷贝跟DMA有什么关系?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-22 11:14:09 | 显示全部楼层
就是用DMA方式来实现内存拷贝啊。
拷贝过程中不需要CPU的干预。

P.S 我是在一个嵌入式系统上,有DMA的功能。但问题是我不知在用户空间里应该怎么去利用DMA的能力。
回复 支持 反对

使用道具 举报

发表于 2006-5-22 11:41:47 | 显示全部楼层
我觉得DMA是访问外设,如硬盘之类的,如果只是内存拷贝的话,我还真的不理解
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-22 11:44:23 | 显示全部楼层
不使用DMA的话,内存拷贝是需要CPU来干预的。
如果我每秒要拷贝1000次1M的数据,那CPU就没法干别的事情了,只能在处理内存拷贝的操作了。

所以我想,拷贝的过程由DMA硬件来完成,CPU只要发出拷贝指令就放手不管了,这样它能干别的事情,不知这样的想法能否实现?
回复 支持 反对

使用道具 举报

发表于 2006-5-22 12:14:46 | 显示全部楼层
Post by chinesefox
不使用DMA的话,内存拷贝是需要CPU来干预的。
如果我每秒要拷贝1000次1M的数据,那CPU就没法干别的事情了,只能在处理内存拷贝的操作了。

所以我想,拷贝的过程由DMA硬件来完成,CPU只要发出拷贝指令就放手不管了,这样它能干别的事情,不知这样的想法能否实现?

我找到一片资料,不过不懂,也太大了没法上传
你在google搜索“DMA 内存拷贝“,会发现一个ppt
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-22 12:40:21 | 显示全部楼层
嗯,谢谢楼上的XD,我去看一下
回复 支持 反对

使用道具 举报

发表于 2006-5-22 14:35:54 | 显示全部楼层
为什么不想办法避免内存拷贝呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-22 15:09:22 | 显示全部楼层
Post by x11
为什么不想办法避免内存拷贝呢?

这个因为目前的需要,无法避免,memcpy是肯定需要的,所以只能从提高内存拷贝速度方向来入手了。
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表