免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 527639827
打印 上一主题 下一主题

ioremap之后得到的地址是否可以用memcpy和memset函数 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-07-06 16:36 |只看该作者
Linux下的LCD驱动里面是有这样做的

论坛徽章:
0
12 [报告]
发表于 2010-07-06 17:32 |只看该作者
回复 8# 527639827


    答案应该是:不能.两者速率应该都是一样的.
为什么?
先来看如果你的address是实实在在的DRAM的话,为什么会快.因为,memset\memcpy等函数比你自己写for循环的优势就是它们能更有效的利用cpu<-->memory之间的cache.
但前提是,只有当address是DRAM时,这些地址才是cacheable的.
也就是说,如果address是来自于ioremap from device address space的话,这些address本身就不应该是cacheable的,因为本来就需要立即将它们写入device.所以,此时memset/memcpy和你for loop一个个写时performance应该一样.

论坛徽章:
0
13 [报告]
发表于 2010-07-07 09:26 |只看该作者
回复 12# snail_314


    我现在要做的是快速的写值到一个pci switch的bar代表的地址空间中,写什么值无所谓。主要是测传送的速度。

   现在的做法是ioremap之后,用writel()或者memset()写,但是效率只有31MB/s,比理论的传送效率低了几十倍。

   那么瓶颈就在于CPU处理写值到bar代表的地址空间,怎样才能够快速的写值到这个pci switch的bar空间呢?

   有人说DMA非常快,能够释放CPU,但是那个pci switch不支持DMA啊,所以这条路行不通了

论坛徽章:
0
14 [报告]
发表于 2010-07-07 16:14 |只看该作者
用memcpy()或者memset()试一下就可以了

论坛徽章:
0
15 [报告]
发表于 2010-07-07 16:44 |只看该作者
回复 14# linux初学三月

这两个和循环的速度一样,31MB/s

听说有一种CPU侧的DMA,不知道哪位大侠有相关的资料,给我参考下啊

论坛徽章:
0
16 [报告]
发表于 2010-07-08 00:17 |只看该作者
回复 15# 527639827

对于PCI, PCIE 总线的设备来说, 我从来没听说过CPU侧的DMA. 都是要设备自己支持DMA才行.

老的ISA的时候,倒是在主板上有几个专门的DMA 控制器.

论坛徽章:
0
17 [报告]
发表于 2010-07-08 00:31 |只看该作者
回复 13# 527639827

"但是效率只有31MB/s,比理论的传送效率低了几十倍。"
哪里有几十倍? 你用的下面中的哪个PCI?  还是PCI EXPRESS?  PCI OR PCIE 规范版本是几点几的?

133 MB/s (32-bit at 33 MHz)
266 MB/s (32-bit at 66 MHz or 64-bit at 33 MHz)
533 MB/s (64-bit at 66 MHz)

另外, PCI 支持BURST MODE. 不过还要看你的硬件是怎么设计的. 下面是一个关于PCI BURST ON WINDOWS的讨论.

http://www.mombu.com/microsoft/w ... ci-card-749542.html

论坛徽章:
0
18 [报告]
发表于 2010-07-08 00:38 |只看该作者

论坛徽章:
0
19 [报告]
发表于 2010-07-08 08:32 |只看该作者
回复 17# accessory


    哇,老大你真强。

我所说的相差几十倍是这样计算的。

PCIE的速度是2.5Gb/s/lane,也就是320MB/s/lane,我的交换芯片的实测上限速度(厂商测试的)是180MB/s/lane。

而我现在用了4个lane,也就是说速度应该是180MB/s*4=720MB/s,而我现在测试的才31MB/s,所以跟理论的上限值差了几十倍之多。


由于交换芯片本身并不支持DMA,而厂商又不提供当时他们是怎么测试得到180MB/s的实测上限速度,所以我现在很迷惑。

我的测试主要是想交换芯片的bar空间写值,目前的瓶颈就在于我写值的速度太慢,而不是传输速度太慢导致的。而且我现在用死循环的办法写值到bar空间,CPU完全被占用了。

大侠有什么解决的办法或者思路没?

论坛徽章:
0
20 [报告]
发表于 2010-07-08 22:44 |只看该作者
想要达到那么高的速度又不支持DMA, 那么只能把CPU全占用了,然后不停的写了......囧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP