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

文档序号:9579197阅读:来源:国知局
实施例3中的另一种计算机的组成示意图。
【具体实施方式】
[0048]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0049]另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0050]本发明实施例中的计算机可以为个人电脑(Personal Computer, PC)、服务器、平板电脑或者手机等任意一种电子计算机产品,本发明实施例对该计算机具体形式不做限制。
[0051]具体的,本发明实施例中的计算机可以包括中央处理器(Central ProcessingUnit, CPU)、内存、第一部件和第二部件,第一部件中配置有DDA引擎。其中,本发明实施例具体可以应用于待读取数据由第二部件传输至第一部件的过程中,即本发明实施例具体可以应用于第一部件从第二部件中直接读取待读取数据的过程中。
[0052]在本发明实施例的第一种场景中,本发明实施例中的第一部件可以为计算机中的磁盘,第二部件可以为计算机中的网卡,即本发明实施例具体可以应用于计算机中的磁盘直接从该计算机中的网卡中读取待读取数据的过程中。
[0053]在本发明实施例的第二种场景中,本发明实施例中的第一部件可以为计算机中的网卡,第二部件可以为计算机中的磁盘,即本发明实施例具体可以应用于计算机中的网卡直接从该计算机中的磁盘中读取待读取数据的过程中。
[0054]实施例1
[0055]本发明实施例提供一种数据传输方法,可以应用于计算机中,该计算机包括CPU、内存、第一部件和第二部件,第一部件中配置有直接设备访问(Direct Device Access,DDA)引擎;本发明实施例可以应用在第一部件向第二部件直接传输数据的过程中,如图1所示,该数据传输方法包括:
[0056]S101、第一部件接收直接内存存取(direct memory access, DMA)数据访问请求,DMA数据访问请求包括待读取数据的标识。
[0057]示例性的,本发明实施例中的第一部件为计算机中的磁盘,第二部件为计算机中的网卡;或者,第一部件为计算机中的网卡,第二部件为计算机中的磁盘。
[0058]S102、第一部件将DMA数据访问请求发送至CPU。
[0059]其中,第一部件在接收到DMA数据访问请求后,可以将DMA数据访问请求转发至CPU,以使CPU根据DMA数据访问请求中包含的待读取数据的标识获取待读取数据的内存地址信息,即执行S103:
[0060]S103、CPU在接收到DMA数据访问请求后,根据待读取数据的标识获取待读取数据的内存地址信息。
[0061]其中,待读取数据的内存地址信息用于指示内存中用于保存待读取数据的传输地址信息的地址,待读取数据的传输地址信息用于指示第二部件中用于保存待读取数据的地址。
[0062]示例性的,本发明实施例中的内存可以包括第一虚拟缓冲单元和第二虚拟缓冲单元。其中,第一虚拟缓冲单元的读写方式与第二部件对应,第二虚拟缓冲单元的读写方式与第一部件对应。
[0063]其中,待读取数据的内存地址信息具体用于指示内存中的第二虚拟缓冲单元中用于保存待读取数据的传输地址信息的地址,即待读取数据的传输地址信息保存在内存中的第二虚拟缓冲单元中。
[0064]需要说明的是,第二虚拟缓冲单元中保存的待读取数据的传输地址信息是CPU在接收到所述DMA数据访问请求后,指示第二部件将待读取数据的传输地址信息写入第一虚拟缓冲单元,然后待读取数据的传输地址信息将从第一虚拟缓冲单元写入第二虚拟缓冲单元的。
[0065]S104、CPU将待读取数据的内存地址信息发送至第一部件。
[0066]其中,CPU可以将用于指示内存中用于保存待读取数据的传输地址信息的地址的内存地址信息发送至第一部件,以使第一部件可以通过DDA引擎,根据待读取数据的内存地址信息,直接从第二部件中获得待读取数据。
[0067]S105、第一部件通过DDA引擎,根据待读取数据的内存地址信息,从第二部件中获得待读取数据。
[0068]示例性的,由于待读取数据的内存地址信息用于指示内存中用于保存待读取数据的传输地址信息的地址,因此,第一部件可以根据待读取数据的内存地址信息的指示,从计算机的内存中读取待读取数据的传输地址信息;由于待读取数据的传输地址信息用于指示第二部件中用于保存待读取数据的地址,而DDA引擎具备直接操作同一 CPU控制的计算机的其他部件的存储器的功能,因此第一部件可以通过配置在第一部件内的DDA引擎,根据待读取数据的传输地址信息的指示,从第二部件中直接读取待读取数据。
[0069]需要说明的是,本发明实施例中的第一部件和第二部件(即磁盘和网卡)均可以为计算机中的自身具备处理器功能的外部设备。磁盘中的处理器可以类似于计算机中的CPU,为磁盘的运算核心和控制核心,可以控制磁盘从计算机的内存中读取或者写入数据,并控制配置在磁盘中的DDA引擎从网卡中直接读取待读取数据;网卡中的处理器可以类似于计算机中的CPU,为网卡的运算核心和控制核心,可以控制网卡从计算机的内存中读取或者写入数据,并控制配置在网卡中的DDA引擎从磁盘中直接读取待读取数据。
[0070]本发明实施例提供的数据传输方法,第一部件在接收到包含待读取数据的标识的DMA数据访问请求后,将DMA数据访问请求发送至CPU ;CPU在接收到DMA数据访问请求后,根据待读取数据的标识获取待读取数据的内存地址信息;待读取数据的内存地址信息用于指示内存中用于保存待读取数据的传输地址信息的地址,待读取数据的传输地址信息用于指示第二部件中用于保存待读取数据的地址;CPU将待读取数据的内存地址信息发送至第一部件;第一部件通过DDA引擎,根据待读取数据的内存地址信息,从第二部件中获得待读取数据。
[0071]与现有技术中,数据传输过程中大量的数据迁移导致的CPU总线资源以及内存资源占用较大相比,通过本方案,CPU在第一部件和第二部件进行数据传输的过程中,仅为第一部件和第二部件提供待传输数据的存储地址的转发功能,并不直接传输待传输数据,可以减少传输的数据量,进而可以减少CPU总线资源以及内存资源占用,进而可以提高数据传输效率。
[0072]实施例2
[0073]本发明实施例提供一种数据传输方法,可以应用于计算机中,该计算机包括CPU、内存、第一部件和第二部件,内存中包含第一虚拟缓冲单元和第二虚拟缓冲单元,第一部件中配置有DDA引擎;本发明实施例可以应用在第一部件向第二部件直接传输数据的过程中,如图2所示,该数据传输方法包括:
[0074]S201、第一部件接收DMA数据访问请求,DMA数据访问请求包括待读取数据的标识。
[0075]示例性的,在本发明实施例的第一种应用场景中,第一部件可以为计算机中的磁盘,第二部件可以为计算机中的网卡。
[0076]在第一种应用场景中,第一部件接收DMA数据访问请求具体可以为:磁盘接收来自应用程序的DMA系统调用请求,该DMA系统调用请求用于指示磁盘从网卡中读取网卡中保存的来自网络侧的数据(即待读取数据)。
[0077]在本发明实施例的第二种应用场景中,第一部件可以为计算机中的网卡,第二部件可以为计算机中的磁盘。
[0078]在第二种应用场景中,第一部件接收DMA数据访问请求具体可以为:网卡接收来自应用程序的DMA系统调用请求,该DMA系统调用请求用于指示网卡从磁盘中读取磁盘中保存的、待传输至网络侧的数据(即待读取数据)。
[0079]S202、第一部件将DMA数据访问请求发送至CPU。
[0080]其中,第一部件可以将包含待读取数据的标识的DMA数据访问请求发送至CPU,以从CPU处获取待读取数据的在磁盘中保存的位置信息。
[0081]需要说明的是,CPU在接收到DMA数据访问请求后,可以指示第二部件将用于指示第二部件中用于保存待读取数据的地址的传输地址信息保存在计算机的内存中,以便于CHJ可以向第一部件通知用于指示内存中用于保存该传输地址信息的地址的内存地址信息,以便于第一部件可以根据待读取数据的内存地址信息从第二部件中读取待读取数据。具体的,本发明实施例的方法还可以包括:
[0082]S203、CPU在接收到DMA数据访问请求后,将第一虚拟缓冲单元的地址发送和待读取数据的标识至第二部件。
[0083]其中,本发明实施例中的第一虚拟缓冲单元为主存中的伪缓冲单元,并且第一虚拟缓冲单元的读写方式与第二部件对应,即第一虚拟缓冲单元的读写方式与第二部件的读写方式对应。
[0084]需要说明的是,第一虚拟缓冲单元可以为CPU在接收到DMA数据访问请求后,配置在计算机主存中的与第二部件的读写方式对应的伪缓冲单元。
[0085]S204、第二部件根据第一虚拟缓冲单元的地址和待读取数据的标识,将待读取数据的传输地址信息写入第一虚拟缓冲单元。
[0086]其
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1