首页> 中国专利> 一种基于ARM架构实现GPU虚拟化的系统及方法

一种基于ARM架构实现GPU虚拟化的系统及方法

摘要

本发明涉及一种基于ARM架构实现GPU虚拟化的系统及方法,包括:虚拟机配置的第一软件模块,及宿主机配置的第二软件模块;所述第一软件模块包含各类应用程序App,所述第二软件模块具备3D渲染功能,可将第一软件模块中的App进行3D渲染。本发明可以在Android系统中实现GPU的虚拟化,不需要GPU厂家的特殊支持,即可在多个Android虚拟系统中共享使用本机的GPU,提高用户的操作体验,充分利用GPU资源,节省成本。同时,这种方式不限于某个具体的GPU型号,通常的ARM架构中的GPU都可以使用上面的方式。

著录项

  • 公开/公告号CN112967171A

    专利类型发明专利

  • 公开/公告日2021-06-15

    原文格式PDF

  • 申请/专利权人 深圳市瑞驰信息技术有限公司;

    申请/专利号CN202110278706.4

  • 发明设计人 刘凯;邓亚军;王钦;

    申请日2021-03-15

  • 分类号G06T1/20(20060101);G06T15/00(20110101);

  • 代理机构44384 深圳市中科创为专利代理有限公司;

  • 代理人彭西洋;宋鹏跃

  • 地址 518000 广东省深圳市前海深港合作区前湾一路1号A栋201(入驻深圳市前海商务秘书有限公司)

  • 入库时间 2023-06-19 11:26:00

说明书

技术领域

本发明涉及Andriod系统技术领域,具体涉及一种基于ARM架构实现GPU虚拟化的系统及方法。

背景技术

虚拟化在以x86 CPU为基础的系统中已经发展的非常成熟,无论是公有云还是私有云的应用都非常成熟和丰富。而随着以ARM架构CPU为核心的智能手机的发展,无论其CPU性能、GPU性能、还是内存都越来越强大,因此也产生了在ARM架构上做虚拟化业务的需求,同一套硬件可同时运行多套虚拟化Android系统,提高资源利用率,节省成本。

ARM架构下的系统做虚拟化,可以采用和x86架构下相同的模式。x86下通用的虚拟化方式是kvm+qemu,而ARM架构CPU也支持kvm功能,也可以采用kvm+qemu的方式来进行虚拟化,而唯一的不同点就在GPU的虚拟化上。

在x86架构下,GPU一般为Nvida,AMD或Intel的GPU,厂家提供的驱动原生已经支持了GPU虚拟化,方式是将物理GPU划分为更多的vGPU单元,然后分配给不同的虚拟机进行使用。而ARM架构下的GPU通常都是Mali架构的GPU,一是这个GPU是专门应用于Android系统的,从没有考虑过虚拟化的需求,二是这个GPU的驱动是闭源的,厂家只提供二进制的so动态共享库,在这种方式下,做ARM架构的GPU虚拟化会存在如下问题:

(1)、ARM架构的GPU不提供vGPU的方式,需要在驱动上层进行GPU的虚拟化操作;

(2)、ARM架构GPU厂家众多,很多厂家的驱动本身不支持通用linux系统,如ubuntu,而kvm+qemu的虚拟化方案需要运行在此类系统上;

(3)、ARM架构下的GPU驱动都为闭源,只提供动态库,为GPU的调试与再次开发带来困难。

发明内容

本发明正是针对上述问题,本发明提供一种基于ARM架构实现GPU虚拟化的系统及方法。

为实现上述目的,首先本发明提供一种基于ARM架构实现GPU虚拟化的系统,包括:虚拟机配置的第一软件模块,及宿主机配置的第二软件模块;所述第一软件模块包含各类应用程序App,所述第二软件模块具备3D渲染功能,可将第一软件模块中的App进行3D渲染。

较佳地,所述第一软件模块包括:

Kvm+QEMU,用于实现底层系统;

Android Kernel,在上面运行独立的Android Kernel内核,为Android系统提供服务;

Libraries,为Android系统中的共享库,与普通Android系统中的一致;

Android Runtime,为Android的运行时库,与普通Android系统中的一致;

vGPU Library,为虚拟机中模拟GPU的模块,实现一个软GPU的功能,为上层App提供3D渲染服务;

Application Framework,为Android系统框架,与普通Android系统的一致;

App,为在Android虚拟机中运行的各类应用。

较佳地,所述第二软件模块包括:

3D Render模块,3D渲染模块,运行于宿主机上,与虚拟机中的vGPU Library进行通讯,负责3D图形的整体渲染调用;

OpenGL ES Translator模块,运行于宿主机中,接收3D Render的渲染指令,并转换为本机的OpenGL接口;本地因为运行不同的GPU硬件和驱动,可能提供不同的OpenGL版本和接口,OpenGL ES Translator则根据情况进行适配和转换;

GPU Library模块,本机GPU的API接口库,由GPU厂家提供,与内核中的GPU Driver通讯,共同来实现GPU渲染功能;

GPU Driver内核模块,GPU厂家提供的GPU驱动,与GPU Library一同提供GPU功能。

本发明另一目的在于提供一种基于ARM架构实现GPU虚拟化的方法,包括步骤:

(1)App进行窗体等初始化后,如果要在窗体上进行3D图形绘制,先将3D渲染指令发送给vGPU Library;这一步是由Android系统来实现的,对于App来说则是透明的;

(2)vGPU库会与外部宿主机上的3D Render建立高速通道,因为都运行于同一套系统内部,可采用共享内存的传输方式,减少渲染指令及数据在内存中的复制次数;

(3)接下来,3D Render与本机的OpenGL ES Translator模块通讯,将指令再次转发给Translator模块;

(4)OpenGL ES Translator模块根据当前的主机系统和GPU配置,将渲染指令转换为不同的版本和格式要求,再次发送给本机上的物理GPU Library共享库;

(5)由GPU Library与内核中的GPU Driver共同来完成渲染指令的执行;

(6)渲染指令执行完成后,再按照上面的反顺序,将结果返回给App程序,完成一条渲染指令的执行。

采用上述方案,可以在Android系统中实现GPU的虚拟化,不需要GPU厂家的特殊支持,即可在多个Android虚拟系统中共享使用本机的GPU,提高用户的操作体验,充分利用GPU资源,节省成本。同时,这种方式不限于某个具体的GPU型号,通常的ARM架构中的GPU都可以使用上面的方式。

附图说明

图1是本发明系统中第一软件模块的框架图;

图2是本发明系统中第二软件模块的框架图;

图3是本发明虚拟化的方法流出图。

具体实施方式

为了便于本领域的普通技术人员能够理解并实施本发明,下面将结合附图对本发明实施例作进一步说明。

参考图1与图2,本发明提供一种基于ARM架构实现GPU虚拟化的系统,包括:两个部分,一部分是虚拟机中的软件架构,称之为第一软件模块,另一个部分是宿主机中的软件架构,称之为第二软件模块。

其中,所述第一软件模块包括:

Kvm+QEMU,底层系统由KVM+QEMU实现,与x86的虚拟化架构类似;

Android Kernel,在上面运行独立的Android Kernel内核,为Android系统提供服务;

Libraries,为Android系统中的共享库,与普通Android系统中的一致;

Android Runtime,为Android的运行时库,与普通Android系统中的一致;

vGPU Library,为虚拟机中模拟GPU的模块,实现一个软GPU的功能,为上层App提供3D渲染服务;

Application Framework,为Android系统框架,与普通Android系统的一致;

App,为在Android虚拟机中运行的各类应用。

其中,所述第二软件模块包括:

3D Render模块,3D渲染模块,运行于宿主机上,与虚拟机中的vGPU Library进行通讯,负责3D图形的整体渲染调用;

OpenGL ES Translator模块,运行于宿主机中,接收3D Render的渲染指令,并转换为本机的OpenGL接口;本地因为运行不同的GPU硬件和驱动,可能提供不同的OpenGL版本和接口,OpenGL ES Translator则根据情况进行适配和转换;

GPU Library模块,本机GPU的API接口库,由GPU厂家提供,与内核中的GPU Driver通讯,共同来实现GPU渲染功能;

GPU Driver内核模块,GPU厂家提供的GPU驱动,与GPU Library一同提供GPU功能。

参考图3,当虚拟机中的一个App需要进行3D渲染时,流程如下:

(1)、App进行窗体等初始化后,如果要在窗体上进行3D图形绘制,先将3D渲染指令发送给vGPU Library。这一步是由Android系统来实现的,对于App来说则是透明的;

(2)、vGPU库会与外部宿主机上的3D Render建立高速通道,因为都运行于同一套系统内部,可采用共享内存的传输方式,减少渲染指令及数据在内存中的复制次数;

(3)、接下来,3D Render与本机的OpenGL ES Translator模块通讯,将指令再次转发给Translator模块;

(4)、OpenGL ES Translator模块根据当前的主机系统和GPU配置,将渲染指令转换为不同的版本和格式要求,再次发送给本机上的物理GPU Library共享库;

(5)、最后,由GPU Library与内核中的GPU Driver共同来完成渲染指令的执行;

(6)、渲染指令执行完成后,再按照上面的反顺序,将结果返回给App程序,完成一条渲染指令的执行。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号