内存访问方法和装置制造方法及图纸

技术编号:20517812 阅读:25 留言:0更新日期:2019-03-06 02:38
本申请提供了内存访问方法和装置。本申请中,通过为RDMA操作生成满足条件的WR链,能够实现将用于指示RDMA操作完成的WR与用于实现RDMA操作的WR设置在同一个WR链且用于指示RDMA操作完成的WR设置在WR链最后,这意味着用于指示RDMA操作完成的WR隐含在RDMA操作中执行,保证对端业务设备在RDMA操作的流程中就能及时感知到RDMA操作完成,提高了RDMA操作的处理效率。

Memory access methods and devices

This application provides memory access methods and devices. In this application, by generating WR chains satisfying the requirements for RDMA operations, the WR used to indicate the completion of RDMA operations and the WR used to implement RDMA operations can be set in the same WR chain and the WR used to indicate the completion of RDMA operations can be set at the end of the WR chain, which means that the WR used to indicate the completion of RDMA operations is implied in RDMA operations to ensure that the end-to-end business devices are executed in the process of RDMA operations. It can sense the completion of RDMA operation in time and improve the processing efficiency of RDMA operation.

【技术实现步骤摘要】
内存访问方法和装置
本申请涉及数据通信技术,特别涉及内存访问方法和装置。
技术介绍
在远程内存直接访问(RDMA:RemoteDirectMemoryAccess)应用中,通过内存直接访问(DMA:DirectMemoryAccess)方式远程访问目标内存,减少了内存拷贝和内核上下文切换带来的开销,实现数据的高性能传输。在RDMA应用中,常见的操作有RDMASEND(发送)操作、RDMA操作。其中,RDMASEND操作用于发送小块(例如大小小于4k)的数据;而RDMA操作,主要是针对连续、大块的数据。这里,RDMA操作可为RDMAREAD(读)操作或RDMAWRITE(写)操作。在RDMA使用中,及时获知RDMA操作完成,以尽可能快地处理RDMA操作相关信息,是提高RDMA操作处理效率的关键。
技术实现思路
本申请提供了内存访问方法和装置,以提高RDMA操作的处理效率。本申请提供的技术方案包括:一种内存访问方法,该方法应用于业务设备,包括:为RDMA操作生成满足条件的工作请求WR链,所述条件为:WR链中最后一个WR用于指示RDMA操作完成;在向对端业务设备发起所述RDMA操作时,按照顺序向所述对端业务设备发送所述WR链中的WR。一种内存访问装置,该装置应用于业务设备,包括:处理模块,用于为远程内存直接访问RDMA操作生成满足条件的工作请求WR链,所述条件为:WR链中最后一个WR用于指示RDMA操作完成;业务模块,用于在向对端业务设备发起所述RDMA操作时,按照顺序向所述对端业务设备发送所述WR链中的WR。由以上技术方案可以看出,本申请中,通过为RDMA操作生成满足条件的WR链,以实现将用于指示RDMA操作完成的WR与用于实现RDMA操作的WR设置在同一个WR链且用于指示RDMA操作完成的WR设置在WR链最后,使得用于指示RDMA操作完成的WR隐含在同一操作流程即RDMA操作的流程中执行,保证了对端业务设备在RDMA操作的流程中即可获知RDMA操作完成,实现了对端业务设备及时感知到RDMA操作完成,进而可以针对完成的RDMA操作执行相应操作比如通知上层应用处理RDMA操作相关信息,提高了RDMA操作的处理效率。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。图1示出了RDMAREAD操作实现流程图;图2示出了WR的结构示意图;图3示出了RDMAREAD操作对应的WR链的结构示意图;图4为本申请提供的内存访问方法流程图;图5为本申请实施例1的RDMAREAD操作实现流程图;图6为本申请实施例1的RDMAWRITE操作实现流程图;图7为本申请实施例2的RDMAREAD操作实现流程图;图8为本申请实施例3的RDMAWRITE操作实现流程图;图9为本申请提供的装置结构示意图;图10为本申请提供的图9所示装置的硬件结构示意图。具体实施方式在RDMA应用中,当执行RDMA操作时常会因为一些没必要的耗时降低RDMA操作的处理效率。这里的RDMA操作可为RDMAREAD操作或者RDMAWRITE操作。下面以RDMAREAD操作为例描述:参见图1,图1示出了RDMAREAD操作实现流程图。如图1所示,该流程可包括以下步骤:步骤101,第一业务设备向第二业务设备发起用于请求内存地址的RDMASEND操作(记为RDMASEND操作1a)。这里,第一业务设备、第二业务设备仅是为便于区分而进行的命名,并非用于限定。作为一个实施例,这里的RDMASEND操作1a携带了待进行的RDMAREAD操作所要读取的数据(记为数据100)的数据标识,其目的是用于从第二业务设备获取第二业务设备本地用于记录数据100的内存地址(记为内存地址1b,概括为RDMAREAD操作所需的地址)。当第二业务设备收到RDMASEND操作1a后,依据RDMASEND操作1a携带的数据标识查找到数据100,若第二业务设备发现数据100已记录至本地内存,则第二业务设备将本地内存中用于记录数据100的内存地址1b封装在RDMASEND操作(记为RDMASEND操作2a)中返回给第一业务设备;若第二业务设备发现数据100还未记录至本地内存,则第二业务设备先将数据100记录至本地内存,之后第二业务设备将本地内存中用于记录数据100的内存地址1b封装在RDMASEND操作(记为RDMASEND操作2a)中返回给第一业务设备。需要说明的是,作为一个实施例,上述第二业务设备将本地内存中用于记录数据100的内存地址1b封装在RDMASEND操作(记为RDMASEND操作2a)中返回给第一业务设备具体可为:第二业务设备依据数据100的数据量将内存地址1b分成多个地址块,这里,每个地址块的大小可相等也可不等,本申请并不具体限定;之后,将分成的各个地址块、以及各个地址块对应的数据长度封装在RDMASEND操作(记为RDMASEND操作2a)中返回给第一业务设备。举个例子:假如数据100的数据量为512k,第二业务设备将内存地址1b分成128个地址块,并设置每一个地址块对应的数据长度(比如4k),将每一个地址块、以及每一地址块对应的数据长度封装在RDMASEND操作(记为RDMASEND操作2a)中返回给第一业务设备。步骤102,第一业务设备接收第二业务设备返回的RDMASEND操作2a。之后执行下述步骤103。步骤103,第一业务设备依据RDMASEND操作2a携带的内存地址1b生成RDMAREAD操作对应的工作请求(WR:WorkRequest)链。基于上面有关第二业务设备将本地内存中用于记录数据100的内存地址1b封装在RDMASEND操作(记为RDMASEND操作2a)中返回给第一业务设备的具体描述,则本步骤103中,第一业务设备收到的RDMASEND操作2a携带的实质是内存地址1b被划分的各个地址块。基于此,本步骤103中,依据RDMASEND操作2a携带的内存地址1b生成RDMAREAD操作对应的WR链具体包括:依次根据RDMASEND操作2a携带的地址块以及地址块对应的数据长度生成RDMAREAD操作的WR(其与所依据的地址块对应),按照顺序将依次生成的WR串接在一起组成WR链。举个例子,假如RDMASEND操作2a具体携带了128个地址块且每一个地址块对应的数据长度为4k,则本步骤102中,可根据RDMASEND操作2a携带的第一个地址块生成第一个WR,第一个WR与第一地址块对应,以及,根据RDMASEND操作2a携带的第二个地址块生成第二个WR,第二个WR与第二地址块对应,依次类推,最终生成128个WR。图2示出了WR的结构。之后,按顺序将生成的128个WR串接组成一个WR链即上述RDMAREAD操作对应的WR链,具体如图3所示。图2所示的WR主要包括:操作类型字段(Opcode)、本端内存地址字段(Localbuf_addr_info)、对端内存地址字段(Remote_addr_info)、标志位字段(Flag)、下一个WR字段(Next)。这里,应用于图1所示的RDMAREAD操作流程,Opcode为RDMAREAD;Localbuf_addr_info包含基于本WR读取的数据在本地内存本文档来自技高网...

【技术保护点】
1.一种内存访问方法,其特征在于,该方法应用于业务设备,包括:为远程内存直接访问RDMA操作生成满足条件的工作请求WR链,所述条件为:WR链中最后一个WR用于指示RDMA操作完成;在向对端业务设备发起所述RDMA操作时,按照顺序向所述对端业务设备发送所述WR链中的WR。

【技术特征摘要】
1.一种内存访问方法,其特征在于,该方法应用于业务设备,包括:为远程内存直接访问RDMA操作生成满足条件的工作请求WR链,所述条件为:WR链中最后一个WR用于指示RDMA操作完成;在向对端业务设备发起所述RDMA操作时,按照顺序向所述对端业务设备发送所述WR链中的WR。2.根据权利要求1所述的方法,其特征在于,所述为远程内存直接访问RDMA操作生成满足条件的工作请求WR链包括:依据从所述对端业务设备获取的所述RDMA操作所需的第一内存地址生成用于实现所述RDMA操作的WR;生成用于指示所述RDMA操作完成的第一指定WR;将用于实现所述RDMA操作的WR、所述第一指定WR组成所述WR链,其中,所述第一指定WR为所述WR链最后一个WR。3.根据权利要求2所述的方法,其特征在于,所述第一指定WR为:操作类型为RDMA发送SEND类型的WR。4.根据权利要求2所述的方法,其特征在于,所述第一指定WR为:操作类型为RDMAWRITE类型的WR;所述第一指定WR包括第二内存地址;所述第二内存地址为:从所述对端业务设备获取的除所述第一内存地址之外的空闲地址;所述第一指定WR用于指示所述对端业务设备在所述第二内存地址写入指定标识,所述指定标识为本设备与所述对端业务设备协商的用于指示所述RDMA操作完成的标识。5.根据权利要求1所述的方法,其特征在于,所述RDMA操作为RDMAWRITE操作;所述为远程内存直接访问RDMA操作生成满足条件的工作请求WR链包括:从所述对端业务设备获取所述RDMAWRITE操作所需的第三内存地址、以及空闲的且与第三内存地址连续的第四内存地址;依据所述第三内存地址生成用于实现所述RDMAWRITE操作的WR;不同WR携带不同的对端内存地址,所有WR携带的对端内存地址组成所述第三内存地址;从生成的用于实现所述RDMAWRITE操作的WR中找到第二指定WR,第二指定WR携带的对端内存地址最接近第四内存地址;对所述第二指定WR进行指定修改,以指示所述对端业务设备在所述第四内存地址写入指定标识,所述指定标识为本设备与所述对端业务设备协商的用于指示所述RDMAWRITE操作完成的标识;所述指定修改包括:将第二指定WR携带的对端内存地址长度增加所述第四内存地址占用的地址长度;在第二指定WR中携带第五内存地址,所述第五内存地址为本设备用于记录指定标识的内存地址;将生成的用于实现所述RDMAWRITE操作的WR组成所述WR链,其中,所述第二指定...

【专利技术属性】
技术研发人员:朱勇
申请(专利权)人:新华三技术有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1