CN109062826B - 数据传输方法及系统 - Google Patents

数据传输方法及系统 Download PDF

Info

Publication number
CN109062826B
CN109062826B CN201810937254.4A CN201810937254A CN109062826B CN 109062826 B CN109062826 B CN 109062826B CN 201810937254 A CN201810937254 A CN 201810937254A CN 109062826 B CN109062826 B CN 109062826B
Authority
CN
China
Prior art keywords
buffer area
memory
driver
data
host
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810937254.4A
Other languages
English (en)
Other versions
CN109062826A (zh
Inventor
王虓
张广飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Suneng Technology Co ltd
Original Assignee
北京算能科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 北京算能科技有限公司 filed Critical 北京算能科技有限公司
Priority to CN201810937254.4A priority Critical patent/CN109062826B/zh
Publication of CN109062826A publication Critical patent/CN109062826A/zh
Application granted granted Critical
Publication of CN109062826B publication Critical patent/CN109062826B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation

Abstract

本发明实施例公开了一种数据传输方法及系统,尤其是一种主机和加速卡之间的数据传输方法及系统,其在DMA控制器中增加内存管理单元,并通过主机侧的驱动程序管理内存管理单元中缓冲区的地址映射表,并为应用程序提供多种缓冲区分配策略,从而使得主机侧的应用程序利用DMA传输向加速卡内存搬运数据。本发明实施例保证了主机和加速卡之间数据传输性能和软件兼容性之间的平衡。

Description

数据传输方法及系统
技术领域
本发明涉及数据传输技术领域,特别是涉及一种数据传输方法及系统。
背景技术
随着大数据、人工智能技术的快速发展,传统的通用计算机主机的处理能力已经无法满足大数据运算的处理需求,于是业内出现了在通用计算机主板上插接各种运算加速卡以执行大数据运算加速处理。在这种“主机+加速卡”的应用环境中,主机和加速卡各自有自己独立的内存空间,在这两个内存空间之间需要进行大量而频繁的数据交换。
如图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的整数。
在一些实施方式中,所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
根据本发明的另一方面,提出一种数据传输方法,应用于主机和加速卡之间的数据传输,包括:
步骤S31,主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S32,主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的第一缓冲区和第二缓冲区;
步骤S33,所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S34,将应用程序缓冲区中的第一部分数据拷贝到驱动程序的第一缓冲区;
步骤S35,启动第一DMA传输,将驱动程序的第一缓冲区中的数据搬运到加速卡内存;
步骤S36,将应用程序缓冲区中的第二部分数据拷贝到驱动程序的第二缓冲区;
步骤S37,启动第二DMA传输,将驱动程序的第二缓冲区中的数据搬运到加速卡内存。
在一些实施方式中,所述方法还包括:
步骤S38,循环执行步骤S34-S37,直至将应用程序缓冲区中的全部数据搬运完成。
在一些实施方式中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数。
在一些实施方式中,所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
根据本发明的另一方面,提出一种数据传输方法,应用于主机和加速卡之间的数据传输,包括:
步骤S41,主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S42,主机侧的驱动程序解析缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S43,主机侧的应用程序使用所述驱动程序提供的应用编程接口从驱动程序缓冲区中申请空间作为自己的缓冲区;
步骤S44,启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存。
在一些实施方式中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数。
在一些实施方式中,所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
根据本发明的另一方面,提出一种数据传输系统,应用于主机和加速卡之间的数据传输,包括:
内存获取模块,用于主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
地址映射模块,用于主机侧的驱动程序解析应用程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
DMA传输模块,用于启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存。
在一些实施方式中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数。
在一些实施方式中,所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
根据本发明的另一方面,提出一种数据传输系统,应用于主机和加速卡之间的数据传输,包括:
第一内存获取模块,用于主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
第二内存获取模块,用于主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
地址映射模块,用于所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
数据迁移模块,用于将应用程序缓冲区中的数据拷贝到驱动程序缓冲区;
DMA传输模块,用于启动DMA传输,将驱动程序缓冲区中的数据搬运到加速卡内存。
在一些实施方式中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数。
在一些实施方式中,所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
根据本发明的另一方面,提出一种数据传输系统,应用于主机和加速卡之间的数据传输,包括:
第一内存获取模块,用于主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
第二内存获取模块,用于主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的第一缓冲区和第二缓冲区;
地址映射模块,用于所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
第一数据迁移模块,用于将应用程序缓冲区中的第一部分数据拷贝到驱动程序的第一缓冲区;
第一DMA传输模块,用于启动第一DMA传输,将驱动程序的第一缓冲区中的数据搬运到加速卡内存;
第二数据迁移模块,用于将应用程序缓冲区中的第二部分数据拷贝到驱动程序的第二缓冲区;
第二DMA传输模块,用于启动第二DMA传输,将驱动程序的第二缓冲区中的数据搬运到加速卡内存。
在一些实施方式中,所述系统还包括:
循环调用模块,用于循环调用所述第一数据迁移模块、第一DMA传输模块、第二数据迁移模块和第二DMA传输模块,直至将应用程序缓冲区中的全部数据搬运完成。
在一些实施方式中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数。
在一些实施方式中,所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
根据本发明的另一方面,提出一种数据传输系统,应用于主机和加速卡之间的数据传输,包括:
内存获取模块,用于主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
地址映射模块,用于主机侧的驱动程序解析缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
缓冲区申请模块,用于主机侧的应用程序使用所述驱动程序提供的应用编程接口从驱动程序缓冲区中申请空间作为应用程序缓冲区;
DMA传输模块,用于启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存。
在一些实施方式中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数。
在一些实施方式中,所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
根据本发明的另一方面,提出一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行以实现前述任一项所述数据传输方法的步骤。
根据本发明的另一方面,提出一种计算机设备,其包括存储器和处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算程序以实现前述任一项所述数据传输方法的步骤。
本发明实施例在DMA控制器中增加内存管理单元,并通过主机侧的驱动程序管理内存管理单元中缓冲区的地址映射表,并为应用程序提供多种缓冲区分配策略,保证了主机和加速卡之间数据传输性能和软件兼容性之间的平衡。
附图说明
图1是现有技术中主机和加速卡之间数据传输的应用示例图;
图2是本发明主机和加速卡之间数据传输的应用示例图;
图3是根据本发明一实施例的数据传输方法的流程图;
图4是根据本发明另一实施例的数据传输方法的流程图;
图5是根据本发明另一实施例的数据传输方法的流程图;
图6是根据本发明另一实施例的数据传输方法的流程图;
图7是根据本发明一实施例的内存管理单元中页表的结构示意图;
图8是根据本发明一实施例的数据传输系统的结构示意图;
图9是根据本发明另一实施例的数据传输系统的结构示意图;
图10是根据本发明另一实施例的数据传输系统的结构示意图;
图11是根据本发明另一实施例的数据传输系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图2是本发明主机和加速卡之间数据传输的应用示例图。在图1的基础上,本发明实施例在DMA控制器12中增加了一个内存管理单元(MMU)13,使得DMA控制器12可以使用多块离散的物理地址不连续的内存空间。主机侧的驱动程序20可以以页为单位在DMA控制器的内存管理单元13中建立虚拟地址到物理地址的映射表,所述映射表以保存在内存管理单元中的页表来实现。
本发明实施例通过在底层驱动程序中使用统一的MMU页表管理机制,可以为主机侧的应用程序提供多种不同的缓冲区分配策略,以实现主机和加速卡之间数据传输性能和软件兼容性的平衡。
图3是根据本发明一实施例的数据传输方法的流程图。如图3所示,本发明实施例的数据传输方法,应用于主机和加速卡之间的数据传输,包括如下步骤:
步骤S11,主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S12,主机侧的驱动程序解析应用程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S13,启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存。
本发明实施例通过主机侧的驱动程序直接在DMA控制器的内存管理单元管理应用程序缓冲区的地址映射表,无需申请驱动程序缓冲区,应用程序也无需进行任何改动,具有最好的软件兼容性,并且其避免了现有技术中从应用程序缓冲区到驱动程序缓冲区的数据拷贝,非常适合于主机向加速卡搬运的数据量较大的情形。
图4是根据本发明另一实施例的数据传输方法的流程图。如图4所示,本发明实施例的数据传输方法,应用于主机和加速卡之间的数据传输,包括如下步骤:
步骤S21,主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S22,主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S23,所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S24,将应用程序缓冲区中的数据拷贝到驱动程序缓冲区;
步骤S25,启动DMA传输,将驱动程序缓冲区中的数据搬运到加速卡内存。
本发明实施例中主机侧的驱动程序可以申请虚拟地址连续而物理地址不连续的大块缓冲区,并在DMA控制器的内存管理单元管理驱动程序缓冲区的地址映射表,应用程序也无需进行任何改动,相对于现有技术而言,其减少了从应用程序缓冲区到驱动程序缓冲区的数据拷贝的频次,具有良好的数据传输性能和软件兼容性的平衡。
图5是根据本发明另一实施例的数据传输方法的流程图。图5所示实施例在图4所示实施例的基础上进一步改进,其包括如下步骤:
步骤S31,主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S32,主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的第一缓冲区和第二缓冲区;
步骤S33,所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S34,将应用程序缓冲区中的第一部分数据拷贝到驱动程序的第一缓冲区;
步骤S35,启动第一DMA传输,将驱动程序的第一缓冲区中的数据搬运到加速卡内存;
步骤S36,将应用程序缓冲区中的第二部分数据拷贝到驱动程序的第二缓冲区;
步骤S37,启动第二DMA传输,将驱动程序的第二缓冲区中的数据搬运到加速卡内存。
在一些实施方式中,当应用程序缓冲区中需要传输的数据量较大时,本发明实施例所述数据传输方法还包括:
步骤S38,循环执行步骤S34-S37,直至将应用程序缓冲区中的全部数据搬运完成。
本发明实施例中主机侧的驱动程序可以申请虚拟地址连续而物理地址不连续的多块缓冲区,并在DMA控制器的内存管理单元管理驱动程序缓冲区的地址映射表,应用程序也无需进行任何改动,相对于现有技术而言,其提高了从应用程序缓冲区到驱动程序缓冲区的数据传输容量,减少了从应用程序缓冲区到驱动程序缓冲区的数据拷贝的频次,具有良好的数据传输性能和软件兼容性的平衡。
图6是根据本发明另一实施例的数据传输方法的流程图。如图6所示,本发明实施例的数据传输方法,应用于主机和加速卡之间的数据传输,包括如下步骤:
步骤S41,主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S42,主机侧的驱动程序解析缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S43,主机侧的应用程序使用所述驱动程序提供的应用编程接口从驱动程序缓冲区中申请空间作为自己的缓冲区;
步骤S44,启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存。
本发明实施例中主机侧的驱动程序可以申请虚拟地址连续而物理地址不连续的大块缓冲区,在DMA控制器的内存管理单元管理驱动程序缓冲区的地址映射表,并向应用程序提供特定的应用编程接口(API),以供应用程序直接使用该驱动程序的缓冲区,这种方式需要修改应用程序申请缓冲区的代码,但是由于应用程序直接使用底层驱动程序的缓冲区,具有最好的数据传输性能,非常适用于数据传输量较小,通常小于内存管理单元可以支持的最大地址空间,或者数据传输较频繁的情形。
图7是根据本发明一实施例的内存管理单元中页表的结构示意图。如图7所示,主机侧的驱动程序以环形队列的方式管理DMA控制器中内存管理单元(MMU)的页表资源。具体而言,内存管理单元中提供编号1到N的N个页表项,N为大于1的整数。驱动程序从编号1开始,依次为DMA传输任务分配页表项,即把页表项标记为“使用中”,并在DMA传输任务结束后将页表项重新标记为“空闲”。驱动程序不会跳跃使用页表项,当编号N的页表项也被分配后,驱动程序会重新从编号1开始检查页表项是否已经空闲出来。
在一些实施方式中,所述N可以为128,即环形队列中包括128项页表项。实际应用中,可以根据数据传输量的需求确定所述内存管理单元中的所述页表项的数目。
本发明实施例的页表资源管理方式可以使得MMU硬件有机会使用预取机制读取多个页表项,优化地址解释的性能表现,并且前述多个实施例的数据传输方法均可以采用此种页表资源管理方式,从而将主机侧的数据缓冲策略选择从驱动程序中剥离出来,减少软件之间的耦合。
图8是根据本发明一实施例的数据传输系统100的结构示意图。如图8所示,所述数据传输系统100应用于主机和加速卡之间的数据传输,包括如下模块:
内存获取模块101,用于主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
地址映射模块102,用于主机侧的驱动程序解析应用程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
DMA传输模块103,用于启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存。
图9是根据本发明另一实施例的数据传输系统200的结构示意图。如图9所示,所述数据传输系统200应用于主机和加速卡之间的数据传输,包括如下模块:
第一内存获取模块201,用于主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
第二内存获取模块202,用于主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
地址映射模块203,用于所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
数据迁移模块204,用于将应用程序缓冲区中的数据拷贝到驱动程序缓冲区;
DMA传输模块205,用于启动DMA传输,将驱动程序缓冲区中的数据搬运到加速卡内存。
图10是根据本发明另一实施例的数据传输系统300的结构示意图。如图10所示,所述数据传输系统300应用于主机和加速卡之间的数据传输,包括如下模块:
第一内存获取模块301,用于主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
第二内存获取模块302,用于主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的第一缓冲区和第二缓冲区;
地址映射模块303,用于所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
第一数据迁移模块304,用于将应用程序缓冲区中的第一部分数据拷贝到驱动程序的第一缓冲区;
第一DMA传输模块305,用于启动第一DMA传输,将驱动程序的第一缓冲区中的数据搬运到加速卡内存;
第二数据迁移模块306,用于将应用程序缓冲区中的第二部分数据拷贝到驱动程序的第二缓冲区;
第二DMA传输模块307,用于启动第二DMA传输,将驱动程序的第二缓冲区中的数据搬运到加速卡内存。
在一些实施方式中,当应用程序缓冲区中需要传输的数据量较大时,所述数据传输系统还包括:
循环调用模块308,用于循环调用所述第一数据迁移模块、第一DMA传输模块、第二数据迁移模块和第二DMA传输模块,直至将应用程序缓冲区中的全部数据搬运完成。
图11是根据本发明另一实施例的数据传输系统400的结构示意图。如图11所示,所述数据传输系统400应用于主机和加速卡之间的数据传输,包括如下模块:
内存获取模块401,用于主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
地址映射模块402,用于主机侧的驱动程序解析缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
缓冲区申请模块403,用于主机侧的应用程序使用所述驱动程序提供的应用编程接口从驱动程序缓冲区中申请空间作为应用程序缓冲区;
DMA传输模块404,用于启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存。
根据本发明另一实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行以实现前述任一实施例所述的数据传输方法的步骤。
根据本发明另一实施例,还提供一种计算机设备,其包括存储器和处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算程序以实现前述任一实施例所述的数据传输方法的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种数据传输方法,应用于主机和加速卡之间的数据传输,其特征在于,包括:
步骤S11,主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S12,主机侧的驱动程序解析应用程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S13,启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存;
其中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数;
所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
2.一种数据传输方法,应用于主机和加速卡之间的数据传输,其特征在于,包括:
步骤S21,主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S22,主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S23,所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S24,将应用程序缓冲区中的数据拷贝到驱动程序缓冲区;
步骤S25,启动DMA传输,将驱动程序缓冲区中的数据搬运到加速卡内存;
其中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数;
所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
3.一种数据传输方法,应用于主机和加速卡之间的数据传输,其特征在于,包括:
步骤S31,主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S32,主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的第一缓冲区和第二缓冲区;
步骤S33,所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S34,将应用程序缓冲区中的第一部分数据拷贝到驱动程序的第一缓冲区;
步骤S35,启动第一DMA传输,将驱动程序的第一缓冲区中的数据搬运到加速卡内存;
步骤S36,将应用程序缓冲区中的第二部分数据拷贝到驱动程序的第二缓冲区;
步骤S37,启动第二DMA传输,将驱动程序的第二缓冲区中的数据搬运到加速卡内存;
其中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数;
所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
4.根据权利要求3所述的数据传输方法,其特征在于,所述方法还包括:
步骤S38,循环执行步骤S34-S37,直至将应用程序缓冲区中的全部数据搬运完成。
5.一种数据传输方法,应用于主机和加速卡之间的数据传输,其特征在于,包括:
步骤S41,主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
步骤S42,主机侧的驱动程序解析缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
步骤S43,主机侧的应用程序使用所述驱动程序提供的应用编程接口从驱动程序缓冲区中申请空间作为自己的缓冲区;
步骤S44,启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存;
其中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数;
所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
6.一种数据传输系统,应用于主机和加速卡之间的数据传输,其特征在于,包括:
内存获取模块,用于主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
地址映射模块,用于主机侧的驱动程序解析应用程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
DMA传输模块,用于启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存;
其中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数;
所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
7.一种数据传输系统,应用于主机和加速卡之间的数据传输,其特征在于,包括:
第一内存获取模块,用于主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
第二内存获取模块,用于主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
地址映射模块,用于所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
数据迁移模块,用于将应用程序缓冲区中的数据拷贝到驱动程序缓冲区;
DMA传输模块,用于启动DMA传输,将驱动程序缓冲区中的数据搬运到加速卡内存;
其中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数;
所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
8.一种数据传输系统,应用于主机和加速卡之间的数据传输,其特征在于,包括:
第一内存获取模块,用于主机侧的应用程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
第二内存获取模块,用于主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的第一缓冲区和第二缓冲区;
地址映射模块,用于所述驱动程序解析驱动程序缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
第一数据迁移模块,用于将应用程序缓冲区中的第一部分数据拷贝到驱动程序的第一缓冲区;
第一DMA传输模块,用于启动第一DMA传输,将驱动程序的第一缓冲区中的数据搬运到加速卡内存;
第二数据迁移模块,用于将应用程序缓冲区中的第二部分数据拷贝到驱动程序的第二缓冲区;
第二DMA传输模块,用于启动第二DMA传输,将驱动程序的第二缓冲区中的数据搬运到加速卡内存;
其中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数;
所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
9.根据权利要求8所述的数据传输系统,其特征在于,所述系统还包括:
循环调用模块,用于循环调用所述第一数据迁移模块、第一DMA传输模块、第二数据迁移模块和第二DMA传输模块,直至将应用程序缓冲区中的全部数据搬运完成。
10.一种数据传输系统,应用于主机和加速卡之间的数据传输,其特征在于,包括:
内存获取模块,用于主机侧的驱动程序从主机内存获取虚拟地址连续而物理地址不连续的缓冲区;
地址映射模块,用于主机侧的驱动程序解析缓冲区的结构,以页为单位在DMA控制器的内存管理单元中建立虚拟地址到物理地址的映射表;
缓冲区申请模块,用于主机侧的应用程序使用所述驱动程序提供的应用编程接口从驱动程序缓冲区中申请空间作为应用程序缓冲区;
DMA传输模块,用于启动DMA传输,将应用程序缓冲区中的数据搬运到加速卡内存;
其中,所述映射表采用环形队列实现,所述环形队列包括编号1到N的页表项,N为大于1的整数;
所述驱动程序从编号1开始依次为DMA传输任务分配页表项,当所述DMA传输任务结束后重新将该分配的页表项标记为空闲状态。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行以实现根据权利要求1-5任一项所述的数据传输方法的步骤。
12.一种计算机设备,其包括存储器和处理器,所述存储器上存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行计算程序以实现根据权利要求1-5任一项所述的数据传输方法的步骤。
CN201810937254.4A 2018-08-16 2018-08-16 数据传输方法及系统 Active CN109062826B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810937254.4A CN109062826B (zh) 2018-08-16 2018-08-16 数据传输方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810937254.4A CN109062826B (zh) 2018-08-16 2018-08-16 数据传输方法及系统

Publications (2)

Publication Number Publication Date
CN109062826A CN109062826A (zh) 2018-12-21
CN109062826B true CN109062826B (zh) 2022-04-15

Family

ID=64686301

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810937254.4A Active CN109062826B (zh) 2018-08-16 2018-08-16 数据传输方法及系统

Country Status (1)

Country Link
CN (1) CN109062826B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110399322B (zh) * 2019-06-28 2021-03-09 苏州浪潮智能科技有限公司 一种数据传输方法及乒乓dma架构
CN112131164B (zh) * 2020-09-23 2022-06-17 山东云海国创云计算装备产业创新中心有限公司 应用于加速板卡的数据调度方法、装置及加速板卡和介质
CN112491979B (zh) 2020-11-12 2022-12-02 苏州浪潮智能科技有限公司 一种网卡数据包缓存管理方法、装置、终端及存储介质
CN114513545B (zh) * 2022-04-19 2022-07-12 苏州浪潮智能科技有限公司 请求处理方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0447145B1 (en) * 1990-03-12 2000-07-12 Hewlett-Packard Company User scheduled direct memory access using virtual addresses
CN101178694A (zh) * 2006-11-07 2008-05-14 莱克斯信息技术(北京)有限公司 Intel e1000零拷贝的方法
US9959214B1 (en) * 2015-12-29 2018-05-01 Amazon Technologies, Inc. Emulated translation unit using a management processor

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7225316B2 (en) * 2003-11-17 2007-05-29 Intel Corporation Memory mapping apparatus, systems, and methods
US10310973B2 (en) * 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10037228B2 (en) * 2012-10-25 2018-07-31 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US9875125B2 (en) * 2013-06-14 2018-01-23 International Business Machines Corporation Parallel mapping of client partition memory to multiple physical adapters
CN104732164A (zh) * 2013-12-18 2015-06-24 国家计算机网络与信息安全管理中心 一种提高ssl数据处理速度的装置及其方法
US10503405B2 (en) * 2015-02-10 2019-12-10 Red Hat Israel, Ltd. Zero copy memory reclaim using copy-on-write
CN106649149A (zh) * 2015-10-28 2017-05-10 福州瑞芯微电子股份有限公司 实现地址映射的内存管理系统及方法
US20180024938A1 (en) * 2016-07-21 2018-01-25 Advanced Micro Devices, Inc. Allocating physical pages to sparse data sets in virtual memory without page faulting
US10007464B1 (en) * 2016-12-23 2018-06-26 Advanced Micro Devices, Inc. Method and apparatus for integration of non-volatile memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0447145B1 (en) * 1990-03-12 2000-07-12 Hewlett-Packard Company User scheduled direct memory access using virtual addresses
CN101178694A (zh) * 2006-11-07 2008-05-14 莱克斯信息技术(北京)有限公司 Intel e1000零拷贝的方法
US9959214B1 (en) * 2015-12-29 2018-05-01 Amazon Technologies, Inc. Emulated translation unit using a management processor

Also Published As

Publication number Publication date
CN109062826A (zh) 2018-12-21

Similar Documents

Publication Publication Date Title
CN109062826B (zh) 数据传输方法及系统
US7200695B2 (en) Method, system, and program for processing packets utilizing descriptors
EP2657836A1 (en) Acceleration method, device and system for co-processing
KR20090079012A (ko) 가상 머신의 상태를 저장, 복원하는 방법 및 장치
CN101847105A (zh) 一种计算机及多操作系统共享内存的方法
CN110196681B (zh) 业务写操作的磁盘数据写入控制方法及装置、电子设备
US8930568B1 (en) Method and apparatus for enabling access to storage
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
CN101150488A (zh) 一种零拷贝网络报文接收方法
US11487478B2 (en) Memory system and method of controlling nonvolatile memory
CN113760560A (zh) 一种进程间通信方法以及进程间通信装置
CN113032293A (zh) 缓存管理器及控制部件
US20100131699A1 (en) Methods, apparatuses, and computer program products for enhancing memory erase functionality
CN110209354B (zh) 用于处理数据的方法、装置、设备和介质
CN112131019A (zh) 微内核操作系统进程间快速通信方法
CN110162395B (zh) 一种内存分配的方法及装置
CN116028455A (zh) 一种数据处理方法、装置、存储介质及电子设备
CN113268356B (zh) 基于LINUX系统的多GPU板卡bounding的系统、方法及介质
US11467766B2 (en) Information processing method, apparatus, device, and system
CN111124506A (zh) 基于应用层的运算卡驱动实现方法
CN109032965B (zh) 一种数据读取方法、主机及存储设备
CN110543351B (zh) 数据处理方法以及计算机设备
CN102360369B (zh) 在用户空间文件系统上实现聚合写文件脏页的方法和装置
CN113805845A (zh) 随机数序列生成方法和随机数引擎
KR20150048028A (ko) 데이터 전송 관리 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20190418

Address after: 100192 2nd Floor, Building 25, No. 1 Hospital, Baosheng South Road, Haidian District, Beijing

Applicant after: BEIJING BITMAIN TECHNOLOGY CO., LTD.

Address before: 100192 No.25 Building, No.1 Hospital, Baosheng South Road, Haidian District, Beijing

Applicant before: Feng Feng Technology (Beijing) Co., Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210817

Address after: 100192 Building No. 25, No. 1 Hospital, Baosheng South Road, Haidian District, Beijing, No. 301

Applicant after: SUANFENG TECHNOLOGY (BEIJING) Co.,Ltd.

Address before: 100192 2nd Floor, Building 25, No. 1 Hospital, Baosheng South Road, Haidian District, Beijing

Applicant before: BITMAIN TECHNOLOGIES Inc.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220228

Address after: 100176 901, floor 9, building 8, courtyard 8, KEGU 1st Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing (Yizhuang group, high-end industrial area of Beijing Pilot Free Trade Zone)

Applicant after: Beijing suneng Technology Co.,Ltd.

Address before: 100192 Building No. 25, No. 1 Hospital, Baosheng South Road, Haidian District, Beijing, No. 301

Applicant before: SUANFENG TECHNOLOGY (BEIJING) CO.,LTD.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant