CN115964319A - 远程直接内存访问的数据处理方法及相关产品 - Google Patents
远程直接内存访问的数据处理方法及相关产品 Download PDFInfo
- Publication number
- CN115964319A CN115964319A CN202310067975.5A CN202310067975A CN115964319A CN 115964319 A CN115964319 A CN 115964319A CN 202310067975 A CN202310067975 A CN 202310067975A CN 115964319 A CN115964319 A CN 115964319A
- Authority
- CN
- China
- Prior art keywords
- work queue
- memory
- data
- target
- queue
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了一种远程直接内存访问的数据处理方法及相关产品,所述方法应用于远程内存访问系统中的第一终端设备,所述方法包括:检测到针对第二终端设备的远程直接内存访问操作的执行指令,执行远程直接内存访问操作,并获取远程直接内存访问操作对应的多个内存访问工作队列;根据收发工作队列的队列深度执行内存资源分配操作,得到至少一个内存资源信息;接收来自第二终端设备发送的至少一组访问数据;针对至少一组访问数据中的每组访问数据,执行存储操作。如此,本申请通过事先进行内存资源分配的方式,使得每个收发工作队列对应的访问数据都独享一个数据缓存工作队列进行数据存储,提高了终端设备进行访问数据的存储和处理的稳定性和效率。
Description
技术领域
本申请属于数据传输技术领域,具体涉及一种远程直接内存访问的数据处理方法及相关产品。
背景技术
RDMA(Remote Direct Memory Access,远程直接内存访问)具有高带宽、低时延等特点,采用RDMA通信技术可以提高系统吞吐量、降低系统的网络通信延迟,节省了计算机中宝贵的CPU(Central Processing Unit,中央处理器)资源,因此,在目前的数据中心存储与计算网络领域中已有广泛应用。
但是,在现有技术中,在远程计算机向本地计算机传回请求的内存访问数据后,本地计算机会将内存访问数据存储至芯片内存中。因此,在内存访问数据的数量过多,且芯片内存资源有限时,将会导致本地计算机的数据处理过程出现异常。
发明内容
本申请提供了一种远程直接内存访问的数据处理方法及相关产品,以期提高终端设备处理远程直接内存访问操作得到的访问数据的效率和稳定性。
第一方面,本申请实施例提供了一种远程直接内存访问的数据处理方法,应用于远程内存访问系统中的第一终端设备,所述远程内存访问系统包括所述第一终端设备和第二终端设备,所述方法包括:
检测到针对所述第二终端设备的远程直接内存访问操作的执行指令,执行所述远程直接内存访问操作,并获取当前次远程直接内存访问操作对应的多个内存访问工作队列,所述内存访问工作队列是指用于储存所述第一终端设备中的软件下发给硬件的工作请求的队列,所述多个内存访问工作队列包括至少一个收发工作队列,单个收发工作队列包括单个内存接收队列和单个内存发送队列,所述单个内存接收队列或者内存发送队列用于存放工作队列元素,单个工作队列元素用于表征单个工作请求的请求信息;
根据所述至少一个收发工作队列的队列深度执行内存资源分配操作,得到至少一个内存资源信息,并将每个内存资源信息存储于对应的收发工作队列的工作队列信息中,所述至少一个内存资源信息和所述至少一个收发工作队列一一对应,所述队列深度用于表征对应的收发工作队列存储的工作队列元素的个数,所述内存资源分配操作是指分配所述第一终端设备中空闲的主机内存以用来存储执行所述远程直接内存访问操作而得到的访问数据的操作,单个内存资源信息用于指示对应的单个数据缓存工作队列,所述数据缓存工作队列用于缓存对应收发工作队列关联的访问数据,所述数据缓存工作队列是指排列有多个缓存工作队列元素的工作队列,所述工作队列信息用于存储对应的收发工作队列所关联的信息;
接收来自所述第二终端设备响应所述远程直接内存访问操作而发送的至少一组访问数据,所述至少一组访问数据和所述至少一个收发工作队列一一对应;
针对所述至少一组访问数据中的每组访问数据,执行如下操作:
确定与当前处理的访问数据关联的目标内存资源信息;
根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素;
将所述当前处理的访问数据存储至所述至少一个目标缓存工作队列元素。
第二方面,本申请实施例提供了一种远程直接内存访问的数据处理装置,应用于远程内存访问系统中的第一终端设备,所述远程内存访问系统包括所述第一终端设备和第二终端设备,所述装置包括:
第一执行单元,用于检测到针对所述第二终端设备的远程直接内存访问操作的执行指令,执行所述远程直接内存访问操作,并获取当前次远程直接内存访问操作对应的多个内存访问工作队列,所述内存访问工作队列是指用于储存所述第一终端设备中的软件下发给硬件的工作请求的队列,所述多个内存访问工作队列包括至少一个收发工作队列,单个收发工作队列包括单个内存接收队列和单个内存发送队列,所述单个内存接收队列或者内存发送队列用于存放工作队列元素,单个工作队列元素用于表征单个工作请求的请求信息;
资源分配单元,用于根据所述至少一个收发工作队列的队列深度执行内存资源分配操作,得到至少一个内存资源信息,并将每个内存资源信息存储于对应的收发工作队列的工作队列信息中;
接收单元,用于接收来自所述第二终端设备响应所述远程直接内存访问操作而发送的至少一组访问数据,所述至少一组访问数据和所述至少一个收发工作队列一一对应;
第二执行单元,用于针对所述至少一组访问数据中的每组访问数据,执行如下操作:确定与当前处理的访问数据关联的目标内存资源信息;根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素;将所述当前处理的访问数据存储至所述至少一个目标缓存工作队列元素。
第三方面,本申请实施例提供了一种终端设备,包括处理器、存储器以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如本申请实施例第一方面中的步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序/指令,所述计算机程序/指令被处理器执行时实现本申请实施例第一方面中的步骤。
第五方面,本申请实施例提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如本申请实施例第一方面中所描述的部分或全部步骤。
可以看出,通过获取第一终端设备当前次执行的远程直接内存访问操作对应的至少一个收发工作队列,再根据至少一个收发工作队列的队列深度执行内存资源分配操作,得到至少一个内存资源信息,为其分配主机的空闲内存资源;最后,在接收到第二终端设备响应远程直接内存访问操作而发送的至少一组访问数据后,将至少一组访问数据存储至关联的目标内存资源信息确定出的至少一个目标缓存工作队列元素中。如此,相对于将内存访问数据存储至芯片内部资源的现有技术,本申请提出通过事先将空闲的主机内存资源分配给收发工作队列的方式,使得每个收发工作队列对应的访问数据都独享一个数据缓存工作队列以进行数据存储,提高了终端设备进行访问数据的存储和处理的稳定性和效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种远程内存访问系统的结构框图;
图2是本申请实施例提供的一种远程直接内存访问的数据处理方法的流程示意图;
图3是本申请实施例提供的一种内存访问工作队列的结构示意图;
图4是本申请实施例提供的一种收发工作队列的结构示意图;
图5是本申请实施例提供的一种第一终端设备和第二终端设备的交互示意图;
图6是本申请实施例提供的一种第一资源信息寻址的示意图;
图7是本申请实施例提供的一种第二资源信息寻址的示意图;
图8是本申请实施例提供的一种远程直接内存访问的数据处理装置的功能单元组成框图;
图9是本申请实施例提供的另一种远程直接内存访问的数据处理装置的功能单元组成框图;
图10是本申请实施例提供的一种终端设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参阅图1,图1是本申请实施例提供的一种远程内存访问系统的结构框图。如图1所示,远程内存访问系统100包括第一终端设备110和第二终端设备120,第一终端设备110和第二终端设备120通信连接。第一终端设备通过执行远程直接内存访问操作获取第二终端设备的内存访问数据,且在第一终端设备执行远程直接内存访问操作时,第一终端设备根据远程直接内存访问操作对应的至少一个收发工作队列进行内存资源分配操作。待第一终端设备接收到第二终端设备响应远程直接内存访问操作而发送的至少一组访问数据后,将至少一组访问数据存储至分配好的至少一个目标缓存工作队列中。其中,第一终端设备110和第二终端设备120可以是平板电脑,笔记本电脑等计算机设备。一个第一终端设备110可以用同时对应多个第二终端设备120,或者该远程内存访问系统100中包括多个第一终端设备110,每个第一终端设备110对应一个或多个第二终端设备120。
基于此,本申请实施例提供了一种远程直接内存访问的数据处理方法,下面结合附图对本申请实施例进行详细说明。
请参阅图2,图2是本申请实施例提供的一种远程直接内存访问的数据处理方法的流程示意图,所述方法应用于如图1所述的远程内存访问系统100中的第一终端设备110,所述远程内存访问系统100包括第一终端设备110和第二终端设备120;所述方法包括:
步骤201,检测到针对第二终端设备的远程直接内存访问操作的执行指令,执行远程直接内存访问操作,并获取当前次远程直接内存访问操作对应的多个内存访问工作队列。
其中,所述内存访问工作队列是指用于储存所述第一终端设备中的软件下发给硬件的工作请求的队列,所述多个内存访问工作队列包括至少一个收发工作队列,单个收发工作队列包括单个内存接收队列和单个内存发送队列,所述单个内存接收队列或者内存发送队列用于存放工作队列元素,单个工作队列元素用于表征单个工作请求的请求信息。
其中,远程直接内存访问操作就是指的RDMA操作,也就是从一台计算机的内存到另一台计算机的内存的直接访问,此过程中不涉及任何一方的操作系统,同时,此过程也无需在终端设备的应用程序内存和操作系统的数据缓冲区之间拷贝数据。需要知道的是,本地计算机也就是第一终端在执行RDMA操作时,有个最重要的概念之一就是内存访问工作队列(Work Queue,WQ),请参阅图3,图3是本申请实施例提供的一种内存访问工作队列的结构示意图,如图所示,内存访问工作队列是一个用于储存工作请求的队列,这个工作请求是第一终端设备中的软件下达给硬件的“工作”,硬件会根据软件下达的工作请求完成任务。内存访问工作队列中存放用软件给硬件下达的工作队列元素,可以将工作队列元素理解成一种“任务说明”,这份说明中包含了软件所希望硬件去做的任务以及有关这个任务的详细信息。比如,某一份任务是这样的:“我想把位于地址0x12345678的长度为10字节的数据发送给对面的节点”,硬件接到任务之后,就会去内存中取数据,组装数据包,然后发送。一个内存访问工作队列中可以包含很多个工作队列元素,也可以没有工作队列元素。基于这个内存访问工作队列的概念,接着介绍收发工作队列(Queue Pair,QP)、内存接收队列(SendQueue,SQ)和内存发送队列(Receive Queue,RQ)的概念,请参阅图4,图4是本申请实施例提供的一种收发工作队列的结构示意图,如图4所示,任何通信过程都有收发两端,其中图4的左边是发送端的收发工作队列,右边是接收端的收发工作队列,其中,每个收发工作队列都包括了一个内存接收队列和内存发送队列,左边的收发工作队列中的内存发送队列中包含了两个工作队列元素,也就是说发送端的软件给硬件下达了两个发送工作请求,其中一个发送工作请求的内容可以是“请把内存中的地址为0x111111111的长度为10字节的数据发送给节点B”。那么在这个工作请求中,发送端的硬件则会从内存中调取这个长度为10字节的数据进行通信发送给节点B。此时我们默认这个接收端为节点B,那么在这个接收端接收了这个数据后,它的软件给硬件下达了一个内存接收队列中的工作请求,它的内容可以是“请准备接收数据,把收到的数据放到地址为0x222222222的内存区域中”,之后,接收端的硬件则会将发送端发送过来的10字节的数据存储到特定的内存区域中。简单的来说,内存接收队列专门用来存放发送任务,内存发送队列专门用来存放接收任务。在一次发送—接收流程中,发送端需要把表示一次发送任务的工作队列元素放到内存接收队列里面。同样的,接收端软件需要给硬件下发一个表示接收任务的工作队列元素,这样硬件才知道收到数据之后放到内存中的哪个位置。
其中,需要注意的是,在一次远程直接内存访问操作中可以存在多个收发工作队列,它们可以是同时被硬件处理,也可以是不同时被硬件处理,但是在同一个内存访问工作队列中,工作队列元素是按照顺序被硬件消耗完成的,这也是队列的概念,即一种先进先出的数据结构,软件第一个下达的工作队列元素,也会被硬件第一个进行处理。
步骤202,根据至少一个收发工作队列的队列深度执行内存资源分配操作,得到至少一个内存资源信息,并将每个内存资源信息存储于对应的收发工作队列的工作队列信息(QPC)中。
其中,所述至少一个内存资源信息和所述至少一个收发工作队列一一对应,所述队列深度用于表征对应的收发工作队列存储的工作队列元素的个数,所述内存资源分配操作是指分配所述第一终端设备中空闲的主机内存以用来存储执行所述远程直接内存访问操作而得到的访问数据的操作,单个内存资源信息用于指示对应的单个数据缓存工作队列,所述数据缓存工作队列用于缓存对应收发工作队列关联的访问数据,所述数据缓存工作队列是指排列有多个缓存工作队列元素的工作队列,所述工作队列信息用于存储对应的收发工作队列所关联的信息。
其中,数据缓存工作队列(Read/Atomic Response&Ack Queue,RAQ)是第一终端设备中的芯片内部由芯片自己维护的工作队列,它用来缓存由远程内存访问系统中的第二终端设备发送来的访问数据,这个访问数据是由第一终端设备针对第二终端设备执行远程直接内存访问操作而得到的。芯片可以是常见的用于通讯的网卡,也可以是其他的芯片设备,此次不作限定,当芯片缓存了数据后,后级模块将会根据它们的需要去读取数据缓存工作队列中的数据去消耗。需要注意的是,在现有技术中,芯片是采用空闲链表(free list)的形式实现数据缓存工作队列缓存数据的处理的,其特点就是单次的远程直接内存访问操作中的所有收发工作队列共享一个数据缓存工作队列。空闲链表简而言之就是将芯片自己内部的内存中的所有空间内存块以链表的形式组织起来。内存分配时,扫描free list的各个空闲内存块,从中找到一个大小满足要求的内存块,并将该内存块从free list中移除。内存释放时,释放的内存块被重新插入到free list中。但这种在芯片内部的空闲内存采用free list的方式存在着一定不足,比如,free list的形式占用芯片内部资源,并且在芯片内部资源有限的情况下,效果不佳,在收发工作队列的数量、收发工作队列队列深度达到一定阈值时,容易造成数据缓存工作队列溢出,从而造成收发工作队列的发送/接收出现异常,且freelist形式实现、管理复杂,影响发送接收性能,多收发工作队列同时操作freelist时,性能劣化。因此,在本申请提供的远程直接内存访问的数据处理方法中,根据收发工作队列的队列深度执行的内存资源分配操作是分配的第一终端设备中空闲的主机内存,这样就可以让每个收发工作队列独享一个对应的数据缓存工作队列。并且,通过将分配给每个收发工作队列的内存资源信息存储于对应的收发工作队列的工作队列信息,使得后续存储的过程中,每个收发工作队列对应的访问数据都能够找到对应分配好的空闲内存进行储存。且由于在主机内存分配资源,在存储的空间方面不会存在内存瓶颈,节省了芯片内部资源,不影响芯片自身的运行,相较于现有技术而言,更简单、更稳定可靠,效率更高。
在一个可能的示例中,第一终端设备包括驱动、主机内存、芯片和计算机系统总线,其中驱动、主机内存、芯片分别与计算机系统总线连接。基于本申请提供的远程直接内存访问的数据处理方法,驱动中的驱动软件用于申请收发工作队列的内存,即根据收发工作队列的队列深度执行内存资源分配操作,且驱动软件在分配时会选择内存连续分配和内存不连续分配中的任意一种进行内存分配,并生成对应的内存资源信息存储在工作队列信息中。在分配好之后,待芯片中的远程内存访问引擎的接收端接收到第二终端设备传回的数据后,芯片将这些访问数据根据对应内存资源信息缓存至第一终端设备的主机内存中,即芯片起到了对数据缓存工作队列进行管理,并进行数据存储操作。
步骤203,接收来自第二终端设备响应远程直接内存访问操作而发送的至少一组访问数据。
其中,所述至少一组访问数据和所述至少一个收发工作队列一一对应。
其中,正如前面提到的那样,一个收发工作队列中包含有一个或者多个工作请求,第一终端设备中的硬件根据工作请求去进行访问第二终端设备内存的操作,第一终端设备从第二终端设备中获取到的想要访问的数据就是访问数据,这是第二终端设备响应于第一终端设备的远程直接内存访问操作而发送的数据。
其中,请参阅图5,图5是本申请实施例提供的一种第一终端设备和第二终端设备的交互示意图,如图5所示,其中,左边的是第二终端设备的结构,右边的是第一终端设备的结构,每个终端设备中包含了中央处理器(即CPU),主机内存和芯片(比如网卡),其中,中央处理器、主机内存和芯片都连接在终端设备的计算机系统的总线上,第一终端设备和第二终端设备之间通过网卡进行通信交互。基于本申请提供的远程直接内存访问操作,请注意图中的虚线的箭头,在右边的第一终端设备执行了远程直接内存访问操作后,第二终端设备中的主机内存中的一段数据,复制到第一终端设备的主机内存中,两端的CPU几乎不用参与数据传输过程(只参与控制面)。第二终端设备的网卡直接拷贝数据到内部存储空间,然后硬件进行各层报文的组装后,通过物理链路发送到对端网卡。对端的网卡收到数据后,剥离各层报文头和校验码,通过将访问数据直接存储到事先分配好的主机内存中,也就是分配好的数据缓存工作队列中。
在一个可能的示例中,所述访问数据包括至少一组数据,所述至少一组数据和所述至少一个目标缓存工作队列元素一一对应;所述至少一组数据的类型包括以下至少一种:内存数据、操作成功回复指令、操作失败回复指令;以及,所述工作请求的类型包括以下至少一种:内存读取操作、内存改写操作、原子操作。
其中,由于一组访问数据对应的一个收发工作队列中可能包含多个工作队列元素,即包含有多个工作请求,那么访问数据中就会包括有可能不止一组数据,数据的类型根据工作情况的类型分为了内存数据、操作成功回复指令、操作失败回复指令;工作请求的类型这就包括了内存读取操作、内存改写操作、原子操作。
其中,内存数据对应的工作请求是内存读取操作(Read Response),即第一终端设备的硬件想要获取的第二终端设备的特定地址的内存数据,那么就会执行这个内存读取操作去读取第二终端设备的内存来获取内存数据。操作成功回复指令、操作失败回复指令对应的工作请求就是内存改写操作(Write Response)和原子操作(Atomic Response),也就是说第一终端设备针对第二终端设备的内存执行这些操作时,不需要传回内存数据,只需要第二终端设备进行操作成功与否的反馈即可。
可见,在本示例中,通过确定访问数据中的数据类型和工作请求的类型,能够提高远程直接内存访问的数据处理的准确度和稳定性。
步骤204,针对至少一组访问数据中的每组访问数据,执行如下操作。
其中,如下操作包括:确定与当前处理的访问数据关联的目标内存资源信息;根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素;将所述当前处理的访问数据存储至所述至少一个目标缓存工作队列元素。
其中,由于先前的内存资源分配操作给每个收发工作队列都分配的用于缓存对应的访问数据的空闲的主机内存空间,那么在访问数据到来时,就确定关联的收发工作队列的目标内存资源信息进行后续的缓存操作。这样能够确保每个主机内存空间是匹配了对应的访问数据的大小,不会存在存储不下的问题。且由于最终存储数据的缓存工作队列元素,那么再根据目标内存资源信息确定了目标数据缓存工作队列后,还需要确定出其中用于缓存数据的缓存工作队列元素,因为可能存在目标数据缓存工作队列中部分工作队列元素丢失或者是已经被占用内存的情况。
在一个可能的示例中,当所述内存资源信息为第一资源信息时;所述根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素,包括:根据所述基地址信息确定出所述目标缓存工作队列;根据所述目标缓存工作队列确定出所述目标缓存工作队列的头部信息和尾部信息;根据所述头部信息、所述尾部信息,以及所述至少一个队列元素位置确定出所述至少一个目标缓存工作队列元素。
其中,所述第一资源信息包括所述数据缓存工作队列的基地址信息、至少一个队列元素位置,其中,所述队列元素位置用于表征对应的目标缓存工作队列元素在所述目标数据缓存工作队列中的排列位置;所述头部信息用于表征所述目标数据缓存工作队列中的内存已被占用的缓存工作队列元素的个数,所述尾部信息用于表征所述目标数据缓存工作队列中的缓存工作队列元素的总个数。
其中,由于在内存资源分配操作中存在着两种分配情况,一种分配情况为连续分配,另一种分配情况为非持续分配,在给每个收发工作队列分配资源时,随机出现其中一种情况。为了能够准确找到对应缓存工作队列元素在主机内存中的地址,因此,对应不同的分配情况本方案存在着不同的资源信息的下达和寻址模式的匹配。请参阅图6,图6是本申请实施例提供的一种第一资源信息寻址的示意图,如图6所示,图6所展示的是在第一种分配情况下,即连续分配内存的情况下,第一资源分配信息包括数据缓存工作队列的基地址信息、至少一个队列元素位置。在该情况下,寻址模式就是首先通过基地址信息找到第一终端设备中主机内存中对应的数据缓存工作队列的地址,在确定出目标数据缓存工作队列后,得到这个工作队列的头部信息和尾部信息,再根据队列元素位置确定出对应的目标缓存工作队列元素。图6中给出的示例是,通过基地址信息确定出可缓存数据内存大小为64比特的目标数据缓存工作队列,再根据队列元素位置确定出目标数据缓存工作队列中的内存大小为15比特的缓存工作队列元素2为目标缓存工作队列元素,以方便进行后续的存储操作。
可见,在本示例中,当内存资源信息为第一资源信息时,确定目标数据缓存工作队列中的目标缓存工作队列元素的寻址模式也是不同的,即根据不同的内存资源分配操作适配不同的内存资源信息和寻址模式,提高了远程直接内存访问的数据处理的灵活性、稳定性和效率。
在一个可能的示例中,当所述内存资源信息为第二资源信息时;所述根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素,包括:根据所述内存地址信息确定出目标内存地址;根据所述目标内存地址和所述目标工作队列索引确定出所述目标内存地址中的所述目标数据缓存工作队列;根据所述目标数据缓存工作队列确定出所述目标缓存工作队列的所述头部信息和所述尾部信息;根据所述头部信息、所述尾部信息,以及所述至少一个队列元素位置确定出所述至少一个目标缓存工作队列元素。
其中,所述第二资源信息包括内存地址信息、目标工作队列索引和至少一个队列元素位置,其中,所述内存地址信息用于指示存储有一个或者多个数据缓存工作队列的地址信息的内存地址。
其中,在本示例中,请参阅图7,图7是本申请实施例提供的一种第二资源信息寻址的示意图,如图7所示,图7所展示的是在第二种分配情况下,即非连续分配情况下,第二资源分配信息包括内存地址信息、目标工作队列索引和至少一个队列元素位置。与第二资源分配信息对应的寻址模式是两级查找模式,即先根据第二资源信息中的内存地址信息找到存储有数据缓存工作队列1和数据缓存工作队列2的地址信息的目标内存地址,再根据目标工作队列索引确定数据缓存工作队列1是我们要找的目标数据缓存工作队列,就根据目标内存地址中的数据缓存工作队列1的地址信息定位到数据缓存工作队列1,最后根据队列元素位置确定数据缓存工作队列1中的缓存工作队列元素2为目标缓存工作队列元素。
其中,头部信息的意思就是一个数据缓存工作队列中由于它的工作队列元素可能有十个、八个或者就一个,那么从这个工作队列开始的工作队列元素的序号可能是不确定的,它可能会有缺失或者是工作队列元素已经被占用,比如正常情况下,一个数据缓存工作队列中有10个缓存工作队列元素,编号就会是从缓存工作队列元素0一直排到缓存工作队列元素9,但这个数据缓存工作队列由于缺失了两个工作队列元素,以及有两个工作队列元素被占用内存了,所以实际用来存储的工作队列元素的编号是缓存工作队列元素4,那么头部信息就用于表征这个信息。而尾部信息就用于表征这个数据缓存工作队列最后一个缓存工作队列元素的编号,结合上头部信息就能够知道一共有多个工作队列元素用于存储,哪些工作队列元素是空闲的,再结合上队列元素位置就能够确定出最终的目标缓存工作队列元素。
可见,在本示例中,当内存资源信息为第二资源信息时,确定目标数据缓存工作队列中的目标缓存工作队列元素的寻址模式变成了两级查找模式,能够准确地找到内存资源不连续分配情况下的内存地址,提高了远程直接内存访问的数据处理的灵活性、稳定性和效率。
在一个可能的示例中,所述根据所述目标数据缓存工作队列确定出所述目标缓存工作队列的头部信息和尾部信息,包括:根据所述目标数据缓存工作队列确定出多个参考工作队列元素;从所述目标数据缓存工作队列的出队端开始依次从小到大对所述多个参考工作队列元素进行编号,得到多个队列元素编号;遍历所述多个参考工作队列元素的内存占用情况,确定所述内存占用情况为未占用的参考工作队列元素所对应的数值最小的队列元素编号为头部编号,以及确定所述内存占用情况为未占用的参考工作队列元素所对应的数值最大的队列元素编号为尾部编号;根据所述头部编号生成头部信息,并根据所述尾部编号生成尾部信息。
其中,所述多个队列元素编号与所述多个参考工作队列元素一一对应。
其中,本示例是通过遍历内存占用情况和编号的方式,确定目标数据缓存工作队列中未被占用内存的工作队列元素的位置和个数,从而生成出头部信息和尾部信息,便于后续结合上队列元素位置来确定出内存空闲的用于存储的目标缓存工作队列元素。
可见,在本示例中,根据目标数据缓存工作队列确定出多个参考工作队列元素,再通过编号和遍历内存占用情况的方式,生成出头部信息和尾部信息,保证确定出目标数据缓存工作队列中空闲的可用于存储的工作队列元素,提高了数据存储的稳定性和效率。
在一个可能的示例中,所述访问数据携带有序列号;所述确定与当前处理的访问数据关联的目标内存资源信息,包括:根据所述当前处理的访问数据携带的所述目标序列号确定目标收发工作队列;根据所述目标收发工作队列确定出对应的目标工作队列信息;根据所述目标工作队列信息得到所述目标内存资源信息。
其中,所述序列号用于指示与所述访问数据关联的收发工作队列。
其中,序列号是在远程直接内存访问操作时生成收发工作队列时就同步生成出的,与收发工作队列的生成时间关联,越早生成出的收发工作队列所对应的序列号就越小,越晚生成出的收发工作队列所对应的序列号就越大。在序列号被生成出来之后,它将会以数据的形式跟着整个操作的进行就是流转,因此,在从第二终端设备获取访问数据时,第二终端设备传回给第一终端设备的访问数据上就携带有这个序列号,它能帮助第一终端设备的硬件识别关联的收发工作队列是哪一个,从而确定出它对应工作请求和目标内存资源信息。
可见,在本示例中,通过设置访问数据上携带有序列号,从而便于访问数据能够准确地确定与之关联的目标收发工作队列,从而确定目标内存资源信息,提高了数据处理的准确性和效率。
在一个可能的示例中,所述将所述当前处理的访问数据存储至所述至少一个目标缓存工作队列元素,包括:根据预设匹配规则和预设匹配顺序依次匹配所述当前处理的访问数据中的至少一组数据和所述至少一个目标缓存工作队列元素,得到至少一个匹配信息;
根据所述至少一个匹配信息,将所述当前处理的访问数据中的每组数据存储至对应的目标缓存工作队列元素。
其中,所述匹配信息用于表征单组数据和单个目标缓存工作队列元素的对应关系,任意两个匹配信息对应的数据和目标缓存工作队列元素互不相同,其中,所述预设匹配顺序是指所述类型为内存数据的数据为第一匹配顺位,所述类型为操作成功回复指令或者操作失败回复指令的数据为第二匹配顺位;以及,所述预设匹配规则是指遍历所述至少一个目标缓存工作队列元素的内存大小,匹配出与当前处理的数据所申请的内存大小最接近的目标缓存工作队列元素进行数据缓存。
其中,显而易见地的是,匹配操作就是为每组数据匹配出最适合存储它的目标缓存工作队列元素,且最好就是能够保证存储它的目标缓存工作队列元素的空闲内存大小与该组数据想要申请的内存大小相当,这样能够极大的节省内存资源。因此,在匹配时,关于匹配顺序的设计是,先由需要内存明显更大的类型为内存数据的数据先来进行匹配,之后再由仅用于表征操作是否成功的指令数据进行匹配。在匹配规则上,通过获取每个目标缓存工作队列元素的内存大小,在确定最接近的工作队列元素进行数据缓存,并且理所当然的是,这个最接近还需要满足的一点就是用于存储的目标缓存工作队列元素的空闲内存大小大于对应数据想要申请的内存大小,以保证其能够被存储。
可见,在本示例中,通过预设匹配规则和匹配顺序让当前处理的访问数据中的每组数据能够匹配出最合适的目标缓存工作队列元素进行数据的存储,提高了数据存储的效率和终端设备运行的稳定性,提高了内存资源的利用率。
可见,图2是本申请实施例提供的一种远程直接内存访问的数据处理方法的流程示意图,如图所示,通过获取第一终端设备当前次执行的远程直接内存访问操作对应的至少一个收发工作队列,再根据至少一个收发工作队列的队列深度执行内存资源分配操作,得到至少一个内存资源信息,为其分配主机的空闲内存资源;最后,在接收到第二终端设备响应远程直接内存访问操作而发送的至少一组访问数据后,将至少一组访问数据存储至关联的目标内存资源信息确定出的至少一个目标缓存工作队列元素中。如此,相对于将内存访问数据存储至芯片内部资源的现有技术,本申请提出通过事先将空闲的主机内存资源分配给收发工作队列的方式,使得每个收发工作队列对应的访问数据都独享一个数据缓存工作队列以进行数据存储,提高了终端设备进行访问数据的存储和处理的稳定性和效率。
下面为本申请装置实施例,本申请装置实施例与本申请方法实施例属于同一构思,用于执行本申请实施例中描述的方法。为了便于说明,本申请装置实施例仅示出与本申请装置实施例相关的部分,具体技术细节未揭示的,请参照本申请方法实施例的描述,此处不再一一赘述。
本申请实施例提供了一种远程直接内存访问的数据处理装置,该数据处理装置应用于远程内存访问系统中的第一终端设备,所述远程内存访问系统包括所述第一终端设备和第二终端设备;具体的,数据处理装置用于执行以上远程直接内存访问的数据处理方法中第一终端设备所述执行的步骤。本申请实施例提供的远程直接内存访问的数据处理装置可以包括相应步骤所对应的模块。
本申请实施例可以根据上述方法示例对数据处理装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块即可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图8是本申请实施例提供的一种远程直接内存访问的数据处理装置的功能单元组成框图,所述装置应用于如图1所述的第一终端设备110中,如图8所示,该远程直接内存访问的数据处理装置80包括:第一执行单元801,用于检测到针对所述第二终端设备的远程直接内存访问操作的执行指令,执行所述远程直接内存访问操作,并获取当前次远程直接内存访问操作对应的多个内存访问工作队列,所述内存访问工作队列是指用于储存所述第一终端设备中的软件下发给硬件的工作请求的队列,所述多个内存访问工作队列包括至少一个收发工作队列,单个收发工作队列包括单个内存接收队列和单个内存发送队列,所述单个内存接收队列或者内存发送队列用于存放工作队列元素,单个工作队列元素用于表征单个工作请求的请求信息;资源分配单元802,用于根据所述至少一个收发工作队列的队列深度执行内存资源分配操作,得到至少一个内存资源信息,并将每个内存资源信息存储于对应的收发工作队列的工作队列信息中;接收单元803,用于接收来自所述第二终端设备响应所述远程直接内存访问操作而发送的至少一组访问数据,所述至少一组访问数据和所述至少一个收发工作队列一一对应;第二执行单元804,用于针对所述至少一组访问数据中的每组访问数据,执行如下操作:确定与当前处理的访问数据关联的目标内存资源信息;根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素;将所述当前处理的访问数据存储至所述至少一个目标缓存工作队列元素。
在一个可能的示例中,当所述内存资源信息为第一资源信息时,所述第一资源信息包括所述数据缓存工作队列的基地址信息、至少一个队列元素位置,其中,所述队列元素位置用于表征对应的目标缓存工作队列元素在所述目标数据缓存工作队列中的排列位置;在所述根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素方面,所述第二执行单元804具体用于:根据所述基地址信息确定出所述目标缓存工作队列;根据所述目标缓存工作队列确定出所述目标缓存工作队列的头部信息和尾部信息,所述头部信息用于表征所述目标数据缓存工作队列中的内存已被占用的缓存工作队列元素的个数,所述尾部信息用于表征所述目标数据缓存工作队列中的缓存工作队列元素的总个数;根据所述头部信息、所述尾部信息,以及所述至少一个队列元素位置确定出所述至少一个目标缓存工作队列元素。
在一个可能的示例中,当所述内存资源信息为第二资源信息时,所述第二资源信息包括内存地址信息、目标工作队列索引和至少一个队列元素位置,其中,所述内存地址信息用于指示存储有一个或者多个数据缓存工作队列的地址信息的内存地址;在所述根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素方面,所述第二执行单元804具体还用于:根据所述内存地址信息确定出目标内存地址;根据所述目标内存地址和所述目标工作队列索引确定出所述目标内存地址中的所述目标数据缓存工作队列;根据所述目标数据缓存工作队列确定出所述目标缓存工作队列的所述头部信息和所述尾部信息;根据所述头部信息、所述尾部信息,以及所述至少一个队列元素位置确定出所述至少一个目标缓存工作队列元素。
在一个可能的示例中,在所述根据所述目标数据缓存工作队列确定出所述目标缓存工作队列的头部信息和尾部信息方面,所述第二执行单元804具体还用于:据所述目标数据缓存工作队列确定出多个参考工作队列元素;从所述目标数据缓存工作队列的出队端开始依次从小到大对所述多个参考工作队列元素进行编号,得到多个队列元素编号,所述多个队列元素编号与所述多个参考工作队列元素一一对应;遍历所述多个参考工作队列元素的内存占用情况,确定所述内存占用情况为未占用的参考工作队列元素所对应的数值最小的队列元素编号为头部编号,以及确定所述内存占用情况为未占用的参考工作队列元素所对应的数值最大的队列元素编号为尾部编号;根据所述头部编号生成头部信息,并根据所述尾部编号生成尾部信息。
在一个可能的示例中,所述访问数据携带有序列号,所述序列号用于指示与所述访问数据关联的收发工作队列;在所述确定与当前处理的访问数据关联的目标内存资源信息方面,所述第二执行单元804具体还用于:根据所述当前处理的访问数据携带的所述目标序列号确定目标收发工作队列;根据所述目标收发工作队列确定出对应的目标工作队列信息;根据所述目标工作队列信息得到所述目标内存资源信息。
在一个可能的示例中,所述访问数据包括至少一组数据,所述至少一组数据和所述至少一个目标缓存工作队列元素一一对应;所述至少一组数据的类型包括以下至少一种:内存数据、操作成功回复指令、操作失败回复指令;以及,所述工作请求的类型包括以下至少一种:内存读取操作、内存改写操作、原子操作。
在一个可能的示例中,在所述将所述当前处理的访问数据存储至所述至少一个目标缓存工作队列元素方面,所述第二执行单元804具体还用于:根据预设匹配规则和预设匹配顺序依次匹配所述当前处理的访问数据中的至少一组数据和所述至少一个目标缓存工作队列元素,得到至少一个匹配信息,所述匹配信息用于表征单组数据和单个目标缓存工作队列元素的对应关系,任意两个匹配信息对应的数据和目标缓存工作队列元素互不相同,其中,所述预设匹配顺序是指所述类型为内存数据的数据为第一匹配顺位,所述类型为操作成功回复指令或者操作失败回复指令的数据为第二匹配顺位;以及,所述预设匹配规则是指遍历所述至少一个目标缓存工作队列元素的内存大小,匹配出与当前处理的数据所申请的内存大小最接近的目标缓存工作队列元素进行数据缓存;根据所述至少一个匹配信息,将所述当前处理的访问数据中的每组数据存储至对应的目标缓存工作队列元素。
在采用集成的单元的情况下,如图9所示,图9是本申请实施例提供的另一种远程直接内存访问的数据处理装置的功能单元组成框图。在图9中,远程直接内存访问的数据处理装置90包括:处理模块902和通信模块901。处理模块902用于对远程直接内存访问的数据处理装置的动作进行控制管理,例如,第一执行单元801、资源分配单元802、接收单元803和第二执行单元804的步骤,和/或用于执行本文所描述的技术的其它过程。通信模块901用于支持远程直接内存访问的数据处理装置与其他设备之间的交互。如图9所示远程直接内存访问的数据处理装置还可以包括存储模块903,存储模块903用于存储远程直接内存访问的数据处理装置的程序代码和数据。
其中,处理模块902可以是处理器或控制器,例如可以是中央处理器(CentralProcessing Unit,CPU),通用处理器,数字信号处理器(Digital Signal Processor,DSP),ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块901可以是收发器、RF电路或通信接口等。存储模块903可以是存储器。
其中,上述方法实施例涉及的各场景的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。上述远程直接内存访问的数据处理装置90均可执行上述图2所示的远程直接内存访问的数据处理装置。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
图10是本申请实施例提供的一种终端设备的结构框图。如图10所示,终端设备1000可以包括一个或多个如下部件:处理器1001、与处理器1001耦合的存储器1002,其中存储器1002可存储有一个或多个计算机程序,一个或多个计算机程序可以被配置为由一个或多个处理器1001执行时实现如上述各实施例描述的方法。所述终端设备1000可以是上述实施例中的第一终端设备110和第二终端设备120。
处理器1001可以包括一个或者多个处理核。处理器1001利用各种接口和线路连接整个终端设备1000内的各个部分,通过运行或执行存储在存储器1002内的指令、程序、代码集或指令集,以及调用存储在存储器1002内的数据,执行终端设备1000的各种功能和处理数据。可选地,处理器1001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块通信芯片进行实现。
存储器1002可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。存储器1002可用于存储指令、程序、代码、代码集或指令集。存储器1002可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等。存储数据区还可以存储终端设备1000在使用中所创建的数据等。
可以理解的是,终端设备1000可包括比上述结构框图中更多或更少的结构元件,在此不进行限定。
本申请实施例还提供一种计算机存储介质,其中,其上存储有计算机程序/指令,所述计算机程序/指令被处理器执行时实现如上述方法实施例中记载的任一方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置和系统,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的;例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式;例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、易失性存储器或非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)等各种可以存储程序代码的介质。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,可轻易想到变化或替换,均可作各种更动与修改,包含上述不同功能、实施步骤的组合,包含软件和硬件的实施方式,均在本发明的保护范围。
Claims (10)
1.一种远程直接内存访问的数据处理方法,其特征在于,应用于远程内存访问系统中的第一终端设备,所述远程内存访问系统包括所述第一终端设备和第二终端设备,所述方法包括:
检测到针对所述第二终端设备的远程直接内存访问操作的执行指令,执行所述远程直接内存访问操作,并获取当前次远程直接内存访问操作对应的多个内存访问工作队列,所述内存访问工作队列是指用于储存所述第一终端设备中的软件下发给硬件的工作请求的队列,所述多个内存访问工作队列包括至少一个收发工作队列,单个收发工作队列包括单个内存接收队列和单个内存发送队列,所述单个内存接收队列或者内存发送队列用于存放工作队列元素,单个工作队列元素用于表征单个工作请求的请求信息;
根据所述至少一个收发工作队列的队列深度执行内存资源分配操作,得到至少一个内存资源信息,并将每个内存资源信息存储于对应的收发工作队列的工作队列信息中,所述至少一个内存资源信息和所述至少一个收发工作队列一一对应,所述队列深度用于表征对应的收发工作队列存储的工作队列元素的个数,所述内存资源分配操作是指分配所述第一终端设备中空闲的主机内存以用来存储执行所述远程直接内存访问操作而得到的访问数据的操作,单个内存资源信息用于指示对应的单个数据缓存工作队列,所述数据缓存工作队列用于缓存对应收发工作队列关联的访问数据,所述数据缓存工作队列是指排列有多个缓存工作队列元素的工作队列,所述工作队列信息用于存储对应的收发工作队列所关联的信息;
接收来自所述第二终端设备响应所述远程直接内存访问操作而发送的至少一组访问数据,所述至少一组访问数据和所述至少一个收发工作队列一一对应;
针对所述至少一组访问数据中的每组访问数据,执行如下操作:
确定与当前处理的访问数据关联的目标内存资源信息;
根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素;
将所述当前处理的访问数据存储至所述至少一个目标缓存工作队列元素。
2.根据权利要求1所述的方法,其特征在于,当所述内存资源信息为第一资源信息时,所述第一资源信息包括所述数据缓存工作队列的基地址信息、至少一个队列元素位置,其中,所述队列元素位置用于表征对应的目标缓存工作队列元素在所述目标数据缓存工作队列中的排列位置;所述根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素,包括:
根据所述基地址信息确定出所述目标缓存工作队列;
根据所述目标缓存工作队列确定出所述目标缓存工作队列的头部信息和尾部信息,所述头部信息用于表征所述目标数据缓存工作队列中的内存已被占用的缓存工作队列元素的个数,所述尾部信息用于表征所述目标数据缓存工作队列中的缓存工作队列元素的总个数;
根据所述头部信息、所述尾部信息,以及所述至少一个队列元素位置确定出所述至少一个目标缓存工作队列元素。
3.根据权利要求1所述的方法,其特征在于,当所述内存资源信息为第二资源信息时,所述第二资源信息包括内存地址信息、目标工作队列索引和至少一个队列元素位置,其中,所述内存地址信息用于指示存储有一个或者多个数据缓存工作队列的地址信息的内存地址;所述根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素,包括:
根据所述内存地址信息确定出目标内存地址;
根据所述目标内存地址和所述目标工作队列索引确定出所述目标内存地址中的所述目标数据缓存工作队列;
根据所述目标数据缓存工作队列确定出所述目标缓存工作队列的所述头部信息和所述尾部信息;
根据所述头部信息、所述尾部信息,以及所述至少一个队列元素位置确定出所述至少一个目标缓存工作队列元素。
4.根据权利要求2或3所述的方法,其特征在于,所述根据所述目标数据缓存工作队列确定出所述目标缓存工作队列的头部信息和尾部信息,包括:
根据所述目标数据缓存工作队列确定出多个参考工作队列元素;
从所述目标数据缓存工作队列的出队端开始依次从小到大对所述多个参考工作队列元素进行编号,得到多个队列元素编号,所述多个队列元素编号与所述多个参考工作队列元素一一对应;
遍历所述多个参考工作队列元素的内存占用情况,确定所述内存占用情况为未占用的参考工作队列元素所对应的数值最小的队列元素编号为头部编号,以及确定所述内存占用情况为未占用的参考工作队列元素所对应的数值最大的队列元素编号为尾部编号;
根据所述头部编号生成头部信息,并根据所述尾部编号生成尾部信息。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述访问数据携带有序列号(QPN),所述序列号用于指示与所述访问数据关联的收发工作队列;所述确定与当前处理的访问数据关联的目标内存资源信息,包括:
根据所述当前处理的访问数据携带的所述目标序列号确定目标收发工作队列;
根据所述目标收发工作队列确定出对应的目标工作队列信息;
根据所述目标工作队列信息得到所述目标内存资源信息。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述访问数据包括至少一组数据,所述至少一组数据和所述至少一个目标缓存工作队列元素一一对应;所述至少一组数据的类型包括以下至少一种:
内存数据、操作成功回复指令、操作失败回复指令;以及,
所述工作请求的类型包括以下至少一种:
内存读取操作、内存改写操作、原子操作。
7.根据权利要求6所述的方法,所述将所述当前处理的访问数据存储至所述至少一个目标缓存工作队列元素,包括:
根据预设匹配规则和预设匹配顺序依次匹配所述当前处理的访问数据中的至少一组数据和所述至少一个目标缓存工作队列元素,得到至少一个匹配信息,所述匹配信息用于表征单组数据和单个目标缓存工作队列元素的对应关系,任意两个匹配信息对应的数据和目标缓存工作队列元素互不相同,其中,所述预设匹配顺序是指所述类型为内存数据的数据为第一匹配顺位,所述类型为操作成功回复指令或者操作失败回复指令的数据为第二匹配顺位;以及,所述预设匹配规则是指遍历所述至少一个目标缓存工作队列元素的内存大小,匹配出与当前处理的数据所申请的内存大小最接近的目标缓存工作队列元素进行数据缓存;
根据所述至少一个匹配信息,将所述当前处理的访问数据中的每组数据存储至对应的目标缓存工作队列元素。
8.一种远程直接内存访问的数据处理装置,其特征在于,应用于远程内存访问系统中的第一终端设备,所述远程内存访问系统包括所述第一终端设备和第二终端设备,所述装置包括:
第一执行单元,用于检测到针对所述第二终端设备的远程直接内存访问操作的执行指令,执行所述远程直接内存访问操作,并获取当前次远程直接内存访问操作对应的多个内存访问工作队列,所述内存访问工作队列是指用于储存所述第一终端设备中的软件下发给硬件的工作请求的队列,所述多个内存访问工作队列包括至少一个收发工作队列,单个收发工作队列包括单个内存接收队列和单个内存发送队列,所述单个内存接收队列或者内存发送队列用于存放工作队列元素,单个工作队列元素用于表征单个工作请求的请求信息;
资源分配单元,用于根据所述至少一个收发工作队列的队列深度执行内存资源分配操作,得到至少一个内存资源信息,并将每个内存资源信息存储于对应的收发工作队列的工作队列信息中;
接收单元,用于接收来自所述第二终端设备响应所述远程直接内存访问操作而发送的至少一组访问数据,所述至少一组访问数据和所述至少一个收发工作队列一一对应;
第二执行单元,用于针对所述至少一组访问数据中的每组访问数据,执行如下操作:确定与当前处理的访问数据关联的目标内存资源信息;根据所述目标内存资源信息确定出目标数据缓存工作队列中的至少一个目标缓存工作队列元素;将所述当前处理的访问数据存储至所述至少一个目标缓存工作队列元素。
9.一种终端设备,其特征在于,包括处理器、存储器以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求1-7任一项所述方法中的步骤的指令。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310067975.5A CN115964319A (zh) | 2023-01-30 | 2023-01-30 | 远程直接内存访问的数据处理方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310067975.5A CN115964319A (zh) | 2023-01-30 | 2023-01-30 | 远程直接内存访问的数据处理方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115964319A true CN115964319A (zh) | 2023-04-14 |
Family
ID=87363403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310067975.5A Pending CN115964319A (zh) | 2023-01-30 | 2023-01-30 | 远程直接内存访问的数据处理方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115964319A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116743673A (zh) * | 2023-08-15 | 2023-09-12 | 中移(苏州)软件技术有限公司 | Rdma工作队列参数的调整方法、装置、设备及存储介质 |
CN116760510A (zh) * | 2023-08-15 | 2023-09-15 | 苏州浪潮智能科技有限公司 | 一种消息发送方法、消息接收方法、装置和设备 |
CN117312229A (zh) * | 2023-11-29 | 2023-12-29 | 苏州元脑智能科技有限公司 | 一种数据传输装置、数据处理设备、系统、方法及介质 |
CN117573603A (zh) * | 2024-01-17 | 2024-02-20 | 珠海星云智联科技有限公司 | 用于远程直接内存访问的数据处理方法及计算机设备 |
-
2023
- 2023-01-30 CN CN202310067975.5A patent/CN115964319A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116743673A (zh) * | 2023-08-15 | 2023-09-12 | 中移(苏州)软件技术有限公司 | Rdma工作队列参数的调整方法、装置、设备及存储介质 |
CN116760510A (zh) * | 2023-08-15 | 2023-09-15 | 苏州浪潮智能科技有限公司 | 一种消息发送方法、消息接收方法、装置和设备 |
CN116743673B (zh) * | 2023-08-15 | 2023-11-03 | 中移(苏州)软件技术有限公司 | Rdma工作队列参数的调整方法、装置、设备及存储介质 |
CN116760510B (zh) * | 2023-08-15 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 一种消息发送方法、消息接收方法、装置和设备 |
CN117312229A (zh) * | 2023-11-29 | 2023-12-29 | 苏州元脑智能科技有限公司 | 一种数据传输装置、数据处理设备、系统、方法及介质 |
CN117312229B (zh) * | 2023-11-29 | 2024-02-23 | 苏州元脑智能科技有限公司 | 一种数据传输装置、数据处理设备、系统、方法及介质 |
CN117573603A (zh) * | 2024-01-17 | 2024-02-20 | 珠海星云智联科技有限公司 | 用于远程直接内存访问的数据处理方法及计算机设备 |
CN117573603B (zh) * | 2024-01-17 | 2024-04-19 | 珠海星云智联科技有限公司 | 用于远程直接内存访问的数据处理方法及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115964319A (zh) | 远程直接内存访问的数据处理方法及相关产品 | |
CN107690622B (zh) | 实现硬件加速处理的方法、设备和系统 | |
US20210073158A1 (en) | Methods and apparatus for network interface fabric send/receive operations | |
WO2015165298A1 (zh) | 计算机,控制设备和数据处理方法 | |
US9584628B2 (en) | Zero-copy data transmission system | |
CN112948149A (zh) | 一种远端内存共享方法、装置、电子设备及存储介质 | |
CN114153754B (zh) | 用于计算集群的数据传输方法、装置及存储介质 | |
CN114556881B (zh) | 一种地址翻译方法及装置 | |
US11301408B1 (en) | Asymmetric read / write architecture for enhanced throughput and reduced latency | |
CN113760560A (zh) | 一种进程间通信方法以及进程间通信装置 | |
CN114945009B (zh) | PCIe总线连接的设备间进行通信的方法、设备及系统 | |
CN113032293A (zh) | 缓存管理器及控制部件 | |
CN109478171B (zh) | 提高openfabrics环境中的吞吐量 | |
US9727521B2 (en) | Efficient CPU mailbox read access to GPU memory | |
CN117370046A (zh) | 进程间通信方法、系统、设备和存储介质 | |
CN110995817B (zh) | 请求回调方法、装置及客户端设备 | |
CN113037649B (zh) | 网络中断数据包的收发方法和装置、电子设备和存储介质 | |
CN116601616A (zh) | 一种数据处理装置、方法及相关设备 | |
CN113031849A (zh) | 直接内存存取单元及控制部件 | |
KR20150048028A (ko) | 데이터 전송 관리 방법 | |
CN114253733B (zh) | 一种内存管理方法、装置、计算机设备和存储介质 | |
CN116455849B (zh) | 一种面向众核处理器的并发通信方法、装置、设备和介质 | |
CN116881191B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN116775510B (zh) | 数据访问方法、装置、服务器和计算机可读存储介质 | |
WO2023207456A1 (zh) | 命令传输方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |