[发明专利]数据传输方法及系统有效
申请号: | 201810937254.4 | 申请日: | 2018-08-16 |
公开(公告)号: | CN109062826B | 公开(公告)日: | 2022-04-15 |
发明(设计)人: | 王虓;张广飞 | 申请(专利权)人: | 北京算能科技有限公司 |
主分类号: | G06F13/12 | 分类号: | G06F13/12;G06F12/10 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 杨静 |
地址: | 100176 北京市大兴区北京经济技术开发区科谷一*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据传输 方法 系统 | ||
本发明实施例公开了一种数据传输方法及系统,尤其是一种主机和加速卡之间的数据传输方法及系统,其在DMA控制器中增加内存管理单元,并通过主机侧的驱动程序管理内存管理单元中缓冲区的地址映射表,并为应用程序提供多种缓冲区分配策略,从而使得主机侧的应用程序利用DMA传输向加速卡内存搬运数据。本发明实施例保证了主机和加速卡之间数据传输性能和软件兼容性之间的平衡。
技术领域
本发明涉及数据传输技术领域,特别是涉及一种数据传输方法及系统。
背景技术
随着大数据、人工智能技术的快速发展,传统的通用计算机主机的处理能力已经无法满足大数据运算的处理需求,于是业内出现了在通用计算机主板上插接各种运算加速卡以执行大数据运算加速处理。在这种“主机+加速卡”的应用环境中,主机和加速卡各自有自己独立的内存空间,在这两个内存空间之间需要进行大量而频繁的数据交换。
如图1所示,现有技术中,主机1和加速卡2之间的数据交换通常由DMA控制器12来完成,而DMA控制器通常需要使用物理地址连续的内存空间。具体而言,主机侧的应用程序10向内存11申请一块虚拟地址连续但物理地址不连续的内存空间作为应用程序缓冲区,主机侧的驱动程序20申请一块物理地址连续的内存空间作为驱动程序缓冲区,因为受系统内存管理碎片化的影响,这块物理地址连续的驱动程序缓冲区的大小通常很小;当主机侧的应用程序10需要把自己缓冲区中的数据传送到加速卡2上时,主机CPU首先将应用程序缓冲区中的第一部分数据拷贝到驱动程序的缓冲区中,然后启动DMA传输,将驱动程序缓冲区中的数据搬运到加速卡内存中,随后主机CPU检测到DMA传输结束,继续将应用程序缓冲区中剩余的数据重复执行上述步骤,直到应用程序缓冲区中的全部数据都被搬运完成。
这种数据传输方式由于驱动程序缓冲区的大小限制,主机和加速卡之间的大量而频繁的数据传输需要消耗大量的CPU时间进行从应用程序缓冲区到驱动程序缓冲区的数据拷贝,从而影响了主机和加速卡之间数据传输的性能。
发明内容
为了解决上述问题,根据本发明的一方面,提出一种数据传输方法,应用于主机和加速卡之间的数据传输,包括:
步骤S11,主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S12,主机侧的驱动程序解析应用程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S13,启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存。
在一些实施方式中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数。
在一些实施方式中,所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
根据本发明的另一方面,提出一种数据传输方法,应用于主机和加速卡之间的数据传输,包括:
步骤S21,主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S22,主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S23,所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S24,将应用程序缓冲区中的数据拷贝到驱动程序缓冲区;
步骤S25,启动DMA传输,将驱动程序缓冲区中的数据搬运到加速卡内存。
在一些实施方式中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京算能科技有限公司,未经北京算能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810937254.4/2.html,转载请声明来源钻瓜专利网。