CN103970670A - 用于使用rdma的数据传输的方法和设备 - Google Patents

用于使用rdma的数据传输的方法和设备 Download PDF

Info

Publication number
CN103970670A
CN103970670A CN201410034036.1A CN201410034036A CN103970670A CN 103970670 A CN103970670 A CN 103970670A CN 201410034036 A CN201410034036 A CN 201410034036A CN 103970670 A CN103970670 A CN 103970670A
Authority
CN
China
Prior art keywords
data structure
instance
rdma
type
entity
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.)
Granted
Application number
CN201410034036.1A
Other languages
English (en)
Other versions
CN103970670B (zh
Inventor
P·施蒂
B·梅茨勒
A·K·特里维迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103970670A publication Critical patent/CN103970670A/zh
Application granted granted Critical
Publication of CN103970670B publication Critical patent/CN103970670B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)

Abstract

本发明的实施方式涉及用于使用RDMA的数据传输的方法和设备。一种用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间通过第三实体进行使用RDMA的数据传输的方法。第三实体耦合到一个表,该表高速缓存第一数据结构类型的第一数据结构的指纹以及相关联的第二数据结构类型的第二数据结构。特定的第一数据结构及其相关联的第二数据结构代表特定的同样的RDMA功能调用。在第一步骤中,从第一实体向第三实体发送代表特定的RDMA功能调用的第一数据结构类型的第一数据结构。在第二步骤中,确定被发送的第一数据结构的指纹。在第三步骤中,在表中查找与被确定的指纹相关联的第二数据结构类型的第二数据结构,查找的第二数据结构代表特定的RDMA功能调用。在第四步骤中,向第二实体发送查找的第二数据结构。

Description

用于使用RDMA的数据传输的方法和设备
技术领域
本发明涉及一种用于使用RDMA(远程直接存储器访问)的数据传输的方法和设备。
背景技术
RDMA是通信范例,其中应用数据从计算机的本地应用存储器直接取出并且直接放到远程计算机的应用存储器中。在旁路操作系统以及避免主存储器中的中间数据拷贝中,RDMA显著减少了大数据传递的CPU成本。如果网络接口控制器(NIC)能够使用DMA引擎在应用(缓冲区)存储器和NIC缓冲区之间直接移动联网的数据,则实现了完全的数据拷贝避免(零拷贝)。
文档WO2011/135515A1示出了一种用于在没有中间缓冲的设备上数据传输的方法。请求被接收,以通过网络从该设备向第二设备传输数据。来自应用存储器的数据被格式化,以用于向第二设备传送。发送队列的长度被检索。数据被从所述设备向所述第二设备传送而无中间缓冲。将所述发送队列的长度与希望的发送队列长度相比较。如果发送队列的长度至少等于和/或小于希望的发送队列长度,产生完成单元。
文档US2011/0078410A1描述了一种用于在包括多个处理子系统的处理系统中多方通信的方法和系统。处理子系统中每一个包括中央处理单元和用于将所述每个处理子系统连接到其他处理子系统的一个或多个网络适配器。大量节点被建立或创建,并且这些节点中的每一个与处理子系统中的一个相关。这里,在3个节点之间使用RDMA的管线通信可以被包含,其中第一节点将大的通信分解成多个部分并且使用RDMA将这些部分一个接一个地向第二节点发送,然后在通信的所有部分从第一节点到达之前,第二节点吸收并转发这些部分中的每一个至第三节点。
而且,Matt Welsh和David Culler公开了Jaguar:在Java中使能高效通信和I/O。他们假设以Java实现高效通信和I/O机制要求对低级系统资源(比如网络和原始盘接口)的快速访问和直接操作Java堆外部的存储器区域(比如通信和I/O缓冲)。Java本地方法执行这些操作成本太高并且提高了严重保护的顾虑。在Jaguar中,提供了一种通过保留Java环境的保护利用对系统资源的高效访问来使用Java应用的机制。这通过将特定Java字节代码编译时转换成内联机器代码段而实现。在这篇文章中,对从Java接口到VIA快速通信层使用Jaguar进行了说明,其实现与C和预序列化对象几乎相同的性能,一种降低Java对象序列化成本的机制。
特别地,RDMA可能对运行云计算工作负载的数据中心是有用的,因为非常关注低延迟、高吞吐量和功耗。很多云计算应用是用Java和其他解释语言(如C#)写的。但是,对解释语言的高性能RDMA支持是困难的和昂贵的。为此,RDMA数据结构需要转换为C数据结构或依赖于硬件的表述。总之,RDMA功能调用的序列化在解释语言(如Java或C#)中是昂贵的。
特别地,RDMA功能调用可以提供为必须被产生和序列化的工作描述符的二维列表,这在Java中是慢的。当将工作描述符的二维列表传递到C库时或者当将列表写到网络接口控制器时,这需要被完成。
发明内容
根据第一方面,建议了一种用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间在第三实体上使用RDMA的数据传输的方法。第三实体耦合到表,该表高速缓存第一数据结构类型的第一数据结构的指纹以及相关联的第二数据结构类型的第二数据结构。特定的第一数据结构及其相关联的第二数据结构代表特定的同样的RDMA功能调用。在第一步骤中,从第一实体向第三实体发送代表特定的RDMA功能调用的第一数据结构类型的第一数据结构。在第二步骤中,确定被发送的第一数据结构的指纹。在第三步骤中,在表中查找与被确定的指纹相关联的第二数据结构类型的第二数据结构,查找的第二数据结构代表特定的RDMA功能调用。在第四步骤中,向第二实体发送查找的第二数据结构。
因为通常RDMA功能调用是再次发生的,如读或写同一缓冲区几次,这对RDMA功能调用采指纹以及高速缓存所有序列化的数据结构是有用的。在此,对于每一对第一数据结构类型的第一数据结构及其相关联的代表相同RDMA功能调用的第二数据结构类型的第二数据结构,生成可被高速缓存在表中的指纹。
如果特定的RDMA功能调用再次发生,在给出指纹的表中查找被高速缓存的第二数据结构。于是,在再次发生RDMA功能调用期间避免了序列化成本。因此,减少了延迟和CPU开销。
根据一些实施方式,特定的RDMA功能调用包括至少一个工作描述符。对于一个单一工作描述符的情况,与没有RDMA功能调用高速缓存的常规系统相比,本方法对于缓冲区大小小于16k的可减少延迟约30%。对于具有更高数目的工作描述符的操作,改善可能甚至更大。
在一个实施方式中,第一数据结构类型的第一数据结构被实现为RDMA功能调用的独立于硬件的表示。RDMA功能调用的独立于硬件的表示可以由例如Java或C#提供。
在又一个实施方式中,第二数据结构类型的第二数据结构被实现为RDMA功能调用的依赖于硬件的表示。RDMA功能调用的依赖于硬件的表示可以被适应为被网络接口控制器(NIC)直接解释。
在又一个实施方式中,第一实体通过用于从网络发送和接收数据的处理器的应用来实现,第二实体通过网络接口控制器(NIC)来实现,并且第三实体通过RDMA库和RDMA用户驱动器来实现。
在又一个实施方式中,第一实体通过网络接口控制器来实现,第二实体通过用于从网络发送和接收数据的处理器的应用来实现,以及第三实体通过RDMA库和RDMA用户驱动器来实现。
以上两个实施方式分别反映了适应于发送情况和接收情况的相同架构。
在以上两个实施方式中,没有使用处理器的操作系统上的路径,因此应用和网络接口控制器之间的这个路径也可称为用于在应用和NIC之间发送和接收数据的快路径。所以,包括工作描述符的RDMA功能调用,特别是包含对实际数据缓冲区的引用的RDMA功能调用,可以使用存储器映射的I/O而被直接映射到NIC。
根据一些实施方式,网络可以是将单个或一组计算元件或处理元件,例如处理器或指定节点,与FPGA(FPGA:现场可编程门阵列)互相连接的互连的系统。它可以是外部的,例如LAN,或者内部的,例如处理器互连,或者单个服务器中的多个NIC(NIC:网络接口卡),用于给定系统安装。在后者中,可能的通信模式将会是:第一处理器P1可访问第一NIC1以及使用第一NIC1经由网络向第二NIC2发送数据。而且,第二NIC2被第二处理器P2操控和/或处理,其接收数据。即使所有4个实体P1、P2、NIC1、NIC2可以是单个物理系统的一部分。
在又一个实施方式中,第一数据结构类型通过第一编程语言的格式来实现。例如,第一编程语言是Java或C#。
在又一个实施方式中,另一表耦合到第二实体,所述另一表适合于高速缓存第二数据结构类型的数据结构的指纹以及由第四实体使用的相关联的第三数据结构类型的数据结构。
在又一个实施方式中,该方法还具有下列步骤:
-在第二实体处接收在耦合到第三实体的表处查找的第二数据结构,
-确定接收的第二数据结构的指纹,
-在另一表中查找与确定的指纹相关联的第三数据结构类型的第三数据结构,查找的第三数据结构代表特定RDMA功能调用,以及
-向第四实体发送查找的第三数据结构。
在这个实施方式中,第一实体可通过应用来实现,第二实体通过RDMA库和RDMA用户驱动器来实现,第三实体通过OFA内核和驱动器来实现,并且第四实体通过网络接口控制器(NIC)来实现。
在这个实施方式中,这里的用于将特定RDMA功能调用从一个数据结构类型转换为另一数据结构类型的指纹高速缓存被使用两次。特别地,所述转换以及因此所述高速缓存也可以被使用几次。
在以上实施方式中,使用操作系统(OFA内核和驱动器)上的链接,于是应用和网络接口控制器之间的这个路径也可称为用于在应用和NIC之间发送和接收数据的慢路径。
在又一实施方式中,第一数据结构类型通过第一编程语言的格式,特别是Java或C#,来实现;并且第三数据结构类型通过第二编程语言的格式,特别是C,来实现。
第一方面的任一实施方式可与第一方面的任一实施方式组合以获得第二方面的另一实施方式。
根据第二方面,建议了一种计算机程序,其包括程序代码,用于当运行在至少一个计算机上时执行根据以上第一方面的用于使用RDMA的数据传输的方法。
根据第三方面,建议了一种用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间使用RDMA的数据传输的设备。该设备包括接收器、表、确定器、处理器以及发送器。该接收器被配置用于接收代表来自第一实体的特定RDMA功能调用的第一数据结构类型的第一数据结构。而且,该表被配置用于高速缓存第一数据结构类型的第一数据结构的指纹和相关联的第二数据结构类型的第二数据结构。该确定器被配置用于针对接收的第一数据结构确定指纹。该处理器被配置用于在该表中查找与确定的指纹相关联的第二数据结构类型的第二数据结构,查找的第二数据结构代表特定的RDMA功能调用。此外,该发送器被配置用于向第二实体发送查找的第二数据结构。
在下面,参考附图说明本发明的示例性实施方式。
附图说明
图1示出用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间使用RDMA的数据传输的方法步骤的序列的第一实施方式。
图2示出用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间使用RDMA的数据传输的设备的第一实施方式的示意框图。
图3示出用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间使用RDMA的数据传输的设备的第二实施方式的示意框图。
图4示出用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间使用RDMA的数据传输的方法步骤的序列的第二实施方式。
图5示出用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间使用RDMA的数据传输的设备的第三实施方式的示意框图。
图6示出用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间使用RDMA的数据传输的设备的第四实施方式的示意框图。
图7示出用于在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间使用RDMA的数据传输的设备的第五实施方式的示意框图。
图8示出对具有功能高速缓存的RDMA读延迟与没有功能高速缓存的RDMA读延迟相比进行图示的图,以及
图9示出适于使用RDMA的数据传输的系统的一个实施方式的示意框图。
如果没有特别指明,图中相似或功能相似的单元被分配相同的标号。
具体实施方式
在图1中,描绘了用于使用RDMA在使用第一数据结构类型的第一实体10和使用第二数据结构类型的第二实体20之间传输数据的方法步骤的序列的第一实施方式。在此,图2示出用于在第一实体10和第二实体20之间使用RDMA的数据传输的设备的第一实施方式。图3中描绘了这种设备的第二实施方式。
下面,参考图2和3讨论图1的方法。
在步骤101中,从第一实体10向第三实体30发送第一数据结构类型的第一数据结构DS1。第一数据结构DS1代表特定RDMA功能调用。第三实体30耦合到表50,该表50被配置用于高速缓存第一数据结构类型的第一数据结构DS1的指纹F(DS1,DS2)以及相关联的第二数据结构类型的第二数据结构DS2。第一数据结构DS1及其相关联的第二数据结构DS2代表同一RDMA功能调用。对于DS1和DS2的这些对中的每一对,相应指纹F(DS1,DS2)被存储在表50中。
在步骤102中,确定针对所发送的第一数据结构DS1的指纹F(DS1,DS2)。该确定可以被第一实体10或第三实体30执行。在第一实体10确定指纹F(DS1,DS2)的情况下,指纹F(DS1,DS2)被从第一实体10传递到第三实体30。
在步骤103中,在表50中查找与确定的指纹F(DS1,DS2)相关联的第二数据结构类型的第二数据结构DS2,查找的第二数据结构DS2代表特定RDMA功能调用。
在步骤104中,向第二实体20发送查找的第二数据结构DS2。
第一数据结构类型的第一数据结构DS1可以实现为RDMA功能调用的独立于硬件的表示。相反,第二数据结构类型的第二数据结构DS2可以实现为RDMA功能调用的依赖于硬件的表示。
从图2和图3的第一实体10的角度,该设备分别可以适于发送和接收RDMA功能调用。
对于发送RDMA功能调用的示例,第一实体10可以实现为用于从网络发送和接收数据的处理器的应用,第二实体20实现为网络接口控制器(NIC)并且第三实体30可以实现为RDMA库31和RDMA用户驱动器(见图3)。
对应地,对于接收的情况,第一实体10可以通过网络接口控制器(NIC)实现,第二实体可以通过应用实现,并且第三实体30可以通过RDMA库31和RDMA用户驱动器32实现。
此外,在图4中,描绘了用于在使用第一数据结构类型的第一实体10和使用第二数据结构类型的第二实体20之间使用RDMA的数据传输的方法步骤的序列的第二实施方式。为此,图5示出了适于执行图4的方法的设备的示意框图。
图5的设备是基于图2的设备并且包括第四设备40以及附加的另一表60。该另一表60耦合到第二实体20。该另一表60适于将第二数据结构类型的第二数据结构DS2的指纹高速缓存在所述第四实体40使用的第三数据结构类型的相关联的第三数据结构DS3中。
在下面,参考图5的设备讨论图4的方法:
在步骤401中,从第一实体10向第三实体30发送第一数据结构类型的第一数据结构DS1。第一数据结构DS1代表特定RDMA功能调用。第三实体30耦合到表50,该表50被配置用于高速缓存第一数据结构类型的第一数据结构DS1的指纹F(DS1,DS2)以及相关联的第二数据结构类型的第二数据结构DS2。第一数据结构DS1及其相关联的第二数据结构DS2代表同一RDMA功能调用。对于DS1和DS2的这些对中的每一对,相应指纹F(DS1,DS2)被存储在表50中。
在步骤402中,确定针对所发送的第一数据结构DS1的指纹F(DS1,DS2)。
在步骤403中,在表50中查找与确定的指纹F(DS1,DS2)相关联的第二数据结构类型的第二数据结构DS2,查找的第二数据结构DS2代表特定RDMA功能调用。
在步骤404中,向第二实体20发送查找的第二数据结构DS2。
在步骤405中,在第二实体20处接收在耦合到第三实体30的表50处查找的第二数据结构DS2。
在步骤406中,确定接收的第二数据结构DS2的指纹F(DS2,DS3)。
在步骤407中,在另一表60中查找与确定的指纹F(DS2,DS3)相关联的第三数据结构类型的第三数据结构DS3。如第一和第二数据结构DS1、DS2那样,查找的第三数据结构DS3代表特定RDMA功能调用。
在步骤408中,向第四实体40发送查找的第三数据结构DS3。
例如,第一数据结构类型通过第一编程语言(如Java或C#)的格式来实现。第二数据结构类型可以通过第二编程语言(例如C#)的格式来实现。此外,第三数据结构类型的第三数据结构DS3可以实现为RDMA功能调用的依赖于硬件的表示。
图6示出用于在使用第一数据结构类型的第一实体10和使用第二数据结构类型的第二实体20之间使用RDMA的数据传输的设备的第四实施方式的示意框图。图6的第四实施方式是基于图5的第三实施方式,并且强调第三实体30可以具有RDMA库31和RDMA用户驱动器32并且第二实体20可以具有C库21和C用户驱动器22。
而且,图7描绘了用于使用RDMA在使用第一数据结构类型的第一实体和使用第二数据结构类型的第二实体之间传输数据的设备的第五实施方式的示意框图。图7的第五实施方式基于图6的第四实施方式,并且示出在OFA内核51和对应的耦合到NIC40的驱动器52之上的应用10与NIC40之间的慢路径。
在图8中,描绘了具有功能高速缓存的RDMA读延迟和没有功能高速缓存的RDMA读延迟的图。图8的x轴示出从4B到16K的不同缓冲区大小,其中y轴示出以μs表示的ping/pong延时。
将具有功能高速缓存的RDMA读延迟与没有功能高速缓存的相比较,显示出对于小于16K的缓冲区大小,功能高速缓存减少延迟约30%。
可以合适地设计计算机化的设备用于实现如这里所述的本发明的实施方式。这样,可以认为这里描述的方法主要是非交互的和自动的。在示例性实施方式中,这里描述的方法可以实现为交互的、部分交互的或非交互的系统。这里描述的方法可以实现为软件(例如固件)、硬件或其组合。在示例性实施方式中,这里描述的方法实现为软件,如可执行程序,后者被合适的数字处理设备执行。在又一示例性实施方式中,图1或图4的以上方法的至少一个步骤或所有步骤可以实现为软件,如可执行程序,后者被合适的数字处理设备执行。更一般地,本发明的实施方式可以被实现,其中使用通用数字计算机,比如个人计算机、工作站等。
例如,图9中描绘的系统900示意地代表计算机化单元901,例如,通用计算机。在示例性实施方式中,对于硬件架构,如图9所示,单元901包括处理器905、耦合到存储器控制器915的存储器910、以及经由本地输入/输出控制器935通信耦合的一个或多个输入和/或输出(I/O)设备940、945、950、955(或外围设备)。输入/输出控制器935可以是,但不限于,一个或多个总线或其他有线或无线连接,如本领域所知。输入/输出控制器935可以具有附加的元件,其为简化而被省略,比如控制器、缓冲区(高速缓存)、驱动器、重复器和接收器,以使能通信。而且,本地接口可包括地址、控制和/或数据连接,以使能上述组件之间适当的通信。
处理器905是用于运行软件特别是存储在存储器910中的软件的硬件设备。处理器905可以是任何定制或市面有售的处理器、中央处理单元(CPU)、与计算机901相关联的几个处理器之间的辅助处理器、基于微处理器的半导体(形式为微芯片或芯片组),或一般的用于执行软件指令的任何设备。
存储器910可以包括易失存储器元件(例如,随机存取存储器)和非易失存储器元件中的任何一个或组合。而且,存储器910可以结合电子的、磁的、光的和/或其他类型的存储介质。注意,存储器910可以具有分布式架构,其中多种组件相互距离较远,但是可以被处理器905存取。
存储器910中的软件可以包括一个或多个单独的程序,其中每一个包括用于实现逻辑功能的可执行指令的经排序的列表。在图9的示例中,存储器910中的软件包括这里根据示例性实施方式说明的方法以及合适的操作系统(OS)911。OS911实质上控制其他计算机程序的执行,比如这里所述的方法(例如图1或图4),并且提供调度、输入-输出控制、文件和数据管理、存储器管理、以及通信控制和有关的服务
这里说明的方法可以是源程序、可执行程序(目标代码)、脚本或包括一组将被执行的指令的任何其他实体的形式。当在源程序的形式时,则程序需要经由编译器、汇编器、解译器等等被转换,如已知的,其可以被包括或者可以不被包括在存储器910中,以便连接OS911正确操作。此外,所述方法可以被写为面向对象的编程语言,其具有数据和方法的类,或者过程编程语言,其具有例程、子例程和/或功能。
有可能,传统的键盘950和鼠标955可以耦合到输出/输出控制器935。其他I/O设备940-955可以包括传感器(尤其是在网络元件的情况下),即,对物理条件中的改变如温度或压力(将被监测的物理数据)产生可测量响应的硬件设备。典型地,传感器产生的模拟信号被模数转换器数字化并且发送给控制器935用于进一步处理。传感器节点是理想地小的、低能耗,是自发的并且无人操作的。
此外,I/O设备940-955还可包括输入和输出通信的设备。系统900还可包括耦合到显示器930的显示控制器925。在示例性实施方式中,系统900还可包括用于耦合到网络965的网络接口或收发器960。
网络965在单元901和外部系统之间发送和接收数据。网络965可能以无线方式实现,例如,使用无线协议和技术,比如WiFi、WiMax等实现。网络965可以是固定的无线网络、无线局域网(LAN)、无线广域网(WAN)、个人域网络(PAN)、虚拟专网(VPN)、内联网或其他合适的网络系统并且包括用于接收和发送信号的装置。
网络965也可以是用于在通过宽带连接的单元901与任何外部服务器、客户端等之间通信的基于IP的网络。在示例性实施方式中,网络965可以是由服务提供商管理的被管理的IP网络。此外,网络965可以是分组交换网络,比如LAN、WAN、因特网等等。
如果单元901是PC、工作站、智能设备等等,存储器910中的软件还可以包括基本输入输出系统(BIOS)。BIOS被存储在ROM中,这样当计算机901被激活时BIOS可被执行。
当单元901工作时,处理器905被配置为执行存储在存储器910中的软件,以从/向存储器910传递数据,并且通常根据软件控制计算机901的操作。这里描述的方法和OS911,全部或部分被处理器905读取,典型地在处理器905中缓冲,并且随后被执行。当这里说明的方法(例如参考图1)被实现为软件时,该方法可被存储在任何计算机可读介质上,比如存储装置920,用于被任何计算机相关的系统或方法使用或与之有关。
本领域技术人员将理解,本发明的方面可以实现为系统、方法或计算机程序产品。因此,本发明的方面可以采取完全硬件实施方式、完全软件实施方式(包括固件、驻留软件、微代码等等)或者组合软件和硬件方面的实施方式的形式。此外,本发明的方面可以采取实现在其上实现了计算机可读程序代码的一个或多个计算机可读介质中的计算机程序产品的形式。可以利用一个或多个计算机可读介质的任一组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是,例如,但不限于电的、磁的、光的、电磁的、红外的或半导体系统、装置或设备,或以上的任何合适的组合。计算机可读存储介质的更具体的例子(非穷举列表)可包括以下:电连接,其具有一个或多个线、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式压缩盘只读存储器(CD-ROM)、光存储设备、磁存储设备或上述的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是任何有形的介质,其可包含或存储用于指令执行系统、装置或设备使用或与之有关的程序。
计算机可读信号介质可以包括其中包含计算机可读程序代码的传播的数据信号,例如,在基带中或作为载波的一部分。这种传播的信号可采取包括但不限于电磁的、光的多种形式中的任何形式或其任何合适的组合。计算机可读信号介质可以是不为计算机可读存储介质的任何计算机可读介质,并且可以传递、传播或运送用于被指令执行系统、装置或设备使用或与之有关的程序。可以使用任何适当的介质传送包含在计算机可读介质上的程序代码,包括但不限于无线、有线、光纤缆线、RF等等,或上述的任何合适的组合。
用于实现本发明的方面的操作的计算机程序代码可以用一个或多个编程语言的任何组合写,包括面向对象的编程语言,比如Java、Smalltalk、C++等等以及传统的过程编程语言,比如“C”编程语言或类似的编程语言。程序代码可以完全在单元901上执行,一部分在其上,一部分在单元901上和另一单元901上,相似或不相似。
以上参考流程图图示和/或方法的框图、根据本发明的实施方式的装置(系统)和计算机程序产品描述了本发明的方面。将会理解流程图图示和/或框图的每个框可以被一个或多个计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图框(或多个框)中指定的功能/动作的装置。
计算机程序指令也可以加载到计算机、其他可编程数据处理装置或其他设备上以引起一系列的操作步骤在计算机、其他可编程装置或其他设备上执行,以产生计算机实现的过程使得在计算机、其他可编程装置上执行的指令提供用于实现流程图和/或框图框(或多个框)中指定的功能/动作的过程。
图中的流程图和框图图示了根据本发明的多种实施方式的系统、方法和计算机程序产品的可能实现的架构、功能性以及操作。这样,流程图或框图中每个框可以代表模块、段、或部分代码,其包括用于实现指定逻辑功能的一个或多个可执行指令。还应该注意,在一些可替换实现中,框中注明的功能可以不按照图中注明的顺序发生。例如,两个相继示出的框可以,实际上,可以几乎同时被执行,或者框有时可以按相反顺序执行。取决于涉及的功能性和算法优化。还应该注意框图和/或流程图中每个框,以及框图和/或流程图中框的组合可以由基于专用硬件执行指定功能或动作的系统,或者专用硬件和计算机指令的组合来实现。
更一般地,虽然已经结合具体实施方式说明的本发明,本领域技术人员将理解可以做出多种改变并且等效可以被替代而不背离本发明的范围。而且,可以做出很多修改以适应本发明的教程的具体情况而不背离其范围。所以,意图是本发明不限于所公开的具体实施方式,而是本发明将包括落入所附权利要求的范围中的所有实施方式。

Claims (15)

1.一种用于在使用第一数据结构类型的第一实体(10)和使用第二数据结构类型的第二实体(20)之间通过第三实体(30)使用RDMA的数据传输的方法,所述方法包括:
从所述第一实体(10)向所述第三实体(30)发送(101,401)代表特定的RDMA功能调用的所述第一数据结构类型的第一数据结构(DS1),所述第三实体(30)耦合到表(50),所述表(50)高速缓存第一数据结构类型的第一数据结构(DS1)的指纹(F(DS1,DS2))以及相关联的所述第二数据结构类型的第二数据结构(DS2),
针对发送的所述第一数据结构(DS1)确定(102,402)指纹(F(DS1,DS2)),
在所述表(50)中查找(103,403)与确定的所述指纹(F(DS1,DS2))相关联的所述第二数据结构类型的第二数据结构(DS2),查找的所述第二数据结构(DS2)代表所述特定RDMA功能调用,以及
向所述第二实体(20)发送(104,404)查找的所述第二数据结构(DS2)。
2.根据权利要求1所述的方法,
其中所述第一数据结构类型的所述第一数据结构(DS1)被实现为RDMA功能调用的独立于硬件的表示。
3.根据权利要求1或2所述的方法,
其中所述第二数据结构类型的所述第二数据结构(DS2)被实现为RDMA功能调用的依赖于硬件的表示。
4.根据权利要求1到3中之一所述的方法,
其中所述第一实体(10)通过用于从网络发送和接收数据的处理器的应用来实现,所述第二实体(20)通过网络接口控制器(NIC)来实现,以及所述第三实体(30)通过RDMA库(31)和RDMA用户驱动器(32)来实现。
5.根据权利要求1到3中之一所述的方法,
其中所述第一实体(10)通过网络接口控制器来实现,所述第二实体(20)通过用于从网络发送和接收数据的处理器的应用来实现,并且所述第三实体(30)通过RDMA库(31)和RDMA用户驱动器(32)来实现。
6.根据权利要求4或5所述的方法,
其中所述第一数据结构类型通过第一编程语言,特别是Java或C#,的格式来实现。
7.根据权利要求1到3中之一所述的方法,其中另一表(60)耦合到所述第二实体(20),所述另一表60适于高速缓存所述第二数据结构类型的第二数据结构(DS2)的指纹(F(DS2,DS3))以及由第四实体(40)使用的相关联的第三数据结构类型的数据结构(DS3)。
8.根据权利要求7所述的方法,还包括:
在所述第二实体(20)处接收(405)在耦合到所述第三实体(30)的表(50)处查找的所述第二数据结构(DS2),
确定(406)接收的所述第二数据结构(DS2)的所述指纹(F(DS2,DS3)),
在所述另一表(60)中查找(407)与确定的所述指纹(F(DS2,DS3))相关联的所述第三数据结构类型的第三数据结构(DS3),查找的所述第三数据结构(DS3)代表所述特定RDMA功能调用,以及
向所述第四实体(40)发送(408)查找的所述第三数据结构(DS3)。
9.根据权利要求7或8所述的方法,
其中所述第一数据结构类型通过第一编程语言,特别是Java或C#,的格式来实现;并且所述第三数据结构类型通过第二编程语言,特别是C,的格式来实现。
10.一种计算机程序,包括程序代码,当运行在至少一个计算机上时,所述程序代码执行根据权利要求1至9之一的使用RDMA的数据传输的方法。
11.一种用于在使用第一数据结构类型的第一实体(10)和使用第二数据结构类型的第二实体(20)之间使用RDMA的数据传输的设备(30),所述设备(30)包括:
接收器(31),用于接收代表来自所述第一实体(10)的特定RDMA功能调用的所述第一数据结构类型的第一数据结构(DS1),
表(50),用于高速缓存所述第一数据结构类型的第一数据结构(DS1)的指纹(F(DS1,DS2))和相关联的所述第二数据结构类型的第二数据结构(DS2),
确定器(10,31),用于针对接收的所述第一数据结构(DS1)确定指纹(F(DS1,DS2)),
处理器(31),用于在所述表(50)中查找与确定的指纹(F(DS1,DS2))相关联的所述第二数据结构类型的第二数据结构(DS2),查找的所述第二数据结构(DS2)代表所述特定RDMA功能调用,以及
发送器(32),用于向所述第二实体(20)发送查找的所述第二数据结构(DS2)。
12.根据权利要求11所述的设备,
其中所述接收器(31)、所述确定器(31)、所述处理器(31)以及所述发送器(32)是耦合在所述第一实体(10)和所述第二实体(20)之间的第三实体(30)的一部分。
13.根据权利要求11所述的设备,
其中所述接收器(31)、所述处理器(31)以及所述发送器(32)是耦合在所述第一实体(10)和所述第二实体(20)之间的第三实体(30)的一部分,以及所述确定器(10)是所述第一实体(10)的一部分。
14.根据权利要求12或13所述的设备,
其中所述第一实体(10)通过用于从网络发送和接收数据的处理器的应用来实现,所述第二实体(20)通过网络接口控制器来实现,以及所述第三实体(30)通过RDMA库(31)和RDMA用户驱动器(32)来实现。
15.根据权利要求12或13所述的设备,
其中所述第一实体(10)通过网络接口控制器来实现,所述第二实体(20)通过用于从网络发送和接收数据的处理器的应用来实现,以及所述第三实体(30)通过RDMA库(31)和RDMA用户驱动器(32)来实现。
CN201410034036.1A 2013-01-31 2014-01-24 用于使用rdma的数据传输的方法和设备 Expired - Fee Related CN103970670B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB201301667A GB2510348A (en) 2013-01-31 2013-01-31 Data transmissions using RDMA, data structures and fingerprints of the data structures
GB1301667.0 2013-01-31

Publications (2)

Publication Number Publication Date
CN103970670A true CN103970670A (zh) 2014-08-06
CN103970670B CN103970670B (zh) 2017-06-16

Family

ID=47891035

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410034036.1A Expired - Fee Related CN103970670B (zh) 2013-01-31 2014-01-24 用于使用rdma的数据传输的方法和设备

Country Status (3)

Country Link
US (1) US9497268B2 (zh)
CN (1) CN103970670B (zh)
GB (1) GB2510348A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105842509A (zh) * 2016-03-18 2016-08-10 深圳市鼎阳科技有限公司 一种万用表以及读数方法
CN108460458A (zh) * 2017-01-06 2018-08-28 谷歌有限责任公司 在图形处理单元上执行计算图
CN109196829A (zh) * 2016-07-01 2019-01-11 英特尔公司 远程存储器操作
CN109377778A (zh) * 2018-11-15 2019-02-22 济南浪潮高新科技投资发展有限公司 一种基于多路rdma和v2x的协同自动驾驶系统及方法
US11949815B1 (en) * 2016-06-23 2024-04-02 8X8, Inc. Programming/data sets via a data-communications server

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9892071B2 (en) * 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
US10728331B2 (en) 2016-06-22 2020-07-28 Excelero Storage Ltd. Techniques for dynamic cache use by an input/output device
US11412084B1 (en) * 2016-06-23 2022-08-09 8X8, Inc. Customization of alerts using telecommunications services
US10489080B2 (en) 2017-05-08 2019-11-26 International Business Machines Corporation Point in time copy of time locked data in a storage controller
US10514721B2 (en) 2017-05-08 2019-12-24 International Business Machines Corporation Validation of clock to provide security for time locked data
US10528435B2 (en) 2017-05-08 2020-01-07 International Business Machines Corporation Performance efficient time locks on data in a storage controller
CN111314731A (zh) * 2020-02-20 2020-06-19 上海交通大学 面向视频文件大数据的rdma混合传输方法、系统及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101599991A (zh) * 2009-07-07 2009-12-09 浪潮电子信息产业股份有限公司 一种基于高速通信协议的提升网络文件系统性能的方法
CN101730889A (zh) * 2007-06-13 2010-06-09 丘里奥控股公司 用于迟绑定广告架构的推动式高速缓存方案
US20100174770A1 (en) * 2005-12-30 2010-07-08 Pandya Ashish A Runtime adaptable search processor
CN102598020A (zh) * 2009-08-28 2012-07-18 弗森-艾奥公司 用于改进的数据去重的装置、系统及方法
EP2479697A1 (en) * 2011-01-21 2012-07-25 Symantec Corporation System and method for netbackup data decryption in a high latency low bandwidth environment
US20120210041A1 (en) * 2007-12-06 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for caching data

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8151003B2 (en) * 2002-02-05 2012-04-03 International Business Machines Corporation System and method for routing data by a server
US7693938B2 (en) 2004-02-13 2010-04-06 Envisionit Llc Message broadcasting admission control system and method
US7478138B2 (en) * 2004-08-30 2009-01-13 International Business Machines Corporation Method for third party, broadcast, multicast and conditional RDMA operations
US20060274787A1 (en) * 2005-06-07 2006-12-07 Fong Pong Adaptive cache design for MPT/MTT tables and TCP context
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US20090083392A1 (en) * 2007-09-25 2009-03-26 Sun Microsystems, Inc. Simple, efficient rdma mechanism

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100174770A1 (en) * 2005-12-30 2010-07-08 Pandya Ashish A Runtime adaptable search processor
CN101730889A (zh) * 2007-06-13 2010-06-09 丘里奥控股公司 用于迟绑定广告架构的推动式高速缓存方案
US20120210041A1 (en) * 2007-12-06 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
CN101599991A (zh) * 2009-07-07 2009-12-09 浪潮电子信息产业股份有限公司 一种基于高速通信协议的提升网络文件系统性能的方法
CN102598020A (zh) * 2009-08-28 2012-07-18 弗森-艾奥公司 用于改进的数据去重的装置、系统及方法
EP2479697A1 (en) * 2011-01-21 2012-07-25 Symantec Corporation System and method for netbackup data decryption in a high latency low bandwidth environment

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105842509A (zh) * 2016-03-18 2016-08-10 深圳市鼎阳科技有限公司 一种万用表以及读数方法
US11949815B1 (en) * 2016-06-23 2024-04-02 8X8, Inc. Programming/data sets via a data-communications server
CN109196829A (zh) * 2016-07-01 2019-01-11 英特尔公司 远程存储器操作
CN108460458A (zh) * 2017-01-06 2018-08-28 谷歌有限责任公司 在图形处理单元上执行计算图
CN109377778A (zh) * 2018-11-15 2019-02-22 济南浪潮高新科技投资发展有限公司 一种基于多路rdma和v2x的协同自动驾驶系统及方法

Also Published As

Publication number Publication date
US9497268B2 (en) 2016-11-15
CN103970670B (zh) 2017-06-16
GB2510348A (en) 2014-08-06
US20140214997A1 (en) 2014-07-31
GB201301667D0 (en) 2013-03-13

Similar Documents

Publication Publication Date Title
CN103970670A (zh) 用于使用rdma的数据传输的方法和设备
JP7401171B2 (ja) 行列処理回路、システム、非一時的機械アクセス可能記憶媒体および方法
US10482155B2 (en) Winograd algorithm on a matrix processing architecture
EP3346392A1 (en) Distributed matrix multiplication for neural networks
US10255230B2 (en) Lock-free processing of stateless protocols over RDMA
US10783437B2 (en) Hybrid aggregation for deep learning neural networks
KR102310187B1 (ko) 복수의 엣지와 클라우드를 포함하는 분산 컴퓨팅 시스템 및 이의 적응적 지능 활용을 위한 분석 모델 제공 방법
US10673947B2 (en) System and method for providing a client device seamless access to a plurality of remote storage devices presented as a virtual device
US20180189652A1 (en) Distributed convolution for neural networks
CN106575206B (zh) 计算机系统中的存储器写入管理
US9886410B1 (en) Dynamic function assignment to I/O device interface port
CN103970604A (zh) 基于MapReduce架构实现图处理的方法和装置
EP2507711B1 (fr) Controleur d'acces direct a une memoire pour le transfert direct de donnees entre memoires de plusieurs dispositifs peripheriques
US20170123855A1 (en) Stage-aware performance modeling for computer cluster sizing
US8972667B2 (en) Exchanging data between memory controllers
EP2507712B1 (fr) Systeme autorisant des transferts directs de donnees entre des memoires de plusieurs elements de ce systeme
US11528197B1 (en) Request facilitation for approaching consensus for a service transaction
US11150902B2 (en) Processor pipeline management during cache misses using next-best ticket identifier for sleep and wakeup
US20210004658A1 (en) System and method for provisioning of artificial intelligence accelerator (aia) resources
US11178216B2 (en) Generating client applications from service model descriptions
US10372516B2 (en) Message processing
US20170118293A1 (en) Method and system for efficient task management
Reble et al. Connecting the Cloud: Transparent and Flexible Communication for a Cluster of Intel SCCs.
US11381634B1 (en) TFTP (trivial file transfer protocol) broadcast controller
KR102466231B1 (ko) 오케스트레이터 환경에서의 프로세스 마이그레이션을 위한 컨테이너 관리 장치 및 관리 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170616

CF01 Termination of patent right due to non-payment of annual fee