[发明专利]PCI‑E零拷贝DMA数据传输方法有效
申请号: | 201410472223.8 | 申请日: | 2014-09-16 |
公开(公告)号: | CN104239249B | 公开(公告)日: | 2017-08-04 |
发明(设计)人: | 陈训逊;周游;包秀国;谢铭;薛晨;周康成;周渊 | 申请(专利权)人: | 国家计算机网络与信息安全管理中心;北京赛思信安技术有限公司 |
主分类号: | G06F13/28 | 分类号: | G06F13/28 |
代理公司: | 北京永创新实专利事务所11121 | 代理人: | 祗志洁 |
地址: | 100029*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | pci 拷贝 dma 数据传输 方法 | ||
技术领域
本发明涉及PCI-E数据传输技术领域,具体是一种零拷贝的DMA数据传输方法。
背景技术
传统的PCI-E数据传输方法是采用DMA(Direct Memory Access,直接内存访问)。具体方法是在数据源及数据目的系统中均需分配一块连续的物理内存,启动前在数据源系统中用户应用程序负责把数据拷贝至物理内存中,DMA传输时由DMA控制器负责把数据从数据源物理内存传输至数据目的系统的物理内存中,DMA结束后在数据目的系统中由应用程序拷贝至用户空间使用,然后原2块物理内存可作下一次的数据传输用。图1是传统的数据传输方法示意图:
步骤1)数据源系统:用户应用程序把数据拷贝至内核空间中物理内存中;
步骤2)DMA;
步骤3)数据目的系统:用户应用程序把数据从内核空间中物理内存拷贝至用户空间使用。
该方法在数据传输过程中在数据源及数据目的的系统中,总计发生2次内存拷贝(步骤1及步骤3,DMA除外)及4次系统调用,效率低下,给CPU增加了不必要的负担。
发明内容
本发明的目的是为了提高PCI-E的数据传输效率,减轻CPU压力,提出一种PCI-E零拷贝DMA数据传输方法。
本发明提供的PCI-E零拷贝DMA数据传输方法,具体是:
步骤一、在数据源系统和数据目的系统中各自分配N块大小的物理内存,分别对数据源系统和数据目的系统中的N块物理内存使用双向链表建立空闲内存池以及工作内存池;
步骤二、数据源系统的用户应用程序传输数据时,使用相应的API接口从数据源系统的空闲内存池取得一块空闲的内存;
步骤三、数据源系统的用户应用程序直接将数据填充到所取得的内存中;
步骤四、数据填充完后,使用相应的API将数据传输给数据目的系统,并存放在数据目的系统的工作内存池;
步骤五、数据目的系统的用户应用程序使用相应的API接口从数据目的系统的工作内存池中取得传输来的数据,数据使用完毕后,将在数据源系统和数据目的系统所使用的内存归还到空闲内存池。
本发明的优点与积极效果在于:(1)删除了2次不必要的内存拷贝,极大地减轻了CPU的压力;(2)减少了4次系统调用,对于大规模小数据量的传输减轻了用户内核空间的切换,提高了系统效率;(3)采用了POLLING+中断的方式,减少了系统中断的处理次数,在同一次中断中尽可能得处理更多的数据量。
附图说明
图1是传统的数据传输方法示意图;
图2是本发明的零拷贝数据传输方法示意图。
具体实施方式
下面将结合附图和实施例对本发明作进一步的详细说明。
本发明的目的是为了提高PCI-E的数据传输效率,减轻CPU压力,提出一种零拷贝的数据传输方法。
如图2所示,本发明提供的PCI-E零拷贝DMA数据传输方法,具体包括以下步骤:
步骤一、在数据源和数据目的系统中各自分配N块适当大小的物理内存,分别对数据源和数据目的系统中的N块物理内存使用双向链表建立空闲内存池以及工作内存池。图2中的mmap指双向链表。
在数据源系统中分配N块物理内存,在数据目的系统中分配N块物理内存,N的大小根据需要由用户设定。分别对数据源系统的N块物理内存和数据目的系统中的N块物理内存建立空闲内存池以及工作内存池。所述的空闲内存池包含N块物理内存中所有空闲的物理内存,所述的工作内存池包含N块物理内存中使用的物理内存。
步骤二、在数据源系统的用户应用程序需要传输数据时,使用相应的API(Application Programming Interface,应用程序编程接口)从数据源的空闲内存池取得一块空闲的内存。
步骤三、数据源系统的用户应用程序可以直接操作该块内存,将数据填充到所取得的内存中。直接将数据填入物理内存,避免了数据从用户空间至内核空间的拷贝,同时避免了CPU的用户空间与内核空间的上下文切换。将写入数据的内存加入数据源的工作内存池中。
步骤四、数据填充完以后使用相应的API进行数据传输,数据目的系统在接收到数据后,从数据目的系统的空闲内存池中获取空闲内存,将数据存入,并将存入数据的内存放入数据目的系统的工作内存池中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国家计算机网络与信息安全管理中心;北京赛思信安技术有限公司,未经国家计算机网络与信息安全管理中心;北京赛思信安技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410472223.8/2.html,转载请声明来源钻瓜专利网。