进程间数据搬移的方法及装置

文档序号:7359 发布日期:2021-09-17 浏览:39次 英文

进程间数据搬移的方法及装置

技术领域

本申请涉及计算机领域,尤其涉及进程间数据搬移的方法及装置。

背景技术

进程间通信(inter-process communication,IPC)指至少两个进程或线程间传送数据或信号的技术。进程是计算机系统分配资源的最小单位。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程进行协调工作,于是有了进程间通信。这些进程运行在同一计算机上或网络连接的不同计算机上。IPC是分布式软件系统普遍使用的一种通信机制。

目前,进程间通信是通过操作系统(operating system,OS)内核邮箱进行数据传递,或者通过共享内存进行数据传递。进程间通信通过上述两种方式进行数据传递时,都需要在中央处理器(center process unit,CPU)核上频繁地进行数据搬移,浪费了CPU的计算资源,造成软件系统的性能下降。

发明内容

本申请实施例提供进程间数据搬移的方法及装置,能够节省CPU的计算资源,提高软件系统的性能。

为了达到上述目的,本申请实施例采用如下技术方案。

第一方面,本申请实施例提供一种进程间数据搬移的方法,该方法应用于直接数据搬移(direct data movement,DDM)模块,该方法包括:接收来自第一进程的数据搬移指令,该数据搬移指令用于指示源地址、待搬移数据量和目的地址,该源地址属于该第一进程对应的内存空间,该目的地址属于第二进程对应的内存空间,该待搬移数据为该第一进程待发送给该第二进程的数据;根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

上述第一方面提供的方法,DDM模块能够将第一进程对应的内存中的待搬移数据复制到第二进程对应的内存中,DDM模块在进程数据搬移时,不需要经过CPU核,节省了CPU的计算资源,使CPU将节省的计算资源用于其他软件,从而提高了软件系统的性能。

在一种可能的实施方式中,该第二进程包括多个进程;在接收来自第一进程的数据搬移指令之前,该方法还包括:创建订阅组的标识以及该订阅组,该订阅组包括该第一进程的标识、该源地址、该待搬移数据量、该多个进程的标识,和该目的地址,该目的地址包括多个地址,该多个地址分别属于该多个进程中每个进程对应的内存空间;该数据搬移指令携带该订阅组的标识,该订阅组标识用于指示该订阅组;根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:从该数据搬移指令中获取所述订阅组的标识;根据该订阅组的标识,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该多个地址中的每个地址为起始地址的内存中。基于上述方法,当第二进程包括多个进程时,DDM模块不需要通过多条数据搬移指令才能实现第一进程向多个进程发送待搬移数据,而是创建订阅组的标识以及该订阅组,并在数据搬移指令中携带该订阅组的标识,即可实现第一进程向多个进程发送待搬移数据,从而简化了DDM模块的操作。

在一种可能的实施方式中,该DDM模块保存一个或多个队列,每个该队列包括多个队列单元,该队列用于调度数据搬移指令,该多个队列单元中的每个队列单元分别与多个数据搬移指令中的一个数据搬移指令对应,该多个数据搬移指令包括该来自第一进程的数据搬移指令。基于上述方法,DDM模块能够通过保存的一个或多个队列调度数据搬移指令,实现将第一进程对应的内存中的待搬移数据复制到第二进程对应的内存中。

在一种可能的实施方式中,在接收来自第一进程的数据搬移指令后,该方法还包括:为该来自第一进程的数据搬移指令分配第一队列单元,该第一队列单元包括在该多个队列单元中;将该来自第一进程的数据搬移指令对应的任务描述符存储在该第一队列单元中,该任务描述符包括该源地址、该待搬移数据量和该目的地址;该根据该来自第一进程的数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:当该第一队列单元被调度时,解析该任务描述符,得到该源地址、待搬移数据量和该目的地址;在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。基于上述方法,DDM模块为来自第一进程的数据搬移指令分配第一队列单元,将来自第一进程的数据搬移指令对应的任务描述符存储在第一队列单元中,当第一队列单元被调度时,DDM模块能够解析该任务描述符,并在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,从而实现不需要经过CPU核,将第一进程对应的内存中的待搬移数据复制到第二进程对应的内存中。

在一种可能的实施方式中,当该DDM模块保存多个队列时,不同队列的优先级不同,优先级高的队列被优先调度。基于上述方法,DDM模块保存多个队列时,为该多个队列配置不同的优先级,在为数据搬移指令分配队列时,能够将优先级高的数据搬移指令分配到优先级高的队列中,实现优先级高的数据搬移指令被优先调度,同时提高了DDM模块调度数据搬移指令的灵活性。

在一种可能的实施方式中,当该DDM模块保存多个队列时,该DDM模块根据循环调度算法或加权循环调度算法调度该多个队列。基于上述方法,DDM模块保存多个队列时,能够根据调度需要使用不同的调度方法,提高了DDM模块调度队列的灵活性。

第二方面,本申请实施例提供一种CPU芯片,该CPU芯片包括DDM模块和至少一个处理单元,该DDM模块通过总线与该至少一个处理单元连接;该DDM模块执行如下操作:该DDM模块接收来自第一进程的数据搬移指令,该数据搬移指令用于指示源地址、待搬移数据量和目的地址,该源地址属于该第一进程对应的内存空间,该目的地址属于第二进程对应的内存空间,该待搬移数据为该第一进程待发送给该第二进程的数据;该DDM模块根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

在一种可能的实施方式中,该第二进程包括多个进程;该DDM模块在接收来自第一进程的数据搬移指令之前,创建订阅组的标识以及该订阅组,该订阅组包括该第一进程的标识、该源地址、该待搬移数据量、该多个进程的标识,和该目的地址,该目的地址包括多个地址,该多个地址分别属于该多个进程中每个进程对应的内存空间;该数据搬移指令携带该订阅组的标识,该订阅组标识同一指示该订阅组;该DDM模块根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:该DDM模块从该数据搬移指令中获取所述订阅组的标识;该DDM模块根据该订阅组的标识,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该多个地址中的每个地址为起始地址的内存中。

在一种可能的实施方式中,该DDM模块保存一个或多个队列,每个该队列包括多个队列单元,该队列用于调度数据搬移指令,该多个队列单元中的每个队列单元分别与多个数据搬移指令中的一个数据搬移指令对应,该多个数据搬移指令包括该来自第一进程的数据搬移指令。

在一种可能的实施方式中,该DDM模块在接收到来自第一进程的数据搬移指令后,为该来自第一进程的数据搬移指令分配第一队列单元,该第一队列单元包括在该多个队列单元中;该DDM模块将该来自第一进程的数据搬移指令对应的任务描述符存储在该第一队列单元中,该任务描述符包括该源地址、该待搬移数据量和该目的地址;该DDM模块根据该来自第一进程的数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:当该第一队列单元被调度时,该DDM模块解析该任务描述符,得到该源地址、该待搬移数据量和该目的地址;该DDM模块在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

在一种可能的实施方式中,当该DDM模块保存多个队列时,不同队列的优先级不同,优先级高的队列被优先调度。

在一种可能的实施方式中,当该DDM模块保存多个队列时,该DDM模块根据循环调度算法或加权循环调度算法调度该多个队列。

第三方面,本申请实施例提供一种内存设备,该内存设备包括DDM模块,该DDM模块接收来自第一进程的数据搬移指令,该数据搬移指令用于指示源地址、待搬移数据量和目的地址,该源地址属于该第一进程对应的内存空间、该目的地址属于该第二进程对应的内存空间,该待搬移数据为该第一进程待发送给该第二进程的数据;该DDM模块根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

在一种可能的实施方式中,该第二进程包括多个进程;该DDM模块在接收来自该第一进程的数据搬移指令之前,创建订阅组的标识以及该订阅组,该订阅组包括该第一进程的标识、该源地址、该待搬移数据量、该多个进程的标识,和该目的地址,该目的地址包括多个地址,该多个地址分别属于该多个进程中每个进程对应的内存空间;该数据搬移指令携带该订阅组的标识,该订阅组的标识用于指示该订阅组;该DDM模块根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:该DDM模块从该数据搬移指令中获取该订阅组的标识;该DDM模块根据该订阅组的标识,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该多个地址中的每个地址为起始地址的内存中。

在一种可能的实施方式中,该DDM模块保存一个或多个队列,每个该队列包括多个队列单元,该队列用于调度数据搬移指令,该多个队列单元中的每个队列单元分别与多个数据搬移指令中的一个数据搬移指令对应,该多个数据搬移指令包括该来自第一进程的数据搬移指令。

在一种可能的实施方式中,该DDM模块在接收来自第一进程的数据搬移指令后,为该来自第一进程的数据搬移指令分配第一队列单元,该第一队列单元包括在该多个队列单元中;该DDM模块将该来自第一进程的数据搬移指令对应的任务描述符存储在该第一队列单元中,该任务描述符包括该源地址、该待搬移数据量和该目的地址;该DDM模块根据该来自第一进程的数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:当该第一队列单元被调度时,该DDM模块解析该任务描述符,得到该源地址、该待搬移数据量和该目的地址;该DDM模块在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

在一种可能的实施方式中,当该DDM模块保存多个队列时,不同队列的优先级不同,优先级高的队列被优先调度。

在一种可能的实施方式中,当该DDM模块保存多个队列时,该DDM模块根据循环调度算法或加权循环调度算法调度该多个队列。

第四方面,本申请实施例提供一种计算机设备,该计算机设备包括内存设备和处理器,该处理器包括DDM模块和至少一个处理单元,该处理器通过总线与该内存设备连接;该DDM模块执行如下操作:该DDM模块接收来自第一进程的数据搬移指令,该数据搬移指令用于指示源地址、待搬移数据量和目的地址,该源地址属于该第一进程对应的内存空间,该目的地址属于第二进程对应的内存空间,该待搬移数据为该第一进程待发送给该第二进程的数据;该DDM模块根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

在一种可能的实施方式中,该第二进程包括多个进程;该DDM模块在接收来自第一进程的数据搬移指令之前,创建订阅组的标识以及该订阅组,该订阅组包括该第一进程的标识、该源地址、该待搬移数据量、该多个进程的标识,和该目的地址,该目的地址包括多个地址,该多个地址分别属于该多个进程中每个进程对应的内存空间;该数据搬移指令携带该订阅组的标识,该订阅组的标识用于指示该订阅组;该DDM模块根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:该DDM模块从该数据搬移指令中获取该订阅组的标识;该DDM模块根据该订阅组的标识,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以多个地址中的每个地址为起始地址的内存中。

在一种可能的实施方式中,该DDM模块保存一个或多个队列,每个该队列包括多个队列单元,该队列用于调度数据搬移指令,该多个队列单元中的每个队列单元分别与多个数据搬移指令中的一个数据搬移指令对应,该多个数据搬移指令包括该来自第一进程的数据搬移指令。

在一种可能的实施方式中,该DDM模块在接收到来自第一进程的数据搬移指令后,为该来自第一进程的数据搬移指令分配第一队列单元,该第一队列单元包括在该多个队列单元中;该DDM模块将该来自第一进程的数据搬移指令对应的任务描述符存储在该第一队列单元中,该任务描述符包括该源地址、该待搬移数据量和该目的地址;该DDM模块根据该来自第一进程的数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:当该第一队列单元被调度时,该DDM模块解析该任务描述符,得到该源地址、该待搬移数据量和该目的地址;该DDM模块在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

在一种可能的实施方式中,当该DDM模块保存多个队列时,不同队列的优先级不同,优先级高的队列被优先调度。

在一种可能的实施方式中,当该DDM模块保存多个队列时,该DDM模块根据循环调度算法或加权循环调度算法调度该多个队列。

第五方面,本申请实施例提供一种硬件装置,该硬件装置包括接收单元和搬移单元;该接收单元,用于接收来自第一进程的数据搬移指令,该数据搬移指令用于指示源地址、待搬移数据量和目的地址,该源地址属于该第一进程对应的内存空间,该目的地址属于第二进程对应的内存空间,该待搬移数据为该第一进程待发送给该第二进程的数据;该搬移单元,用于根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

在一种可能的实施方式中,该硬件装置还包括创建单元,该第二进程包括多个进程;该创建单元,用于创建订阅组的标识以及该订阅组,该订阅组包括该第一进程的标识、该源地址、该待搬移数据量、该多个进程的标识,和该目的地址,该目的地址包括多个地址,该多个地址分别属于该多个进程中每个进程对应的内存空间;该数据搬移指令携带该订阅组的标识,该订阅组的标识用于指示该订阅组;该搬移单元,具体用于从该数据搬移指令中获取该订阅组的标识;该搬移单元,还具体用于根据该订阅组的标识,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该多个地址中的每个地址为起始地址的内存中。

在一种可能的实施方式中,该硬件装置保存一个或多个队列,每个该队列包括多个队列单元,该队列用于调度数据搬移指令,该多个队列单元中的每个队列单元分别与多个数据搬移指令中的一个数据搬移指令对应,该多个数据搬移指令包括该来自第一进程的数据搬移指令。

在一种可能的实施方式中,该搬移单元,还用于为该来自第一进程的数据搬移指令分配第一队列单元,该第一队列单元包括在该多个队列单元中;该搬移单元,还用于将该来自第一进程的数据搬移指令对应的任务描述符存储在该第一队列单元中,该任务描述符包括该源地址、该待搬移数据量和该目的地址;该搬移单元,具体用于当该第一队列单元被调度时,解析该任务描述符,得到该源地址、待搬移数据量和该目的地址;该搬移单元,还具体用于在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

在一种可能的实施方式中,当该硬件装置保存多个队列时,不同队列的优先级不同,优先级高的队列被优先调度。

在一种可能的实施方式中,当该硬件装置保存多个队列时,该硬件装置根据循环调度算法或加权循环调度算法调度该多个队列。

第六方面,本申请实施例提供一种硬件装置,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得该装置实现上述第一方面、或第一方面任一种可能的实施方式中所述的方法。

第七方面,本申请实施例提供一种硬件装置,该装置用于实现上述第一方面、或第一方面任一种可能的实施方式中所述的方法。

第八方面,本申请实施例提供一种计算机可读介质,其上存储有计算机程序或指令,所述计算机程序或指令被执行时使得计算机执行上述第一方面、或第一方面任一种可能的实施方式中所述的方法。

第九方面,本申请实施例提供一种计算机程序产品,其包括计算机程序代码,所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面、或第一方面任一种可能的实施方式中所述的方法。

可以理解的,上述提供的任一种CPU芯片、内存设备、计算机设备、硬件装置、计算机可读介质或计算机程序产品等均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。

附图说明

图1为本申请实施例提供的进程间数据搬移的方法的实施环境的示意图;

图2为本申请实施例提供的硬件装置的硬件结构示意图;

图3为本申请实施例提供的进程间数据搬移的方法的流程示意图;

图4为本申请实施例提供的DDM模块保存的队列的示意图;

图5A为本申请实施例提供的硬件装置的结构示意图一;

图5B为本申请实施例提供的硬件装置的结构示意图二;

图6为本申请实施例提供的CPU芯片的结构示意图;

图7为本申请实施例提供的内存设备的结构示意图;

图8为本申请实施例提供的计算机设备的结构示意图。

具体实施方式

本申请实施例提供的进程间数据搬移的方法可以应用于计算机设备,或者计算机设备中的部件,例如,本申请实施例提供的进程间数据搬移的方法可以应用于计算机设备中的处理器或者内存设备等。可选的,该计算机设备是便携式计算机(如手机)、笔记本电脑、个人计算机(personal computer,PC)、可穿戴电子设备(如智能手表)、平板电脑、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备等,不予限制。该计算机设备、该处理器或者该内存设备包括直接数据搬移(direct data movement,DDM)模块,该DDM模块能够执行本申请实施例提供的进程间数据搬移的方法。需要说明的是,DDM模块仅是执行本申请实施例提供的进程间数据搬移的方法的部件的名字的一个示例,在具体应用中,该DDM模块还可以是其他的名字,本申请实施例对此不作具体限定。

下面以本申请实施例提供的进程间数据搬移的方法应用于处理器或内存设备为例,介绍本申请实施例提供的进程间数据搬移的方法的实施环境。

如图1所示,为本申请实施例提供的进程间数据搬移的方法的实施环境的示意图。图1中的(a)所示的实施环境包括处理器101和内存设备102。其中,处理器101包括一个或多个CPU核(core)1011(图1中的(a)中仅示出一个)、DDM模块1012和内存控制器1013。处理器101和内存设备102之间通过外部总线连接,CPU核1011、DDM模块1012和内存控制器1013之间通过内部总线连接。DDM模块1012通过内部总线接收到运行在CPU核1011上的第一进程的数据搬移指令后,将数据搬移指令中的源虚拟地址(虚拟地址也被称为逻辑地址)转换为源物理地址,目的虚拟地址转换为目的物理地址。后续,DDM模块1012根据数据搬移指令将内存设备102中,源物理地址对应的内存空间中的待搬移数据复制到目的物理地址对应的内存空间中。其中,源虚拟地址、源物理地址、目的虚拟地址和目的物理地址属于内存设备102中的地址。可选地,DDM模块1012为了支持并发处理的多个数据搬移指令,能够为多个数据搬移指令中的每个数据搬移指令分配队列单元,并通过队列单元调度多个数据搬移指令。

图1中的(b)所示的实施环境包括处理器103和内存设备104。其中,处理器103包括一个或多个CPU核1031(图1中的(b)中仅示出一个)和内存控制器1032,内存控制器1032包括DDM模块1033。处理器103和内存设备104之间通过外部总线连接,CPU核1031和内存控制器1032之间通过内部总线连接。DDM模块1033通过内部总线接收到运行在CPU核1031上的第一进程的数据搬移指令后,将数据搬移指令中的源虚拟地址转换为源物理地址,目的虚拟地址转换为目的物理地址。后续,DDM模块1033根据数据搬移指令将内存设备104中,源物理地址对应的内存空间中的待搬移数据复制到目的物理地址对应的内存空间中。其中,源虚拟地址、源物理地址、目的虚拟地址和目的物理地址属于内存设备104中的地址。可选地,DDM模块1033为了支持并发处理的多个数据搬移指令,能够为多个数据搬移指令中的每个数据搬移指令分配队列单元,并通过队列单元调度多个数据搬移指令。

图1中的(c)所示的实施环境包括处理器105和内存设备106,其中,处理器105包括一个或多个CPU核1051(图1中的(c)中仅示出一个)和内存控制器1052。内存设备106包括DDM模块1061。处理器105和内存设备106之间通过外部总线连接,CPU核1051和内存控制器1052之间通过内部总线连接。DDM模块1061通过外部总线接收到运行在CPU核1051上的第一进程的数据搬移指令后,将数据搬移指令中的源虚拟地址转换为源物理地址,目的虚拟地址转换为目的物理地址。后续,DDM模块1061根据数据搬移指令数据搬移指令将内存设备106中源物理地址对应的内存空间中的待搬移数据复制到目的物理地址对应的内存空间中。其中,源虚拟地址、源物理地址、目的虚拟地址和目的物理地址属于内存设备106中的地址。可选地,DDM模块1061为了支持并发处理的多个数据搬移指令,能够为多个数据搬移指令中的每个数据搬移指令分配队列单元,并通过队列单元调度多个数据搬移指令。

应理解,上述源物理地址和目的物理地址也可以是内存控制器转换并发送给DDM模块的,不予限制。

在一些实施例中,上述处理器,例如处理器101、处理器103或处理器105,是一个通用CPU,微处理器,特定应用集成电路(application-specific integrated circuit,ASIC)等。上述内存控制器,例如,内存控制器1013、内存控制器1032或内存控制器1052,是读/写内存设备的控制器。例如,内存控制器1013是读/写内存设备102的控制器,DDM模块要通过内存控制器1013访问内存设备102。上述内存设备,例如,内存设备102、内存设备104或内存设备106,又可以称为物理内存,是处理器可以直接寻址的存储空间。

应注意,图1所示的实施环境仅用于举例,并非用于限制本申请的技术方案。本领域的技术人员应当明白,在具体实现过程中,图1所示的实施环境还可以包括其他设备,同时也可根据具体需要来确定处理器、CPU核、内存控制器、DDM模块和内存设备的数量。图1中的各部件之间(例如,CPU核和内存控制器之间),或者各设备之间(例如处理器与内存设备之间)还可以通过其他方式连接。

在一种可能的实施方式中,申请实施例提供的进程间数据搬移的方法通过图2所示的硬件装置来实现。该硬件装置200包括至少一个处理器201(图2以两个处理器,处理器201和处理器207进行示例性说明),通信线路202,内存设备203以及至少一个通信接口204。

可选的,处理器201是一个通用CPU,微处理器,ASIC,或一个或多个用于控制本申请方案程序执行的集成电路。

可选的,通信线路202包括一通路,在上述组件之间传送信息,例如总线。

可选的,通信接口204,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网接口,无线接入网接口(radio access network,RAN),无线局域网接口(wireless local area networks,WLAN)等。

可选的,内存设备203是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备。内存设备203可以是独立存在,通过通信线路202与处理器相连接。内存设备203也可以和处理器集成在一起。本申请实施例提供的内存设备通常可以具有非易失性。

可选的,处理器201中包括DDM模块2011。DDM模块2011为处理器201中的硬件设备,例如,DDM模块2011为处理器中的芯片或芯片系统。DDM模块2011能够使进程间的数据搬移不经过处理器201中的CPU或CPU核,而是由DDM模块2011将发送进程内存中的数据复制到接收进程的内存中。

可选的,内存设备203包括DDM模块2031。DDM模块2031为内存设备203中的硬件设备,例如,DDM模块2031为内存设备203中的芯片或芯片系统。DDM模块2031能够使进程间的数据搬移不经过处理器201中的CPU或CPU核,而是由DDM模块2031将发送进程内存中的数据复制到接收进程的内存中。

可选的,内存设备203用于存储执行本申请方案所涉及的计算机执行指令,并由DDM模块2011或DDM模块2031来控制执行。DDM模块2011或DDM模块2031用于执行内存设备203中存储的计算机执行指令,从而实现本申请实施例提供的方法。

可选的,本申请实施例中的计算机执行指令也称之为应用程序代码,本申请实施例对此不作具体限定。

在具体实现中,作为一种实施例,处理器201包括一个或多个CPU核,例如图2中的core 0和core 1。

在具体实现中,作为一种实施例,硬件装置200包括多个处理器,例如图2中的处理器201和处理器207。这些处理器中的每一个可以是一个单核(single-core CPU)处理器,也可以是一个多核(multiple-core CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

可选的,上述的硬件装置200是一个通用设备或者是一个专用设备。在具体实现中,硬件装置200是台式机、便携式电脑、网络服务器、掌上电脑(personal digitalassistant,PDA)、移动手机、平板电脑、无线终端设备、嵌入式设备或有图2中类似结构的设备。本申请实施例不限定硬件装置200的类型。

下面结合图1和图2对本申请实施例提供的进程间数据搬移的方法进行具体阐述。

需要说明的是,本申请下述实施例中各个部件之间的消息名字或消息中各参数的名字等只是一个示例,具体实现中也可以是其他的名字,本申请实施例对此不作具体限定。

可以理解的,本申请实施例中,DDM模块能够执行本申请实施例中的部分或全部步骤,这些步骤仅是示例,DDM模块还能够执行其它步骤或者各种步骤的变形。此外,各个步骤能够按照本申请实施例呈现的不同的顺序来执行,并且有可能并非要执行本申请实施例中的全部步骤。

如图3所示,为本申请实施例提供的一种进程间数据搬移的方法,该进程间数据搬移的方法包括步骤301和步骤302。

步骤301:DDM模块接收来自第一进程的数据搬移指令。

可选的,该DDM模块是图1中的DDM模块1012、DDM模块1033或者DDM模块1061。第一进程运行在与DDM模块连接的CPU核上。例如,当该DDM模块为图1中的DDM模块1012时,第一进程运行在CPU核1011上。当该DDM模块为图1中的DDM模块1033时,第一进程运行在CPU核1031上。当该DDM模块为图1中的DDM模块1061时,第一进程运行在CPU核1051上。

可选的,数据搬移指令用于指示源地址,待搬移数据量和目的地址。该源地址属于第一进程对应的内存空间,该目的地址属于第二进程对应的内存空间,待搬移数据为第一进程待发送给第二进程的数据。待搬移数据量表示待搬移数据占用的内存空间的大小。第二进程运行在与DDM模块连接的CPU核上,第二进程与第一进程不同。

可选的,数据搬移指令还用于指示第一进程的标识和第二进程的标识。其中,第一进程的标识用于标识第一进程,例如,第一进程的标识是第一进程的进程标识符(processidentification,PID)。第二进程的标识用于标识第二进程,例如,第二进程的标识是第二进程的PID。

可选的,第二进程包括一个或多个进程。当第二进程包括一个进程时,数据搬移指令携带源地址,待搬移数据量和目的地址;当第二进程包括多个进程时,数据搬移指令携带订阅组的标识。订阅组的标识用于指示订阅组,订阅组包括第一进程的标识、源地址、待搬移数据量、第二进程中的多个进程的标识,以及目的地址,该目的地址包括多个地址,该多个地址分别属于多个进程中每个进程对应的内存空间。如此,DDM模块不需要通过多条数据搬移指令才能实现第一进程向多个进程发送待搬移数据。

可选的,数据搬移指令是第一进程通过调用DDM模块的接口发送给DMM模块的。例如,当第二进程包括一个进程时,DDM模块通过ddm_memory_copy接口接收第一进程的ddm_memory_copy(source_address,dest_address,size)单播数据搬移命令。其中,soure_address为源地址,dest_address为目的地址,size为待搬移数据量。当第二进程包括多个进程时,DDM模块通过ddm_multicast_copy接口接收第一进程的ddm_multicast_copy(订阅组标识)组播数据搬移命令。

可选的,若数据搬移指令携带订阅组的标识,步骤301之前,DDM模块创建订阅组的标识以及该订阅组。其中,DDM模块创建订阅组的标识以及该订阅组,包括:DDM模块链接该多个进程,DDM模块创建订阅组,并将第一进程的标识、源地址、待搬移数据量、DDM模块链接的多个进程的标识,以及多个地址加入到该订阅组中。

示例性的,以第一进程为进程1,多个进程包括进程2、进程3和进程4,进程1的标识为SPID 1,进程1的源地址为soure_address 1,待搬移数据量为size,进程2的标识为DPID2,进程2的目的地址为dest_address 2,进程3的标识为DPID3,进程3的目的地址为dest_address 3,进程4的标识为DPID4,进程4的目的地址为dest_address 4为例,DDM模块通过ddm_create_group接口接收进程1的ddm_create_group(GroupID,SPID 1,source_address1,size)创建数据搬移组播组命令,创建订阅组,其中,GroupID为订阅组的标识,此时订阅组包括订阅组的标识,进程1的标识,进程1的源地址和待搬移数据量。DDM模块通过ddm_add_subscriber接口接收进程1的ddm_add_subscriber(DPID 2,dest_address 2,GroupID)命令,ddm_add_subscriber(DPID 3,dest_address 3,GroupID)命令,和ddm_add_subscriber(DPID 4,dest_address 4,GroupID)命令,将DPID 2,dest_address 2,DPID 3,dest_address 3,DPID 4和dest_address 4加入到该订阅组中,此时订阅组包括订阅组的标识,进程1的标识,进程1的源地址,待搬移数据量,进程2的标识,进程2的目的地址,进程3的标识,进程3的目的地址,进程4的标识和进程4的目的地址。

进一步可选的,若该订阅组创建成功后,该多个进程中的进程不想接收待搬移数据,DDM模块将该进程的标识以及该进程的目的地址从该订阅组中删除。

示例性的,以上述示例中的订阅组为例,该订阅组中包括订阅组的标识,进程1的标识,进程1的源地址、待搬移数据量、进程2的标识、进程2的目的地址、进程3的标识、进程3的目的地址、进程4的标识和进程4的目的地址,若进程2不想接收待搬移数据,DDM模块通过接口ddm_delete_subscriber接收进程1的ddm_delete_subscriber(GroupID,DPID 2)命令,将进程2的标识和进程2的目的地址从订阅组中删除,此时该订阅组包括订阅组的标识,进程1的标识,进程1的源地址、待搬移数据量、进程3的标识、进程3的目的地址、进程4的标识和进程4的目的地址。后续DDM模块不会将待搬移数据复制到进程2的目的地址对应的内存中。

可选的,该源地址和目的地址为虚拟地址,也就是说,该源地址可以称为源虚拟地址,该目的地址可以称为目的虚拟地址。虚拟地址为进程在访问内存时使用的逻辑地址。DDM模块接收到该数据搬移指令后,将源虚拟地址转换为源物理地址,将目的虚拟地址转换为目的物理地址。该源物理地址和目的物理地址都是物理地址。物理地址为内存中实际的地址。

可选的,源虚拟地址与源物理地址存在对应关系,目的虚拟地址与目的物理地址存在对应关系。例如,在步骤301之前,DDM模块通过调用接口ddm_address_map(virtualaddress,physical address),设置虚拟地址到物理地址的虚实地址映射表,该虚实地址映射表中包括源虚拟地址与源物理地址的对应关系,以及目的虚拟地址与目的物理地址的对应关系。

步骤302:DDM模块根据数据搬移指令,在以源地址为起始地址,大小为待搬移数据量的内存中读取待搬移数据,并将读取的待搬移数据复制到以目的地址为起始地址的内存中。

可选的,当第二进程包括一个进程时,DDM模块根据数据搬移指令,在以源地址为起始地址,大小为待搬移数据量的内存中读取待搬移数据,并将读取的待搬移数据复制到以目的地址为起始地址的内存中。当第二进程包括多个进程时,DDM模块根据订阅组的标识,在以源地址为起始地址,大小为待搬移数据量的内存中读取待搬移数据,并将读取的待搬移数据复制到以该多个地址中的每个地址为起始地址的内存中。

可选的,DDM模块保存一个或多个队列,每个队列包括多个队列单元。该队列用于调度数据搬移命令。多个队列单元中的每个队列单元分别与多个数据搬移指令中的一个数据搬移指令对应,该多个数据搬移指令包括来自第一进程的数据搬移指令。多个队列单元中的每个队列单元保存有该队列单元对应的数据搬移指令对应的任务描述符。该任务描述符用于指示该数据搬移指令对应的源地址、待搬移数据量和目的地址。例如,当第二进程包括一个进程时,该任务描述符包括该数据搬移指令对应的源地址、待搬移数据量和目的地址。当第二进程包括多个进程时,该任务描述符包括第一进程的标识、源地址、待搬移数据量、第二进程中的多个进程的标识,以及多个地址。

示例性的,如图4所示,为DDM模块保存的队列的示意图。图4中,DDM模块保存了两个队列,队列1和队列2,每个队列包括9个队列单元。若DDM模块接收到4条数据搬移指令,分别为数据搬移指令1、数据搬移指令2、数据搬移指令3和数据搬移指令4,DDM模块能够为该4条数据搬移指令分配队列单元。例如,DDM模块为数据搬移指令1分配队列1中的队列单元401,则队列单元401与数据搬移指令1对应,队列单元401保存有数据搬移指令1对应的任务描述符。DDM模块为数据搬移指令2分配队列2中的队列单元403,则队列单元403与数据搬移指令2对应,队列单元403保存有数据搬移指令2对应的任务描述符。DDM模块为数据搬移指令3分配队列1中的队列单元402,则队列单元402与数据搬移指令3对应,队列单元402保存有数据搬移指令3对应的任务描述符。DDM模块为数据搬移指令4分配队列2中的队列单元404,则队列单元404与数据搬移指令4对应,队列单元404保存有数据搬移指令4对应的任务描述符。

可选的,多个队列中的每个队列与一组发送进程相同且接收进程也相同的数据搬移指令对应。例如,若数据搬移指令1和数据搬移指令2对应的发送进行为进程1,接收进程为进程2,数据搬移指令3和数据搬移指令4对应的发送进行为进程3,接收进程为进程4,则DDM模块可以将数据搬移指令1和数据搬移指令2分配到多个队列中的一个队列中,将数据搬移指令3和数据搬移指令4分配到多个队列中的另一个队列。可选地,DDM模块也可以按照其他规则将多个数据搬移指令分配到不同队列中。

可选的,DDM模块预存储该一个或多个队列;或者,DDM模块在第一次上电时,创建该一个或多个队列;或者,DDM模块每次启动时,创建该一个或多个队列。

示例性的,DDM模块在第一次上电时,调用接口ddm_queue_create(max_FIFO_Q_number)和接口ddm_set_queue_depth(QID,depth)创建该一个或多个队列。其中,max_FIFO_Q_number表示DDM模块创建的队列的个数,QID表示队列标识,depth表示QID所标识的队列包括的队列单元的个数。例如,若max_FIFO_Q_number为2表示DDM模块创建2个队列,QID为队列1,depth为5表示DDM模块创建的队列1包括5个队列单元。

可选的,当DDM模块保存多个队列时,不同队列的优先级不同,优先级高的队列被优先调度。示例性的,以DDM模块保存队列1、队列2和队列3,队列3的优先级大于队列2的优先级,队列2的优先级大于队列1的优先级为例,若队列3的优先级最高,DDM模块优先调度队列3中的队列单元,队列3中没有可调度的队列单元后,DDM模块调度队列2中的队列单元,队列2中没有可调度的队列单元后,DDM模块调度队列1中的队列单元。

可选的,当DDM模块保存多个队列时,DDM模块根据循环调度(round robin,RR)算法或者加权循环调度(weighted round robin,WRR)算法调度该多个队列。

其中,RR算法是指以循环的方式依次调度该多个队列。示例性的,以DDM模块保存队列1、队列2和队列3为例,DDM模块可以先调度队列1中的第一个队列单元,再调度队列2中的第一个队列单元,接着调度队列3中的第一个队列单元,后续,DDM模块调度队列1中的第二个队列单元,队列2中的第二个队列单元,队列3中的第二个队列单元,以此类推。

其中,WRR算法是指DDM模块为每个队列分配权重,并根据每个队列的权重调度该队列。以DDM模块保存队列1、队列2和队列3,队列1的权重为3,队列2的权重为2,队列3的权重为1为例,当DDM模块调度三次队列1时,要调度两次队列2和一次队列3。例如,DDM模块可以先调度队列1的第一个队列单元,再调度队列2的第一个队列单元,接着调度队列1的第二个队列单元,再调度队列2的第二个队列单元,接着调度队列1的第三个队列单元,再调度队列3的第一个队列单元,以此类推。

需要说明的是,队列调度算法很多,本申请实施例难以一一列举,仅以RR算法和WRR算法进行举例说明。

可选的,DDM模块接收到来自第一进程的数据搬移指令后,为来自第一进程的数据搬移指令分配第一队列单元,将来自第一进程的数据搬移指令对应的任务描述符存储在第一队列单元中;当第一队列单元被调度时,DDM模块解析该任务描述符,得到源地址、待搬移数据量和目的地址,在以源地址为起始地址,大小为待搬移数据量的内存中读取待搬移数据,并将读取的待搬移数据复制到以目的地址为起始地址的内存中。

其中,第一队列单元包括在该多个队列单元中。其中,来自第一进程的数据搬移指令对应的任务描述符可以用于指示源虚拟地址、待搬移数据量和目的虚拟地址;或者,来自第一进程的数据搬移指令对应的任务描述符可以用于指示源物理地址、待搬移数据量和目的物理地址。

当来自第一进程的数据搬移指令对应的任务描述符用于指示源虚拟地址、待搬移数据量和目的虚拟地址时,DDM模块解析该任务描述符,得到源虚拟地址、待搬移数据量和目的虚拟地址,DDM模块根据虚实地址映射表将源虚拟地址转换为源物理地址,将目的虚拟地址转换为目的物理地址,在以源物理地址为起始地址,大小为待搬移数据量的内存中读取待搬移数据,并将读取的待搬移数据复制到以目的物理地址为起始地址的内存中。

当来自第一进程的数据搬移指令对应的任务描述符用于指示源物理地址、待搬移数据量和目的物理地址时,DDM模块在以源物理地址为起始地址,大小为待搬移数据量的内存中读取待搬移数据,并将读取的待搬移数据复制到以目的物理地址为起始地址的内存中。

可选的,DDM模块在以源物理地址为起始地址,大小为待搬移数据量的内存中读取待搬移数据,并将读取的待搬移数据复制到以目的物理地址为起始地址的内存中,包括:DDM模块发起读请求指令,该读请求指令携带源物理地址和待搬移数据量;DDM模块根据该读请求指令在以源物理地址为起始地址,大小为待搬移数据量的内存中读取待搬移数据,将读取的数据缓存在内部寄存器中;DDM模块发起写请求指令,该写请求指令携带目的物理地址和待搬移数据量;DDM模块将缓存在内部寄存器中的数据写入以目的物理地址为起始地址的内存中。

可选的,待搬移数据复制完成后,DDM模块向第二进程发送第一通信消息,该第一通知消息用于指示待搬移数据复制完成。例如,DDM模块调用接口ddm_notify(第二进程的PID)向第二进程发送第一通知消息。DDM模块可以每复制完成一次数据后,就发送一次第一通知消息,也可以复制完成多次数据后,发送一次第一通知消息。

可选的,待搬移数据复制完成后,DDM模块向第一进程发送第二通信消息,该第二通知消息用于指示待搬移数据复制完成。例如,DDM模块调用接口ddm_ack(第一进程的PID,待搬移数据的标识)向第一进程发送第二通知消息。第一进程接收到该第二通知消息后,认为待搬移数据复制完成,第一进程可以释放第一进程对应的内存中的待搬移数据。

可以理解的是,上述DDM模块为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法操作,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对DDM模块进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

比如,以采用集成的方式划分各个功能模块的情况下,图5A示出了一种硬件装置50的结构示意图。该硬件装置50可以为DDM模块或者DDM模块中的芯片或者片上系统,或其他可实现上述DDM模块功能的组合器件、部件等,该硬件装置50可以用于执行上述实施例中涉及的DDM模块的功能。

作为一种可能的实现方式,图5A所示的硬件装置50包括:接收单元501和搬移单元502。

接收单元501,用于接收来自第一进程的数据搬移指令,该数据搬移指令用于指示源地址、待搬移数据量和目的地址,该源地址属于该第一进程对应的内存空间,该目的地址属于第二进程对应的内存空间,该待搬移数据为该第一进程待发送给该第二进程的数据;搬移单元502,用于根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

可选的,如图5B所示,硬件装置50还包括:创建单元503;该第二进程包括多个进程;创建单元503,用于创建订阅组的标识以及该订阅组,该订阅组包括该第一进程的标识、该源地址、该待搬移数据量、该多个进程的标识,和该目的地址,该目的地址包括多个地址,该多个地址分别属于该多个进程中每个进程对应的内存空间;该数据搬移指令携带该订阅组的标识,该订阅组的标识用于指示该订阅组;搬移单元502,具体用于从该数据搬移指令中获取该订阅组的标识;搬移单元502,还具体用于根据该订阅组的标识,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该多个地址中的每个地址为起始地址的内存中。

可选的,该硬件装置保存一个或多个队列,每个该队列包括多个队列单元,该队列用于调度数据搬移指令,该多个队列单元中的每个队列单元分别与多个数据搬移指令中的一个数据搬移指令对应,该多个数据搬移指令包括该来自第一进程的数据搬移指令。

可选的,搬移单元502,还用于为该来自第一进程的数据搬移指令分配第一队列单元,该第一队列单元包括在该多个队列单元中;搬移单元502,还用于将该来自第一进程的数据搬移指令对应的任务描述符存储在该第一队列单元中,该任务描述符包括该源地址、该待搬移数据量和该目的地址;搬移单元502,具体用于当该第一队列单元被调度时,解析该任务描述符,得到该源地址、该待搬移数据量和该目的地址;搬移单元502,还具体用于在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

可选的,当该硬件装置保存多个队列时,不同队列的优先级不同,优先级高的队列被优先调度。

可选的,当该硬件装置保存多个队列时,该硬件装置根据循环调度算法或加权循环调度算法调度该多个队列。

其中,上述方法实施例涉及的各操作的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

在本实施例中,该硬件装置50以采用集成的方式划分各个功能模块的形式来呈现。这里的“模块”可以指特定ASIC,电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。

由于本实施例提供的硬件装置50可执行上述的进程间数据搬移的方法,因此其所能获得的技术效果可参考上述方法实施例,在此不再赘述。

如图6所示,为本申请实施例提供的一种CPU芯片60,该CPU芯片60包括DDM模块601和至少一个处理单元602。DDM模块601通过总线与至少一个处理单元602连接。可选的,处理单元602包括CPU核。

DDM模块601执行如下操作:

DDM模块601接收来自第一进程的数据搬移指令,该数据搬移指令用于指示源地址,待搬移数据量和目的地址,该源地址属于该第一进程对应的内存空间,该目的地址属于第二进程对应的内存空间,该待搬移数据为该第一进程待发送给该第二进程的数据。

DDM模块601根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

可选的,该第二进程包括多个进程;DDM模块601在接收来自第一进程的数据搬移指令之前,创建订阅组的标识以及该订阅组,该订阅组包括该第一进程的标识、该源地址、该待搬移数据量、该多个进程的标识,和该目的地址,该目的地址包括多个地址,该多个地址分别属于该多个进程中每个进程对应的内存空间;该数据搬移指令携带该订阅组的标识,该订阅组标识同一指示该订阅组;DDM模块601根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:DDM模块601从该数据搬移指令中获取所述订阅组的标识;DDM模块601根据该订阅组的标识,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该多个地址中的每个地址为起始地址的内存中。

可选的,DDM模块601保存一个或多个队列,每个该队列包括多个队列单元,该队列用于调度数据搬移指令,该多个队列单元中的每个队列单元分别与多个数据搬移指令中的一个数据搬移指令对应,该多个数据搬移指令包括该来自第一进程的数据搬移指令。

可选的,DDM模块601在接收到来自第一进程的数据搬移指令后,为该来自第一进程的数据搬移指令分配第一队列单元,该第一队列单元包括在该多个队列单元中;DDM模块601将该来自第一进程的数据搬移指令对应的任务描述符存储在该第一队列单元中,该任务描述符包括该源地址、该待搬移数据量和该目的地址;DDM模块601根据该来自第一进程的数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:当该第一队列单元被调度时,DDM模块601解析该任务描述符,得到该源地址、待搬移数据量和该目的地址;DDM模块601在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

可选的,当DDM模块601保存多个队列时,不同队列的优先级不同,优先级高的队列被优先调度。

可选的,当DDM模块601保存多个队列时,DDM模块601根据循环调度算法或加权循环调度算法调度该多个队列。

其中,上述方法实施例涉及的各操作的所有相关内容均可以援引到DDM模块601的功能描述,在此不再赘述。

由于本实施例提供的CPU芯片60可执行上述的进程间数据搬移的方法,因此其所能获得的技术效果可参考上述方法实施例,在此不再赘述。

如图7所示,为本申请实施例提供的一种内存设备70,该内存设备70包括DDM模块701。

DDM模块701接收来自第一进程的数据搬移指令,该数据搬移指令用于指示源地址、待搬移数据量和目的地址,该源地址属于该第一进程对应的内存空间、该目的地址属于该第二进程对应的内存空间,该待搬移数据为该第一进程待发送给该第二进程的数据;DDM模块701根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

可选的,该第二进程包括多个进程;DDM模块701在接收来自第一进程的数据搬移指令之前,创建订阅组的标识以及该订阅组,该订阅组包括该第一进程的标识、该源地址、该待搬移数据量、该多个进程的标识,和该目的地址,该目的地址包括多个地址,该多个地址分别属于该多个进程中每个进程对应的内存空间;该数据搬移指令携带该订阅组的标识,该订阅组标识同一指示该订阅组;DDM模块701根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:DDM模块701从该数据搬移指令中获取所述订阅组的标识;DDM模块701根据该订阅组的标识,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该多个地址中的每个地址为起始地址的内存中。

可选的,DDM模块701保存一个或多个队列,每个该队列包括多个队列单元,该队列用于调度数据搬移指令,该多个队列单元中的每个队列单元分别与多个数据搬移指令中的一个数据搬移指令对应,该多个数据搬移指令包括该来自第一进程的数据搬移指令。

可选的,DDM模块701在接收到来自第一进程的数据搬移指令后,为该来自第一进程的数据搬移指令分配第一队列单元,该第一队列单元包括在该多个队列单元中;DDM模块701将该来自第一进程的数据搬移指令对应的任务描述符存储在该第一队列单元中,该任务描述符包括该源地址、该待搬移数据量和该目的地址;DDM模块701根据该来自第一进程的数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:当该第一队列单元被调度时,DDM模块701解析该任务描述符,得到该源地址、待搬移数据量和该目的地址;DDM模块701在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

可选的,当DDM模块701保存多个队列时,不同队列的优先级不同,优先级高的队列被优先调度。

可选的,当DDM模块701保存多个队列时,DDM模块701根据循环调度算法或加权循环调度算法调度该多个队列。

其中,上述方法实施例涉及的各操作的所有相关内容均可以援引到DDM模块701的功能描述,在此不再赘述。

由于本实施例提供的内存设备70可执行上述的进程间数据搬移的方法,因此其所能获得的技术效果可参考上述方法实施例,在此不再赘述。

如图8所示,为本申请实施例提供的一种计算机设备80,计算机设备80包括内存设备801和处理器802,处理器802包括DDM模块8021和至少一个处理单元8022,处理器802通总线与内存设备801连接。可选的,处理单元8022包括CPU核。

DDM模块8021执行如下操作:

DDM模块8021接收来自第一进程的数据搬移指令,该数据搬移指令用于指示源地址、待搬移数据量和目的地址,该源地址属于该第一进程对应的内存空间,该目的地址属于第二进程对应的内存空间,该待搬移数据为该第一进程待发送给该第二进程的数据;DDM模块8021根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

可选的,该第二进程包括多个进程;DDM模块8021在接收来自第一进程的数据搬移指令之前,创建订阅组的标识以及该订阅组,该订阅组包括该第一进程的标识、该源地址、该待搬移数据量、该多个进程的标识,和该目的地址,该目的地址包括多个地址,该多个地址分别属于该多个进程中每个进程对应的内存空间;该数据搬移指令携带该订阅组的标识,该订阅组的标识用于指示该订阅组;DDM模块8021根据该数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:DDM模块8021从该数据搬移指令中获取该订阅组的标识;DDM模块8021根据该订阅组的标识,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以多个地址中的每个地址为起始地址的内存中。

可选的,DDM模块8021保存一个或多个队列,每个该队列包括多个队列单元,该队列用于调度数据搬移指令,该多个队列单元中的每个队列单元分别与多个数据搬移指令中的一个数据搬移指令对应,该多个数据搬移指令包括该来自第一进程的数据搬移指令。

可选的,DDM模块8021在接收到来自第一进程的数据搬移指令后,为该来自第一进程的数据搬移指令分配第一队列单元,该第一队列单元包括在该多个队列单元中;DDM模块8021将该来自第一进程的数据搬移指令对应的任务描述符存储在该第一队列单元中,该任务描述符包括该源地址、该待搬移数据量和该目的地址;DDM模块8021根据该来自第一进程的数据搬移指令,在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中,包括:当该第一队列单元被调度时,DDM模块8021解析该任务描述符,得到该源地址、该待搬移数据量和该目的地址;DDM模块8021在以该源地址为起始地址,大小为该待搬移数据量的内存中读取该待搬移数据,并将读取的该待搬移数据复制到以该目的地址为起始地址的内存中。

可选的,当DDM模块8021保存多个队列时,不同队列的优先级不同,优先级高的队列被优先调度。

可选的,当DDM模块8021保存多个队列时,DDM模块8021根据循环调度算法或加权循环调度算法调度该多个队列。

其中,上述方法实施例涉及的各操作的所有相关内容均可以援引到DDM模块8021的功能描述,在此不再赘述。

由于本实施例提供的计算机设备80可执行上述的进程间数据搬移的方法,因此其所能获得的技术效果可参考上述方法实施例,在此不再赘述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。

尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。

尽管上述实施例结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的范围的情况下,本领域的技术人员可对其进行各种修改和组合。倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:数据编码方法、装置及储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!