CN100570562C - 显卡、应用该显卡的虚拟机系统及显示处理方法 - Google Patents

显卡、应用该显卡的虚拟机系统及显示处理方法 Download PDF

Info

Publication number
CN100570562C
CN100570562C CNB2006101716194A CN200610171619A CN100570562C CN 100570562 C CN100570562 C CN 100570562C CN B2006101716194 A CNB2006101716194 A CN B2006101716194A CN 200610171619 A CN200610171619 A CN 200610171619A CN 100570562 C CN100570562 C CN 100570562C
Authority
CN
China
Prior art keywords
video card
space
operating system
frame buffer
module
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
Application number
CNB2006101716194A
Other languages
English (en)
Other versions
CN101211270A (zh
Inventor
刘春梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CNB2006101716194A priority Critical patent/CN100570562C/zh
Publication of CN101211270A publication Critical patent/CN101211270A/zh
Application granted granted Critical
Publication of CN100570562C publication Critical patent/CN100570562C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Controls And Circuits For Display Device (AREA)

Abstract

本发明公开了一种显卡、应用该显卡的虚拟机系统及显示处理方法,其中该显卡包括:可划分为多个部分的图形转换表模块,用于保存与一个或多个操作系统对应的图形转换表;可划分为多个部分的帧缓存模块,分配给一个或多个操作系统;可划分为多个部分的MMIO/IO模块,包括与一个或多个操作系统对应的显卡逻辑接口的全部寄存器;调度模块,用于调度对应不同操作系统的显卡逻辑接口所对应的显示功能的硬件处理;图形处理单元,用于根据调度结果操作与被调度到的显卡逻辑接口对应的图形转换表、帧缓存及相应的寄存器;图形显示控制模块,用于将帧缓存中的内容发送到显示器进行显示。通过应用本发明,虚拟机系统中的操作系统都能访问真实的显卡。

Description

显卡、应用该显卡的虚拟机系统及显示处理方法
技术领域
本发明涉及虚拟机技术,特别是一种显卡、应用该显卡的虚拟机系统及显示处理方法。
背景技术
目前,虚拟化技术中对设备的使用有几种方式,一种是该设备被独占,一种是该设备以共享的方式访问,但共享的方式访问设备时,必须为多个系统提供一个虚拟的设备平台,然后由某个主机系统或服务系统再来访问真实的设备;此外,还可以以某种方式使设备在不同系统间转移,但这种时候设备是不共享的。
对于显卡这样的设备,目前的处理方式要么给一个系统独占,其它系统没有显示,要么多个系统共享,每个系统使用虚拟化的显卡,通常虚拟出来的显卡与真实的物理显卡不一致,为了实现方便在功能上有很多缩减,如不支持2D或3D等功能,导致虚拟机不能用到显卡的全部硬件加速特性,而此时真实的显卡只能由主机系统或服务系统访问,这样虚拟系统就不能完全利用显卡的全部特性,而显卡又不可能作为一种切换的设备使用。
发明内容
本发明的目的在于提供一种显卡、应用该显卡的虚拟机系统及显示处理方法,使得虚拟机系统中的操作系统都能访问到真实的显卡。
为了实现上述目的,本发明提供了一种显卡,包括:
可划分为多个部分的图形转换表模块,用于保存与一个或多个操作系统对应的图形转换表;
可划分为多个部分的帧缓存模块,分配给一个或多个操作系统;
可划分为多个部分的MMIO/IO模块,包括与一个或多个操作系统对应的显卡逻辑接口所要用到的全部寄存器;
调度模块,用于调度对应不同操作系统的显卡逻辑接口所对应的显示功能的硬件处理;
图形处理单元,用于根据调度结果操作与被调度到的显卡逻辑接口对应的图形转换表、帧缓存及相应的寄存器;
图形显示控制模块,用于将帧缓存中的内容发送到显示器进行显示。
上述的显卡,其中,还包括:
虚拟机指示模块,用于从虚拟机监视器获取一指令,所述指令指示哪个操作系统获取了焦点;
所述调度模块具体用于根据所述虚拟机指示模块和预定的调度策略确定调度到的逻辑接口。
上述的显卡,其中,所述图形显示控制模块用于将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
上述的显卡,其中,还包括:
资源分配记录模块,由虚拟机监视器或操作系统访问,用于保存显卡资源的分配情况。
上述的显卡,其中,所述资源分配记录模块具体用于保存各个操作系统对应的MMIO/IO空间、图形转换表空间和帧缓存空间的信息。
上述的显卡,其中,所述资源分配记录模块具体用于保存各个操作系统对应的MMIO/IO空间、图形转换表空间和帧缓存空间的信息,还用于保存显卡中尚未使用的MMIO/IO空间、图形转换表空间和帧缓存空间的信息,提供给操作系统自行分配。
上述的显卡,其中,所述资源分配记录模块具体为:
PCI/PCI-E配置空间,与操作系统个数一致且相对应,用于保存每个操作系统对应的显卡MMIO、图形转换表和帧缓存的大小以及资源地址范围。
为了更好的实现上述目的,本发明还提供了一种虚拟机系统,包括一显卡,其中,所述显卡包括:
可划分为多个部分的图形转换表模块,用于保存与一个或多个操作系统对应的图形转换表;
可划分为多个部分的帧缓存模块,分配给一个或多个操作系统;
可划分为多个部分的MMIO/IO模块,包括与一个或多个操作系统对应的显卡逻辑接口所要用到的全部寄存器;
调度模块,用于调度对应不同操作系统的显卡逻辑接口所对应的显示功能的硬件处理;
图形处理单元,用于根据调度结果操作与被调度到的显卡逻辑接口对应的图形转换表、帧缓存及相应的寄存器;
图形显示控制模块,用于将帧缓存中的内容发送到显示器进行显示;
所述虚拟机系统还包括:
地址映射建立模块,用于建立操作系统为MMIO/IO空间、图形转换表空间、帧缓存空间分配的地址范围和显卡真实资源之间的映射关系;
虚拟机通信模块,设置于虚拟机监视器,用于将上述显卡中分配给操作系统的MMIO/IO空间、图形转换表空间、帧缓存空间通知对应的操作系统,并用于截获操作系统的显卡驱动模块对显卡的操作,根据地址映射建立模块中建立的映射关系转换地址后发送给显卡。
上述的虚拟机系统,其中,所述显卡还包括:
虚拟机指示模块,用于从虚拟机监视器获取一指令,所述指令指示哪个操作系统获取了焦点;
所述调度模块具体用于根据所述虚拟机指示模块和预定的调度策略确定调度到的逻辑接口。
上述的虚拟机系统,其中,所述图形显示控制模块用于将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
上述的虚拟机系统,其中,所述显卡还包括:
资源分配记录模块,由虚拟机监视器或操作系统访问,用于保存显卡资源的分配情况;
所述虚拟机通信模块具体从资源分配记录模块获取分配给操作系统的MMIO/IO空间、图形转换表空间、帧缓存空间。
上述的虚拟机系统,其中,所述资源分配记录模块具体用于保存各个操作系统对应的MMIO/IO空间、图形转换表空间和帧缓存空间的信息。
上述的虚拟机系统,其中,所述资源分配记录模块具体用于保存各个操作系统对应的MMIO/IO空间、图形转换表空间和帧缓存空间的信息,还用于保存显卡中尚未使用的MMIO/IO空间、图形转换表空间和帧缓存空间的信息,提供给操作系统自行分配。
上述的虚拟机系统,其中,所述资源分配记录模块具体为:
PCI/PCI-E配置空间,与操作系统个数一致且相对应,用于保存每个操作系统对应的显卡MMIO、图形转换表和帧缓存的大小以及资源地址范围。
为了更好的实现上述目的,本发明还提供了一种显示处理方法,其中,包括:
显卡资源分配通知步骤,虚拟机启动后,当操作系统对显卡进行配置时,虚拟机通信模块将显卡中对应该操作系统的逻辑接口的MMIO/IO空间、图形转换表空间、帧缓存空间的大小通知对应的操作系统;所述显卡中的MMIO/IO空间、图形转换表空间、帧缓存空间被分配给一个或多个操作系统;
资源映射建立步骤,操作系统获得MMIO/IO空间、图形转换表空间、帧缓存空间大小后,为其分配地址范围,并由虚拟机监视器建立操作系统为MMIO/IO空间、图形转换表空间、帧缓存空间分配的地址范围和显卡真实资源之间的映射关系;
图形处理单元计算处理步骤,图形处理单元处理被调度到的显卡逻辑接口对应的图形转换表、帧缓存及寄存器;
显示输出步骤,将帧缓存中的内容发送到显示器进行显示。
上述的显示处理方法,其中,获取了焦点的操作系统被优先调度。
上述的显示处理方法,其中,所述显示输出步骤中,将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
上述的显示处理方法,其中,所述显卡资源分配通知步骤具体为:
虚拟机启动后,当操作系统对显卡进行配置时,虚拟机监视器拦截操作系统对显卡设备的配置访问,将显卡中分配给对应操作系统的MMIO/IO空间、GTT空间、帧缓存空间的大小通知操作系统。
上述的显示处理方法,其中,所述显卡资源分配通知步骤具体为:
虚拟机启动后,操作系统对显卡进行配置时,虚拟机监视器拦截操作系统对显卡设备的配置访问,并获取显卡中尚未使用的MMIO/IO空间、GTT空间和帧缓存空间的信息提供给操作系统,由操作系统决定自己对应的逻辑接口可以使用的资源大小。
上述的显示处理方法,其中,所述显卡资源分配通知步骤具体为:
虚拟机启动后,当操作系统对显卡进行配置时,虚拟机监视器拦截操作系统对显卡设备的配置访问,并获取操作系统对应的PCI/PCI-E配置空间中的MMIO/IO空间、GTT空间和帧缓存空间的信息提供给操作系统。
本发明的显卡、应用该显卡的虚拟机系统及显示处理方法,通过将图形转换表模块、帧缓存模块和MMIO/IO模块分成几个部分,分别配置给不同的操作系统的逻辑接口,这样对应的操作系统获得一套独占的资源,都能访问到真实的显卡。
附图说明
图1为本发明的显卡的结构示意图;
图2为本发明的虚拟机系统的显示处理方法的流程图。
具体实施方式
本发明的显卡、应用该显卡的虚拟机系统及显示处理方法中,通过将现有显卡中的帧缓存分为几个部分,分别提供给虚拟机系统中的多个操作系统,为每个操作系统提供独占的逻辑显卡接口。
下面结合不同的实施例对本发明进行详细说明。
<第一实施例>
在本发明的第一实施例中,各个操作系统对应的MMIO/IO空间、GTT(Graphic Translation Table,图形转换表)空间和帧缓存空间被预先分配并保存,当操作系统对显卡进行配置时,虚拟机监视器把预先分配给各个操作系统的MMIO/IO空间、GTT空间、帧缓存空间的大小通知对应的操作系统。
本发明的第一实施例中,显卡如图1所示,包括PCI/PCI-E配置空间、虚拟机指示模块、调度模块、资源分配保存模块、GPU、MMIO/IO模块、GTT模块、帧缓存模块(Frame Buffer)和图形显示控制模块,GTT模块,帧缓存模块资源可以在系统主存中,其中:
PCI/PCI-E配置空间,用于保存显卡MMIO、GTT和帧缓存的大小以及资源地址范围;在本发明的第一实施例中,PCI/PCI-E配置空间为一个;
MMIO/IO模块,分成多个部分,每个部分包括与各操作系统对应的显卡逻辑接口所要用到的全部寄存器(如显示模式寄存器、控制寄存器、状态寄存器等);在此,每个操作系统对应的部分在结构方面相同;
GTT模块,分成多个部分,用于保存与各个操作系统对应的GTT,该GTT用于保存帧缓存地址和物理内存地址之间的映射关系;
在此,应当进行说明的是,上述的GTT(图形转换表)只是业界对实现该功能的软件模块或硬件模块的其中一种叫法,还存在其他的名称,如GART(Graphics Address Remapping Table,显卡地址重新分配表)等,但为了方便描述,在本发明中统一将其命名为GTT。
帧缓存模块,分成多个部分,以分配给相应的操作系统;
其中,GTT模块和帧缓存模块中的各个部分的大小对应于各操作系统可以不同,各操作系统被分配到的帧缓存可以不同。
资源分配记录模块,由虚拟机监视器或操作系统访问,用于保存各个操作系统对应的MMIO/IO空间、GTT空间和帧缓存空间的信息;
虚拟机指示模块,用于接收VMM发送的指示哪个操作系统获取了焦点的指令;
调度模块,用于根据虚拟机指示模块发送的指令和预定的调度策略确定调度到的逻辑接口,并从资源分配记录模块获取被调度到的逻辑接口对应的MMIO空间、GTT空间和帧缓存空间信息发送给GPU(Grapic Processing Unit,图形处理单元);
GPU,用于根据调度模块发送的被调度到的逻辑接口的信息操作对应的GTT、帧缓存及相应的寄存器;
图形显示控制模块,用于将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
本发明的虚拟机操作系统包括:
上述的显卡;
操作系统焦点获取通知模块,设置于虚拟机监视器,用于将获取了焦点的操作系统通知虚拟机指示模块;
地址映射建立模块,设置于虚拟机监视器,用于建立操作系统为MMIO/IO空间、GTT空间、帧缓存空间分配的地址范围和显卡真实资源之间的映射关系;
虚拟机通信模块,设置于虚拟机监视器,用于将上述显卡中分配给操作系统的MMIO/IO空间、GTT空间、帧缓存空间通知对应的操作系统,并用于截获操作系统的显卡驱动模块对显卡的操作,根据地址映射建立模块中建立的映射关系转换地址后发送给显卡,MMIO和显存的操作根据地址映射建立模块中建立的映射关系建立虚拟机监视器中的页表。这样,对应的操作系统获得一套独占的资源,相当于获得了一个逻辑的显卡接口。
下面结合附图对本发明的虚拟机的显示处理方法进行详细的说明。
如图2所示,本发明的虚拟机的显示处理方法包括如下步骤:
PCI/PCI-E资源分配步骤,系统启动时,虚拟机监视器或host OS从显卡的PCI/PCI-E配置空间读出MMIO/IO的大小,GTT的大小,FB的大小,并为显卡分配这些资源的地址范围后重新写入显卡的PCI/PCI-E配置空间;
显卡资源分配通知步骤,虚拟机启动后,当操作系统对显卡进行配置时,虚拟机监视器拦截操作系统对显卡设备的配置访问,虚拟机通信模块将显卡中分配给各个操作系统的MMIO/IO空间、GTT空间、帧缓存空间的大小通知对应的操作系统,使每个启动的操作系统获得一套独占的资源;
资源映射建立步骤,操作系统获得MMIO/IO空间、GTT空间、帧缓存空间大小后,为其分配地址范围,地址映射建立模块建立操作系统为MMIO/IO空间、GTT空间、帧缓存空间分配的地址范围和显卡真实资源之间的映射关系;
GPU计算处理步骤,GPU根据被调度到的逻辑接口的信息(即相应的寄存器内容和命令)处理该逻辑接口对应的GTT和帧缓存;被调度到的逻辑接口与调度策略和该逻辑接口对应的操作系统是否获取了焦点有关,获得了焦点的操作系统具有更高的优先权。如果不需要GPU参与的显示内容,则由操作系统操作相应的GTT和FB,而不需要进行调度,这种情况下,多个操作系统可以同时并行进行。
显示输出步骤,将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
其中:
所谓获得了焦点的操作系统为拥有了输入设备(如键盘、鼠标)的操作系统;
同时,GPU计算处理步骤中优先处理了获得了焦点的操作系统对应的显示命令后,才处理其他操作系统对应的显示命令,然而由于图形显示控制模块的控制,只有获取了焦点的操作系统对应的帧缓存中的内容才会被发送到显示器进行显示。
GPU计算处理步骤中,GPU首先获取被调度到的逻辑接口对应的MMIO/IO在显卡内部的基地址,并根据该基地址所对应的寄存器来进行运算,并操作相应的GTT和帧缓存。
<第二实施例>
在本发明的第二实施例中,当操作系统对显卡进行配置时,虚拟机监视器将显卡中尚未使用的MMIO/IO空间、GTT空间和帧缓存空间的信息提供给操作系统,由操作系统自行选择空间。
本发明的第二实施例中,显卡包括PCI/PCI-E配置空间、虚拟机指示模块、调度模块、资源分配保存模块、GPU、MMIO/IO模块、GTT模块、帧缓存模块和图形显示控制模块,GTT模块,帧缓存模块资源可以在系统主存中,其中:
PCI/PCI-E配置空间,用于保存显卡MMIO、GTT(Grapic TranslationTable,图形转换表)和帧缓存的大小以及资源地址范围;在本发明的第二实施例中,PCI/PCI-E配置空间为一个;当然,也可以用PCI/PCI-E配置空间配合一些寄存器来保存这些内容。
MMIO/IO模块,分成多个部分,每个部分包括与各操作系统对应的显卡逻辑接口所要用到的全部寄存器(如显示模式寄存器、控制寄存器、状态寄存器等);在此,每个操作系统对应的部分在结构方面相同;
GTT模块,分成多个部分,用于保存与各个操作系统对应的GTT,该GTT用于保存帧缓存地址和物理内存地址之间的映射关系;
帧缓存模块,分成多个部分,以分配给相应的操作系统;
其中,GTT模块和帧缓存模块中的各个部分的大小对应于各操作系统可以不同,各操作系统被分配到的帧缓存可以不同。
资源分配记录模块,由虚拟机监视器或操作系统访问,用于保存各个操作系统对应的MMIO/IO空间、GTT空间和帧缓存空间的信息;同时还用于保存显卡中尚未使用的MMIO/IO空间、GTT空间和帧缓存空间的信息,并将显卡中尚未使用的MMIO/IO空间、GTT空间和帧缓存空间的信息提供给尚未与显卡建立连接的操作系统,由尚未与显卡建立连接的操作系统决定自己对应的逻辑接口可以使用的资源大小;
虚拟机指示模块,用于接收VMM发送的指示哪个操作系统获取了焦点的指令;
调度模块,用于根据虚拟机指示模块发送的指令和预定的调度策略确定调度到的逻辑接口,并从资源分配记录模块获取被调度到的逻辑接口对应的MMIO空间、GTT空间和帧缓存空间信息发送给GPU(Grapic Processing Unit,图形处理单元);
GPU,用于根据调度模块发送的被调度到的逻辑接口的信息操作对应的GTT、帧缓存及相应的寄存器;
图形显示控制模块,用于将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
本发明的第二实施例中的虚拟机操作系统包括:
上述的显卡;
操作系统焦点获取通知模块,设置于虚拟机监视器,用于将获取了焦点的操作系统通知虚拟机指示模块;
地址映射建立模块,设置于虚拟机监视器,用于建立操作系统为MMIO/IO空间、GTT空间、帧缓存空间分配的地址范围和显卡真实资源之间的映射关系;在此,操作系统首先从资源分配记录模块中获取显卡中尚未使用的MMIO/IO空间、GTT空间和帧缓存空间的信息,并决定自己对应的显卡逻辑接口使用的资源的大小;
虚拟机通信模块,设置于虚拟机监视器,用于将上述显卡中尚未分配给操作系统的MMIO/IO空间、GTT空间、帧缓存空间通知操作系统,并用于截获操作系统的显卡驱动模块对显卡的操作,根据地址映射建立模块中建立的映射关系转换地址后发送给显卡,MMIO和显存的操作根据地址映射建立模块中建立的映射关系建立虚拟机监视器中的页表。这样,对应的操作系统获得一套独占的资源,相当于获得了一个逻辑的显卡接口。
本发明的虚拟机的显示处理方法包括如下步骤:
PCI/PCI-E资源分配步骤,系统启动时,虚拟机监视器或host OS从显卡的PCI/PCI-E配置空间读出MMIO/IO的大小,GTT的大小,FB的大小,并为显卡分配这些资源的地址范围后重新写入显卡的PCI/PCI-E配置空间;
显卡资源分配通知步骤,虚拟机启动后,当操作系统对显卡进行配置时,虚拟机监视器拦截操作系统对显卡设备的配置访问,并获取资源分配记录模块中记录的显卡中尚未使用的MMIO/IO空间、GTT空间和帧缓存空间的信息提供给操作系统,由操作系统决定自己对应的逻辑接口可以使用的资源大小;
资源映射建立步骤,操作系统决定MMIO/IO空间、GTT空间、帧缓存空间大小后,为其分配地址范围,地址映射建立模块建立操作系统为MMIO/IO空间、GTT空间、帧缓存空间分配的地址范围和显卡真实资源之间的映射关系;
GPU计算处理步骤,GPU根据被调度到的逻辑接口的信息(即相应的寄存器内容和命令)处理该逻辑接口对应的GTT和帧缓存;被调度到的逻辑接口与调度策略和该逻辑接口对应的操作系统是否获取了焦点有关,获得了焦点的操作系统具有更高的优先权。如果不需要GPU参与的显示内容,则由操作系统操作相应的GTT和FB,而不需要进行调度,这种情况下,多个操作系统可以同时并行进行。
显示输出步骤,将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
其中:
所谓获得了焦点的操作系统为拥有了输入设备(如键盘、鼠标)的操作系统;
同时,GPU计算处理步骤中优先处理了获得了焦点的操作系统对应的显示命令后,才处理其他操作系统对应的显示命令,然而由于图形显示控制模块的控制,只有获取了焦点的操作系统对应的帧缓存中的内容才会被发送到显示器进行显示。
GPU计算处理步骤中,GPU首先获取被调度到的逻辑接口对应的MMIO/IO在显卡内的基地址,并根据该基地址所对应的寄存器来进行运算,并操作相应的GTT和帧缓存。
<第三实施例>
在本发明的第三实施例中,各个操作系统对应的MMIO/IO空间、GTT空间和帧缓存空间被预先分配并保存在多个与操作系统对应的PCI/PCI-E配置空间中,每个操作系统的逻辑接口与一个PCI/PCI-E配置空间相对应。
本发明的第三实施例中,显卡包括PCI/PCI-E配置空间、虚拟机指示模块、调度模块、GPU、MMIO/IO模块、GTT模块、帧缓存模块和图形显示控制模块,GTT模块,帧缓存模块资源可以在系统主存中,其中:
PCI/PCI-E配置空间,包括多个,与操作系统相对应,用于保存每个操作系统对应的显卡MMIO、GTT(Grapic Translation Table,图形转换表)和帧缓存的大小以及资源地址范围;
MMIO/IO模块,分成多个部分,每个部分包括与各操作系统对应的显卡逻辑接口所要用到的全部寄存器(如显示模式寄存器、控制寄存器、状态寄存器等);在此,每个操作系统对应的部分在结构方面相同;
GTT模块,分成多个部分,用于保存与各个操作系统对应的GTT,该GTT用于保存帧缓存地址和物理内存地址之间的映射关系;
帧缓存模块,分成多个部分,以分配给相应的操作系统;
其中,GTT模块和帧缓存模块中的各个部分的大小对应于各操作系统可以不同,各操作系统被分配到的帧缓存可以不同。
虚拟机指示模块,用于接收VMM发送的指示哪个操作系统获取了焦点的指令;
调度模块,用于根据虚拟机指示模块发送的指令和预定的调度策略确定调度到的逻辑接口,并把被调度到的逻辑接口对应的MMIO空间、GTT空间和帧缓存空间信息发送给GPU(Grapic Processing Unit,图形处理单元);
GPU,用于根据调度模块发送的被调度到的逻辑接口的信息操作对应的GTT、帧缓存及相应的寄存器;
图形显示控制模块,用于将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
本发明的第三实施例中的虚拟机操作系统包括:
上述的显卡;
操作系统焦点获取通知模块,设置于虚拟机监视器,用于将获取了焦点的操作系统通知虚拟机指示模块;
地址映射建立模块,设置于虚拟机监视器,用于建立操作系统为MMIO/IO空间、GTT空间、帧缓存空间分配的地址范围和显卡真实资源之间的映射关系;在此,操作系统从PCI/PCI-E配置空间中获取与操作系统对应的的显卡MMIO、GTT(Grapic Translation Table,图形转换表)和帧缓存的大小并分配资源地址范围,由地址映射建立模块建立映射关系。
虚拟机通信模块,设置于虚拟机监视器,用于将上述显卡中分配给操作系统的MMIO/IO空间、GTT空间、帧缓存空间通知对应的操作系统,并用于截获操作系统的显卡驱动模块对显卡的操作,根据地址映射建立模块中建立的映射关系转换地址后发送给显卡,MMIO和显存的操作根据地址映射建立模块中建立的映射关系建立虚拟机监视器中的页表。这样,对应的操作系统获得一套独占的资源,相当于获得了一个逻辑的显卡接口。
本发明第三实施例的虚拟机的显示处理方法包括如下步骤:
PCI/PCI-E资源分配步骤,系统启动时,虚拟机监视器或host OS为多个操作系统设置对应的PCI/PCI-E配置空间,并从对应的PCI/PCI-E配置空间读出MMIO/IO的大小,GTT的大小,FB的大小,并为显卡分配这些资源的地址范围后重新写入对应的PCI/PCI-E配置空间;
显卡资源分配通知步骤,虚拟机启动后,当操作系统对显卡进行配置时,虚拟机监视器拦截操作系统对显卡设备的配置访问,并获取对应的PCI/PCI-E配置空间中的MMIO/IO空间、GTT空间和帧缓存空间的信息提供给操作系统;
资源映射建立步骤,操作系统获得MMIO/IO空间、GTT空间、帧缓存空间大小后,为其分配地址范围,地址映射建立模块建立操作系统为MMIO/IO空间、GTT空间、帧缓存空间分配的地址范围和显卡真实资源之间的映射关系;
GPU计算处理步骤,GPU根据被调度到的逻辑接口的信息(即相应的寄存器内容和命令)处理该逻辑接口对应的GTT和帧缓存;被调度到的逻辑接口与调度策略和该逻辑接口对应的操作系统是否获取了焦点有关,获得了焦点的操作系统具有更高的优先权。如果不需要GPU参与的显示内容,则由操作系统操作相应的GTT和FB,而不需要进行调度,这种情况下,多个操作系统可以同时并行进行。
显示输出步骤,将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
其中:
所谓获得了焦点的操作系统为拥有了输入设备(如键盘、鼠标)的操作系统;
同时,GPU计算处理步骤中优先处理了获得了焦点的操作系统对应的显示命令后,才处理其他操作系统对应的显示命令,然而由于图形显示控制模块的控制,只有获取了焦点的操作系统对应的帧缓存中的内容才会被发送到显示器进行显示。
GPU计算处理步骤中,GPU首先获取被调度到的逻辑接口对应的MMIO/IO在显卡内的基地址,并根据该基地址所对应的寄存器来进行运算,并操作相应的GTT和帧缓存。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (20)

1.一种显卡,其特征在于,包括:
可划分为多个部分的图形转换表模块,用于保存与一个或多个操作系统对应的图形转换表;
可划分为多个部分的帧缓存模块,分配给一个或多个操作系统;
可划分为多个部分的内存映射输入输出/输入输出模块,包括与一个或多个操作系统对应的显卡逻辑接口所要用到的全部寄存器;
调度模块,用于调度对应不同操作系统的显卡逻辑接口,并获取与被调度到的显卡逻辑接口对应的图形转换表空间信息、帧缓存空间信息及相应的寄存器空间信息;
图形处理单元,用于根据调度结果操作与被调度到的显卡逻辑接口对应的图形转换表、帧缓存及相应的寄存器;
图形显示控制模块,用于将帧缓存中的内容发送到显示器进行显示。
2.根据权利要求1所述的显卡,其特征在于,还包括:
虚拟机指示模块,用于从虚拟机监视器获取一指令,所述指令指示哪个操作系统获取了焦点;
所述调度模块具体用于根据所述虚拟机指示模块和预定的调度策略确定调度到的逻辑接口。
3.根据权利要求2所述的显卡,其特征在于,所述图形显示控制模块用于将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
4.根据权利要求2所述的显卡,其特征在于,还包括:
资源分配记录模块,由虚拟机监视器或操作系统访问,用于保存显卡资源的分配情况。
5.根据权利要求4所述的显卡,其特征在于,所述资源分配记录模块具体用于保存各个操作系统对应的内存映射输入输出/输入输出空间、图形转换表空间和帧缓存空间的信息。
6.根据权利要求4所述的显卡,其特征在于,所述资源分配记录模块具体用于保存各个操作系统对应的内存映射输入输出/输入输出空间、图形转换表空间和帧缓存空间的信息,还用于保存显卡中尚未使用的内存映射输入输出/输入输出空间、图形转换表空间和帧缓存空间的信息,提供给操作系统自行分配。
7.根据权利要求4所述的显卡,其特征在于,所述资源分配记录模块具体为:
PCI/PCI-E配置空间,与操作系统个数一致且相对应,用于保存每个操作系统对应的显卡内存映射输入输出、图形转换表和帧缓存的大小以及资源地址范围。
8.一种虚拟机系统,包括一显卡,其特征在于,所述显卡包括:
可划分为多个部分的图形转换表模块,用于保存与一个或多个操作系统对应的图形转换表;
可划分为多个部分的帧缓存模块,分配给一个或多个操作系统;
可划分为多个部分的内存映射输入输出/输入输出模块,包括与一个或多个操作系统对应的显卡逻辑接口所要用到的全部寄存器;
调度模块,用于调度对应不同操作系统的显卡逻辑接口,并获取与被调度到的显卡逻辑接口对应的图形转换表空间信息、帧缓存空间信息及相应的寄存器空间信息;
图形处理单元,用于根据调度结果操作与被调度到的显卡逻辑接口对应的图形转换表、帧缓存及相应的寄存器;
图形显示控制模块,用于将帧缓存中的内容发送到显示器进行显示;
所述虚拟机系统还包括:
地址映射建立模块,用于建立操作系统为内存映射输入输出/输入输出空间、图形转换表空间、帧缓存空间分配的地址范围和显卡真实资源之间的映射关系;
虚拟机通信模块,设置于虚拟机监视器,用于将上述显卡中分配给操作系统的内存映射输入输出/输入输出空间、图形转换表空间、帧缓存空间通知对应的操作系统,并用于截获操作系统的显卡驱动模块对显卡的操作,根据地址映射建立模块中建立的映射关系转换地址后发送给显卡。
9.根据权利要求8所述的虚拟机系统,其特征在于,所述显卡还包括:
虚拟机指示模块,用于从虚拟机监视器获取一指令,所述指令指示哪个操作系统获取了焦点;
所述调度模块具体用于根据所述虚拟机指示模块和预定的调度策略确定调度到的逻辑接口。
10.根据权利要求9所述的虚拟机系统,其特征在于,所述图形显示控制模块用于将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
11.根据权利要求9所述的虚拟机系统,其特征在于,所述显卡还包括:
资源分配记录模块,由虚拟机监视器或操作系统访问,用于保存显卡资源的分配情况;
所述虚拟机通信模块具体从资源分配记录模块获取分配给操作系统的MMIO/IO空间、图形转换表空间、帧缓存空间。
12.根据权利要求11所述的虚拟机系统,其特征在于,所述资源分配记录模块具体用于保存各个操作系统对应的内存映射输入输出/输入输出空间、图形转换表空间和帧缓存空间的信息。
13.根据权利要求11所述的虚拟机系统,其特征在于,所述资源分配记录模块具体用于保存各个操作系统对应的内存映射输入输出/输入输出空间、图形转换表空间和帧缓存空间的信息,还用于保存显卡中尚未使用的内存映射输入输出/输入输出空间、图形转换表空间和帧缓存空间的信息,提供给操作系统自行分配。
14.根据权利要求11所述的虚拟机系统,其特征在于,所述资源分配记录模块具体为:
PCI/PCI-E配置空间,与操作系统个数一致且相对应,用于保存每个操作系统对应的显卡内存映射输入输出、图形转换表和帧缓存的大小以及资源地址范围。
15.一种显示处理方法,其特征在于,包括:
显卡资源分配通知步骤,虚拟机启动后,当操作系统对显卡进行配置时,虚拟机通信模块将显卡中对应该操作系统的逻辑接口的内存映射输入输出/输入输出空间、图形转换表空间、帧缓存空间的大小通知对应的操作系统;所述显卡中的内存映射输入输出/输入输出空间、图形转换表空间、帧缓存空间被分配给一个或多个操作系统;
资源映射建立步骤,操作系统获得内存映射输入输出/输入输出空间、图形转换表空间、帧缓存空间大小后,为其分配地址范围,并由虚拟机监视器建立操作系统为内存映射输入输出/输入输出空间、图形转换表空间、帧缓存空间分配的地址范围和显卡真实资源之间的映射关系;
图形处理单元计算处理步骤,图形处理单元处理被调度到的显卡逻辑接口对应的图形转换表、帧缓存及寄存器;
显示输出步骤,将帧缓存中的内容发送到显示器进行显示。
16.根据权利要求15所述的显示处理方法,其特征在于,获取了焦点的操作系统对应的逻辑接口被优先调度。
17.根据权利要求15所述的显示处理方法,其特征在于,所述显示输出步骤中,将获取了焦点的操作系统对应的帧缓存中的内容发送到显示器进行显示。
18.根据权利要求15、16或17所述的显示处理方法,其特征在于,所述显卡资源分配通知步骤具体为:
虚拟机启动后,当操作系统对显卡进行配置时,虚拟机监视器拦截操作系统对显卡设备的配置访问,将显卡中分配给对应操作系统的内存映射输入输出/输入输出空间、GTT空间、帧缓存空间的大小通知操作系统。
19.根据权利要求15、16或17所述的显示处理方法,其特征在于,所述显卡资源分配通知步骤具体为:
虚拟机启动后,操作系统对显卡进行配置时,虚拟机监视器拦截操作系统对显卡设备的配置访问,并获取显卡中尚未使用的内存映射输入输出/输入输出空间、GTT空间和帧缓存空间的信息提供给操作系统,由操作系统决定自己对应的逻辑接口可以使用的资源大小。
20.根据权利要求15、16或17所述的显示处理方法,其特征在于,所述显卡资源分配通知步骤具体为:
虚拟机启动后,当操作系统对显卡进行配置时,虚拟机监视器拦截操作系统对显卡设备的配置访问,并获取操作系统对应的PCI/PCI-E配置空间中的内存映射输入输出/输入输出空间、GTT空间和帧缓存空间的信息提供给操作系统。
CNB2006101716194A 2006-12-31 2006-12-31 显卡、应用该显卡的虚拟机系统及显示处理方法 Active CN100570562C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101716194A CN100570562C (zh) 2006-12-31 2006-12-31 显卡、应用该显卡的虚拟机系统及显示处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101716194A CN100570562C (zh) 2006-12-31 2006-12-31 显卡、应用该显卡的虚拟机系统及显示处理方法

Publications (2)

Publication Number Publication Date
CN101211270A CN101211270A (zh) 2008-07-02
CN100570562C true CN100570562C (zh) 2009-12-16

Family

ID=39611325

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101716194A Active CN100570562C (zh) 2006-12-31 2006-12-31 显卡、应用该显卡的虚拟机系统及显示处理方法

Country Status (1)

Country Link
CN (1) CN100570562C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762894A (zh) * 2018-06-21 2018-11-06 郑州云海信息技术有限公司 一种虚拟机显示方法和装置

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739289B (zh) * 2008-11-13 2013-06-19 北京闪联云视信息技术有限公司 一种在Linux虚拟机中设置显示模式的方法及装置
CN102541618B (zh) * 2010-12-29 2015-05-27 中国移动通信集团公司 一种通用图形处理器虚拟化的实现方法、系统及装置
CN103092679B (zh) * 2013-01-29 2016-01-20 四川大学 一种基于虚拟化主机的广告展示方法与系统
CN103200128B (zh) * 2013-04-01 2016-12-28 华为技术有限公司 一种网络包处理的方法、装置和系统
CN106648878B (zh) * 2015-10-29 2021-08-20 华为技术有限公司 一种系统及其动态分配mmio资源的方法
CN105550002B (zh) * 2015-12-28 2020-02-07 北京元心科技有限公司 基于系统切换的界面显示方法和智能终端
WO2018053829A1 (en) * 2016-09-26 2018-03-29 Intel Corporation Apparatus and method for hybrid layer of address mapping for virtualized input/output implementation
CN107077376B (zh) * 2016-12-07 2020-10-16 深圳前海达闼云端智能科技有限公司 帧缓存实现方法、装置、电子设备和计算机程序产品
CN108874544A (zh) * 2018-06-11 2018-11-23 郑州云海信息技术有限公司 一种gpu服务器io资源分配的方法及系统
CN113039522A (zh) * 2018-11-30 2021-06-25 英特尔公司 用于虚拟化的图形处理器的有效本地显示共享的装置和方法
CN114896014A (zh) * 2022-05-20 2022-08-12 亿咖通(湖北)技术有限公司 一种桌面图像显示方法、装置、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762894A (zh) * 2018-06-21 2018-11-06 郑州云海信息技术有限公司 一种虚拟机显示方法和装置

Also Published As

Publication number Publication date
CN101211270A (zh) 2008-07-02

Similar Documents

Publication Publication Date Title
CN100570562C (zh) 显卡、应用该显卡的虚拟机系统及显示处理方法
US10671541B2 (en) System and method for one step address translation of graphics addresses in virtualization
US8924959B2 (en) Switching hardware devices in virtual machine systems using resource converting relationships
CN100472451C (zh) 一种虚拟机系统及其硬件设备访问方法
CN101241445B (zh) 虚拟机系统及其访问显卡的方法
CN107783913B (zh) 一种应用于计算机的资源访问方法和计算机
JP6009675B2 (ja) 物理メモリの動的パーティショニング技術
CN103034524B (zh) 半虚拟化的虚拟gpu
US9176765B2 (en) Virtual machine system and a method for sharing a graphics card amongst virtual machines
US9269122B2 (en) First and second software stacks and discrete and integrated graphics processing units
CN105830026A (zh) 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
CN102110196A (zh) 并行运行多用户操作系统间的数据安全传输方法及系统
JP2009110518A (ja) 仮想マシンデバイスの動的割り当て
JP2022516486A (ja) リソース管理方法と装置、電子デバイス、及び記録媒体
CN105786589A (zh) 一种云渲染系统、服务器及方法
CN104636186A (zh) 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备
CN103425534A (zh) 在许多应用之间共享的图形处理单元
CN104503825A (zh) 一种基于kvm混合式设备虚拟化方法
CN115904617A (zh) 一种基于sr-iov技术的gpu虚拟化实现方法
CN102096594B (zh) 使用内存中系统资源的方法及装置
US20160026567A1 (en) Direct memory access method, system and host module for virtual machine
CN116385252A (zh) 虚拟化场景的gpu穿透使用方法、设备及存储介质
CN116775513A (zh) 支持设备直通虚拟机的物理内存动态分配系统及方法
CN117992157A (zh) 一种虚拟机的图像显示方法及装置
CN116719496A (zh) 虚拟屏幕实现方法、装置、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant