虚拟机图形产生方法及系统技术领域
本发明是有关于一种图形产生方法,特别是指一种虚拟机图形产
生方法及系统。
背景技术
虚拟化技术在现代科技的应用已日趋重要,除了个人使用外,在
企业方面更是大量的采用,为了满足企业需求的思维,且在不增加企
业支出的前提下,虚拟化技术可针对企业原有的架构来规划、整并、
汰换与升级企业的信息科技环境,进而达成节省电能与空间、有效地
整合分散的资源、减少软硬件间的束缚并大幅提升效能及运作效率。
惟,现有的虚拟化技术尚存有一些缺点,由于每一台虚拟化机器
无法存取图形运算单元(GraphicsProcessingUnit,简称GPU),
因此,运行于现有的虚拟化技术中的每一台虚拟化机器无法同时处理
大量的图形运算,因而造成使用上的不便。
有鉴于上述图形运算处理问题,市面上出现一种支持虚拟化技术
的显示适配器,如GRIDTMvGPUTM,该显示适配器将GPU切
割成多个图形运算子单元(vGPU),借此,每一台虚拟化机器可直接
存取其所分配到的图形运算子单元,所以可大幅提升图形运算的效
率。
然而,该显示适配器的价格非常昂贵,因此,对于想降低硬件成
本的企业而言,无法提供实质帮助,此外,该显示适配器所支持的操
作系统平台也非常有限,所以实有必要寻求其他解决方案。
发明内容
本发明的目的在于提供一种可大幅提升虚拟化机器的图形运算
效率并降低硬件成本的虚拟机图形产生方法。
本发明虚拟机图形产生方法,由一处理模块及一电连接该处理模
块,并包含一显示内存及一图形运算单元的显示适配器来实施,该方
法包含以下步骤:(A)通过该处理模块,执行一组程序来形成一包含
一主机端虚拟化机器及一客户端虚拟化机器的虚拟化环境;(B)当该
主机端虚拟化机器接收到来自该客户端虚拟化机器的一连接请求时,
通过该主机端虚拟化机器,控制该显示内存预留一对应于该连接请求
的帧缓存;及(C)当该主机端虚拟化机器接收到来自该客户端虚拟化
机器的至少一绘图指令及一与该绘图指令相关的帧产生需求时,通过
该主机端虚拟化机器根据该绘图指令及帧产生需求,控制该图形运算
单元产生一帧,并控制该图形运算单元将该帧储存于该帧缓存。
本发明的虚拟机图形产生方法,该主机端虚拟化机器所执行的操
作系统及该客户端虚拟化机器所执行的操作系统为兼容的操作系统。
本发明的虚拟机图形产生方法,在该步骤(C)后,该方法还包含
一步骤(D),通过该主机端虚拟化机器,从该帧缓存读出该帧且将该
帧储存于一储存模块,并将储存于该储存模块的该帧传送至该客户端
虚拟化机器。
本发明的虚拟机图形产生方法,在该步骤(C)后,该方法还包含
以下步骤:(E)通过该主机端虚拟化机器,从该帧缓存读出该帧且将
该帧储存于一储存模块,并经由一通讯网络,将储存于该储存模块的
该帧传送至一使用端;及(F)当该使用端接收到该帧时,通过该使用
端,根据该帧,显示出一对应于该帧产生需求的显示画面。
本发明的虚拟机图形产生方法,在该步骤(A)与(B)间,该方法还
包含以下步骤:(G)通过该客户端虚拟化机器,传送一搜寻封包至该
虚拟化环境中其他的虚拟化机器;及(H)当该虚拟化环境中的主机端
虚拟化机器接收到该搜寻封包后,通过该主机端虚拟化机器,传送一
含有该主机端虚拟化机器的位址信息的位址封包至该客户端虚拟化
机器。
本发明的另一个目的在于提供一种可大幅提升虚拟化机器的图
形运算效率并降低硬件成本的虚拟机图形产生系统。
本发明虚拟机图形产生系统包含一显示适配器及一处理模块。该
显示适配器包括一显示内存及一图形运算单元。该处理模块用于执行
一组程序以形成一虚拟化环境,该虚拟化环境包括一客户端虚拟化机
器及一主机端虚拟化机器。该客户端虚拟化机器具有一虚拟图形驱动
程序及一客户端仿真及通讯程序。该主机端虚拟化机器具有一原生图
形驱动程序、一主机端仿真及通讯程序,及一代理程序。该代理程序
用于在经由该主机端仿真及通讯程序接收到来自该客户端虚拟化机
器的一连接请求时,经由该原生图形驱动程序控制该显示内存预留一
对应于该连接请求的帧缓存,且用于在经由该主机端仿真及通讯程序
接收到来自该客户端虚拟化机器的至少一绘图指令及一与该绘图指
令相关的帧产生需求时,该代理程序根据该绘图指令及帧产生需求,
经由该原生图形驱动程序控制该图形运算单元产生一帧,并控制该图
形运算单元将该帧储存于该帧缓存。
本发明的虚拟机图形产生系统,该主机端虚拟化机器所执行的操
作系统及该客户端虚拟化机器所执行的操作系统为兼容的操作系统。
本发明的虚拟机图形产生系统,该系统还包含一电连接该处理模
块的储存模块,该主机端虚拟化机器的代理程序还用于从该帧缓存读
出该帧且将该帧储存于该储存模块,并经由该主机端仿真及通讯程
序,将储存于该储存模块的该帧传送至该客户端虚拟化机器。
本发明的虚拟机图形产生系统,该系统还包含一电连接该处理模
块的储存模块、一电连接该处理模块并用于连接一网络的网络通讯接
口、一用于连接该网络的使用端,该主机端虚拟化机器的代理程序还
用于从该帧缓存读出该帧且将该帧储存于该储存模块,并控制该主机
端仿真及通讯程序经由该网络通讯接口,将储存于该储存模块的该帧
传送至该使用端,以使得该使用端,根据该帧显示出一对应于该帧产
生需求的显示画面。
本发明的虚拟机图形产生系统,该客户端虚拟化机器的虚拟图形
驱动程序,用于经由该客户端仿真及通讯程序,传送一搜寻封包至该
虚拟化环境中其他的虚拟化机器,该虚拟化环境中的该主机端虚拟化
机器的代理程序,还用于在经由该主机端仿真及通讯程序接收到该搜
寻封包后,经由该主机端仿真及通讯程序传送一含有该主机端虚拟化
机器的位址信息的位址封包至该客户端虚拟化机器。
本发明的有益效果在于:通过该主机端虚拟化机器根据该绘图指
令及帧产生需求控制该图形运算单元产生该帧,且将该帧储存于该帧
缓存,以达成利用该主机端虚拟化机器存取该图形运算单元的目的,
且该图形运算单元是直接计算出该帧后,才通过该主机端虚拟化机
器,从该帧缓存读出该帧并储存于该储存模块,该主机端虚拟化机器
不须将运算出该帧前的中间运算结果一一储存于该储存模块后才运
算出该帧,借此,可避免因在非必要状况下传送中间运算结果而耗费
运算时间及提升处理模快的运算量,进而大幅提升虚拟化机器的图形
运算效率,此外,通过将该绘图指令及帧产生需求传送至该主机端虚
拟化机器,以通过该主机端虚拟化机器控制该图形运算单元产生该帧
的图形产生方法,不须购买支持虚拟化技术的昂贵显示适配器,所以
可节省硬件成本。
附图说明
图1是一方块图,说明本发明虚拟机图形产生系统的实施例;
及
图2是一流程图,说明本发明虚拟机图形产生方法的实施例。
具体实施方式
下面结合附图及实施例对本发明进行详细说明。
请参阅图1,本发明虚拟机图形产生系统的实施例包含一显示适
配器1、一储存模块9、一用于连接一网络6的网络通讯接口2、一电
连接该显示适配器1、储存模块9及网络通讯接口2的处理模块3及
一使用端7。在本实施例中,该储存模块9是一系统内存(System
Memory),该处理模块3是一中央处理器(CentralProcessingUnit)。
该显示适配器1包括一显示内存11及一图形运算单元12
(GraphicsProcessingUnit,简称GPU)。
该处理模块3用于执行一组程序以形成一基于内核的虚拟机
(Kernel-basedVirtualMachine,简称KVM)的虚拟化环境,该虚拟
化环境包括一客户端虚拟化机器4及一主机端虚拟化机器5。KVM是
一种适用于Linux操作系统的内核中的虚拟化基础,KVM还需要一个
经过修改的QEMU程序以形成该虚拟化环境,该QEMU程序为一开放原
始码的仿真器,用于仿真硬件装置并作为虚拟化机器间的沟通接口,
关于KVM虚拟化环境的运行机制为熟悉此项技术者所熟知,且非本发
明的重点,所以不在此赘述其细节。
该使用端7包括一用于连接该网络6的网络通讯接口71、一计算
单元72及一显示单元73。
该客户端虚拟化机器4具有一虚拟图形驱动程序41及一客户端
仿真及通讯程序42,其中该客户端仿真及通讯程序42为一客户端
QEMU程序。
该主机端虚拟化机器5具有一图形架构单元51、一代理程序52、
一原生图形驱动程序53(nativegraphicdriver),及一主机端仿真
及通讯程序54。在本实施例中,该图形架构单元51为一如
dxgkrnl.sys的DirectX图形核心子系统(DirectXgraphicskernel
subsystem),该代理程序52可为一过滤器驱动程序(filter
driver),该过滤器驱动程序可操作来接收该图形架构单元51与该
原生图形驱动程序53间的沟通指令,并可操作来控制该原生图形驱
动程序53,该主机端仿真及通讯程序54为一主机端QEMU程序。
该客户端虚拟化机器4的虚拟图形驱动程序41用于经由该客户
端仿真及通讯程序42,传送一搜寻封包至该虚拟化环境中其他的虚拟
化机器,该虚拟化环境中的该主机端虚拟化机器5的代理程序52用
于在经由该主机端仿真及通讯程序54接收到该搜寻封包后,经由该
主机端仿真及通讯程序54传送一含有该主机端虚拟化机器5的位址
信息的位址封包至该客户端虚拟化机器4。
该客户端虚拟化机器4的虚拟图形驱动程序41还用于在经由该
客户端仿真及通讯程序42接收到该位址封包后,经由该客户端仿真
及通讯程序42传送一连接请求至该主机端虚拟化机器5。该代理程序
52还用于在经由该主机端仿真及通讯程序54接收到来自该客户端虚
拟化机器4的该连接请求时,经由该原生图形驱动程序53控制该显
示内存11预留一对应于该连接请求的帧缓存(Framebuffer)。
值得一提的是,在本实施例中,该连接请求包含一虚拟桌面分辨
率,使得该代理程序52可经由该原生图形驱动程序53控制该显示内
存11预留一对应于该虚拟桌面分辨率的帧缓存。然而,在本发明的
其他实施例中,该连接请求亦可不包含该虚拟桌面分辨率,于此情况
下,当该代理程序52经由该主机端仿真及通讯程序54接收到来自该
客户端虚拟化机器4的该连接请求时,经由该原生图形驱动程序53
控制该显示内存11预留一较大且较常使用的帧缓存,例如为1920×
1080×4byte的帧缓存,借此,小于等于1920×1080×4byte的帧皆可
储存于该1920×1080×4byte的帧缓存中,所述的1920×1080×4byte
的帧缓存仅式举例而已,亦可预留一大于或小于1920×1080×4byte
的帧缓存。
该客户端虚拟化机器4的虚拟图形驱动程序41还用于经由该客
户端仿真及通讯程序42,传送至少一绘图指令及一与该绘图指令相关
的帧产生需求至该主机端虚拟化机器5,该代理程序52还用于在经由
该主机端仿真及通讯程序54接收到来自该客户端虚拟化机器4的该
绘图指令及帧产生需求时,根据该绘图指令及帧产生需求,经由该原
生图形驱动程序53控制该图形运算单元12产生一帧,并控制该图形
运算单元12将该帧储存于该帧缓存。
该代理程序52还用于从该帧缓存读出该帧且将该帧储存于该储
存模块9,并控制该主机端仿真及通讯程序54经由该网络通讯接口2,
将储存于该储存模块9的该帧传送至该使用端7,当该使用端7的计
算单元72,经由该使用端7的网络通讯接口71接收到该帧时,该计
算单元72根据该帧计算出一对应于该帧产生需求的显示画面,并将
该显示画面显示于该显示单元73。
值得一提的是,在本实施例中,该客户端虚拟化机器4的数量为
一;然而在本发明的其他实施例中,该客户端虚拟化机器4的数量也
可为二以上,于此情况下,该主机端虚拟化机器5与每一客户端虚拟
化机器4的运作流程类似于该客户端虚拟化机器4的数量为一的情
况,所以不在此赘述其细节,其中该主机端虚拟化机器5根据每一客
户端虚拟化机器4的绘图指令及帧产生需求,经由该原生图形驱动程
序53依序地控制该图形运算单元12产生每一帧产生需求所对应的
帧,并控制该图形运算单元12将所述帧储存于对应的帧缓存。另外,
在本实施例中,该代理程序52是将该帧传送至该使用端7;然而在本
发明的其他实施例中,该代理程序52亦可经由该主机端仿真及通讯
程序54,将储存于该储存模块9的该帧传送至该客户端虚拟化机器4。
此外,该主机端虚拟化机器5所执行的主机端操作系统及该客户端虚
拟化机器4所执行的客户端操作系统为兼容的操作系统,如,Windows
操作系统。
由于不同操作系统所支持的绘图应用程序也随之不同,如Linux
操作系统所支持的绘图应用程序为开放图形库(OpenGraphics
Library,简称OpenGL),而Windows操作系统所支持的绘图应用程
序为DirectX(DirecteXtension,简称DX)。若该主机端虚拟化机
器5所执行的主机端操作系统为Linux操作系统,且该客户端虚拟化
机器4执行的客户端操作系统为Windows操作系统,则当该主机端虚
拟化机器5接收到该客户端虚拟化机器4的绘图指令及帧产生需求
时,该主机端虚拟化机器5须先通过现有的转换程序Wine来进行
DirectX与OpenGL间的转换后,才可经由该原生图形驱动程序53控
制该图形运算单元12产生该帧;然而,DirectX所提供的部分绘图功
能不受到OpenGL的支持,且进行DirectX与OpenGL间的转换处理尚
须耗费运算资源及时间。因此,通过在该主机端虚拟化机器5及该客
户端虚拟化机器4执行兼容的操作系统,可避免因兼容性所产生的额
外的转换处理,进而可提升图形产生效率。
参阅图1与图2,本发明虚拟机图形产生方法的实施例,适用于
该虚拟机图形产生系统,该方法包含下列步骤。
如步骤81所示,通过该处理模块3,执行该组程序来形成该包含
该主机端虚拟化机器5及该客户端虚拟化机器4的基于内核的虚拟机
的虚拟化环境。
如步骤82所示,通过该客户端虚拟化机器4的虚拟图形驱动程
序41经由该客户端仿真及通讯程序42,传送该搜寻封包至该虚拟化
环境中其他的虚拟化机器5。
如步骤83所示,当该虚拟化环境中的主机端虚拟化机器5的代
理程序52经由该主机端仿真及通讯程序54接收到该搜寻封包后,通
过该主机端虚拟化机器5的代理程序52经由该主机端仿真及通讯程
序54,传送该含有该主机端虚拟化机器5的位址信息的位址封包至该
客户端虚拟化机器4。
如步骤84所示,当该主机端虚拟化机器5的代理程序52经由该
主机端仿真及通讯程序54接收到来自该客户端虚拟化机器4的该连
接请求时,通过该主机端虚拟化机器5的代理程序52经由该原生图
形驱动程序53,控制该显示内存11预留该对应于该连接请求的帧缓
存,其中该连接请求包含该虚拟桌面分辨率。
如步骤85所示,当该主机端虚拟化机器5的代理程序52接收到
来自该客户端虚拟化机器4的该绘图指令及与该绘图指令相关的帧产
生需求时,通过该主机端虚拟化机器5的代理程序52根据该绘图指
令及帧产生需求经由该原生图形驱动程序53,控制该图形运算单元
12产生该帧,并控制该图形运算单元12将该帧储存于该帧缓存。
如步骤86所示,通过该主机端虚拟化机器5的代理程序52,从
该帧缓存读出该帧且将该帧储存于该储存模块9,并经由该网络通讯
接口2,将储存于该储存模块9的该帧传送至该使用端7。
如步骤87所示,当该使用端7的计算单元72,经由该使用端7
的网络通讯接口71接收到该帧时,通过该计算单元72根据该帧计算
出该对应于该帧产生需求的显示画面,并将该显示画面显示于该显示
单元73。
在本实施例中,该主机端虚拟化机器5所执行的主机端操作系统
及该客户端虚拟化机器4所执行的客户端操作系统为兼容的操作系
统,如,Windows操作系统。
综上所述,通过该代理程序52经由该原生图形驱动程序53,控
制该显示内存11预留该对应于该连接请求的帧缓存,并根据该绘图
指令及帧产生需求经由该原生图形驱动程序53,控制该图形运算单元
12产生该帧,且控制该图形运算单元12将该帧储存于该帧缓存,以
达成利用该主机端虚拟化机器5存取该图形运算单元12的目的,借
此,可大幅提升虚拟化机器的图形运算效率,此外,由于该显示适配
器1对应于该主机端虚拟化机器5,该显示适配器1的图形运算单元
12仅受控于该主机端虚拟化机器5而不受控于该客户端虚拟化机器
4,所以本发明虚拟机图形产生方法所使用的显示适配器1为市面上
价格较低的一般显示适配器1,再者,由于该图形运算单元12于产生
该帧的运算过程中无须将其于运算过程中所产生的图形坐标信息或
YUV色彩空间等中间运算结果一一传送至该代理程序52,并通过该代
理程序52经由该主机端仿真及通讯程序54传送至该客户端虚拟化机
器4,借此可避免因在非必要状况下传送该中间运算结果而耗费运算
时间及提升处理模快的运算量,进而可提升图形产生效率,所以确实
能达成本发明的目的。
以上所述者,仅为本发明的较佳实施例而已,当不能以此限定本
发明实施的范围,即凡依本发明权利要求书及说明书内容所作的简单
的等效变化与修饰,皆仍属本发明专利的范围。