CN113939811A - 带偏移值的远程直接内存访问 - Google Patents
带偏移值的远程直接内存访问 Download PDFInfo
- Publication number
- CN113939811A CN113939811A CN202080018268.1A CN202080018268A CN113939811A CN 113939811 A CN113939811 A CN 113939811A CN 202080018268 A CN202080018268 A CN 202080018268A CN 113939811 A CN113939811 A CN 113939811A
- Authority
- CN
- China
- Prior art keywords
- offset
- memory
- address
- rdma
- destination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及远程直接内存访问(Remote Direct Memory Access,RDMA)。本公开提供了用于RDMA的设备及对应方法,可以在存储器上发起至少一个RDMA操作并在目标设备上实现有效的零拷贝。例如,RDMA操作的目标设备用于接收数据包,该数据包包括第一目的地址和目的密钥;获取至少一个偏移值;并基于第一目的地址、目的密钥及至少一个偏移值获取第二目的地址。此外,目标设备用于基于第二目的地址在存储器上发起RDMA操作。
Description
技术领域
本公开涉及远程直接内存访问(Remote Direct Memory Access,RDMA)。本公开提供了用于RDMA的设备及对应方法,可以在存储器中,尤其是远程主机的存储器中发起至少一个RDMA操作。本公开尤其涉及在目标上实现零拷贝。
背景技术
RDMA是用于在计算机网络中的主机之间进行通信的方法。通常需要至少一个网络接口卡(NIC)的特殊硬件支持。大多数常规设备和方法都符合由Infiniband贸易协会(IBTA)颁布的、广泛接受的“无限宽带(Infiniband)”标准,该标准涵盖了硬件规格、协议格式以及实际应用的使用方法。值得注意的是,一些NIC供应商还通过其他非标准功能扩展了其功能的实现。
例如,RDMA广泛用于数据中心和集群,特别用于低延迟、高带宽网络。RDMA操作包括下列类型(其中(1)表示“单侧操作”,(2)表示“双侧操作”):
1.RDMA读操作(1):给定存储器位置,该RDMA操作从远程主机的存储器中读取存储器位置。
2.RDMA写操作(1):给定数据和存储器位置,该RDMA操作将存储器位置的数据写入远程主机的存储器。
3.RDMA发送操作(2):给定数据,该RDMA操作将数据写入远程主机队列中的下一个可用缓冲区。
4.RDMA原子操作(1):给定数据和存储器位置,该RDMA操作使用存储器位置的数据更新远程主机的存储器(该操作具有原子性,意味着可以保证不发生中断)。
如图6示例性示出,用于RDMA的常规设备基于至少包括存储器位置(诸如存储器的虚拟或物理地址)的数据包来执行上述任意操作。图6示例性地示出了常规目标设备600(也称为物理目标主机),目标设备600包括虚拟存储器607、NIC 609及(物理)存储器605,其中,目标设备600在存储器605中执行RDMA写操作。RDMA操作基于RDMA数据包601,数据包601包括目的虚拟地址(VA)602、存储器密钥603、要写入的数据604及数据604的数据长度606。RDMA操作的发起方设备(未示出)提供数据包601。按照惯例,目标设备600不控制由目的VA602定义的目的存储器的位置。
特别地,当数据包601到达时,下列步骤可以在目标设备600进行:
1.根据数据包601中包含的存储器密钥603:
1.1检查存储器区域访问权限。
1.2根据数据包601中的目的VA 602和数据长度606,检查RDMA操作是否在存储器605的范围内。
1.3将目的VA 603转换为目的PA。
2.根据数据包601中的操作码608,指示RDMA操作类型:
2.1RDMA写操作:将消息有效载荷(数据604)写入计算出的目的物理地址(PA)。
2.2RDMA读操作:从计算出的目的PA读取(给定长度的)数据,并将其发送回发起方设备。
2.3RDMA原子操作:在计算出的目的PA上执行几种标准原子操作之一。
这种常规的RDMA操作以及因此适用于RDMA的常规设备和方法的问题在于,其难以在目标设备上通过零拷贝实现有效通信。特别地,由于目标设备难以控制/预期传入数据包/数据及其大小,因此在目标上的零拷贝比在发起方侧更难。值得注意的是,零拷贝表示一种方法,其中每个消息(诸如包含数据的数据包)仅一次(a)从发起方区域传递到其NIC(零拷贝发送),并且(b)从目标NIC传递到目标区域(零拷贝接收)。由于零拷贝减少了通信延迟,因此需要进行零拷贝。
常规惯例的点对点方法(ad hoc approach),诸如“标签匹配”,不能完全解决上述问题。在这种方法中,目标设备将预期的消息(以及其区域)通知给NIC。然后,通过一些大小固定的前缀(“标签”)根据预期标签列表来识别传入的消息。若传入消息与标签匹配,则使用对应存储区域(零拷贝)。若不匹配,则将其写入某个临时缓冲池(以供以后复制,因此不进行零拷贝)。此方法的缺点在于,由于需要对代码进行修改才能使用(指定标签),因此对实际应用不“透明”。此外,由于软件(SW)-硬件(HW)同步消耗大,因此比其他方法更慢。另外,此方法还需要使用非标准硬件。
发明内容
鉴于上述问题和缺点,本发明实施例旨在改进常规设备、方法及途径。本发明旨在提供用于RDMA的设备及方法,可以在目标上进行有效的零拷贝。
该目的通过如所附独立权利要求中所述的本发明实施例来实现,并在从属权利要求中进一步限定了本发明实施例的有利实现方式。
本发明实施例为基于上述RDMA操作(RDMA读、写、原子操作)的任意组合,对至少一个偏移值进行原子访问(其中,访问可包括根据RDMA读/写操作的大小增加至少一个偏移值,但其他类型的访问也是可能的)。该组合可以是“原子的”,意味着可以保证操作不中断(对多个并发操作的情况很有利)。
本公开的第一方面,提供了用于RDMA的设备,其中,用于在存储器上执行RDMA操作,所述设备用于:接收数据包,所述数据包包括第一目的地址和目的密钥;获取至少一个偏移值;基于所述第一目的地址、所述目的密钥及所述至少一个偏移值获取第二目的地址;以及基于所述第二目的地址在所述存储器上发起所述RDMA操作。
由此,引入新的RDMA操作,特别是带偏移的RDMA操作。第一方面的设备可为该RDMA操作的目标设备。新的RDMA操作可在所述目标上实现上述零拷贝。
根据第一方面的实现形式,所述数据包还包括至少一个第一偏移地址和至少一个偏移密钥,所述设备还用于基于所述至少一个第一偏移地址及所述至少一个偏移密钥获取所述至少一个偏移值。
根据第一方面的实现形式,所述设备还用于在所述存储器上执行所述RDMA操作之后,发起对所述至少一个偏移值的修改。
根据第一方面的实现形式,对所述至少一个偏移值的修改包括增加或减少所述至少一个偏移值。
根据第一方面的实现形式,所述数据包还包括数据长度,所述设用于基于所述数据长度发起对所述至少一个偏移值的修改。
根据第一方面的实现形式,所述第一目的地址为所述设备的虚拟存储器的虚拟地址,所述第二目的地址为所述存储器的物理地址,所述设备用于基于基虚拟地址、所述存储器的基物理地址及所述至少一个偏移值将所述第一目的地址转换为所述第二目的地址。
根据第一方面的实现形式,所述设备还用于基于所述至少一个第一偏移地址获取至少一个第二偏移地址,用所述至少一个第二偏移地址获取所述至少一个偏移值。
根据第一方面的实现形式,所述至少一个第一偏移地址为所述设备的虚拟存储器的虚拟地址,所述至少一个第二偏移地址为所述存储器的物理地址,所述设备用于基于所述存储器的至少一个偏移基虚拟地址及偏移基物理地址,将所述至少一个第一偏移地址转换成所述至少一个第二偏移地址。
根据第一方面的实现形式,所述设备用于基于所述至少一个偏移密钥获取所述至少一个偏移基虚拟地址和所述偏移基物理地址。
根据第一方面的实现形式,将所述至少一个偏移值存储在所述设备中,和/或将所述至少一个偏移值存储在所述存储器中,其中,所述设备包括所述存储器,或所述存储器为远程存储器,所述设备用于与所述存储器通信。
对于第一方面的设备,“远程存储器”为远程主机或设备的存储器,即一个既不由第一方面中的设备构成也不位于第一方面中的设备的存储器。例如,该存储器可为第三设备的存储器。
本公开的第二方面提供了用于RDMA的设备,其中,用于在远程存储器发起RDMA操作,所述设备用于:向另一设备提供数据包,所述数据包包括目的地址、目的密钥、至少一个偏移地址及至少一个偏移密钥,其中,所述目的地址表示所述远程存储器中RDMA操作的位置,所述至少一个偏移地址表示至少一个偏移值在所述另一设备或所述远程存储器中的位置。
由此,引入新的RDMA操作,特别是带偏移的RDMA操作。第二方面的设备可为该RDMA操作的发起方设备。新的RDMA操作可在所述目标上实现上述零拷贝。
对于第二方面的设备,“远程存储器”为远程主机或设备的存储器,即一个既不由第一方面中的设备构成也不位于第二方面中的设备的存储器。例如,该存储器可由第一方面中的设备构成或位于第一方面的设备中。
根据第二方面的实现形式,所述RDMA操作为RDMA写操作,或RDMA读操作,或RDMA原子操作。
RDMA操作可由所述数据包中的操作码来确定或指示。
本公开的第三方面提供了一种用于RDMA的方法,其中,用于在存储器上执行RDMA操作,所述方法包括:接收数据包,所述数据包包括第一目的地址和目的密钥;获取至少一个偏移值;基于所述第一目的地址及所述至少一个偏移值获取第二目的地址;以及基于所述第二目的地址在所述存储器中发起所述RDMA操作。
根据第三方面的实现方式,所述数据包还包括至少一个第一偏移地址和至少一个偏移密钥,所述方法还用于基于所述至少一个第一偏移地址及所述至少一个偏移密钥获取所述至少一个偏移值。
根据第三方面的实现方式,所述方法还包括在所述存储器中执行所述RDMA操作之后,发起对所述至少一个偏移值的修改。
根据第三方面的实现方式,对所述至少一个偏移值的修改包括增加或减少所述至少一个偏移值。
根据第三方面的实现方式,所述数据包还包括数据长度,所述方法还包括基于所述数据长度发起对所述至少一个偏移值的修改。
根据第三方面的实现方式,所述第一目的地址为虚拟存储器的虚拟地址,所述第二目的地址为所述存储器的物理地址,所述方法还包括基于所述存储器的基虚拟地址、基物理地址及所述至少一个偏移值将所述第一目的地址转换为所述第二目的地址。
根据第三方面的实现方式,所述方法还包括基于所述至少一个第一偏移地址获取至少一个第二偏移地址,用所述至少一个第二偏移地址获取所述至少一个偏移值。
根据第三方面的实现方式,所述至少一个第一偏移地址为虚拟存储器的虚拟地址,所述至少一个第二偏移地址为所述存储器的物理地址,所述方法还包括基于所述存储器的至少一个偏移基虚拟地址及偏移基物理地址,将所述至少一个第一偏移地址转换成所述至少一个第二偏移地址。
根据第三方面的实现方式,所述方法还包括基于所述至少一个偏移密钥获取所述至少一个偏移基虚拟地址和所述偏移基物理地址。
根据第三方面的实现方式,将所述至少一个偏移值存储在所述设备中,和/或将所述至少一个偏移值存储在所述存储器中,其中,所述设备包括所述存储器,或所述存储器为远程存储器,所述设备用于与所述存储器通信。
第三方面所述的方法提供了与第一方面所述的设备同样的有利效益。
本公开的第四方面提供了用于RDMA的方法,其中,用于在远程存储器上发起RDMA操作,所述方法包括提供数据包,所述数据包包括目的地址、目的密钥、至少一个偏移地址及至少一个偏移密钥,其中,所述目的地址表示所述远程存储器上RDMA操作的位置,所述至少一个偏移地址表示至少一个偏移值在所述保持所述至少一个偏移值的设备的位置或在所述远程存储器上的位置。
根据第四方面的实现方式,所述RDMA操作为RDMA写操作,或RDMA读操作,或RDMA原子操作。
第四方面所述的方法提供了与第二方面所述的设备同样的有利效益。
本公开的第五方面提供了一种计算机程序,该计算机程序包括程序代码,当所述程序代码在计算机上运行时,执行根据第三方面或第四方面或其任意实现方式所述的方法。
本公开的第六方面提供了一种存储可执行程序代码的非暂时性存储介质,当由处理器执行时,执行根据第三方面或第四方面或其任意实现方式所述的方法。
总而言之,各方面及实现形式(本发明实施例)定义了一类新的RDMA操作(带偏移的RDMA操作),所有这些实现形式都采用至少一个偏移值,从而扩展了当前可用的RDMA操作类型的列表。而该操作类型列表不使用偏移值(诸如将RDMA写操作扩展为带偏移的RDMA写操作)。在任何新的RDMA操作期间/之后,在要使用或更新的目标设备的一侧增加至少一个偏移值可以解决上述问题。随着每个数据包的到达,目标存储器中的实际存储目的取决于所述至少一个偏移值的值(诸如保持在目标设备或存储器的偏移寄存器中)。例如,通过将数据的数据长度增加到该偏移寄存器,可以将下一个数据(使用相同的偏移寄存器,现在包含更新的偏移值)立即写入存储器中的前一个数据之后。用于这些RDMA操作计算目的存储器的新机制可以在实际应用中使用,使得可以在目标上进行零拷贝,而无需进行任何针对每个数据的软件操作(可能仅需要一次建立)。
需要注意的是,本申请所描述的所有设备、元件、单元和方法均可在软件或硬件元件或其任意组合中实现。由本申请描述的各种实体执行的所有步骤以及所描述的由各种实体执行的功能旨在表示各个的实体适用于或用于执行对应的步骤和功能。即使在下列对特定实施例的描述中,由外部实体执行的特定功能或步骤未反映在执行该特定步骤或功能的该实体的特定详细元素的描述中,本领域技术人员应该清楚这些方法和功能可以在各自的软件或硬件元件,或者其任何种类的组合中实现。
附图说明
本发明的上述方面和实现方式(本发明实施例)将结合附图在下文具体实施例的描述中进行解释,其中
图1示出了根据本发明实施例的彼此交互的设备;
图2示出了显式带偏移的RDMA写操作;
图3示出了显式带偏移的RDMA写操作的结果;
图4示出了隐式带偏移的RDMA写操作;
图5示出了根据本发明实施例执行RDMA操作的方法;以及
图6示出了常规RDMA写操作。
具体实施方式
图1示出了根据本发明实施例的设备100和设备110。设备100及110均适用于RDMA。特别地,设备100为RDMA操作的目标设备100,即用于执行RDMA操作,设备110为RDMA操作的发起方设备110,即用于发起RDMA操作。
目标设备100可以在(物理)存储器105中执行RDMA操作。目标设备100可以包括存储器105。然而,存储器105还可以是目标设备100的“远程存储器”,诸如属于另一设备的存储器。对于发起方设备110,无论存储器105是包含在目标设备100还是另一设备中,存储器105在任何情况都是“远程存储器”。在下文中,仅对“存储器105”进行讨论。
为在存储器105中执行RDMA操作,目标设备100用于接收数据包101,其中,数据包101包括至少一个第一目的地址102和目的密钥103。目标设备100可以从发起方设备110接收数据包101。因此,发起方设备110用于提供数据包101,以便在存储器105中发起RDMA操作。目的地址102表示远程存储器105中RDMA操作的位置。
此外,目标设备100用于获取至少一个偏移值104。获取至少一个偏移值104的不同方法将在下文中进一步描述。接着,目标设备100用于基于第一目的地址102、目的密钥103及至少一个偏移值104获取第二目的地址106。然后,目标设备100用于基于第二目的地址106在存储器105中发起和/或执行RDMA操作。因此,RDMA操作可以是RDMA写操作,RDMA读操作或RDMA原子操作,即更准确地说,可以是带偏移的RDMA写操作,或带偏移的RDMA读操作,或带偏移的RDMA原子操作。
目标设备100和/或发起方设备110可以包括处理器或处理电路(未示出),该处理器或处理电路用于执行、进行或发起本文所述的目标设备100和/或发起方设备110的各种操作。处理电路可以包括硬件和/或处理电路可由软件控制。硬件可以包括模拟电路或数字电路,或模拟电路和数字电路。数字电路可包括诸如专用集成电路(ASIC)、现场可编程阵列(FPGA)、数字信号处理器(DSP)或多功能处理器之类的组件。
目标设备100和/或发起方设备110可以进一步包括存储电路,该存储电路存储可由处理器或处理电路执行的至少一个指令,特别是在软件的控制下。例如,存储电路可以包括存储可执行软件代码的非暂时性存储介质,当由处理器或处理电路执行时,用于执行目标设备100和/或发起方设备110的各种操作。
在一实施例中,处理电路包括至少一个处理器以及连接到至少一个处理器的非暂时性存储器。非暂时性存储器可带有可执行程序代码,当由至少一个处理器执行时,用于使目标设备100和/或发起方设备110执行、进行或发起本文所述的操作或方法。
图2示出了“显式”带偏移RDMA写操作示例(其中,RDMA操作的类型可以由数据包101中的操作码205确定或指示),其可以由目标设备100执行(也称为“RDMA操作的物理目标主机”),并由发起方设备110发起。特别地,数据包101示出为由发起方设备110(未示出)提供。基于该数据包101,目标设备100可以在存储器105中执行带偏移的RDMA写操作。在该示例中,目标设备100包括存储器105。此外,在该示例中,目标设备100还包括虚拟存储器206和NIC 207。由于要在此RDMA操作中使用的至少一个偏移值104由数据包101表示(显式),因此RDMA操作被称为“显式”。
特别地,数据包101包括第一目的地址102和目的密钥103。在图2的示例中,目的密钥103为存储器105的存储器密钥,且第一目的地址102为目的VA。目的VA 102为虚拟存储器206的地址,且与目标设备100的缓冲区关联。数据包101还包括第一偏移地址201和偏移密钥202。在图2的示例中,第一偏移地址201为偏移VA。偏移VA 201为虚拟存储器206的地址,且与偏移值104的存储位置关联。偏移VA 201可表示偏移值104在目标设备100的存储器105中的物理位置208(或可替代地,在另一设备的远程存储器105上,该设备用于与目标设备100进行通信(替代设备未示出))。
数据包101可进一步包括数据204(将被写入)。若RDMA操作为带偏移的RDMA读操作,则数据包101将不包括该数据204。数据包100还可以包括数据204的数据长度203。最终,数据包101可以进一步包括操作码205,用于确定或指示要执行的RDMA操作。
数据204可以特别地由目标设备100写入存储器105中的物理位置209(诸如存储器105特定存储区域中的物理位置209,其中,该存储区域可以由存储器密钥103指示)。物理位置209对应第二目的地址106(在图2的示例中,第二目的地址106为存储器105的目的物理地址(PA)),其可以通过目标设备100基于由发起方设备110提供的目的VA 102,并进一步基于偏移值104获取。即,数据204可以被写入目的PA 106。特别地,可由此首先使用虚拟存储器206的目的VA 102将数据204写入,即写入目标设备100的缓冲区,然后使用目的PA 106通过目标设备100写入存储器105,即写入物理位置209。
因此,发起方设备110和目标设备100双方都可以有助于生成第二目的地址106。特别地,通过在目标设备100的一侧上增加偏移值104,可以使目标设备100控制写操作的目的,因此该操作的性质从单侧改变(仅在发起方设备110控制)为双侧(同时控制两个设备)。
在图2的示例中,可以通过目标设备100基于基VA、存储器105的基PA以及至少一个偏移值104将目的VA 102转换为目的PA 106来获取存储器105的目的PA 106。
基VA和/或基PA可以是目标设备100已知的,或者可由目标设备100获取或接收。如图2所示,基VA和基PA可以由NIC 207使用或保持。例如,目标设备100,尤其是NIC 207,可以根据下列等式,基于偏移值104计算目标PA 106:
目的PA=目的VA-基VA+基PA+偏移值
从而,可使用第二偏移地址来获取偏移值104,在图2的示例中,第二偏移地址为偏移PA,根据下列公式:
偏移值=<偏移PA的存储器内容>
偏移PA标识存储器105中的物理位置208,偏移值104存储在物理位置208,并可以通过NIC 207从物理位置208中获取。
根据下列等式,目标设备100可基于存储器105的偏移基VA和偏移基PA(由目标设备100已知和/或获取,特别是由NIC 207保持)和目的偏移VA 201来计算偏移PA:
偏移PA=目的偏移VA-偏移基VA+偏移基PA
根据下列等式,目标设备100使用目的PA 106写入数据204后,还可以基于数据长度203的数据长度203,发起增加至少一个偏移值104,诸如修改当前存储在存储器105中的偏移值104:
<偏移PA存储器的内容>=偏移值+数据长度
即,将数据长度204增加到当前偏移值104,并将因此获得的新偏移值104存储在存储器105中的物理位置208。
在一些实施例中,偏移值104也可以由发起方设备110选择(特别是用于图2中所示的“显式”带偏移RDMA写操作),或偏移值104可以诸如在数据包101到达时由目标设备100选择。然而,偏移值104可以位于目标设备100上,并且可以以任一种方式影响第二目的地址106的计算。
通常可以在任意RDMA操作之后对偏移值104进行修改,诸如可以增加或减少偏移值104。如上所述,偏移值104可以增加传入数据204的大小(例如,如数据长度203所示,包含在数据包101中),以便随后进行相同的带偏移的RDMA写操作(在数据包101中指定相同目的地址102,诸如相同目的VA 102)不会覆盖先前写入的数据204,而是在存储器105中先前写入的数据204之后立即在不同的物理位置写入新数据204。特别地,根据图2中的示例及上述等式:
目的PA=目的VA-基VA+基PA+偏移值
若偏移值104改变(诸如通过目标设备100增加),则下一个数据包101中的相同目的VA 102将产生不同的目的PA 106,即数据204将写入存储器105中的不同物理位置208。
因此,当相同的另一数据包101到达时,可以将另一数据204逻辑地附加到先前写入的数据204,即可以将相同的另一数据包101中包括的另一数据204放置在在先数据包101的在先写入数据204之后,如图3所示。
特别地,图3示出了带偏移的RDMA写操作的示例(参见操作码205),其中,目的VA102的值为0x2111,存储器密钥103的值为0x1,目的VA 102的值为0x3010,存储器密钥202的值为0x3,数据长度的值为0x5,数据204为“ABCDE”。此外,基VA的值为0x2000,基PA的值为0x0,偏移基VA的值为0x3000,偏移基PA的值为0x2000。进而,给定值为十六进制值,其中0x表示十六进制值。
根据上述给定的等式,通过使用上述值计算偏移PA的值为0x2010(即,偏移PA=0x3010-0x3000+0x2000)。值得注意的是,偏移VA 201指的是目标设备100的虚拟存储器206,NIC 207将偏移VA 201转换为偏移PA。如图3示意性示出,可以从对应偏移PA的存储器105的物理位置208获取偏移值104,值为0x123。
基于该偏移值104,使用上述值可计算出目的PA 106的值为0x234(即,目的PA=0x2111-0x2000+0x0+0x123)。
然后,目标设备100,特别是NIC 207,将数据“ABCDE”写入与目的PA对应的存储器105的物理位置209。由此,可以首先使用目的VA 102将数据204写入目的设备100的缓冲区,然后使用目的PA 106将数据204从缓冲区写入物理位置209。
在写入数据204之后,目标设备100,特别是NIC 207,可以将偏移值104增加数据的长度103,即增加值0x5。因而,新的偏移值104变为0x128(即,新的偏移值=0x5+0x123)。
若现在另一数据包101从发起方设备110(具有相同的目的VA 102)到达,由于现在(新)偏移值104已经不同,即现在的值为0x128,而不为0x123,则另一个数据包101的数据204将不会覆盖在先写入的数据204,特别地,下一个RDMA写操作的目地PA 106可计算:目的PA=0x2111–0x2000+0x0+0x128。因此,另一数据包101的数据204将逻辑地附加到在先写入的数据204。随后,偏移值104可以再次增加至值0x12D=0x128+0x5(若另一数据204的数据长度203再次为0x5)。
如上文带偏移的RDMA写操作所述,数据包101的改变(与常规系统和常规RDMA写操作相比)与第二目的地址106的计算也可以应用于其他RDMA操作类型。即发起方设备110和目标设备100还可以执行带偏移的RDMA读操作和/或带偏移的RDMA原子操作(图中未示出)。
图4示出了如图2和图3中示例所示的“显式”带偏移的RDMA写操作的可替代示例。即图4示出了“隐式”带偏移的RDMA写操作。由于至少一个偏移值104不是由数据包101指示的,而是由目标设备100隐式获取的,因此该操作称为“隐式”。值得注意的是,图2与图4中相同的元件使用相同的符号表示。
如图6所示,在该操作中,与常规RDMA写操作的数据包601相比,数据包101保持不变。即数据包101包括操作码205、目的VA 102、存储器密钥103、数据204和数据长度203。然而,如图2所示,数据包101不包括目的偏移VA 201和偏移密钥202。尽管如此,目标设备100在将目的VA 102转换为目的PA 106时仍使用偏移值104(以与图2描述的相同的方式)。偏移值104可以由目标设备100控制,如图2的“显式”带偏移的RDMA写操作所述。如图2中的在先“显式”变型所示,偏移值104可以存储在目标设备100,诸如存储在存储器105中,特别是物理位置208中。目标设备100在其自身的运动中获取偏移值104,而不通过数据包101给定任何关于此方面的信息。
带偏移的RDMA操作还可进一步基于下列原理:
首先,目标设备100的NIC 207可以直接访问存储器105,从而不涉及目标设备100的CPU。所谓的“CPU卸载”节省了CPU时间,从而可以腾出时间进行其他操作。
其次,当由发起方设备110发送数据包101的数据204时,应用程序可以将指令直接传递给目标设备100的NIC 207,而无需涉及其操作系统(诸如Linux内核)。该操作降低了相当一部分开销。
第三,为了使目标设备100的NIC 207可以访问存储器105的任何区域,可以首先在NIC 207中“注册”该区域。该注册将存储区域的VA和PA通知给NIC 207。该存储区域的VA和PA可以为上述的基VA和基PA。通常,该注册还会将该区域锁定在适当的位置(直到“注册取消”)。
将上述原理与带偏移的RDMA操作相结合,实现了一种方案,其中每个数据包101分别仅一次(a)从发起方设备110区域传递到其NIC(零拷贝发送),并且(b)从目标设备110的NIC 207传递到目的区域(零拷贝接收)。该方案明显减少了通信延迟。
图5示出了根据本发明实施例执行RDMA操作的方法。方法500可由目标设备100执行。对于在存储器105上执行RDMA操作,方法500包括:接收501数据包101,数据包101包括第一目的地址102和目的密钥103;获取502至少一个偏移值104的步骤502;步骤503,基于第一目的地址102及至少一个偏移值104获取503第二目的地址106;基于第二目的地址106在存储器105中发起504RDMA操作。
已经结合各种作为示例的实施例以及各种实现方式来描述本发明。然而,本领域技术人员可以通过研究附图、本公开及独立权利要求来理解、实现其它变型,且实施所要求保护的发明。在权利要求书以及说明书中,词语“包括(comprising)”不排除其它元件或步骤,且不定冠词“一(a)”或“一个(an)”不排除多个。单个元素或其它单元可以实现权利要求书中陈述的若干实体或项目的功能。在互相不同的从属权利要求中引用了某些方式这一事实并不表示这些方式的组合不能用于有利的实施方式中。
Claims (15)
1.一种在存储器(105)中执行远程直接内存访问(Remote Direct Memory Access,RDMA)操作的设备(100),其中,所述设备(100)用于:
接收数据包(101),所述数据包(101)包括第一目的地址(102)和目的密钥(103);
获取至少一个偏移值(104);
基于所述第一目的地址(102)、所述目的密钥(103)及所述至少一个偏移值(104)获取第二目的地址(106);以及
基于所述第二目的地址(106)在所述存储器(105)中发起所述RDMA操作。
2.根据权利要求1所述的设备(100),其中,
所述数据包(101)还包括至少一个第一偏移地址(201)和至少一个偏移密钥(202);以及
所述设备(100)还用于基于所述至少一个第一偏移地址(201)及所述至少一个偏移密钥(202)获取所述至少一个偏移值(104)。
3.根据权利要求1或2所述的设备(100),还用于:
在所述存储器(105)中执行所述RDMA操作之后,发起对所述至少一个偏移值(104)的修改。
4.根据权利要求3所述的设备(100),其中,
对所述至少一个偏移值(104)的修改包括增加或减少所述至少一个偏移值(104)。
5.根据权利要求3或4所述的设备(100),其中
所述数据包(100)还包括数据长度(203);以及
所述设备(100)还用于基于所述数据长度(203)发起对所述至少一个偏移值(104)的修改。
6.根据权利要求1至5中任一项所述的设备(100),其中,
所述第一目的地址(102)为所述设备(100)的虚拟存储器(206)的虚拟地址,所述第二目的地址(106)为所述存储器(105)的物理地址;以及
所述设备(100)还用于基于基虚拟地址、所述存储器(105)的基物理地址及所述至少一个偏移值(104)将所述第一目的地址(102)转换为所述第二目的地址(106)。
7.根据在从属权利要求2时的权利要求1至6中任一项所述的设备(100),还用于:
基于所述至少一个第一偏移地址(201)获取至少一个第二偏移地址;
用所述至少一个第二偏移地址获取所述至少一个偏移值(104)。
8.根据权利要求7所述的设备(100),其中:
所述至少一个第一偏移地址(201)为所述设备(100)的虚拟存储器(206)的虚拟地址,所述至少一个第二偏移地址为所述存储器(105)的物理地址;以及
所述设备(100)还用于基于所述存储器(105)的至少一个偏移基虚拟地址及偏移基物理地址,将所述至少一个第一偏移地址(201)转换成所述至少一个第二偏移地址。
9.根据权利要求8所述的设备(100),还用于:
基于所述至少一个偏移密钥(202)获取所述至少一个偏移基虚拟地址和所述偏移基物理地址。
10.根据权利要求1至9中任一项所述的设备(100),还用于:
将所述至少一个偏移值(104)存储在所述设备(100)中;和/或
将所述至少一个偏移值(104)存储在所述存储器(105)中,
其中,所述设备(100)包括所述存储器(105),或所述存储器(105)为远程存储器,所述设备(100)用于与所述存储器(105)通信。
11.一种在远程存储器(105)中发起远程直接内存访问(RDMA)操作的设备(110),其中所述设备(110)用于:
向另一设备(100)提供数据包(101),所述数据包(101)包括目的地址(102)、目的密钥(103)、至少一个偏移地址(201)及至少一个偏移密钥(202),
其中,所述目的地址(102)表示所述远程存储器(105)中RDMA操作的位置,以及
所述至少一个偏移地址(201)表示至少一个偏移值(104)在所述另一设备(100)或所述远程存储器(105)中的位置。
12.根据权利要求1至11中任一项所述的设备(100、110),其中:
所述RDMA操作为RDMA写操作,或RDMA读操作,或RDMA原子操作。
13.一种在存储器(105)中执行远程直接内存访问(RDMA)操作的方法(500),所述方法(500)包括:
接收(501)数据包(101),所述数据包(101)包括第一目的地址(102)和目的密钥(103);
获取(502)至少一个偏移值(104);
基于所述第一目的地址(102)及所述至少一个偏移值(104)获取(503)第二目的地址(106);以及
基于所述第二目的地址(106)在所述存储器(105)中发起(504)所述RDMA操作。
14.一种在远程存储器(105)中发起远程直接内存访问(RDMA)操作的方法,所述方法包括:
提供数据包(101),所述数据包(101)包括目的地址(102)、目的密钥(103)、至少一个偏移地址(201)及至少一个偏移密钥(202),
其中,所述目的地址(102)表示所述远程存储器(105)中RDMA操作的位置,以及
所述至少一个偏移地址(201)表示至少一个偏移值(104)在所述保持所述至少一个偏移值(104)的设备(100)的位置或在所述远程存储器(105)中的位置。
15.一种计算机程序,包括程序代码,当所述程序代码在计算机上运行时,执行根据权利要求13或14所述的方法(500)。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2020/062877 WO2021223880A1 (en) | 2020-05-08 | 2020-05-08 | Remote direct memory access with offset values |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113939811A true CN113939811A (zh) | 2022-01-14 |
Family
ID=70740579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080018268.1A Pending CN113939811A (zh) | 2020-05-08 | 2020-05-08 | 带偏移值的远程直接内存访问 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11949740B2 (zh) |
EP (1) | EP4127940A1 (zh) |
CN (1) | CN113939811A (zh) |
WO (1) | WO2021223880A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4127940A1 (en) * | 2020-05-08 | 2023-02-08 | Huawei Technologies Co., Ltd. | Remote direct memory access with offset values |
US20230066835A1 (en) * | 2021-08-27 | 2023-03-02 | Keysight Technologies, Inc. | Methods, systems and computer readable media for improving remote direct memory access performance |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060136697A1 (en) * | 2004-12-16 | 2006-06-22 | Tsao Gary Y | Method, system, and program for updating a cached data structure table |
US7370174B2 (en) * | 2005-01-05 | 2008-05-06 | Intel Corporation | Method, system, and program for addressing pages of memory by an I/O device |
US20060236063A1 (en) * | 2005-03-30 | 2006-10-19 | Neteffect, Inc. | RDMA enabled I/O adapter performing efficient memory management |
US7702826B2 (en) | 2005-12-28 | 2010-04-20 | Intel Corporation | Method and apparatus by utilizing platform support for direct memory access remapping by remote DMA (“RDMA”)-capable devices |
US7836274B2 (en) * | 2006-09-05 | 2010-11-16 | Broadcom Corporation | Method and system for combining page buffer list entries to optimize caching of translated addresses |
US7587575B2 (en) * | 2006-10-17 | 2009-09-08 | International Business Machines Corporation | Communicating with a memory registration enabled adapter using cached address translations |
US8090790B2 (en) * | 2007-05-30 | 2012-01-03 | Broadcom Corporation | Method and system for splicing remote direct memory access (RDMA) transactions in an RDMA-aware system |
US8195912B2 (en) * | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
US8108538B2 (en) * | 2008-08-21 | 2012-01-31 | Voltaire Ltd. | Device, system, and method of distributing messages |
US8655974B2 (en) | 2010-04-30 | 2014-02-18 | International Business Machines Corporation | Zero copy data transmission in a software based RDMA network stack |
US8468551B2 (en) * | 2010-06-30 | 2013-06-18 | International Business Machines Corporation | Hypervisor-based data transfer |
US9306916B2 (en) * | 2013-12-25 | 2016-04-05 | Cavium, Inc. | System and a method for a remote direct memory access over converged ethernet |
JPWO2015118865A1 (ja) * | 2014-02-05 | 2017-03-23 | 日本電気株式会社 | 情報処理装置、情報処理システム及びデータアクセス方法 |
US9742855B2 (en) | 2014-09-04 | 2017-08-22 | Mellanox Technologies, Ltd. | Hybrid tag matching |
US20170155717A1 (en) * | 2015-11-30 | 2017-06-01 | Intel Corporation | Direct memory access for endpoint devices |
WO2017113960A1 (zh) * | 2015-12-28 | 2017-07-06 | 华为技术有限公司 | 一种数据处理方法以及NVMe存储器 |
US10642780B2 (en) | 2016-03-07 | 2020-05-05 | Mellanox Technologies, Ltd. | Atomic access to object pool over RDMA transport network |
EP3279810B1 (en) * | 2016-06-14 | 2019-09-04 | Huawei Technologies Co., Ltd. | Data access method and related apparatus and system |
US10769081B2 (en) * | 2016-12-30 | 2020-09-08 | Intel Corporation | Computer program product, system, and method to allow a host and a storage device to communicate between different fabrics |
US20180188974A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Computer program product, system, and method to allow a host and a storage device to communicate using different fabric, transport, and direct memory access protocols |
US10353826B2 (en) * | 2017-07-14 | 2019-07-16 | Arm Limited | Method and apparatus for fast context cloning in a data processing system |
US10509728B2 (en) * | 2017-09-29 | 2019-12-17 | Intel Corporation | Techniques to perform memory indirection for memory architectures |
US20190102287A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Remote persistent memory access device |
US10496595B2 (en) * | 2017-12-14 | 2019-12-03 | Mellanox Technologies, Ltd. | Method for zero-copy object serialization and deserialization |
CN115941616A (zh) * | 2017-12-15 | 2023-04-07 | 微软技术许可有限责任公司 | 多路径rdma传输 |
CN110392084B (zh) * | 2018-04-20 | 2022-02-15 | 伊姆西Ip控股有限责任公司 | 在分布式系统中管理地址的方法、设备和计算机程序产品 |
JP7075067B2 (ja) * | 2018-06-22 | 2022-05-25 | 日本電気株式会社 | ストレージ装置 |
US10977193B2 (en) * | 2018-08-17 | 2021-04-13 | Oracle International Corporation | Remote direct memory operations (RDMOs) for transactional processing systems |
US10296451B1 (en) * | 2018-11-01 | 2019-05-21 | EMC IP Holding Company LLC | Content addressable storage system utilizing content-based and address-based mappings |
EP3900308A4 (en) * | 2019-01-30 | 2022-02-23 | Huawei Technologies Co., Ltd. | I/O PROCESSING IN A DISTRIBUTED STORAGE NODE WITH RDMA |
DE112020000146T5 (de) * | 2019-01-31 | 2021-09-09 | International Business Machines Corporation | Handhabung einer eingabe-/ausgabe-speicheranweisung |
US20210117235A1 (en) * | 2019-10-16 | 2021-04-22 | EMC IP Holding Company LLC | Storage system with efficient release of address lock waiters during synchronous replication |
EP4127940A1 (en) * | 2020-05-08 | 2023-02-08 | Huawei Technologies Co., Ltd. | Remote direct memory access with offset values |
WO2021239228A1 (en) * | 2020-05-28 | 2021-12-02 | Huawei Technologies Co., Ltd. | Method and system for direct memory access |
WO2021239230A1 (en) * | 2020-05-28 | 2021-12-02 | Huawei Technologies Co., Ltd. | Method and system for direct memory access |
US20230090973A1 (en) * | 2021-09-21 | 2023-03-23 | Intel Corporation | Immediate offset of load store and atomic instructions |
-
2020
- 2020-05-08 EP EP20726319.5A patent/EP4127940A1/en active Pending
- 2020-05-08 WO PCT/EP2020/062877 patent/WO2021223880A1/en unknown
- 2020-05-08 CN CN202080018268.1A patent/CN113939811A/zh active Pending
-
2022
- 2022-11-08 US US17/983,146 patent/US11949740B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230061873A1 (en) | 2023-03-02 |
US11949740B2 (en) | 2024-04-02 |
WO2021223880A1 (en) | 2021-11-11 |
EP4127940A1 (en) | 2023-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4755390B2 (ja) | メモリを介してデータ処理システムの間でデータのフローを制御する方法および装置 | |
US10908961B2 (en) | RDMA (remote direct memory access) data transfer in a virtual environment | |
JP4755391B2 (ja) | メモリを介してデータ処理システムの間でデータのフローを制御する方法および装置 | |
US20070041383A1 (en) | Third party node initiated remote direct memory access | |
JP4317365B2 (ja) | 周辺デバイスからホスト・コンピュータ・システムに割込みを転送する方法および装置 | |
EP1430658B1 (en) | Method, apparatus and computer program for the decapsulation and encapsulation of packets with multiple headers | |
US11949740B2 (en) | Remote direct memory access with offset values | |
CN111095231B (zh) | 一种基于NVMe的数据读取方法、装置及系统 | |
CN109417507B (zh) | 一种通过部分直接内存访问dma访问内存的方法和系统 | |
US20020049875A1 (en) | Data communications interfaces | |
JP2002366427A (ja) | プロセッサ間通信システム及びそれに用いるプロセッサ間通信方法 | |
US20020049878A1 (en) | Data communications interfaces | |
JP2018173856A (ja) | 情報処理装置およびその制御方法 | |
JP2006094246A (ja) | 受信データ格納装置及び受信データ格納方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |