免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 43410 | 回复: 73

有谁对网卡DMA有所了解 [复制链接]

论坛徽章:
0
发表于 2008-03-17 11:31 |显示全部楼层
看了很多论文  发现了一个有关网卡dma的问题   论文中很多地方在对网卡DMA传输都做了如下改造:
每次接收数据的时候  网卡先从已经分配好的DMA ring空间中动态的获取一块空间地址给网卡  然后网卡启动DMA  但我在研究了8139网卡驱动后发现 好像不太可行 因为8139里面DMA是透明的 当你空间分配好 写入寄存器以后  DMA就自动执行收包  你无法告诉网卡应该把数据DMA到哪里  全是网卡自动执行
昨天看了看贴  好像说是DMA分两种  一种需要配置 一种是自动的   不知道是不是这个原因  也不知道是不是千兆网卡拥有这个功能  。。。

论坛徽章:
0
发表于 2008-03-17 12:32 |显示全部楼层
原帖由 duanius 于 2008-3-17 11:31 发表
看了很多论文  发现了一个有关网卡dma的问题   论文中很多地方在对网卡DMA传输都做了如下改造:
每次接收数据的时候  网卡先从已经分配好的DMA ring空间中动态的获取一块空间地址给网卡  然后网卡启动DMA  但我 ...

哪种网卡是动态配置的?学习一下
对于自动的也可以每次中断处理后,更改ring buffer的地址,但这样做看不出来有何好处

论坛徽章:
0
发表于 2008-03-17 12:46 |显示全部楼层
比方说这样的形式   
哈工的零拷贝做法是在用户空间分配一块连续的缓冲区 然后这块缓冲区由一个页表管理  由于网卡需要的是物理地址  所以需要由页表完成虚拟地址到物理地址的转化 然后将得到的空的物理地址传给网卡
每传一个数据包都需要提供给网卡一个物理地址   
老外的一些文章虽然采用的是内核分配地址空间再映射到用户空间  但动态传的意思  比如用一个描述符环指向dma环  每次动态传给网卡描述符的地址  网卡从描述符中提取dma缓冲地址
他们用的好像都是千兆网卡  
在8139里面如果想这么做的话恐怕就是要不停的用rtl8139_hw_start函数进行环写寄存器的修改了
但这样很蠢吧。。

论坛徽章:
0
发表于 2008-03-17 12:53 |显示全部楼层
我贴个附件吧  是一篇论文里的一部分  有关dma传输的
我一直不知道这个对于8139网卡传输应该如何做到
因为8139就是设置好缓冲区大小的位置  接下来就是全自动而透明的了

[ 本帖最后由 duanius 于 2008-3-17 14:33 编辑 ]

1.pdf

104.62 KB, 下载次数: 1226

论坛徽章:
0
发表于 2008-03-17 13:03 |显示全部楼层
原帖由 duanius 于 2008-3-17 12:46 发表
比方说这样的形式   
哈工的零拷贝做法是在用户空间分配一块连续的缓冲区 然后这块缓冲区由一个页表管理  由于网卡需要的是物理地址  所以需要由页表完成虚拟地址到物理地址的转化 然后将得到的空的物理地址传 ...

没看过8139的spec,想了一下,对于这种老式的网卡,过多的 port I/O 和MMIO都是降低性能的因素。
你确定他们使用8139做的吗?这种0拷贝用的硬件应该比较特殊,至少应该是那种DMA可配置的

论坛徽章:
0
发表于 2008-03-17 13:16 |显示全部楼层
原帖由 duanius 于 2008-3-17 12:53 发表
我贴个附件吧  是一篇论文里的一部分  有关dma传输的
我一直不知道这个对于8139网卡传输应该如何做到
因为8139就是设置好缓冲区大小的位置  接下来就是全自动而透明的了

下不下来,你直接帖一段出来看看

论坛徽章:
0
发表于 2008-03-17 14:09 |显示全部楼层
不是阿  他们用的都是千兆网卡  
应该能下下来吧   是pdf的 不好贴文字阿。。。、
把pdf重传了下

[ 本帖最后由 duanius 于 2008-3-17 14:33 编辑 ]

论坛徽章:
0
发表于 2008-03-17 15:06 |显示全部楼层
原帖由 duanius 于 2008-3-17 14:09 发表
不是阿  他们用的都是千兆网卡  
应该能下下来吧   是pdf的 不好贴文字阿。。。、
把pdf重传了下


可以发给我,我来替你粘贴, email:

论坛徽章:
0
发表于 2008-03-17 15:10 |显示全部楼层
原帖由 duanius 于 2008-3-17 14:09 发表
不是阿  他们用的都是千兆网卡  
应该能下下来吧   是pdf的 不好贴文字阿。。。、
把pdf重传了下

千兆网卡种类很多的,一般千兆网卡为了性能提高,Port I/O和MMIO的操作都很少,所以你刚才用8139举例子就不太合适。
应该有一个更加有效的方法可以频繁设置ring buffer。看来你的pdf再说

论坛徽章:
0
发表于 2008-03-17 15:12 |显示全部楼层
原帖由 albcamus 于 2008-3-17 15:06 发表


可以发给我,我来替你粘贴, email:

现在为啥这么麻烦了?
有人发病毒?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP