一种实现虚拟机间通信的方法及装置制造方法

文档序号:6621008阅读:1625来源:国知局
一种实现虚拟机间通信的方法及装置制造方法
【专利摘要】本发明实施例公开了一种实现虚拟机间通信的方法及系统,用于减少PCIe设备的硬件资源消耗,VM间通信的效率高。本发明实施例方法包括:所述DMA引擎在收到所述PF处理器的接收指令后,从所述接收指令对应的VM上读取数据并将所述数据存储到所述管理器中;所述DMA引擎在收到所述PF处理器的发送指令后,从所述管理器读取数据并将所述数据存储到所述发送指令对应的VM中。
【专利说明】一种实现虚拟机间通信的方法及装置

【技术领域】
[0001] 本发明涉及通信【技术领域】,具体涉及一种实现虚拟机间通信的方法及装置。

【背景技术】
[0002] 在物理机,通常是中央处理单元(Central Processing Unit,简称CPU)上通过虚 拟机监控器(Virtual Machine Manager,简称VMM)生成多个虚拟机(Virtual Machine,简 称VM),每个VM运行在一个完全隔离的环境中,可以理解为在物理机上模拟出多个虚拟的 计算机,虚拟机如同虚拟的计算机,可以像真正的计算机那样进行工作。
[0003] PCIe (也可以叫做 PCI-Express,全称是 Peripheral Component Interface Express)是最新的总线和接口标准,主要优势是数据传输速率高,而且它新增了单根节点 的输入/输出虚拟化规范(Single Root I/O Virtualization,简称SR-I0V)技术,可以实 现多个如VM共享网卡等PCIe设备与CPU的连接。PCIe设备是CPU的外围设备,SR-I0V规 范允许一个PCIe设备通过虚拟化技术,将PCIe设备划分得到一个具备其所有物理功能的 PCIe子设备,称之为物理功能(Physical Function,简称PF),通过虚拟化技术生成多个虚 拟功能(Virtual Function,简称VF),每个VF可以看作一个虚拟的PCIe设备,其中,PF除 了具备PCIe设备的所有功能,还具备SR-I0V扩展的配置和管理功能;VF依赖于某一个PF, 具备PCIe设备的轻量级功能,包括数据传输所必要的资源和少量的配置资源。可以将一个 或多个VF分配给一个VM,进而每个VM都可以看到一个独立的虚拟的PCIe设备,即VF。也 就是说CPU上运行的一个VM可以对应PCIe设备中的一个VF。
[0004] 例如,通过PCIe总线连接CPU与PCIe设备,将PCIe设备中的一个或多个VF分配 给CPU中的一个VM,此时多个VM可以共享PCIe设备。当多个VM之间需要数据交互时,需 要通过VF之间通信实现,即一个VM的数据从CPU经由PCIe接口发送至PCIe设备中与该 VM对应的VF,并由VF发给目的VF,再由目的VF经由PCIe接口发送至CPU中的目的VM。由 于VF只具备数据传输所必要的资源和少量的配置资源,因此,VF的通信需要通过PF进行 总体管理,比如,判断两个VF之间需要具有通信的能力或者进行全局性的调节等等。现有 SR-I0V规范并没有给出PF与VF通信的具体实现机制。如图1所示,在物理机中通过VMM 生成N个VM,以及包括一个PCIe管理器和PCIe复合接口,VMM分别与VM和PCIe管理器 连接,且该VMM连接到PCIe复合接口上;网卡中包括一个PF、N个VF以及PCIe终端接口, PCIe总线分别与PF和VF连接,且CPU的PCIe复合接口通过PCIe总线连接到PCIe终端 接口上。为每个VF分配一套硬件实现的Mailbox (邮箱)缓存和Door Bell (门铃)寄存 器来实现PF和VF之间的通信,即在网卡中为每个VF配置一个Mailbox缓存和一个Door Bell寄存器,实现一种类似"敲门铃"的机制。若VF有数据需要发送,那么将数据直接发送 给PF,那么PF与VF之间再通过"敲门铃"的机制,将数据转发给目的VF。
[0005] 在上述图1所示实施例中,一个PF对应着N个VF,在VF需要发送数据时,就直接 给PF发送数据,可能造成同时有多个VF给PF发送数据,而PF内存有限,可能造成数据丢 失,另外,由于Mailbox缓存的内存大小受限于网卡内存大小,如果PF与VF之间通信的长 度大于64bytes,而网卡内存小于64bytes,需要将数据拆分成多次,降低系统性能。


【发明内容】

[0006] 针对上述缺陷,本发明实施例提供了一种实现虚拟机间通信的方法及装置,能够 减少PCIe设备的硬件资源消耗,支持VM间大数据的传输,提高VM间通信的效率和可靠性。
[0007] 本发明第一方面提供了一种实现虚拟机间通信的方法,应用于总线和接口标准 PCIe设备中,所述PCIe设备与物理机通过PCIe总线连接,所述物理机中包括多个虚拟机 VM和一个管理器,多个所述VM和管理器通过虚拟化技术实现在所述物理机中;所述PCIe 设备中包括直接存储器存取DMA引擎、一物理功能PF处理器和多个虚拟功能VF处理器,所 述PF处理器和多个VF处理器通过虚拟化技术实现在所述PCIe设备中;其中,一个所述VM 关联一个或多个所述VF处理器,所述管理器关联所述PF处理器;所述方法包括:
[0008] 所述DMA引擎在收到所述PF处理器的接收指令后,从所述接收指令对应的VM上 读取数据并将所述数据存储到所述管理器中;
[0009] 所述DMA引擎在收到所述PF处理器的发送指令后,从所述管理器读取数据并将所 述数据存储到所述发送指令对应的VM中。
[0010] 结合第一方面,在第一种可能的实现方式中,所述DMA引擎在收到所述PF处理器 的接收指令之前包括:所述PF处理器接收所述DMA引擎发送的第一通知信息,所述第一通 知信息为所述DMA引擎用于通知所述PF处理器有VM需要发送数据;所述PF处理器检测所 述管理器是否准备好接收所述VF处理器对应的VM发送的数据;若是,所述PF处理器向所 述DMA引擎发送接收指令,所述接收指令包括需要发送数据的VM。
[0011] 结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述PF处 理器检测所述管理器是否准备好接收所述VF处理器对应的VM发送的数据包括:所述PF处 理器检测所述管理器中已分配的接收缓存是否空闲以确定所述管理器是否准备好接收所 述VF处理器对应的VM发送的数据,所述管理器中已分配的接收缓存用于存储数据。
[0012] 结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能 的实现方式,在第三种可能的实现方式中,所述从所述管理器的发送缓存读取数据并将所 述数据存储到所述发送指令对应的VM的接收缓存中之后包括:所述DMA引擎向所述PF处 理器发送第一响应信息,所述第一响应信息用于通知所述PF处理器,已成功将所述接收指 令对应的VM发送的数据存储到所述管理器中。
[0013] 结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能 的实现方式,或第三种可能的实现方式,在第四种可能的实现方式中,所述DMA引擎在收到 所述PF处理器的发送指令之后包括:所述DMA引擎检测所述发送指令对应的VM是否准备 好接收所述数据;若是,执行从所述管理器读取数据并将所述数据存储到所述发送指令对 应的VM中的步骤。
[0014] 结合第四种可能的实现方式,在第五种可能的实现方式中,所述DMA引擎检测所 述发送指令对应的VM是否准备好接收所述数据包括:所述DMA引擎检测所述发送指令对应 的VM中已分配的接收缓存是否空闲以确定所述发送指令对应的VM是否准备好接收所述数 据,所述发送指令对应的VM中已分配的接收缓存用于存储数据。
[0015] 结合第四种可能的实现方式,或第五种可能的实现方式,在第六种可能的实现方 式中,在所述从所述管理器读取数据并将所述数据存储到所述发送指令对应的VM中之后 包括:所述DMA引擎向所述PF处理器发送第二响应信息,所述第二响应信息用于通知所述 PF处理器已成功从所述管理器中读取数据并存储到所述发送指令对应的VM中;所述DMA 引擎向所述发送指令对应的VM相关联的VF处理器发送第二通知信息,所述第二通知信息 用于通知所述发送指令对应的VM相关联的VF处理器,已成功将所述管理器的数据存储到 所述发送指令对应的VM中。
[0016] 本发明实施例第二方面提供了一种直接存储器存取DMA引擎,应用于总线和接口 标准PCIe设备中,所述PCIe设备与物理机通过PCIe总线连接,所述物理机中包括多个虚 拟机VM和一个管理器,多个所述VM和管理器通过虚拟化技术实现在所述物理机中;在所述 PCIe设备中包括所述DMA引擎、一物理功能PF处理器和多个虚拟功能VF处理器,所述PF 处理器和多个VF处理器通过虚拟化技术实现在所述PCIe设备中,其中,一个所述VM关联 一个或多个所述VF处理器,所述管理器关联所述PF处理器,所述DMA引擎包括:
[0017] 第一处理模块,用于在收到所述PF处理器的接收指令后,从所述接收指令对应的 VM上读取数据并将所述数据存储到所述管理器中;
[0018] 第二处理模块,用于在收到所述PF处理器的发送指令后,从所述管理器读取数据 并将所述数据存储到所述发送指令对应的VM中。
[0019] 结合第二方面,在第一种可能的实现方式中,所述DMA引擎还包括:第一响应模 块,用于向所述PF处理器发送第一响应信息,所述第一响应信息用于通知所述PF处理器, 已成功将所述接收指令对应的VM发送的数据存储到所述管理器中。
[0020] 结合第二方面,或第二方面的第一种可能的实现方式,在第二种可能的实现方式 中,所述DMA引擎还包括:检测模块,用于检测所述发送指令对应的VM是否准备好接收所述 数据。
[0021] 结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述DMA 引擎还包括:第二响应模块,用于向所述PF处理器发送第二响应信息,所述第二响应信息 用于通知所述PF处理器已成功从所述管理器中读取数据存储到所述发送指令对应的VM 中;和,向所述发送指令对应的VM相关联的VF处理器发送第二通知信息,所述第二通知信 息用于通知所述发送指令对应的VM相关联的VF处理器,已成功将所述管理器的数据存储 到所述发送指令对应的VM中。
[0022] 本发明实施例第三方面还提供了一种实现虚拟机间通信的系统,可包括:总线和 接口标准PCIe设备和物理机,所述PCIe设备与物理机通过PCIe总线连接,所述物理机中 包括多个虚拟机VM和一个管理器,所述多个VM和管理器通过虚拟化技术实现在所述物理 机中;所述PCIe设备中包括一物理功能PF处理器、多个虚拟功能VF处理器和直接存储器 存取DMA引擎,所述PF处理器和多个VF处理器通过虚拟化技术实现在所述PCIe设备中; 其中,一个所述VM关联一个或多个所述VF处理器,所述管理器关联所述PF处理器;
[0023] 所述DMA引擎包括:
[0024] 第一处理模块,用于在收到所述PF处理器的接收指令后,从所述接收指令对应的 VM上读取数据并将所述数据存储到所述管理器中;
[0025] 第二处理模块,用于在收到所述PF处理器的发送指令后,从所述管理器读取数据 并将所述数据存储到所述发送指令对应的VM中;
[0026] 所述PF处理器用于向所述DMA引擎发送所述接收指令和所述发送指令。
[0027] 结合第三方面,在第一种可能的实现方式中,所述PF处理器还用于:接收所述DMA 引擎发送的第一通知信息,所述第一通知信息为所述DMA引擎用于通知所述PF处理器有VM 需要发送数据;检测所述管理器是否准备好接收所述VF处理器对应的VM发送的数据;若 是,则执行向所述DMA引擎发送所述接收指令和所述发送指令的步骤,所述接收指令包括 需要发送数据的VM。
[0028] 结合第三方面,或第三方面的第一种可能的实现方式,在第二种可能的实现方式 中,所述PF处理器还用于:检测所述管理器中已分配的接收缓存是否空闲以确定所述管理 器是否准备好接收所述VF处理器对应的VM发送的数据,所述发送指令对应的VM中已分配 的接收缓存用于存储数据。
[0029] 结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述DMA 引擎还包括:第一响应模块,用于向所述PF处理器发送第一响应信息,所述第一响应信息 用于通知所述PF处理器,已成功将所述接收指令对应的VM发送的数据存储到所述管理器 中。
[0030] 结合第三方面,在第四种可能的实现方式中,所述DMA引擎还包括:检测模块,用 于检测所述发送指令对应的VM是否准备好接收所述数据。
[0031] 结合第三方面的第四种可能的实现方式,在第五种可能的实现方式中,所述DMA 引擎还包括:第二响应模块,用于向所述PF处理器发送第二响应信息,所述第二响应信息 用于通知所述PF处理器已成功从所述管理器中读取数据存储到所述发送指令对应的VM 中;和,向所述发送指令对应的VM相关联的VF处理器发送第二通知信息,所述第二通知信 息用于通知所述发送指令对应的VM相关联的VF处理器,已成功将所述管理器的数据存储 到所述发送指令对应的VM中。
[0032] 从以上技术方案可以看出,本发明实施例提供的一种实现虚拟机间通信的方法及 装置具有以下优点:通过直接存储器存取(Direct Memory Access,简称DMA)引擎在PF处 理器关联的管理器与VF处理器关联的VM之间实现数据的直接读取与存储,从而实现VM之 间的通信,与现有技术相比,无需在PCIe设备中给PF处理器和VF处理器分配相应的缓存, 能够减少PCIe设备硬件资源的消耗,且可以直接传输大数据,有效提高VM之间通信的效 率。

【专利附图】

【附图说明】
[0033] 为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。
[0034] 图1为本发明现有技术提供的虚拟机通信应用示意图;
[0035] 图2a为本发明实施例提供的实现虚拟机间通信的方法流程示意图;
[0036] 图2b为本发明实施例提供的实现虚拟机间通信的方法的实现示意图;
[0037] 图3为本发明实施例提供的虚拟机通信应用示意图;
[0038] 图4为本发明另一实施例提供的实现虚拟机间通信的方法流程示意图;
[0039] 图5为本发明另一实施例提供的实现虚拟机间通信的方法流程示意图;
[0040] 图6为本发明实施例提供的DMA引擎结构示意图;
[0041] 图7a为本发明实施例提供的实现虚拟机间通信的系统的结构示意图;
[0042] 图7b为本发明实施例提供的实现虚拟机间通信的系统的应用示意图。

【具体实施方式】
[0043] 本发明实施例提供了一种实现虚拟机间通信的方法及装置,用于减少PCIe设备 的硬件资源消耗,提高VM间的通信效率。
[0044] 下面将结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整 地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本 发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实 施例,都属于本发明保护的范围。
[0045] 本发明的说明书和权利要求书及上述附图中的术语"第一"、"第二"、"第三""第 四"等(如果存在)是用于区别类似的对象,而不是用于描述特定的顺序或先后次序。应该 理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以 除了在这里图示或描述的那些以外的顺序实施。此外,术语"包括"和"具有"以及他们的任 何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、 产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于 这些过程、方法、产品或设备固有的其它步骤或单元。
[0046] 下面将以具体实施例,对本发明进行详细介绍:
[0047] 请参阅图2a,图2a为本发明实施例提供的实现虚拟机间通信的方法流程示意图; 并结合图2b,图2b为本发明实施例提供的实现虚拟机间通信的方法的实现示意图;如图2a 所示,一种实现虚拟机间通信的方法,应用于如图2b所示的总线和接口标准PCIe设备中, 所述PCIe设备与物理机通过PCIe总线连接,所述物理机中包括N个VM和一个管理器,N 个VM和管理器通过虚拟化技术实现在物理机中;所述PCIe设备中包括DMA引擎,并在所述 PCIe设备中配置一物理功能PF处理器和Μ个虚拟功能VF处理器,PF处理器和VF处理器 通过虚拟化技术实现在PCIe设备中,其中,Ν和Μ均为大于或等于1的正整数;一个所述VM 关联一个或多个VF处理器,所述管理器关联所述PF处理器。
[0048] 如图2a所示,一种实现虚拟机间通信的方法具体可包括:
[0049] S201、所述DMA引擎在收到所述PF处理器的接收指令后,从所述接收指令对应的 VM上读取数据并将所述数据存储到所述管理器中;
[0050] PCIe设备与物理机之间通过PCIe总线连接,DMA引擎与PF处理器和VF处理器相 连接,通过DMA引擎控制进行VM之间数据的直接存取。
[0051] 接收指令中至少包括需要发送数据的VM,说明该VM已经准备好了需要发送的数 据,同时管理器已经做好接收数据的准备,DMA引擎可以从接收指令对应的VM读取数据存 储到管理器中。
[0052] 因此,在步骤S201之前,PF处理器作出如下处理:
[0053] A1、所述PF处理器接收所述DMA引擎发送的第一通知信息,所述第一通知信息为 所述DMA引擎用于通知所述PF处理器有VM需要发送数据;
[0054] A2、所述PF处理器检测所述管理器是否准备好接收所述VF处理器对应的VM发送 的数据;
[0055] A3、若是,所述PF处理器向所述DMA引擎发送接收指令,所述接收指令包括需要发 送数据的VM。
[0056] 在成功读取接收指令对应的VM上的数据,并存储到管理器之后,DMA引擎向PF处 理器发送第一响应信息,该第一响应信息用于通知PF处理器,其成功将所述接收指令对应 的VM发送的数据存储到管理器中。
[0057] S202、所述DMA引擎在收到所述PF处理器的发送指令后,从所述管理器读取所述 数据并将所述数据存储到所述发送指令对应的VM中。
[0058] 本发明实施例的执行主体是DMA引擎,DMA引擎将从接收指令对应的VM中读取数 据,并将数据存储到管理器中;如果DMA引擎接收到PF处理器发送的发送指令,那么将从管 理器中读取数据,并将数据存储到发送指令对应的VM中。本发明实施例以管理器作为中转 点,通过DMA引擎在VM与管理器之间进行直接存取,进而实现了 VM之间的通信,且不会受 限于PCIe设备的硬件资源,支持大数据的处理,传输效率较高。
[0059] 在DMA引擎收到所述PF处理器的发送指令之后,DMA引擎还将检测该发送指令对 应的VM是否准备好接收数据,若是,则从管理器读取数据并将所述数据存储到发送指令对 应的VM中。
[0060] 在成功读取管理器中的数据,并存储到发送指令对应的VM后,DMA引擎还将给PF 处理器发送第二响应信息,用于通知PF处理器其已成功从管理器中读取数据并存储到发 送指令对应的VM中;再向接收数据的VM相关联的VF处理器发送第二通知信息,用于通知 接收数据的VM相关联的VF处理器,其已成功将管理器的数据存储到其相关联的VM中。
[0061] 在本发明优选的实施例中,每个VM在其内存中分配两块地址连续的内存空间作 为VF缓存,例如接收缓存和发送缓存。其中,接收缓存用于接收来自管理器的数据,发送缓 存用于存储发送到管理器的数据。相应地,在管理器中也分配两块地址连续的内存空间作 为PF缓存,同样分别命名为接收缓存和发送缓存。VM的接收缓存和发送缓存的大小可以大 于64Bytes,相应地,管理器中的接收缓存和发送缓存的大小也大于64Bytes,实际应用中 接收缓存和发送缓存的大小取决于物理机内存的大小。由于管理器作为VM通信之间通信 的中转点,因此,可以先分配管理器的接收缓存和发送缓存,之后根据管理器中接收缓存和 发送缓存的大小来分配所有VM中的接收缓存和发送缓存。
[0062] 同时,为PF处理器和每一个VF处理器配置相关的寄存器组。其中,PF处理器配 置的寄存器组及其基本功能如下:
[0063] Al、PF_Mailbox_Size :PF处理器可进行读写操作,由PF处理器写入能够支持的最 大缓存大小。
[0064] A2、PF_RxMailbox_Addr :PF处理器可进行读写操作,是PF处理器在其内存中分配 用于存储来自VF的数据的起始地址(即管理器中接收缓存中存储数据的起始地址)。
[0065] A3、PF_TxMailbox_Addr :PF处理器可进行读写操作,是PF处理器在其内存中分 配,用于存储发送到VF的数据的起始地址(即管理器中发送缓存的起始地址)。
[0066] A4、PF_TxLength :PF处理器可进行读写操作,是PF处理器放入到发送缓存中数据 的有效长度值。
[0067] A5、Dest_VF :PF处理器可进行读写操作,由PF处理器写入,是发送缓存中的数据 发往的目标VF。
[0068] A6、VF_Req_Sts :PF可进行读取操作,还可以写0清零,是一个多位的状态寄存器, 每一位对应一个VF处理器。当VF处理器把VF请求寄存器中对应的VF处理器的某个寄存 器设置为1后,会触发一个中断发给PF。PF处理器通过读此寄存器可以知道哪些VF处理 器准备发送数据给自己。
[0069] A7、PF_Rx_En :PF可进行读取操作和写1置位操作,是一个多位的控制寄存器,每 一位对应一个VF处理器。当PF处理器确定管理器的接收缓存是空闲时,确定从某个VF处 理器接收数据,就需要把对应的某位寄存器设置为1(可以同时也把PF_Rx_D 〇ne寄存器中 对应寄存器清零),以通知DMA引擎开始从VF处理器关联的VM的发送缓存中开始读取数据 到PF处理器关联的管理器的接收缓存中。一旦DMA引擎读取完成,DMA引擎需要把此寄存 器的对应位清零,同时把下面的PF接收完成寄存器PF_Rx_D 〇ne对应的某位设置为1 (表明 已经放入了数据需要PF处理器来进行处理)。
[0070] 值得注意的是,PF处理器一次只能把PF_Rx_En中的一位设置为1,即DMA引擎一 次只能从一个VF处理器读取数据。
[0071] A8、PF_Rx_Done :PF处理器可进行读取操作和可以写0清零操作,是一个多位的状 态寄存器,每一位对应一个VF处理器。当DMA引擎把来自某个VF处理器关联的发送缓存 的数据读取完毕了后,会发送一个中断给PF处理器,同时把此寄存器的相应位设置为1。PF 处理器可以读此寄存器来知道其接收缓存中的数据是否有效。PF处理器把接收缓存中的数 据取走或使用完毕后,可以把此寄存器的相应位设置为〇,以便可以准备接收新的数据。
[0072] A9、PF_Rx_Length :PF处理器可进行读取操作,当DMA引擎把存储到管理器的接收 缓存中的数据的有效长度值写入到其中,此寄存器中的值只有在PF_Rx_D 〇ne为1时有效。
[0073] A10、PF_Req :PF处理器可进行读取操作和可写入1置位,但不能清零。一旦PF处 理器把待发送的数据完整地放入到了发送缓存后,把目标VF写入到Dest_VF中,把发送数 据的长度写入到PF_TxLength后,可以把此寄存器设置为1,通知DMA引擎PF处理器有数据 需要发送。当DMA引擎发现对应的目标VF的PF_Done寄存器为0,可以开始进行数据的读 取。一旦读取完成,DMA引擎把PF_Req清零、同时把对应VF处理器的PF_Done置为1,VF 处理器的PF_TxLength写入实际读取的数据长度值。PF处理器发现此PF_Req寄存器被清 零后,可以向接收缓存中放入新的数据。
[0074] 相应地,为VF配置的寄存器组及其基本功能如下:
[0075] Bl、PF_Mailbox_Size :VF处理器可以进行读取操作,是PF处理器中的PF_ Mailb〇X_Size的镜像,只是一个只读的寄存器,用于告知VF处理器PF处理器支持的缓存大 小;
[0076] 在PF处理器关联的管理器分配好缓存大小后,把其大小值写入到PF_Mailbox_ Size中,各个VM通过读去各自关联的VF处理器中的镜像PF_Mailb〇X_SiZe获得管理器设 置的缓存大小,以便正确设置VM发送到PF的数据大小,避免超过PF处理器分配的缓存大 小而出现数据丢失。
[0077] B2、VF_RxMailbox_Addr :VF处理器可进行读写操作,是VF处理器在其内存中分 配,存储来自PF处理器数据的缓存起始地址(即接收缓存的起始地址)。
[0078] B3、VF_TxMailbox_Addr :VF处理器可进行读写操作,是VF处理器在其内存中分 配,用于存放发送到PF处理器数据的缓存起始地址(即发送缓存的起始地址)。
[0079] B4、VF_TxLength :VF处理器可以进行读写操作,是VF处理器放入到发送缓存中的 数据的有效长度值。
[0080] B5、VF_Req :VF处理器可以进行读取操作和可写1置位,但不能清零。一旦VF处 理器把待发送的数据完整地放入到了发送缓存后,可以把此寄存器设置为1,来触发一个中 断发送到PF处理器,以通知PF处理器来接收数据。此寄存器将会在PF处理器接收完数 据,对其PF_Rx_D 〇ne寄存器清零后清除。VF处理器发现此寄存器被清零后,表明发送缓存 可以放入新的数据。
[0081] B6、PF_Done :VF处理器可进行读取操作和可写0清零,但VF处理器不能写1置位。 当DMA引擎把来自PF处理器关联的管理器中的发送缓存中的数据读取到该VF的接收缓存 中后,会把此寄存器置1,来触发一个中断发送到VF处理器,以通知VF处理器来接收数据; 或者VF处理器通过定时查询此寄存器是否为1来判断是否需要来接收数据。在VF处理器 把接收缓存中的数据使用完后,可以向此寄存器写〇清零,以便可以接收新的数据。
[0082] B7、PF_TxLength :VF处理器只能读取不能写入,当DMA引擎把来管理器的发送缓 存中的数据读取到该VF的接收缓存中后,会把具体写入的长度值写入到此寄存器中,以便 VF处理器取用。
[0083] 值得注意的是,PF_TxLength寄存器中的值只是在PF_Done为1时有效。
[0084] 下面以X86平台为例,对本发明进行进一步介绍。具体如图3所示,X86平台中CPU 通过PCIe总线与PCIe设备连接,CPU中通过VMM生成N个VM,并配置管理器,分别为每个 VM和管理器分配连续的两块内存,分别为接收缓存和发送缓存,每一个VM与PCIe设备中的 一个或多个VF处理器进行关联,管理器与PF进行关联,具体地,每个VM中有其操作系统, 对应地,还安装与该VM相关联的VF处理器的VF驱动。同样地,管理器中除了安装其操作 系统,还相应安装有与该管理器相关联的PF处理器的PF驱动。
[0085] 其中,物理机中还包括有PCIe协议规定的PCIe根节点(英文:PCIe Root Complex,可以简称RC),该PCIe根节点通过PCIe协议规定的根端口(英文:Root Port,可 以简称为RP)连接到PCIe总线上。而在PCIe设备中还包括PCIe协议规定的PCIe终节点 (英文:PCIe Endpoint),该PCIe终节点连接到PCIe总线上,并与PF处理器、每一个VF处 理器连接。
[0086] 在PF处理器还包括寄存器组,其中,寄存器组中包括上述介绍的寄存器;同样,在 每一个VF处理器包括有一个寄存器组,其寄存器组中包括上述介绍的VF处理器的寄存器。
[0087] 基于上述架构,可以理解的是,可以将原来的VF处理器与PF处理器之间通信通过 VM与VM之间通信来实现。下面将介绍将VF处理器相关联的VM的数据存储到PF处理器相 关联的管理器中的实现流程,具体请参阅图4,图4为本发明另一实施例提供的实现虚拟机 间通信的方法的流程示意图,可包括:
[0088] S401、VF处理器确定寄存器VF_Req的值是否被清除;
[0089] 其中,寄存器VF_Req的值是否被清除,也就是寄存器VF_Req的值是否等于1'bO。 在VF处理器相关联的VM的发送缓存被放入数据时,寄存器VF_Req写1置位,在VM的发送 缓存中的数据被读取之后,被清除。在没有被清除时,发送执行步骤S401 ;在被清除时,执 行步骤S402。
[0090] S402、VF处理器将待发送的数据写入发送缓存,并将数据长度写入寄存器VF_ TxLength,并对寄存器VF_Req写1置位;
[0091] 其中,VF处理器可以对VF_Req写1置位,但不能清零。VF_Req写1置位,就是对 寄存器VF_Req写入Γ bl,说明VF处理器已经把待发送的数据放入发送缓存,可以通知PF 处理器来接收数据。
[0092] S403、DMA引擎检测到寄存器VF_Req置位后,将PF处理器的寄存器VF_Req_Sts对 应的VF处理器的状态寄存器置位,并向PF处理器发送第一通知信息;
[0093] DMA引擎将PF处理器中的多位的状态寄存器中对应该VF处理器的寄存器置位,然 后向PF处理器发送第一通知信息,以便PF处理器知道哪个VF处理器相关联的VM需要发 送数据。
[0094] 具体地,第一通知信息是DMA引擎在将寄存器VF_Req_Sts对应的VF处理器的状 态寄存器置位后,产生的一个中断信号。
[0095] S404、PF处理器检测管理器中的接收缓存是否空闲;
[0096] 在管理器的接收缓存空闲时,可以用来接收来自VM的数据;管理器的接收缓存不 空闲时,则继续等待,直到管理器的接收缓存空闲。因此,在管理器接收缓存空闲时,转向步 骤 S405。
[0097] S405、PF处理器根据寄存器VF_Req_Sts的值,将寄存器PF_Rx_En相应的位置1, 然后向DMA引擎发送接收指令;
[0098] PF处理器通过VF_Req_Sts中被置1的位,知道是哪个VF相关联的VM发送数据, 进而将PF_Rx_En相应的位也置1,说明PF处理器相关联的管理器中接收缓存已做好接收数 据的准备,DMA引擎可以去读取数据。
[0099] S406、DMA引擎从接收指令对应的VM的发送缓存中读取数据,并将读取到的数据 存储到管理器的接收缓存中;
[0100] S407、DMA引擎将寄存器PF_Rx_Done置位,并将数据长度写入寄存器PF_Rx_ Length,对寄存器PF_Rx_En清零。
[0101] 在DMA引擎成功读取数据,并将数据存储到管理器的接收缓存中后,将寄存器PF_ Rx_Done写1置位,PF处理器通过读取寄存器PF_Rx_D〇ne的值,知道管理器接收缓存中的 数据有效。同时,DMA引擎还向PF处理器发送第一响应信息,也就是发送一个中断信号,通 知PF处理器已成功将数据读取并存储。
[0102] 而读取的数据的长度已将写入寄存器PF_Rx_Length,以便PF处理器通过读取寄 存器PF_Rx_Length的值知道数据的长度。
[0103] 之后,PF处理器根据寄存器PF_Rx_D〇ne的值知道管理器的接收缓存中的数据有 效后,如果是VM之间的数据交互,需要将管理器接收缓存中的数据发送给目标VM,那么PF 处理器将管理器接收缓存中的数据放入发送缓存中,准备发送。如果管理器接收缓存中的 数据是VM相关联的VF处理器向PF处理器请求资源的信息,那么PF处理器根据管理器接 收缓存的数据,将VF处理器请求的数据放入发送缓存,同时管理器接收缓存中的数据被使 用完毕。
[0104] 然后PF处理器将寄存器PF_Rx_Done值清除,说明管理器接收缓存中的数据被读 取或使用完毕,可以准备接收新数据。将寄存器VF_Req_Sts相应的位写0清零,说明当前 该位对应的VF处理器没有数据发送。
[0105] 另外,DMA引擎还将VF处理器的寄存器VF_Req的值清除,VF处理器通过读取寄存 器VF_Req的值,在寄存器VF_Req的值被清除后,可以向相关联的VM的发送缓存放入新的 数据。
[0106] 在另一个实施例中,本发明将介绍从管理器读取数据存储到VM的实现流程,与附 图4流程相似,请参阅图5,图5为本发明另一实施例提供的实现虚拟机间通信的方法的流 程示意图,可包括:
[0107] S501、PF处理器确定寄存器PF_Req的值是否被清除;
[0108] 其中,寄存器PF_Req的值是否被清除,也就是寄存器PF_Req的值是否等于1'bO。 在寄存器PF_Req的值被清除后,可以往管理器的发送缓存中放入数据。因此,在没有被清 除时,发送执行步骤S501,直至被清除,在被清除时,转向执行步骤S502。
[0109] S502、PF处理器将待发送的数据写入发送缓存,将目标VF处理器写入到寄存器 Dest_VF和将数据的长度写入PF_Tx_Length ;
[0110] 发送缓存是指该PF处理器关联的管理器中所分配的发送缓存。
[0111] PF处理器在寄存器Dest_VF写入需要发往的目标VF处理器的身份标识号。
[0112] S503、PF处理器对寄存器PF_Req置位,向DMA引擎发送发送指令;
[0113] 其中,PF处理器可以对寄存器PF_Req置位,但不能清零。PF_Req被置位,就是将 l'bl写入寄存器PF_Req,说明PF处理器已经把待发送的数据放入管理器的发送缓存,然后 通知DMA引擎来读取。
[0114] S504、DMA引擎检测目标VF处理器的PF_Done是否清零;
[0115] 其中,在寄存器PF_Done被清零时,说明VF处理器关联的VM中的接收缓存是空闲 的,可以向接收缓存中放入数据。
[0116] 在寄存器PF_Done还没有被清零时,继续等待;在寄存器PF_Done被清零后,转向 执行步骤S505。
[0117] S505、DMA引擎从管理器的发送缓存读取数据,并将读取到的数据存储到目标VF 处理器关联的VM的接收缓存中;
[0118] DMA引擎在确定管理器的发送缓存具有待发送的数据,而且目标VF处理器关联的 VM的接收缓存空闲时,将从管理器的发送缓存读取数据并存储到目标VF关联的VM的接收 缓存中。
[0119] S506、DMA引擎对寄存器PF_Done置位,将数据的长度写入寄存器PF_TxLength和 对寄存器PF_Req写入Γ bO清除;
[0120] 在DMA引擎完成数据读取后,将目标VF处理器中的寄存器PF_Done写1置位,目 标VF处理器通过读取寄存器PF_Done来判断VM接收缓存中的数据是否有效。
[0121] S507、DMA引擎向目标VF处理器发送第二通知信息。
[0122] 第二通知信息用于通知所述目标VF处理器,已成功将所述管理器的数据存储到 其对应的VM的接收缓存中。
[0123] 具体地,第二通知信息是DMA引擎产生的一个中断信号。
[0124] 目标VF处理器在收到第二通知信息后,根据实际业务需要,对VM接收缓存中的数 据作出相应处理。之后,将PF_Done写0清零,以便VM的接收缓存可以准备接收新的数据。
[0125] 请参阅图6,本发明实施例还提供了一种基于上述实现虚拟机间通信的方法的 DMA引擎,该DMA引擎设置在附图3所示的PCIe设备中,与PF处理器和VF处理器分别连 接;如图6所示,一种DMA引擎600可包括 :
[0126] 第一处理模块610,用于在收到所述PF处理器的接收指令后,从所述接收指令对 应的VM上读取数据并将所述数据存储到所述管理器中;
[0127] 第二处理模块620,用于在收到所述PF处理器的发送指令后,从所述管理器读取 数据并将所述数据存储到所述发送指令对应的VM中。
[0128] 其中,DMA引擎中的第一处理模块在收到PF处理器的接收指令后,从所述接收指 令对应的VF处理器关联的VM上读取数据存储到所述管理器中;而第二处理模块在收到所 述PF处理器的发送指令后,从所述管理器读取所述数据存储到所述发送指令对应的VM中, 无需在PCIe设备中另外分配内存,减少PCIe设备的资源消耗,通过DMA读取数据,有效提 高了 VM之间的通信效率。
[0129] 在本发明一个可实施方式中,上述DMA引擎600还包括:
[0130] 第一响应模块,用于向所述PF处理器发送第一响应信息,所述第一响应信息用于 通知所述PF处理器,已成功将所述接收指令对应的VM发送的数据存储到所述管理器中。
[0131] 在本发明另一个可实施方式中,上述DMA引擎600还包括:
[0132] 检测模块,用于检测所述发送指令对应的VM是否准备好接收所述数据;
[0133] 若是,则由上述第二处理模块执行从所述管理器读取数据并将所述数据存储到所 述发送指令对应的VM中的步骤。
[0134] 在本发明另一个可实施方式中,上述DMA引擎600还包括:
[0135] 第二响应模块,用于向所述PF处理器发送第二响应信息,所述第二响应信息用于 通知所述PF处理器已成功从所述管理器中读取数据存储到所述发送指令对应的VM中;和, 向所述发送指令对应的VM相关联的VF处理器发送第二通知信息,所述第二通知信息用于 通知所述发送指令对应的VM相关联的VF处理器,已成功将所述管理器的数据存储到所述 发送指令对应的VM中。
[0136] 请参考图7a,图7a为本发明实施例提供的一种实现虚拟机间通信的系统的结构 示意图;如图7a所示,在该系统中包括物理机和PCIe设备,所述PCIe设备与物理机通过 PCIe总线连接,所述物理机中包括多个虚拟机VM和一个管理器,所述多个VM和管理器通过 虚拟化技术实现在所述物理机中;所述PCIe设备中包括一物理功能PF处理器、多个虚拟功 能VF处理器和直接存储器存取DMA引擎,所述PF处理器和多个VF处理器通过虚拟化技术 实现在所述PCIe设备中;其中,一个所述VM关联一个或多个所述VF处理器,所述管理器关 联所述PF处理器;
[0137] 上述DMA引擎如附图6,可以参照上述详细介绍,在此不再赘述。
[0138] 另外,上述PF处理器用于向所述DMA引擎发送所述接收指令和所述发送指令。
[0139] 在一个可实施的方式中,所述PF处理器还用于:接收所述DMA引擎发送的第一通 知信息,所述第一通知信息为所述DMA引擎用于通知所述PF处理器有VM需要发送数据; 检测所述管理器是否准备好接收所述VF处理器对应的VM发送的数据;若是,则执行向所 述DMA引擎发送所述接收指令和所述发送指令的步骤,所述接收指令包括需要发送数据的 VM。
[0140] 在一个可实施的方式中,所述PF处理器还用于:检测所述管理器中已分配的接收 缓存是否空闲以确定所述管理器是否准备好接收所述VF处理器对应的VM发送的数据,所 述发送指令对应的VM中已分配的接收缓存用于存储数据。
[0141] 请参阅图7b,图7b为本发明另一实施例提供的实现虚拟机间通信的系统的应用 示意图;在上述管理器和每一个VM中,分别分配一个发送缓存和接收缓存,同时,在PF处理 器分配有一组寄存器,在每一个VF处理器中分配有一组寄存器,具体如上述介绍,在此不 再赘述。
[0142] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部 分,可以参见其他实施例的相关描述。
[0143] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统, 装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0144] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以 通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的 划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件 可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或 讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦 合或通信连接,可以是电性,机械或其它的形式。
[0145] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显 示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个 网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目 标。
[0146] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以 是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单 元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0147] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用 时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质 上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形 式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算 机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法 的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程 序代码的介质。
[0148] 以上对本发明所提供的一种实现虚拟机间通信的方法及系统进行了详细介绍,对 于本领域的一般技术人员,依据本发明实施例的思想,在【具体实施方式】及应用范围上均会 有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1. 一种实现虚拟机间通信的方法,应用于总线和接口标准PCIe设备中,所述PCIe设 备与物理机通过PCIe总线连接,所述物理机中包括多个虚拟机VM和一个管理器,多个所述 VM和管理器通过虚拟化技术实现在所述物理机中;所述PCIe设备中包括直接存储器存取 DMA引擎、一物理功能PF处理器和多个虚拟功能VF处理器,所述PF处理器和多个VF处理 器通过虚拟化技术实现在所述PCIe设备中;其中,一个所述VM关联一个或多个所述VF处 理器,所述管理器关联所述PF处理器;其特征在于,所述方法包括: 所述DMA引擎在收到所述PF处理器的接收指令后,从所述接收指令对应的VM上读取 数据并将所述数据存储到所述管理器中; 所述DMA引擎在收到所述PF处理器的发送指令后,从所述管理器读取数据并将所述数 据存储到所述发送指令对应的VM中。
2. 根据权利要求1所述的方法,其特征在于,所述DMA引擎在收到所述PF处理器的接 收指令之前包括: 所述PF处理器接收所述DMA引擎发送的第一通知信息,所述第一通知信息为所述DMA 引擎用于通知所述PF处理器有VM需要发送数据; 所述PF处理器检测所述管理器是否准备好接收所述VF处理器对应的VM发送的数据; 若是,所述PF处理器向所述DMA引擎发送接收指令,所述接收指令包括需要发送数据 的VM。
3. 根据权利要求2所述的方法,其特征在于,所述PF处理器检测所述管理器是否准备 好接收所述VF处理器对应的VM发送的数据包括: 所述PF处理器检测所述管理器中已分配的接收缓存是否空闲以确定所述管理器是否 准备好接收所述VF处理器对应的VM发送的数据,所述管理器中已分配的接收缓存用于存 储数据。
4. 根据权利要求1?3任一项所述的方法,其特征在于,所述从所述管理器的发送缓存 读取数据并将所述数据存储到所述发送指令对应的VM的接收缓存中之后包括: 所述DMA引擎向所述PF处理器发送第一响应信息,所述第一响应信息用于通知所述PF 处理器,已成功将所述接收指令对应的VM发送的数据存储到所述管理器中。
5. 根据权利要求1?4任一项所述的方法,其特征在于,所述DMA引擎在收到所述PF 处理器的发送指令之后包括: 所述DMA引擎检测所述发送指令对应的VM是否准备好接收所述数据; 若是,执行从所述管理器读取数据并将所述数据存储到所述发送指令对应的VM中的 步骤。
6. 根据权利要求5所述的方法,其特征在于,所述DMA引擎检测所述发送指令对应的 VM是否准备好接收所述数据包括: 所述DMA引擎检测所述发送指令对应的VM中已分配的接收缓存是否空闲以确定所述 发送指令对应的VM是否准备好接收所述数据,所述发送指令对应的VM中已分配的接收缓 存用于存储数据。
7. 根据权利要求5或6所述的方法,其特征在于,在所述从所述管理器读取数据并将所 述数据存储到所述发送指令对应的VM中之后包括: 所述DMA引擎向所述PF处理器发送第二响应信息,所述第二响应信息用于通知所述PF 处理器已成功从所述管理器中读取数据并存储到所述发送指令对应的VM中; 所述DMA引擎向所述发送指令对应的VM相关联的VF处理器发送第二通知信息,所述 第二通知信息用于通知所述发送指令对应的VM相关联的VF处理器,已成功将所述管理器 的数据存储到所述发送指令对应的VM中。
8. -种直接存储器存取DMA引擎,应用于总线和接口标准PCIe设备中,所述PCIe设 备与物理机通过PCIe总线连接,所述物理机中包括多个虚拟机VM和一个管理器,多个所述 VM和管理器通过虚拟化技术实现在所述物理机中;在所述PCIe设备中包括所述DMA引擎、 一物理功能PF处理器和多个虚拟功能VF处理器,所述PF处理器和多个VF处理器通过虚 拟化技术实现在所述PCIe设备中,其中,一个所述VM关联一个或多个所述VF处理器,所述 管理器关联所述PF处理器,其特征在于,所述DMA引擎包括: 第一处理模块,用于在收到所述PF处理器的接收指令后,从所述接收指令对应的VM上 读取数据并将所述数据存储到所述管理器中; 第二处理模块,用于在收到所述PF处理器的发送指令后,从所述管理器读取数据并将 所述数据存储到所述发送指令对应的VM中。
9. 根据权利要求8所述的DMA引擎,其特征在于,所述DMA引擎还包括: 第一响应模块,用于向所述PF处理器发送第一响应信息,所述第一响应信息用于通知 所述PF处理器,已成功将所述接收指令对应的VM发送的数据存储到所述管理器中。
10. 根据权利要求8或9所述的DMA引擎,其特征在于,所述DMA引擎还包括: 检测模块,用于检测所述发送指令对应的VM是否准备好接收所述数据。
11. 根据权利要求10所述的DMA引擎,其特征在于,所述DMA引擎还包括: 第二响应模块,用于向所述PF处理器发送第二响应信息,所述第二响应信息用于通知 所述PF处理器已成功从所述管理器中读取数据存储到所述发送指令对应的VM中;和,向所 述发送指令对应的VM相关联的VF处理器发送第二通知信息,所述第二通知信息用于通知 所述发送指令对应的VM相关联的VF处理器,已成功将所述管理器的数据存储到所述发送 指令对应的VM中。
12. -种实现虚拟机间通信的系统,其特征在于,包括:总线和接口标准PCIe设备和物 理机,所述PCIe设备与物理机通过PCIe总线连接,所述物理机中包括多个虚拟机VM和一 个管理器,所述多个VM和管理器通过虚拟化技术实现在所述物理机中;所述PCIe设备中包 括一物理功能PF处理器、多个虚拟功能VF处理器和直接存储器存取DMA引擎,所述PF处 理器和多个VF处理器通过虚拟化技术实现在所述PCIe设备中;其中,一个所述VM关联一 个或多个所述VF处理器,所述管理器关联所述PF处理器; 所述DMA引擎包括: 第一处理模块,用于在收到所述PF处理器的接收指令后,从所述接收指令对应的VM上 读取数据并将所述数据存储到所述管理器中; 第二处理模块,用于在收到所述PF处理器的发送指令后,从所述管理器读取数据并将 所述数据存储到所述发送指令对应的VM中; 所述PF处理器用于向所述DMA引擎发送所述接收指令和所述发送指令。
13. 根据权利要求12所述的系统,其特征在于, 所述PF处理器还用于:接收所述DMA引擎发送的第一通知信息,所述第一通知信息为 所述DMA引擎用于通知所述PF处理器有VM需要发送数据;检测所述管理器是否准备好接 收所述VF处理器对应的VM发送的数据;若是,则执行向所述DMA引擎发送所述接收指令和 所述发送指令的步骤,所述接收指令包括需要发送数据的VM。
14. 根据权利要求12或13所述的系统,其特征在于, 所述PF处理器还用于:检测所述管理器中已分配的接收缓存是否空闲以确定所述管 理器是否准备好接收所述VF处理器对应的VM发送的数据,所述发送指令对应的VM中已分 配的接收缓存用于存储数据。
15. 根据权利要求14所述的系统,其特征在于, 所述DMA引擎还包括: 第一响应模块,用于向所述PF处理器发送第一响应信息,所述第一响应信息用于通知 所述PF处理器,已成功将所述接收指令对应的VM发送的数据存储到所述管理器中。
16. 根据权利要求12所述的系统,其特征在于, 所述DMA引擎还包括: 检测模块,用于检测所述发送指令对应的VM是否准备好接收所述数据。
17. 根据权利要求16所述的系统,其特征在于, 所述DMA引擎还包括: 第二响应模块,用于向所述PF处理器发送第二响应信息,所述第二响应信息用于通知 所述PF处理器已成功从所述管理器中读取数据存储到所述发送指令对应的VM中;和,向所 述发送指令对应的VM相关联的VF处理器发送第二通知信息,所述第二通知信息用于通知 所述发送指令对应的VM相关联的VF处理器,已成功将所述管理器的数据存储到所述发送 指令对应的VM中。
【文档编号】G06F13/28GK104123173SQ201410351456
【公开日】2014年10月29日 申请日期:2014年7月22日 优先权日:2014年7月22日
【发明者】谭锐 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1