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

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

Large scale data transmission method and system

The invention is applicable to the field of communication technology, provides large-scale data transmission method, including: in the beginning of data transmission, the application calls the driver the driver to the controller initiates a write operation, a write operation includes a first user mode process and the first kernel process; when the first user mode process execution is completed, to initiate a read operation the controller driver in the implementation of the first kernel process, the first kernel process and second user mode processes at the same time, the read operation includes second user processes and second kernel process; when the second user mode process execution is completed, in the implementation of second kernel process when the driver again to the controller initiates a write operation. The second write operation process and the kernel driver controller to initiate again at the same time; the process execution cycle Until data transfer is complete. The invention can improve the data transmission efficiency by simultaneously reading and writing at the time of data transmission, especially when the data scale is relatively large.

【技术实现步骤摘要】
大规模数据传输方法及系统
本专利技术属于通信
,尤其涉及大规模数据传输方法及系统。
技术介绍
现有的直接内存存取(directmemoryaccess,DMA)实现方式都是利用直接内存存取控制器先将待处理数据从主机内存中写入加速卡,等待加速卡完成数据运算后,直接内存存取控制器再从加速卡中读取运算后的数据并传输至主机内存。现有的直接内存存取数据传输技术在数据传输时,当直接内存存取控制器在进行写操作时,读操作的传输通道处于空闲状态;当直接内存存取控制器在进行读操作时,写操作的传输通道处于空闲状态,尤其是在数据规模比较大的时候,两者不能同时进行,使得数据的写入和读取耗时极大,传输效率低。
技术实现思路
本专利技术实施例提供一种大规模数据传输方法及系统,旨在解决现有的直接内存存取数据传输技术在数据传输时,当直接内存存取控制器在进行写操作时,读操作的传输通道处于空闲状态;当直接内存存取控制器在进行读操作时,写操作的传输通道处于空闲状态,尤其是在数据规模比较大的时候,两者不能同时进行,使得数据的写入和读取耗时极大,传输效率低。第一方面,本专利技术实施例提供了一种大规模数据传输方法,所述大规模数据传输方法包括:在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发所述驱动程序向直接内存存取控制器发起写操作,所述写操作包括第一用户态流程和第一内核态流程;当所述第一用户态流程执行完成后,在开始执行所述第一内核态流程的同时所述应用程序触发所述驱动程序向所述直接内存存取控制器发起读操作,使所述写操作的第一内核态流程和所述读操作的第二用户态流程同时进行,其中,所述读操作包括第二用户态流程和所述第二内核态流程;当所述第二用户态流程执行完成后,在开始执行所述第二内核态流程时所述应用程序触发所述驱动程序再次向所述直接内存存取控制器发起写操作,使所述读操作的第二内核态流程与所述驱动程序再次向所述直接内存存取控制器发起的写操作同时进行;循环执行上述流程,直至数据传输完成。第二方面,本专利技术实施例提供了一种大规模数据传输系统,所述大规模数据传输系统包括:数据传输启动模块,用于在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发所述驱动程序向直接内存存取控制器发起写操作,所述写操作包括第一用户态流程和第一内核态流程;读操作触发模块,用于当所述第一用户态流程执行完成后,在开始执行所述第一内核态流程的同时所述应用程序触发所述驱动程序向所述直接内存存取控制器发起读操作,使所述写操作的第一内核态流程和所述读操作的第二用户态流程同时进行,其中,所述读操作包括第二用户态流程和所述第二内核态流程;写操作触发模块,用于当所述第二用户态流程执行完成后,在开始执行所述第二内核态流程时所述应用程序触发所述驱动程序再次向所述直接内存存取控制器发起写操作,使所述读操作的第二内核态流程与所述驱动程序再次向所述直接内存存取控制器发起的写操作同时进行;循环控制模块,用于控制所述写操作触发模块和所述读操作触发模块循环执行上述流程,直至数据传输完成。本专利技术实施例与现有技术相比存在的有益效果是:本专利技术实施例通过在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发驱动程序向直接内存存取控制器发起写操作,写操作包括第一用户态流程和第一内核态流程;当第一用户态流程执行完成后,在开始执行第一内核态流程的同时应用程序触发驱动程序向直接内存存取控制器发起读操作,使写操作的第一内核态流程和读操作的第二用户态流程同时进行,其中,读操作包括第二用户态流程和第二内核态流程;当第二用户态流程执行完成后,在开始执行第二内核态流程时应用程序触发驱动程序再次向直接内存存取控制器发起写操作,使读操作的第二内核态流程与驱动程序再次向直接内存存取控制器发起的写操作同时进行;循环执行上述流程,直至数据传输完成,从而使得读操作和写操作可以同时进行,尤其是在数据规模比较大的时候,大大提高了直接内存存取传输效率。附图说明图1为本专利技术实施例提供的一种大规模数据传输方法的流程示意图;图2为图1所示实施例中的步骤S102的细化步骤流程示意图;图3为图1所示实施例中的步骤S103的细化步骤流程示意图;图4为本专利技术实施例提供的一种大规模数据传输系统的结构示意图;图5为图4所示实施例中的读操作触发模块402的细化结构示意图;图6为图4所示实施例中的写操作触发模块403的细化结构示意图。具体实施方式以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本专利技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本专利技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本专利技术的描述。为了说明本专利技术所述的技术方案,下面通过具体实施例来进行说明。请参阅图1,图1为本专利技术实施例提供的一种大规模数据传输方法的流程示意图。本实施例的执行主体为主机,主机是指计算机除去输入输出设备以外的主要机体部分,也是用于放置主板及其他主要部件的控制箱体。通常包括中央处理器(CentralProcessingUnit,CPU)、内存、硬盘、光驱、电源以及其他输入输出控制器和接口。本实施例中的主机中的卡槽中放置了硬件加速卡,例如PCIE硬件加速卡,PCIE硬件加速卡是相当于CPU的一个协处理器,该PCIE硬件加速卡常用的核心逻辑器件为现场可编程门阵(FieldProgrammableGateArray,FPGA)。当主机打开的时候,就会将硬件加速卡和直接内存存取控制器中的驱动程序加载到主机中。本实施例提供的一种大规模数据传输方法包括以下步骤:步骤S101、在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发驱动程序向直接内存存取控制器发起写操作,写操作包括第一用户态流程和第一内核态流程。在本专利技术实施例中,若应用程序调用驱动程序,需要在驱动程序中预留出供外界访问的接口,供外界访问的接口一般包括read,write,open,ioctl等接口。例如,fd=open(设备,参数);或者fd=ioctl(设备,参数)。这样就会调用到这个设备驱动中的open或者ioctl函数。其中,直接内存存取控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有直接内存存取能力的外设连接起来的控制器。而直接内存存取是一种不经过CPU而直接从内存存取数据的数据交换模式。PIO模式下硬盘和内存之间的数据传输是由CPU来控制的,而在直接内存存取模式下,CPU只须向直接内存存取控制器下达指令,让直接内存存取控制器来处理数的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率。在本专利技术实施例中,在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,使得驱动程序向直接内存存取控制器发起写操作。其中,写操作包括第一用户态流程和第一内核态流程。其中,第一用户态流程具体包括:应用程序复制驱动程序的接口信息,并将驱动程序的接口信息发送至直接内存存取控制器。第一内核态流程具体包括:1)驱动程序创建第一直接内存存取链表,并将第一直接内存存取链表本文档来自技高网...
大规模数据传输方法及系统

【技术保护点】
一种大规模数据传输方法,其特征在于,所述大规模数据传输方法包括:在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发所述驱动程序向直接内存存取控制器发起写操作,所述写操作包括第一用户态流程和第一内核态流程;当所述第一用户态流程执行完成后,在开始执行所述第一内核态流程的同时所述应用程序触发所述驱动程序向所述直接内存存取控制器发起读操作,使所述写操作的第一内核态流程和所述读操作的第二用户态流程同时进行,其中,所述读操作包括第二用户态流程和所述第二内核态流程;当所述第二用户态流程执行完成后,在开始执行所述第二内核态流程时所述应用程序触发所述驱动程序再次向所述直接内存存取控制器发起写操作,使所述读操作的第二内核态流程与所述驱动程序再次向所述直接内存存取控制器发起的写操作同时进行;循环执行上述流程,直至数据传输完成。

【技术特征摘要】
1.一种大规模数据传输方法,其特征在于,所述大规模数据传输方法包括:在数据传输开始时,由应用程序调用驱动程序向硬件加速卡发起运算请求,触发所述驱动程序向直接内存存取控制器发起写操作,所述写操作包括第一用户态流程和第一内核态流程;当所述第一用户态流程执行完成后,在开始执行所述第一内核态流程的同时所述应用程序触发所述驱动程序向所述直接内存存取控制器发起读操作,使所述写操作的第一内核态流程和所述读操作的第二用户态流程同时进行,其中,所述读操作包括第二用户态流程和所述第二内核态流程;当所述第二用户态流程执行完成后,在开始执行所述第二内核态流程时所述应用程序触发所述驱动程序再次向所述直接内存存取控制器发起写操作,使所述读操作的第二内核态流程与所述驱动程序再次向所述直接内存存取控制器发起的写操作同时进行;循环执行上述流程,直至数据传输完成。2.如权利要求1所述的大规模数据传输方法,其特征在于,所述第一用户态流程具体包括:所述应用程序复制所述驱动程序的接口信息,并将所述驱动程序的接口信息发送至所述直接内存存取控制器;所述第一内核态流程具体包括:所述驱动程序创建第一直接内存存取链表,并将所述第一直接内存存取链表发送至所述直接内存存取控制器;所述直接内存存取控制器根据所述驱动程序的接口信息、所述第一直接内存存取链表将第一数据从主机内存中传送至所述硬件加速卡中;所述硬件加速卡对所述待处理数据进行数据处理。3.如权利要求1或2所述的大规模数据传输方法,其特征在于,所述第二用户态流程具体包括:所述应用程序复制所述驱动程序的接口信息,并将所述驱动程序的接口信息发送至所述直接内存存取控制器;所述第二内核态流程具体包括:所述驱动程序创建第二直接内存存取链表,并将所述第二直接内存存取链表发送至所述直接内存存取控制器;所述直接内存存取控制器根据所述驱动程序的接口信息、所述第二直接内存存取链表将第二数据从所述硬件加速卡中传送至所述主机内存中。4.如权利要求2所述的大规模数据传输方法,其特征在于,所述当所述第一用户态流程执行完成后,在开始执行所述第一内核态流程的同时所述应用程序触发所述驱动程序向所述直接内存存取控制器发起读操作包括:当所述应用程序复制所述驱动程序的接口信息并将所述驱动程序的接口信息发送至所述直接内存存取控制器后,产生TnOK信号;在开始执行所述第一内核态流程的同时,所述应用程序根据检测到的所述TnOK信号触发所述驱动程序向所述直接内存存取控制器发起读操作。5.如权利要求3所述的大规模数据传输方法,其特征在于,所述当所述第二用户态流程执行完成后,在开始执行所述第二内核态流程时所述应用程序触发所述驱动程序再次向所述直接内存存取控制器发起写操作包括:当所述应用程序复制所述驱动程序的接口信息并将所述驱动程序的接口信息发送至所述直接内存存取控制器后,产生RnOK信号;在开始执行所述第二内核态流程的同时,所述应用程序根据检测到的所述RnOK信号触发所述驱动程序,使得所述驱动程...

【专利技术属性】
技术研发人员:李超黄俞翔
申请(专利权)人:深圳市恒扬数据股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1