免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8786 | 回复: 9
打印 上一主题 下一主题

初次写驱动,菜鸟请教PCIE问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-05 22:13 |只看该作者 |倒序浏览
用memory map方式访问PCIE设备内存和io map的方式相比性能怎么样?如果要用memory map的方式,是否enable membar就行了?在PCIE驱动中如何得到memory map之后的地址呢?

论坛徽章:
0
2 [报告]
发表于 2009-11-06 01:21 |只看该作者
用memory map方式访问PCIE设备内存和io map的方式相比性能怎么样?
我觉得差不多。也许MEMORY MAP的会快点?

如果要用memory map的方式,是否enable membar就行了?
基本上是。还要看硬件是否支持。

在PCIE驱动中如何得到memory map之后的地址呢?
OS基本上帮你做好了。最后在你的驱动里调用pci_iomap( )就可以得到基地址了。

论坛徽章:
0
3 [报告]
发表于 2009-11-06 07:54 |只看该作者

回复 #2 accessory 的帖子

我在驱动里面对ioremap_nocache返回的地址用ioread32和iowrite32分别进行了测试,发现读的速度是133万次/秒,而写的速度是400万次/秒。算一下写的速度才16MB/s,而我测试用的卡是PCIE*4的。理论带宽应该是1GB/s啊。用内存地址直接引用取代ioread32和iowrite32也是一样的结果。请问前辈如果性能差不多的话,那PCIE显卡的驱动是用什么方式访问显存的呢?

论坛徽章:
0
4 [报告]
发表于 2009-11-06 09:53 |只看该作者

回复 #4 snail_314 的帖子

读的速度是133万次/秒,写的速度是400万次/秒, 兄台觉得这正常吗?是不是太慢了

论坛徽章:
0
5 [报告]
发表于 2009-11-07 00:42 |只看该作者
用IOREAD, IOWRITE这些命令去读写当然慢了。这些最后一般也就是IN, OUT 指令,也就是最慢的PROGRAM IO.

要想快的话,用DMA.

PS: 你那个读写速度是怎么测试的?比较好奇

论坛徽章:
0
6 [报告]
发表于 2009-11-07 06:36 |只看该作者

回复 #6 accessory 的帖子

是在module_init里面初始化的最后分别用1000万次的读和写测试出来的。

论坛徽章:
0
7 [报告]
发表于 2009-11-07 10:55 |只看该作者
原帖由 accessory 于 2009-11-7 00:42 发表
用IOREAD, IOWRITE这些命令去读写当然慢了。这些最后一般也就是IN, OUT 指令,也就是最慢的PROGRAM IO.

要想快的话,用DMA.

PS: 你那个读写速度是怎么测试的?比较好奇


顺便问一下,如果PCIE设备主动发起DMA到主机(x86或x86_64)的一段内存,而这段内存正在CPU的cache里,那需要手动刷新cache吗? intel或amd的CPU能自动刷cache吗?

论坛徽章:
0
8 [报告]
发表于 2009-11-07 11:24 |只看该作者
在linux里面,当你需要DMA之前,你要先指定内存区域,在这个时候,系统已经设置好那段内存是不用cache的了。所以不会出现你说得情况。

论坛徽章:
0
9 [报告]
发表于 2009-11-07 11:27 |只看该作者
原帖由 accessory 于 2009-11-7 11:24 发表
在linux里面,当你需要DMA之前,你要先指定内存区域,在这个时候,系统已经设置好那段内存是不用cache的了。所以不会出现你说得情况。


不太理解,这段内存是用get_free_pages分配的,没有加GFP_DMA标志,linux本身并不知道PCI设备何时主动DMA数据到这块内存,那linux是如何做到的呢?

论坛徽章:
0
10 [报告]
发表于 2009-11-07 11:53 |只看该作者
在你启动dma之前,一般要调用ioremap, or pci_iomap. 他们有时设置了cache.

还可以看看下面的连接:
http://jianggmulab.blogspot.com/2009/05/ioremap_26.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP