设备虚拟化方法、装置、设备及存储介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种设备虚拟化方法、装置、设备及存储介质。
背景技术
虚拟化技术是计算机技术中的一种资源管理技术,是将设备中的各种实体资源,如服务器、网络、内存及存储等予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。
在PCIE(peripheral component interconnect express,高速串行计算机扩展总线)设备虚拟化技术中,现有技术主要以纯软件实现和PCIE标准支持的SRIOV(Single-rootI/O virtualization,单根输入输出虚拟化)硬件虚拟化实现两种方式为主。前者在硬件实现阶段没有考虑对虚拟化特性的支持,所有虚拟化需要解决的问题都交由软件处理,性能开销大,后者在硬件设计和实现上增加了极大的复杂度,并且整个虚拟化方案严重依赖硬件特性,因此在产品化过程中缺乏灵活性和扩展性。
发明内容
本发明实施例提供了一种设备虚拟化方法、装置、设备及存储介质,提高了产品化过程中的灵活性和可扩展性。
第一方面,本发明实施例提供了一种设备虚拟化方法,该方法包括:
将计算资源划分为多个硬件资源集群,其中每个硬件资源集群包括每个类型资源的至少一个资源实例,每个硬件资源集群通过任务调度模块进行任务调度;
在虚拟设备层中创建虚拟设备,其中,每个虚拟设备绑定有一个硬件资源集群和一组内存资源;
通过所述虚拟设备对绑定的硬件资源集群和内存资源进行管理。
第二方面,本发明实施例还提供了一种设备虚拟化装置,该装置包括:
资源划分单元,用于将计算资源划分为多个硬件资源集群,其中每个硬件资源集群包括每个类型资源的至少一个资源实例,每个硬件资源集群通过任务调度模块进行任务调度;
资源绑定单元,用于在虚拟设备层中创建虚拟设备,其中,每个虚拟设备绑定有一个硬件资源集群和一组内存资源;
指令处理单元,通过所述虚拟设备对绑定的硬件资源集群和内存资源进行管理。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所述的设备虚拟化方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例所述的设备虚拟化方法。
本发明实施例中,将计算资源划分为多个硬件资源集群,其中每个硬件资源集群包括每个类型资源的至少一个资源实例,每个硬件资源集群通过任务调度模块进行任务调度;在虚拟设备层中创建虚拟设备,其中,每个虚拟设备绑定有一个硬件资源集群和一组内存资源;通过所述虚拟设备对绑定的硬件资源集群和内存资源进行管理,提高了产品化过程中的灵活性和可扩展性。
附图说明
图1为本发明实施例提供的一种设备虚拟化方法的流程图;
图2为本发明实施例提供的另一种设备虚拟化方法的流程图;
图3为本发明实施例提供的另一种设备虚拟化方法的流程图;
图4为本发明实施例提供的另一种设备虚拟化方法的流程图;
图5为本发明实施例提供的一种设备虚拟化装置的结构框图;
图6为本发明实施例提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。
图1为本发明实施例提供的一种设备虚拟化方法的流程图,本实施例可适用于设备虚拟化,该方法可以由设备如计算机来执行,具体包括如下步骤:
步骤S101、将计算资源划分为多个硬件资源集群,其中每个硬件资源集群包括每个类型资源的至少一个资源实例,每个硬件资源集群通过任务调度模块进行任务调度。
其中,原生硬件资源主要包括计算资源和内存资源,原生硬件指未经修改的原有硬件设备。在一个实施例中,将计算资源划分为多个硬件资源集群,每个硬件资源集群中包含每个类型资源的至少一个资源实例,这样每个硬件资源集群都可以独立完成硬件能支持的任务,其中每个类型资源中的任一个资源实例可以完成相应的计算任务,如简单的四则运算或复杂的神经网络算法等。每个硬件资源集群有独立的硬件任务调度模块,即有独立的环状缓冲区,故计算资源可以被抽象为环状缓冲区接口。
步骤S102、在虚拟设备层中创建虚拟设备,其中,每个虚拟设备绑定有一个硬件资源集群和一组内存资源。
在虚拟化技术中,虚拟设备层为宿主机和客户机之间的抽象层,在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理组态所限制。
在虚拟层中建立的每个虚拟设备绑定有一个硬件资源集群和一组内存资源,该硬件资源集群可以独立完成硬件能支持的任务,内存资源包括设备内存和***内存。
步骤S103、通过所述虚拟设备对绑定的硬件资源集群和内存资源进行管理。
通过创建的虚拟设备来实现对其绑定的硬件资源集群和内存资源进行管理。
其中,对硬件资源集群的管理包括通过虚拟设备对环状缓冲区关联的配置寄存器的读写指令进行截获,将客户机配置的环状缓冲区设备地址配置到所分配的任务调度模块中。
其中,对内存资源的管理主要包括对设备内存的管理以及***内存的管理,针对设备内存而言,主要解决的是客户机下发给设备的任务中引用的设备内存地址有效区间相互独立。对***内存的管理主要包括对设备访问客户机分配的***内存的管理。
由上述方案可知,通过将计算资源划分为多个硬件资源集群,其中每个硬件资源集群包括每个类型资源的至少一个资源实例,每个硬件资源集群通过任务调度模块进行任务调度;在虚拟设备层中创建虚拟设备,其中,每个虚拟设备绑定有一个硬件资源集群和一组内存资源;通过所述虚拟设备对绑定的硬件资源集群和内存资源进行管理,提高了产品化过程中的灵活性和可扩展性。
图2为本发明实施例提供的另一种设备虚拟化方法的流程图,可选的,通过所述虚拟设备对绑定的硬件资源集群进行管理包括:通过所述虚拟设备对环状缓冲区关联的配置寄存器的读写指令进行截获,将客户机配置的环状缓冲区设备地址配置到所分配的任务调度模块中。所述读写指令还包括所述环状缓冲区的读写指针更新指令。如图2所示,技术方案具体如下:
步骤S201、将计算资源划分为多个硬件资源集群,其中每个硬件资源集群包括每个类型资源的至少一个资源实例,每个硬件资源集群通过任务调度模块进行任务调度。
步骤S202、在虚拟设备层中创建虚拟设备,其中,每个虚拟设备绑定有一个硬件资源集群和一组内存资源。
步骤S203、通过所述虚拟设备对环状缓冲区关联的配置寄存器的读写指令进行截获,将客户机配置的环状缓冲区设备地址配置到所分配的任务调度模块中。
其中,环状缓冲区是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,用于缓存数据流。硬件资源集群被抽象为环状缓冲区接口被分配给每个虚拟设备,环状缓冲区被客户机分配在设备内存中,环状缓冲区的相关寄存器包括缓冲区基地址寄存器,读写指针寄存器等。客户机对环状缓冲区的访问将被虚拟设备截获,然后转换成对虚拟设备绑定的硬件资源集群环状缓冲区配置域的访问,随后客户机可以直接向自己配置的环状缓冲区下发命令,更新写指针寄存器。其中,环状缓冲区分配在设备存储上,其地址是真实的设备地址,可以直接将客户机配置的环状缓冲区设备地址配置到所分配的任务调度模块中。
由上述方案可知,通过所述虚拟设备对环状缓冲区关联的配置寄存器的读写指令进行截获,将客户机配置的环状缓冲区设备地址配置到所分配的任务调度模块中,实现了计算资源的隔离,提高了产品化过程中的灵活性和可扩展性,同时环状缓冲区直接由客户机分配在设备内存中,无需宿主机进行地址翻译。
图3为本发明实施例提供的另一种设备虚拟化方法的流程图,可选的,所述通过所述虚拟设备对绑定的内存资源进行管理包括:对设备存储空间进行静态划分,通过虚拟设备的寄存器对所述静态划分的划分地址进行上报,客户机初始化时,通过读取所述划分地址确定对应的设备存储空间的基地址。当客户机对所述设备存储空间进行访问时,通过两级地址虚拟化方式进行地址转换;当设备对所述设备存储空间进行访问时,对所述划分地址进行直接访问。如图3所示,技术方案具体如下:
步骤S301、将计算资源划分为多个硬件资源集群,其中每个硬件资源集群包括每个类型资源的至少一个资源实例,每个硬件资源集群通过任务调度模块进行任务调度。
步骤S302、在虚拟设备层中创建虚拟设备,其中,每个虚拟设备绑定有一个硬件资源集群和一组内存资源。
步骤S303、对设备存储空间进行静态划分,通过虚拟设备的寄存器对所述静态划分的划分地址进行上报,客户机初始化时,通过读取所述划分地址确定对应的设备存储空间的基地址。
在一个实施例中,内存被划分为两类,第一类是被设备映射的可访问的***内存,第二类是设备内存。
其中,在非虚拟化环境下,存在两个地址空间:设备地址空间和物理地址空间,两类内存在两个地址空间中均有映射区域,CPU通过物理地址空间访问两类内存,设备通过设备地址空间访问两类内存。设备通过设备地址空间访问***内存,会经过设备内部的映射表,简称VM(Virtual Machine,虚拟机)模块,将设备地址翻译成***内存对应的总线地址,映射表的表项动态创建及销毁。VM模块存在多个实例,例,例如4个实例。在虚拟化环境下,即存在三个地址空间:设备地址空间,宿主机物理地址空间,客户机物理地址空间。其中,针对设备内存,本虚拟化方案主要解决客户机下发给设备的任务中引用的设备内存地址有效区间相互独立。
具体的,将设备内存在设备地址空间中的区间做静态划分,划分后的每个区间由虚拟设备管理。其基地址通过虚拟的寄存器,即设备内存基地寄存器和设备内存大小寄存器向客户机暴露。客户机驱动需要根据设备内存基地寄存器和设备内存大小寄存器来初始化设备地址空间中设备内存部分。这样该客户机所使用的设备地址可以直接在下发给设备的任务中被引用。
其中,当客户机对所述设备存储空间进行访问时,通过两级地址虚拟化方式进行地址转换;当设备对所述设备存储空间进行访问时,对所述划分地址进行直接访问。
在一个实施例中,虚拟设备初始化时会设置设备地址总线的防火墙,根据静态划分结果,将绑定到该虚拟设备的计算资源集群发起的访存请求与未绑定到该虚拟设备的内存隔离。
由上述方案可知,通过对设备存储空间进行静态划分,通过虚拟设备的寄存器对所述静态划分的划分地址进行上报,客户机初始化时,通过读取所述划分地址确定对应的设备存储空间的基地址,提高了产品化过程中的灵活性和可扩展性。
图4为本发明实施例提供的另一种设备虚拟化方法的流程图,可选的,在虚拟机中维护一映射表,所述映射表记录有设备地址到客户机物理地址的映射关系,所述映射表由客户机分配到设备存储中,所述映射表的配置过程被宿主机截获并进行相应配置,对所述映射表中表项的更新通过客户机执行。所述通过所述虚拟设备对绑定的内存资源进行管理包括:接收设备端发送的对***内存的访问请求,所述访问请求包括标识信息,所述标识信息用于区分域;根据所述访问请求对***内存进行访问。如图4所示,技术方案具体如下:
步骤S401、将计算资源划分为多个硬件资源集群,其中每个硬件资源集群包括每个类型资源的至少一个资源实例,每个硬件资源集群通过任务调度模块进行任务调度。
步骤S402、在虚拟设备层中创建虚拟设备,其中,每个虚拟设备绑定有一个硬件资源集群和一组内存资源。
步骤S403、接收设备端发送的对***内存的访问请求,所述访问请求包括标识信息,所述标识信息用于区分域,根据所述访问请求对***内存进行访问。
针对***内存而言,本虚拟化方案主要解决的是设备访问客户机分配的***内存问题。
其中,在虚拟机中维护一映射表,所述映射表记录有设备地址到客户机物理地址的映射关系,所述映射表由客户机分配到设备存储中,所述映射表的配置过程被宿主机截获并进行相应配置,对所述映射表中表项的更新通过客户机执行。
具体的,虚拟设备中将从硬件中分配一个独立的VM模块的实例与其绑定。VM模块的相关配置寄存器,包括映射表基地址寄存器,页面寄存器等将被虚拟化,客户机对它们的访问将被截获,并转换成所分配的VM模块的对应寄存器的访问上。客户机的VM模块的映射表将被分配在设备内存中,从而客户机修改的映射表表项在硬件侧直接生效,因为映射表所在的设备内存的设备地址对设备直接有效。在客户机中可以得到的是***内存对应的客户机物理地址。在设备中可以得到的***内存对应的设备地址,处理方式与设备内存对应的设备地址类似,虚拟设备中进行静态划分之后通过虚拟寄存器暴露给客户机。客户机利用客户机物理地址和设备地址建立表项更新到绑定的VM模块实例后,由它绑定的计算资源集群发出的***内存访问,将从设备端发出客户机物理地址给PCIE总线。在虚拟化场景下,客户机物理地址会被PCIE总线上的IOMMU(input/output memory management unit,输入输出内存管理单元)翻译成为宿主机物理地址。每个虚拟机客户机对应一个IOMMU域。从设备端发来的访问请求需要携带标识来区分域,找到相应的IOMMU映射表。由于VM模块实例是静态划分给虚拟设备,对应虚拟机客户机,因此该VM模块实例发出的请求需要携带域标识。在硬件上增加标识的配置方法,如标识寄存器,通过硬件逻辑转换成总线可识别的域标识。
由上述方案可知,接收设备端发送的对***内存的访问请求,所述访问请求包括标识信息,所述标识信息用于区分域,根据所述访问请求对***内存进行访问,提高了产品化过程中的灵活性和可扩展性。
图5为本发明实施例提供的一种设备虚拟化装置的结构框图,该装置用于执行上述实施例提供的设备虚拟化方法,具备执行方法相应的功能模块和有益效果。如图5所示,该装置具体包括:资源划分单元101、资源绑定单元102和指令处理单元103,其中,
资源划分单元101,用于将计算资源划分为多个硬件资源集群,其中每个硬件资源集群包括每个类型资源的至少一个资源实例,每个硬件资源集群通过任务调度模块进行任务调度;
资源绑定单元102,用于在虚拟设备层中创建虚拟设备,其中,每个虚拟设备绑定有一个硬件资源集群和一组内存资源;
指令处理单元103,通过所述虚拟设备对绑定的硬件资源集群和内存资源进行管理。
由上述方案可知,将计算资源划分为多个硬件资源集群,其中每个硬件资源集群包括每个类型资源的至少一个资源实例,每个硬件资源集群通过任务调度模块进行任务调度;在虚拟设备层中创建虚拟设备,其中,每个虚拟设备绑定有一个硬件资源集群和一组内存资源;通过所述虚拟设备对绑定的硬件资源集群和内存资源进行管理,提高了产品化过程中的灵活性和可扩展性。
在一个可能的实施例中,所述指令处理单元103具体用于:
通过所述虚拟设备对环状缓冲区关联的配置寄存器的读写指令进行截获,将客户机配置的环状缓冲区设备地址配置到所分配的任务调度模块中。
在一个可能的实施例中,所述读写指令还包括所述环状缓冲区的读写指针更新指令。
在一个可能的实施例中,所述指令处理单元103具体用于:
对设备存储空间进行静态划分,通过虚拟设备的寄存器对所述静态划分的划分地址进行上报,客户机初始化时,通过读取所述划分地址确定对应的设备存储空间的基地址。
在一个可能的实施例中,当客户机对所述设备存储空间进行访问时,通过两级地址虚拟化方式进行地址转换;当设备对所述设备存储空间进行访问时,对所述划分地址进行直接访问。
在一个可能的实施例中,在虚拟机中维护一映射表,所述映射表记录有设备地址到客户机物理地址的映射关系,所述映射表由客户机分配到设备存储中,所述映射表的配置过程被宿主机截获并进行相应配置,对所述映射表中表项的更新通过客户机执行。
在一个可能的实施例中,所述指令处理单元103具体用于:
接收设备端发送的对***内存的访问请求,所述访问请求包括标识信息,所述标识信息用于区分域;
根据所述访问请求对***内存进行访问。
图6为本发明实施例提供的一种设备的结构示意图,如图6所示,该设备包括处理器201、存储器202、输入装置203和输出装置204;设备中处理器201的数量可以是一个或多个,图6中以一个处理器201为例;设备中的处理器201、存储器202、输入装置203和输出装置204可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器202作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的设备虚拟化方法对应的程序指令/模块(例如,设备虚拟化装置中的尺寸信息确定模块101、入库位置确定模块102和控制指令输出模块103)。处理器201通过运行存储在存储器202中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的设备虚拟化方法。
存储器202可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器202可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器202可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置203可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置204可包括显示屏等显示设备。
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种设备虚拟化方法,该方法包括:
将计算资源划分为多个硬件资源集群,其中每个硬件资源集群包括每个类型资源的至少一个资源实例,每个硬件资源集群通过任务调度模块进行任务调度;
在虚拟设备层中创建虚拟设备,其中,每个虚拟设备绑定有一个硬件资源集群和一组内存资源;
通过所述虚拟设备对绑定的硬件资源集群和内存资源进行管理。
在一个可能的实施例中,通过所述虚拟设备对绑定的硬件资源集群进行管理包括:
通过所述虚拟设备对环状缓冲区关联的配置寄存器的读写指令进行截获,将客户机配置的环状缓冲区设备地址配置到所分配的任务调度模块中。
在一个可能的实施例中,所述读写指令还包括所述环状缓冲区的读写指针更新指令。
在一个可能的实施例中,所述通过所述虚拟设备对绑定的内存资源进行管理包括:
对设备存储空间进行静态划分,通过虚拟设备的寄存器对所述静态划分的划分地址进行上报,客户机初始化时,通过读取所述划分地址确定对应的设备存储空间的基地址。
在一个可能的实施例中,当客户机对所述设备存储空间进行访问时,通过两级地址虚拟化方式进行地址转换;当设备对所述设备存储空间进行访问时,对所述划分地址进行直接访问。
在一个可能的实施例中,在虚拟机中维护一映射表,所述映射表记录有设备地址到客户机物理地址的映射关系,所述映射表由客户机分配到设备存储中,所述映射表的配置过程被宿主机截获并进行相应配置,对所述映射表中表项的更新通过客户机执行。
在一个可能的实施例中,所述通过所述虚拟设备对绑定的内存资源进行管理包括:
接收设备端发送的对***内存的访问请求,所述访问请求包括标识信息,所述标识信息用于区分域;
根据所述访问请求对***内存进行访问。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明实施例任意实施例所提供的设备虚拟化方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明实施例可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明实施例各个实施例所述的方法。
值得注意的是,上述设备虚拟化装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明实施例的保护范围。
注意,上述仅为本发明实施例的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明实施例不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明实施例的保护范围。因此,虽然通过以上实施例对本发明实施例进行了较为详细的说明,但是本发明实施例不仅仅限于以上实施例,在不脱离本发明实施例构思的情况下,还可以包括更多其他等效实施例,而本发明实施例的范围由所附的权利要求范围决定。