用于远程直接内存访问的设备和方法与流程
未命名
09-28
阅读:60
评论:0
1.本发明一般涉及数据传送;更具体地说,涉及用于远程直接内存访问的设备和方法。
背景技术:
2.近年来,高性能计算(high-performance computing,hpc)领域在现有ip基础设施和定制无损技术上利用了infiniband等高性能和低时延网络。这些互连提供远程直接内存访问(remote direct memory access,rdma)等高级网络功能,以实现高吞吐量和低时延以及低cpu利用率。rdma正在高性能计算(high-performance computing,hpc)、数据中心、web2.0、大数据、云、存储、金融服务和保险(finance services and insurance,fsi)、医疗服务、联邦等领域中使用。然而,多个计算设备的网络中的高速数据通信增加了人们对数据可靠性和时延的担忧。
3.通常,远程直接内存访问(remote direct memory access,rdma)涉及从一个计算设备的存储器到另一个计算设备的存储器的直接内存访问。通常,rdma技术不需要任何计算设备(即,传统发送设备和传统接收设备)的操作系统(operating system,os),能够在网络上进行高吞吐量、低时延的数据传送,并且在性能至关重要的部署中特别有用。有两种常见的rdma技术,即infiniband和互联网工程任务组(internet engineering task force,ietf)。ietf协议也被称为互联网广域rdma协议(internet wide area rdma protocol,iwarp)。具体来说,infiniband rdma有两个变体,允许它在以太网网络上运行(roce)和在udp/ip网络上运行(rocev2)。例如,在传统rdma系统的示例性实现场景中,例如在rdma读或写操作中,数据(或数据包)使用支持rdma的网络适配器直接从(例如,传统请求设备的)源存储器传递到(例如,传统响应设备的)目标存储器。具体来说,它不涉及中央处理器(central processing unit,cpu)(或处理器)或交互设备(即,传统发送设备和传统接收设备)中的任何一个的操作系统。然而,与访问存储器的请求方(例如,传统请求设备)在数据包生成时具有关于数据包的知识(qp上下文、操作信息)不同,响应方(例如,传统响应设备)在从网络接收数据包时接收与特定操作有关的信息。因此,该进程获得了相当大的处理时间,并增加了数据通信期间的时延。此外,以现代rnic的线速(25
–
400gbps)执行这些操作变得极具挑战性。因此,在传统系统中,从主机存储器获取信息需要时间,而且通常需要几次数据获取迭代,这导致时延增加和性能降低。
4.目前,主机存储器非常昂贵(估计高达主机总成本的40%),资源有限。这种有限资源的可用性由于需要为dma操作保留内存而得到增强,使得保留的或物理的内存可根据需要用于rdma nic。传统上,有两种方法来克服上述问题,要么通过固定内存,要么通过采用按需分页。然而,由于在非活动(即,不用于dma操作)期间不能用于其他目的,占可用物理内存很大一部分的固定内存有效地减少了主机设备上可用的物理内存。因此,没有在dma操作与资源(即,内存或ram)之间建立成功的权衡。此外,按需分页(on-demand paging,odp)要求通过在执行期间动态将页面映射为dma目的地来处理缺失的页面映射,而无需用户应用
程序的直接干预。虽然odp是可行的,但可能会导致性能下降,例如速度或执行时间降低、入站网络流量降低或速率受限,从而导致显著的负面性能影响。通常,在dma操作之前,在响应方预取数据可以通过在每个dma操作之前向响应方发送预取提示请求来减少性能开销,从而减轻按需分页的性能影响。但是,每个或每几个dma操作的预取提示请求本身会在网络上产生带宽开销。此外,在页面已经映射的情况下,冗余的预取提示请求会延迟对有用的预取提示请求的处理。
5.因此,根据上述讨论,需要克服与用于数据通信的传统远程直接内存访问(remote direct memory access,rdma)技术的传统请求设备、传统响应设备和传统方法相关联的上述缺点。
技术实现要素:
6.本发明寻求提供用于远程直接内存访问(remote direct memory access,rdma)的请求设备、响应设备、方法和系统。本发明寻求借助传统的设备、方法和传统的远程直接内存访问系统来解决现有的低效和不可靠的数据通信问题。本发明的目的是提供一种至少部分克服现有技术中遇到的问题的解决方案,并提供用于rdma操作的高效(例如,减少时延)和可靠数据通信的改进设备、方法和系统。本发明的目标是通过所附独立权利要求中提供的技术方案来实现的。本发明的有利实现方式在从属权利要求中进一步定义。
7.本发明的目标是通过所附独立权利要求中提供的技术方案来实现的。本发明的有利实现方式在从属权利要求中进一步定义。
8.在一个方面,本发明提供了一种请求设备,包括存储器、控制器和通信接口。控制器用于与响应设备的内存区域进行关联,内存区域包括一个或多个内存块。此外,控制器用于通过通信接口从响应设备接收关于与内存区域有关的内存状态的通知;基于内存状态判断待访问的内存块在响应设备的存储器中是否就绪,并通过通信接口向响应设备传输请求,该请求与待访问的内存块有关。
9.本发明的请求设备能够保持对内存区域或一个或多个内存块的内存状态的跟踪,并允许响应设备借助内存预取、预取提示等优化各个方面。这些操作用于使响应设备能够提前开始加载内存块或内存区域(如果有必要),或准备以高效的方式接受传入的数据包。此外,通过在需要时交换内存区域,一次传输与多个事务(或操作)有关的多个通知,能够实现更快、更高效的操作。响应设备将更新报告为通知,以便请求设备有更高的机会在没有页面错误的情况下获得服务。
10.在另一种实现形式中,控制器还用于接收内存块大小的指示,内存块大小小于或等于内存区域的大小,其中关于内存状态的通知与一个或多个内存块有关。
11.内存块大小的指示通过允许请求设备基于接收到的内存块大小的指示重新配置或改变请求的粒度或结构使得能够优化操作期间页面错误的发生和控制开销,并确保高效的数据通信。
12.在另一种实现形式中,控制器还用于在接收内存块大小的指示之前,向响应设备传输所指示的内存块大小,以向响应设备指示请求设备支持的内存状态粒度。
13.传输的所指示内存块大小允许响应设备基于请求设备传输的所指示大小重新配置或改变响应设备中内存块的粒度,以优化操作期间页面错误的发生和控制开销,并确保
高效的内存状态报告通信。
14.在又一种实现形式中,控制器还用于针对内存块大小发起与响应设备的协商过程,其中,内存块大小基于带宽标准、响应设备能力和请求设备能力中的一个或多个。
15.协商过程允许通过优化或改变响应设备端的粒度来增强带宽。
16.在另一种实现形式中,控制器还用于接收更新的内存块大小的指示。
17.更新的内存块大小的指示使请求设备能够在传输请求之前做出明智的决策,以加快数据通信速度,避免可能的页面错误(fault)和错误(error)。
18.在另一种实现形式中,更新的内存块大小基于内存动作数量、带宽使用、响应设备能力和请求设备能力中的一个或多个。
19.基于内存动作数量、带宽和设备功能的更新的内存块大小允许通过选择或更新内存块的大小或粒度来优化因素。
20.在一种实现形式中,其中,控制器还用于存储内存块的内存状态。
21.请求设备保持对内存状态的跟踪(或簿记),以在响应设备处实现更快的数据通信并最大限度地减少页面错误。
22.在一种实现形式中,控制器还用于将多个内存块分组为内存块组,基于多个内存块的内存状态确定内存块组的内存组状态,并存储内存组状态。
23.内存块的分块或分组使请求设备能够清楚地分类和跟踪多个内存块的内存组状态,以实现更高效的数据通信。集体确定多个内存块的内存状态而不是单独确定多个内存块中的每一个的内存状态减少了通过网络发送的通知的数量,因此减少或节省了请求设备中的数据库大小,并允许更高效的内存分配。
24.在另一种实现形式中,其中,内存组状态包括计数器,控制器用于:如果所述接收到的内存状态指示内存块组的多个内存块中包括的内存块已经改变其内存状态,调整计数器。
25.在另一种实现形式中,其中,内存组状态包括内存标志,控制器用于:如果指示内存状态的通知指示内存块组的内存块当前不在响应设备的存储器中,设置标志。
26.计数器和标志允许保持对内存块或内存块组的内存状态的跟踪或薄记,以确保高效的内存状态报告通信。
27.在一种实现形式中,关于内存状态的通知指示一个或多个内存块的变化。
28.更新的通知使请求设备能够根据内存状态的变化配置请求,以避免页面错误(fault)或错误(error),实现免查询操作。
29.在一种实现形式中,关于内存状态的通知指示一个或多个内存块的当前内存状态。
30.关于当前内存状态的通知使请求设备能够基于内存区域或内存块的最新或当前状态来配置请求,以避免任何或某些页面错误。
31.在一种实现形式中,控制器还用于在:如果确定待访问的内存块在响应设备的存储器中尚未就绪,发送包括预取提示请求的消息,该预取提示请求向响应设备指示待访问的内存块。
32.在一种实现形式中,关于内存状态的通知指示响应设备不兼容,其中控制器还用于:相应地调整对一个或多个内存块的内存请求;不发送包括预取提示请求的消息。
33.该通知使请求设备能够通过在早期阶段指示不足来节省计算时间,使得不发送包括预取提示请求的消息,并且不花费更多的资源。
34.在另一方面,本发明提供了一种用于请求设备的方法,所述请求设备包括存储器、控制器和通信接口。所述方法包括:与所述响应设备的内存区域进行关联,所述内存区域包括一个或多个内存块;通过所述通信接口从所述响应设备接收关于内存状态的通知;基于所述内存状态判断待访问的内存块在所述响应设备的所述存储器中是否就绪;通过所述通信接口向所述响应设备传输请求,所述请求与所述待访问的内存块有关。
35.本方面的方法实现了本发明的请求设备的所有优点和效果。
36.在又一方面,本发明提供了一种携带计算机指令的计算机可读介质,所述计算机指令在被加载到请求设备的控制器中并由其执行时使所述请求设备能够实现所述方法。
37.携带计算机指令的计算机可读介质(具体来说,非瞬时性计算机可读介质)实现了请求设备或该方法的所有优点和效果。
38.在一方面,本发明提供了一种响应设备,包括存储器、控制器和通信接口。控制器用于:将内存区域与请求设备关联,内存区域包括一个或多个内存块;确定与内存块有关的内存状态;通过通信接口向请求设备传输关于内存状态的通知。
39.由于内存状态与请求相关联,响应设备的控制器确定与内存区域有关的内存状态,并相应地响应以允许在任一端重新配置内存区域,以实现更快的数据通信。有益的是,由响应设备传输的这些通知大大减少了在rdma消息到达响应设备时服务rdma消息本身的时延,并使数据通信更高效。
40.在一种实现形式中,其中,控制器还用于传输内存块大小的指示,内存块大小小于内存区域的大小,其中关于内存状态的通知与一个或多个内存块有关。
41.跟踪一个或多个内存块的内存状态而不是整个内存区域的内存状态使请求能够被调整,以实现更高的带宽、更低的时延,并因此实现更快、更高效的数据通信。
42.在另一种实现形式中,控制器还用于在传输内存块大小的指示之前,从请求设备接收所指示的内存块大小。
43.在一种实现形式中,控制器还用于针对内存块大小发起与请求设备的协商过程,其中,内存块大小基于带宽标准、响应设备能力和请求设备能力中的一个或多个。
44.在一种实现形式中,控制器还用于确定一个或多个内存块中的一个的内存状态。
45.请求设备保持对请求设备所关注的一个或多个内存块的内存状态的跟踪(或簿记),以节省时间以实现更快的数据通信并最大限度地减少页面错误。
46.在一种实现形式中,控制器还用于基于内存块的内存状态的变化确定该内存块的内存状态。
47.这允许控制器提供内存块的最新或当前且并准确的内存状态,以实现高效且可靠的数据传输,而不会出现可能的延迟。
48.在一种实现形式中,控制器还用于基于确定内存块的内存位置来确定该内存块的内存状态。
49.在另一种实现形式中,控制器还用于确定一个或多个内存块在一时间段内的内存状态,在该时间段到期时,传输指示该一个或多个内存块的内存状态的通知。
50.当内存状态变化时,在一时间段后传输通知。如果已经安排了通知,则将状态变化
追加到退出通知。
51.在又一种实现形式中,控制器还用于确定一个或多个内存块的内存状态;确定内存动作数量;确定所述内存动作数量超过阈值数量;然后传输指示一个或多个内存块的内存状态的通知。
52.对内存状态和内存动作数量的确定允许基于交换入/出页面的阈值数量、时间段或每个消息报告的最大通知来追加内存状态,以优化数据通信。
53.在一种实现形式中,控制器还用于通过通信接口从请求设备接收预取提示请求,预取提示请求指示一个或多个内存块,并将所指示的一个或多个内存块加载到存储器中。
54.接收预取提示请求以指示请求设备的要求或启用内存区域或内存块的完整映射,因此,在rdma操作期间存在未映射的内存区域的情况下,减少或消除等待周期。
55.在另一方面,本发明提供了一种用于响应设备的方法,所述响应设备包括存储器、控制器和通信接口,所述方法包括将内存区域与请求设备关联;确定与所述内存区域有关的内存状态,并通过所述通信接口向所述请求设备传输关于所述内存状态的通知。
56.本方面的方法实现了本发明的接收设备的所有优点和效果。
57.在一种实现形式中,本发明提供了一种携带计算机指令的计算机可读介质,所述计算机指令在被加载到响应设备的控制器中并由其执行时使所述响应设备能够实现所述方法。
58.携带计算机指令的计算机可读介质实现了响应设备或该方法的所有优点和效果。
59.应当理解的是,所有上述实施方式可以组合在一起。
60.需要说明的是,本技术中描述的所有设备、元件、电路、单元和模块都可以在软件元件或硬件元件或其任何类型的组合中实现。本技术中描述的各种实体所执行的步骤以及所描述的各种实体要执行的功能均意在指各个实体用于执行各个步骤和功能。即使在以下具体实施例的描述中,外部实体要执行的特定功能或步骤未反映在执行该特定步骤或功能的实体的特定详细元件的描述中,技术人员应清楚,这些方法和功能可以在相应的软件或硬件元件中实现,或以此类元件的任何种组合实现。可以理解的是,本发明的特征易于以各种组合进行组合,而不脱离由所附权利要求书所定义的本发明的范围。
61.本发明的其他方面、优点、特征和目的将从附图和结合以下所附权利要求书解释的说明性实现方式的详细描述中变得显而易见。
附图说明
62.结合所附附图阅读时,可以更好地理解上述发明内容以及说明性实施例的下列详细描述。为了说明本发明,本发明的示例性结构在附图中示出。然而,本发明并不限于本文公开的特定方法和手段。此外,本领域的技术人员将理解,这些附图并非按比例绘制。在可能的情况下,相同的元件使用相同的数字表示。
63.下面仅通过举例,结合以下附图对本发明实施例进行描述。
64.图1是根据本发明实施例的可用于执行远程直接内存访问(remote direct memory access,rdma)操作的请求设备的框图;
65.图2是根据本发明实施例的用于请求设备执行rdma操作的方法的流程图;
66.图3是根据本发明实施例的可用于执行rdma操作的响应设备的框图;
67.图4是根据本发明实施例的用于响应设备执行rdma操作的方法的流程图;
68.图5是描绘根据本发明实施例的用以执行rdma操作的系统的示意图;并且
69.图6-7是描绘根据本发明的各种实施例的rdma系统的实现的示例性场景的示意图。
70.在附图中,下划线数字用于表示下划线数字所在的项或下划线数字相邻的项。不带下划线的数字与将该不带下划线的数字链接到项目的线条所标识的项目相关。当数字不带下划线但带有关联箭头时,不带下划线的数字用于标识箭头所指的一般项目。
具体实施方式
71.以下详细描述说明了本发明的实施例及其实施方式。虽然已公开本发明的一些实施方式,但本领域的技术人员将认识到,也可以实现用于实施或实践本发明的其他实施例。
72.现在参考图1,示出了根据本发明实施例的可用于执行远程直接内存访问(remote direct memory access,rdma)操作的请求设备100的框图。图1主要示出了请求设备100的各种示例性组件。如图所示,请求设备100包括存储器102、控制器104和通信接口106。
73.请求设备100可以潜在地用作发送设备(或发送器)。请求设备100的示例可以包括但不限于通信信道适配器、服务器、计算机集群(例如,大规模并行计算机集群)中的计算或计算设备、包括便携式或非便携式电子设备的通信装置、无线调制解调器、超级计算机或其他基于rdma的设备。
74.存储器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.请求设备100的通信接口106包括介质(例如,通信信道),请求设备100通过该介质与响应设备通信。通信接口106的示例包括但不限于计算机集群中的通信信道、局域网通信信道(local area communication channel,lan)、蜂窝通信信道、无线传感器通信信道(wireless sensor communication channel,wsn)、云通信信道、车辆到通信信道(vehicle-to-communication channel,v2n)通信信道、城域通信信道(metropolitan area communication channel,man),和/或互联网。此外,通信信道环境中的请求设备100用于根据支持rdma通信的各种通信信道协议连接到响应设备。这种通信信道协议、通信标准和技术的示例可以包括但不限于infiniband(infiniband,ib)、基于融合以太网的rdma(rdma over converged ethernet,roce)、互联网广域rdma协议(internet wide area rdma protocol,iwarp)或其修改和变化。
76.在本发明中,控制器104是rdma控制器,其包括合适的逻辑、电路和/或接口,这些
逻辑、电路和/或接口用于生成提示请求,该提示请求包括操作类型的指示。控制器104是用于处理驱动请求设备100的指令的计算元件。控制器104的示例包括但不限于网络接口控制器、微处理器、微控制器、复杂指令集计算(complex instruction set computing,cisc)微处理器、简化指令集(reduced instruction set,risc)微处理器或超长指令集(very long instruction word,vliw)微处理器。控制器104可以包括用以分配内存区域的存储器管理单元(memory management unit,mmu)。可选地,类似于控制器104的一个或多个控制器、交互设备(例如请求设备100、响应设备)和元件可以布置在各种架构中,用于响应和处理驱动请求设备100的指令。
77.控制器104用于与响应设备的内存区域进行关联,内存区域包括一个或多个内存块。可选地,控制器104通过通信接口106传输用以将内存区域与响应设备(类似于请求设备100)关联的请求。该请求基于用于在网络中不同计算设备之间通信的请求-响应或请求-应答方法。例如,第一计算设备(例如请求设备100)发送用以关联数据或内存块的请求,第二计算设备(例如响应设备)响应该请求。具体来说,该请求是消息交换模式的一部分,在消息交换模式中,请求设备100传输用以将内存区域与响应设备关联的请求,其中响应设备接收并处理请求,最终返回与所请求的内存区域有关的消息作为响应。应当理解,关联和内存注册可以以其他不同的方式实现,而不限制本发明的范围。“内存区域”是指区域,也称为资源分区、区或内存上下文,是分配的块的集合,可以基于实现方式高效地释放。本文中,内存区域是存储器102等较大存储器的一部分。通常,内存区域中的所有块都分配在单个连续的内存地址范围或多个内存地址范围中,类似于传统的堆栈帧分配。存储器102包括一个或多个内存区域,这些内存区域可以基于实现方式分配给不同的操作。通常,内存区域是基于页面创建的,类似于内核大小。通常,内存区域的范围可以从1字节、2字节、4千字节(kilobyte,kb)、8kb、64kb、2兆字节(megabyte,mb)、8mb、32mb、1千兆字节(gigabyte,gb)、16gb、128gb等到响应设备300的整个存储器302。值得注意的是,内存区域上的每个内存“页”的大小与内核大小类似。术语“内核”表示操作系统的管理计算系统软件和硬件的操作的中心组件。或者,内核用于管理内存和cpu时间的操作。该请求包括与内存区域和/或内存块有关的信息,以帮助数据通信的有效性。存储器102的内存区域将由响应设备与响应设备的存储器关联。响应设备的存储器类似于请求设备100的存储器102。通常,内存区域包括一个或多个内存块。术语“块”或“内存块”是指具有最大长度或块大小的字节或位序列,通常包含多个记录。因此结构化的数据被认为是分块的或被称为块。通常,内存区域被划分为一个或多个部分,例如第一部分即0-50%和第二部分即50-100%。在一个示例中,1gb的内存区域被划分为每个0.5gb的两个内存块,且将触发对第一内存块的跟踪并相应地触发第一内存块的消息,并且内存块上的任何变化都会触发与第二内存块相关联的跟踪和消息。应当理解,这种划分只是示例性的,并且可以根据实现方式改变任何数量或大小的内存块,而不限制本发明的范围。通常,内存块的大小与内存区域的大小的比率是1:1,但是该比率可以由控制器或计算设备根据实现方式而改变。
78.控制器104用于通过通信接口106从响应设备接收关于与内存区域有关的内存状态的通知。“通知”是指从响应设备发送的与内存区域有关的消息类型。响应设备在从控制器104接收到用于关联内存区域(或内存页)的请求时,分析存储器以确定内存状态。“内存状态”是指相关联内存区域的状态,其中包括一个或多个内存块的内存区域在请求时可能
是,也可能不是可用的或就绪的。因此,基本上,一个或多个内存块中的每一个被筛选或分析以确定它们的状态。形成内存区域的一个或多个块中的每一个的集体状态被称为内存状态。可选地,内存状态与单个内存块有关。可选地,内存状态与整个内存区域有关。通常,内存状态指示所请求的内存块或内存区域是否可用,基于此,响应设备向请求设备100传输通知。该通知可以包括相关联的一个或多个内存块中的每一个的内存状态。因此,请求设备100或控制器104用于从响应设备接收指示与内存区域有关的内存状态的通知。通常,内存块要么可用,要么不可用。内存块的可用状态可以称为交换入状态,而内存的不可用状态可以称为交换出状态。请求设备100用于传输提示消息,用于使响应设备根据并发执行一个或多个操作的要求对一个或多个内存块执行和准备交换(swapping)或交换(swap)操作。术语“交换”是指存储器管理方案,其中任何进程或操作都可以暂时从主存储器(例如响应设备的存储器)交换到辅助存储器(例如备份驱动器、硬盘驱动器),以便主存储器(例如随机存取存储器或ram)可以用于其他进程。有益的是,采用内存交换来提高存储器102或响应设备的存储器的利用率。具体来说,如果任何内存块由于任何原因不可用,则可以用辅助存储器中的相同内存块将该内存块交换出去,反之亦然。这样的交换操作使响应设备能够启用内存区域的关联,而不会由于以与不可用内存块有关的通知形式进行进一步通信的固有需要而产生任何进一步时间延迟。有益的是,不可用的内存块被交换出去,并且可以在任何中断的情况下执行关联。
79.在另一个实施例中,控制器104还用于接收内存块大小的指示,内存块大小小于或等于内存区域的大小。内存块(或页)是响应设备的所请求内存区域的一部分或整个所请求内存区域。控制器104接收内存块大小的指示,该指示由响应设备用于生成指示内存状态的通知。根据实现方式,指示可以包括一个或多个内存块的大小。基于接收到的指示,请求设备100或控制器104可以相应地基于内存块大小的指示重新配置请求或关联。例如,控制器104接收内存块大小为40千字节(kilobyte,kb)的指示,基于该指示,请求设备100被指示通知的粒度,该粒度进一步指示用于进一步操作的存储器的状态。通常,任何请求设备都可能需要各种大小的内存块或内存区域来进行高效的数据通信。内存块或内存区域的不同大小为存储器102提供了粒度,从而为该存储器提供了灵活性。因此,为了避免在操作期间可能抑制高效数据通信的任何差异,响应设备传输内存块大小以帮助请求设备100确定相关联内存块的可访问性。内存区域被划分为相等的逻辑“块大小”或内存块。块数量可以在不限制本发明的范围的情况下改变。块数量的范围可以从整个内存区域的一个块到内存区域中每页的单个块。此外,关于内存状态的通知与一个或多个内存块有关。通常,一个或多个内存块中的每个内存块包括指示内存块的状态或可用性的单独内存状态。总的来说,每个内存块有助于确定内存区域的内存状态。值得注意的是,请求设备100能够基于但不限于未映射/完全映射通知的数量、遇到的页面错误的数量等确定通知粒度并根据实现方式指示内存区域的结构。
80.在另一个实施例中,控制器104还用于在接收内存块大小的指示之前,向响应设备传输所指示的内存块大小。“所指示的大小”是指提供给响应设备的关于内存块大小的指示,针对该指示将生成内存状态通知。控制器104传输所指示的内存块大小,其中所指示的大小基于请求设备100的存储器102中的内存块大小。术语“所指示的大小”是指对响应设备关联内存状态的内存块大小的建议,该建议随后被传送到请求设备100。换句话说,所指示
的大小是对内存状态粒度的建议。值得注意的是,被关联的内存区域包括一个或多个内存块,其中每个内存块具有相同的大小。可选地,内存块大小可以使用所指示的大小确定。应当理解,通知可以根据实现方式在任何时间点发送,而不限制发明的范围。响应设备用于向请求设备100通知选定粒度(例如,通过所指示的大小)。在一个示例中,当块的未映射页面的数量从零增加到一个或多个时,向请求设备100发送通知,指示该块可能未映射。在另一个示例中,当块的未映射页面的数量从一个或多个减少到零时,向请求设备发送该块可能被映射的通知。
81.在一个实施例中,与所指示的大小有关的通知可以在内存区域的关联时传输。或者,可以在接收到相关联内存区域的内存状态之后传输通知。
82.在又一实施例中,控制器104还用于针对内存块大小发起与响应设备的协商过程,其中,内存块大小基于带宽标准、响应设备能力和请求设备能力中的一个或多个。控制器104用于发起协商过程。“协商过程”是指用以交换和决定请求设备100和响应设备使用的内存块大小的简单协议。协商过程的双向性允许请求设备100和响应设备更有效地传送和报告内存块状态。通常,存储器102或响应设备的存储器的内存块是能够在多个并发操作之间分配的资源(例如,字节、字、数据包时隙)的集合。有益的是,协商过程允许响应设备有效地报告与内存注册或保留相比的内存块状态。在操作中,针对内存块大小发起协商过程,其中,内存块大小基于带宽标准、响应设备能力和请求设备能力中的一个或多个。由于,两个设备即请求设备100和响应设备之间的数据通信取决于一个或多个参数,例如带宽,即跨给定路径(例如通信接口106)的数据传输的最大速率;响应设备和请求设备的能力,例如处理功率、内存的大小,设备的数据传输速率等等。因此,考虑到所有这些参数,发起协商过程,以有效地确定每一方(或计算设备)的有利结果。术语“有利结果”是指协商过程的结果。有利结果可以是针对相关联内存块确定的大小。
83.在一个实施例中,控制器104还用于接收更新的内存块大小的指示。根据协商过程,响应设备用于传输更新的内存块大小。值得注意的是,响应设备用于基于请求设备100的要求改变用于报告内存块状态的内存块大小。响应设备可以决定报告不同的内存块大小。请求设备100或控制器104可以基于要求来选择任何大小或粒度的内存块。值得注意的是,控制器104在数据交换期间动态地改变粒度(或块大小),以允许由于被交换出去的页面数量和提高网络利用率而灵活地改变。此外,使响应设备能够允许例如请求设备100的特定请求设备选择加入、选择退出通知,其中术语“特定请求设备”是指当前使用内存区域或内存块的请求设备100。在接收到更新的大小时,请求设备100或控制器104可以判断待访问的内存块是否就绪。
84.在另一个实施例中,更新的内存块大小基于内存动作数量、带宽使用、响应设备能力和请求设备100能力中的一个或多个。更新的内存块大小基于rdma读取、rdma写入等内存动作或操作的数量。在确定更新的内存块大小时,还考虑为完成数据通信而执行的内存动作的数量。此外,其他因素,例如带宽使用或比特率,用以确定一次潜在通信的数据量、响应设备能力和请求设备100能力,即响应设备和请求设备100中的每一个的物理配置和能力。通常,请求设备100和响应设备的能力相似或相等。
85.在一个实施例中,控制器104还用于存储内存块的内存状态。基于接收到的通知或协商过程,控制器104用于将一个或多个内存块的内存状态存储在存储器102中。换句话说,
控制器104保持对一个或多个内存块中的每一个的跟踪。与响应设备的存储器中的一个或多个块的内存状态有关的存储信息使请求设备100能够进行未来操作。例如,如果内存块被确定为准备好由控制器104访问,则请求设备100可以使用响应设备的内存块的所存储内存状态来请求对内存块的访问。
86.在一个实施例中,控制器104还用于将多个内存块分组为内存块组。基于该实现方式,控制器104可以将多个内存块分组为内存块组。“内存块组”是指内存块的集合。内存块的分组是为了通过将用于类似操作或功能的内存块分组并对它们进行集体处理来使数据通信更高效。此外,控制器104用于基于多个内存块的内存状态确定内存块组的内存组状态。基于从通知和/或协商过程接收的信息,控制器集体确定多个内存块的内存组状态。优选地,一种类型的内存块由控制器104分组在一起。例如,将大小小于期望阈值的内存块分组在一起,将大小大于期望阈值的内存块分组在一起,以确定内存块组状态。此外,控制器104用于将内存组状态存储在存储器102中。内存块组状态可用于确定控制器104对内存块或内存块组的可访问性。
87.在另一个实施例中,内存组状态包括计数器,控制器104用于:如果所述接收到的内存状态指示内存块组的多个内存块中包括的内存块已经改变其内存状态,调整计数器。“计数器”是指保持对多个内存块的内存状态的跟踪的寄存器。通常,计数器根据每个内存块的内存状态递增或递减一个值。例如,如果相关联内存块的内存状态为就绪的或可访问的,则计数器将递增其值。在另一个示例中,如果相关联内存块未就绪或不可访问,则计数器将递减。值得注意的是,计数器确定内存块组中可用和不可用的内存块的数量。
88.在又一实施例中,内存组状态包括内存标志,控制器104用于:如果指示内存状态的通知指示内存块组的内存块当前不在响应设备的存储器中,设置内存标志。“内存标志”是指具有作为函数或进程信号的值的标志。通常,内存标志是包含布尔值(例如真(true)或假(false))的二进制标志。但是,并非所有的内存标志都是二进制的,并且可能存储一系列值。值得注意的是,内存标志的值用于确定内存块组的内存状态。内存标志指示内存块组的任何内存块当前是否在响应设备的存储器中,即内存块的内存块是否可供访问或就绪。因此,计数器用于基于单独和集体与内存块相关联的内存标志的值确定内存块组的内存状态。
89.在一个实施例中,关于内存状态的通知指示一个或多个内存块的变化。响应设备可以与一个或多个方或计算设备一起操作,或者与请求设备100并发地执行一个或多个操作。因此,内存块可以例如在优先级的情况下被其他操作或其他设备使用,或者先前不可用的数据块可以变得可用。在这种情况下,响应设备用于传输包括指示一个或多个内存块的内存状态变化的内存状态的通知。例如,如果先前可访问的内存块已用完,则响应设备通过通知传输更新的不可用内存状态。在另一个示例中,如果先前不可用的内存块现在可用于实现,则响应设备通过通知将更新的可用状态传输到请求设备100。通常,一个或多个内存块中的任何一个的状态的变化通过响应设备的通知指示。例如,内存块可以从交换出状态改变为交换入状态,反之亦然。
90.在一个实施例中,关于内存状态的通知指示一个或多个内存块的当前内存状态。在操作可以被延迟或在稍后时间完成的情况下,请求设备100可以要求内存块的当前状态。在这种情况下,控制器104可以向响应设备请求获取与一个或多个内存块有关的当前状态。
因此,响应设备用于传输包括一个或多个块的当前内存状态的通知。有益的是,当内存块不可用时,当前状态可以防止操作期间可能发生的故障。
91.在另一个实施例中,控制器104还用于发送包括预取提示请求的消息,该预取提示请求向响应设备指示待访问的内存块。“消息”是指另一种消息,例如,用以启用例如请求设备100和响应设备的两个计算设备之间的数据通信的通知。“预取提示请求”是指在实际数据通信之前传输以收集关于内存区域和/或内存块状态的知识的请求类型。预取提示请求向响应设备指示待访问的内存块。通常,如果通知中指示的待访问的内存区域或内存块尚未就绪,则传输指示待由请求设备100访问的内存块的预取提示请求。换句话说,如果确定待访问的内存块在响应设备的存储器中尚未就绪(或交换出),则传输包括向响应设备指示待访问(或交换入)的内存块的预取提示请求的消息。从通知接收的信息用于确定预取提示请求。预取提示请求至少包括待访问的内存块和/或内存区域的大小、位置、结构或地址。有益的是,与单独的请求操作相比,预取提示请求节省了由于等待响应而损失的时间。如果所请求的内存区域或内存块可用,则控制器104避免传输请求或消息。如果所请求的内存区域或内存块不可用,则请求设备100可以选择其他内存区域,其中其他内存区域和内存块可用或准备好供访问。
92.在一个实施例中,关于内存状态的通知指示响应设备不兼容。通常,在无法实现更多内存块的情况下,响应设备应被视为不兼容。通常,该通知是内存状态错误通知、内存状态不可用通知或内存状态重置通知中的至少一种。术语“不兼容”是指当响应设备无法令人满意地适应请求设备100的请求时响应设备的状态。在这种情况下,响应设备向请求设备100传输例如内存状态错误或内存状态不可用的通知。在此,控制器104还用于:相应地调整与一个或多个待访问的内存块有关的请求。控制器104在从响应设备接收到通知时,用于调整与一个或多个待访问的内存块有关的请求,以适应由通知指示的响应设备的情况。通常,如果与一个或多个待访问的内存块有关的内存状态指示任何错误条件或无法进一步传输内存状态,则在这种情况下,请求设备用于清除数据库(或跟踪器)。用于存储一个或多个内存块的内存状态的数据库被清除,并且在数据库清除之前累积的信息不用于与内存请求有关的进一步决策。可选地,在请求设备100或控制器104用于调整内存请求的这种情况下,控制器104用于不发送包括预取提示请求的消息。由于关于存储器102中的内存块的信息是无关紧要的,控制器104不传输包括预取提示请求的消息。
93.在接收到通知时,控制器104用于基于内存状态判断待访问的内存块在响应设备的存储器中是否就绪。控制器104通过通信接口106接收通知,并分析从响应设备接收的通知。基于该通知,控制器104获得关于待访问的内存区域和/或内存块的内存状态的知识,并判断待访问的内存块是否就绪。基于内存区域或块的可用大小、内存区域或地址的位置等一个或多个参数,控制器104确定内存块的可访问性,并进一步执行必要的操作。如果请求中请求的内存区域可用,则控制器104可以向响应设备传输另一个消息、提示或请求。
94.在基于通知或内存状态确定内存块的可访问性后,控制器104用于通过通信接口106向响应设备传输请求。如果通过内存状态检测到内存区域或内存块准备好被访问,则由控制器104传输与内存块有关的请求。控制器104传输请求,包括但不限于所需的内存块大小、内存块的位置或地址、待由请求设备100访问的内存块的位置或地址。在分析或检查响应设备的存储器之后,将请求发送到响应设备以开始待传送的实际数据。
95.现在参考图2,示出了根据本发明实施例的用于请求设备100执行rdma操作的方法200的流程图。图2应结合图1阅读。例如,方法200可由请求设备100的控制器104执行,该控制器结合图1示出和解释。如图所示,用于请求设备,例如请求设备100的方法200包括步骤202-210。
96.在步骤202,方法200包括与响应设备的内存区域进行关联,该内存区域包括一个或多个内存块。内存区域是存储器的待与响应设备关联的一部分。
97.在步骤204,方法200包括通过通信接口106从响应设备接收关于内存状态的通知。控制器104在分析内存区域和内存块以确定内存状态后,从响应设备接收通知。
98.在步骤206,方法200包括基于内存状态判断待访问的内存块在响应设备的存储器中是否就绪。控制器104用于基于每个内存块的内存状态确定内存块是否准备好被访问。
99.在步骤208,方法200包括通过通信接口向响应设备传输请求,该请求与内存块有关。控制器104用于基于从响应设备接收的内存状态和通知来传输对访问内存块或内存区域的请求。
100.步骤202和208只是说明性的,并且还可以提供其他替代方案,其中添加一个或多个步骤,删除一个或多个步骤,或按照不同的顺序提供一个或多个步骤,而不脱离本文权利要求书的范围。
101.本发明还提供了一种计算机程序产品,包括非瞬时性计算机可读存储介质,其上存储有计算机程序代码,该计算机程序代码可由控制器104执行以执行方法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高速缓存存储器。用于提供非瞬时性存储器的计算机可读存储介质可以包括但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备,或上述任何合适的组合。
102.现在参考图3,示出了根据本发明实施例的响应设备300的框图。响应设备300应结合图1的请求设备100阅读。通常,响应设备300与请求设备100通信,以基于所传送的消息和通知执行rdma操作。
103.如图所示,响应设备300包括存储器302、控制器304和通信接口306。存储器302和通信接口306类似于图1的请求设备100的存储器102和通信接口106,因此,为了简洁起见,避免了对其的解释。控制器304包括执行rdma操作所需的合适的逻辑、电路和/或接口。控制器304是用于处理驱动响应设备300的指令的计算元件。控制器304的示例包括但不限于网络接口控制器、微处理器、微控制器、复杂指令集计算(complex instruction set computing,cisc)微处理器、简化指令集(reduced instruction set,risc)微处理器或超长指令集(very long instruction word,vliw)微处理器。可选地,类似于控制器304的一个或多个控制器、处理设备和元件可以布置在各种架构中,用于响应和处理驱动响应设备300的指令。响应设备300通过页面/帧(由os控制)来管理存储器,商定的内存块大小用于控制通过网络发送的通知量,使得不需要将大小存储在响应方或响应300的数据库中。
104.控制器304用于将内存区域与请求设备100关联。控制器304基于来自请求设备100的请求将所请求的内存区域与请求设备100关联。“内存区域”是指区域,也称为资源分区、区或内存上下文,是分配的块的集合,可以基于实现方式高效地释放。本文中,内存区域是存储器302等较大存储器的一部分。通常,内存区域中的所有块都分配在一个连续的内存地址范围或多个内存地址范围中,类似于传统的堆栈帧分配。存储器302包括一个或多个内存区域,这些内存区域可以基于实现方式分配给不同的操作。该请求至少包括请求设备100所需或请求的内存区域的大小。控制器304用于关联内存区域。在一种实现方式中,内存区域将由控制器304与响应设备300的存储器302关联。响应设备300的存储器302类似于请求设备100的存储器102。通常,相关联存储器102或302中的任一个的内存区域包括一个或多个内存块。通常,响应设备300使用从与内存区域有关的请求获得的信息来关联内存区域,该信息例如来自大小、地址、类型等。应当理解,关联和内存注册可以以其他不同的方式实现,而不限制本发明的范围。
105.控制器304用于确定与内存区域有关的内存状态。“内存状态”是指相关联内存区域的状态,其中包括一个或多个内存块的内存区域在请求时可能是,也可能不是可用的或就绪的。在关联内存区域后,控制器304分析存储器302以确定与内存区域有关的内存状态。例如,控制器304基于来自请求设备100的请求中指示的内存区域的大小检查内存区域。因此,基本上,一个或多个内存块中的每一个被筛选或分析以单独确定它们的状态。形成内存区域的一个或多个内存块中的每一个的集体状态被称为内存状态。通常,内存状态指示所请求的存储器或内存区域是否可用。
106.控制器304用于通过通信接口306向请求设备100传输关于内存状态的通知。“通知”是指从响应设备300发送的消息类型。可选地,该通知可以在预先配置的时间段之后传输。此外,可选地,该通知可以在通知事件累积超过预定阈值时传输。“预定阈值”是指在传输通知之前待排队或累积的通知事件的最大数量。控制器304在确定与内存区域有关的内存状态后传输通知。内存状态指示所请求的内存区域和其中的内存块是否可供使用,随后控制器304将关于内存状态的通知传输到请求设备100。通常,通知涉及内存区域,然而,通知可以包括存储器302中的一个或多个内存区域中的相关联的一个或多个内存块中的每一个的内存状态。基于内存状态,通知指示关于内存区域的肯定确认从而指示内存区域用于操作的可用性,或者指示否定确认从而指示内存区域不可用性。
107.在另一个实施例中,控制器304还用于传输内存块大小的指示,内存块大小小于或等于内存区域。内存块是响应设备300的内存区域的一部分。控制器304将响应设备300的内存块大小的指示传输到请求设备100。根据实现方式,指示可以包括一个或多个内存块的大小。基于所传输的指示,请求设备100或控制器104可以通过基于相应内存块的内存状态延迟正在传输的一些数据包的传输来重新配置或延迟rdma操作。例如,控制器304传输内存块大小为30kb的指示,请求设备100可以基于该指示重新配置或设置与一个或多个不同内存块有关的通知的粒度。值得注意的是,内存块大小小于内存区域的大小。通常,任何请求设备,例如请求设备100,都可能需要不同大小的内存块或内存区域,用于不同的实现方式和高效的数据通信。内存块或内存区域的不同大小为存储器102提供了粒度,从而为该存储器提供了灵活性。因此,为了避免在操作期间可能抑制高效数据通信的任何差异,响应设备300传输内存块的状态以帮助请求设备100确定相关联内存块的可访问性。此外,关于内存
状态的通知与一个或多个内存块有关。通常,一个或多个内存块中的每个内存块包括指示内存块的状态或可用性的单独内存状态。总的来说,每个内存块有助于确定内存区域的内存状态。
108.在另一个实施例中,控制器304还用于在传输内存块大小的指示之前,从请求设备接收所指示的内存块大小。“所指示的大小”是指提供给响应设备300的关于内存状态通知的粒度的指示。控制器304接收所指示的内存块大小,其中所指示的大小基于请求设备100的存储器102中的内存块大小。
109.在又一实施例中,控制器304还用于针对内存块大小发起与请求设备100的协商过程,其中,内存块大小基于带宽标准、响应设备300能力和请求设备100能力中的一个或多个。控制器304用于发起与控制器104或请求设备100的协商过程。“协商过程”是指一种简单的协议,它提供了一种方法来相互决定和商定内存块大小的值。或者,请求设备100的控制器104还用于发起与响应设备300的控制器304的协商过程。协商过程的双向性允许请求设备100和响应设备300有效地传送内存块大小。通常,请求设备100的存储器102或响应设备300的存储器302的内存块是能够在多个并发操作之间分配的资源(例如,字节、字、数据包时隙)的集合。有益的是,协商过程允许响应设备300有效地报告存储器或内存块的状态。在操作中,针对内存块大小发起协商过程,其中,内存块大小基于带宽标准、响应设备300能力和请求设备100能力中的一个或多个。换句话说,针对大小粒度建立了协商。由于,两个设备即请求设备100和响应设备300之间的数据通信取决于一个或多个参数,例如带宽,即跨给定路径(例如通信接口106)传输的最大速率;响应设备300和请求设备100的能力,例如处理功率、内存的大小,设备的数据传输速率等等。因此,考虑到所有这些参数,发起协商过程,以有效地确定每一方(或计算设备)的有利结果。术语“有利结果”是指协商过程的结果。有利的结果可以是为其构建内存状态的内存块的所确定大小。
110.在一个实施例中,控制器304还用于接收更新的内存块大小的指示。根据协商过程,响应设备300用于接收更新的内存块大小。值得注意的是,响应设备300用于基于请求设备100的要求改变内存块大小。响应设备300或控制器304可以基于要求选择任何大小或粒度的内存块。值得注意的是,控制器304在数据交换期间动态地改变粒度(或块大小),以允许由于被交换出去的页面数量和提高网络利用率而灵活地改变。此外,使响应设备300能够允许例如请求设备100的特定请求设备选择加入、选择退出通知,其中术语“特定请求设备”是指实际使用内存区域或内存块的请求设备100。在接收到更新的状态时,请求设备100或控制器104可以确定待访问的内存块是否就绪。
111.在另一个实施例中,更新的内存块大小基于内存动作数量、带宽使用、响应设备300能力和请求设备100能力中的一个或多个。更新的内存块大小基于rdma读取、rdma写入等内存动作或操作的数量。在确定更新的内存块大小时,还考虑为完成数据通信而执行的内存动作的数量。此外,其他因素,例如带宽使用或比特率,用以确定一次潜在通信的数据量、响应设备300能力和请求设备100能力,即响应设备300和请求设备100中的每一个的物理配置和能力。通常,请求设备100和响应设备300的能力相似或相等。
112.在一个实施例中,控制器304还用于确定一个或多个内存块中的一个的内存状态。通常,控制器304用于确定与内存区域有关的内存状态。然而,控制器304用于确定内存区域中的一个或多个内存块中的一个的内存状态。具体来说,控制器304确定相关联内存区域中
数据通信所需的内存块的内存状态。控制器304可用于确定一个或多个内存块中的一个、两个或两个以上或全部的内存状态。在确定内存区域的内存状态时,可以考虑一个或多个内存块的集体内存状态。
113.在另一个实施例中,控制器304还用于确定一个或多个内存块中的多个的内存状态。控制器304用于确定内存区域中的一个或多个内存块中的多个的内存状态。具体来说,包括一个或多个内存块的内存区域被分组为多个内存块。控制器304用于确定多个内存块中的每一个的状态。在基于请求设备100或响应设备300的要求确定内存状态时,可以单独或作为一组来选择多个内存块的所确定状态。通常,与请求设备100有关的多个内存块允许减小用以存储通知的数据库的大小。
114.在一个实施例中,控制器304还用于基于内存块的内存状态的变化确定该内存块的内存状态。内存块的内存状态是基于内存块的内存状态的变化确定的。在此,该变化归因于映射和未映射的内存块以及内存块的内存状态的相应变化。响应设备300可以与一个或多个方或计算设备一起操作,以与请求设备100并发地执行一个或多个操作。因此,响应设备300中的一个或多个内存块可以例如在优先级的情况下被其他操作或其他设备使用或占用,或者先前不可用的数据块可以变得可用。在这种情况下,控制器304用于传输包括指示一个或多个内存块的内存状态变化的内存状态的通知。例如,如果先前可访问的内存块已用完,则控制器304通过通知传输更新的不可用内存状态。在另一个示例中,如果先前不可用的内存块现在可供访问,则控制器304通过通知将更新的可用内存状态传输到请求设备100。通常,一个或多个内存块中的任何一个的状态的变化通过响应设备300的通知指示。通常,响应设备300用于向请求设备100通知选定粒度。在一个示例中,当内存区域的未映射页面或内存块的数量从零增加到一个或多个时,向请求设备100发送通知,指示该块可能未映射。在另一个示例中,当块的未映射页面的数量从一个或多个减少到零时,向请求设备发送该块可能被映射的通知。
115.在一个实施例中,控制器304还用于基于确定内存块的内存位置来确定内存块的内存状态。控制器304在确定内存状态之前确定内存块的位置。“内存位置”是指内存块的虚拟地址(virtual address,va)或物理地址(physical address,pa)等地址。内存块的位置可以由请求设备100在预取提示请求中提供。一旦内存块的位置由控制器304确定,控制器304将内存块与存储器302中的所确定内存位置关联。这样的关联使响应设备300或控制器304能够基于内存位置高效地确定内存状态。可选地,控制器304在基于内存块的内存位置关联内存状态后,分析所请求的内存块,并确定内存块的内存状态。具体来说,内存位置是否可用,或是交换入还是交换出。此外,这样的协议允许根据要求主动确定内存状态。
116.在一个实施例中,控制器304还用于确定一个或多个内存块在一时间段内的内存状态,在该时间段到期时,传输指示该一个或多个内存块的内存状态的通知。响应设备300或控制器304用于基于交换入或交换出内存块的阈值、时间段或每个消息报告的最大通知来确定一个或多个块的内存状态。通知可以根据要求或作为给定时间内的优选内存交换操作数量或两者兼而有之地安排在有规律的时间段内实现或传输。因此,当内存状态被更新或改变时,通知被安排在通知改变后的预设时间发送,预设时间例如为1毫秒(millisecond,ms)、10ms、100ms、1秒(second,s)、2s、10s等。此外,如果时间段到期,则控制器304用于传输指示一个或多个内存块的内存状态的通知。在一个示例中,如果已经安排了
memory,ram)、只读存储器(read only memory,rom)、硬盘驱动器(hard disk drive,hdd)、闪存、安全数字(secure digital,sd)卡、固态硬盘(solid-state drive,ssd)、计算机可读存储介质和/或cpu高速缓存存储器。用于提供非瞬时性存储器的计算机可读存储介质可以包括但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备,或上述任何合适的组合。
125.参考图5,示出了根据本发明的各种实施例的描绘执行rdma操作的rdma系统500。图5也应结合图1-4阅读,描绘请求设备100和响应设备300。如图所示,在步骤502,包括控制器104的请求设备100用于通过通信接口106(未示出)传输用以关联响应设备300的内存区域的请求510。在步骤504,响应设备300将内存区域与响应设备300的存储器302(未示出)和包括一个或多个内存块的内存区域关联。此外,响应设备300通过控制器304用于确定与内存区域有关的内存状态。在确定内存状态后,控制器304用于传输通知512作为对来自请求设备100的请求510的响应。此外,控制器104通过通信接口306(未示出)从响应设备300接收关于与内存区域有关的内存状态的通知512。此外,在步骤506,控制器104用于基于内存状态确定待访问的内存块在响应设备300的存储器302(未示出)中是否就绪,并通过通信接口106向响应设备300传输请求514,请求514与内存块有关。
126.参考图6和7示出根据本发明的各种实施例的描绘rdma系统600、700的实施例的示例性场景的示意性流程图。图6-7的rdma系统600、700也应结合图1-4阅读,描绘请求设备100和响应设备300。如图6所示,rdma系统600包括请求设备,例如请求设备100,其结合图1-2示出和解释。rdma系统600还包括响应设备,例如响应设备300,其结合图3-4示出和解释。类似地,如图7所示,rdma系统700包括例如请求设备100的单个请求设备,以及例如请求设备300的单个响应设备。
127.在一个实施例中,如图6所示,在操作中,包括请求设备100的rdma系统600与响应设备300通信,其中内存区域或内存块被映射或可用。在步骤602,响应设备300检查内存区域的内存状态,并传输与内存区域有关的通知610。通常,响应设备300检测内存区域是部分映射、完全映射还是未映射,并相应地向请求设备100传输通知610。在操作中,响应设备300传输关于与内存区域有关的页帧号(pfn)的事件的通知610。请求设备100在接收到通知610时,将内存区域标记为“潜在映射”。在分析通知达一段时间后,请求设备100可以执行一个或多个动作。如图所示,在步骤604,请求设备100发出对内存区域的rdma读取请求612。在内存区域已经被映射时,请求设备100容易检测到内存区域被“潜在映射”,因此立即传输请求,而不需要传输预取提示请求且不需要在传输请求之前等待预取时间段。在最后步骤606,响应设备300向请求设备100传输rdma读取响应614。
128.在一个实施例中,如图7所示,在操作中,包括请求设备100的rdma系统700与响应设备300通信,其中内存区域或内存块未映射或不可用。在步骤702,响应设备300检查内存区域的内存状态,并在内存区域未映射时传输与内存区域有关的通知712。通常,响应设备300检测内存区域并将内存区域标记为潜在未映射,并且相应地向请求设备100传输通知712。在操作中,响应设备300传输关于与内存区域有关的页帧号(pfn)的事件的通知712。在步骤704,请求设备100在接收到通知712时,将内存区域标记为“潜在未映射”。在分析通知712达一段时间后,请求设备100可以执行一个或多个动作。在步骤704,请求设备100检测到内存区域为“潜在未映射”,因此传输预取提示请求714,并等待预取时间段,直到内存区域
被完全映射。在步骤706,响应设备对不可用的内存块执行交换操作,以完全映射内存区域。在等待预取时间段后,在步骤708,请求设备100发出对内存区域的rdma读取请求716(例如请求612)。由于内存区域现在被完全映射,因此在最后步骤710,响应设备300将rdma读取响应718传输到请求设备100。
129.根据大小分配内存,或根据大小改变请求操作。通常,响应设备300在接收数据包之前确定共享虚拟内存区域或共享虚拟地址的当前状态。如果,支持并启用sva或svm。则,传入的内存数据包作为dma事务被传输到输入输出存储器管理单元(memory management unit,iommu)或系统存储器管理单元(system memory management unit,smmu),然后根据方法400进行转换。否则,如果不支持或不启用sva或svm,则响应设备300或nic(网络接口控制器)检查mtt(内存转换表),并根据方法400执行转换,以确定待访问的内存地址和待设置的页面分辨率或粒度。术语“mtt或内存转换表”是指供任何虚拟内存系统用于存储虚拟地址与物理地址之间的映射的数据结构。具体来说,虚拟地址由例如响应设备300的计算设备执行的程序使用,而物理地址由硬件使用,或者更具体地说,由ram子系统使用。mtt是用于内存地址转换的关键组件,内存地址转换是访问存储器302中的数据所必需的。在此,内存块使系统能够设置要跟踪的分辨率。通常,分辨率或粒度取决于可用内存(例如存储器302)、响应设备300上的内存块或内存区域的交换速率、该应用程序的服务水平协议(service level agreement,sla)等等。
130.在不脱离所附权利要求书界定的本发明的范围的情况下,可以对上述本发明的实施例进行修改。用于描述和主张本发明的“包括”、“包含”、“结合”、“具有”、“是”等表达应视为以非唯一的方式解释,即允许没有明确描述的项目、部分或要素也可出现。对单数的引用也应解释为与复数有关。本文使用的词语“示例性”表示“作为一个示例、实例或说明”。任何描述为“示例性的”实施例并不一定解释为优先于或优越于其他实施例和/或并不排除结合其他实施例的特征。本文使用的词语“可选地”表示“在一些实施例中提供且在其他实施例中没有提供”。应当理解,为了清楚起见而在单独实施例的上下文中描述的本发明的某些特征还可以通过组合提供在单个实施例中。相反地,为了简洁起见,在单个实施例的上下文中描述的本发明的各个特征也可以单独地或以任何合适的组合提供,或在本发明的任何其他描述的实施例中合适地提供。
技术特征:
1.一种请求设备(100),其特征在于,包括存储器(102)、控制器(104)和通信接口(106),所述控制器(104)用于:与响应设备(300)的内存区域进行关联,所述内存区域包括一个或多个内存块;通过所述通信接口(106)从所述响应设备接收关于与所述内存区域有关的内存状态的通知(512);基于所述内存状态判断待访问的内存块在所述响应设备(300)的存储器(302)中是否就绪;通过所述通信接口向所述响应设备传输请求(514),所述请求(514)与所述待访问的内存块有关。2.根据权利要求1所述的请求设备(100),其特征在于,所述控制器(104)还用于接收内存块大小的指示,所述内存块大小小于或等于所述内存区域的大小,其中关于所述内存状态的所述通知(512)与一个或多个内存块有关。3.根据权利要求2所述的请求设备(100),其特征在于,所述控制器(100)还用于在接收所述内存块大小的所述指示之前,向所述响应设备(300)传输所指示的内存块大小。4.根据权利要求2所述的请求设备(100),其特征在于,所述控制器(104)还用于针对所述内存块大小发起与所述响应设备(300)的协商过程,其中,所述内存块大小基于带宽标准、响应设备(300)能力和请求设备(100)能力中的一个或多个。5.根据权利要求2至4中任一项所述的请求设备(100),其特征在于,所述控制器(104)还用于接收更新的内存块大小的指示。6.根据权利要求5所述的请求设备(100),其特征在于,所述更新的内存块大小基于内存动作数量、带宽使用、响应设备(300)能力和请求设备(100)能力中的一个或多个。7.根据前述权利要求中任一项所述的请求设备(100),其特征在于,所述控制器(104)还用于存储内存块的所述内存状态。8.根据前述权利要求中任一项所述的请求设备(100),其特征在于,所述控制器(104)还用于:将多个内存块分组为内存块组;基于所述多个内存块的所述内存状态确定所述内存块组的内存组状态;存储所述内存组状态。9.根据权利要求8所述的请求设备(100),其特征在于,所述内存组状态包括计数器,所述控制器(104)用于:如果所述接收到的内存状态指示所述内存块组的所述多个内存块中包括的内存块已经改变其内存状态,调整所述计数器。10.根据权利要求9所述的请求设备(100),其特征在于,所述内存组状态包括内存标志,控制器(104)用于:如果指示所述内存状态的所述通知(512)指示所述内存块组的内存块当前不在所述响应设备(300)的所述存储器(302)中,设置所述标志。11.根据前述权利要求中任一项所述的请求设备(100),其特征在于,关于内存状态的所述通知(512)指示一个或多个内存块的变化。12.根据前述权利要求中任一项所述的请求设备(100),其特征在于,关于内存状态的所述通知(512)指示一个或多个内存块的当前内存状态。13.根据权利要求1所述的请求设备(100),其特征在于,所述控制器(104)还用于:如果
确定所述待访问的内存块在所述响应设备(300)的存储器(302)中尚未就绪,发送包括预取提示请求(714)的消息,所述预取提示请求向所述响应设备(300)指示所述待访问的内存块。14.根据前述权利要求中任一项所述的请求设备(100),其特征在于,关于内存状态的所述通知(512)指示所述响应设备(300)不兼容,其中所述控制器(104)还用于:相应地调整与所述待访问的内存块有关的所述请求,当附属于权利要求13时,不发送包括所述预取提示请求(714)的所述消息。15.一种用于请求设备(100)的方法(200),其特征在于,所述请求设备(100)包括存储器(102)、控制器(104)和通信接口(106),所述方法(200)包括:与响应设备(300)的内存区域进行关联,所述内存区域包括一个或多个内存块;通过所述通信接口(106)从所述响应设备(300)接收关于内存状态的通知(512);基于所述内存状态判断待访问的内存块在所述响应设备的存储器(302)中是否就绪;通过所述通信接口向所述响应设备传输请求(514),所述请求(514)与所述待访问的内存块有关。16.一种携带计算机指令的计算机可读介质,其特征在于,所述计算机指令在被加载到请求设备(100)的控制器(104)中并由其执行时使所述请求设备(100)能够实现根据权利要求15所述的方法(200)。17.一种响应设备(300),其特征在于,包括存储器(302)、控制器(304)和通信接口(306),所述控制器(304)用于:将内存区域与请求设备(100)关联,所述内存区域包括一个或多个内存块;确定与所述内存区域有关的内存状态;通过所述通信接口(306)向所述请求设备(100)传输关于所述内存状态的通知(512)。18.根据权利要求17所述的响应设备(300),其特征在于,所述控制器(304)还用于传输内存块大小的指示,所述内存块大小小于或等于所述内存区域的大小,其中关于所述内存状态的所述通知(512)与一个或多个内存块有关。19.根据权利要求18所述的响应设备(300),其特征在于,所述控制器(304)还用于在传输所述内存块大小的所述指示之前,从所述请求设备(100)接收所指示的内存块大小。20.根据权利要求18所述的响应设备(300),其特征在于,所述控制器(304)还用于针对所述内存块大小发起与所述请求设备(100)的协商过程,其中,所述内存块大小基于带宽标准、响应设备(300)能力和请求设备(100)能力中的一个或多个。21.根据权利要求18至20中任一项所述的响应设备(300),其特征在于,所述控制器(304)还用于接收更新的内存块大小的指示。22.根据权利要求21所述的响应设备(300),其特征在于,所述更新的内存块大小基于内存动作数量、带宽使用、响应设备(300)能力和请求设备(100)能力中的一个或多个。23.根据权利要求17至22中任一项所述的响应设备(300),其特征在于,所述控制器(304)还用于确定所述一个或多个内存块中的一个的所述内存状态。24.根据权利要求17至23中任一项所述的响应设备(300),其特征在于,所述控制器(304)还用于确定所述一个或多个内存块中的多个的所述内存状态。25.根据权利要求17至24中任一项所述的响应设备(300),其特征在于,所述控制器
(304)还用于基于内存块的内存状态的变化确定所述内存块的所述内存状态。26.根据权利要求17至25中任一项所述的响应设备(300),其特征在于,所述控制器(304)还用于基于确定内存块的内存位置来确定所述内存块的所述内存状态。27.根据权利要求17至26中任一项所述的响应设备(300),其特征在于,所述控制器(304)还用于确定一个或多个内存块在一时间段内的所述内存状态,在所述时间段到期时,传输指示所述一个或多个内存块的所述内存状态的所述通知(512)。28.根据权利要求17至27中任一项所述的响应设备(300),其特征在于,所述控制器(304)还用于:确定一个或多个内存块的所述内存状态;确定内存动作数量;确定所述内存动作数量超过阈值数量;传输指示所述一个或多个内存块的所述内存状态的所述通知(512)。29.根据权利要求17至28中任一项所述的响应设备(300),其特征在于,所述控制器(304)还用于:通过所述通信接口(306)从所述请求设备(100)接收预取提示请求(714),所述预取提示请求(714)指示一个或多个内存块,并将所指示的一个或多个内存块加载到所述存储器(302)中。30.一种用于响应设备(300)的方法(400),其特征在于,所述响应设备(300)包括存储器(302)、控制器(304)和通信接口(306),所述方法(400)包括:将内存区域与请求设备(100)关联;确定与所述内存区域有关的内存状态;通过所述通信接口(306)向所述请求设备(100)传输关于所述内存状态的通知(512)。31.一种携带计算机指令的计算机可读介质,其特征在于,所述计算机指令在被加载到响应设备(300)的控制器(304)中并由其执行时使所述响应设备(300)能够实现根据权利要求30所述的方法(400)。
技术总结
本发明涉及通过RDMA操作在例如请求设备和响应设备等设备之间进行的数据通信。所述请求设备和所述响应设备各自包括存储器、控制器和通信接口。所述请求设备的所述控制器与响应设备的内存区域进行关联,所述内存区域包括一个或多个内存块。此外,所述响应设备关联其存储器中的所述内存区域,确定所述内存区域的内存状态,通过所述通信接口传输关于与所述内存区域有关的所述内存状态的通知。此外,基于所述内存状态,所述请求设备判断待访问的内存块在所述响应设备的所述存储器中是否就绪,然后相应地通过所述通信接口向所述响应设备传输请求,所述请求与所述待访问的内存块有关。所述请求与所述待访问的内存块有关。所述请求与所述待访问的内存块有关。
技术研发人员:本-沙哈尔
受保护的技术使用者:华为技术有限公司
技术研发日:2021.01.22
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/