使用远程直接存储器访问通信的更快的数据传输的制作方法

文档序号:18095535发布日期:2019-07-06 11:01阅读:150来源:国知局
使用远程直接存储器访问通信的更快的数据传输的制作方法

计算设备可以通过跨计算机网络传输的通信来交换数字数据,这样的计算设备经由网络接口硬件通信地耦合到计算机网络。传统上,为了跨网络将数字数据从发送计算设备传送到接收计算设备,发送计算设备的网络接口硬件接收要传输的数字数据的副本,并且然后根据相关的网络通信协议将这样的数字数据传输到接收计算设备,接收计算设备的网络接口硬件接收数字数据,然后可以在接收计算设备上进一步制作数字数据的副本,以便启用由这样的接收计算设备的通用中央处理单元执行的过程以访问所接收的数据。因此,数字数据的传输可以涉及在发送计算设备和接收计算设备两者处制作这样的数据的多个副本。

远程直接存储器访问通信可以使得发送计算设备能够在不首先为这样的发送计算设备上的网络接口硬件制作这样的数据的副本的情况下发送数据。相反,远程直接存储器访问通信可以使得发送计算设备的网络接口硬件能够直接从存储器访问数据,这样的数据由寻求跨网络传输这样的数据的应用程序存储在存储器中。远程直接存储器访问通信还可以使得发送计算设备的网络接口硬件能够经由接收计算设备的网络接口硬件将数据直接写入接收计算设备的存储器中,而不需要在接收计算设备上制作附加副本。

远程直接存储器访问通信依赖于注册的存储器,这至少部分是由于发送计算设备的网络接口硬件直接从存储器中读取数据以及相同的网络接口硬件将数据直接写入接收计算设备的存储器中。由于这样直接读取数据,底层存储器不能通过其他过程更改其内容。但是,注册的存储器不能被分页到磁盘,并且因此会占用在某些系统中可能非常宝贵的物理随机存取存储器(ram)。因此,远程直接存储器访问通信仅为发送和接收缓冲区注册少量存储器,并且然后对大量数据进行切片以适合这样的较小的缓冲区,并且然后一次一个地传输切片。可以注册较大的缓冲区以一次传输更大量的数据,但是这样的注册过程需要很长时间,使得通过在单个通信中传输大量数据而获取的效率被注册缓冲区以传输这些大量数据所需要的时间长度所抵消。



技术实现要素:

利用远程直接存储器访问来跨计算机网络交换数字数据的两个计算设备可以利用现有的注册的存储器并且可以一个接一个地以切片传输数字数据。同时,可以注册更大量的存储器,并且当这样的注册完成时,数字数据的其余部分可以在单个通信中传输。存储器注册的完成可以触发可以包括标记的通知,以向发送计算设备提供对接收计算设备上的注册的存储器的直接访问,并且还可以包括已经经由切片正确地接收到的数字数据的数量。请求注册的较大数量的存储器在发送计算设备上可以是从其对数字数据进行切片的存储器,并且在接收计算设备上可以是将数字数据从切片重新组装到其中的存储器。预定阈值可以划定可能太小而不能从这样的优化中受益的数字数据的数量和要应用这样的机制的数字数据的更大数量。

提供本“发明内容”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

通过参考附图进行的以下详细描述,其他特征和优点将变得很清楚。

附图说明

结合附图可以最好地理解以下详细描述,在附图中:

图1是计算设备之间的示例性数据通信的框图;

图2是计算设备之间的示例性数据通信的另一方面的框图;

图3是计算设备之间的示例性数据通信的流程图;

图4是计算设备之间的示例性数据通信的另一方面的框图;以及

图5是示例性计算设备的框图。

具体实施方式

以下描述涉及一种优化机制,通过该优化机制,可以利用远程直接存储器访问来在计算设备之间传输更大量的数字数据。在最初建立远程直接存储器访问通信时已经注册的现有注册存储器可以用于一个接一个地以切片传输数字数据的部分。同时,可以注册更大量的存储器,并且当这样的注册完成时,数字数据的其余部分可以作为单个块进行传输。存储器注册的完成可以触发可以包括标记的通知,以向发送计算设备提供对接收计算设备上的注册的存储器的直接访问,并且还可以包括已经经由切片正确地接收到的数字数据的数量。请求注册的较大数量的存储器在发送计算设备上可以是从其对数字数据进行切片的存储器,并且在接收计算设备上可以是将数字数据从切片重新组装到其中的存储器。预定阈值可以划定可能太小而不能从这样的优化中受益的数字数据的数量和要应用这样的机制的数字数据的更大数量。

本文中描述的技术参考远程直接存储器访问(rdma)通信。然而,所描述的机制不限于该特定通信机制,而是可以与如下的任何机制一起使用:通过该机制,两个或更多个离散且独立的计算设备可以通过将数据直接写入另一计算设备的存储器中来在它们之间通信地传输数字数据。

尽管不是必需的,但是下面的一些描述将在由计算设备执行的计算机可执行指令的一般上下文中,诸如程序模块,具体地,计算设备包括通用中央处理单元或诸如可以在网络接口卡上找到的定制的处理单元,其可以被认为是执行计算机可执行指令的计算设备的一部分。更具体地,除非另有说明,否则本描述将参考由一个或多个计算设备、外围设备或其组合执行的操作的动作和符号表示。这样,可以理解,有时被称为计算机执行的这样的动作和操作包括由处理单元对以结构化形式表示数据的电信号的操纵。该操纵变换数据或者将其保持在存储器中的位置处,其以本领域技术人员熟知的方式重新配置或以其他方式改变计算设备或外围设备的操作。保持数据的数据结构是具有由数据格式定义的特定属性的物理位置。

通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。此外,本领域技术人员将理解,计算设备不必限于传统的个人计算机,而是包括其他计算配置,包括手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络pc、服务器、小型计算机、大型计算机等。类似地,计算设备不必限于独立计算设备,因为这些机制也可以在分布式计算环境中实现,在分布式计算环境中,任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备两者中。

参考图1,其中示出了示例性系统100,示例性系统100包括以示例性服务器计算设备110和示例性服务器计算设备120形式的两个离散计算设备。出于以下描述的目的,示例性计算设备图110和120被示出为通过网络101彼此通信地耦合。虽然下面进一步详述,但是示例性网络101的构成、结构和性质对于下面的描述和本文中描述的机制是不重要的,除了示例性网络101使得通过其通信地耦合的计算设备(诸如示例性计算设备110和120)能够执行动作并且交换通信,如下所述。

在图1的示例性系统100的上下文中,作为通信信道的建立的一部分,根据本文中详述的机制,在示例性计算设备110与示例性计算设备120之间,示例性计算设备110可以留出其存储器的一部分以将其作为发送缓冲区,诸如示例性发送缓冲区160。如本领域技术人员将认识到的,这样的存储器注册可以包括从建立和保持发送缓冲区160的存储器的过程向例如网络接口卡或在示例性计算设备110上执行的网络通信过程传递标记。类似地,示例性计算设备120可以留出其存储器的一部分以将其作为接收缓冲区,诸如示例性接收缓冲区170,并且类似地,网络接口卡或在示例性计算设备120上执行的网络通信过程可以接收标记,诸如从建立和保存接收缓冲区170的存储器的过程,该标记可以提供对存储在接收缓冲区170内的数据的访问。再次,如上所述,例如图1所示的示例性计算设备110和120之间的通信的建立可以使得每个计算设备能够留出其存储器的一部分以将其分别作为每个计算设备上的发送缓冲区和接收缓冲区。然而,出于说明性和描述性简单的目的,诸如图1等图中具体地示出了发送计算设备(即,所示示例中的示例性计算设备110)上的仅示例性发送缓冲区160和接收计算设备(即,所示示例中的示例性计算设备120)上的仅示例性接收缓冲区170。

尽管未在图1中具体示出,但作为示例性计算设备110和120之间的通信信道的建立的一部分,示例性计算设备120可以向示例性计算设备110上的相关过程、诸如向联网过程或网络接口卡本身提供标记,该标记可以使得示例性计算设备110或更具体地示例性计算设备110的网络接口卡能够直接访问已经作为示例性接收缓冲区170而建立的示例性计算设备120的存储器的那些部分。此外,每个计算设备可以分别交换指示其存储器内的发送缓冲区160和接收缓冲区170的起始地址以及那些缓冲区的大小的其他信息。

如前所述,由于例如通过网络接口卡直接读取和写入数据,例如注册为发送缓冲区160或接收缓冲区170的基础存储器不能通过其他过程来更改其内容。注册的存储器无法分页到磁盘,并且因此会占用在某些系统中可能非常宝贵的物理随机存取存储器(ram)。因此,远程直接存储器访问通信仅为发送和接收缓冲区注册少量存储器,并且然后对大量数据进行切片以适合这样的较小的缓冲区,并且然后一次一个地传输切片。因此,例如,发送缓冲区160和接收缓冲区170中的每个的大小可以仅为32kb。作为另一示例,它们的大小可以是64kb。因此,如果在示例性计算设备110与示例性计算设备120之间传送大于例如64kb的数据,则可以首先将这样的数据切片成不大于64kb的切片,并且然后可以一次一个切片将其复制到例如发送缓冲区160中,可以从发送缓冲区160读取切片,诸如通过网络接口卡本身,并且跨网络101直接复制到示例性计算设备120的存储器中,即,注册为接收缓冲区170的存储器。这样的直接存储器访问如箭头192所示。随后,在示例性计算设备120上执行的相关过程可以将数据从接收器缓冲区120复制到某个其他存储器位置。

出于以下描述的目的,示例性计算设备110可以包括以数据130的形式的要传输的大量数据。如本文中使用的,应用于数据的数量的形容词“大”是指具有足够大小的数据的数量,该大小使得能够通过利用本文中描述的机制实现数据从一个计算设备到另一计算设备的高效传输,诸如通过远程直接存储器访问通信。最初,要传输的数据130可以具有附加到其的报头141,报头141可以包括关于要传输的数据130的元数据。特别地,报头141可以包括指示数据130的大小的大小信息。

为了传输数据130,可以从当前存储数据130的存储器位置读取数据130的部分或“切片”,并且可以将其复制到发送缓冲区160,诸如箭头191所示。数据130的每个部分或切片可以被调节大小以适合发送缓冲区160。例如,如果发送缓冲区的大小是64kb,则数据130的每个切片、诸如切片131的大小可以不大于64kb。根据一个方面,第一切片131可以包括报头141。因此,当第一切片131被复制到发送缓冲区160(如箭头191所示)并且然后被直接写入接收缓冲区170(如箭头192所示)时,计算设备120可以以报头142的形式接收要传输的数据130的数量的信息,报头142表示由计算设备120接收的报头141的副本。

在接收到报头141之后,接收到副本142,在计算设备120上执行的过程可以留出存储器的一部分,诸如以示例性缓冲区180的形式,该部分的大小可以基于接收到的报头142中包含的大小信息而被设置为足够大以容纳所有数据130。当在接收缓冲区170中接收到数据130的后续切片时,它们可以被复制出接收缓冲区170,并且被复制到缓冲区180中,如箭头193所示。以这种方式,数据130最终可以跨网络101被复制,并且可以在计算设备120上的存储器中的缓冲区180中重新组装。

然而,根据一个方面,虽然数据130的这样的切片以及这样的切片的传输正在进行,诸如以上面详述的方式,但是可以与这些操作并行地执行附加的存储器注册过程。更具体地,在计算设备110上执行的过程可以请求(诸如计算设备110的操作系统)存储器被注册,数据130当前存储在其中并且将从其中对数据130进行切片并且复制到发送缓冲区160中的该存储器。在图1所示的示例性系统100内,数据130被示出为存储在缓冲区150中,缓冲区150可以表示最初存储数据的计算设备110的存储器中的位置,诸如通过应用,或者可以表示为了跨网络101传输数据130而将存储器复制到的位置。指示符151示出了注册这样的数据的请求。

如本领域技术人员将认识到的,存储器的注册可能不是一个快速过程使得可以通过已经注册和存在的发送缓冲区160和接收缓冲区170来生成和传输数据130的多个切片。然而,一旦注册了支持缓冲区150的存储器,就可以直接从这样的存储器读取数据130,而不需要将其切片复制到发送缓冲区160。通常,这样的存储器注册导致提供可以用来有意义地访问存储在例如缓冲区150中的数据的标记。因此,这样的标记的接收可以指示存储器注册过程的完成,再次由图1中的指示符151表示。

类似地,在计算设备(诸如例如,图1所示的示例性服务器计算设备120)接收到数据之后,可以触发由指示符181表示的类似存储器注册请求。更具体地,并且如前所述,报头142的接收可以向在计算设备120上执行的过程提供指示要传输的数据130的数量的信息。利用这样的信息,这些过程可以请求留出计算设备120的存储器的一部分以用于在计算设备120上从通过接收缓冲区170接收的切片(诸如示例性切片132,其可以是从计算设备110接收的切片131的副本)组装数据130或更准确地是其副本。可以留出以保持数据130的副本的计算设备120的存储器的一部分可以是缓冲区180的形式。

因此,根据一个方面,在计算设备120上执行的过程可以请求存储器支持以与上面关于计算设备110上的缓冲区150详细描述的方式类似的方式注册缓冲区180。这样的注册请求在图1中用指示符181图示说明。与上述注册请求一样,注册缓冲区180的存储器的请求可以导致提供可以用来有意义地访问存储在那些存储器地址中的数据的标记。

一旦接收到与缓冲区180的存储器的注册相对应的标记,在计算设备120处,可以将这样的标记与其他相关的存储器地址信息一起提供给在计算设备110上执行的过程,如下面将进一步详细描述的。转到图2,其中示出的示例性系统200示出了以通信220的形式从计算设备120向计算设备110提供标记。虽然没有具体示出,但是通信220可以包括提供其他相关的存储器地址信息,如下面将详细描述的。利用这样的标记,计算设备110(诸如例如,计算设备110的网络接口卡)可以将数据直接写入支持缓冲区180的计算设备120的存储器中。因此,不是对数据130进行切片,而是可以简单地从缓冲区150读取数据的其余部分并且将其作为单个通信或传输直接写入缓冲区180,如通信292所示。这样的单个通信292可以比多个切片的多个通信更有效,并且可以导致在减少的时间量内从计算设备110向计算设备120传输更大量的数据。

然而,如先前所指示的,存储器的注册可能花费一些时间来完成。因此,当支持缓冲区180的存储器的注册完成时,标记由计算设备120上的请求过程接收,并且然后诸如经由通信220传送到计算设备110,数据的多个切片(诸如示例性切片214和215)可以已经通过上述发送和接收缓冲区从缓冲区150读取,并且已经被读入缓冲区180中,如图2的系统200中所示,分别作为切片214和215的副本216和217。因此,根据一个方面,当直接从缓冲区150读取数据并且将其读入缓冲区180中时,可以仅传输数据130的一部分231。如图2所示,部分231可以是尚未通过上述切片机制传输的数据130的部分。

部分231可以由计算设备110、计算设备120或其组合确定。例如,计算设备120可以提供开始存储器地址位置,表示已经注册的缓冲区180的开始。然后,可以由在计算设备110上执行的过程利用这样的信息来确定开始将复制到计算设备120的部分231写入其中的“写入开始地址”。更具体地,在计算设备110上执行的过程可以确定表示例如192kb的切片131、214和215可以已经使用上面详述的切片机制。因此,在排除第一192kb之后,在计算设备110上执行的过程可以确定部分231可以是数据130的其余部分。类似地,在计算设备110上执行的过程可以确定要开始将部分231的副本写入缓冲区180的写入开始地址可以是超出从计算设备120接收到的开始存储器地址位置192kb的地址。

作为另一示例,计算设备120本身可以确定写入开始地址,诸如通过确定已经接收了多少个切片,诸如示例性切片132、216和217已经被接收并且复制到缓冲区180中。因此,例如,如果计算设备120确定已经接收到切片132、216和217并且将其复制到缓冲区180中,则计算设备120可以确定写入开始地址是超出缓冲区180的开始存储器地址位置192kb的地址。在这样的示例中,虽然计算设备120可以将缓冲区182的开始存储器地址传送到计算设备110,诸如作为通信220的一部分,但是计算设备120也可以直接指定所确定的写入开始地址,诸如作为通信220的一部分。

当计算设备120经由通信220提供标记时,切片(诸如例如,切片215)可能处于在计算设备110与计算设备120之间传送的过程中。在这样的实例中,计算设备120可以感知到写入开始地址可以在例如切片216(其可以是切片214的副本)之后的存储器位置261。存储器位置261可以对应于缓冲区150中的存储器位置251。相反,因为切片215可以处于被传输到计算设备120的过程中,所以计算设备110可以感知到写入开始地址可以位于例如切片215之后的存储器位置251。缓冲区150中的存储器位置252可以对应于缓冲区180中的存储器位置262。在这种情况下,如果在计算设备110上执行的过程确定写入开始地址,则可以从存储器位置252开始从缓冲区150读取部分231,并且然后可以从存储器位置262开始将其副本写入缓冲区180。切片215的副本217可能没有被计算设备121接收到,例如,在生成通信220时,但是副本217最终可以到达缓冲区180,并且在部分231的复制完成时,如箭头292所示,缓冲区180可以包括数据130的完整副本。相反,如果在计算设备120上执行的过程确定写入开始地址,则可以确定与计算设备110上的缓冲区150中的位置251相对应的存储器位置261。这样的写入开始地址的传送(诸如经由通信220)可以导致计算设备110作为单个传输复制切片215和部分231两者的数据。在这种情况下,开始在存储器位置261写入这样的数据可以导致副本217在其到达期间被覆盖。然而,因为被覆盖的位置261和262之间的存储器、即副本217将是相同的,所以除了两次传输数据的一个切片之外,这样的覆盖应当没有负面影响。因此,可以看出,任一计算设备都可以确定写入开始地址。

根据一个方面,可以仅对诸如示例性数据130等大于预定大小的数据执行所描述的过程。例如,在完成缓冲区150和180的存储器的注册之前,可以通过切片完全传输足够小的数据。这样,在计算设备110和计算设备120两者上投入这样的存储器注册的处理工作可以已经被浪费。为了防止这样的浪费,可以建立预定阈值,该阈值可以表示数据的数量,使得在上述存储器注册过程完成时这些数据的有意义部分可以保持未传输,以留下这些数据的有意义部分(如部分231)仍然需要传输,并且可以在单个通信中传输,诸如示例性通信292。替代地或另外地,仅当其余部分(诸如数据130的部分231)超过预定阈值(诸如数据的预定阈值的数量、数据130的总量的预定阈值百分比、或其他类似预定阈值)时,可以进行作为单个通信的一部分数据的传送。

一旦数据130已经被复制到计算设备120,就可以向在计算设备120上执行的过程提供通知,即,数据130的传输已经完成。在接收到这样的通知时,在计算设备120上执行的过程可以向应用通知缓冲区180内的数据可供应用访问。例如,应用可以注册回调、中断或其他类似的通知机制,通过该机制,当接收和验证新数据时可以向这样的应用通知。一旦这样的应用被通知新数据,应用就可以将数据从缓冲区180复制到应用存储器中。替代地,应用可以以某种其他方式消耗数据,诸如直接从缓冲区180,并且可以以其他方式提供数据不再需要保留在缓冲区180中的通知。一旦应用将数据复制出缓冲区180,或者以其他方式提供了数据不再需要保留在缓冲区180中的通知,可以取消注册缓冲区180,使得存储器可以用于其他处理。

转到图3,其中示出的示例性流程图300示出了一系列示例性步骤,诸如可以由在发送计算设备上执行的过程执行的步骤,包括在发送计算设备的网络接口卡上执行或以其他方式由网络接口卡执行的过程执行的步骤。最初,在步骤310,可以将要跨网络传输的数据(诸如通过远程直接存储器访问机制)存储在发送计算设备的存储器中的缓冲区中。随后,在步骤315,可以进行请求,诸如请求发送计算机设备的操作系统注册包含步骤310的缓冲区的存储器。当正在操作存储器注册请求时,可以生成报头,诸如在步骤320,并且将其附加到数据。如前所述,这样的报头可以包括要传输的数据的大小或数量的指示。这样的报头还可以包括其他元数据,包括例如错误检测码(诸如循环冗余校验(crc)码)和其他元数据。在步骤325,可以利用现有的通信机制开始步骤310的数据的传输。例如,当建立发送计算设备与接收计算设备之间的初始通信信道时,可能已经用于多个先前数据通信的信道,这样的通信信道的建立可能需要发送和接收缓冲区的注册。然而,这样的发送和接收缓冲区可以小于步骤310的数据。为了传输步骤310的数据通过这样的缓冲区,可以将数据分割或划分成不大于预先注册的缓冲区的大小的数据的切片或部分。然后可以将这些切片复制到预先注册的发送缓冲区中,并且然后从那里直接复制到接收计算设备上的预先注册的接收缓冲区中。因此,在步骤325,可以将包括在步骤320生成和附加到数据的报头的第一切片直接复制到接收计算设备的预先注册的接收缓冲区中。

在步骤330,可以确定是否已经传输了来自步骤310的所有数据。如果在步骤330确定尚未传送所有数据,则处理可以进行到步骤335,其中可以确定是否已经从接收计算设备接收到存储器地址位置和存储器访问标记。如果在步骤335确定尚未接收到这样的地址和标记,则处理可以进行到步骤340,并且可以获取数据的后续切片并且将其直接复制到接收计算设备的接收缓冲区中,诸如从发送计算设备上的发送器缓冲区,即,执行示例性流程图300的步骤。然后,处理可以返回到步骤330以确定是否现在已经传输了所有数据。如果在步骤330已经传输了所有数据,则处理可以继续进行步骤355,其中可以取消注册或者以其他方式释放在步骤315请求注册的存储器以供其他过程使用。然后,相关处理可以在步骤360结束。

在步骤335,当从接收计算设备接收到地址和标记时,处理然后可以转换到步骤345。如上所述,接收计算设备的存储器中的缓冲区的地址以及可以用来有意义地访问这样的缓冲区内的数据的标记的接收可以使得发送计算设备能够将数据的其余部分从存储数据的缓冲区(诸如在步骤310)直接传输到由所提供的存储器地址标识的缓冲区中。尽管未在示例性流程图300中具体示出,但是在先前未通过步骤340的切片传输的数据的其余部分的大量传输之前,可以确定在步骤315请求的存储器注册是否已经完成。通常,这样的注册已经完成,并且可以实现直接访问以支持从在步骤310存储数据的缓冲区到在接收计算设备处注册的缓冲区的步骤345的传输,其标记在步骤335接收。在一旦其余数据在步骤345作为单个通信被传输,就可以在步骤350传输传输完成通知。然后可以执行步骤355和360,如上所述。

转到图4,其中示出的示例性流程图400示出了一系列示例性步骤,诸如可以由接收计算设备执行的步骤,包括由在这样的接收计算设备上执行的过程、接收计算设备的网络接口卡或其组合执行的步骤。最初,在步骤410,可以在接收缓冲区中接收数据的第一切片,接收缓冲区可以预先注册,如上所述,并且这样的第一切片的接收可以根据先前建立的现有通信信道。随后,在步骤415,可以检查在步骤410接收的数据的第一切片中标识的报头,并且可以从这样的报头获取要传输的数据的大小。另外,在步骤415,可以根据这样的大小信息分配缓冲区形式的接收计算设备的存储器的一部分,以便能够容纳要传输的数据。然后处理可以进行到步骤420,其中可以请求所分配的缓冲区的注册,诸如执行流程图400的步骤的计算设备的操作系统。

在步骤425,可以将在步骤410接收的数据的第一切片复制到在步骤450分配的缓冲区中,从而释放接收缓冲区以用于数据的附加切片。然后,处理可以进行到步骤430,以将数据的附加切片接收到接收缓冲区中,并且通过将这样的新接收的切片附加到已经接收和存储在所分配的缓冲区中的来自切片的数据的末尾来将它们复制出到在步骤415分配的缓冲区。因此,步骤430的操作可以以传统方式进行。在步骤435,可以确定在步骤420请求的分配的缓冲区的注册是否已经完成。如果在435处确定这样的注册尚未完成,则处理可以继续步骤430。一旦这样的缓冲区注册完成,如步骤435所确定的,处理可以进行到步骤440,其中执行流程图400的步骤的计算设备可以将从在步骤420请求的这样的缓冲区注册接收的标记以及附加信息发送到诸如发送计算设备。根据一个方面,可以在步骤440提供的一些附加信息可以包括开始存储器地址,在该开始存储器地址处,在步骤415分配并且注册的缓冲区被定位。根据另一方面,可以在步骤440提供的一些附加信息可以包括写入开始地址,该写入开始地址可以标识哪些数据已经经由切片接收,诸如在步骤430,并且已经存储在缓冲区中。然后处理可以进行到步骤445,其中可以将数据直接接收到在步骤415分配的并且因此注册的缓冲区中。在步骤445的数据的接收可以是单个通信。在步骤450,可以接收到分配的缓冲区中的数据已经完成的通知,并且作为步骤450的一部分,这样的通知可以触发对应用的通知,以指示该数据可用于缓冲区中的应用。一旦应用将数据复制出缓冲区,或者已经以其他方式完成其对缓冲区内的数据的利用,它就可以通知(诸如执行流程图400的步骤的过程)不再需要将数据存储在缓冲区中。然后可以取消注册缓冲区,并且使这样的存储器可用于其他过程。然后,相关处理可以在步骤455结束。

尽管未具体示出,但是根据一个方面,在最初存储在这样的缓冲区中的数据的传输完成之后,不需要明确地取消注册图1和2所示的诸如示例性缓冲区150和180等注册的缓冲区。相反,可以重复使用这样的缓冲区。更具体地,与发送和接收缓冲区已经注册并且能够用于使用远程直接存储器访问机制来传输数据而无需等待后续注册的方式相同,上述过程注册的较大缓冲区同样可以用于后续通信。因为这些较大的缓冲区可以消耗更多的存储器,所以它们可能无法无限期地保留。但是,如果继续发送具有足以从这样的较大缓冲区中受益的数量的附加数据,或者如果相关过程意识到在将来发送这样的数量的数据的意图,则注册的缓冲区可以保持注册而不是在以后的某个时间点取消注册。

转到图5,示出了示例性计算设备500,其包括一个或多个通用处理单元(诸如示例性cpu520)以及系统存储器530以及系统总线521,系统总线521将各种系统组件(包括系统存储器)耦合到处理单元520。系统总线521可以是使用各种总线架构中的任何总线架构的几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线和本地总线。根据具体的物理实现,cpu520、定制集成电路550、系统存储器530和计算设备500的其他组件中的一个或多个可以物理地共同定位,诸如在单个芯片或硅管芯上或在单个电路板上。在这种情况下,系统总线521中的一些或全部可以仅仅是单个芯片结构内或单个管芯上的硅通路,并且图5中的图示仅仅是用于说明目的的符号方便。

计算设备500通常还包括计算机可读介质,计算机可读介质可以包括可以由计算设备500访问的任何可用介质,并且包括易失性和非易失性介质以及可移动和不可移动介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储技术、cd-rom、数字通用盘(dvd)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备或可以用于存储期望信息并且可以由计算设备500访问的任何其他介质。然而,计算机存储介质不包括通信介质。通信介质以诸如载波或其他传输机制等调制数据信号来实现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传递介质。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质以及诸如声学、rf、红外和其他无线介质等无线介质。任何上述的组合也应当被包括在计算机可读介质的范围内。

系统存储器530包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(rom)531和随机存取存储器(ram)532。包含有助于在计算设备500内的元件之间传送信息的基本例程(例如在启动期间)的基本输入/输出系统533(bios)通常存储在rom531中。ram532通常包含立即可访问和/或当前正在由处理单元520操作的数据和/或程序模块。作为示例而非限制,图5示出了操作系统534、其他程序模块535和程序数据536。

计算设备500还可以包括其他可移动/不可移动的易失性/非易失性计算机存储介质。仅作为示例,图5示出了从不可移动的非易失性磁介质读取或向其写入的硬盘驱动器541。可以与示例性计算设备一起使用的其他可移动/不可移动的易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字通用盘、数字录像带、固态ram、固态rom和其他计算机存储介质,如以上定义和描绘的。硬盘驱动器541通常通过诸如接口540等非易失性存储器接口连接到系统总线521。

上面讨论并且在图5中示出的驱动器及其相关联的计算机存储介质为计算设备500提供计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图5中,硬盘驱动器541被示出为存储操作系统544、其他程序模块545和程序数据546。注意,这些组件可以与操作系统534、其他程序模块535和程序数据536相同或不同。操作系统544、其他程序模块545和程序数据546在这里被给予不同的数字以说明它们至少是不同的副本。

计算设备500可以使用到一个或多个远程计算机的逻辑连接在联网环境中操作。计算设备500被示出为通过网络接口或适配器570连接到通用网络连接571,网络接口或适配器570又连接到系统总线521。在网络环境中,相对于计算设备500或者其部分或外围设备描绘的程序模块可以存储在通过通用网络连接571通信地耦合到计算设备500的一个或多个其他计算设备的存储器中。可以理解,所示的网络连接是示例性的,可以使用在计算设备之间建立通信链路的其他方法。

尽管被描述为单个物理设备,但是示例性计算设备500可以是虚拟计算设备,在这种情况下,上述物理组件(诸如cpu520、系统存储器530、网络接口570和其他类似组件)的功能可以通过计算机可执行指令提供。这样的计算机可执行指令可以在单个物理计算设备上执行,或者可以跨多个物理计算设备分布,包括以动态方式跨多个物理计算设备分布,使得托管这样的计算机可执行指令的特定物理计算设备可以根据需要和可用性随时间动态变化。在示例性计算设备500是虚拟化设备的情况下,托管这样的虚拟化计算设备的基础物理计算设备本身可以包括与上述类似的物理组件,并且以类似的方式操作。此外,虚拟计算设备可以在多个层中使用,其中一个虚拟计算设备在另一虚拟计算设备的构造内执行。因此,本文中使用的术语“计算设备”表示物理计算设备或虚拟化计算环境,包括虚拟计算设备,其中计算机可执行指令可以以与物理计算设备的执行相一致的方式执行。类似地,本文中使用的涉及计算设备的物理组件的术语表示执行相同或等同功能的那些物理组件或其虚拟化。

作为第一示例,以上描述包括一种计算设备,该计算设备包括:一个或多个处理单元;网络接口卡;以及包括在由处理单元或网络接口卡执行时引起计算设备执行以下操作的计算机可执行指令的一个或多个计算机可读介质:注册包括第一数据的第一存储器部分;通过将第一数据中的一些第一数据读入先前注册的发送缓冲区中来生成第一数据的切片,先前注册的发送缓冲区小于第一数据;将切片从发送缓冲区复制到接收计算设备上的接收缓冲区中,接收缓冲区先前在接收计算设备上注册;对于第一数据的后续切片重复生成和复制,直到所有第一数据被传输或者直到从接收计算设备接收到标记,标记提供对接收计算设备上能够容纳所有第一数据的第二存储器部分的访问;以及在接收到标记之后并且在第一存储器部分注册之后,使用标记将尚未切片和复制到接收计算设备上的接收缓冲区中的第一数据的其余部分从第一存储器部分复制到接收计算设备上的第二存储器部分中。

第二示例是第一示例的计算设备,其中计算机可读介质包括在被执行时引起计算设备执行以下操作的另外的计算机可执行指令:修改第一数据以包括报头,报头包括第一数据的数量;其中生成第一数据的第一切片使得第一切片包括报头。

第三示例是第一示例的计算设备,其中引起将第一数据的其余部分复制到第二存储器部分中的计算机可执行指令包括在被执行时引起计算设备执行以下操作的另外的计算机可执行指令:从第二存储器部分内的写入开始地址处开始,将第一数据的其余部分复制到接收计算设备上的第二存储器部分中,存储在接收计算设备上的第二存储器部分内的第一数据的先前切片和复制的部分在写入开始地址处结束。

第四示例是第三示例的计算设备,其中计算机可读介质包括在被执行时引起计算设备执行以下操作的另外的计算机可执行指令:从接收计算设备接收标记和接收计算设备上的第二存储器部分的起始地址;以及从起始地址开始和先前复制到接收计算设备上的接收缓冲区中的切片数量确定写入开始地址。

第五示例是第三示例的计算设备,其中计算机可读介质包括在被执行时引起计算设备执行以下操作的另外的计算机可执行指令:从接收计算设备接收包括标记和写入开始地址的通信,写入开始地址是由接收计算设备在通信被生成时确定的。

第六示例是第一示例的计算设备,其中引起数据的其余部分的注册和复制的计算机可执行指令仅在第一数据的大小大于预定阈值大小时执行。

第七示例是第一示例的计算设备,其中引起第一数据的其余部分的复制的计算机可执行指令仅在第一数据的其余部分的大小大于预定阈值大小时执行。

第八示例是一种计算设备,其包括一个或多个处理单元;网络接口卡;以及包括在由处理单元或网络接口卡执行时引起计算设备执行以下操作的计算机可执行指令的一个或多个计算机可读介质:接收第一数据的数量的指示;注册第一存储器部分以容纳第一数据;将第一数据的切片接收到先前注册的接收缓冲区中,接收缓冲区小于第一数据;将所接收的第一数据的切片从接收缓冲区复制到第一存储器部分中;向发送计算设备传输提供对第一存储器部分的访问的标记,标记是响应于注册第一存储器部分的完成而被接收到的;以及将尚未以切片接收到和复制到第一存储器部分中的第一数据的其余部分接收到第一存储器部分中。

第九示例是第八示例的计算设备,其中计算机可读介质包括在被执行时引起计算设备执行以下操作的另外的计算机可执行指令:从报头获取第一数据的数量的指示,报头是被接收到接收缓冲区中的第一数据的第一切片的一部分。

第十示例是第八示例的计算设备,其中计算机可读介质包括在被执行时引起计算设备执行以下操作的另外的计算机可执行指令:利用标记传输第一存储器部分的起始地址。

第十一示例是第八示例的计算设备,其中计算机可读介质包括在被执行时引起计算设备执行以下操作的另外的计算机可执行指令:利用标记传输第一存储器部分内的写入开始地址,存储在第一存储器部分内的第一数据的先前接收和复制的切片在写入开始地址处结束。

第十二示例是第八示例的计算设备,其中计算机可读介质包括在被执行时引起计算设备执行以下操作的另外的计算机可执行指令:仅在从发送计算设备接收到传输完成通知之后,向应用通知在第一存储器部分中的第一数据。

第十三示例是一种提高发送计算设备与接收计算设备之间的远程直接存储器访问数据通信中的数据传输速度的方法,该方法包括:在发送计算设备上注册包括第一数据的第一存储器部分;在发送计算设备上通过将第一数据中的一些第一数据读入先前注册的发送缓冲区中来生成第一数据的切片,先前注册的发送缓冲区小于第一数据;将切片从发送计算设备上的发送缓冲区复制到先前在接收计算设备上注册的接收计算设备上的接收缓冲区中;在接收计算设备处接收第一数据的数量的指示;在接收计算设备处注册第二存储器部分以容纳第一数据;在接收计算设备处将第一数据的切片接收到接收缓冲区中,接收缓冲区小于第一数据;在接收计算设备处将所接收的第一数据的切片从接收缓冲区复制到第二存储器部分中;从接收计算设备向发送计算设备传输标记,标记是响应于在接收计算设备上注册第二存储器部分的完成而在接收计算设备上生成的;在发送计算设备接收到标记之后并且在发送计算设备上注册第一存储器部分之后,使用标记从发送计算设备将尚未切片和复制到接收计算设备上的接收缓冲区中的第一数据的其余部分从第一存储器部分复制到接收计算设备上的第二存储器部分中;以及在接收计算设备处,将第一数据的其余部分接收到第二存储器部分中。

第十四示例是第十三示例的方法设备,还包括:在发送计算设备上修改第一数据以包括报头,报头包括第一数据的数量;以及由接收计算设备从报头获取第一数据的数量的指示;其中报头是被接收到接收缓冲区中的第一数据的第一切片的一部分。

第十五示例是第十三示例的方法,还包括:从第二存储器部分内的写入开始地址处开始,将第一数据的其余部分从发送计算设备复制到接收计算设备上的第二存储器部分中,存储在接收计算设备上的第二存储器部分内的第一数据的先前切片和复制的部分在写入开始地址处结束。

第十六示例是第十五示例的方法,还包括:将第二存储器部分的起始地址从接收计算设备传输到发送计算设备;以及在发送计算设备处从起始地址开始和由发送计算设备先前复制到接收计算设备上的接收缓冲区中的切片的数量确定写入开始地址。

第十七示例是第十五示例的方法,还包括:将包括写入开始地址的通信从接收计算设备传输到发送计算设备,写入开始地址是由接收计算设备在通信被生成时确定的。

第十八示例是第十三示例的方法,其中第一存储器部分和第二存储器部分的注册以及数据的其余部分的复制仅在第一数据的大小大于预定阈值大小时执行。

第十九示例是第十三示例的方法,其中第一数据的其余部分到第二存储器部分中的复制仅在第一数据的其余部分的大小大于预定阈值大小时执行。

第二十示例是第十三示例的方法,还包括:仅在从发送计算设备接收到传输完成通知之后,在接收计算设备处向应用通知第二数据存储器中的第一数据。

从以上描述可以看出,已经呈现了使用同时替代的远程直接存储器访问数据通信的更快的数据传输。鉴于本文中描述的主题的很多可能的变化,我们要求对可以落入所附权利要求及其等同物的范围内的所有这样的实施例作为本发明进行保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1