一种数据传输方法及计算机的制作方法

文档序号:9579197阅读:532来源:国知局
一种数据传输方法及计算机的制作方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种数据传输方法及计算机。
【背景技术】
[0002]Web应用是指使用浏览器支持的语言开发的、运行于各种浏览器和互联网络上的、可以完成至少一个特定功能的应用。在Web应用的使用过程中,磁盘和网卡之间存在大量的应用数据传输,其数据流方向包括从磁盘到网卡的应用数据传输,或者从网卡到磁盘的应用数据传输。其中,中央处理器(Central Processing Unit, CPU)在磁盘和网卡进行应用数据传输的过程中起到了转发和封装数据包的功能。
[0003]具体的,以应用数据由磁盘传输至网卡的过程为例,在将应用数据由磁盘传输至网卡的过程中,CPU需要在内核模式下从磁盘中读取待读取数据,将待读取数据拷贝至内核地址空间缓存区1中(第一次数据拷贝),然后还需要将待读取数据从内核地址空间缓存区拷贝到用户地址空间缓存区(第二次数据拷贝),再将待读取数据从用户地址空间缓存区拷贝至内核地址空间缓存区2中(第三次数据拷贝),然后才能够将待读取数据从内核地址空间缓存区2传输至网卡。
[0004]在上述数据传输过程中,CPU进行数据拷贝的次数较多,大量占用了 CPU总线资源和内存资源,数据传输的效率较低。

【发明内容】

[0005]本发明的实施例提供一种数据传输方法及计算机,可以减少CPU总线资源以及内存资源占用,进而可以提高数据传输效率。
[0006]为达到上述目的,本发明的实施例采用如下技术方案:
[0007]本发明实施例的第一方面,提供一种数据传输方法,所述方法应用于计算机中,所述计算机包括中央处理器CPU、内存、第一部件和第二部件,所述第一部件中配置有DDA引擎,所述方法包括:
[0008]所述第一部件接收直接内存存取DMA数据访问请求,所述DMA数据访问请求包括待读取数据的标识;
[0009]所述第一部件将所述DMA数据访问请求发送至所述CPU ;
[0010]所述CPU在接收到所述DMA数据访问请求后,根据所述待读取数据的标识获取所述待读取数据的内存地址信息;所述待读取数据的内存地址信息用于指示所述内存中用于保存所述待读取数据的传输地址信息的地址,所述待读取数据的传输地址信息用于指示所述第二部件中用于保存所述待读取数据的地址;
[0011]所述CPU将所述待读取数据的内存地址信息发送至所述第一部件;
[0012]所述第一部件通过所述DDA引擎,根据所述待读取数据的内存地址信息,从所述第二部件中获得所述待读取数据。
[0013]结合第一方面,在一种可能的实现方式中,所述内存中包括第一虚拟缓冲单元和第二虚拟缓冲单元,其中,所述第一虚拟缓冲单元的读写方式与所述第二部件对应,所述第二虚拟缓冲单元的读写方式与所述第一部件对应,所述方法还包括:
[0014]所述CPU在接收到所述DMA数据访问请求后,将所述第一虚拟缓冲单元的地址发送和所述待读取数据的标识至所述第二部件;
[0015]所述第二部件根据所述第一虚拟缓冲单元的地址和所述待读取数据的标识,将所述待读取数据的传输地址信息写入所述第一虚拟缓冲单元;
[0016]所述CPU从所述第一虚拟缓冲单元中读取所述待读取数据的传输地址信息,并将所述待读取数据的传输地址信息写入所述第二虚拟缓冲单元;
[0017]所述CPU将所述待读取数据的内存地址信息发送至所述第一部件,包括:
[0018]所述CPU将所述第二虚拟缓冲单元的地址发送至所述第一部件。
[0019]结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,所述第一部件通过所述DDA引擎,根据所述待读取数据的内存地址信息,从所述第二部件中获得所述待读取数据,包括:
[0020]所述第一部件根据所述第二虚拟缓冲单元的地址,从所述第二虚拟缓冲单元中获得所述待读取数据的传输地址信息;
[0021]所述第一部件通过所述DDA引擎,根据所述待读取数据的传输地址信息的指示,从所述第二部件中读取所述待读取数据。
[0022]结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在所述将所述待读取数据的传输地址信息写入所述第二虚拟缓冲单元之前,所述方法还包括:
[0023]所述CPU为保存在所述第一虚拟缓冲单元中的所述待读取数据的传输地址信息添加描述符,以生成描述符报文,其中,所述描述符用于标识所述待读取数据的传输地址信息;
[0024]所述CPU将所述待读取数据的传输地址信息写入所述第二虚拟缓冲单元,包括:
[0025]所述CPU将所述描述符报文写入所述第二虚拟缓冲单元。
[0026]结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,所述第一部件为网卡,所述第二部件为磁盘;
[0027]或者,所述第一部件为所述磁盘,所述第二部件为所述网卡。
[0028]本发明实施例的第二方面,还提供一种计算机,包括:中央处理器CPU、内存、第一部件和第二部件,所述第一部件中配置有DDA引擎;
[0029]所述第一部件,用于接收直接内存存取DMA数据访问请求,所述DMA数据访问请求包括待读取数据的标识;将所述DMA数据访问请求发送至所述CPU ;
[0030]所述CPU,用于在接收到所述DMA数据访问请求后,根据所述待读取数据的标识获取所述待读取数据的内存地址信息;所述待读取数据的内存地址信息用于指示所述内存中用于保存所述待读取数据的传输地址信息的地址,所述待读取数据的传输地址信息用于指示所述第二部件中用于保存所述待读取数据的地址;将所述待读取数据的内存地址信息发送至所述第一部件;
[0031]所述第一部件,还用于接收所述待读取数据的内存地址信息,通过所述DDA引擎,根据接收自所述CPU的所述待读取数据的内存地址信息,从所述第二部件中获得所述待读取数据。
[0032]结合第二方面,在一种可能的实现方式中,所述内存中包括第一虚拟缓冲单元和第二虚拟缓冲单元,其中,所述第一虚拟缓冲单元的读写方式与所述第二部件对应,所述第二虚拟缓冲单元的读写方式与所述第一部件对应;
[0033]所述CPU,还用于在接收到所述DMA数据访问请求后,将所述第一虚拟缓冲单元的地址和所述待读取数据的标识发送至所述第二部件;
[0034]所述第二部件,用于根据所述第一虚拟缓冲单元的地址和所述待读取数据的标识,将所述待读取数据的传输地址信息写入所述第一虚拟缓冲单元;
[0035]所述CPU,还用于从所述第一虚拟缓冲单元中读取所述待读取数据的传输地址信息,并将所述待读取数据的传输地址信息写入所述第二虚拟缓冲单元;将所述第二虚拟缓冲单元的地址发送至所述第一部件。
[0036]结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,所述第一部件,还用于根据所述第二虚拟缓冲单元的地址,从所述第二虚拟缓冲单元中获得所述待读取数据的传输地址信息;通过所述DDA引擎,根据所述待读取数据的传输地址信息的指示,从所述第二部件中读取所述待读取数据。
[0037]结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,所述CPU,还用于为保存在所述第一虚拟缓冲单元中的所述待读取数据的传输地址信息添加描述符,以生成描述符报文;将所述描述符报文写入所述第二虚拟缓冲单元;
[0038]其中,所述描述符用于标识所述待读取数据的传输地址信息。
[0039]结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,所述第一部件为网卡,所述第二部件为磁盘;
[0040]或者,所述第一部件为所述磁盘,所述第二部件为所述网卡。
[0041]本发明实施例提供的数据传输方法及计算机,第一部件在接收到包含待读取数据的标识的DMA数据访问请求后,将DMA数据访问请求发送至CPU ;CPU在接收到DMA数据访问请求后,根据待读取数据的标识获取待读取数据的内存地址信息;待读取数据的内存地址信息用于指示内存中用于保存待读取数据的传输地址信息的地址,待读取数据的传输地址信息用于指示第二部件中用于保存待读取数据的地址;CPU将待读取数据的内存地址信息发送至第一部件;第一部件通过DDA引擎,根据待读取数据的内存地址信息,从第二部件中获得待读取数据。
[0042]与现有技术中,数据传输过程中大量的数据迁移导致的CPU总线资源以及内存资源占用较大相比,通过本方案,CPU在第一部件和第二部件进行数据传输的过程中,仅为第一部件和第二部件提供待传输数据的存储地址的转发功能,并不直接传输待传输数据,可以减少传输的数据量,进而可以减少CPU总线资源以及内存资源占用,进而可以提高数据传输效率。
【附图说明】
[0043]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0044]图1为本发明实施例1中的一种数据传输方法流程图;
[0045]图2为本发明实施例2中的一种数据传输方法流程图;
[0046]图3为本发明实施例3中的一种计算机的组成示意图;
[0047]图4为本发明
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1