CN114238183B - 实现Virtio设备的***、方法和介质 - Google Patents
实现Virtio设备的***、方法和介质 Download PDFInfo
- Publication number
- CN114238183B CN114238183B CN202111521682.7A CN202111521682A CN114238183B CN 114238183 B CN114238183 B CN 114238183B CN 202111521682 A CN202111521682 A CN 202111521682A CN 114238183 B CN114238183 B CN 114238183B
- Authority
- CN
- China
- Prior art keywords
- vdpa
- data
- driver
- pcie interface
- interface
- 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
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
Abstract
本公开涉及一种实现Virtio设备的***、方法和介质;其中,该***包括:主机和设备,主机中包括vDPA Driver和第一PCIe接口,设备中包括vDPA Device和第二PCIe接口,vDPA Driver和vDPA Device通过第一PCIe接口和第二PCIe接口进行通信;vDPA Driver,用于根据vDPA框架和Virtio协议规范实现Virtio设备的控制面功能;vDPA Device,用于根据第二PCIe接口和Virtio协议规范实现Virtio设备的数据面功能。本公开实施例能够支持软、硬件协同的内核框架,以及支持软、硬件协同的生态。
Description
技术领域
本公开涉及硬件接口技术领域,尤其涉及一种实现Virtio设备的***、方法和介质。
背景技术
随着云计算、虚拟化以及云原生等技术的发展,要求计算机***的主机Host与输入输出(Input/Output,简称I/O)设备之间的交互满足极速和低时延的需求,并且要尽可能的降低Host的***资源的开销。
为了满足上述要求,提出了将软件功能模块卸载到硬件设备的思路,Virtio作为一种开源的IO接口协议规范,其定义的Virtio设备为软件实现的虚拟IO设备,基于Virtio协议规范的Virtio设备能够卸载到硬件上,但是现有技术中未对与设备交互的软件进行规划定义,无法支持软、硬件协同的内核框架,不能支持软、硬件协同的生态。
发明内容
为了解决上述技术问题,本公开提供了一种实现Virtio设备的***、方法和介质。
第一方面,本公开提供了一种实现Virtio设备的***,该***包括:
主机和设备,所述主机中包括虚拟数据路径加速驱动vDPA Driver和第一高速串行计算机扩展总线标准PCIe接口,所述设备中包括虚拟数据路径加速设备vDPA Device和第二PCIe接口,所述vDPA Driver和所述vDPA Device通过所述第一PCIe接口和所述第二PCIe接口进行通信;
所述vDPA Driver,用于根据vDPA框架和Virtio协议规范实现Virtio设备的控制面功能;
所述vDPA Device,用于根据所述第二PCIe接口和Virtio协议规范实现Virtio设备的数据面功能。
可选的,所述第二PCIe接口中包括至少一个物理功能PF接口,每个PF接口中包括至少一个寄存器组,每个寄存器组与一个vDPA Device通信连接。
可选的,所述vDPA Driver,用于:
根据所述第二PCIe接口访问相应的PF接口中包括的所有寄存器组,得到每个寄存器组分别对应的目标信息;
根据所有目标信息,确定与所述每个寄存器组分别对应的vDPA Device。
可选的,所述vDPA Driver,用于:
在得到每个寄存器组分别对应的目标信息之后,创建目标结构体实例,并将所有目标信息存储至所述目标结构体实例中。
可选的,所述vDPA Driver,用于:
将接收数据的第一缓冲区信息写入与vDPA Device对应的第一寄存器组;
所述vDPA Device,用于根据所述第一寄存器组获取所述第一缓冲区信息,并将待发送数据写入与所述第一缓冲区信息对应的第一数据缓冲区中,并向所述vDPA Driver发送所述待发送数据传输成功的消息,以使所述vDPA Driver将所述第一缓冲区信息发送至所述vDPA框架。
可选的,所述vDPA Driver,用于:
接收所述vDPA框架发送的所发数据的第二缓冲区信息,将所述第二缓冲区信息写入与vDPA Device对应的第二寄存器组,并通过所述第二寄存器组中的目标寄存器向所述vDPA Device发送读取与所述第二缓冲区信息对应的第二数据缓冲区中的数据的消息;
所述vDPA Device,用于根据接收到的所述消息,从所述第二数据缓冲区中读取数据。
可选的,所述第二PCIe接口支持单根输入/输出虚拟化SR-IOV功能。
可选的,所述主机中还包括共享内存,所述设备中还包括直接存储器访问DMA,所述vDPA Device基于所述DMA与所述共享内存进行数据交互。
第二方面,本公开提供了一种实现Virtio设备的方法,应用于实现Virtio设备的***,所述***包括:主机和设备,所述主机中包括虚拟数据路径加速驱动vDPA Driver和第一高速串行计算机扩展总线标准PCIe接口,所述设备中包括虚拟数据路径加速设备vDPADevice和第二PCIe接口,所述vDPA Driver和所述vDPA Device通过所述第一PCIe接口和所述第二PCIe接口进行通信,该方法包括:
所述vDPA Driver根据vDPA框架和Virtio协议规范实现Virtio设备的控制面功能;
所述vDPA Device根据所述第二PCIe接口和Virtio协议规范实现Virtio设备的数据面功能。
可选的,所述第二PCIe接口中包括至少一个物理功能PF接口,每个PF接口中包括至少一个寄存器组,每个寄存器组与一个vDPA Device通信连接。
可选的,该方法还包括:
所述vDPA Driver根据所述第二PCIe接口访问相应的PF接口包括的所有寄存器组,得到每个寄存器组分别对应的目标信息;
根据所有目标信息,确定与所述每个寄存器组分别对应的vDPA Device。
可选的,该方法还包括:
所述vDPA Driver在得到每个寄存器组分别对应的目标信息之后,创建目标结构体实例,并将所有目标信息存储至所述目标结构体实例中。
可选的,该方法还包括:
所述vDPA Driver将接收数据的第一缓冲区信息写入与vDPADevice对应的第一寄存器组;
所述vDPA Device根据所述第一寄存器组获取所述第一缓冲区信息,并将待发送数据写入与所述第一缓冲区信息对应的第一数据缓冲区中,并向所述vDPA Driver发送所述待发送数据传输成功的消息,以使所述vDPA Driver将所述第一缓冲区信息发送至所述vDPA框架。
可选的,该方法还包括:
所述vDPA Driver接收所述vDPA框架发送所发送数据的第二缓冲区信息,将所述第二缓冲区信息写入与vDPA Device对应的第二寄存器组,并通过所述第二寄存器组中的目标寄存器向所述vDPA Device发送读取与所述第二缓冲区信息对应的第二数据缓冲区中的数据的消息;
所述vDPA Device根据接收到的所述消息,从所述第二数据缓冲区中读取数据。
可选的,所述第二PCIe接口支持单根输入/输出虚拟化SR-IOV功能。
可选的,所述主机中还包括共享内存,所述设备中还包括直接存储器访问DMA,所述vDPA Device基于所述DMA与所述共享内存进行数据交互。
第三方面,本公开还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开实施例中的任一种所述的实现Virtio设备的方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:vDPA Driver,用于根据vDPA框架和Virtio协议规范实现Virtio设备的控制面功能;vDPA Device,用于根据第二PCIe接口和Virtio协议规范实现Virtio设备的数据面功能,通过vDPA框架使得***能够兼容虚拟化技术和云原生技术生态,vDPA Driver的使用使得***更灵活,并且该***能够支持软、硬件协同的内核框架,以及支持软、硬件协同的生态。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种实现Virtio设备的***的结构示意图;
图2是本公开实施例提供的另一种实现Virtio设备的***的结构示意图;
图3是本公开实施例提供的一种实现Virtio设备的方法的流程示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1是本公开实施例提供的一种实现Virtio设备的***的结构示意图,该***应用于实现Virtio设备的方法。如图1所示,该***包括:主机(Host)110和设备120,主机110中包括虚拟数据路径加速驱动(virtioData Path AccelerationDriver,简称vDPADriver)1101和第一高速串行计算机扩展总线标准(Peripheral Component InterconnectExpress,简称PCIe)接口1102,设备120中包括vDPA设备(即vDPADevice)1201和第二PCIe接口1202,vDPA Driver1101和vDPA Device1201通过第一PCIe接口1102和第二PCIe接口1202进行通信。vDPA Driver 1101和第一PCIe接口1102相连,vDPA Device 1201和第二PCIe接口1202相连,第一PCIe接口1102和第二PCIe接口1202之间能够进行通信。
其中,Virtio可以理解为一种I/O半虚拟化解决方案,是通用I/O设备虚拟化的程序,对半虚拟化Hypervisor中的一组通用I/O设备的抽象。Virtio设备可以理解为软件实现的虚拟I/O设备。设备120可以为计算机设备,也可以为电子设备,本实施例不做具体限制。vDPA Driver1101可以理解为基于vDPA框架的设备驱动程序部件。vDPA框架可以理解为一个内核框架,其主要是为了Virtio设备卸载到硬件设备而设计的。Virtio协议规范即Virtio定义的协议或者规范。控制面(Control Plane)可以理解为数据通信中控制信息的实现路径。数据面(Data Plane)可以理解为数据通信中数据通路的实现路径。
vDPA Driver 1101根据vDPA框架和Virtio协议规范实现Virtio设备的控制面功能,即:vDPA Driver 1101是将Virtio设备的控制面功能实现在基于vDPA框架的vDPA驱动程序中。
vDPA Device 1201根据第二PCIe接口1202和Virtio协议规范实现Virtio设备的数据面功能,即:vDPA Device 1201是将Virtio设备的数据面功能卸载到硬件实现。
通过上述vDPA Driver 1101和vDPA Device 1201,两部分相组合抽象化为符合vDPA框架的Virtio设备,从而实现了在对Virtio设备进行硬件卸载时,对硬件部分和软件部分进行了统一的规划设计。
在本实施例中,vDPA Driver,用于根据vDPA框架和Virtio协议规范实现Virtio设备的控制面功能;vDPA Device,用于根据第二PCIe接口和Virtio协议规范实现Virtio设备的数据面功能,通过vDPA框架使得***能够兼容虚拟化技术和云原生技术生态,vDPADriver的使用使得***更灵活,并且该***能够支持软、硬件协同的内核框架,以及支持软、硬件协同的生态。
在本实施例中,可选的,所述主机中还包括共享内存,所述设备中还包括直接存储器访问DMA,所述vDPA Device基于所述DMA与所述共享内存进行数据交互。
其中,直接存储器访问(Direct Memory Access,DMA)允许不同速度的硬件装置来沟通,不需要依赖于中央处理器(Central Processing Unit,简称CPU)的大量中断负载。共享内存中可以包括许多数据或资源等。
具体的,主机110中包括主机操作***(HostOperating System,简称Host OS),vDPA Driver 1101和进程(Process)基于Host OS运行。由于设备120中包括DMA,因此vDPADevice 1201根据DMA能够和主机110中的共享内存进行数据交互,从而vDPA Device 1201可以从主机110中的共享内存中获取数据或者将数据存储至共享内存中。
本实施例中,vDPA Device根据DMA与共享内存进行数据交互,更简单快捷,能够节省时间,提高工作效率。
图2是本公开实施例提供的另一种实现Virtio设备的***的结构示意图。本实施例是在上述实施例的基础上进行优化。可选的,本实施例对第二PCIe接口的功能进行详细的解释说明。
如图2所示,该***包括主机110和设备120,主机110中包括vDPA Driver1101、第一PCIe接口1102和共享内存1103,其中,vDPA Driver1101、进程和共享内存1103基于HostOS运行;设备120中包括vDPADevice 0 1201-0、vDPADevice 1 1201-1、…、vDPADevice N1201-N(N为大于1的正整数)、第二PCIe接口1202和DMA 1203。vDPADevice 0 1201-0、vDPADevice 1 1201-1、…、vDPADevice N 1201-N都属于vDPA Device 1201。
需要说明的是:共享内存1103和DMA 1203在上一实施例中已经进行过说明,此处不再赘述。
图2的数据交互过程可以具体包括:进程和共享内存之间的数据交互,共享内存和DMA之间的数据交互、DMA和vDPADevice 0 1201-0、DMA和vDPADevice 1 1201-1、…以及DMA和vDPADevice N 1201-N之间的数据交互。
其中,第二PCIe接口1202中包括至少一个物理功能PF接口,每个PF接口中包括至少一个寄存器组,每个寄存器组与一个vDPA Device通信连接。
其中,物理功能(Physical Function,简称PF)接口可以理解为用于配置PCIe设备相关的信息或者控制PCIe设备的接口。
需要说明的是:寄存器组可以有多个,从而每个寄存器组能够与其对应的vDPADevice通信连接,进而实现一个PF接口支持多个vDPA Device,提高配置资源的利用率,本实施例对寄存器组的个数不做具体限制。
本实施例中的寄存器组可以配置在第二PCIe接口1202的基地址寄存器(BaseAddress Register,简称BAR)空间中。BAR空间可以理解为基地址寄存器所指向的存储空间。
示例性的,图2中第二PCIe接口1202中包括一个PF接口,该PF接口中包含了N(N为大于1的正整数)个寄存器组,寄存器组0和vDPA Device 0 1201-0通信连接,寄存器组1和vDPA Device 1 1201-1通信连接,…,寄存器组N和vDPA Device N 1201-N通信连接。
需要说明的是:第二PCIe接口1202中还可以包含多个PF接口,本实施例不做具体限制。
在本实施例中,可选的,在第二PCIe接口支持单根输入/输出虚拟化SR-IOV时,PF接口能够配置生成VF接口;相应的,第二PCIe接口中包括至少一个PF接口和至少一个VF接口,每个PF接口和每个VF接口中包括至少一个寄存器组,每个寄存器组与一个vDPA Device通信连接。
其中,单根输入/输出虚拟化(Single Root Input/Output Virtualization,简称SR-IOV)可以理解为一种基于硬件的虚拟化解决方案,能够提高性能和可伸缩性,SR-IOV标准允许在虚拟机之间高效共享PCIe设备,它是在硬件中实现的,可以获得较好的I/O性能。在第二PCIe接口支持SR-IOV时,PF接口包含SR-IOV功能结构,能够管理SR-IOV的功能。虚拟功能(Virtual Function,简称VF)可以理解为与SR-IOV中PF关联的功能。VF可以与PF以及与同一PF关联的其他VF共享一个或多个物理资源。VF拥有用于自身行为的配置资源。
需要说明的是:第二PCIe接口1202中还可以包含多个PF接口和多个VF接口,本实施例不做具体限制。
在本实施例中,通过规划第二PCIe接口的BAR空间能够使得在第二PCIe接口支持SR-IOV时,PF接口和VF接口中包含多个寄存器组,根据多个寄存器组能够拓展多个vDPADevice,从而提高资源的利用率,避免资源的浪费。
在本实施例中,可选的,所述vDPA Driver,用于:
根据所述第二PCIe接口访问相应的PF接口中包括的所有寄存器组,得到每个寄存器组分别对应的目标信息;
根据所有目标信息,确定与所述每个寄存器组分别对应的vDPA Device。
其中,目标信息可以理解为与寄存器组相连接的目标vDPA Device的身份信息。
具体的,由于PF接口布置在第二PCIe接口1202中,vDPA Driver 1101和第一PCIe接口1102相连,第一PCIe接口1102和第二PCIe接口1202通讯连接,因此,vDPA Driver根据第一PCIe接口1102和第二PCIe接口1202能够访问第二PCIe接口1202中相应的PF接口中包括的所有寄存器组,具体可以根据PF接口的身份标识进行访问,例如,PF接口的名称和PF接口的标识号等。vDPA Driver在访问PF接口中包括的所有寄存器组之后,就能够得到PF接口中每个寄存器组分别对应的目标信息,根据所有目标信息,就能够确定与每个寄存器组分别对应的vDPA Device,即:确定哪个寄存器组与哪个vDPA Device相连接。
在本实施例中,可选的,在第二PCIe接口支持SR-IOV时,PF接口能够配置生成VF接口;相应的,第二PCIe接口中包括至少一个PF接口和至少一个VF接口,每个PF接口和每个VF接口中包括至少一个寄存器组,每个寄存器组与一个vDPA Device通信连接;此时,所述vDPA Driver,用于:根据所述第二PCIe接口访问相应的PF接口和VF接口中包括的所有寄存器组,得到每个寄存器组分别对应的目标信息;根据所有目标信息,确定与所述每个寄存器组分别对应的vDPA Device。
具体的,由于PF接口和VF接口布置在第二PCIe接口1202中,因此,vDPA Driver根据第一PCIe接口1102和第二PCIe接口1202能够访问第二PCIe接口1202中相应的PF接口和VF接口中包括的所有寄存器组,具体可以根据PF接口和VF接口的身份标识进行访问,例如,PF接口的名称、VF接口的名称、PF接口的标识号以及VF接口的标识号等。vDPA Driver在访问PF接口和VF接口中包括的所有寄存器组之后,就能够得到PF接口和VF接口中每个寄存器组分别对应的目标信息,根据所有目标信息,就能够确定与每个寄存器组分别对应的vDPADevice,即:确定哪个寄存器组与哪个vDPA Device相连接。本实施例中,通过确定每个寄存器组分别对应的vDPA Device,有利于对多个vDPA Device的管理以及访问,防止出错。
在本实施例中,可选的,所述vDPA Driver,用于:
在得到每个寄存器组分别对应的目标信息之后,创建目标结构体实例,并将所有目标信息存储至所述目标结构体实例中。
其中,目标结构体实例可以理解为通过结构体变量所编写的结构体实例,主要用于存储与寄存器组对应的目标信息。
本实施例中,在获取到每个寄存器组分别对应的目标信息之后,通过创建目标结构体实例,并将所有目标信息存储至该目标结构体实例中,方便后续对目标信息的获取和使用,避免目标信息的遗失。
在本实施例中,可选的,所述vDPA Driver,用于:
将接收数据的第一缓冲区信息写入与vDPA Device对应的第一寄存器组;
所述vDPA Device,用于根据所述第一寄存器组获取所述第一缓冲区信息,并将待发送数据写入与所述第一缓冲区信息对应的第一数据缓冲区中,并向所述vDPA Driver发送所述待发送数据传输成功的消息,以使所述vDPA Driver将所述第一缓冲区信息发送至所述vDPA框架。
其中,接收数据的第一缓冲区信息可以理解为记录第一数据缓冲区位置的信息。第一数据缓冲区可以理解为用于存储vDPA Device向vDPA Driver发送的数据的区域。待发送数据可以理解为vDPA Device将要向vDPA Driver发送的数据。第一寄存器组可以理解为与vDPA Device所对应的寄存器组。
具体的,vDPA Device 1201向vDPA Driver 1101发送数据的具体过程可以如下所示:
首先,vDPA Driver 1101会定义接收数据的第一缓冲区信息,并将该第一缓冲区信息写入与vDPA Device 1201对应的第一寄存器组中,以便后续vDPA Device1201能够获取到该第一缓冲区信息。接着,vDPA Device 1201通过访问第一寄存器组,能够获取到第一缓冲区信息,根据该第一缓冲区信息能够确定第一数据缓冲区位置,从而将待发送数据写入第一数据缓冲区中,在待发送数据写入完成后,向vDPA Driver 1101发送待发送数据传输成功的消息,其中,该消息可以通过中断发送。vDPA Driver 1101在收到vDPA Device1201发送的待发送数据传输成功的消息之后,根据该消息将第一缓冲区信息发送至vDPA框架,以便后续操作***或者其他应用通过vDPA框架获取待发送数据。
本实施例中,通过第一缓冲区信息和第一寄存器组实现vDPA Device向vDPADriver发送数据的过程,由于第一寄存器组与vDPADevice对应,因此上述发送数据的过程高效快捷,能够节省时间以及提高工作效率。
在本实施例中,可选的,所述vDPA Driver,用于:
接收所述vDPA框架发送的所发数据的第二缓冲区信息,将所述第二缓冲区信息写入与vDPA Device对应的第二寄存器组,并通过所述第二寄存器组中的目标寄存器向所述vDPA Device发送读取与所述第二缓冲区信息对应的第二数据缓冲区中的数据的消息;
所述vDPA Device,用于根据接收到的所述消息,从所述第二数据缓冲区中读取数据。
其中,发送数据的第二缓冲区信息可以理解为记录第二数据缓冲区位置的信息。第二数据缓冲区可以理解为用于存储vDPA Driver向vDPA Device发送的数据的区域。第二寄存器组可以理解为与vDPA Device所对应的寄存器组。由于vDPA Device可能有多个,因此,在同一个vDPA Device用于接收数据和发送数据时,第一寄存器组和第二寄存器组为相同的寄存器组,其他情况下,第一寄存器组和第二寄存器组可以为不同的寄存器组。第一寄存器组和第二寄存器组中都可以包含多个寄存器,本实施例不做具体限制。目标寄存器可以理解为用于向vDPA Device发送相应消息的寄存器。
具体的,vDPA Driver 1101向vDPA Device 1201发送数据的具体过程可以如下所示:
首先,vDPA Driver 1101接收vDPA框架发送的所发数据的第二缓冲区信息,将该第二缓冲区信息写入与vDPA Device 1201对应的第二寄存器组,并通过第二寄存器组中的目标寄存器能够向对应的vDPA Device 1201发送读取与第二缓冲区信息对应的第二数据缓冲区中的数据的消息。vDPA Device 1201在接收到vDPA Driver 1101发送的读取与第二缓冲区信息对应的第二数据缓冲区中的数据的消息之后,根据该消息,能够从第二数据缓冲区中读取到对应的数据。
本实施例中,通过第二缓冲区信息和第二寄存器组实现vDPADriver向vDPADevice发送数据的过程,由于第二寄存器组与vDPA Device对应,因此上述发送数据的过程更加高效快捷,有利于节省时间以及提高工作效率。
图3是本公开实施例提供的一种实现Virtio设备的方法的流程示意图,本实施例应用于实现Virtio设备的***。如图3所示,该***包括:主机和设备,所述主机中包括vDPADriver和第一PCIe接口,所述设备中包括vDPA Device和第二PCIe接口,所述vDPA Driver和所述vDPA Device通过所述第一PCIe接口和所述第二PCIe接口进行通信,该方法具体包括如下:
S310,vDPA Driver根据vDPA框架和Virtio协议规范实现Virtio设备的控制面功能;
S320,vDPA Device根据第二PCIe接口和Virtio协议规范实现Virtio设备的数据面功能。
在本实施例中,可选的,所述第二PCIe接口中包括至少一个物理功能PF接口,每个PF接口中包括至少一个寄存器组,每个寄存器组与一个vDPA Device通信连接。
在本实施例中,可选的,该方法还包括:
所述vDPA Driver根据所述第二PCIe接口访问相应的PF接口中包括的所有寄存器组,得到每个寄存器组分别对应的目标信息;
根据所有目标信息,确定与所述每个寄存器组分别对应的vDPA Device。
在本实施例中,可选的,该方法还包括:
所述vDPA Driver在得到每个寄存器组分别对应的目标信息之后,创建目标结构体实例,并将所有目标信息存储至所述目标结构体实例中。
在本实施例中,可选的,该方法还包括:
所述vDPA Driver将接收数据的第一缓冲区信息写入与vDPADevice对应的第一寄存器组;
所述vDPA Device根据所述第一寄存器组获取所述第一缓冲区信息,并将待发送数据写入与所述第一缓冲区信息对应的第一数据缓冲区中,并向所述vDPA Driver发送所述待发送数据传输成功的消息,以使所述vDPA Driver将所述第一缓冲区信息发送至所述vDPA框架。
在本实施例中,可选的,该方法还包括:
所述vDPA Driver接收所述vDPA框架发送的所发数据的第二缓冲区信息,将所述第二缓冲区信息写入与vDPA Device对应的第二寄存器组,并通过所述第二寄存器组中的目标寄存器向所述vDPA Device发送读取与所述第二缓冲区信息对应的第二数据缓冲区中的数据的消息;
所述vDPA Device根据接收到的所述消息,从所述第二数据缓冲区中读取数据。
在本实施例中,可选的,所述第二PCIe接口支持单根输入/输出虚拟化SR-IOV功能。
在本实施例中,可选的,所述主机中还包括共享内存,所述设备中还包括直接存储器访问DMA,所述vDPA Device基于所述DMA与所述共享内存进行数据交互。
通过本公开实施例提供的实现Virtio设备的方法,首先vDPA Driver根据vDPA框架和Virtio协议规范实现Virtio设备的控制面功能,其次vDPA Device根据第二PCIe接口和Virtio协议规范实现Virtio设备的数据面功能,通过vDPA框架使得***能够兼容虚拟化技术和云原生技术生态,vDPA Driver的使用使得***更灵活,并且该***能够支持软、硬件协同的内核框架,以及支持软、硬件协同的生态。
本公开实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于实现本公开实施例所提供的实现Virtio设备的方法。
当然,本公开实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本公开任意实施例所提供的实现Virtio设备的方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本公开可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述的方法。
值得注意的是,上述实现Virtio设备的***的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本公开的保护范围。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种实现Virtio设备的***,其特征在于,所述***包括:主机和设备,所述主机中包括虚拟数据路径加速驱动vDPA Driver和第一高速串行计算机扩展总线标准PCIe接口,所述设备中包括虚拟数据路径加速设备vDPA Device和第二PCIe接口,所述vDPA Driver和所述vDPA Device通过所述第一PCIe接口和所述第二PCIe接口进行通信;
所述vDPA Driver,用于根据vDPA框架和Virtio协议规范实现Virtio设备的控制面功能;
所述vDPA Device,用于根据所述第二PCIe接口和Virtio协议规范实现Virtio设备的数据面功能;
其中,所述第二PCIe接口中包括至少一个物理功能PF接口,每个PF接口中包括至少一个寄存器组,每个寄存器组与一个vDPADevice通信连接;
所述vDPA Driver,用于将接收数据的第一缓冲区信息写入与vDPADevice对应的第一寄存器组;
所述vDPA Device,用于根据所述第一寄存器组获取所述第一缓冲区信息,并将待发送数据写入与所述第一缓冲区信息对应的第一数据缓冲区中,并向所述vDPA Driver发送所述待发送数据传输成功的消息,以使所述vDPA Driver将所述第一缓冲区信息发送至所述vDPA框架。
2.根据权利要求1所述的***,其特征在于,所述vDPA Driver,用于:
根据所述第二PCIe接口访问相应的PF接口中包括的所有寄存器组,得到每个寄存器组分别对应的目标信息;
根据所有目标信息,确定与所述每个寄存器组分别对应的vDPADevice。
3.根据权利要求2所述的***,其特征在于,所述vDPA Driver,用于:
在得到每个寄存器组分别对应的目标信息之后,创建目标结构体实例,并将所有目标信息存储至所述目标结构体实例中。
4.根据权利要求1所述的***,其特征在于,所述vDPA Driver,用于:
接收所述vDPA框架发送的所发数据的第二缓冲区信息,将所述第二缓冲区信息写入与vDPA Device对应的第二寄存器组,并通过所述第二寄存器组中的目标寄存器向所述vDPADevice发送读取与所述第二缓冲区信息对应的第二数据缓冲区中的数据的消息;
所述vDPA Device,用于根据接收到的所述消息,从所述第二数据缓冲区中读取数据。
5.根据权利要求1所述的***,其特征在于,所述第二PCIe接口支持单根输入/输出虚拟化SR-IOV功能。
6.根据权利要求1-5任一项所述的***,其特征在于,所述主机中还包括共享内存,所述设备中还包括直接存储器访问DMA,所述vDPA Device基于所述DMA与所述共享内存进行数据交互。
7.一种实现Virtio设备的方法,其特征在于,应用于实现Virtio设备的***,所述***包括:主机和设备,所述主机中包括虚拟数据路径加速驱动vDPA Driver和第一高速串行计算机扩展总线标准PCIe接口,所述设备中包括虚拟数据路径加速设备vDPA Device和第二PCIe接口,所述vDPA Driver和所述vDPA Device通过所述第一PCIe接口和所述第二PCIe接口进行通信,所述方法包括:
所述vDPA Driver根据vDPA框架和Virtio协议规范实现Virtio设备的控制面功能;
所述vDPA Device根据所述第二PCIe接口和Virtio协议规范实现Virtio设备的数据面功能;
其中,所述第二PCIe接口中包括至少一个物理功能PF接口,每个PF接口中包括至少一个寄存器组,每个寄存器组与一个vDPADevice通信连接;
所述vDPA Driver将接收数据的第一缓冲区信息写入与vDPADevice对应的第一寄存器组;
所述vDPA Device根据所述第一寄存器组获取所述第一缓冲区信息,并将待发送数据写入与所述第一缓冲区信息对应的第一数据缓冲区中,并向所述vDPA Driver发送所述待发送数据传输成功的消息,以使所述vDPA Driver将所述第一缓冲区信息发送至所述vDPA框架。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求7中的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111521682.7A CN114238183B (zh) | 2021-12-13 | 2021-12-13 | 实现Virtio设备的***、方法和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111521682.7A CN114238183B (zh) | 2021-12-13 | 2021-12-13 | 实现Virtio设备的***、方法和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114238183A CN114238183A (zh) | 2022-03-25 |
CN114238183B true CN114238183B (zh) | 2023-10-20 |
Family
ID=80755413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111521682.7A Active CN114238183B (zh) | 2021-12-13 | 2021-12-13 | 实现Virtio设备的***、方法和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114238183B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225690B (zh) * | 2022-06-22 | 2024-04-19 | 中科驭数(北京)科技有限公司 | 基于硬件协议栈的tcp长连接保活方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191864B1 (en) * | 2015-11-12 | 2019-01-29 | Amazon Technologies, Inc. | Standardized interface for storage using an input/output (I/O) adapter device |
CN110532208A (zh) * | 2019-07-12 | 2019-12-03 | 优刻得科技股份有限公司 | 一种数据处理方法、接口转换结构及设备 |
CN110955517A (zh) * | 2019-09-03 | 2020-04-03 | 华为技术有限公司 | 报文转发的方法、计算机设备和中间设备 |
CN113472624A (zh) * | 2021-06-21 | 2021-10-01 | 烽火通信科技股份有限公司 | 一种基于vDPA实现虚拟网络数据包转发的方法及应用 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210165675A1 (en) * | 2019-12-02 | 2021-06-03 | Xiao Wang | Live migration for hardware accelerated para-virtualized io device |
US20210232528A1 (en) * | 2021-03-22 | 2021-07-29 | Intel Corporation | Configurable device interface |
-
2021
- 2021-12-13 CN CN202111521682.7A patent/CN114238183B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191864B1 (en) * | 2015-11-12 | 2019-01-29 | Amazon Technologies, Inc. | Standardized interface for storage using an input/output (I/O) adapter device |
CN110532208A (zh) * | 2019-07-12 | 2019-12-03 | 优刻得科技股份有限公司 | 一种数据处理方法、接口转换结构及设备 |
CN110955517A (zh) * | 2019-09-03 | 2020-04-03 | 华为技术有限公司 | 报文转发的方法、计算机设备和中间设备 |
CN113472624A (zh) * | 2021-06-21 | 2021-10-01 | 烽火通信科技股份有限公司 | 一种基于vDPA实现虚拟网络数据包转发的方法及应用 |
Also Published As
Publication number | Publication date |
---|---|
CN114238183A (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5608243B2 (ja) | 仮想化環境においてi/o処理を行う方法および装置 | |
EP3211530B1 (en) | Virtual machine memory management method, physical main machine, pcie device and configuration method therefor, and migration management device | |
WO2022002106A1 (zh) | 中断处理方法、中断管理器、电子设备、计算机可读存储介质 | |
US11829309B2 (en) | Data forwarding chip and server | |
EP4053706A1 (en) | Cross address-space bridging | |
US11194735B2 (en) | Technologies for flexible virtual function queue assignment | |
JP2015022553A (ja) | 計算機の制御方法及び計算機 | |
WO2023165400A1 (zh) | 计算***、内存缺页处理方法及存储介质 | |
CN112612574B (zh) | 输入输出设备的内存访问管理单元、***及地址转换方法 | |
CN112765084B (zh) | 计算机设备、虚拟化加速设备、数据传输方法及存储介质 | |
CN110058946B (zh) | 设备虚拟化方法、装置、设备及存储介质 | |
US10719333B2 (en) | BIOS startup method and apparatus | |
CN104731635A (zh) | 一种虚拟机访问控制方法,及虚拟机访问控制*** | |
WO2023221847A1 (zh) | 基于虚拟机设备直通的数据访问方法、设备以及*** | |
CN115357416B (zh) | 一种跨***进行数据处理的方法及装置 | |
WO2021086693A1 (en) | Management of multiple physical function non-volatile memory devices | |
CN114238183B (zh) | 实现Virtio设备的***、方法和介质 | |
EP3350700B1 (en) | Multi root i/o virtualization system | |
CN109656675B (zh) | 总线设备、计算机设备及实现物理主机云存储的方法 | |
CN111078353A (zh) | 存储设备的操作方法及物理服务器 | |
WO2020177567A1 (zh) | 一种迁移数据的方法、装置及*** | |
US11249934B2 (en) | Data access method and apparatus | |
CN113691381A (zh) | 使网卡支持虚拟化功能的方法、***、装置及存储介质 | |
CN116418848A (zh) | 网络节点的配置和访问请求的处理方法、装置 | |
KR102358752B1 (ko) | 모바일 환경에서 그래픽 처리 장치를 가상화하는 방법 및 기록 매체 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |