大规模数据传输方法及系统转让专利

申请号 : CN201710103227.2

文献号 : CN106909523B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李超黄俞翔

申请人 : 深圳市恒扬数据股份有限公司

摘要 :

本发明适用于通信技术领域,提供了大规模数据传输方法,包括:在数据传输开始时,由应用程序调用驱动程序使得驱动程序向控制器发起写操作,写操作包括第一用户态流程和第一内核态流程;当第一用户态流程执行完成后,在执行第一内核态流程时驱动程序向控制器发起读操作,使第一内核态流程和第二用户态流程同时进行,其中,读操作包括第二用户态流程和第二内核态流程;当第二用户态流程执行完成后,在执行第二内核态流程时驱动程序再次向控制器发起写操作,使第二内核态流程与驱动程序再次向控制器发起的写操作同时进行;循环执行上述流程,直至数据传输完成。本发明通过在数据传输时,读操作和写操作同时进行,尤其是在数据规模比较大的时候,可以提高数据传输效率。

权利要求 :

1.一种大规模数据传输方法,其特征在于,所述大规模数据传输方法包括:

在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发所述驱动程序向直接内存存取控制器发起写操作,所述写操作包括第一用户态流程和第一内核态流程;第一用户态流程包括所述应用程序复制所述驱动程序的接口信息,并将所述驱动程序的接口信息发送至所述直接内存存取控制器;所述第一内核态流程用于处理所述硬件加速卡获取的第一数据;

当所述第一用户态流程执行完成后,在开始执行所述第一内核态流程的同时所述应用程序触发所述驱动程序向所述直接内存存取控制器发起读操作,使所述写操作的第一内核态流程和所述读操作的第二用户态流程同时进行,其中,所述读操作包括第二用户态流程和第二内核态流程;所述第二用户态流程包括所述应用程序复制所述驱动程序的接口信息,并将所述驱动程序的接口信息发送至所述直接内存存取控制器;所述第二内核态流程用于将所述硬件加速卡中的第二数据传送至主机内存中;

当所述第二用户态流程执行完成后,在开始执行所述第二内核态流程时所述应用程序触发所述驱动程序再次向所述直接内存存取控制器发起写操作,使所述读操作的第二内核态流程与所述驱动程序再次向所述直接内存存取控制器发起的写操作同时进行;

循环执行上述流程,直至数据传输完成。

2.如权利要求1所述的大规模数据传输方法,其特征在于,所述第一内核态流程具体包括:所述驱动程序创建第一直接内存存取链表,并将所述第一直接内存存取链表发送至所述直接内存存取控制器;

所述直接内存存取控制器根据所述驱动程序的接口信息、所述第一直接内存存取链表将第一数据从所述主机内存中传送至所述硬件加速卡中;

所述硬件加速卡对待处理数据进行数据处理。

3.如权利要求1或2所述的大规模数据传输方法,其特征在于,所述第二内核态流程具体包括:所述驱动程序创建第二直接内存存取链表,并将所述第二直接内存存取链表发送至所述直接内存存取控制器;

所述直接内存存取控制器根据所述驱动程序的接口信息、所述第二直接内存存取链表将第二数据从所述硬件加速卡中传送至所述主机内存中。

4.如权利要求2所述的大规模数据传输方法,其特征在于,所述当所述第一用户态流程执行完成后,在开始执行所述第一内核态流程的同时所述应用程序触发所述驱动程序向所述直接内存存取控制器发起读操作包括:当所述应用程序复制所述驱动程序的接口信息并将所述驱动程序的接口信息发送至所述直接内存存取控制器后,产生TnOK信号;

在开始执行所述第一内核态流程的同时,所述应用程序根据检测到的所述TnOK信号触发所述驱动程序向所述直接内存存取控制器发起读操作。

5.如权利要求3所述的大规模数据传输方法,其特征在于,所述当所述第二用户态流程执行完成后,在开始执行所述第二内核态流程时所述应用程序触发所述驱动程序再次向所述直接内存存取控制器发起写操作包括:当所述应用程序复制所述驱动程序的接口信息并将所述驱动程序的接口信息发送至所述直接内存存取控制器后,产生RnOK信号;

在开始执行所述第二内核态流程的同时,所述应用程序根据检测到的所述RnOK信号触发所述驱动程序,使得所述驱动程序再次向所述直接内存存取控制器发起写操作。

6.一种大规模数据传输系统,其特征在于,所述大规模数据传输系统包括:

数据传输启动模块,用于在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发所述驱动程序向直接内存存取控制器发起写操作,所述写操作包括第一用户态流程和第一内核态流程;第一用户态流程包括所述应用程序复制所述驱动程序的接口信息,并将所述驱动程序的接口信息发送至所述直接内存存取控制器;所述第一内核态流程用于处理所述硬件加速卡获取的第一数据;

读操作触发模块,用于当所述第一用户态流程执行完成后,在开始执行所述第一内核态流程的同时所述应用程序触发所述驱动程序向所述直接内存存取控制器发起读操作,使所述写操作的第一内核态流程和所述读操作的第二用户态流程同时进行,其中,所述读操作包括第二用户态流程和第二内核态流程;所述第二用户态流程包括所述应用程序复制所述驱动程序的接口信息,并将所述驱动程序的接口信息发送至所述直接内存存取控制器;

所述第二内核态流程用于将所述硬件加速卡中的第二数据传送至主机内存中;

写操作触发模块,用于当所述第二用户态流程执行完成后,在开始执行所述第二内核态流程时所述应用程序触发所述驱动程序再次向所述直接内存存取控制器发起写操作,使所述读操作的第二内核态流程与所述驱动程序再次向所述直接内存存取控制器发起的写操作同时进行;

循环控制模块,用于控制所述写操作触发模块和所述读操作触发模块循环执行上述流程,直至数据传输完成。

7.如权利要求6所述的大规模数据传输系统,其特征在于,所述第一内核态流程具体包括:所述驱动程序创建第一直接内存存取链表,并将所述第一直接内存存取链表发送至所述直接内存存取控制器;

所述直接内存存取控制器根据所述驱动程序的接口信息、所述第一直接内存存取链表将第一数据从所述主机内存中传送至所述硬件加速卡中;

所述硬件加速卡对待处理数据进行数据处理。

8.如权利要求6或7所述的大规模数据传输系统,其特征在于,所述第二内核态流程具体包括:所述驱动程序创建第二直接内存存取链表,并将所述第二直接内存存取链表发送至所述直接内存存取控制器;

所述直接内存存取控制器根据所述驱动程序的接口信息、所述第二直接内存存取链表将第二数据从所述硬件加速卡中传送至所述主机内存中。

9.如权利要求7所述的大规模数据传输系统,其特征在于,所述读操作触发模块包括:第一产生单元,用于当所述应用程序复制完成所述驱动程序的接口信息后,产生TnOK信号;

第一触发单元,用于在开始执行所述第一内核态流程的同时,所述应用程序根据检测到的所述TnOK信号触发所述驱动程序向所述直接内存存取控制器发起读操作。

10.如权利要求8所述的大规模数据传输系统,其特征在于,所述写操作触发模块包括:第二产生单元,用于当所述应用程序复制所述驱动程序的接口信息并将所述驱动程序的接口信息发送至所述直接内存存取控制器后,产生RnOK信号;

第二触发单元,用于在开始执行所述第二内核态流程的同时,所述应用程序根据检测到的所述RnOK信号触发所述驱动程序,使得所述驱动程序再次向所述直接内存存取控制器发起写操作。

说明书 :

大规模数据传输方法及系统

技术领域

[0001] 本发明属于通信技术领域,尤其涉及大规模数据传输方法及系统。

背景技术

[0002] 现有的直接内存存取(direct memory access,DMA)实现方式都是利用直接内存存取控制器先将待处理数据从主机内存中写入加速卡,等待加速卡完成数据运算后,直接内存存取控制器再从加速卡中读取运算后的数据并传输至主机内存。现有的直接内存存取数据传输技术在数据传输时,当直接内存存取控制器在进行写操作时,读操作的传输通道处于空闲状态;当直接内存存取控制器在进行读操作时,写操作的传输通道处于空闲状态,尤其是在数据规模比较大的时候,两者不能同时进行,使得数据的写入和读取耗时极大,传输效率低。

发明内容

[0003] 本发明实施例提供一种大规模数据传输方法及系统,旨在解决现有的直接内存存取数据传输技术在数据传输时,当直接内存存取控制器在进行写操作时,读操作的传输通道处于空闲状态;当直接内存存取控制器在进行读操作时,写操作的传输通道处于空闲状态,尤其是在数据规模比较大的时候,两者不能同时进行,使得数据的写入和读取耗时极大,传输效率低。
[0004] 第一方面,本发明实施例提供了一种大规模数据传输方法,所述大规模数据传输方法包括:
[0005] 在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发所述驱动程序向直接内存存取控制器发起写操作,所述写操作包括第一用户态流程和第一内核态流程;
[0006] 当所述第一用户态流程执行完成后,在开始执行所述第一内核态流程的同时所述应用程序触发所述驱动程序向所述直接内存存取控制器发起读操作,使所述写操作的第一内核态流程和所述读操作的第二用户态流程同时进行,其中,所述读操作包括第二用户态流程和所述第二内核态流程;
[0007] 当所述第二用户态流程执行完成后,在开始执行所述第二内核态流程时所述应用程序触发所述驱动程序再次向所述直接内存存取控制器发起写操作,使所述读操作的第二内核态流程与所述驱动程序再次向所述直接内存存取控制器发起的写操作同时进行;
[0008] 循环执行上述流程,直至数据传输完成。
[0009] 第二方面,本发明实施例提供了一种大规模数据传输系统,所述大规模数据传输系统包括:
[0010] 数据传输启动模块,用于在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发所述驱动程序向直接内存存取控制器发起写操作,所述写操作包括第一用户态流程和第一内核态流程;
[0011] 读操作触发模块,用于当所述第一用户态流程执行完成后,在开始执行所述第一内核态流程的同时所述应用程序触发所述驱动程序向所述直接内存存取控制器发起读操作,使所述写操作的第一内核态流程和所述读操作的第二用户态流程同时进行,其中,所述读操作包括第二用户态流程和所述第二内核态流程;
[0012] 写操作触发模块,用于当所述第二用户态流程执行完成后,在开始执行所述第二内核态流程时所述应用程序触发所述驱动程序再次向所述直接内存存取控制器发起写操作,使所述读操作的第二内核态流程与所述驱动程序再次向所述直接内存存取控制器发起的写操作同时进行;
[0013] 循环控制模块,用于控制所述写操作触发模块和所述读操作触发模块循环执行上述流程,直至数据传输完成。
[0014] 本发明实施例与现有技术相比存在的有益效果是:本发明实施例通过在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发驱动程序向直接内存存取控制器发起写操作,写操作包括第一用户态流程和第一内核态流程;当第一用户态流程执行完成后,在开始执行第一内核态流程的同时应用程序触发驱动程序向直接内存存取控制器发起读操作,使写操作的第一内核态流程和读操作的第二用户态流程同时进行,其中,读操作包括第二用户态流程和第二内核态流程;当第二用户态流程执行完成后,在开始执行第二内核态流程时应用程序触发驱动程序再次向直接内存存取控制器发起写操作,使读操作的第二内核态流程与驱动程序再次向直接内存存取控制器发起的写操作同时进行;循环执行上述流程,直至数据传输完成,从而使得读操作和写操作可以同时进行,尤其是在数据规模比较大的时候,大大提高了直接内存存取传输效率。

附图说明

[0015] 图1为本发明实施例提供的一种大规模数据传输方法的流程示意图;
[0016] 图2为图1所示实施例中的步骤S102的细化步骤流程示意图;
[0017] 图3为图1所示实施例中的步骤S103的细化步骤流程示意图;
[0018] 图4为本发明实施例提供的一种大规模数据传输系统的结构示意图;
[0019] 图5为图4所示实施例中的读操作触发模块402的细化结构示意图;
[0020] 图6为图4所示实施例中的写操作触发模块403的细化结构示意图。

具体实施方式

[0021] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
[0022] 为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0023] 请参阅图1,图1为本发明实施例提供的一种大规模数据传输方法的流程示意图。本实施例的执行主体为主机,主机是指计算机除去输入输出设备以外的主要机体部分,也是用于放置主板及其他主要部件的控制箱体。通常包括中央处理器(Central Processing Unit,CPU)、内存、硬盘、光驱、电源以及其他输入输出控制器和接口。本实施例中的主机中的卡槽中放置了硬件加速卡,例如PCIE硬件加速卡,PCIE硬件加速卡是相当于CPU的一个协处理器,该PCIE硬件加速卡常用的核心逻辑器件为现场可编程门阵(Field Programmable Gate Array,FPGA)。当主机打开的时候,就会将硬件加速卡和直接内存存取控制器中的驱动程序加载到主机中。本实施例提供的一种大规模数据传输方法包括以下步骤:
[0024] 步骤S101、在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发驱动程序向直接内存存取控制器发起写操作,写操作包括第一用户态流程和第一内核态流程。
[0025] 在本发明实施例中,若应用程序调用驱动程序,需要在驱动程序中预留出供外界访问的接口,供外界访问的接口一般包括read,write,open,ioctl等接口。例如,fd=open(设备,参数);或者fd=ioctl(设备,参数)。这样就会调用到这个设备驱动中的open或者ioctl函数。
[0026] 其中,直接内存存取控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有直接内存存取能力的外设连接起来的控制器。而直接内存存取是一种不经过CPU而直接从内存存取数据的数据交换模式。PIO模式下硬盘和内存之间的数据传输是由CPU来控制的,而在直接内存存取模式下,CPU只须向直接内存存取控制器下达指令,让直接内存存取控制器来处理数的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率。
[0027] 在本发明实施例中,在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,使得驱动程序向直接内存存取控制器发起写操作。
[0028] 其中,写操作包括第一用户态流程和第一内核态流程。
[0029] 其中,第一用户态流程具体包括:
[0030] 应用程序复制驱动程序的接口信息,并将驱动程序的接口信息发送至直接内存存取控制器。
[0031] 第一内核态流程具体包括:
[0032] 1)驱动程序创建第一直接内存存取链表,并将第一直接内存存取链表发送至直接内存存取控制器。
[0033] 其中,上述第一直接内存存取链表包括第一数据的数据长度、第一数据传送起始地址、第一数据传送目的地址及写操作指令。
[0034] 2)直接内存存取控制器根据驱动程序的接口信息、第一直接内存存取链表将第一数据从主机内存中传送至硬件加速卡中。
[0035] 3)硬件加速卡对待处理数据进行数据处理。
[0036] 步骤S102、当第一用户态流程执行完成后,在开始执行第一内核态流程的同时应用程序触发驱动程序向直接内存存取控制器发起读操作,使写操作的第一内核态流程和读操作的第二用户态流程同时进行,其中,读操作包括第二用户态流程和第二内核态流程。
[0037] 其中,读操作包括第二用户态流程和第二内核态流程。
[0038] 其中,第二用户态流程具体包括:
[0039] 应用程序复制驱动程序的接口信息,并将驱动程序的接口信息发送至直接内存存取控制器。
[0040] 第二内核态流程具体包括:
[0041] 1)驱动程序创建第二直接内存存取链表,并将第二直接内存存取链表发送至直接内存存取控制器。
[0042] 其中,上述第二直接内存存取链表包括第二数据的数据长度、第二数据传送起始地址、第二数据传送目的地址及读操作指令。
[0043] 2)直接内存存取控制器根据驱动程序的接口信息、第二直接内存存取链表将第二数据从硬件加速卡中传送至主机内存中。
[0044] 进一步地,图2示出了步骤S102中当第一用户态流程执行完成后,在开始执行第一内核态流程的同时应用程序触发驱动程序向直接内存存取控制器发起读操作的具体实现流程,详述如下:
[0045] 步骤S201、当应用程序复制驱动程序的接口信息并将驱动程序的接口信息发送至直接内存存取控制器后,产生TnOK信号。
[0046] 步骤S202、在开始执行第一内核态流程的同时,应用程序根据检测到的TnOK信号触发驱动程序向直接内存存取控制器发起读操作。
[0047] 在本发明实施例中,通过当第一用户态流程执行完成后,在开始执行第一内核态流程的同时应用程序触发驱动程序向直接内存存取控制器发起读操作,使写操作的第一内核态流程和读操作的第二用户态流程同时进行,可以在将数据写进PCIE加速卡的同时,为直接内存存取控制器进行数据读出做前期的准备(即为应用程序复制驱动程序的接口信息,并将驱动程序的接口信息发送至直接内存存取控制器),从而省去每一次执行读操作时的用户态流程的时间,节约时间。
[0048] 步骤S103、当第二用户态流程执行完成后,在开始执行第二内核态流程时应用程序触发驱动程序再次向直接内存存取控制器发起写操作,使读操作的第二内核态流程与驱动程序再次向直接内存存取控制器发起的写操作同时进行。
[0049] 在本发明实施例中,当应用程序复制驱动程序的接口信息并将驱动程序的接口信息发送至直接内存存取控制器后,在开始执行第二内核态流程的同时应用程序触发驱动程序,使得驱动程序再次向直接内存存取控制器发起写操作。
[0050] 进一步地,图3示出了步骤S103中当第二用户态流程执行完成后,在开始执行第二内核态流程时应用程序触发驱动程序再次向直接内存存取控制器发起写操作的具体实现流程,详述如下:
[0051] 步骤S301、当应用程序复制驱动程序的接口信息并将驱动程序的接口信息发送至直接内存存取控制器后,产生RnOK信号。
[0052] 步骤S302、在开始执行第二内核态流程的同时,应用程序根据检测到的RnOK信号触发驱动程序,使得驱动程序再次向直接内存存取控制器发起写操作。
[0053] 在完成步骤S103后,循环执行步骤S101~S103,直至数据传输完成。
[0054] 以上可以看出,本发明实施例提供的一种大规模数据传输方法通过在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发驱动程序向直接内存存取控制器发起写操作,写操作包括第一用户态流程和第一内核态流程;当第一用户态流程执行完成后,在开始执行第一内核态流程的同时应用程序触发驱动程序向直接内存存取控制器发起读操作,使写操作的第一内核态流程和读操作的第二用户态流程同时进行,其中,读操作包括第二用户态流程和第二内核态流程;当第二用户态流程执行完成后,在开始执行第二内核态流程时应用程序触发驱动程序再次向直接内存存取控制器发起写操作,使读操作的第二内核态流程与驱动程序再次向直接内存存取控制器发起的写操作同时进行;循环执行上述流程,直至数据传输完成,通过在直接内存存取数据传输时,读操作和写操作可以同时进行,尤其是在数据规模比较大的时候,可以提高直接内存存取传输效率。
[0055] 请参阅图4,图4为本发明实施例提供的一种大规模数据传输系统的结构示意图。本实施例的大规模数据传输系统为主机,主机是指计算机除去输入输出设备以外的主要机体部分,也是用于放置主板及其他主要部件的控制箱体。通常包括中央处理器(Central Processing Unit,CPU)、内存、硬盘、光驱、电源、以及其他输入输出控制器和接口。本实施例中的主机中的卡槽中放置了硬件加速卡,例如PCIE硬件加速卡,PCIE硬件加速卡是相当于CPU的一个协处理器,该PCIE硬件加速卡常用的核心逻辑器件为现场可编程门阵(Field-Programmable Gate Array,FPGA)。当主机打开的时候,就会将硬件加速卡和直接内存存取控制器中的驱动程序加载到主机中。本实施例的大规模数据传输系统包括的各模块用于执行图1对应的实施例中的各步骤,具体请参阅图1以及图1对应的实施例中的相关描述,此处不赘述。本实施例的大规模数据传输系统包括:数据传输启动模块401、读操作触发模块402、写操作触发模块403、循环控制模块404。具体地:
[0056] 数据传输启动模块401,用于在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发驱动程序向直接内存存取控制器发起写操作,写操作包括第一用户态流程和第一内核态流程。
[0057] 其中,写操作包括第一用户态流程和第一内核态流程。
[0058] 其中,第一用户态流程具体包括:
[0059] 应用程序复制驱动程序的接口信息,并将驱动程序的接口信息发送至直接内存存取控制器。
[0060] 第一内核态流程具体包括:
[0061] 1)驱动程序创建第一直接内存存取链表,并将第一直接内存存取链表发送至直接内存存取控制器。
[0062] 其中,上述第一直接内存存取链表包括第一数据的数据长度、第一数据传送起始地址、第一数据传送目的地址及写操作指令。
[0063] 2)直接内存存取控制器根据驱动程序的接口信息、第一直接内存存取链表将第一数据从主机内存中传送至硬件加速卡中。
[0064] 3)硬件加速卡对待处理数据进行数据处理。
[0065] 读操作触发模块402,用于当第一用户态流程执行完成后,在开始执行第一内核态流程的同时应用程序触发驱动程序向直接内存存取控制器发起读操作,使写操作的第一内核态流程和读操作的第二用户态流程同时进行,其中,读操作包括第二用户态流程和第二内核态流程。
[0066] 其中,读操作包括第二用户态流程和第二内核态流程。
[0067] 其中,第二用户态流程具体包括:
[0068] 应用程序复制驱动程序的接口信息,并将驱动程序的接口信息发送至直接内存存取控制器。
[0069] 第二内核态流程具体包括:
[0070] 1)驱动程序创建第二直接内存存取链表,并将第二直接内存存取链表发送至直接内存存取控制器。
[0071] 其中,上述第二直接内存存取链表包括第二数据的数据长度、第二数据传送起始地址、第二数据传送目的地址及读操作指令。
[0072] 2)直接内存存取控制器根据驱动程序的接口信息、第二直接内存存取链表将第二数据从硬件加速卡中传送至主机内存中。
[0073] 进一步地,图4示出了读操作触发模块402的细化结构示意图,读操作触发模块402包括的各单元用于执行图2对应的实施例中的各步骤,具体请参阅图2以及图2对应的实施例中的相关描述,此处不赘述。本实施例的读操作触发模块402包括第一产生单元501、第一触发单元502。具体地:
[0074] 第一产生单元501,用于当应用程序复制驱动程序的接口信息并将驱动程序的接口信息发送至直接内存存取控制器后,产生TnOK信号。
[0075] 第一触发单元502,用于在开始执行第一内核态流程的同时,应用程序根据检测到的TnOK信号触发驱动程序向直接内存存取控制器发起读操作。
[0076] 在本发明实施例中,通过当第一用户态流程执行完成后,在开始执行第一内核态流程的同时应用程序触发驱动程序向直接内存存取控制器发起读操作,使写操作的第一内核态流程和读操作的第二用户态流程同时进行,可以在将数据写进PCIE加速卡的同时,为直接内存存取控制器进行数据读出做前期的准备(即为应用程序复制驱动程序的接口信息,并将驱动程序的接口信息发送至直接内存存取控制器),从而省去每一次执行读操作时的用户态流程的时间,节约时间。
[0077] 写操作触发模块403,用于当第二用户态流程执行完成后,在开始执行第二内核态流程时应用程序触发驱动程序再次向直接内存存取控制器发起写操作,使读操作的第二内核态流程与驱动程序再次向直接内存存取控制器发起的写操作同时进行。
[0078] 在本发明实施例中,当应用程序复制驱动程序的接口信息并将驱动程序的接口信息发送至直接内存存取控制器后,在开始执行第二内核态流程的同时应用程序触发驱动程序,使得驱动程序再次向直接内存存取控制器发起写操作。
[0079] 进一步地,图6示出了写操作触发模块403的细化结构示意图,写操作触发模块403包括的各单元用于执行图3对应的实施例中的各步骤,具体请参阅图3以及图3对应的实施例中的相关描述,此处不赘述。本实施例的写操作触发模块403包括第二产生单元601、第二触发单元602。具体地:
[0080] 第二产生单元601,用于当应用程序复制驱动程序的接口信息并将驱动程序的接口信息发送至直接内存存取控制器后,产生RnOK信号。
[0081] 第二触发单元602,用于在开始执行第二内核态流程的同时,应用程序根据检测到的RnOK信号触发驱动程序,使得驱动程序再次向直接内存存取控制器发起写操作。
[0082] 循环控制模块404,用于控制写操作触发模块和读操作触发模块循环执行上述流程,直至数据传输完成。
[0083] 以上可以看出,本发明实施例提供的一种大规模数据传输系统通过在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发驱动程序向直接内存存取控制器发起写操作,写操作包括第一用户态流程和第一内核态流程;当第一用户态流程执行完成后,在开始执行第一内核态流程的同时应用程序触发驱动程序向直接内存存取控制器发起读操作,使写操作的第一内核态流程和读操作的第二用户态流程同时进行,其中,读操作包括第二用户态流程和第二内核态流程;当第二用户态流程执行完成后,在开始执行第二内核态流程时应用程序触发驱动程序再次向直接内存存取控制器发起写操作,使读操作的第二内核态流程与驱动程序再次向直接内存存取控制器发起的写操作同时进行;循环执行上述流程,直至数据传输完成,通过在直接内存存取数据传输时,读操作和写操作可以同时进行,尤其是在数据规模比较大的时候,可以提高直接内存存取传输效率。
[0084] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块、单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0085] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0086] 在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块、单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0087] 本发明实施例终端中的单元可以根据实际需要进行合并、划分和删减。
[0088] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。