用于远程直接内存访问的设备和方法与流程-欧宝娱乐网址下载_欧宝娱乐官网在线_欧宝游戏手机

文档序号:34131600发布日期:2023-06-01阅读:453来源:国知局


1.本发明大体上涉及数据传输;更具体地,用于远程涉及用于远程直接内存访问的直接设备和方法。


背景技术:

2.近年来,内存高性能计算(high-performance computing,访问方法hpc)领域在现有ip基础设施和定制无损技术上利用了infiniband等高性能和低延迟网络。备和这些互连提供高级网络功能,流程例如远程直接内存访问(remote direct memory access,用于远程rdma),直接以实现高吞吐量和低延迟以及低cpu占用。内存rdma现用于高性能计算(high-performance computing,访问方法hpc)、备和数据中心、流程web 2.0、用于远程大数据、直接云、内存存储、金融服务和保险(finance services and insurance,fsi)、医疗服务、联邦领域。但是,在由多个计算设备组成的网络中,高速数据通信增加了人们对数据可靠性和延迟的担忧。
3.通常,rdma涉及从一个计算设备的内存到另一个计算设备的内存的直接内存访问。需要说明的是,rdma技术不需要任何计算设备(即传统发送设备和传统接收设备)的操作系统(operating system,os)来实现基于网络的高吞吐量、低延迟数据传输,并且在性能至关重要的部署中特别有用。例如,在传统rdma系统的示例性实现场景中,例如rdma读取或写入操作,使用支持rdma的网络适配器将数据(或数据包)直接从(例如传统请求设备的)源内存传输到(例如传统响应设备的)目标内存。具体而言,它不涉及中央处理单元(central processing unit,cpu)(或处理器)或交互设备(即传统发送设备和传统接收设备)中的任何一个的操作系统。
4.传统的响应设备在从请求设备接收到数据包时,从主机内存获取队列对(queue pair,qp)上下文到本地缓存中,向目标内存发出直接内存访问(direct memory access,dma)请求,在原子操作的情况下,读取内存,执行所需的操作,并写回内存。因此,上述操作占用大量处理时间,增加了传输期间的延迟。此外,以现代rdma网络接口控制器(rdma network interface controller,rnic)(25gbps-400 gbps)的线速执行这些操作变得极其具有挑战性。因此,在传统系统中,从主机内存中获取信息会耗费时间,而且通常需要几次迭代,这也会导致延迟增加和性能下降。
5.在示例性场景中,可以使用传统的非固定rdma技术以降低成本。在传统的非固定rdma技术中,传统的响应设备需要传统的请求设备的虚拟地址(例如,目标虚拟地址)来发送数据。如果传统请求设备的虚拟地址触发了故障(例如缺页中断),则数据传输被暂停或丢弃,并可能导致数据重传,这进一步增加了事务完成延迟。此外,rdma技术限制了在任何给定时间可以处理的消息(或数据包)的数量,这取决于响应方(例如传统响应设备)。因此,在高频数据传输过程中,对于非常大的消息或许多小消息,会导致rdma处理错误和故障。
6.因此,根据上文讨论,需要克服与用于数据通信的传统rdma技术相关联的上述缺点。


技术实现要素:

7.发明人已经意识到,与在数据包生成时具有关于数据包的知识(qp上下文、操作信息)的请求方(例如传统请求设备)不同,响应方(例如传统请求设备)仅在从网络接收数据包时接收知识(qp上下文)、目标内存地址和所需的操作,这导致了上文讨论的延迟增加和性能下降。但是,通过使响应方也在生成数据包时具有此知识或至少提前具有此知识,可以降低延迟并提高性能。
8.因此,本发明寻求提供用于远程直接内存访问(remote direct memory access,rdma)的请求设备、响应设备、方法和系统。本发明寻求通过传统的设备、方法和传统的远程直接内存访问系统来解决现有的数据通信低效和不可靠的问题。本发明的目的是提供一种至少部分克服现有技术中遇到的问题的方案,并且该方案提供用于rdma操作的高效(例如降低延迟)和可靠数据通信的改进设备、方法和系统。本发明的目的是通过所附独立权利要求中提供的方案实现的。本发明的有利实现方式在从属权利要求中进一步定义。
9.本发明的目的是通过所附独立权利要求中提供的方案实现的。本发明的有利实现方式在从属权利要求中进一步定义。
10.在一个方面中,本发明提供了一种请求设备。所述请求设备包括内存、控制器和通信接口。所述内存用于将多个工作元素存储在一个或多个请求队列中。每个工作元素指示请求方、响应方和操作。所述控制器用于从所述内存中检索所述工作元素中的一个或多个工作元素。所述控制器还用于生成提示消息,所述提示消息包括所述检索到的一个或多个工作元素中对应的至少一个工作元素的至少一个操作的指示。所述控制器还用于通过所述通信接口将所述提示消息发送到响应设备。所述响应设备对应于所述检索到的一个或多个工作元素中的所述至少一个工作元素的所述响应方。所述控制器还用于通过所述通信接口向所述响应设备发送与所述检索到的一个或多个工作元素中的至少一个工作元素的所述操作相关的请求,所述请求指示所述操作。
11.本发明的请求设备能够同时传输多个提示消息,并使响应设备可以通过内存预取、缓存预热和到硬件中的多个原子操作来优化各个方面。这些操作用于使所述响应设备能够提前开始预取内存区域(如果有必要),或准备以高效的方式接收传入的数据包。此外,同时发送与多个事务(或操作)相关的多个提示使响应设备可以开始为每个事务(或操作)准备内存,并有更高的机会在没有缺页中断的情况下得到服务。此外,在原子操作的情况下,响应方可以在数据包到达之前开始将原子数据包读取到优选的本地内存(例如rnic缓存)中,这使响应设备可以执行原子操作,并以非常低的延迟发送确认消息。
12.在一种实现方式中,所述工作元素还包括对象列表,所述对象列表包括要执行所述操作的一个或多个对象,并且其中,所述提示消息还包括所述一个或多个对象中的至少一个对象的指示。
13.对象列表中包括的一个或多个对象是数据传输对象(data transfer object,dto)。一个或多个对象用于减少通常借助远程接口(例如,web服务)进行的进程之间的通信期间的调用数量,其中,每个调用都是高成本操作。一个或多个对象(dto)支持聚合通过几个调用传统上传输的数据,由单个调用提供服务。
14.在另一种实现方式中,所述检索到的一个或多个工作元素中的一个或多个工作元素用于第一响应方,所述检索到的一个或多个工作元素中的一个或多个工作元素用于第二
响应方。所述控制器还用于生成所述提示消息并通过以下方式将所述提示消息发送到所述响应设备:生成第一提示消息,并将所述第一提示消息发送到对应于所述第一响应方的第一响应设备;生成第二提示消息,并将所述第二提示消息发送到对应于所述第二响应方的第二响应设备。
15.同时针对与不同响应方(即第一响应方、第二响应方)的多个事务发送多个提示消息(即第一提示消息、第二提示消息)使相应的响应方可以开始为所有事务准备内存,从而有更高的机会在没有缺页中断的情况下得到服务。
16.在另一种实现方式中,所述检索到的一个或多个工作元素中的一个或多个工作元素与第一请求方相关,所述检索到的一个或多个工作元素中的一个或多个工作元素与第二请求方相关。
17.在一种实现方式中,所述控制器还用于在发送与所述操作相关的请求之前从所述响应设备接收确认消息。
18.从响应设备接收的确认消息使请求设备可以相应地适配或配置数据包的传输,从而有助于无故障操作。通常,确认消息意味着第一消息成功发送到接收设备。因此,控制器在接收到确认消息时,无论任何外部因素如何,都发送与操作相关的请求。因此,应答消息缩短了数据传输的总执行时间,并减少了延迟。减少延迟表明以更高的速度进行数据通信。
19.在另一种实现方式中,所述控制器还用于检索批量工作元素,并在操作期间改变所述批量的大小。
20.控制器可以更改工作元素批量的大小,并使请求方(或请求设备)可以对发送队列中排队的请求执行前瞻,直到预配置的深度,从而可以在实际接收数据之前收集关于数据包的信息,并更好地准备内存区域,从而实现更快的数据通信并降低延迟。
21.在一种实现方式中,所述提示消息还包括与所述操作相关的内存区域的指示。
22.提示消息中的内存区域的指示使响应设备可以在接收数据包之前分配指定的内存区域,以加快数据通信的速度。
23.在另一种实现方式中,所述内存区域和所述操作的所述指示包括要执行所述操作的所述内存区域的地址。
24.包括要执行操作的内存区域和操作的指示的地址,使响应方(或响应设备)可以更好地准备内存区域,从而高效地执行操作。
25.在另一种实现方式中,所述内存区域和所述操作的所述指示包括用于预取所述指示的内存区域的预取操作。
26.包括用于预取指示的内存区域的预取操作使响应方(或响应设备)可以预取内存范围,以在请求到达时减少或消除缺页中断。
27.在另一种实现方式中,所述内存区域和所述操作的所述指示包括缓存预热操作。
28.包括用于准备(或预热)指示的内存区域的缓存预热操作使响应方(或响应设备)可以预取内存范围,以将相应的qp上下文带入缓存内存,以减少请求到达时的延迟。
29.在另一种实现方式中,所述内存区域和所述操作的所述指示包括原子操作。
30.包括用于准备指示的内存区域的原子操作使响应方(或响应设备)可以将原子目标读取到rnic中,以在请求到达时加快计算速度。
31.在一种实现方式中,所述提示消息是专用提示命令消息。
32.专用提示消息支持将提示消息配置为基于响应方、请求方或数据通信的要求进行适配,以提高系统的整体效率。
33.在另一种实现方式中,所述提示消息包括所述操作的所述指示,作为另一命令的命令消息的附加有效载荷。
34.在一种实现方式中,所述请求设备被布置用于rdma。
35.请求设备布置用于rdma使请求设备可以向远程缓冲区发送数据和从远程缓冲区接收数据(零拷贝),访问远程服务器的内存,而不消耗远程服务器上的cpu周期(低cpu参与),具有改进的延迟和吞吐量(内核旁路),具有收敛,即由单一结构支持存储和计算。
36.在另一个方面中,本发明提供了一种请求设备。所述请求设备包括内存和通信接口,以及软件模块。所述软件模块包括工作元素存储模块,用于将多个工作元素存储在所述内存中的一个或多个请求队列中,每个工作元素指示请求方、响应方和操作。所述软件模块还包括工作元素检索模块,用于从所述内存检索所述工作元素中的至少一个工作元素。所述软件模块还包括提示消息生成模块,用于生成提示消息,所述提示消息包括所述检索到的一个或多个工作元素中对应的至少一个工作元素的至少一个操作的指示。所述软件模块还包括提示消息传输模块,用于通过所述通信接口向响应设备发送所述提示消息,所述响应设备对应于所述检索到的一个或多个工作元素中的所述至少一个工作元素的所述响应方。所述软件模块还包括请求传输模块,用于通过所述通信接口向所述响应设备发送与所述检索到的一个或多个工作元素中的至少一个工作元素的所述操作相关的请求,所述请求指示所述操作。
37.执行软件模块以使请求设备可以在一个或多个请求队列中存储和检索多个工作元素,以便正确排序并根据需要实现工作元素的传输。此外,软件模块还生成和发送包括至少一个操作的指示的提示消息。有益的是,提示消息使响应设备可以为传入的工作元素准备内存区域,以便进行更快和更高效的数据通信。此外,执行软件模块以向响应设备发送与操作相关的请求,以使请求设备可以开始数据包的传输,从而减少缺页中断并提高数据通信可靠性。
38.在又一方面,本发明提供了一种用于请求设备的方法。所述方法包括将多个工作元素存储在所述内存中的一个或多个请求队列中,每个工作元素指示请求方、响应方和操作。所述方法还包括从所述内存检索所述工作元素中的至少一个工作元素。所述方法还包括生成提示消息,所述提示消息包括所述检索到的一个或多个工作元素中对应的至少一个工作元素的至少一个操作的指示。所述方法还包括通过所述通信接口向响应设备发送所述提示消息,所述响应设备对应于所述检索到的一个或多个工作元素中的所述至少一个工作元素的所述响应方。所述方法还包括通过所述通信接口向所述响应设备发送与所述检索到的一个或多个工作元素中的至少一个工作元素的所述操作相关的请求,所述请求指示所述操作。
39.本方面的方法实现了本发明的请求设备的所有优点和效果。
40.在另一方面,本发明提供了一种计算机可读介质,携带计算机指令,所述计算机指令加载到请求设备的控制器中并由其执行时,使所述请求设备能够实现所述方法。
41.携带计算机指令的计算机可读介质(具体而言,非瞬时性计算机可读介质)实现了发送设备或方法的所有优点和效果。
42.在一个方面中,本发明提供了一种响应设备。所述响应设备包括内存、控制器和通信接口。所述控制器用于通过所述通信接口从请求设备接收提示消息,所述提示消息包括至少一个操作的指示。所述控制器还用于基于所述至少一个操作的所述指示确定抢占动作。所述控制器还用于执行所述抢占动作。所述控制器还用于通过所述通信接口从所述请求设备接收与所述至少一个操作相关的请求,所述请求指示所述至少一个操作中的至少一个操作。所述控制器还用于执行所述至少一个操作中的至少一个操作。
43.由于抢占动作与至少一个操作相关联,响应设备的控制器基于提示消息中至少一个操作的指示确定抢占动作,并相应地响应以准备相关联的内存区域,以实现更快的数据通信。在一个示例中,抢占动作包括缓存预热操作,以将数据填充到缓存器(cache memory)中,以实现更快的数据通信。有益的是,由响应设备执行的这些抢占动作大幅减少了在rdma消息到达响应设备时服务rdma消息本身的延迟,并使数据通信更高效。
44.在一种实现方式中,所述操作与内存区域相关,所述控制器还用于基于所述内存区域和所述操作确定所述抢占动作,并通过确定是否需要加载所述内存区域来执行所述抢占动作,如果需要,则将所述内存区域加载到所述内存中。
45.通过在执行抢占动作之前确定需要加载内存区域来执行抢占动作,通过消除如果不需要填充内存,浪费工作的可能性,减少了数据通信所花费的总时间。此外,该确定还显著降低了由于未填充的内存区域而导致的缺页中断的机会。
46.在另一种实现方式中,所述控制器还用于向所述请求设备发送确认消息,所述确认消息指示所述抢占动作是否成功。
47.从响应设备的控制器接收的确认消息使请求设备可以相应地适配或配置数据包的传输,从而有助于无故障操作。通常,确认消息意味着第一消息成功发送到接收设备。因此,控制器在接收到确认消息时,无论任何外部因素如何,都发送与操作相关的请求。因此,应答消息缩短了数据传输的总执行时间,并减少了延迟。减少延迟表明以更高的速度进行数据通信。
48.在另一方面,本发明提供了一种用于响应设备的方法。所述方法包括从请求设备接收提示消息,所述提示消息包括至少一个操作的指示。所述方法还包括基于所述至少一个操作的所述指示确定抢占动作。所述方法还包括执行所述抢占动作。所述方法还包括从所述请求设备接收与所述至少一个操作相关的请求,所述请求指示所述至少一个操作中的至少一个操作。所述方法还包括执行所述至少一个操作中的至少一个操作。
49.本方面的方法实现了本发明的接收设备的所有优点和效果。
50.在一种实现方式中,本发明提供了一种计算机可读介质,携带计算机指令,所述计算机指令加载到响应设备的控制器中并由其执行时,使所述响应设备能够实现所述方法。
51.携带计算机指令的计算机可读介质实现了接收设备或方法的所有优点和效果。
52.在又一方面,本发明提供了一种响应设备。所述响应设备包括内存、通信接口和软件模块。所述软件模块包括提示消息接收模块,用于从请求设备接收提示消息,所述提示消息包括至少一个操作的指示。所述软件模块还包括抢占动作确定模块,用于基于所述至少一个操作的所述指示确定抢占动作。所述软件模块还包括用于执行所述抢占动作的抢占动作执行模块。所述软件模块还包括请求接收模块,用于从所述请求设备接收与所述至少一个操作相关的请求,所述请求指示所述至少一个操作中的至少一个操作。所述软件模块还
包括操作执行模块,用于执行所述至少一个操作中的至少一个操作。
53.执行软件模块以基于至少一个操作的指示确定抢占动作。有益的是,确定基于请求设备的要求(在提示消息中),使响应设备可以确定最适当的选项,以减少缺页中断的可能性,并可以更好地准备内存区域,从而实现更高效的数据通信。
54.应当理解,所有上述实现方式都可以组合。
55.需要说明的是,本技术中描述的所有设备、元件、电路、单元和模块可以在软件或硬件元件或其任何类型的组合中实现。本技术中描述的各种实体执行的所有步骤以及所描述的将由各种实体执行的功能旨在表明相应的实体适于或用于执行相应的步骤和功能。虽然在以下具体实施例的描述中,外部实体执行的具体功能或步骤没有在执行具体步骤或功能的实体的具体详述元件的描述中反映,但是技术人员应清楚,这些方法和功能可以通过相应的硬件或软件元件或其任何组合实现。可以理解的是,本发明的特征易于以各种组合进行组合,而不脱离由所附权利要求书所定义的本发明的范围。
56.本发明的附加方面、优点、特征和目的从附图和结合以下所附权利要求书解释的说明性实现方式的详细描述中变得显而易见。
附图说明
57.当结合附图阅读时,可以更好地理解以上发明内容以及说明性实施例的以下详细描述。为了说明本发明,本发明的示例性结构在附图中示出。但是,本发明不限于本文公开的具体方法和工具。此外,本领域技术人员应理解,附图不是按比例绘制的。在可能的情况下,相同的元件用相同的数字表示。
58.现在参考下图仅作为示例来描述本发明的实施例,其中:
59.图1是本发明的实施例提供的可用于执行远程直接内存访问(remote direct memory access,rdma)操作的请求设备的框图;
60.图2是本发明的实施例提供的请求设备用于执行rdma操作的方法的流程图;
61.图3是本发明的实施例提供的可用于执行rdma操作的响应设备的框图;
62.图4是本发明的实施例提供的响应设备执行rdma操作的方法的流程图;
63.图5是本发明的实施例提供的具有请求设备和响应设备的rdma系统的框图;
64.图6示出了包括响应设备和请求设备的系统用于执行rdma操作的方法的流程图;
65.图7至图9是根据本发明的各种实施例,描述rdma系统的实现方式的示例性场景的示意图。
66.在附图中,带下划线的数字用于表示带下划线的数字所在的项目或与带下划线的数字相邻的项目。不带下划线的数字与由将不带下划线的数字与项目关联的线标识的项目相关。当一个数字不带下划线并具有关联的箭头时,不带下划线的数字用于标识箭头指向的一般项目。
具体实施方式
67.以下详细描述说明了本发明的实施例以及可以实现这些实施例的方式。虽然已经公开了实施本发明的一些模式,但本领域技术人员应认识到,也可以存在用于实施或实践本发明的其它实施例。
68.现在参考图1,示出了本发明的实施例提供的可用于执行远程直接内存访问(remote direct memory access,rdma)操作的请求设备100的框图。图1主要示出了请求设备100的各种示例性组件。如图所示,请求设备100包括用于存储多个工作元素108的内存102。请求设备100还包括控制器104和通信接口106。
69.请求设备100被布置用于rdma。通常,请求设备100被配置并可操作以与响应设备一起执行rdma操作(图1中未示出,下文结合图3在本文更详细地解释)。请求设备100可以直接访问响应设备的内存,而不涉及请求设备100和响应设备的操作系统(operating system,os)。需要说明的是,数据包直接传输,而不在请求设备100和响应设备的通信信道层(例如网络层、应用层、传输层和链路层)之间复制。每个通信信道层用于执行如传输、加密等特定功能。通信信道层的组合使得能够跨不同的交互设备(例如请求设备100和响应设备)进行通信。
70.数据包从一个或多个工作元素派生。工作元素包括与数据包序列号(packet sequence number,psn)相关的信息,以强制正确的数据包排序。工作元素还包括源和目的队列对(queue pair,qp)编号,它们区分应用和应用的有效内存区域。在一个实施例中,内存区域具有作为数据包一部分的内存键(r-key),该内存键将内存区域与申请方相关联,反之亦然。工作元素还包括与操作类型(例如rdma读取、rdma写入、发送或原子)相关的信息,以及操作的参数,例如消息长度、目标内存地址、操作类型和操作数数据。
71.响应设备用于基于至少包括目的队列对编号和数据包序列号的基础传输头部(base transport header,bth)等头部重组传入的数据包。在一个示例中,bth头部至少包括目标内存地址、rdma操作的长度,以及可选的可用于标识目标内存地址并用于提供访问的远程键。在原子操作的情况下,bth头部至少包括操作码(opcode/operation code)、目标内存地址、要交换或比较的数据包以及用于访问的远程键。显然,请求设备100将包括队列对(queue pair,qp),即发送队列(send queue,sq)和接收队列(receive queue,rq)。此外,qp的sq将包括携带响应方详细信息的工作要素。
72.根据一个实施例,请求设备100包括配置用于高速数据通信的适当逻辑、电路、接口和/或代码。请求设备100可以直接访问请求设备100的内存,用于执行任何rdma操作,例如rdma读取、rdma写入、发送或原子操作。
73.请求设备100可以潜在地用作发送设备(或发送器)。请求设备100的示例可以包括但不限于通信信道适配器、服务器、计算机集群(例如大规模并行计算机集群)中的计算设备、包括便携式或非便携式电子设备的通信设备、无线调制解调器、超级计算机或其它基于rdma的设备。类似地,响应设备包括配置用于高速数据通信的适当逻辑、电路、接口和/或代码。此外,响应设备可以在操作期间潜在地用作接收设备(或接收器)。响应设备的示例可以包括但不限于通信信道适配器、服务器、计算机集群(例如大规模并行计算机集群)中的计算设备、包括便携式或非便携式电子设备的通信设备、无线调制解调器、超级计算机或其它基于rdma的设备。根据本发明,响应设备在从请求设备100接收到事件数据包(例如“提示”数据包)后不久准备其内存102(例如本地内存缓冲区),以便减少响应时间,这将在下文更详细地解释。
74.请求设备100的内存102用于将多个工作元素108存储在一个或多个请求队列中。(多个工作元素108中的)每个工作元素指示请求方(例如请求设备100)、响应方(例如响应
设备或接收器)和操作。内存102包括用于存储可执行以控制请求设备100的操作的指令的适当的逻辑、电路和/或接口。例如,内存102可以存储操作系统和/或其它程序产品以操作请求设备100。内存102可以存储用于在请求设备100处处理的数据(以工作元素或数据包的形式通信)。内存102的实现示例可以包括但不限于电可擦除可编程只读内存(electrically erasable programmable read-only memory,eeprom)、随机存取内存(random access memory,ram)、只读内存(read only memory,rom)、硬盘驱动器(hard disk drive,hdd)、闪存、安全数字(secure digital,sd)卡、固态硬盘(solid-state drive,ssd)和/或cpu缓存内存。用于提供非瞬时性内存的计算机可读存储介质可以包括但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备,或上述任何合适的组合。
75.在一个实施例中,多个工作元素108中的每一个工作元素还包括对象列表,该对象列表包括要执行操作的一个或多个对象。对象列表是指线性数据结构,其中,每个元素都是单独的对象。对象是指进程之间的数据载体或容器,配置为适应数据包的存储、检索、序列化和反序列化。需要说明的是,这些对象不包括任何固有的业务逻辑,主要用于数据传输和在操作期间封装一个或多个参数。一个或多个对象用于执行操作。此外,对象列表中包括的一个或多个对象是数据传输对象(data transfer object,dto)。一个或多个对象用于减少通常借助远程接口(例如,web服务)进行的进程之间的通信期间的调用数量,其中,每个调用都是高成本操作。一个或多个对象(dto)支持聚合通过几个调用传统上传输的数据,由单个调用提供服务。
76.请求设备100的通信接口106包括介质,请求设备100通过该介质(例如通信信道)与响应设备通信。通信接口106的示例包括但不限于计算机集群中的通信信道、局域网(local area network,lan)通信信道、蜂窝通信信道、无线传感器通信信道(wireless sensor communication channel,wsn)、云通信信道、车辆到通信网络(vehicle-to-communication network,v2n)通信信道、城域网(metropolitan area network,man)通信信道,和/或互联网。此外,通信信道环境中的请求设备100用于根据支持rdma通信的各种通信信道协议连接到响应设备。这类通信信道协议、通信标准和技术的示例可以包括但不限于infiniband(ib)、基于融合以太网的rdma(rdma over converged ethernet,roce)、互联网广域rdma协议(internet wide area rdmaprotocol,iwarp)或其修改和变化。
77.根据一个实施例,通信接口106是互连的可编程和/或非可编程组件的布置,这些组件用于促进一个或多个电子设备之间的数据通信。例如,通信接口106是指用于处理发送队列(send queue,sq),读取工作队列元素(work queue element,wqe)并生成数据包以发送到另一个计算设备的网络接口卡(network interface card,nic)。通信接口106可以支持用于一个或多个对等网络、混合对等网络、局域网(local area network,lan)、无线接入网(radio access network,ran)、城域网(metropolitan area network,man)、广域网(wide area network,wan)、公共网络的全部或部分的通信协议,所述公共网络例如称为互联网的全球计算机网络、专用网络、蜂窝网络以及一个或多个位置的任何其它一个或多个通信系统。此外,通信接口106支持可通过任何数量的已知协议执行的有线或无线通信,所述协议包括但不限于互联网协议(internet protocol,ip)、无线接入协议(wireless access protocol,wap)、帧中继或异步传输模式(asynchronous transfer mode,atm)。此
外,通信接口106也可以采用和支持使用语音、视频、数据或其组合的任何其它合适协议。
78.在本发明中,控制器104是rdma控制器,包括用于生成提示消息的适当的逻辑、电路和/或接口,所述提示消息包括操作类型的指示。控制器104是用于处理驱动请求设备100的指令的计算元件。控制器104的示例包括但不限于网络接口控制器、微处理器、微控制器、复杂指令集计算(complex instruction set computing,cisc)微处理器、精简指令集(reduced instruction set,risc)微处理器或超长指令字(very long instruction word,vliw)微处理器。可选地,类似于控制器104的一个或多个控制器、交互设备(例如请求设备100、响应设备)和元件可以布置在各种架构中,用于响应和处理驱动请求设备100的指令。
79.在操作中,控制器104用于从请求设备100的内存102检索多个工作元素108中的一个或多个工作元素。一个或多个检索到的工作元素存储在一个或多个请求队列(或发送队列)中。请求队列是指用于按指定顺序存储多个工作元素的抽象数据结构。
80.在一个实施例中,控制器104用于检索批量工作元素,并在操作期间改变批量的大小。控制器104用于处理批量中的多个工作元素108,即通过分离其中具有一个或多个工作元素的批量中的多个工作元素108,同时从内存102检索这些工作元素。控制器104用于通过对在一个或多个响应队列(对应于请求设备100的一个或多个请求队列)中排队的请求执行前瞻来改变工作元素批量的大小,直到支持在实际检索工作元素108之前收集关于传入的数据包的信息的预配置深度。工作元素的批量可以是4、8、32、64等的数量级,并且所述即将到来的工作元素批量通过提示消息为响应设备已知。控制器104可以对单个qp请求队列执行前瞻,和/或请求设备100可以在针对与主机(使用不同的特殊qp来发送提示)相同的响应设备(或响应方)的多个qp请求队列中执行并行前瞻。此外,请求设备100还可以处理针对不同响应方的并行qp。
81.控制器104用于生成提示消息,所述提示消息包括检索到的一个或多个工作元素中对应的至少一个工作元素的至少一个操作的指示。提示消息由控制器104生成,以启动与响应设备的一个或多个rdma操作。
82.控制器104用于基于一个或多个工作元素中的每一个工作元素生成提示消息,其中,每个工作元素指示请求方(例如请求设备100)、响应方(即响应设备)和操作(或操作类型)。提示消息指示操作(或操作类型),例如rdma读取操作、rdma写入操作、发送操作或原子操作。例如,提示消息以一个或多个数据包的形式发送。提示消息还包括源和目的队列对(queue pair,qp)编号。例如,每个qp编号在请求设备100和响应设备上具有上下文。
83.在另一个实施例中,工作元素还包括对象列表,所述对象列表包括要执行操作的一个或多个对象,并且其中,提示消息还包括一个或多个对象中的至少一个对象的指示。对象列表中包括的一个或多个对象是数据传输对象(data transfer object,dto)。一个或多个对象用于减少通常借助远程接口(例如,web服务)进行的进程之间的通信期间的调用数量,其中,每个调用都是高成本操作。一个或多个对象(dto)支持聚合通过几个调用传统上传输的数据,由单个调用提供服务。对象列表中包括的一个或多个对象用于执行操作(例如rdma读取操作、rdma写入操作),并且提示消息包括与至少一个操作相关的一个或多个对象中的至少一个对象的指示。
84.在一个实施例中,提示消息还包括与操作相关的内存区域的指示。内存区域是指
要执行操作(例如rdma读取操作、rdma写入操作、rdma原子操作)的目标内存区域。例如,提示消息包括响应设备的要执行操作的内存区域的指示。
85.在另一个实施例中,提示消息包括内存区域的指示,操作还包括要执行操作的内存区域的地址。内存区域的地址包括操作的目标内存地址。在一个示例中,如果第一操作是rdma读取操作,并且与内存区域相关联。则通过读取内存区域(或内存地址)处的特定值或数据来执行rdma读取操作。此外,如果第二操作是rdma写入操作,则所述操作通过在内存区域(或内存地址)写入特定值或数据来执行。所述操作的内存区域可以相同,也可以不相同。在一个示例中,操作可以不在同一内存区域上执行,或者,随后可以在同一内存区域上执行。
86.根据一个实施例,提示消息还包括消息长度、操作类型和操作数数据等各种参数。操作数数据是指与对象列表中正在执行操作的一个或多个对象相关联的数据。消息长度包括rdma读取操作或rdma写入操作的长度。发送操作没有或需要目标内存地址。此外,原子操作还包括操作类型和操作数数据。
87.操作类型可以是标记操作(例如rdma读取、rdma写入或原子操作)或未标记操作类型(例如rdma发送)。在此,对于标记操作,提示消息包括rdma目标信息,该rdma目标信息包括目标内存地址和操作长度(例如rdma写入或rdma读取操作的长度),这些信息是根据检索到的一个或多个工作元素108的至少一个工作元素确定的。此外,目标内存地址和操作长度放置在提示消息的头部中。另一方面,对于未标记操作(例如rdma发送操作),提示消息不包括rdma目标信息。但是,在这种情况下,rdma目标信息不可用,操作以响应设备处的一个或多个请求队列为目标,并且其中,指定了本地rdma目标信息。在一个实施例中,rdma目标信息不可用,提示消息包括指示预期有多少未标记消息的计数,以便使响应设备可以准备足够的缓冲区空间来接收即将到来的消息。
88.在另一个实施例中,包括内存区域和操作的指示的提示消息包括用于预取指示的内存区域的预取操作。例如,包括预取操作的这种提示消息可以视为“预取提示”。预取操作是一种通过在检索数据包之前开始提取操作来加快提取操作的技术。预取操作使用在数据包发送之前发送的预取提示。预取操作使响应设备可以根据需要开始预取与操作相关的内存区域(或内存范围),或者开始准备接收传入的数据包,同时使用其它技术,例如但不限于便签式缓冲区、内存分配等。在一个示例中,预取提示可以包括元组列表,该元组列表包括远程键、目标内存地址、用于标记操作的长度和序列id以及用于未标记操作的传入的消息总数中的至少一个。响应设备使用包括预取提示的提示消息来减少或消除缺页中断。缺页中断是指当正在运行的程序访问当前未被响应设备映射到与操作(或进程)相关的目标内存地址空间中的内存页时,计算机硬件引发的一种异常。此外,同时发送包括多个事务(或数据传输)的一个或多个预取提示的提示消息使响应设备可以根据一个或多个预取提示中的每一个预取提示开始准备内存区域。预取操作有几个益处,包括减少缺页中断数量。在一个示例中,即使由于响应设备低效映射或以不足的速率映射(分页内存(paging-in memory))而不得不暂停或停止第一事务,后续事务(例如第二事务、第三事务)也有更高的机会在没有缺页中断的情况下得到服务。
89.在另一个实施例中,提示消息包括内存区域的指示,操作包括缓存预热操作。例如,这种包括缓存预热操作的提示消息可以视为“缓存预热提示”。在一个示例中,在发送至
少包括队列对列表和与传入的数据包(或工作元素108)相关的目标内存区域的提示消息时,响应设备可以将队列对(queue pair,qp)上下文提取到预定义的内存区域(或缓存内存)中,或执行缓存预热操作。缓存预热操作是指填充缓存内存,以提高后续事务的执行性能。在一个示例中,填充缓存后的第一事务将经过空缓存或冷缓存并经历“缓存缺失”,因为对于第一事务,缓存内存将从请求设备100的内存102检索数据包以执行预热缓存操作。每个后续事务都可以在预热后从缓存内存中提供服务,以最终减少延迟,并在接收传入的数据包时提高执行性能。
90.另外,响应设备可以称为按需寻呼(on-demand paging,odp)内存区域的特定内存区域发出odp请求(类似于“预取提示”机制),以显著降低响应设备接收到时与服务rdma消息本身相关联的延迟。odp是一种用于简化传入的数据包的内存寄存的技术。在此,不再需要确定底层物理目标地址空间和跟踪映射有效性。相反,包括内存区域和操作的指示的提示消息包括当内存区域不存在时从响应方(或响应设备)请求最新转换,并且响应设备使由于不存在内存区域或映射变化而不再有效的转换无效。
91.在另一个实施例中,内存区域和操作的指示包括原子操作。原子操作是作为单个工作单元(即单个工作元素)执行的操作,在该操作期间,处理器可以同时读取目标地址并在同一操作中写入该目标地址。这将防止任何其它处理器或i/o设备在操作完成之前写入或读取内存。换句话说,原子操作(例如rdma获取和添加操作、rdma比较和交换操作)在操作期间不会受到干扰。提示消息包括原子操作列表,供响应方读取原子操作的目标,以在接收到rdma访问的请求时提高计算速度。
92.根据一个实施例,提示消息是专用提示命令消息(opcode)。例如,提示消息可以是专用的,也可以是配置为适应rdma系统或特定响应设备的实现要求。例如,请求设备100的控制器104配置每个提示消息(本文也称为命令消息)以在一个或多个数据包中与头部(例如bth)和可选的附加有效载荷一起发送。需要说明的是,头部提供基本信息(例如,开始指示符、数据包的长度,以及可选的标识要由响应设备处理的命令的命令代码),而有效载荷提供与命令消息相关联的任何数据。需要说明的是,对于不同的命令,与命令消息相关联的数据量可以不同,并且某些命令可以提供可变长度的有效载荷。在一些实施例中,命令可以被定义成使得任何特定命令消息在数据通信期间在单个方向上是有效的。可选地,有效载荷仅包括命令消息的命令和关联数据,并且控制器104可以在将数据包(或命令消息)转发到响应设备之前生成与数据通信或交互计算设备(例如请求设备100、响应设备)相关的附加信息。
93.在一个实施例中,提示消息包括操作(例如rdma读取、rdma写入操作)的指示作为另一个命令的命令消息(第一命令消息)的附加有效载荷。请求设备100将操作指示为命令消息的附加有效载荷。此处,命令消息包括命令(例如操作的指令)和有效载荷。有效载荷是指与每个命令消息相关联的任何参数或数据。此外,有效载荷包括与响应设备所需的物理能力、处理能力和其它附加信息相关的令牌。控制器104可以确定命令消息中的命令是数据传输命令还是数据检索命令。在一个示例中,控制器104确定数据传输命令可以将对应于数据传输命令的有效载荷的消息传输给响应方(或响应设备)。此外,包括数据传输命令的命令消息指示请求设备100的控制器104提取命令消息(包括任何关联数据),并将命令消息(以及在适用的情况下关联数据)转发到响应设备。
94.在一个示例中,提示消息可以与多个qp相关联。在这种情况下,控制器104具有请求队列中工作元素的查找深度。因此,控制器104基于多个qp生成提示消息。下面是描述与多个qp中的多个工作元素相关联的数据以及对应生成的提示消息的示例性表。
95.如表1所示,存在4个工作元素与队列对的发送队列相关联。例如,第1列示出工作元素的数量,第2列示出与所述工作元素相关联的qp,第3列示出与所述工作元素相关联的至少一个操作的指示,第4列示出与工作元素相关联的参数或属性。换句话说,表1示出了与从内存102检索到的一个或多个工作元素中的工作元素相关联的数据,基于该工作元素生成提示消息。
96.表1
97.编号qp类型参数114读取r_key=30,va=0x1000,长度=0x8000217写入r_key=40,va=0x100000,长度=0x3000314读取r_key=30,va=0x50000,长度=0x1000423原子r_key=50,va=0x60000,op=提取&添加
98.现在参考表2,示出了对应于表1的示例性提示消息(或提示数据包携带的信息),即基于表1的工作元素。如图所示,提示消息包括以下信息,即第1行包括队列对编号的详细信息,第2行和第3行包括基于工作元素完成rdma操作所需的内存详细信息和操作指示(或类型)。
99.表2
[0100][0101]
在另一个示例中,提示消息可以基于单个qp生成。此外,单个qp可以与多个工作元素相关联。现在参考表3,示出了与从内存102检索到的一个或多个工作元素中的工作元素相关联的数据,基于该工作元素生成提示消息。如图所示,(表3的)第1列示出了工作元素的数量,第2列示出了与所述工作元素相关联的至少一个操作的指示,第3列示出了与工作元素相关联的参数或属性。在本示例中,提示消息还与操作相关联,例如用于预取指示的内存区域的预取操作。如图所示,存在6个工作元素,并基于这些工作元素,将生成内存预取提示(例如,当使用rdma按需分页(on-demand-paging,odp)方法时)。控制器104了解sq中的工作元素索引,例如qp#4。此后,控制器104在数据路径正在使用的相同qp(qp 4)上生成提示消息(或提示数据包),并将其发送到响应设备。
[0102]
表3
[0103][0104]
现在参考表4,示出了对应于表3的示例性提示消息(即提示数据包携带的信息),即基于表3的工作元素。如图所示,表4的第1行和第2行包括基于工作元素完成rdma操作所需的内存详细信息和操作指示(或类型)。
[0105]
表4
[0106][0107]
控制器104用于通过通信接口106向响应设备发送提示消息,响应设备对应于检索到的一个或多个工作元素中的至少一个工作元素的响应方。如上所述,每个工作元素指示响应方,因此响应设备对应于检索到的一个或多个工作元素中的至少一个工作元素的指定响应方。换句话说,基于由检索到的一个或多个工作元素携带的响应方详细信息,控制器104将这类工作元素发送到对应的或指定的响应方。例如,响应方详细信息可以包括响应方或响应设备的目标内存地址,用于相应地支持从控制器104发送工作元素。
[0108]
在一个实施例中,检索到的一个或多个工作元素中的一个或多个工作元素用于第一响应方,检索到的一个或多个工作元素中的一个或多个工作元素用于第二响应方。此外,控制器104还用于生成提示消息并通过以下方式将提示消息发送到对应的响应设备:生成第一提示消息,并将第一提示消息发送到对应于第一响应方的第一响应设备;生成第二提示消息,并将第二提示消息发送到对应于第二响应方的第二响应设备。在此,在基于响应方的详细信息将一个或多个工作元素实际发送到它们相应的响应方之前,将第一提示消息和第二提示消息中的每一个提示消息分别发送到它们相应的响应设备(即第一响应设备和第二响应设备)。换句话说,单个请求设备(例如请求设备100)被声明为与多个响应方进行rdma通信,即通过基于其响应方详细信息分离检索到的工作元素。
[0109]
在另一个实施例中,检索到的一个或多个工作元素中的一个或多个工作元素与第一请求方(例如请求设备100)相关,检索到的一个或多个工作元素中的一个或多个工作元素与第二请求方(例如另一个请求设备100)相关。换句话说,多个请求设备(例如两个或两个以上请求设备100)被声明为与单个或公共响应方进行rdma通信。如上文所述,每个工作元素指示请求方,因此,检索到的一个或多个工作元素中的一个或多个工作元素可以基于请求方的指示分离,这继而取决于请求方的数量。因此,响应设备在将一个或多个工作元素
从第一请求设备和第二请求设备实际发送到公共响应方之前,从第一请求设备和第二请求设备中的每一个请求设备接收提示消息。类似地,多个请求设备,例如两个或两个以上请求设备100,被声明为与多个响应方进行rdma通信。
[0110]
根据本发明的各种实施例,提示消息可以以各种方式实现(例如生成和发送)。在一个示例中,提示消息可以通过添加到现有数据包中以传输提示(即,主要是操作的指示)的新头部而不是新的bth操作码来实现。或者,可以实现提示消息,可以作为现有数据包中的附加有效载荷携带。此外,现有操作码可以与特殊标志(例如,

0大小的读取/写入)一起使用,而不是bth操作码。此外,提示消息可以通过新bth操作码实现。
[0111]
在一个实施例中,提示消息可以在应用层(例如,新的infiniband verb)显式激活。提示消息可以在请求设备100与响应方之间协商(即,响应方根据其本地状态向请求方“请求”操作指示及其类型的使用)。例如,如果响应方未使用非固定内存,则可能不需要预取提示。
[0112]
在另一个实施例中,提示消息生成可以由rnic fw(rdma网络接口卡固件)控制。
[0113]
可选地,请求设备100可以用于使用特殊的qp向同一响应方发送所有qp的提示消息。或者,请求设备100可以使用不可靠数据报(unreliable datagram,ud)qp将提示消息多播到所有qp,即使它们在不同主机上的响应方上。其它qp类型包括可靠连接(reliable connected,rc)和不可靠连接(unreliable connected,uc)。ud qp可以仅限于给定用户应用中的qp(出于安全和隔离考虑),或者它可以是由单个可信实体(例如,物理功能)管理的全局每设备qp。
[0114]
根据一个实施例,在响应方处提示的处理可以在以下之间划分:rdma网络接口卡硬件(rdma network interface card hardware,rnic hw)、rdma网络接口卡固件(rdma network interface card firmware,rnic fw)、系统内存管理单元/输入/输出内存管理单元(memory management unit/input/output memory management unit,mmu/iommu)hw、设备驱动程序、os内核,或虚拟机管理程序,例如虚拟机/虚拟机管理器(virtual machine/virtual machine manager,vm/vmm)。
[0115]
根据一个实施例,控制器104还用于通过通信接口106向响应设备发送与检索到的一个或多个工作元素中的至少一个工作元素的操作相关的请求,所述请求指示操作。请求被发送到响应设备,以指示要执行的操作,并向响应设备寻求执行操作的许可。换句话说,请求是从请求设备100到响应设备的远程直接内存(remote direct memory access,rdma)访问请求,用于执行与检索到的一个或多个工作元素中的至少一个工作元素的操作相关(或相关联)的rdma操作。应理解,控制器104用于最初向响应设备发送提示消息,然后发送请求。因此,响应设备最初基于“提示消息”更新响应设备需要执行的可能操作,所述“提示消息”即检索到的一个或多个工作元素中的至少一个工作元素的操作的指示。这使响应设备可以在响应设备端对所需的对应或互补操作进行排序。此后,控制器104发送“请求”,以查找来自响应设备的许可,以基于工作元素执行可能的请求操作。
[0116]
在另一个实施例中,请求涉及存储操作。请求设备100发送与存储在一个或多个请求队列中的一个或多个工作元素108的存储操作相关的请求。换句话说,请求设备100寻求响应设备100的许可,以通过发送将一个或多个工作元素108存储在响应设备(或缓存内存)中,以进一步使响应设备可以执行至少一个操作。
[0117]
在又一个实施例中,请求与人工智能操作有关。请求与人工智能操作有关,包括但不限于基于预先训练和定制的深度神经网络的机器学习应用,这些机器学习应用需要复杂的计算、快速和高效的数据传输。在一个示例中,请求用于通过rdma操作和适当的硬件和网络内计算能力实现智能卸载,以显著提高神经网络训练性能和整体机器学习应用。在另一个示例中,infiniband和以太网(例如roce)网络方案,可被用于完整、高性能的人工智能基础设施。
[0118]
在另一个实施例中,请求设备100被布置用于高性能计算(high-performance computing,hpc)。换句话说,请求设备100被配置为使用hpc技术执行软件应用和操作。请求设备100为用户提供在i/o性能基本上类似于处理性能的各种计算设备(例如响应设备)之间动态分配的hpc功能。请求设备100可以是独立的计算环境或任何其它合适的环境。请求设备100可以被布置用于包括高计算节点并支持对工作元素或数据包执行操作的任何hpc计算环境。本文中使用的术语“动态”通常表示至少部分地在运行时基于一个或多个变量确定某些处理。本文中使用的术语“自动”通常表示适当的处理基本上由请求设备100的至少一部分执行。应当理解,“自动”进一步考虑具有请求设备100的任何适当设备,而不脱离本发明的范围。
[0119]
在另一个实施例中,由请求设备100发送的请求与远程过程调用(remote procedure call,rpc)有关,即,当请求设备100使操作或过程(或子例程)在不同的地址空间(或目标内存地址)中执行时,而不需要对远程交互的详细信息进行显式编码。这是客户端-服务器交互的一种形式(请求方是客户端,执行方或响应方是服务器),通常通过请求-响应消息传递系统实现。需要说明的是,rpc模型暗示了位置透明度的水平,即调用过程可能不同,也可能相同,从而能够区分本地或远程调用,远程调用通常比本地调用慢几个数量级,可靠性也低于本地调用,这使得所述区分很重要。rpc是进程间通信(inter-process communication,ipc)的一种形式,其中,不同的操作与不同的地址空间相关。在一个示例中,如果存在于同一宿主机(例如请求设备100)上,所述操作需要不同的虚拟地址空间,即使物理地址空间是相同的;在另一个示例中,如果存在于不同的主机或宿主机上,物理地址空间也是不同的。
[0120]
在一个实施例中,控制器104还用于在发送与操作相关的请求之前从响应设备接收确认消息。响应设备将确认消息作为对提示消息的响应(或回复)提供给请求设备100。通常,响应设备用于提供确认消息(或应答消息),指示提示消息已经处理,并且请求设备100准备好并能够执行提示消息指示的请求操作。需要说明的是,应答消息可以是指示提示消息被成功处理的肯定应答(ack)消息,或者指示与提示消息的处理相关的拒绝或指示响应设备的一些错误或无能力的否定应答(nak)消息。
[0121]
可选地,请求设备100用于根据请求设备100与响应设备之间的协议等待预定义的时间量。预定义的时间量取决于提示消息、提示消息的类型、响应设备的能力等。对各种工作元素的传输之间的预定义数量(或时间间隔)进行编程实现了可靠的数据通信,并减少了延迟,这继而又加快了rdma操作的数据通信。本发明的请求设备100还包括软件模块110。软件模块110可以存储在请求设备100的内存102中。一个或多个软件模块110包括工作元素存储模块112、工作元素检索模块114、提示消息生成模块116、提示消息传输模块118和请求传输模块120。工作元素存储模块112用于将多个工作元素108存储在内存102中的一个或多个
请求队列中。工作元素检索模块114用于从内存102检索工作元素中的至少一个工作元素。提示消息生成模块116用于生成提示消息,该提示消息包括检索到的一个或多个工作元素中对应的至少一个工作元素的至少一个操作的指示。提示消息传输模块118用于通过通信接口106向响应设备发送提示消息,所述响应设备对应于检索到的一个或多个工作元素中的至少一个工作元素的响应方。请求传输模块120用于通过通信接口106向响应设备发送与检索到的一个或多个工作元素中的至少一个工作元素的操作相关的请求,所述请求指示操作。
[0122]
现在参考图2,示出了本发明的实施例提供的请求设备100用于执行rdma操作的方法200的流程图。图2应结合图1理解。例如,方法200可由请求设备100的控制器104执行,该请求设备结合图1示出和解释。如图所示,用于请求设备(例如请求设备100)的方法200包括步骤202-210。
[0123]
在步骤202中,方法200包括将多个工作元素存储在内存(例如图1的内存102)中的一个或多个请求队列中。每个工作元素指示请求方(例如请求设备100)、响应方(或响应设备)和操作。多个工作元素由控制器(例如控制器104)存储在请求设备100的内存102中,用于进一步实现。
[0124]
在步骤204中,方法200包括从内存102检索工作元素中的至少一个工作元素。多个工作元素108中的至少一个工作元素由请求设备100的控制器104检索。
[0125]
在步骤206中,方法200包括生成提示消息,所述提示消息包括检索到的一个或多个工作元素中对应的至少一个工作元素的至少一个操作的指示。提示消息由请求设备100的控制器104生成,以启动与另一计算设备(即响应设备)的远程直接内存访问操作。提示消息指示与至少一个工作元素相关联的操作(或操作类型),例如读取操作、写入操作、发送操作或原子操作。
[0126]
在步骤208中,方法200包括通过通信接口106向响应设备发送提示消息。响应设备对应于检索到的一个或多个工作元素中的至少一个工作元素的响应方。提示消息由请求设备100的控制器104通过通信接口106发送到响应设备。响应设备根据提示消息执行操作。
[0127]
在步骤210中,方法200包括通过通信接口106向响应设备发送与检索到的一个或多个工作元素中的至少一个工作元素的操作相关的请求,所述请求指示操作。请求由请求设备100的控制器104通过通信接口106发送到响应设备。
[0128]
步骤202和210仅仅是说明性的,还可以提供其它替代方案,其中添加一个或多个步骤,删除一个或多个步骤,或以不同的顺序提供一个或多个步骤,而不脱离本文权利要求的范围。
[0129]
本发明还提供了一种计算机程序产品,包括存储有计算机程序代码的非瞬时性计算机可读存储介质,所述计算机程序代码可由处理器执行以执行方法200。通常,方法200用于请求设备(例如结合图1示出和解释的请求设备100)与响应设备通信,以基于提示消息执行rdma操作。非瞬时性计算机可读存储介质的实现示例包括但不限于电可擦除可编程只读内存(electrically erasable programmable read-only memory,eeprom)、随机存取内存(random access memory,ram)、只读内存(read only memory,rom)、硬盘驱动器(hard disk drive,hdd)、闪存、安全数字(secure digital,sd)卡、固态硬盘(solid-state drive,ssd)、计算机可读存储介质和/或cpu缓存内存。用于提供非瞬时性内存的计算机可
读存储介质可以包括但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备,或上述任何合适的组合。
[0130]
现在参考图3,示出了本发明的实施例提供的可用于执行rdma操作的响应设备300的框图。响应设备300应结合图1的请求设备100理解。通常,响应设备300与请求设备100通信,以基于提示消息执行rdma操作。
[0131]
如图所示,响应设备300包括内存302、控制器304和通信接口306。内存302和通信接口306类似于图1的请求设备100的内存102和通信接口106,因此,为了简洁起见,避免了对其进行解释。
[0132]
控制器304包括用于通过通信接口306从请求设备(例如请求设备100)接收提示消息的适当的逻辑、电路和/或接口,所述提示消息指示至少一个操作。控制器304是用于处理驱动响应设备300的指令的计算元件。控制器304的示例包括但不限于网络接口控制器、微处理器、微控制器、复杂指令集计算(complex instruction set computing,cisc)微处理器、精简指令集(reduced instruction set,risc)微处理器或超长指令字(very long instruction word,vliw)微处理器。可选地,类似于控制器304的一个或多个控制器、处理设备和元件可以布置在各种架构中,用于响应和处理驱动响应设备300的指令。
[0133]
在操作中,控制器304用于通过通信接口306从请求设备100接收提示消息。提示消息包括至少一个操作的指示。提示消息包括至少一个操作的指示,例如读取操作、写入操作、发送操作或原子操作。提示消息以一个或多个数据包的形式发送。提示消息的数据包包括数据包序列号(packet sequence number,psn),以强制实现提示消息的正确顺序。提示消息还包括源和目的队列对(queue pair,qp)编号。提示消息还包括用于读取、写入和原子操作的内存地址。第一消息还包括操作类型和操作数数据。
[0134]
控制器304还用于基于至少一个操作的指示确定抢占动作。提示消息包括至少一个操作的指示,基于该操作,控制器304用于确定响应设备300要遵循的抢占动作(或准备动作)。抢占动作是响应设备300执行的操作,以在接收远程直接内存访问操作的请求之前准备内存区域(例如本地内存缓冲区)。抢占动作包括预取操作、缓存预热操作、原子操作中的至少一个。抢占动作对应于响应设备300接收的提示消息(由请求设备100发送)。例如,提示消息可以是预取提示消息、缓存预热提示消息、原子提示消息中的一个,上文结合图1的请求设备100在此解释。例如,当使用非固定的远程直接内存访问系统时,请求设备100向响应设备300发送预取提示消息作为提示消息。提示消息(或预取提示)使响应设备300有时间在针对内存区域(即本地内存缓冲区)的远程直接内存访问操作的实际请求到达之前准备其内存区域(即本地内存缓冲区)。
[0135]
控制器304还用于执行包括预取操作、缓存预热操作、原子操作中的至少一个的抢占动作。控制器104用于在接收远程直接内存访问操作的请求之前,基于提示消息执行抢占动作以准备内存区域(例如本地内存缓冲区)。
[0136]
控制器304还用于通过通信接口306从请求设备100接收与至少一个操作相关的请求,所述请求指示至少一个操作中的至少一个操作。通常,请求是从请求设备100到响应设备300以用于执行rdma操作的远程直接内存(remote direct memory access,rdma)访问请求。请求由请求设备100发送到响应设备300,用于从响应设备300寻求基于提示消息执行操作的许可。
[0137]
控制器304还用于执行至少一个操作中的至少一个操作。至少一个操作中的至少一个操作是从包括但不限于rdma读取操作、rdma写入操作、发送操作或原子操作的操作中选择的。通常,至少一个操作中的至少一个操作基于提示消息的一个或多个操作的指示。
[0138]
在一个实施例中,操作与内存区域有关,并且其中,控制器304还用于基于内存区域和操作确定抢占动作。提示消息包括至少一个操作的指示和与至少一个操作相关的内存区域,以确定在执行操作之前要执行的抢占动作。控制器304基于内存区域和操作确定抢占动作,该抢占动作包括预取操作、缓存预热操作、原子操作中的至少一个,以便在接收远程直接内存访问操作的请求之前准备内存区域(例如本地内存缓冲区)。此外,控制器304用于通过确定是否需要加载内存区域来执行抢占动作,如果需要,则将内存区域加载到内存中。控制器304确定是否需要加载(或填充)与操作相关的内存区域,并且如果存在执行抢占动作的要求,则加载内存区域。
[0139]
在另一个实施例中,控制器304还用于向请求设备100发送确认消息。确认消息指示抢占动作是否成功。响应设备300用于提供指示抢占动作是否成功的确认消息(或应答消息)。因此,响应设备300是否准备好从请求设备100接收传入的数据包(即,允许数据包从请求设备100成功传输到响应设备300)。响应设备300将确认消息作为对提示消息的响应(或回复)提供给请求设备100,指示抢占动作的状态。需要说明的是,确认消息可以是指示抢占动作成功执行且已准备内存区域的肯定应答(ack)消息,或者指示抢占动作未成功执行且未准备内存区域以接收传入的数据包的否定应答(nak)消息。
[0140]
在操作中(或在实现级别),响应设备300用于在接收到提示消息时执行多个动作。通常,动作包括但不限于确定相关qp编号(从数据包头部)并确保qp上下文在rnic缓存中,确定相关dma目标并向内存302发出dma请求,以及执行原子操作。此外,基于本发明,响应设备300在接收到提示消息时执行以下动作:将qp的请求上下文存储到响应设备300的缓存中,立即发送具有适当属性的每个范围的内存页请求(不等待请求数据包从请求设备100到达),从内存302获取原子操作原始数据,并可选地发送提示被处理的应答(或确认)。从响应设备接收的确认消息使请求设备100可以相应地适配或配置数据包的传输,从而有助于无故障操作。通常,确认消息意味着第一消息成功发送到接收设备。因此,控制器304在接收到确认消息时,无论任何外部因素如何,都发送与操作相关的请求。因此,应答消息缩短了数据传输的总执行时间,并减少了延迟。减少延迟表明以更高的速度进行数据通信。
[0141]
本发明的响应设备300还包括软件模块310。软件模块310可以存储在响应设备300的内存302中。软件模块310包括提示消息接收模块312、抢占动作确定模块314、抢占动作执行模块316、请求接收模块318和操作执行模块320。
[0142]
提示消息接收模块312用于从请求设备100接收提示消息,所述提示消息包括至少一个操作的指示。提示消息接收模块从请求设备100接收提示消息,以利用来自提示消息的信息进一步确定抢占动作。抢占动作确定模块314用于基于至少一个操作的指示确定抢占动作。抢占动作确定模块接收到提示消息后,基于提示消息提供的信息确定抢占动作。抢占动作执行模块316用于执行抢占动作,并借助包括但不限于预取操作、缓存预热等的抢占动作准备与至少一个操作相关联的内存区域。请求接收模块318用于从请求设备100接收与至少一个操作相关的请求,该请求指示至少一个操作中的至少一个操作。在确定抢占动作和准备与至少一个操作相关联的内存区域后,请求接收模块从请求设备100接收与至少一个
操作相关的请求,换句话说,请求访问关联的内存区域以执行至少一个操作。操作执行模块320用于执行至少一个操作中的至少一个操作。在从请求设备100接收到请求后,操作执行模块可用于在关联的内存区域上执行至少一个操作。
[0143]
现在参考图4,示出了本发明的实施例提供的响应设备用于执行rdma操作的方法400的流程图。图4应结合图1至图3理解。例如,方法400可由响应设备300的控制器304执行,该响应设备结合图3示出和解释。此外,响应设备300与请求设备100通信,该请求设备结合图1和图2示出和解释。如图所示,用于响应设备的方法400包括步骤402-410。
[0144]
在步骤402中,方法400包括接收提示消息,该提示消息包括至少一个操作的指示。提示消息指示操作(或操作类型),例如读取操作、写入操作、发送操作或原子操作。
[0145]
在步骤404中,方法400包括基于至少一个操作的指示确定抢占动作。通常,提示消息包括至少一个操作的指示,基于该操作,控制器304用于确定响应设备300要遵循的抢占动作。抢占动作是响应设备300执行的操作,以在接收远程直接内存访问操作的请求之前准备内存区域(例如本地内存缓冲区)。抢占动作包括预取操作、缓存预热操作、原子操作中的至少一个。
[0146]
在步骤406中,方法400包括使用响应设备300的控制器304执行抢占动作。在确定抢占动作后,控制器用于在接收远程直接内存访问操作的请求之前,执行抢占动作以准备内存区域(例如本地内存缓冲区)。
[0147]
在步骤408中,方法400包括从请求设备100接收与至少一个操作相关的请求,请求指示至少一个操作中的至少一个操作。请求由请求设备100通过通信接口306发送到响应设备300,以指示要执行的至少一个操作,并用于从响应设备300寻求执行至少一个操作中的至少一个操作的许可。在一个示例中,请求是从请求设备100到响应设备300以用于执行一个或多个rdma操作的远程直接内存(remote direct memory access,rdma)访问请求。
[0148]
在步骤410中,方法400包括执行至少一个操作中的至少一个操作。至少一个操作中的至少一个操作是从包括但不限于rdma读取操作、rdma写入操作、发送操作或原子操作的多个操作中选择的,并由响应设备300的控制器执行。
[0149]
步骤402和410仅仅是说明性的,还可以提供其它替代方案,其中添加一个或多个步骤,删除一个或多个步骤,或以不同的顺序提供一个或多个步骤,而不脱离本文权利要求的范围。
[0150]
本发明还提供了一种计算机程序产品,包括存储有计算机程序代码的非瞬时性计算机可读存储介质,所述计算机程序代码可由处理器执行以执行方法400。通常,方法400用于响应设备(例如结合图3示出和解释的响应设备300)与请求设备100通信,以基于提示消息执行rdma操作。非瞬时性计算机可读存储介质的实现示例包括但不限于电可擦除可编程只读内存(electrically erasable programmable read-only memory,eeprom)、随机存取内存(random access memory,ram)、只读内存(read only memory,rom)、硬盘驱动器(hard disk drive,hdd)、闪存、安全数字(secure digital,sd)卡、固态硬盘(solid-state drive,ssd)、计算机可读存储介质和/或cpu缓存内存。用于提供非瞬时性内存的计算机可读存储介质可以包括但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备,或上述任何合适的组合。
[0151]
现在参考图5,示出了本发明的实施例提供的具有请求设备100和响应设备300的
rdma系统500的框图。图5应结合图1至图4的元件理解。具体而言,rdma系统500包括请求设备,例如请求设备100(结合图1和图2示出和解释),以及响应设备,例如响应设备300(结合图3和图4示出和解释)。如图所示,系统500包括请求设备100和通过通信网络502可通信地耦合到请求设备100的响应设备300。
[0152]
在一个实施例中,通信网络502可以是计算机集群、局域网通信信道(local area communication channel lan)、蜂窝通信信道、无线传感器通信信道(wireless sensor communication channel wsn)、云通信信道、车辆到通信信道(vehicle-to-communication channelv2n)通信信道、城域通信信道(metropolitan area communication channel man)和/或互联网。此外,通信网络502应符合支持rdma通信的各种通信信道协议。这类通信信道协议、通信标准和技术的示例可以包括但不限于infiniband(ib)、基于融合以太网的rdma(rdma over converged ethernet,roce)、互联网广域rdma协议(internet wide area rdma protocol,iwarp)或其修改和变化。
[0153]
在rdma系统500中,请求设备100可以直接访问响应设备300的内存,而不涉及请求设备100和响应设备300的操作系统(operating system,os)。此外,请求设备100基于提示消息与响应设备300通信(交换数据),该提示消息可以包括内存预取提示、缓存预热提示和原子操作提示中的至少一个。rdma系统500不支持与响应设备300共享请求设备100关于rdma目标的知识。通常,在rdma系统500中,一次从请求设备100发送多个提示使响应设备300可以优化各个方面,例如:内存预取、缓存预热、将多个原子操作卸载到硬件中等等。此外,在远程直接内存访问(remote direct memory access,rdma)系统500中,数据直接传输,而不在请求设备100和响应设备300中的通信接口106、306的通信信道层(或网络层)之间复制。例如,在远程直接内存访问系统500中,以一个或多个数据包的形式传输数据。数据包包括与数据包序列号(packet sequence number,psn)相关的信息,以强制正确的数据包排序。数据包还包括源和目的队列对(queue pair,qp)编号,它们区分应用和应用的内存区域。在一个实施例中,内存区域具有作为数据包一部分的内存键(r-key),该内存键将内存区域与申请方相关联,反之亦然。数据包还包括与消息类型(例如rdma读取、rdma写入、发送或原子)相关的信息,以及消息的参数,例如消息长度、目标内存地址、操作类型和操作数数据。
[0154]
现在参考图6,示出了本发明的实施例提供的包括响应设备和请求设备的系统用于执行rdma操作的方法600的流程图。图6应结合图5理解,图5涉及具有响应设备和请求设备的rdma系统500。此外,图5应结合图1至图4的元件理解。具体而言,rdma系统500包括请求设备,例如请求设备100(结合图1和图2示出和解释),以及响应设备,例如请求设备300(结合图3和图4示出和解释)。方法600包括步骤602至614。
[0155]
在步骤602中,方法600包括请求设备100将多个工作元素存储在内存102中的一个或多个请求队列中。每个工作元素指示请求方、响应方和操作。
[0156]
在步骤604中,方法600包括请求设备100检索工作元素中的至少一个工作元素。工作元素中的至少一个工作元素由控制器104从请求设备100的内存102从多个工作元素中检索。
[0157]
在步骤606中,方法600包括生成提示消息,所述提示消息包括检索到的一个或多个工作元素中对应的至少一个工作元素的至少一个操作的指示。提示消息由请求设备100
的控制器104生成,以启动与响应设备300的远程直接内存访问操作。提示消息指示与至少一个工作元素相关联的操作(或操作类型),例如读取操作、写入操作、发送操作或原子操作。
[0158]
在步骤608中,方法600包括请求设备100通过通信接口306向响应设备300发送提示消息。响应设备300对应于检索到的一个或多个工作元素中的至少一个工作元素的响应方。提示消息由请求设备100的控制器104通过通信接口106发送到响应设备300。
[0159]
在步骤610中,方法600包括响应设备从请求设备100接收提示消息,所述提示消息包括至少一个操作的指示。响应设备300的控制器304用于接收提示消息。提示消息包括至少一个操作的指示,例如读取操作、写入操作、发送操作或原子操作。提示消息以一个或多个数据包的形式发送。提示消息的数据包包括数据包序列号(packet sequence number,psn),以强制实现提示消息的正确顺序。提示消息还包括源和目的队列对(queue pair,qp)编号。提示消息还包括用于读取、写入和原子操作的内存地址。提示消息还包括与要执行操作的一个或多个对象相关的操作数数据。
[0160]
在步骤612中,方法600包括响应设备300基于至少一个操作的指示确定抢占动作,并执行抢占动作。响应设备300的控制器304用于基于提示消息的至少一个操作的指示确定抢占动作。抢占动作是响应设备300执行的操作,以在接收远程直接内存访问操作的请求之前准备内存区域(例如本地内存缓冲区)。抢占动作包括预取操作、缓存预热操作、原子操作中的至少一个。
[0161]
在步骤614中,方法600包括请求设备100向响应设备300发送与操作相关的请求。请求指示操作和内存区域。
[0162]
在步骤616中,方法600包括响应设备300从请求设备100接收与至少一个操作相关的请求,该请求指示至少一个操作中的至少一个,并执行该操作。请求由请求设备100发送到响应设备300,以指示要执行的至少一个操作,并用于从响应设备300寻求执行操作的许可。请求还包括执行操作。
[0163]
现在参考图7至图9,示出了根据本发明的各种实施例,描述rdma系统700、800和900的实现方式的示例性场景的示意图。rdma系统700、800、900类似于结合图5示出和解释的rdma系统500。此外,图7至图9的rdma系统700、800、900也应结合描述请求设备100和响应设备300的图1至图4理解。如图所示,rdma系统700包括请求设备,例如结合图1和图2示出和解释的请求设备100。rdma系统700还包括两个响应设备,例如结合图3和图4示出和解释的响应设备300。类似地,rdma系统800、900中的每一个包括单个请求设备(例如请求设备100)和一对响应设备(例如请求设备300)。
[0164]
在一个实施例中,如图7所示,在操作中,请求设备100与多个响应设备(例如响应设备300)通信。此外,请求设备100通过多个消息与响应设备300通信。如图所示,请求设备100向两个响应设备300中的一个响应设备(例如第一响应设备)发送第一消息702(例如,qp 11)和第二消息704(例如,qp 21)。类似地,请求设备100向两个响应设备300中的另一个响应设备(例如第二响应设备)发送第三消息706(例如,qp 12)和第四消息708(例如,qp 22)。通常,第一消息702、第二消息704、第三消息706和第四消息708中的每一个都与一个或多个队列对有关,队列对在元素级别包括构成rdma数据包的工作元素。在本实施例中,请求设备100被配置并可用于以使得每个消息同时携带数据和提示的方式发送第一消息702、第二消
息704、第三消息706和第四消息708。换句话说,rdma系统700描述了一个示例性场景,其中,多个qp由请求设备100发送到多个响应设备300,并且每个qp的提示在同一qp上发送。
[0165]
在另一个实施例中,如图8所示,在操作中,请求设备100通过多个消息与响应设备300通信。如图所示,请求设备100向两个响应设备300中的一个响应设备(例如第一响应设备)发送第一消息802(例如,qp 21)、第二消息804(例如,qp 21)和特殊消息806(例如,qp 101)。类似地,请求设备100向两个响应设备300中的另一个响应设备(例如第二响应设备)发送第三消息812(例如,qp 12)、第四消息814(例如,qp 22)和特殊消息816(例如,qp 102)。在本实施例中,请求设备100被配置并可用于以使得每个消息仅携带数据的方式发送第一消息802、第二消息804、第三消息812和第四消息814。此外,请求设备100被配置并可用于发送携带聚合提示的特殊消息806、816。例如,特殊消息806携带第一消息802和第二消息804的聚合提示,类似地,特殊消息816携带第三消息812和第四消息814的聚合提示。换句话说,rdma系统800描述了一个示例性场景,其中,特殊管理qp用于每一对请求设备和响应设备,以聚合来自每一对请求设备和响应设备之间的所有qp的提示。
[0166]
在又一个实施例中,如图9所示,在操作中,请求设备100通过多个消息与响应设备300通信。如图所示,请求设备100向两个响应设备300中的一个响应设备(例如第一响应设备)发送第一消息902(例如,qp 11)、第二消息904(例如,qp 21)和特殊多播消息910(例如,qp 200)。类似地,请求设备100向两个响应设备300中的另一个响应设备(例如第二响应设备)发送第三消息912(例如,qp 12)、第四消息914(例如,qp 22)和相同的特殊多播消息910(例如,qp 200)。在本实施例中,请求设备100被配置并可用于以使得每个消息仅携带数据的方式发送第一消息902、第二消息904、第三消息912和第四消息914。此外,请求设备100被配置并可用于发送携带所有提示的特殊多播消息910。例如,特殊多播消息910携带第一消息902、第二消息904、第三消息912和第四消息914的提示。换句话说,rdma系统900描述了一个示例性场景,其中,特殊的“多播”ud qp用于聚合来自所有qp的提示并将它们发送到所有响应设备300。此外,响应设备300中的每一个响应设备根据其与请求设备100的活动qp推断哪些提示与其相关。
[0167]
在不脱离所附权利要求书所定义的本发明范围的情况下,可以对上文描述的本发明实施例进行修改。如“包括”、“结合”、“具有”、“是/为”等用于描述和要求保护本发明的表述旨在以非排他性的方式解释,即允许未明确描述的项目、组件或元件也存在。对单数的引用也应解释为涉及复数。本文使用的词语“示例性”表示“作为一个示例、实例或说明”。任何描述为“示例性的”实施例并不一定解释为相比其它实施例是优选或有利的,和/或并不排除结合其它实施例的特征。本文使用的词语“可选地”表示“在一些实施例中提供且在其它实施例中没有提供”。应当理解,为了清楚起见而在单独实施例的上下文中描述的本发明的某些特征还可以通过组合提供在单个实施例中。相反地,为了简洁起见在单个实施例的上下文中描述的本发明的各个特征也可以单独地或以任何合适的组合或作为本发明的任何其它描述的实施例提供。
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1
技术分类