CN103227778B - 内存访问方法、设备和系统 - Google Patents
内存访问方法、设备和系统 Download PDFInfo
- Publication number
- CN103227778B CN103227778B CN201310101248.2A CN201310101248A CN103227778B CN 103227778 B CN103227778 B CN 103227778B CN 201310101248 A CN201310101248 A CN 201310101248A CN 103227778 B CN103227778 B CN 103227778B
- Authority
- CN
- China
- Prior art keywords
- token
- node
- receiving node
- data
- currently used
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种内存访问方法、设备和系统,属于网络技术领域。所述方法包括:发送节点从预先存储的令牌集中选择当前使用令牌;向接收节点发送远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述当前使用令牌所指向的位置信息和所述当前使用令牌的令牌号,以便所述接收节点接收所述RDMA写操作指令,并根据所述当前使用令牌的令牌号处理所述数据。本发明通过在RDMA写操作指令中携带当前使用令牌的令牌号,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率。
Description
技术领域
本发明涉及网络技术领域,特别涉及一种内存访问方法、设备和系统。
背景技术
RDMA(Remote Direct Memory Access,远程直接内存访问)技术,允许跨主机之间的直接内存访问,减少了数据在内存中复制的次数,并且在发送数据时不需要CPU的参与,从而减少了数据传输过程中的延迟。
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写操作指令的立即数中还携带所述数据的数据类型,以便所述接收节点根据所述立即数中携带的所述当前使用令牌的令牌号在所述接收内存中查找所述数据,并根据所述立即数中携带的所述数据的数据类型对查找到的所述数据进行相应处理。
第二方面,本发明实施例提供了一种内存访问方法,所述方法包括:
接收节点接收发送节点发送的远程直接内存访问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是本发明实施例一提供的内存访问方法的方法流程图;
图3是本发明实施例二提供的内存访问方法的方法流程图;
图4是本发明实施例三提供的内存访问方法的方法流程图;
图5是本发明实施例四提供的内存访问方法的方法流程图;
图6是本发明实施例五提供的发送节点的结构示意图;
图7是本发明实施例六提供的接收节点的结构示意图;
图8是本发明实施例七提供的内存访问系统的结构示意图;
图9是本发明实施例八提供的内存访问系统的结构示意图;
图10是本发明实施例九提供的发送节点的结构方框图;
图11是本发明实施例十提供的接收节点的结构方框图;
图12是本发明实施例十一提供的内存访问系统的结构方框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了便于描述,请参考图1,其示出了本发明实施例所涉及的一种实施环境的结构示意图,该实施环境主要包括发送节点101和接收节点102。其中,发送节点101和接收节点102可以是两台通过支持RDMA技术的网络进行连接的主机或者服务器。
首先对RDMA写操作的大概流程做基本描述。在发送节点101需要向接收节点102写入数据时,发送节点101的底层可以向接收节点102的底层发送RDMA写操作指令,该RDMA写操作指令中携带有待发送的数据和接收节点102的接收内存中的一块区域的位置信息;接收节点102的底层接收到该RDMA写操作指令后,根据位置信息将待发送的数据写入接收内存中的对应区域内,至此的整个过程对于接收节点102的上层都是透明的,也即接收节点102的上层不会感知到数据写入。如果发送节点101希望接收节点102的上层感知到此次数据写入,可以在RDMA写操作指令中携带有立即数,用于标示该RDMA写操作的完成。换句话说,当RDMA写操作完成时,该立即数会进入接收节点102的接收队列,实现对接收节点102的上层的通知。但是此时接收节点102的上层仅能够感知到此次数据写入,无法获知此次数据的具体写入位置和此次数据的数据类型等等详细信息。
实施例一
请参考图2,其示出了本发明实施例一提供的内存访问方法的方法流程图。本实施例主要以该内存访问方法用于图1所示实施环境中的发送节点中来举例说明。该内存访问方法,包括:
步骤201,发送节点从预先存储的令牌集中选择当前使用令牌;
发送节点从预先存储的令牌集中选择当前使用令牌,该令牌集包括至少一个令牌,且每个令牌都分别指向接收节点的接收内存中的一块区域;
步骤202,发送节点向接收节点发送远程直接内存访问RDMA写操作指令,该RDMA写操作指令携带有待发送的数据、当前使用令牌所指向的接收节点的接收内存中的区域的位置信息和当前使用令牌的令牌号。
发送节点向接收节点发送远程直接内存访问RDMA写操作指令,该RDMA写操作指令携带有待发送的数据、当前使用令牌所指向的接收节点的接收内存中的区域的位置信息和当前使用令牌的令牌号,以便接收节点接收RDMA写操作指令,根据位置信息将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中的区域中,并根据当前使用令牌的令牌号处理该数据。
综上所述,本发明实施例所提供的内存访问方法,通过发送节点向接收节点发送RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号触发接收节点对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率。
实施例二
请参考图3,其示出了本发明实施例二提供的内存访问方法的方法流程图。本实施例主要以该内存访问方法用于图1所示实施环境中的接收节点中来举例说明。该内存访问方法,包括:
步骤301,接收节点接收发送节点发送的远程直接内存访问RDMA写操作指令,该RDMA写操作指令携带有待发送的数据、当前使用令牌所指向的接收节点的接收内存中的区域的位置信息和当前使用令牌的令牌号;
其中,当前使用令牌是发送节点从预先存储的令牌集中选择得到的,该令牌集中的每个令牌都分别指向接收节点的接收内存中的一块区域。位置信息可以是接收内存中的一块区域的起始内存地址。
步骤302,接收节点根据该位置信息将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中的区域中;
接收节点根据该位置信息将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中的区域中,该位置信息是接收节点接收到的RDMA写操作指令中携带的当前使用令牌所指向的接收节点的接收内存中的区域的位置信息。
步骤303,接收节点根据当前使用令牌的令牌号处理该数据。
接收节点根据当前使用令牌的令牌号处理该数据。该当前使用令牌的令牌号为接收节点接收到的RDMA写操作指令中携带的当前使用令牌的令牌号。
综上所述,本发明实施例所提供的内存访问方法,通过接收节点接收发送节点发送的RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率。
实施例三
请参考图4,其示出了本发明实施例三提供的内存访问方法的方法流程图。本实施例主要以该内存访问方法用于如图1所示的包括发送节点和接收节点的内存访问系统中来举例说明。该内存访问方法,包括:
步骤401,接收节点创建接收内存;
接收节点在本地内存中划分出一块内存区域作为RDMA操作过程中所需要的接收内存,接收内存用于存放由发送节点写入的数据。比如,接收节点在本地内存中划分出一块大小为100KB的内存空间作为接收内存,用来存放由发送节点写入的数据。
步骤402,接收节点创建令牌,并为每个令牌分配接收内存区域;
接收节点创建令牌,并为每个令牌分配接收内存,使得每个令牌指向接收内存中的一块区域。比如,接收节点创建三个令牌,令牌号分别为1、2和3,并将上述大小为100KB的接收内存划分为大小分别为4KB、32KB和64KB的三块区域,使得令牌1、令牌2和令牌3分别指向大小为4KB、32KB和64KB的三块区域,即令牌1指向大小为4KB的内存区域;令牌2指向大小为32KB的内存区域;令牌3指向大小为64KB的内存区域。由于每个内存区域都对应有一个内存编号,所以每个令牌都会与该令牌所指向的内存区域的内存编号形成一一对应关系。在本文中,将每个令牌所指向的接收内存的内存区域的内存编号称为该令牌所指向的接收内存的区域的位置信息。
需要说明的是,接收节点也可以将接收内存划分为大小相同的区域。
步骤403,接收节点创建第一状态内存;
接收节点另外在本地内存中划分出一块区域作为支持RDMA操作的第一状态内存,该第一状态内存用于存放上述接收内存中每个令牌的使用状态,使用状态是指每个令牌所指向的接收内存中的区域的使用情况,可以包括可用、已使用和已使用完毕三种状态。比如,接收节点创建第一状态内存用于存放上述接收内存中的令牌1、令牌2和令牌3共三块令牌的使用状态,也即该三块令牌所指向的接收内存中大小分别为4KB、32KB和64KB的区域的使用情况。在开始创建的时候,接收节点将上述令牌1、令牌2和令牌3的使用状态均初始化为可用。
步骤404,接收节点向发送节点发送令牌信息;
接收节点向发送节点发送令牌信息,该令牌信息包括至少一个令牌的令牌号、每个令牌所指向的接收节点中的接收内存中的区域的位置信息和每个令牌在接收节点中的使用状态。比如,接收节点将令牌号1、2和3、每个令牌所指向的接收内存的区域的起始内存地址信息和每个令牌在接收节点中的对应的可用状态发送给发送节点。
相应的,发送节点接收并存储接收节点发送的令牌信息。
步骤405,发送节点根据接收到的令牌信息创建发送内存和第二状态内存;
发送节点根据接收到的令牌信息在本地内存中划分出一块和接收内存相同大小的内存区域作为支持RDMA操作的发送内存,发送内存用于存放所要发送的数据,发送节点根据接收到的令牌信息将发送内存划分为不同的区域,使得每个令牌所指向的发送节点中的区域和接收节点中的区域大小一样。比如,发送节点在本地内存中同样划分出大小为100KB的内存区域作为发送内存,同样将发送内存划分为大小分别为4KB、32KB和64KB的区域,使得令牌1、令牌2和令牌3分别指向上述三块区域。
发送节点还另外划分出一块区域作为支持RDMA操作的第二状态内存,第二状态内存用于存放令牌在发送节点中的使用状态;比如,第二状态内存保存上述三个令牌在发送节点中的可用状态。
也即,令牌1、令牌2和令牌3分别指向接收节点中大小分别为4KB、32KB和64KB的区域,同时指向发送节点中大小分别为4KB、32KB和64KB的区域。接收节点中的第一状态内存用于存放上述三个令牌在接收节点中的使用状态;发送节点中的第二状态内存用于存放上述三个令牌在发送节点中的使用状态。
步骤406,发送节点从预先存储的令牌集中选择当前使用令牌;
发送节点从预先存储的令牌集中选择当前使用令牌,该令牌集包括至少一个令牌,比如本实施例中的3个令牌,且每个令牌都分别指向接收节点的接收内存中的一块区域。发送节点可以根据待发送的数据的属性从在发送节点中的使用状态为可用的令牌中选择当前使用令牌。待发送的数据的属性可以是待发送的数据的数据量大小。具体来讲:
当发送节点需要向接收节点发送数据的时候,发送节点根据待发送的数据的数据量大小从令牌集中的可用令牌中选择当前使用令牌,可用令牌是指在发送节点中的使用状态为可用状态的令牌。比如,假设初始3个令牌均为可用状态,发送节点中的某个应用程序要发送大小为18KB的数据给接收节点,则该应用程序向发送节点申请当前使用令牌,发送节点可以从上述存储的分别指向大小为4KB、32KB和64KB的令牌号分别为1、2和3的三个令牌中选择当前使用令牌,根据所要发送的数据的大小18KB,发送节点可以将令牌2或令牌3选择作为当前使用令牌。为了更为充分的使用内存空间,优选地,发送节点可以将令牌号为2的令牌分配作为当前使用令牌。
步骤407,发送节点将当前使用令牌所指向的发送内存中的区域中的数据作为待发送的数据;
发送节点在选择当前使用令牌给应用程序之后,应用程序可以获知当前使用令牌在发送节点中所指向的区域的位置信息。应用程序将待发送的数据放入当前使用令牌所指向的发送内存中的区域内。此后,发送节点将当前使用令牌所指向的发送内存中的区域中的数据作为待发送的数据。
步骤408,发送节点将当前使用令牌在发送节点中的使用状态标记为已使用;
在应用程序将待发送的数据放入当前使用令牌所指向的发送内存中的区域内,该当前使用令牌所指向的发送内存的区域即已被使用。为了当前使用令牌在本次使用完毕之前不会被再次使用,发送节点将当前使用令牌在发送节点中的使用状态标记为已使用。比如,发送节点将令牌2在发送节点中的使用状态标记为已使用,保存在发送节点的第二状态内存中。
步骤409,发送节点向接收节点发送RDMA写操作指令,该RDMA写操作指令携带有待发送的数据、当前使用令牌所指向的接收节点的接收内存中的区域的位置信息和当前使用令牌的令牌号;
发送节点向接收节点发送RDMA写操作指令,该RDMA写操作指令携带有待发送的数据、当前使用令牌所指向的接收节点的接收内存中的区域的位置信息和当前使用令牌的令牌号,当前使用令牌的令牌号位于RDMA写操作指令所携带的立即数中。需要特别说明的是,为了在数据发送之后,使得接收节点能够获知数据已经写入完毕并对该数据进行及时处理,发送节点还会在该RDMA写操作指令中携带立即数,该立即数包括有当前使用令牌的令牌号。当前使用令牌的令牌号可以使接收节点获知该数据的具体写入位置。
相应的,接收节点接收发送节点发送的RDMA写操作指令。
步骤410,接收节点根据位置信息将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中的区域中;
接收节点在接收到发送节点发送的RDMA写操作指令之后,根据RDMA写操作指令中携带的当前使用令牌所对应的位置信息将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中的对应区域。
步骤411,接收节点将当前使用令牌在接收节点中的使用状态标记为已使用;
接收节点在接收到发送节点发送的RDMA写操作指令之后,还将该RDMA写操作指令的立即数中包括的当前使用令牌在接收节点中的使用状态标记为已使用。比如,接收节点在接收到包括有当前使用令牌的令牌号2的立即数之后,将令牌号2在接收节点中的使用状态标记为已使用,保存在接收节点的第一状态内存中。
步骤412,接收节点根据当前使用令牌的令牌号处理该数据;
接收节点还根据该RDMA写操作指令的立即数中包括的当前使用令牌的令牌号处理该数据。也即,接收节点可以通过立即数获知有数据写入,然后根据该立即数中包括的当前使用令牌的令牌号获知数据的具体写入位置,从而接收节点可以在接收内存中查找到该数据并处理。
步骤413,接收节点将当前使用令牌在接收节点中的使用状态标记为已使用完毕;
接收节点在处理完该数据之后,将当前使用令牌在接收节点中的使用状态标记为已使用完毕,保存在接收节点的第一状态内存中。
步骤414,发送节点检测在发送节点中的使用状态为已使用的令牌中是否存在可回收令牌;
为了使得已经使用完毕的令牌能够及时被回收,发送节点中还可以提供令牌回收机制。具体来讲,发送节点需要检测在发送节点中的使用状态为已使用的令牌中是否存在可回收令牌,可回收令牌是在发送节点中的使用状态为已使用,在接收节点中的使用状态为已使用完毕的令牌。比如,发送节点检测在发送节点中的使用状态为已使用的令牌2是否符合在发送节点中的使用状态为已使用,在接收节点中的使用状态为已使用完毕的条件。
步骤415,若发送节点的检测结果为存在可回收令牌,则回收可回收令牌;
若发送节点检测到存在可回收令牌,则调用RDMA写操作将至少一个可回收令牌在发送节点中的使用状态和在接收节点中的使用状态均标记为可用。也即,发送节点调用RDMA写操作将至少一个可回收令牌在发送节点中的使用状态标记为可用;发送节点向接收节点发送用于回收令牌的RDMA写操作指令,用于回收令牌的RDMA写操作指令将该至少一个可回收令牌在接收节点中的使用状态标记为可用。比如,发送节点检测到令牌2符合在发送节点中的使用状态为已使用,在接收节点中的使用状态为已使用完毕的条件,则调用RDMA写操作将该令牌2在发送节点中的使用状态和在接收节点中的使用状态均标记为可用,实现令牌的回收。
综上所述,本发明实施例所提供的内存访问方法,通过发送节点向接收节点发送RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号触发接收节点对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率;还通过发送检测使用状态为已使用的令牌是否已经使用完毕来实现令牌的及时回收,以便可以再次被使用,达到了令牌被充分利用的效果,同时缩短了待发送的数据等待发送的时间,提高了数据发送的效率。
实施例四
请参考图5,其示出了本发明实施例四提供的内存访问方法的方法流程图。本实施例仍然以该内存访问方法用于如图1所示的包括发送节点和接收节点的内存访问系统中来举例说明。作为基于实施例三提供的更为优选的实施例,该内存访问方法,包括:
步骤501,接收节点创建接收内存;
接收节点在本地内存中划分出一块区域作为接收内存,接收内存用于存放由发送节点写入的数据。比如,接收节点在本地内存中划分大小分别为8192*64B、8192*128B、8192*256B、8192*512B、8192*1KB、8192*4KB、8192*8KB、8192*32KB、8192*1MB、8192*4MB的十组内存区域作为接收内存,用来存放由发送节点写入的数据。
需要说明的是,接收节点可以根据本地内存的大小来创建合适大小的接收内存,不限于本实施例中提到的十组内存区域,大小也不限于上述十组内存区域的大小。
步骤502,接收节点为接收内存进行RDMA注册;
接收节点为上述接收内存进行RDMA注册,获得RDMA内存编号,以便RDMA操作根据RDMA内存编号直接访问接收内存。比如,接收节点为上述接收内存中的十组内存区域进行RDMA注册,获得对应的RDMA内存编号,使得RDMA操作根据RDMA内存编号直接访问上述十组内存区域。
步骤503,接收节点创建令牌,为每个令牌分配接收内存区域;
接收节点创建令牌,并为每个令牌分配接收内存,使得每个令牌指向接收节点分配的接收内存中的一块区域。比如,接收节点创建8192*10个令牌,并将上述接收内存中的十组内存区域分别划分成为8192个大小分别为64B、128B、256B、512B、1KB、4KB、8KB、32KB、1MB、4MB的区域,每个令牌对应的指向其中一块区域。并且每个令牌都与对应区域的RDMA内存编号形成对应关系,也即将每个令牌所指向的接收内存的内存区域的RDMA内存编号作为该令牌所指向的接收内存的区域的位置信息。
需要说明的是,接收节点也可以将上述十组内存区域划分为相同大小的区域,不限于本实施例中提到的上述不同大小的区域。
步骤504,接收节点创建第一状态内存,并进行RDMA注册;
接收节点另外在本地内存中划分出一块区域作为第一状态内存,第一状态内存用于存储令牌在接收节点中的使用状态,使用状态可以包括可用、已使用、已使用完毕和不可用四种状态,表示令牌所指向的接收内存中的区域的使用情况分别为可用、已使用、已使用完毕和不可用。其中,不可用的情况可能为该令牌所指向的区域不是实际的内存空间。比如,分别用二进制00、01、10和11来表示令牌的可用、已使用、已使用完毕和不可用的状态。每个令牌的状态存储需要2bit的内存空间,那么接收节点需要划分出大小为8192*10*2bit大小的区域作为第一状态内存,来存储全部令牌的使用状态,并为第一状态内存进行RDMA注册,获得RDMA内存编号,以便RDMA操作可以直接访问第一状态内存。
开始创建的时候,接收内存的使用状态都是可用,所以第一状态内存中每个令牌的初始使用状态均为可用。
步骤505,接收节点向发送节点发送令牌信息;
由于RDMA操作中的RDMA写操作和读操作之前需要预先知道所要访问的内存的位置信息,所以接收节点需要向发送节点发送令牌信息,令牌信息包括至少一个令牌的令牌号、每个令牌所指向的接收节点中的接收内存中的区域的位置信息和每个令牌在接收节点中的使用状态。其中,位置信息可以是RDMA内存编号。比如,接收节点将上述8192*10个令牌的令牌号、每个令牌所指向的接收节点中的接收内存中的区域的RDMA内存编号和每个令牌在接收节点中的可用状态发送给发送节点。优选地,接收节点可以不直接将每个令牌在接收节点中的使用状态发送给发送节点,而是将保存有每个令牌在接收节点中的使用状态的第一状态内存的地址发送给发送节点。发送节点收到该第一状态内存的地址后,调用RDMA读操作来读取该第一状态内存,从而获得每个令牌在接收节点中的使用状态。
相应的,发送节点接收并保存接收节点发送的令牌信息。
步骤506,发送节点根据接收到的令牌信息创建发送内存和第二状态内存,并为其进行RDMA注册;
发送节点根据接收到的接收节点发送的令牌信息创建和接收节点中的接收内存同样大小的发送内存,和接收节点中第一状态内存同样大小的第二状态内存。发送内存用于存放待发送的数据,第二状态内存用于存储令牌在发送节点中的使用状态。比如,发送节点同样划分出大小分别为8192*64B、8192*128B、8192*256B、8192*512B、8192*1KB、8192*4KB、8192*8KB、8192*32KB、8192*1MB、8192*4MB的十组内存区域作为发送内存,划分出大小为8192*10*2bit大小的区域作为第二状态内存。并为发送内存和第二状态内存进行RDMA注册,获得RDMA内存编号,以便RDMA操作可以根据RDMA内存编号直接访问发送内存和第二状态内存。
步骤507,发送节点为每个令牌分配对应的发送内存区域;
发送节点将上述发送内存中的十组内存区域分别划分成为8192个大小分别为64B、128B、256B、512B、1KB、4KB、8KB、32KB、1MB、4MB的区域,每个令牌对应的指向其中一块区域。
需要说明的是,接收节点也可以将上述十组内存区域划分为相同大小的区域,不限于本实施例中提到的上述不同大小的区域,但是每个令牌在接收节点中对应的内存区域和在发送节点中对应的内存区域是同样大小的。
步骤508,发送节点从预先存储的令牌集中选择当前使用令牌;
发送节点从预先存储的令牌集中选择当前使用令牌,该令牌集包括至少一个令牌,比如本实施例中的8192*10个令牌,且每个令牌都分别指向接收节点的接收内存中的一块区域。发送节点可以根据待发送的数据的属性从在发送节点中的使用状态为可用的令牌中选择当前使用令牌。待发送的数据的属性可以是待发送的数据的数据量大小。具体来讲:
当发送节点需要向接收节点发送数据的时候,发送节点根据待发送的数据的数据量大小从令牌集中的可用令牌中分配当前使用令牌,可用令牌是指在发送节点中的使用状态为可用状态的令牌。比如,假设初始8192*10个令牌均为可用状态,发送节点中某应用程序需要向接收节点发送大小为100B的数据,该应用程序向发送节点申请令牌,发送节点可以从预先存储的8192*10个令牌中选择一个令牌作为当前使用令牌,由于待发送的数据的大小为100B,为了使得内存区域被充分利用,发送节点可以从大小为128B的8192个令牌中选择一个令牌作为当前使用令牌,假设分配令牌N给需要发送数据的应用程序。需要说明的是,发送节点可能将任意的可用令牌分配给需要发送数据的应用程序,也可以从令牌集中的可用令牌中选择一组令牌作为当前使用令牌,上述一组令牌中的每个令牌所指向的接收内存中的区域的大小都相同,且一组令牌中每个令牌所指向的接收内存中的区域的总大小大于数据的数据量大小。比如,发送节点将8192个大小为64B的一组令牌作为一个令牌队列,将该队列中的多个令牌选择作为当前使用令牌。发送节点需要向接收节点发送大小为100B的数据时,由于64B*2等于128B,128B已经大于所要发送的数据大小100B,所以发送节点可以将该令牌队列中的两个令牌选择作为当前使用令牌。
步骤509,发送节点将当前使用令牌所指向的发送内存中的区域中的数据作为待发送的数据;
发送节点在选择当前使用令牌给应用程序之后,应用程序可以获知当前使用令牌在发送节点中所指向的区域的位置信息。应用程序将待发送的数据放入当前使用令牌所指向的发送内存中的区域内。此后,发送节点将当前使用令牌所指向的发送内存中的区域中的数据作为待发送的数据。
步骤510,发送节点将当前使用令牌在发送节点中的使用状态标记为已使用;
在应用程序将待发送的数据放入当前使用令牌所指向的发送内存中的区域内,该当前使用令牌所指向的发送内存的区域即已被使用。为了当前使用令牌在本次使用完毕之前不会被再次使用,发送节点将当前使用令牌在发送节点中的使用状态标记为已使用。比如,假设令牌N为当前使用令牌,则发送节点将令牌N在发送内存中的使用状态标记为01,表示该令牌所指向的发送内存中的区域已使用,并存储在第二状态内存中。
步骤511,发送节点向接收节点发送RDMA写操作指令,该RDMA写操作指令携带有待发送的数据和当前使用令牌所指向的接收节点的接收内存中的区域的位置信息,且该RDMA写操作指令还携带有立即数,该立即数中包括当前使用令牌的令牌号,还包括待发送数据的数据类型;
发送节点向接收节点发送RDMA写操作指令,该RDMA写操作指令携带有待发送的数据和当前使用令牌所指向的接收节点的接收内存中的区域的位置信息。不仅如此,该RDMA写操作指令中还携带有立即数,该立即数中携带有当前使用令牌的令牌号和待发送的数据的数据类型。换句话说,为了在数据发送之后,使得接收节点能够获知数据已经写入完毕并对该数据进行及时处理,发送节点还会在该RDMA写操作指令中携带立即数,该立即数包括有当前使用令牌的令牌号和待发送的数据的数据类型。当前使用令牌的令牌号可以使接收节点获知该数据的具体写入位置;待发送的数据的数据类型可以使接收节点获知应当对该数据进行何种相应处理。。
相应的,接收节点接收到发送节点发送的RDMA写操作指令。
步骤512,接收节点根据位置信息将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中的区域中;
接收节点在接收到发送节点发送的RDMA写操作指令之后,根据RDMA写操作指令中携带的当前使用令牌所对应的位置信息将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中的对应区域。
步骤513,接收节点将当前使用令牌在接收节点中的使用状态标记为已使用;
接收节点的上层在收到立即数时就说明已经将数据写入到接收节点中的接收内存中。接收节点根据立即数中包括的当前使用令牌的令牌号将该当前使用令牌在接收节点中的使用状态标记为已使用。比如,接收节点在收到包括当前使用令牌的令牌号N的立即数时,将该令牌N在接收节点中的使用状态标记为01,表示该令牌N所指向的接收节点中的区域已使用,并存储在第一状态内存中。
步骤514,接收节点根据立即数中包括的当前使用令牌的令牌号在接收内存中查找数据,并根据立即数中包括的数据的数据类型对查找到的数据进行相应处理;
接收节点的上层在接收到立即数之后,可以根据该立即数中包括的当前使用令牌的令牌号在接收内存中查找RDMA写操作所写入的数据,并根据立即数中包括的该数据的数据类型对查找到的数据进行相应处理。
步骤515,接收节点在处理数据完毕之后,将当前使用令牌在接收节点中的使用状态标记为已使用完毕;
接收节点在对发送节点写入的数据处理完毕之后,将当前使用令牌在接收节点中对应的使用状态标记为已使用完毕。比如,接收节点将令牌N在接收节点中的使用状态标记为已使用完毕。
步骤516,发送节点向接收节点发送RDMA读操作,该RDMA读操作用于读取每个令牌在接收节点中的使用状态;
在令牌的使用过程中,已经被使用完毕的令牌需要及时进行回收,所以发送节点需要根据预设规则向接收节点发送RDMA读操作,从而获得每个令牌在接收节点中最新的使用状态,以便发送节点根据每个令牌在接收节点中的使用状态来判断是否存在可回收的令牌。预设规则包括:在发送节点中的使用状态为可用的令牌总数低于阈值时,或者,每隔预定时间间隔。比如,发送节点中的使用状态为可用的令牌总数低于阈值30%时,或者每隔预定时间间隔5s时,发送节点向接收节点发送RDMA读操作,该RDMA读操作用于读取每个令牌在接收节点中的使用状态。
步骤517,发送节点根据读取到的使用状态更新在发送节点中存储的令牌信息中存储的每个令牌在接收节点中的使用状态;
发送节点读取到每个令牌在接收节点中的使用状态之后,将存储的每个令牌在接收节点中的使用状态更新为最新读取到的状态。比如,发送节点存储的令牌N在接收节点中的使用状态为可用,但是在接收节点处理数据完毕之后已经将该令牌N在接收节点中的使用状态标记为已使用完毕,所以发送节点读取到的该令牌N在接收节点中的使用状态为已使用完毕,在读取到该令牌N在接收节点中对应的已使用完毕的状态之后,发送节点将本地存储的该令牌N在接收节点中的可用状态更新为已使用完毕。
步骤518,发送节点检测在发送节点中的使用状态为已使用的令牌中是否存在可回收令牌;
发送节点更新存储的每个令牌在接收节点中的使用状态之后,检测在发送节点中的使用状态为已使用的令牌中是否存在可回收令牌。可回收令牌是在发送节点中的使用状态为已使用,在接收节点中的使用状态为已使用完毕的令牌。比如,发送节点检测在发送节点中的使用状态为已使用的令牌N是否符合可回收令牌的条件,即检测令牌N是否符合在发送节点中的使用状态为已使用,在接收节点中的使用状态为已使用完毕的条件。
步骤519,若发送节点检测结果为存在可回收令牌,则回收可回收令牌;
若发送节点检测到存在可回收令牌,则调用RDMA写操作将至少一个可回收令牌在发送节点中的使用状态和在接收节点中的使用状态均标记为可用。也即,发送节点调用RDMA写操作将至少一个可回收令牌在发送节点中的使用状态标记为可用;发送节点向接收节点发送用于回收令牌的RDMA写操作指令,用于回收令牌的RDMA写操作指令将该至少一个可回收令牌在接收节点中的使用状态标记为可用。比如,发送节点检测到上述令牌N符合在发送节点中的使用状态为已使用,在接收节点中的使用状态为已使用完毕的条件,则调用RDMA写操作将该令牌N在发送节点中的使用状态和在接收节点中的使用状态均标记为可用,实现令牌的回收。
综上所述,本发明实施例所提供的内存访问方法,通过发送节点向接收节点发送RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号触发接收节点对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率;还通过检测使用状态为已使用的令牌是否已经使用完毕来实现令牌的及时回收,以便可以再次被使用,达到了令牌被充分利用的效果,同时缩短了待发送的数据等待发送的时间,提高了数据发送的效率。
下述为本发明设备实施例,其中未详尽描述的内容,可以结合参考上述对应的方法实施例。
实施例五
请参考图6,其示出了本发明实施例五提供的发送节点的结构示意图。该发送节点,包括:令牌选择模块610和指令发送模块620;
令牌选择模块610,用于从预先存储的令牌集中选择当前使用令牌,所述令牌集包括至少一个令牌,且每个令牌都分别指向接收节点的接收内存中的一块区域;
指令发送模块620,用于向接收节点发送远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述令牌选择模块选择的所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号,以便所述接收节点接收所述RDMA写操作指令,根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中,并根据所述当前使用令牌的令牌号处理所述数据。
综上所述,本发明实施例所提供的发送节点,通过发送节点向接收节点发送RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号触发接收节点对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率。
实施例六
请参考图7,其示出了本发明实施例六提供的接收节点的结构示意图。该接收节点,包括:指令接收模块710、数据写入模块720和数据处理模块730;
指令接收模块710,用于接收发送节点发送的远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号;
数据写入模块720,用于根据所述指令接收模块710接收到的所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中;
数据处理模块730,用于根据所述指令接收模块720接收到的所述当前使用令牌的令牌号处理所述数据;
其中,所述当前使用令牌是所述发送节点从预先存储的令牌集中选择得到的,所述令牌集中的每个令牌都分别指向所述接收节点的接收内存中的一块区域。
综上所述,本发明实施例所提供的接收节点,通过接收节点接收发送节点发送的RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率。
实施例七
请参考图8,其示出了本发明实施例七提供的内存访问系统的结构示意图。该内存访问系统,包括:发送节点810和接收节点850。
所述发送节点810,包括:信息存储模块811、内存创建模块812、令牌选择模块813、数据准备模块814、指令发送模块815、状态标记模块816、回收检测模块817和令牌回收模块818。
信息存储模块811,用于接收并存储所述接收节点发送的令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态,所述使用状态包括可用、已使用和已使用完毕三种状态。
所述内存创建模块812,用于根据所述信息存储模块811接收到的所述令牌信息在所述发送节点中创建发送内存,并使得每个令牌指向所述发送内存中的一块区域。
所述令牌选择模块813,用于从预先存储的令牌集中选择当前使用令牌,所述令牌集包括至少一个令牌,且每个令牌都分别指向接收节点的接收内存中的一块区域。
所述数据准备模块814,用于将所述令牌选择模块813选择的当前使用令牌所指向的所述内存创建模块812创建的发送内存中的区域中的数据作为所述待发送的数据。
所述指令发送模块815,用于向接收节点发送远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述令牌选择模块选择的所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号,以便所述接收节点接收所述RDMA写操作指令,根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中,并根据所述当前使用令牌的令牌号处理所述数据。
所述状态标记模块816,用于将所述指令发送模块815使用后的所述当前使用令牌在所述发送节点中的使用状态标记为已使用。
所述回收检测模块817,用于检测在所述状态标记模块816标记后的所述发送节点中的使用状态为已使用的令牌中是否存在可回收令牌,所述可回收令牌是在所述发送节点中的使用状态为已使用,在所述接收节点中的使用状态为已使用完毕的令牌。
所述令牌回收模块818,用于若所述回收检测模块817的检测结果为存在可回收令牌,则回收所述回收检测模块817检测到的所述可回收令牌。
所述接收节点850,包括:第一创建模块851、令牌创建模块852、状态创建模块853、信息发送模块854、指令接收模块855、状态初标模块856、数据写入模块857、数据处理模块858、状态再标模块859和状态回收模块8591。
所述第一创建模块851,用于在本地内存中划分出一块内存区域作为RDMA操作过程中所需要的接收内存,所述接收内存用于存放由所述发送节点写入的所述数据。
所述令牌创建模块852,用于创建令牌,并为每个所述令牌分配接收内存区域,使得每个令牌指向所述分配的所述第一创建模块851创建的接收内存中的一块区域。
所述状态创建模块853,用于另外在所述本地内存中划分出一块区域作为支持所述RDMA操作的第一状态内存,所述第一状态内存用于存放所述接收内存中每个令牌的使用状态,所述使用状态是指所述令牌创建模块852创建的每个令牌所指向的所述接收内存中的区域的使用情况,所述使用状态可以包括可用、已使用和已使用完毕三种状态。
所述信息发送模块854,用于向所述发送节点发送令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态;以便所述发送节点接收并存储所述接收节点发送的令牌信息,根据所述令牌信息初始化每个令牌在所述发送节点中的使用状态,并在使用状态为可用的令牌中选择所述当前使用令牌;所述使用状态包括可用、已使用和已使用完毕三种状态。
所述指令接收模块855,用于接收发送节点发送的远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号;
所述状态初标模块856,用于在所述指令接收模块855接收到所述当前使用令牌的令牌号后,将所述当前使用令牌在所述接收节点中的使用状态标记为已使用
所述数据写入模块857,用于根据所述指令接收模块855接收到的所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中;
所述数据处理模块858,用于根据所述指令接收模块855接收到的所述当前使用令牌的令牌号处理所述数据;其中,所述当前使用令牌是所述发送节点从预先存储的令牌集中选择得到的,所述令牌集中的每个令牌都分别指向所述接收节点的接收内存中的一块区域。
所述状态再标模块859,用于在所述数据处理模块858处理所述数据完毕之后,将所述当前使用令牌在所述接收节点中的使用状态标记为已使用完毕。
所述状态回收模块8591,用于接收所述发送节点发送的用于回收令牌的RDMA写操作指令,所述用于回收令牌的RDMA写操作指令将至少一个可回收令牌在所述接收节点中的使用状态标记为可用。
综上所述,本发明实施例所提供的内存访问系统,通过发送节点向接收节点发送RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号触发接收节点对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率;还通过发送检测使用状态为已使用的令牌是否已经使用完毕来实现令牌的及时回收,以便可以再次被使用,达到了令牌被充分利用的效果,同时缩短了待发送的数据等待发送的时间,提高了数据发送的效率。
实施例八
请参考图9,其示出了本发明实施例八提供的内存访问系统的结构示意图。该内存访问系统,包括:发送节点810和接收节点850。
所述发送节点810,包括:信息存储模块811、内存创建模块812、状态创建模块8121、令牌选择模块813、数据准备模块814、指令发送模块815、状态标记模块816、状态读取模块8161、状态更新模块8162、回收检测模块817和令牌回收模块818。
信息存储模块811,用于接收并存储所述接收节点发送的令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态,所述使用状态包括可用、已使用和已使用完毕三种状态。
所述内存创建模块812,用于根据所述信息存储模块811接收到的所述令牌信息在所述发送节点中创建发送内存,并使得每个令牌指向所述发送内存中的一块区域。
所述状态创建模块8121,用于将每个令牌在所述发送节点中的使用状态初始化,以使每个令牌在所述发送节点中的使用状态与所述信息存储模块811接收到的所述令牌在所述接收节点中的使用状态一致。
所述令牌选择模块813,用于从预先存储的令牌集中选择当前使用令牌,所述令牌集包括至少一个令牌,且每个令牌都分别指向接收节点的接收内存中的一块区域。所述令牌选择模块813,具体用于根据所述待发送的数据的属性从在所述状态创建模块8121创建的所述发送节点中的使用状态为可用的令牌中选择当前使用令牌。
所述数据准备模块814,用于将所述令牌选择模块813选择的当前使用令牌所指向的所述内存创建模块812创建的发送内存中的区域中的数据作为所述待发送的数据。
所述指令发送模块815,用于向接收节点发送远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述令牌选择模块选择的所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号,以便所述接收节点接收所述RDMA写操作指令,根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中,并根据所述当前使用令牌的令牌号处理所述数据。
所述状态标记模块816,用于将所述指令发送模块815使用后的所述当前使用令牌在所述发送节点中的使用状态标记为已使用。
所述状态读取模块8161,用于向所述接收节点发送RDMA读操作指令,所述RDMA读操作指令用于读取每个令牌在所述接收节点中的使用状态;
所述状态更新模块8162,用于根据所述状态读取模块8161读取到的所述使用状态更新在所述发送节点中存储的所述令牌信息中每个令牌在所述接收节点中的使用状态。
所述回收检测模块817,用于检测在所述状态标记模块816标记后的所述发送节点中的使用状态为已使用的令牌中是否存在可回收令牌,所述可回收令牌是在所述发送节点中的使用状态为已使用,在所述接收节点中的使用状态为已使用完毕的令牌。所述回收检测模块817,用于根据所述状态更新模块8162更新后的令牌信息,检测在所述发送节点中的使用状态为已使用的令牌中是否存在在所述接收节点中的使用状态为已使用完毕的令牌。
所述令牌回收模块818,用于若所述回收检测模块817的检测结果为存在可回收令牌,则回收所述回收检测模块817检测到的所述可回收令牌。所述令牌回收模块,包括:本地标记单元8181和对端标记单元8182;所述本地标记单元8181,用于调用RDMA写操作将至少一个可回收令牌在所述发送节点中的使用状态标记为可用;所述对端标记单元8182,用于向所述接收节点发送用于回收令牌的RDMA写操作指令,所述用于回收令牌的RDMA写操作指令将所述至少一个可回收令牌在所述接收节点中的使用状态标记为可用。
所述指令发送模块815发送的所述当前使用令牌的令牌号位于所述RDMA写操作指令所携带的立即数中。
所述指令发送模块815,还用于在所述RDMA写操作指令的立即数中还携带所述数据的数据类型,以便所述接收节点根据所述立即数中携带的所述当前使用令牌的令牌号在所述接收内存中查找所述数据,并根据所述立即数中携带的所述数据的数据类型对查找到的所述数据进行相应处理。
所述接收节点850,包括:第一创建模块851、令牌创建模块852、状态创建模块853、信息发送模块854、指令接收模块855、状态初标模块856、数据写入模块857、数据处理模块858、状态再标模块859和状态回收模块8591。
所述第一创建模块851,用于在本地内存中划分出一块内存区域作为RDMA操作过程中所需要的接收内存,所述接收内存用于存放由所述发送节点写入的所述数据。
所述令牌创建模块852,用于创建令牌,并为每个所述令牌分配接收内存区域,使得每个令牌指向所述分配的所述第一创建模块851创建的接收内存中的一块区域。
所述状态创建模块853,用于另外在所述本地内存中划分出一块区域作为支持所述RDMA操作的第一状态内存,所述第一状态内存用于存放所述接收内存中每个令牌的使用状态,所述使用状态是指所述令牌创建模块852创建的每个令牌所指向的所述接收内存中的区域的使用情况,所述使用状态可以包括可用、已使用和已使用完毕三种状态。
所述信息发送模块854,用于向所述发送节点发送令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态;以便所述发送节点接收并存储所述接收节点发送的令牌信息,根据所述令牌信息初始化每个令牌在所述发送节点中的使用状态,并在使用状态为可用的令牌中选择所述当前使用令牌;所述使用状态包括可用、已使用和已使用完毕三种状态。
所述指令接收模块855,用于接收发送节点发送的远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号。所述指令接收模块855接收到的所述当前使用令牌的令牌号位于所述RDMA写操作指令所携带的立即数中。
所述状态初标模块856,用于在所述指令接收模块855接收到所述当前使用令牌的令牌号后,将所述当前使用令牌在所述接收节点中的使用状态标记为已使用
所述数据写入模块857,用于根据所述指令接收模块855接收到的所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中;
所述数据处理模块858,用于根据所述指令接收模块855接收到的所述当前使用令牌的令牌号处理所述数据;其中,所述当前使用令牌是所述发送节点从预先存储的令牌集中选择得到的,所述令牌集中的每个令牌都分别指向所述接收节点的接收内存中的一块区域。
所述状态再标模块859,用于在所述数据处理模块858处理所述数据完毕之后,将所述当前使用令牌在所述接收节点中的使用状态标记为已使用完毕。
所述状态回收模块8591,用于接收所述发送节点发送的用于回收令牌的RDMA写操作指令,所述用于回收令牌的RDMA写操作指令将至少一个可回收令牌在所述接收节点中的使用状态标记为可用。
优选地,所述指令接收模块855接收到的所述RDMA写操作指令的立即数中还携带有所述数据的数据类型,
所述数据处理模块858,包括:数据查找单元8581和数据处理单元8582;
所述数据查找单元8581,用于根据所述指令接收模块855接收到的所述RDMA写操作指令中携带的所述立即数中包括的所述当前使用令牌的令牌号在所述接收内存中查找所述数据;
所述数据处理单元8582,用于根据所述指令接收模块855接收到的所述RDMA写操作指令中携带的所述立即数中包括的所述数据的数据类型对所述数据查找单元查找到的所述数据进行相应处理。
综上所述,本发明实施例所提供的内存访问系统,通过发送节点向接收节点发送RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号触发接收节点对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率;还通过检测使用状态为已使用的令牌是否已经使用完毕来实现令牌的及时回收,以便可以再次被使用,达到了令牌被充分利用的效果,同时缩短了待发送的数据等待发送的时间,提高了数据发送的效率。
需要说明的是:上述实施例提供的内存访问系统在进行内存访问时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的内存访问系统与内存访问方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
实施例九
请参考图10,其示出了本发明实施例九提供的发送节点的结构方框图。该发送节点,包括:处理器1020和发送机1040。
所述处理器1020,用于从预先存储的令牌集中选择当前使用令牌,所述令牌集包括至少一个令牌,且每个令牌都分别指向接收节点的接收内存中的一块区域。
所述发送机1040,用于向接收节点发送远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号,以便所述接收节点接收所述RDMA写操作指令,根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中,并根据所述当前使用令牌的令牌号处理所述数据。
综上所述,本发明实施例所提供的发送节点,通过发送节点向接收节点发送RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号触发接收节点对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率。
实施例十
请参考图11,其示出了本发明实施例十提供的接收节点的结构方框图。该接收节点,包括:接收机1120和处理器1140。
所述接收机1120,用于接收发送节点发送的远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号。
所述处理器1140,用于根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中;
所述处理器1140,还用于根据所述当前使用令牌的令牌号处理所述数据;
其中,所述当前使用令牌是所述发送节点从预先存储的令牌集中选择得到的,所述令牌集中的每个令牌都分别指向所述接收节点的接收内存中的一块区域。
综上所述,本发明实施例所提供的接收节点,通过接收节点接收发送节点发送的RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率。
实施例十一
请参考图12,其示出了本发明实施例十一提供的内存访问系统的结构方框图。该内存访问系统,包括:发送节点1220和接收节点1240。
所述发送节点1220,包括:接收机1221、存储器1222、处理器1223和发送机1224。
所述接收机1221,用于接收所述接收节点发送的令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态,所述使用状态包括可用、已使用和已使用完毕三种状态;
所述存储器1222,用于存储所述接收机1221接收到的令牌信息。所述处理器1223,用于根据所述接收机1221接收到的所述令牌信息在所述发送节点中创建发送内存,并使得每个令牌指向所述发送内存中的一块区域。
所述处理器1223,还用于从所述存储器1222预先存储的令牌集中选择当前使用令牌,所述令牌集包括至少一个令牌,且每个令牌都分别指向接收节点的接收内存中的一块区域。具体地讲,所述处理器1223根据所述待发送的数据的属性从在所述发送节点中的使用状态为可用的令牌中选择当前使用令牌。
所述处理器1223,还用于将所述分配的所述当前使用令牌在所述发送节点中的使用状态标记为已使用。
所述发送机1224,用于向接收节点发送远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号,以便所述接收节点接收所述RDMA写操作指令,根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中,并根据所述当前使用令牌的令牌号处理所述数据。
所述处理器1223,还用于检测在所述标记后的所述发送节点中的使用状态为已使用的令牌中是否存在可回收令牌,所述可回收令牌是在所述发送节点中的使用状态为已使用,在所述接收节点中的使用状态为已使用完毕的令牌。
所述处理器1223,还用于若检测结果为存在可回收令牌,则回收所述所述检测模块检测到的所述可回收令牌。
所述接收节点1240,包括:处理器1241、发送机1242和接收机1243。
所述处理器1241,用于在本地内存中划分出一块内存区域作为RDMA操作过程中所需要的接收内存,所述接收内存用于存放由所述发送节点写入的所述数据。
所述处理器1241,还用于创建令牌,并为每个所述令牌分配接收内存区域,使得每个令牌指向所述分配的所述接收内存中的一块区域。
所述处理器1241,还用于另外在所述本地内存中划分出一块区域作为支持所述RDMA操作的第一状态内存,所述第一状态内存用于存放所述接收内存中每个令牌的使用状态,所述使用状态是指所述每个令牌所指向的所述接收内存中的区域的使用情况,所述使用状态可以包括可用、已使用和已使用完毕三种状态。
所述发送机1242,用于向所述发送节点发送令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点中的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态。
所述接收机1243,用于接收发送节点发送的远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号。其中,所述当前使用令牌是所述发送节点从预先存储的令牌集中选择得到的,所述令牌集中的每个令牌都分别指向所述接收节点的接收内存中的一块区域。
所述处理器1241,还用于根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中;
所述处理器1241,还用于将所述接收机1243接收到的所述当前使用令牌在所述接收节点中的使用状态标记为已使用。
所述处理器1241,还用于根据所述当前使用令牌的令牌号处理所述数据。
所述处理器1241,还用于处理所述数据完毕之后,将所述当前使用令牌在所述接收节点中的使用状态标记为已使用完毕。
所述接收机1243,还用于接收所述发送节点发送的用于回收令牌的RDMA写操作指令,所述用于回收令牌的RDMA写操作指令将至少一个可回收令牌在所述接收节点中的使用状态标记为可用。
综上所述,本发明实施例所提供的内存访问系统,通过发送节点向接收节点发送RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号触发接收节点对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率;还通过发送检测使用状态为已使用的令牌是否已经使用完毕来实现令牌的及时回收,以便可以再次被使用,达到了令牌被充分利用的效果,同时缩短了待发送的数据等待发送的时间,提高了数据发送的效率。
作为上一实施例的更为优选的实施例,本实施例中发送节点和接收节点的所包括的各个部分还具有如下功能:
所述发送节点1220,包括:接收机1221、存储器1222、处理器1223和发送机1224。
所述接收机1221,用于接收所述接收节点发送的令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态,所述使用状态包括可用、已使用和已使用完毕三种状态;
所述存储器1222,用于存储所述接收机1221接收到的令牌信息。
所述处理器1223,用于根据所述接收机1221接收到的所述令牌信息在所述发送节点中创建发送内存,并使得每个令牌指向所述发送内存中的一块区域。
所述处理器1223,用于将每个令牌在所述发送节点中的使用状态初始化,以使每个令牌在所述发送节点中的使用状态与所述令牌在所述接收节点中的使用状态一致。
所述处理器1223,还用于从所述存储器1222预先存储的令牌集中选择当前使用令牌,所述令牌集包括至少一个令牌,且每个令牌都分别指向接收节点的接收内存中的一块区域。具体地讲,所述处理器1223根据所述待发送的数据的属性从在所述发送节点中的使用状态为可用的令牌中选择当前使用令牌。
所述处理器1223,还用于将所述分配的所述当前使用令牌在所述发送节点中的使用状态标记为已使用。
所述处理器1223,还用于将所述当前使用令牌所指向的所述发送内存中的区域中的数据作为所述待发送的数据。
所述发送机1224,用于向接收节点发送远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号,以便所述接收节点接收所述RDMA写操作指令,根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中,并根据所述当前使用令牌的令牌号处理所述数据。
所述发送机1224,用于向所述接收节点发送RDMA读操作指令,所述RDMA读操作指令用于读取每个令牌在所述接收节点中的使用状态;
所述处理器1223,还用于根据读取到的所述使用状态更新在所述发送节点中存储的所述令牌信息中每个令牌在所述接收节点中的使用状态。
所述处理器1223,还用于根据所述更新后的令牌信息,检测在所述发送节点中的使用状态为已使用的令牌中是否存在在所述接收节点中的使用状态为已使用完毕的令牌。
所述处理器1223,还用于若检测结果为存在可回收令牌,则回收所述所述检测模块检测到的所述可回收令牌。具体来讲,所述处理器1223,用于调用RDMA写操作将至少一个可回收令牌在所述发送节点中的使用状态标记为可用;所述处理器1223,还用于向所述接收节点发送用于回收令牌的RDMA写操作指令,所述用于回收令牌的RDMA写操作指令将所述至少一个可回收令牌在所述接收节点中的使用状态标记为可用。
所述当前使用令牌的令牌号位于所述RDMA写操作指令所携带的立即数中,所述处理器1223,用于在所述RDMA写操作指令的立即数中还携带所述数据的数据类型,以便所述接收节点根据所述立即数中携带的所述当前使用令牌的令牌号在所述接收内存中查找所述数据,并根据所述立即数中携带的所述数据的数据类型对查找到的所述数据进行相应处理。
所述接收节点1240,包括:处理器1241、发送机1242和接收机1243。
所述处理器1241,用于在本地内存中划分出一块内存区域作为RDMA操作过程中所需要的接收内存,所述接收内存用于存放由所述发送节点写入的所述数据。
所述处理器1241,还用于创建令牌,并为每个所述令牌分配接收内存区域,使得每个令牌指向所述分配的所述接收内存中的一块区域。
所述处理器1241,还用于另外在所述本地内存中划分出一块区域作为支持所述RDMA操作的第一状态内存,所述第一状态内存用于存放所述接收内存中每个令牌的使用状态,所述使用状态是指所述每个令牌所指向的所述接收内存中的区域的使用情况,所述使用状态可以包括可用、已使用和已使用完毕三种状态。
所述发送机1242,用于向所述发送节点发送令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点中的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态。
所述接收机1243,用于接收发送节点发送的远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号。其中,所述当前使用令牌是所述发送节点从预先存储的令牌集中选择得到的,所述令牌集中的每个令牌都分别指向所述接收节点的接收内存中的一块区域。所述当前使用令牌的令牌号位于所述RDMA写操作指令所携带的立即数中。
所述处理器1241,还用于根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中;
所述处理器1241,还用于将所述接收机1243接收到的所述当前使用令牌在所述接收节点中的使用状态标记为已使用。
所述处理器1241,还用于根据所述当前使用令牌的令牌号处理所述数据。
所述处理器1241,还用于处理所述数据完毕之后,将所述当前使用令牌在所述接收节点中的使用状态标记为已使用完毕。
所述接收机1243,还用于接收所述发送节点发送的用于回收令牌的RDMA写操作指令,所述用于回收令牌的RDMA写操作指令将至少一个可回收令牌在所述接收节点中的使用状态标记为可用。
所述RDMA写操作指令的立即数中还携带有所述数据的数据类型,
所述处理器1241,还用于根据所述立即数中包括的所述当前使用令牌的令牌号在所述接收内存中查找所述数据;
所述处理器1241,还用于根据所述立即数中包括的所述数据的数据类型对查找到的所述数据进行相应处理。
综上所述,本发明实施例所提供的内存访问系统,通过发送节点向接收节点发送RDMA写操作指令来将待发送的数据写入当前使用令牌所指向的接收节点的接收内存中,然后通过RDMA写操作指令中携带的当前使用令牌的令牌号触发接收节点对数据进行处理,缓解了采用两种RDMA操作结合实现直接内存访问时的效率低下的问题,使得发送节点只需要发送一次RDMA写操作指令就可以完成发送节点对接收节点的直接内存访问过程,减少了远程直接内存访问过程中的通信延迟,提高了通信的效率;还通过检测使用状态为已使用的令牌是否已经使用完毕来实现令牌的及时回收,以便可以再次被使用,达到了令牌被充分利用的效果,同时缩短了待发送的数据等待发送的时间,提高了数据发送的效率。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (25)
1.一种内存访问方法,其特征在于,所述方法包括:
发送节点从预先存储的令牌集中选择当前使用令牌,所述令牌集包括至少一个令牌,且每个令牌都分别指向接收节点的接收内存中的一块区域;
所述发送节点向接收节点发送远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号,以便所述接收节点接收所述RDMA写操作指令,根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中,并根据所述当前使用令牌的令牌号处理所述数据,所述当前使用令牌的令牌号位于所述RDMA写操作指令所携带的立即数中。
2.根据权利要求1所述的内存访问方法,其特征在于,在所述发送节点从预先存储的令牌集中分配当前使用令牌之前,还包括:
所述发送节点接收并存储所述接收节点发送的令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态,所述使用状态包括可用、已使用和已使用完毕三种状态;
所述发送节点将每个令牌在所述发送节点中的使用状态初始化,以使每个令牌在所述发送节点中的使用状态与所述令牌在所述接收节点中的使用状态一致;
所述发送节点从预先存储的令牌集中选择当前使用令牌,包括:
所述发送节点根据所述待发送的数据的属性从在所述发送节点中的使用状态为可用的令牌中选择当前使用令牌。
3.根据权利要求2所述的内存访问方法,其特征在于,在所述发送节点从预先存储的令牌集中选择当前使用令牌之后,还包括:
所述发送节点将所述当前使用令牌在所述发送节点中的使用状态由可用标记为已使用;
所述发送节点检测在所述发送节点中的使用状态为已使用的令牌中是否存在可回收令牌,所述可回收令牌是在所述发送节点中的使用状态为已使用,在所述接收节点中的使用状态为已使用完毕的令牌;
若检测结果为存在可回收令牌,则所述发送节点回收所述可回收令牌。
4.根据权利要求3所述的内存访问方法,其特征在于,在所述发送节点检测在所述发送节点中的使用状态为已使用的令牌中是否存在可回收令牌之前,还包括:
所述发送节点向所述接收节点发送RDMA读操作指令,所述RDMA读操作指令用于读取每个令牌在所述接收节点中的使用状态;
所述发送节点根据读取到的所述使用状态更新在所述发送节点中存储的所述令牌信息中每个令牌在所述接收节点中的使用状态;
所述发送节点检测在所述发送节点中的使用状态为已使用的令牌中是否存在可回收令牌,包括:
所述发送节点根据所述更新后的令牌信息,检测在所述发送节点中的使用状态为已使用的令牌中是否存在在所述接收节点中的使用状态为已使用完毕的令牌。
5.根据权利要求3或4所述的内存访问方法,其特征在于,所述发送节点回收所述可回收令牌,包括:
所述发送节点调用RDMA写操作将至少一个可回收令牌在所述发送节点中的使用状态标记为可用;
所述发送节点向所述接收节点发送用于回收令牌的RDMA写操作指令,所述用于回收令牌的RDMA写操作指令将所述至少一个可回收令牌在所述接收节点中的使用状态标记为可用。
6.根据权利要求2至4任一所述的内存访问方法,其特征在于,在所述发送节点接收并存储所述接收节点发送的令牌信息之后,还包括:
所述发送节点根据所述令牌信息在所述发送节点中创建发送内存,并使得每个令牌指向所述发送内存中的一块区域;
所述发送节点向接收节点发送远程直接内存访问RDMA写操作指令之前,还包括:
所述发送节点将所述当前使用令牌所指向的所述发送内存中的区域中的数据作为所述待发送的数据。
7.根据权利要求1所述的内存访问方法,其特征在于,所述方法还包括:
在所述RDMA写操作指令的立即数中还携带所述数据的数据类型,以便所述接收节点根据所述立即数中携带的所述当前使用令牌的令牌号在所述接收内存中查找所述数据,并根据所述立即数中携带的所述数据的数据类型对查找到的所述数据进行相应处理。
8.一种内存访问方法,其特征在于,所述方法包括:
接收节点接收发送节点发送的远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号,所述当前使用令牌的令牌号位于所述RDMA写操作指令所携带的立即数中;
所述接收节点根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中;
所述接收节点根据所述当前使用令牌的令牌号处理所述数据;
其中,所述当前使用令牌是所述发送节点从预先存储的令牌集中选择得到的,所述令牌集中的每个令牌都分别指向所述接收节点的接收内存中的一块区域。
9.根据权利要求8所述的内存访问方法,其特征在于,在所述接收节点接收发送节点发送的远程直接内存访问RDMA写操作指令之前,还包括:
所述接收节点向所述发送节点发送令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态;以便所述发送节点接收并存储所述接收节点发送的令牌信息,根据所述令牌信息初始化每个令牌在所述发送节点中的使用状态,并在使用状态为可用的令牌中选择所述当前使用令牌;
所述使用状态包括可用、已使用和已使用完毕三种状态。
10.根据权利要求9所述的内存访问方法,其特征在于,在所述接收节点接收发送节点发送的远程直接内存访问RDMA写操作指令之后,还包括:
所述接收节点将所述当前使用令牌在所述接收节点中的使用状态标记为已使用;
所述接收节点根据所述当前使用令牌的令牌号处理所述数据之后,还包括;
所述接收节点在处理所述数据完毕之后,将所述当前使用令牌在所述接收节点中的使用状态标记为已使用完毕。
11.根据权利要求10所述的内存访问方法,其特征在于,所述将所述当前使用令牌在所述接收节点中的使用状态标记为已使用完毕之后,还包括:
所述接收节点接收所述发送节点发送的用于回收令牌的RDMA写操作指令,所述用于回收令牌的RDMA写操作指令将至少一个可回收令牌在所述接收节点中的使用状态标记为可用。
12.根据权利要求8所述的内存访问方法,其特征在于,所述RDMA写操作指令的立即数中还携带有所述数据的数据类型,
所述接收节点根据所述RDMA写操作指令中携带的所述当前使用令牌的令牌号处理所述数据,包括:
所述接收节点根据所述立即数中包括的所述当前使用令牌的令牌号在所述接收内存中查找所述数据;
所述接收节点根据所述立即数中包括的所述数据的数据类型对查找到的所述数据进行相应处理。
13.一种发送节点,其特征在于,所述发送节点包括:
令牌选择模块,用于从预先存储的令牌集中选择当前使用令牌,所述令牌集包括至少一个令牌,且每个令牌都分别指向接收节点的接收内存中的一块区域;
指令发送模块,用于向接收节点发送远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、所述令牌选择模块选择的所述当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号,以便所述接收节点接收所述RDMA写操作指令,根据所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中,并根据所述当前使用令牌的令牌号处理所述数据,所述指令发送模块发送的所述当前使用令牌的令牌号位于所述RDMA写操作指令所携带的立即数中。
14.根据权利要求13所述的发送节点,其特征在于,所述发送节点,还包括:信息存储模块和状态创建模块;
所述信息存储模块,用于接收并存储所述接收节点发送的令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态,所述使用状态包括可用、已使用和已使用完毕三种状态;
所述状态创建模块,用于将每个令牌在所述发送节点中的使用状态初始化,以使每个令牌在所述发送节点中的使用状态与所述信息存储模块接收到的所述令牌在所述接收节点中的使用状态一致;
所述令牌选择模块,用于根据所述待发送的数据的属性从在所述状态创建模块创建的所述发送节点中的使用状态为可用的令牌中选择当前使用令牌。
15.根据权利要求14所述的发送节点,其特征在于,所述发送节点,还包括:状态标记模块、回收检测模块和令牌回收模块;
所述状态标记模块,用于将所述指令发送模块使用后的所述当前使用令牌在所述发送节点中的使用状态由可用标记为已使用;
所述回收检测模块,用于检测在所述发送节点中的使用状态为已使用的令牌中是否存在可回收令牌,所述可回收令牌是在所述发送节点中的使用状态为已使用,在所述接收节点中的使用状态为已使用完毕的令牌;
所述令牌回收模块,用于若所述回收检测模块的检测结果为存在可回收令牌,则回收所述可回收令牌。
16.根据权利要求15所述的发送节点,其特征在于,所述发送节点,还包括:状态读取模块和状态更新模块;
所述状态读取模块,用于向所述接收节点发送RDMA读操作指令,所述RDMA读操作指令用于读取每个令牌在所述接收节点中的使用状态;
所述状态更新模块,用于根据所述状态读取模块读取到的所述使用状态更新在所述发送节点中存储的所述令牌信息中每个令牌在所述接收节点中的使用状态;
所述回收检测模块,用于根据所述更新后的令牌信息,检测在所述发送节点中的使用状态为已使用的令牌中是否存在在所述接收节点中的使用状态为已使用完毕的令牌。
17.根据权利要求15或16所述的发送节点,其特征在于,所述令牌回收模块,包括:本地标记单元和对端标记单元;
所述本地标记单元,用于调用RDMA写操作将至少一个可回收令牌在所述发送节点中的使用状态标记为可用;
所述对端标记单元,用于向所述接收节点发送用于回收令牌的RDMA写操作指令,所述用于回收令牌的RDMA写操作指令将所述至少一个可回收令牌在所述接收节点中的使用状态标记为可用。
18.根据权利要求14至16任一所述的发送节点,其特征在于,所述发送节点,还包括:内存创建模块和数据准备模块;
所述内存创建模块,用于根据所述信息存储模块存储的所述令牌信息在所述发送节点中创建发送内存,并使得每个令牌指向所述发送内存中的一块区域;
所述数据准备模块,用于将所述当前使用令牌所指向的所述发送内存中的区域中的数据作为所述待发送的数据。
19.根据权利要求13所述的发送节点,其特征在于,所述指令发送模块,还用于在所述RDMA写操作指令的立即数中还携带所述数据的数据类型,以便所述接收节点根据所述立即数中携带的所述当前使用令牌的令牌号在所述接收内存中查找所述数据,并根据所述立即数中携带的所述数据的数据类型对查找到的所述数据进行相应处理。
20.一种接收节点,其特征在于,所述接收节点,包括:
指令接收模块,用于接收发送节点发送的远程直接内存访问RDMA写操作指令,所述RDMA写操作指令携带有待发送的数据、当前使用令牌所指向的所述接收节点的接收内存中的区域的位置信息和所述当前使用令牌的令牌号,所述指令接收模块接收到的所述当前使用令牌的令牌号位于所述RDMA写操作指令所携带的立即数中;
数据写入模块,用于根据所述指令接收模块接收到的所述位置信息将所述待发送的数据写入所述当前使用令牌所指向的所述接收节点的接收内存中的区域中;
数据处理模块,用于根据所述指令接收模块接收到的所述当前使用令牌的令牌号处理所述数据;
其中,所述当前使用令牌是所述发送节点从预先存储的令牌集中选择得到的,所述令牌集中的每个令牌都分别指向所述接收节点的接收内存中的一块区域。
21.根据权利要求20所述的接收节点,其特征在于,所述接收节点,还包括:信息发送模块;
所述信息发送模块,用于向所述发送节点发送令牌信息,所述令牌信息包括至少一个令牌的令牌号、每个令牌所指向的所述接收节点的接收内存中的区域的位置信息和每个令牌在所述接收节点中的使用状态;以便所述发送节点接收并存储所述接收节点发送的令牌信息,根据所述令牌信息初始化每个令牌在所述发送节点中的使用状态,并在使用状态为可用的令牌中选择所述当前使用令牌;
所述使用状态包括可用、已使用和已使用完毕三种状态。
22.根据权利要求21所述的接收节点,其特征在于,所述接收节点,还包括:状态初标模块和状态再标模块;
所述状态初标模块,用于在所述指令接收模块接收到所述当前使用令牌的令牌号后,将所述当前使用令牌在所述接收节点中的使用状态标记为已使用;
所述状态再标模块,用于在所述数据处理模块处理所述数据完毕之后,将所述当前使用令牌在所述接收节点中的使用状态标记为已使用完毕。
23.根据权利要求22所述的接收节点,其特征在于,所述接收节点,还包括:状态回收模块;
所述状态回收模块,用于接收所述发送节点发送的用于回收令牌的RDMA写操作指令,所述用于回收令牌的RDMA写操作指令将至少一个可回收令牌在所述接收节点中的使用状态标记为可用。
24.根据权利要求20所述的接收节点,其特征在于,所述指令接收模块接收到的所述RDMA写操作指令的立即数中还携带有所述数据的数据类型,
所述数据处理模块,包括:数据查找单元和数据处理单元;
所述数据查找单元,用于根据所述指令接收模块接收到的所述RDMA写操作指令中携带的所述立即数中包括的所述当前使用令牌的令牌号在所述接收内存中查找所述数据;
所述数据处理单元,用于根据所述指令接收模块接收到的所述RDMA写操作指令中携带的所述立即数中包括的所述数据的数据类型对所述数据查找单元查找到的所述数据进行相应处理。
25.一种内存访问系统,其特征在于,包括发送节点和接收节点;
所述发送节点是如权利要求13至权利要求19任一所述的发送节点;
所述接收节点是如权利要求20至权利要求24任一所述的接收节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310101248.2A CN103227778B (zh) | 2013-03-26 | 2013-03-26 | 内存访问方法、设备和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310101248.2A CN103227778B (zh) | 2013-03-26 | 2013-03-26 | 内存访问方法、设备和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103227778A CN103227778A (zh) | 2013-07-31 |
CN103227778B true CN103227778B (zh) | 2016-09-14 |
Family
ID=48838039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310101248.2A Active CN103227778B (zh) | 2013-03-26 | 2013-03-26 | 内存访问方法、设备和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103227778B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645994A (zh) * | 2013-11-05 | 2014-03-19 | 华为技术有限公司 | 一种数据处理方法及设备 |
CN104679688B (zh) * | 2013-12-02 | 2017-12-15 | 华为技术有限公司 | 数据访问方法、装置及系统 |
CN106302201A (zh) * | 2015-05-14 | 2017-01-04 | 华为技术有限公司 | 流量控制方法、设备和系统 |
US10725963B2 (en) * | 2015-09-12 | 2020-07-28 | Microsoft Technology Licensing, Llc | Distributed lock-free RDMA-based memory allocation and de-allocation |
CN105426321B (zh) * | 2015-11-13 | 2018-11-16 | 上海交通大学 | 采用远程位置信息的rdma友好缓存方法 |
CN107798016B (zh) * | 2016-09-06 | 2019-06-07 | 北京百度网讯科技有限公司 | 用于机器人操作系统的数据传输方法和装置 |
CN107205033B (zh) * | 2017-06-02 | 2020-03-24 | 南京大学 | 以无锁方式共享rdma连接的方法 |
CN109426631A (zh) * | 2017-08-30 | 2019-03-05 | 深圳市中兴微电子技术有限公司 | 一种基于rdma的通信方法、装置及存储介质 |
CN108319428A (zh) * | 2017-12-29 | 2018-07-24 | 杭州华为数字技术有限公司 | 一种数据读取的方法及装置 |
CN109861967A (zh) * | 2018-12-10 | 2019-06-07 | 中国人民银行清算总中心 | 基于Spark Shuffle的远程直接内存访问系统 |
CN111400213B (zh) * | 2019-09-29 | 2022-02-18 | 杭州海康威视系统技术有限公司 | 传输数据的方法、装置及系统 |
CN114025013B (zh) * | 2021-09-30 | 2023-01-06 | 联想(北京)有限公司 | 一种信息处理方法、装置及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6615282B1 (en) * | 1999-05-21 | 2003-09-02 | Intel Corporation | Adaptive messaging |
CN101539902A (zh) * | 2009-05-05 | 2009-09-23 | 中国科学院计算技术研究所 | 多计算机系统中节点的dma设备及通信方法 |
CN101599991A (zh) * | 2009-07-07 | 2009-12-09 | 浪潮电子信息产业股份有限公司 | 一种基于高速通信协议的提升网络文件系统性能的方法 |
CN102404398A (zh) * | 2011-11-17 | 2012-04-04 | 曙光信息产业(北京)有限公司 | 一种支持多客户端的rdma消息发送方法 |
CN102404212A (zh) * | 2011-11-17 | 2012-04-04 | 曙光信息产业(北京)有限公司 | 一种基于InfiniBand网络的跨平台RDMA通信方法 |
CN102546612A (zh) * | 2011-12-23 | 2012-07-04 | 华中科技大学 | 用户态下基于rdma协议的远程过程调用实现方法 |
-
2013
- 2013-03-26 CN CN201310101248.2A patent/CN103227778B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6615282B1 (en) * | 1999-05-21 | 2003-09-02 | Intel Corporation | Adaptive messaging |
CN101539902A (zh) * | 2009-05-05 | 2009-09-23 | 中国科学院计算技术研究所 | 多计算机系统中节点的dma设备及通信方法 |
CN101599991A (zh) * | 2009-07-07 | 2009-12-09 | 浪潮电子信息产业股份有限公司 | 一种基于高速通信协议的提升网络文件系统性能的方法 |
CN102404398A (zh) * | 2011-11-17 | 2012-04-04 | 曙光信息产业(北京)有限公司 | 一种支持多客户端的rdma消息发送方法 |
CN102404212A (zh) * | 2011-11-17 | 2012-04-04 | 曙光信息产业(北京)有限公司 | 一种基于InfiniBand网络的跨平台RDMA通信方法 |
CN102546612A (zh) * | 2011-12-23 | 2012-07-04 | 华中科技大学 | 用户态下基于rdma协议的远程过程调用实现方法 |
Non-Patent Citations (2)
Title |
---|
一种改进的高性能远程内存直接访问 ( RDMA)的实现;徐志斌等;《计算应用于软件》;20080115;第25卷(第1期);正文第2章及图1 * |
基于双口 RAM IDT7025的双机通讯设计;侯小强等;《机械制造与自动化》;20080420;第37卷(第2期);正文第1章 * |
Also Published As
Publication number | Publication date |
---|---|
CN103227778A (zh) | 2013-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103227778B (zh) | 内存访问方法、设备和系统 | |
CN104135715B (zh) | 一种位置服务的实现方法、装置,及系统 | |
CN104462549B (zh) | 一种数据处理方法和装置 | |
CN105242882B (zh) | 时序数据的帧存储方法及装置、时序数据查询方法及装置 | |
CN108769111A (zh) | 一种服务器连接方法、计算机可读存储介质及终端设备 | |
CN103336782B (zh) | 一种关系型分布式数据库系统 | |
CN104298541A (zh) | 云存储系统的数据分布算法及其装置 | |
CN104504003A (zh) | 图数据的搜索方法和装置 | |
CN103729447A (zh) | 一种数据库快速检索的方法 | |
JP2009522660A5 (zh) | ||
CN103886109B (zh) | 一种实现数据库行锁的方法及装置 | |
CN104539502B (zh) | 一种自定义添加modbus设备的方法 | |
CN104778258A (zh) | 一种面向协议数据流的数据抽取方法 | |
CN108139882A (zh) | 针对网络装置实施阶层分布式链接列表的系统及方法 | |
CN103631933A (zh) | 一种面向分布式去重系统的数据路由方法 | |
CN109542857A (zh) | 审计日志存储方法、查询方法、装置及相关设备 | |
CN109242458A (zh) | 基于区块链的信息管理方法及相关设备 | |
CN104615684A (zh) | 一种海量数据通信并发处理方法及系统 | |
CN105302838B (zh) | 分类方法、查找方法和设备 | |
CN106843899A (zh) | 一种基于Node.js平台的网页开发方法及装置 | |
CN105791370B (zh) | 一种数据处理方法及相关服务器 | |
CN110096458A (zh) | 基于神经网络的命名数据网内容存储池数据检索方法 | |
CN111046106A (zh) | 缓存数据同步方法、装置、设备及介质 | |
CN104484619B (zh) | 一种解决客户端多逻辑通道访问pkcs#15文件冲突的方法 | |
CN105930354A (zh) | 存储模型转换方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |