利用图形虚拟化从/向主机计算机进行虚拟机的实时迁移的制作方法

文档序号:11450239阅读:234来源:国知局
利用图形虚拟化从/向主机计算机进行虚拟机的实时迁移的制造方法与工艺

本公开涉及计算领域。更具体地,本公开涉及利用图形虚拟化从/向主机计算机进行虚拟机的实时迁移。



背景技术:

本文所提供的背景描述是为了一般地呈现本公开的上下文的目的。除非本文另外指出,否则本节中所描述的材料对于本申请的权利要求书而言并非现有技术,并且不因为包括在本节中而被承认是现有技术。

虚拟机(vm)的传统实时迁移通常涉及存储器内容的增量迁移,因为迁移整个系统存储器的成本是巨大的和不切实际的。整个系统停机一段持续很久的时间以使整个系统存储器迁移的是不能忍受的。代替地,系统通常会在系统仍在运行的同时通过若干次迭代只迁移存储器的经修改部分。在此期间,新标记的存储器页面被标记为“脏”、并在随后的迭代中被迁移。

虚拟化和图形技术的最新进展使得主机计算机上的多个vm之间能够实现更高效的图形虚拟化。高级图形虚拟化现在通常支持在vm内部运行的本机图形驱动器,以使虚拟机的用户应用能够访问主机计算机的图形处理单元(gpu)所支持的全面的图形能力。通常,gpu设备模型在主机计算机的虚拟机监视器(vmm)内实现,用于模拟对诸如存储器映射输入输出(mmio)的gpu资源的访问。gpu能够在处理gpu命令时操控主机计算机的系统存储器,并且对系统存储器的操控对于vmm的存储器管理器是未知的。

因此,当涉及最新的gpu虚拟化时,现有技术的vm的实时迁移不再起作用。此外,当实时迁移的目标主机计算机具有的gpu不同于实时迁移的源主机计算机的gpu时,迁移变得更加复杂。传统的实时迁移方法无法处理这样的实时迁移,因为源主机计算机和目标主机计算机的两个gpu的状态不完全匹配。

附图说明

结合附图,借助于下面的详细描述将很容易理解实施例。为了方便本描述,相同的参考标号指代相同的结构元件。在附图的各图中通过示例的方式而非限制的方式展示了实施例。

图1根据所公开的实施例展示了适合用于实践本公开的示例计算安排。

图2根据所公开的实施例展示了源主机计算机和目标主机计算机的示例对。

图3根据所公开的实施例展示了图1和图2的图形解析器的示例操作方法。

图4根据所公开的实施例展示了图1和图2的实时迁移功能的示例操作方法。

图5根据所公开的实施例展示了图1和图2的图形代理库的示例操作方法。

图6根据所公开的实施例展示了适合用于实践本公开的各个方面的示例计算机系统。

图7根据所公开的实施例展示了具有用于实践参照图1-5所描述的方法的指令的存储介质。

具体实施方式

本文公开了与利用图形虚拟化从/向主机计算机进行vm的实时迁移相关联的装置、方法和存储介质。在实施例中,一种用于计算的装置可以包括vmm,所述vmm用于管理由所述装置的一个或多个通用处理器(cpu)托管的vm。vmm可以包括存储器管理器,所述存储器管理器用于管理通过由cpu执行的vm的应用的指令进行的对所述装置的系统存储器的访问。对访问的管理可以包括跟踪所述系统存储器的经修改的存储器页面。另外,所述vmm可以包括图形命令解析器,所述图形命令解析器用于:对由所述应用向所述装置的图形处理单元(gpu)发布的图形命令进行分析以检测由所述图形命令引起的对所述系统存储器的写入;以及增强对经修改的存储器页面的所述跟踪。进一步地,所述vmm可以包括用于选择性地将所述vm中的一者或多者实时迁移到另一用于计算的装置的实时迁移功能,所述实时迁移功能包括:利用如由所述图形命令解析器增强的由所述存储器管理器跟踪的经修改的存储器页面将正被实时迁移的vm的当前存储器内容提供到所述另一装置。

在实施例中,命令解析器可以被进一步配置为分析所述图形命令以判定gpu是否支持所述图形命令。进一步地,所述图形命令解析器可以被配置为用于:在确定了所述gpu不支持所述图形命令中的第一图形命令时,进一步判定所述第一图形命令是否可以被修改为所述gpu所支持的形式,或者替换为所述gpu所支持的功能等效图形命令。更进一步地,所述图形命令解析器可以被进一步配置为用于:在确定了所述第一图形命令可以被修改为所述gpu所支持的形式时,进一步将所述第一图形命令修改为所述gpu所支持的形式;或者在确定了其他功能等效图形命令存在时,将所述第一图形命令替换为所述gpu所支持的所述其他功能等效图形命令。

在实施例中,所述装置可以进一步包括图形代理库,所述图形代理库用于在所述vm中的至少第一vm中被实例化,其中,所述图形代理库用于维护针对所述第一vm对所述gpu进行抽象的图形应用编程接口(api)的上下文。另外,图形代理库可以被配置为检测所述上下文是否被维护用于对另一装置的另一gpu进行的抽象(两个gpu是功能上不同的gpu)。进一步地,图形代理库可以被配置为在检测到所述上下文被维护用于不同的gpu的抽象时,重新创建用于gpu的图形上下文。

在以下详细描述中,参考形成其一部分并且通过可实践的说明实施例示出的附图,其中,相同的标号指示相同的部件。应当理解,可以在不脱离本公开的范围的情况下利用其他实施例并且可以进行结构或逻辑上的改变。因此,下面的详细说明不应被认为具有限制意义,并且实施例的范围由所附权利要求书及其等效物限定。

在所附的说明中公开了本公开的多个方面。可以在不脱离本公开的精神或范围的情况下设计本公开的替代实施例及其等效物。应注意的是,在附图中由类似的参考数字来表示在下文中公开的类似元素。

可以以对理解要求保护的主题最有帮助的方式将各种操作依次描述为多个分立动作或操作。然而,描述的顺序不应被解释为暗示这些操作一定是顺序相关的。具体地,可以不按所呈现的顺序来执行这些操作。可以按与所描述的实施例不同的顺序来执行所描述的操作。可以执行各种附加的操作和/或可以在附加实施例中省略所描述的操作。

为了本公开的目的,短语“a和/或b”是指(a)、(b)或(a和b)。为了本公开的目的,短语“a、b和/或c”是指(a)、(b)、(c)、(a和b)、(a和c)、(b和c),或(a、b和c)。

本说明可能使用短语“在实施例中(inanembodiment)”或“在实施例中(inembodiments)”,这些短语可以各自是指相同或不同的实施例中的一个或多个。此外,如关于本公开的实施例使用的术语“包括(comprising)”、“包括(including)”、“具有(having)”等是同义的。

本文所使用的术语“模块”可以指的是包括运行一个或多个软件或固件程序的专用集成电路(asic)、电子电路、处理器(共享、专用或编组)和/或存储器(共享、专用或编组)、组合逻辑电路和/或提供所述功能性的其他适当组件或者作为其中,一部分。

现在参考图1,其中,示出了根据各种实施例的与本公开的教导相结合的示例计算安排。如图所示,计算安排100可以包括多个主机计算机102,所述主机计算机通过缆线直接地相互耦合、或通过一个或多个网络162间接地耦合。每个主机计算机102可以配置有硬件112和vmm114,所述vmm用于管理和托管多个vm116。然而,如将在下面更详细地描述的,主机计算机102中的至少一些被配置为支持如前所述的高级图形虚拟化、并且结合本公开的教导以实现所托管虚拟机的实时迁移。

更具体地,在一些实施例中,这些主机计算机102可以结合本公开的教导以使所托管虚拟机能够在源主机计算机与目标主机计算机102之间实时迁移,其中,gpu124具有相同的类型。在其他实施例中,这些主机计算机102可以结合本公开的附加教导以使所托管虚拟机能够在源主机计算机与目标主机计算机102之间实时迁移,其中,gpu124具有不相同但类似的类型。出于此应用的目的,如果一个gpu的多个图形命令可以修改形式或用功能等效图形命令替代,则两个gpu具有不同但相似的类型,使得另一gpu支持所述图形命令。在另外的其他实施例中,这些主机计算机102结合本公开的附加教导以使所托管虚拟机能够在源主机计算机与目标主机计算机102之间实时迁移,其中,gpu124具有不同且不类似的类型。出于此应用的目的,两个gpu如果至少不具有不同但相似的类型则具有不同且不相似的类型。两个gpu如果更接近于不同但相似的类型则是相同的。两个不同但相似的gpu的示例是来自同一供应商的不同代的gpu,其中,一代gpu的图形命令可以被修改为被下一代的gpu所支持。两个不同且不相似的gpu的示例是不同供应商的具有不同指令集架构的gpu。

继续参考图1,每个主机计算机102的硬件112可以包括系统存储器126、用于执行应用144的非图形指令的一个或多个cpu122,并且如前所述,至少一些主机计算机102可以进一步包括用于执行应用144的图形指令的gpu124。系统存储器126可以是宽范围的易失性或非易失性存储。各种主机计算机102的cpu122可以具有相同或不同的类型。同样地,各种主机计算机102的gpu124可以具有相同、相似或显着不同的类型。换句话说,cpu122和gpu124可以是本领域已知的多种cpu和gpu中的任何一种。另外,在cpu122和gpu124之外,硬件112可以包括其他硬件元件(未示出),包括但不限于大容量存储、通信/联网接口、输入输出设备等。

每个主机计算机102的vmm114可以包括存储器管理器132,所述存储器管理器用于管理vm116对主机计算机102的系统存储器的访问(例如,客户机操作系统(os)142和应用144的非图形指令的访问)。在实施例中,系统存储器可以被组织成页面,并且访问的管理可以包括跟踪经修改的存储器页面。另外,对于主机计算机102中的至少一些主机计算机,vmm114可以进一步包括实时迁移功能136和图形命令解析器134,所述实时迁移功能被配置为支持vm116从一个源主机计算机102到目标主机计算机102的实时迁移,所述图形命令解析器被配置为支持如前所述的高级图形虚拟化。而且在这些实施例的一些实施例中,图形命令解析器134可以进一步结合本公开的教导来支持vm从源主机计算机到具有相同或相似类型的gpu的目标主机计算机的实时迁移。更具体地,在实施例中,除了被配置为将图形命令解析和转发到gpu124之外,图形命令解析器134还可以配置有写入存储器跟踪功能156,所述写入存储器跟踪功能用于检测由所述图形命令引起的gpu对系统存储器的写入、以及在检测到时增强存储器管理器132对经修改的存储器页面的跟踪。因此,实时迁移功能136可以基于在如由图形命令解析器134增强的对经修改的存储器页面的跟踪来提供正从/向源主机计算机和目标主机计算机102迁移的vm的当前存储器内容。另外,在实施例中,图形命令解析器134可以进一步配置有命令修正功能158,所述命令修正功能用于修改图形命令的形式、或者用另外的功能等效图形命令来替换图形命令,以使得能够利用图形虚拟化实现从/向具有不同但相似类型的gpu124的源主机计算机和目标主机计算机102的vm的实时迁移。除了本公开的教导,包括存储器管理器132、图形命令解析器134以及实时迁移功能136的vmm114可以是本领域已知的许多这些元件中的任何一者。

如前所述,每个vm116可以包括其自己的客户机os142和应用144。对于具有gpu124的主机计算机102,客户机os142可以包括gpu驱动器154,并且应用144可以包括图形指令以及传统非图形指令。进一步地,在实施例中,客户机os142可以包括结合本公开的教导的图形代理库152,所述图形代理库用于支持vm从源主机计算机到具有不同且不相似类型的gpu的目标主机计算机102的实时迁移。更具体地,图形代理库152可以被配置为用于跟踪图形api的图形上下文、并且通过图形api来重新构建用于gpu的不同抽象的图形上下文,以使得能够利用图形虚拟化实现从/向具有不同且不相似类型的gpu124的源主机计算机和目标主机计算机102的vm116的实时迁移。除了本公开的教导,包括图形代理库152和图形驱动器154以及应用144的os142可以是本领域已知的许多这些元件中的任何一者。

概括地说,计算安排100可以包括多个主机计算机102,其中,的至少两个主机计算机可以结合本公开的教导来支持利用图形虚拟化的虚拟机从源主机计算机102到目标主机计算机102的三个级别的实时迁移中的至少一者。利用图形虚拟化的虚拟机从源主机计算机102到目标主机计算机102的三个级别的实时迁移是:

a)利用相同类型的gpu124的图形虚拟化从源主机计算机102到目标主机计算机102;

b)利用不同但相似类型的gpu124的图形虚拟化从源主机计算机102到目标主机计算机102;

c)a)利用不同且不相似类型的gpu124的图形虚拟化从源主机计算机102到目标主机计算机102;

现在参考图2,其中,示出了根据各种实施例的与本公开的教导相结合的源主机计算机和目标主机计算机的示例对。如图所示和早前描述的,源主机计算机102a可以包括具有多个cpu122a和gpu124a的硬件112a。源主机计算机102a可以进一步包括vmm114a和多个所托管的vm116a。vmm114a可以包括存储器管理器132a、具有存储器写入跟踪功能156a的图形命令解析器134a、以及实时迁移功能136a。vm116a可以包括具有gpu驱动器154a的客户机os142a、以及多个应用144a。实时迁移功能136a可以被配置为利用在如由图形命令解析器134a增强的由存储器管理器132a对经修改的存储器页面的跟踪,利用跨与gpu124a相同类型的gpu124b的vm116b的图形虚拟化将vm116a实时迁移到目标主机计算机102b。对于利用跨与gpu124a相同类型的gpu124b的vm116b的图形虚拟化将vm116a实时迁移到目标主机计算机102b,目标主机计算机102b可以包括硬件112b,所述硬件具有多个cpu122b和相同类型的gpu124b。目标主机计算机102b可以进一步包括vmm114b和多个所托管的vm116b。vmm114b可以包括存储器管理器132b和图形命令解析器134b。对于目标主机计算机102b,图形命令解析器134b是否配置有存储器写入跟踪功能156b、或者vmm114b是否配置有实时迁移功能136a是任选的。vm116b可以包括具有gpu驱动器154b的客户机os142b、以及多个应用144b。如果目标主机计算机102b在不同的时间点作为源主机计算机102a操作,则图形命令解析器134b可以配置有存储器写入跟踪功能156b,并且vmm114b可以配置有实时迁移功能136b。

在其他实施例中,实时迁移功能136a可以被进一步配置为用于利用跨与gpu124a类型不同但相似的gpu124b的vm116b的图形虚拟化将虚拟机vm116a实时迁移到目标主机计算机102b。为了实现利用跨与gpu124a类型不同但相似的gpu124b的vm116b的图形虚拟化将vm116a实时迁移到目标主机计算机102b,图形命令解析器134b可以被进一步配置为例如通过识别gpu124a和124b的图形处理器类型来判定gpu124b是否具有与gpu124a不同但相似的类型。进一步地,图形命令解析器134b可以进一步配置有命令修正功能158a,所述命令修正功能用于在确定gpu124a和124b具有不同但类似的类型时判定是否可以将用于gpu124a的图形命令修改为gpu124b所支持的形式、或者将用于gpu124a的图形命令替换为gpu124b所支持的功能等效图形命令。另外,命令修正功能158a可以被配置为用于在确定所述修改是可能的时将用于gpu124a的图形命令修改为gpu124b所支持的形式、或者在确定所述替换是可能的时将用于gpu124a的图形命令替换为gpu124b所支持的功能等效图形命令。在实施例中,图形命令解析器134b可以配置有映射gpu124a和124b的图形命令的语法和/或语义的表(未示出)。对于源主机计算机102a,图形命令解析器134a是否配置有命令修正功能158a是任选的。如果源主机计算机102a在不同的时间点作为目标主机计算机102b操作、并且支持利用跨与gpu124a类型不同但相似的gpu的vm的图形虚拟化的来自源主机计算机的虚拟机实时迁移,图形命令解析器134a可以配置有命令修正功能158a。

在另外的其他实施例中,实时迁移功能136a可以被配置为用于利用跨与gpu124a类型不同且不相似的gpu124b的vm116b的图形虚拟化将vm116a实时迁移到目标主机计算机102b。为了实现利用跨与gpu124a类型不同且不相似的gpu124b的vm116b的图形虚拟化将vm116a实时迁移到目标主机计算机102b,vm116a的客户机os142a可以进一步配置有图形代理库152a,所述图形代理库用于支持使gpu124a的图形命令抽象的api。除了支持api的实现之外,图形代理库152a还可以被配置为用于维护api的跟踪api所使用的资源的图形上下文,以便在实时迁移此后针对使不同且不相似的gpu124b的图形命令抽象的api构建新的图形上下文。所跟踪的资源可以包括但是不限于来自glcreatecontext()调用的上下文id、来自glcreatetexture()的纹理id、来自glcreateshader()调用的着色器程序id等。在已经将vm116a从源主机计算机102a实时迁移到目标主机计算机102b并变成vm116b此后,图形代理库152a变成图形代理库152b。另外,图形代理库152a/152b可以被配置为用于检测由api抽象的底层gpu的变化,例如,通过检测底层图形资源是不同且不相似的gpu。进一步地,图形代理库152a/152b可以被配置为用于在检测到被api抽象的gpu124b被抽象时在实时迁移此后具有与gpu124a不同且不相似的类型时重新构建用于api的图形上下文。

现在参考图3,其中,示出了根据各种实施例的用于图1和图2的图形命令解析器的示例操作方法。如图所示,在多个实施示例中,用于图形命令解析的方法300可以包括框302-318处的操作。虽然为了便于理解,将按顺序地描述框302-318处的操作,但在替代实施例中,所述操作中的一些操作可以按不同的顺序执行、或者可以是任选的。例如,在实施例中,至少可以任选地执行框304-306处的操作,其中,利用不同但相似的gpu的图形虚拟化跨源主机计算机和目标主机计算机的vm的实时迁移是受支持的。在另外的其他实施例中,可以执行附加操作。

方法300可以在框302处开始,其中,图形命令的捕获例如是从客户机os或所托管的vm的应用发出到gpu。在实施例中,图形命令可以被捕获,例如,通过监视mmio。

接下来,在任选的框304处,可以判定gpu是否支持所述图形命令(在所托管的vm从另一主机计算机实时迁移的情况下)。在实施例中,在确定所述图形命令不受支持时,可以进一步判定所述图形命令是否可以被修改为gpu所支持的形式或替换为gpu所支持的另一功能等效图形命令。

在确定所述图形命令不受支持但可以被修改或替换为受支持时,方法300可以进行到框306。在框306处,所述图形命令可以被修改为gpu所支持的形式或替换为gpu所支持的另一功能等效图形命令。在实施例中,如果所述图形命令不受支持,但是所述图形命令不能被修改或替换为受支持,则方法300可能返回错误(未显示)并结束。

继续参考图3,方法300可以从框302(如果仅支持实时迁移到具有相同类型的gpu的目标主机计算机)、框304(如果图形命令被确定为受支持)、或者从框306(如果图形命令被确定为不受支持,但可被修改或可替换成受支持)进行到框308。在框308处,可以对所述图形命令进行分析和解码。特别地,可以分析所述图形命令以检测是否所述图形命令将导致gpu写入系统存储器。

在确定所述图形命令将导致gpu写入系统存储器时,方法300可以进行到框310。在框310处,可以获得与所述图形命令相关联的客户机图形存储器地址。对于一些图形命令,可以直接从所述图形命令获得存储器地址。对于采用间接寻址的其他图形命令,可以基于所述图形命令和基础图形地址(其可以例如通过捕获设定基础图形地址的mmio操作来获得)的偏移来计算出存储器地址。在获得客户机图形存储器地址时,方法300可以进行到框312。在框312处,可以计算与客户机图形存储器地址相关联的主机图形存储器地址(例如,通过图形页面表)。

在计算出主机图形存储器地址时,方法300可以进行到框314。在框314处,可以例如根据系统存储器映射获得与主机图形存储器地址相关联的系统存储器地址。在获得系统存储器地址时,方法300可以进行到框316。在框316处,可以增强所述存储器管理器对经修改的存储器页面的跟踪,例如通过另外更新存储器页面表,将包括所述系统存储器地址的存储器页面标记为脏。

方法300可以从框308(在确定所述图形命令不导致gpu写入系统存储器时)或从框316(在增强对经修改的存储器页面的跟踪时)进行到框318,在该框中可以执行剩余的操作图形命令解析,例如将解码的图形命令调度到gpu。此后,方法300可以结束。

现在参考图4,其中,示出了根据各种实施例的用于图1和图2的实时迁移功能的示例操作方法。如图所示,在多个实施示例中,用于vm的实时迁移的方法400可以包括框402-408处的操作。虽然为了便于理解,将按顺序地描述框402-408处的操作,但在替代实施例中,所述操作中的一些操作可以按不同的顺序执行、或者可以是任选的。在其他实施例中,可以执行附加操作。

方法400可以在框402处开始,其中,可以开始用于使vm实时迁移的过程。所述实时迁移可以由多个系统事件触发,例如响应于来自管理员的指令、响应于硬件或软件事件、响应于主机计算机的工作负载超过阈值水平等。在实施例中,可以在实时迁移开始之前作出判定以确认目标计算机具有相同的gpu、与适当的图形命令解析器相补充的不同但相似的gpu、或与如早前描述的适当的图形代理库相补充的不同且不相似的gpu。在不同且不相似的gpu情况下,所述判定还可以确认源主机计算机还与被配置为用于维护图形上下文的早前描述的图形代理库相补充。在实施例中,如果没有找到适当的目标主机计算机,“实时迁移”可能会终止。

接下来,在实时迁移开始时,在框404处,可以获得由存储器管理器跟踪并由图形命令解析器增强的经修改的存储器页面。此后,在框406处,可以基于由存储器管理器跟踪并由图形命令解析器增强的经修改的存储器页面将正在迁移的vm的当前存储器内容提供给目标主机计算机。如图所示,在框404和框406处的操作可以重复多次(所需次数),以用于实时迁移正在进行时捕获所有存储器修改。

最终,所有存储器修改被捕获并提供给目标主机计算机。此时,方法400可以进行到框406。在框408处,可以照旧执行其余的实时迁移操作。此后,方法400可以结束。

现在参考图5,其中,示出了根据各种实施例的用于图1和图2的图形代理库的示例操作方法。如前所述,图形代理库可以被配置为用于支持使底层gpu的图形命令抽象的图形api。特别地,图形代理库可以结合本公开的教导来跟踪和重新构建用于api的图形上下文。如图所示,在多个实施示例中,用于图形代理库的方法500可以包括框508-512处的操作。虽然为了便于理解,将按顺序地描述框508-512处的操作,但在替代实施例中,所述操作中的一些操作可以按不同的顺序执行、或者可以是任选的。在其他实施例中,可以执行附加操作。

方法500可以在框502处开始,其中,其中,可以接收对图形api的图形调用(例如,从客户机os或所托管的vm的应用)。在框504处,可以判定图形api是否正在对不同且不相似的gpu进行抽象,以及是否已经积累了图形上下文信息。在确定图形api正在使不同且不相似的gpu抽象并且已经积累了图形上下文信息时,方法500可以进行到框510。

在框510处,可以使用累积的图形上下文信息(用于源主机计算机上的gpu的先前抽象的图形api)来构建用于正被图形api抽象的当前gpu的新的图形上下文。如前所述,所述图形上下文信息可以包括关于正被图形操作使用的所有资源及其当前状态的信息。此后,在框512处,可以破坏旧的图形上下文(用于源主机计算机上的gpu的先前抽象的图形api)。

方法500可以从框504(如果图形api的gpu抽象没有改变)或从框512(在构建新的图形上下文并且破坏旧的图形上下文时)进行到框506。在框506处,所托管的vm内的图形驱动器可以被调用一次或多次以驱动底层gpu来实现图形调用。在框508处,可以监视和跟踪驱动底层gpu以实现图形调用的图形驱动程序的响应,特别地,各种资源的使用率和状态,以维护图形api的图形上下文(在另一实时迁移的情况下)。

此后,方法500可以返回到框502,等待和服务下一个图形调用(如果有的话)。

图6展示了可以适合用作客户端设备或服务器以实践本公开所选择的方面的示例计算机系统。如图所示,计算机600可以包括一个或多个处理器或处理器核602以及系统存储器604。为了本申请(包括权利要求书)的目的,术语“处理器”和“处理器核”可以被认为是同义的,除非上下文另外明确要求。另外,计算机600可以包括大容量存储设备606(诸如磁盘、硬盘驱动器、紧凑盘只读存储器(cd-rom)等)、输入/输出设备608(诸如显示器、键盘、光标控制等)以及通信接口610(诸如网络接口卡、调制解调器等)。所述元件可以经由可以表示一个或多个总线的系统总线612相互耦合。在多个总线的情况下,它们可以通过一个或多个总线桥(未示出)来桥接。

这些元件中的每个元件可以执行其在本领域中已知的常规功能。具体地,系统存储器604和大容量存储设备606可以被用来存储实现与之前描述的包括存储器管理器132和/或图形命令解析器134和/或图形代理库152的vmm114相关联的操作的编程指令的工作副本和永久副本(统称为计算逻辑622)。各个元件可以通过(多个)处理器602所支持的汇编指令或可以编译成这样的指令的高级语言(诸如c语言)来实现。

这些元件610-612的数量、能力和/或容量可以根据计算机600是用作客户端设备还是服务器而变化。当用作客户端设备时,这些元件610-612的能力和/容量可以根据客户端设备是固定设备还是移动设备(如智能电话、计算平板电脑、超级笔记本或膝上笔记本电脑)而变化。否则,元件610-612的构成是已知的,并因此将不进行进一步描述。

如本领域技术人员将认识到的,本公开可以被具体化为方法或计算机程序产品。相应地,除体现在如之前所描述的硬件之外,本公开可以采取完全软件实施方式(包括固件、驻留软件、微代码等)或结合硬件与软件方面的实施方式的形式,所有所述形式在本文中一般都称为“电路”、“模块”或“系统”。此外,本公开可以采取体现在任何有形的或非瞬态表达介质(所述介质具有在介质中具体化的计算机可用程序代码)中的计算机程序产品的形式。

图7展示了示例计算机可读非瞬态存储介质,所述示例计算机可读非瞬态存储介质可以适用于响应于由装置执行的指令而存储使得装置实践本公开的选择的方面的指令。如所示出的,非瞬态计算机可读存储介质702可以包括许多编程指令704。编程指令704可以被配置成用于响应于编程指令的执行而使得设备(例如,计算机600)执行例如与包括存储器管理器132和/或图形命令解析器134和/或图形代理库152的vmm114相关联的各种操作。在替代性实施例中,反而可以将编程指令704布置在多个计算机可读非瞬态存储介质702上。在替代性实施例中,可以将编程指令704布置在计算机可读瞬态存储介质702(例如,信号)上。

可以利用一种或多种计算机可使用或计算机可读介质的任意组合。计算机可用或计算机可读介质可以是例如但不限于电的、磁的、光的、电磁的、红外线的或半导体系统、装置、设备或传播介质。计算机可读介质的更具体的示例(非穷举列表)将包括以下各项:具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦写可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储设备、诸如那些支持互联网或内联网的传输介质或磁存储设备。注意,计算机可使用或者计算机可读介质甚至可以是在其上印刷了程序的纸或另一种适合的介质,因为程序可以经由例如对纸或者其他介质进行光学扫描而被电子地捕捉,然后如果必要的话,被编译、被解释或被以适合的方式进行处理,然后被存储在计算机存储器内。在本文档的上下文中,计算机可使用或者计算机可读介质可以是任何包含、存储、传达、传播或传输由指令执行系统、装置或设备使用或者与其结合使用的程序的介质。计算机可使用介质可以包括在基带中或者作为载波的一部分体现在其中,的计算机可使用程序代码的所传播的数据信号。计算机可使用程序代码可以使用任意适当的介质(包括但不限于无线、电线、光缆、rf等)进行传输。

用于执行本公开的操作的计算机程序代码可以以包括面向对象的编程语言(诸如java、smalltalk,c++等)以及常规的过程式编程语言(诸如“c”编程语言或类似的编程语言)的一种或多种编程语言的任意组合来编写。程序代码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者,可以(例如,使用互联网服务提供商来通过互联网)连接到外部计算机。

参照根据本公开的实施方式的方法、装置(系统)和计算机程序产品的流程图说明和/或框图来描述本公开。应该理解的是,可以由计算机程序指令来实现流程图说明和/或框图的每个方框以及流程图说明和/或框图的各方框的组合。这些计算机程序指令可提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生一种机器,使得经由计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现流程图和/或方框图方框或多个方框中指定的功能/动作的装置。

这些计算机程序指令还可被存储在计算机可读介质内,所述计算机可读介质可以指挥计算机或其他可编程的数据处理装置,以便以特定方式发挥作用,使得存储在计算机可读介质内的指令产生包括实现流程图和/或方框图方框或多个方框中指定的功能/动作的指令装置的制造品。

计算机程序指令也可加载到计算机或其他可编程数据处理设备上,以促使一系列操作步骤在所述计算机或其他可编程设备上执行,从而产生计算机实现的过程,使得在所述计算机或其他可编程设备上执行的所述指令能够提供用于实现流程图和/或方框图方框或多个方框中指定的功能/动作的过程。

附图中的流程图和框图展示了根据本公开的各实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个方框都可以表示模块、片段或代码的一部分,其包含用于实现特定逻辑功能的一条或多条可执行指令。还应指出的是,在一些替代实施方式中,在框中标注的功能可以不按照附图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框事实上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将指出的是,可以通过执行特定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现框图和/或流程图的每一方框及框图和/或流程图中方框的组合。

在此所使用的术语只是为了描述特定实施例的目的,而不是要对本公开做出限制。如在此使用的,单数形式的“一个(a)”、“一个(an)”和“所述(the)”也旨在包括多数形式,除非上下文另有清楚的规定。将进一步理解的是,当在本说明书中使用术语“包括(comprises)”和/或“包括(comprising)”时,其指定陈述的特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、部件和/或它们的组的存在或添加。

实施例可被实现为计算机进程、计算系统、或者诸如计算机程序产品或计算机可读介质之类的制品。计算机程序产品可以是可由计算机系统读取并编码了用于执行计算机进程的计算机程序指令的计算机存储介质。

权利要求中的所有部件或步骤加功能元件的相应的结构、材料、操作和等价物旨在包括用于结合在权利要求中特意声明的其他元件而执行功能的任何结构、材料或操作。已经出于示例的目的而呈现本公开内容的描述,但是该描述并不旨在穷举公开或者使公开内容限于所公开的形式。对于本技术领域的普通技术人员来说,在不偏离本公开的范围和精神的情况下,许多修改和变更都是显而易见的。实施例的选择和描述是为了最佳地解释本公开的原理和实际应用,并且当适合于所构想的特定使用时,使得所属技术领域的其他普通技术人员能够理解本公开的具有各种经修改各种实施例。

返回参照图6,对于一个实施例,处理器602中的至少一个可以与具有计算逻辑622的存储器一起封装(代替存储在存储器604和存储设备606上)。对于一个实施例,处理器602中的至少一个可以与具有计算逻辑622的存储器一起封装以形成系统级封装(sip)。对于一个实施例,处理器602中的至少一个可以与具有计算逻辑622的存储器集成在同一裸片上。对于一个实施例,处理器602中的至少一个可以与具有计算逻辑622的存储器一起封装以形成片上系统(soc)。对于至少一个实施例,soc可以用于(例如但不限于)智能电话或计算平板电脑中。

从而,已描述的本公开的各示例实施例包括但不限于:

示例1可以是一种用于计算的装置。所述装置可以包括一个或多个通用处理器;图形处理单元;系统存储器,所述系统存储器与所述一个或多个通用处理器和所述图形处理单元耦合;以及虚拟机监视器,所述虚拟机监视器用于管理由所述一个或多个通用处理器托管的多个虚拟机。所述虚拟机监视器可以包括:存储器管理器和图形命令解析器。所述存储器管理器可以被配置为用于管理由所述虚拟机的有待由所述一个或多个通用处理器执行的应用的指令进行的对所述系统存储器的访问。对访问的管理可以包括跟踪所述系统存储器的经修改的存储器页面。所述图形命令解析器可以被配置为用于:分析由所述应用向所述图形处理单元发布的图形命令以检测由所述图形命令引起的对所述系统存储器的写入;以及增强由所述存储器管理器对经修改的存储器页面的所述跟踪。

示例2可以是示例1,其中,所述虚拟机监视器进一步包括用于选择性地将所述虚拟机中的一者或多者实时迁移到另一用于计算的装置的实时迁移功能,所述实时迁移功能包括:利用如由所述图形命令解析器增强的由所述存储器管理器跟踪的经修改的存储器页面将正被实时迁移的虚拟机的当前存储器内容提供到所述另一装置。

示例3可以是示例1或示例2,其中,所述图形命令解析器可以在检测到对系统存储器的写入时获得所述对系统存储器的写入的客户机图形存储器地址。

示例4可以是示例3,其中,所述图形命令解析器可以至少部分地基于针对所述对系统存储器的写入而获得的所述客户机图形存储器地址来进一步计算所述对系统存储器的写入的主机图形存储器地址。

示例5可以是示例4,其中,所述图形命令解析器可以至少部分地基于针对所述对系统存储器的写入而计算出的所述主机图形存储器地址来进一步获得所述对系统存储器的写入的系统存储器地址。

示例6可以是示例5,其中,所述图形命令解析器可以将所述存储器页面中包含所述系统存储器地址的一个存储器页面标记为脏。

示例7可以是示例1-6中的任一者,其中,所述图形命令解析器可以进一步识别所述图形处理单元所支持的图形命令。

示例8可以是示例7,其中,所述图形命令解析器可以识别所述图形处理单元的图形处理器类型。

示例9可以是示例1-6中的任一者,其中,所述图形命令解析器可以进一步分析所述图形命令以判定所述图形处理单元是否支持所述图形命令。

示例10可以是示例9,其中,所述图形命令解析器可以在确定了所述图形处理单元不支持所述图形命令中的第一图形命令时,进一步判定所述第一图形命令是否可以被修改为所述图形处理单元所支持的形式,或者替换为所述图形处理单元所支持的功能等效图形命令。

示例11可以是示例10,其中,所述图形命令解析器可以进一步:在确定了所述第一图形命令可以被修改为所述图形处理单元所支持的形式时,将所述第一图形命令修改为所述图形处理单元所支持的形式;或者在确定了其他功能等效图形命令存在时,将所述第一图形命令替换为所述图形处理单元所支持的所述其他功能等效图形命令。

示例12可以是示例1-6中的任一者,进一步包括图形代理库,所述图形代理库用于在所述虚拟机中的至少第一虚拟机中被实例化。所述图形代理库可以维护针对所述第一虚拟机对所述图形处理单元进行抽象的图形应用编程接口的上下文。

示例13可以是示例12,其中,所述图形代理库可以进一步检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元。

示例14可以是示例13,其中,所述图形代理库可以:在检测到所述图形应用编程接口的所述维护的上下文用于由所述图形应用编程接口抽象的不同图形处理单元时,使用在所述第一虚拟机已从所述另一用于计算的装置被实时迁移之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的所述上下文。

示例15可以是一种用于计算的装置,所述装置包括:一个或多个通用处理器;图形处理单元;系统存储器,所述系统存储器与所述一个或多个通用处理器和所述图形处理单元耦合;以及虚拟机监视器,所述虚拟机监视器用于管理由所述一个或多个通用处理器托管的多个虚拟机。所述虚拟机监视器可以包括:存储器管理器和图形命令解析器。所述存储器管理器可以被配置为用于管理通过由所述虚拟机的由所述一个或多个通用处理器执行的应用的指令进行的对所述系统存储器的访问。所述图形命令解析器可以被配置为用于分析由所述应用向所述图形处理单元发布的图形命令以判定所述图形处理单元是否支持所述图形命令。

示例16可以是示例15,其中,所述图形命令解析器可以在确定了所述图形处理单元不支持所述图形命令中的第一图形命令时,进一步判定所述第一图形命令是否可以被修改为所述图形处理单元所支持的形式,或者替换为所述图形处理单元所支持的功能等效图形命令。

示例17可以是示例16,其中,所述图形命令解析器可以进一步:在确定了所述第一图形命令可以被修改为所述图形处理单元所支持的形式时,将所述第一图形命令修改为所述图形处理单元所支持的形式;或者在确定了其他功能等效图形命令存在时,将所述第一图形命令替换为所述图形处理单元所支持的所述其他功能等效图形命令。

示例18可以是示例15-17中的任一者,进一步包括图形代理库,所述图形代理库用于在所述虚拟机中的至少第一虚拟机中被实例化,其中,所述图形代理库可以维护针对所述第一虚拟机对所述图形处理单元进行抽象的图形应用编程接口的上下文。

示例19可以是示例18,其中,所述图形代理库可以进一步检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元,其中,这两个图形处理单元是不同的图形处理单元。

示例20可以是示例19,其中,所述图形代理库可以:在检测到所述上下文被维护用于由所述图形应用编程接口抽象的不同图形处理单元时,使用在所述第一虚拟机已从所述另一用于计算的装置被实时迁移之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的所述上下文。

示例21可以是一种用于计算的装置,所述装置包括一个或多个通用处理器;图形处理单元;系统存储器,所述系统存储器与所述一个或多个通用处理器和所述图形处理单元耦合;虚拟机监视器,所述虚拟机监视器用于管理由所述一个或多个通用处理器托管的多个虚拟机;以及图形代理库,所述图形代理库用于在所述虚拟机中的至少第一虚拟机中被实例化。所述图形代理库可以被配置为用于维护针对所述第一虚拟机对所述图形处理单元进行抽象的图形应用编程接口的上下文。

示例22可以是示例21,其中,所述图形代理库可以进一步检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元。

示例23可以是示例22,其中,所述图形代理库可以:在检测到所述上下文被维护用于正由所述图形应用编程接口抽象的不同图形处理单元时,使用在所述第一虚拟机已从所述另一用于计算的装置被实时迁移之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的所述上下文。

示例24可以是一种用于计算的方法,所述方法包括:由计算系统的图形命令解析器来分析由所述计算系统的虚拟机的应用向所述计算系统的图形处理单元发布的图形命令;由所述图形命令解析器检测由所述图形命令引起的对所述计算系统的系统存储器的写入;以及在检测到对系统存储器的写入时,由所述图形命令解析器增强由所述计算系统的虚拟机监视器的存储器管理器进行的对经修改的存储器页面的跟踪。

示例25可以是示例24,进一步包括:将所述虚拟机中的一者或多者实时迁移到另一计算系统,所述实时迁移包括:利用如由所述图形命令解析器增强的由所述存储器管理器跟踪的经修改的存储器页面,将正被实时迁移的虚拟机的当前存储器内容提供到所述另一计算系统。

示例26可以是示例24或示例25,进一步包括:在检测到对系统存储器的写入时由所述图形命令解析器获得所述对系统存储器的写入的客户机图形存储器地址。

示例27可以是示例26,进一步包括:至少部分地基于针对所述对系统存储器的写入而获得的所述客户机图形存储器地址来由所述图形命令解析器计算所述对系统存储器的写入的主机图形存储器地址。

示例28可以是示例27,进一步包括:至少部分地基于针对所述对系统存储器的写入而计算出的所述主机图形存储器地址来由所述图形命令解析器获得所述对系统存储器的写入的系统存储器地址。

示例29可以是示例28,其中,增强可以包括由所述图形命令解析器将所述存储器页面中包含所述系统存储器地址的一个存储器页面标记为脏。

示例30可以是示例24-29中的任一者,进一步包括:由所述图形命令解析器识别所述图形处理单元所支持的图形命令。

示例31可以是示例30,进一步包括:由所述图形命令解析器识别所述图形处理单元的图形处理器类型。

示例32可以是示例24-30中的任一者,进一步包括:由所述图形命令解析器分析所述图形命令以判定所述图形处理单元是否支持所述图形命令。

示例33可以是示例32,进一步包括:在确定了所述图形处理单元不支持所述图形命令中的第一图形命令时,由所述图形命令解析器判定所述第一图形命令是否可以被修改为所述图形处理单元所支持的形式,或者替换为所述图形处理单元所支持的功能等效图形命令。

示例34可以是示例33,进一步包括:在确定了所述第一图形命令可以被修改为所述图形处理单元所支持的形式时,由所述图形命令解析器将所述第一图形命令修改为所述图形处理单元所支持的形式;或者在确定了其他功能等效图形命令存在时,将所述第一图形命令替换为所述图形处理单元所支持的所述其他功能等效图形命令。

示例35可以是示例24-30中的任一者,进一步包括:由所述虚拟机中的第一虚拟机中的图形代理库维护针对所述第一虚拟机对所述图形处理单元进行抽象的图形应用编程接口的上下文。

示例36可以是示例35,进一步包括:由所述图形代理库检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元。

示例37可以是示例36,进一步包括:在检测到所述图形应用编程接口的所维护的上下文用于由所述图形应用编程接口抽象的不同图形处理单元时,由所述图形代理库、使用在所述第一虚拟机已被实时迁移到所述计算系统之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的所述上下文。

示例38可以是一种用于计算的方法,所述方法包括:由计算系统的图形命令解析器来分析由所述计算系统的虚拟机的应用向所述计算系统的图形处理单元发布的图形命令以判定所述图形处理单元是否支持所述图形命令;以及在确定了所述图形处理单元不支持所述图形命令中的第一图形命令时,由所述图形命令解析器判定所述第一图形命令是否可以被修改为所述图形处理单元所支持的形式,或者替换为所述图形处理单元所支持的功能等效图形命令。

示例39可以是示例38,进一步包括:在确定了所述第一图形命令可以被修改为所述图形处理单元所支持的形式时,由所述图形命令解析器将所述第一图形命令修改为所述图形处理单元所支持的形式,或者在确定了其他功能等效图形命令存在时,由所述图形命令解析器将所述第一图形命令替换为所述图形处理单元所支持的所述其他功能等效图形命令。

示例40可以是示例38-39中的任一者,进一步包括:由所述虚拟机中的第一虚拟机的图形代理库维护针对所述第一虚拟机对所述图形处理单元进行抽象的图形应用编程接口的上下文。

示例41可以是示例40,进一步包括:由所述图形代理库检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元,其中,这两个图形处理单元是不同的图形处理单元。

示例42可以是示例41,进一步包括:在检测到所述图形应用编程接口的所述维护的上下文用于正由所述图形应用编程接口抽象的不同图形处理单元时,由所述图形代理库、在所述第一虚拟机已被实时迁移到所述计算系统之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的所述上下文。

示例43可以是一种用于计算的方法,所述方法包括:由计算系统的多个虚拟机中的第一虚拟机的图形代理库维护用于所述第一虚拟机的图形应用编程接口的上下文,所述上下文对所述计算系统的图形处理单元抽象;以及由所述图形代理库检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元。

示例44可以是示例43,进一步包括:在检测到所述上下文被维护用于正由所述图形应用编程接口抽象的不同图形处理单元时,使用在所述第一虚拟机已被实时迁移到所述计算系统之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的上下文。

示例45可以是至少一种计算机可读介质,具有存储在其中的指令,所述指令用于响应于计算系统的处理器的执行而使所述计算系统实现图形命令解析器,所述图形命令解析器用于:分析由所述计算系统的虚拟机的应用向所述计算系统的图形处理单元发布的图形命令;检测由所述图形命令引起的对所述计算系统的系统存储器的写入;以及在检测到对系统存储器的写入时,增强由所述计算系统的虚拟机监视器的存储器管理器进行的对经修改的存储器页面的跟踪。

示例46可以是示例45,其中,可以进一步使所述计算机系统实现包括所述存储器管理器和实时迁移功能的虚拟机监视器,所述实时迁移功能用于选择性地将所述虚拟机中的一者或多者实时迁移到另一计算系统,所述实时迁移功能包括:利用如由所述图形命令解析器增强的由所述存储器管理器跟踪的经修改的存储器页面将正被实时迁移的虚拟机的当前存储器内容提供到所述另一计算系统。

示例47可以是示例45或示例46,其中,所述图形命令解析器可以进一步在检测到对系统存储器的写入时获得所述对系统存储器的写入的客户机图形存储器地址。

示例48可以是示例47,其中,所述图形命令解析器可以至少部分地基于针对所述对系统存储器的写入而获得的所述客户机图形存储器地址来进一步计算所述对系统存储器的写入的主机图形存储器地址。

示例49可以是示例48,其中,所述图形命令解析器可以至少部分地基于针对所述对系统存储器的写入而计算出的所述主机图形存储器地址来进一步获得所述对系统存储器的写入的系统存储器地址。

示例50可以是示例49,其中,所述图形命令解析器可以将所述存储器页面中包含所述系统存储器地址的一个存储器页面标记为脏。

示例51可以是示例45-50中的任一者,其中,所述图形命令解析器可以进一步识别所述图形处理单元所支持的图形命令。

示例52可以是示例51,其中,所述图形命令解析器可以识别所述图形处理单元的图形处理器类型。

示例53可以是示例45-50中的任一者,其中,所述图形命令解析器可以进一步分析所述图形命令以判定所述图形处理单元是否支持所述图形命令。

示例54可以是示例53,其中,所述图形命令解析器可以在确定了所述图形处理单元不支持所述图形命令中的第一图形命令时,进一步判定所述第一图形命令是否可以被修改为所述图形处理单元所支持的形式,或者替换为所述图形处理单元所支持的功能等效图形命令。

示例55可以是示例54,其中,所述图形命令解析器可以进一步:在确定了所述第一图形命令可以被修改为所述图形处理单元所支持的形式时,将所述第一图形命令修改为所述图形处理单元所支持的形式;或者在确定了其他功能等效图形命令存在时,将所述第一图形命令替换为所述图形处理单元所支持的所述其他功能等效图形命令。

示例56可以是示例45-50中的任一者,其中,可以使所述计算机系统进一步实现用于在所述虚拟机中的至少第一虚拟机中被实例化的图形代理库,其中,所述图形代理库用于维护针对所述第一虚拟机对所述图形处理单元进行抽象的图形应用编程接口的上下文。

示例57可以是示例56,其中,所述图形代理库可以进一步检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元。

示例58可以是示例57,其中,所述图形代理库可以:在检测到所述图形应用编程接口的所述维护的上下文用于由所述图形应用编程接口抽象的不同图形处理单元时,使用在所述第一虚拟机已从所述另一用于计算的装置被实时迁移之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的所述上下文。

示例59可以是至少一种计算机可读介质,具有存储在其中的指令,所述指令用于响应于计算系统的处理器的执行而使所述计算系统实现图形命令解析器,所述图形命令解析器用于:分析由所述计算系统的虚拟机的应用向所述计算系统的图形处理单元发布的图形命令以判定所述图形处理单元是否支持所述图形命令;以及在确定了所述图形处理单元不支持所述图形命令中的第一图形命令时,判定所述第一图形命令是否可以被修改为所述图形处理单元所支持的形式,或者替换为所述图形处理单元所支持的功能等效图形命令。

示例60可以是示例59,其中,所述图形命令解析器可以在确定了所述图形处理单元不支持所述图形命令中的第一图形命令时,进一步判定所述第一图形命令是否可以被修改为所述图形处理单元所支持的形式,或者替换为所述图形处理单元所支持的功能等效图形命令。

示例61可以是示例60,其中,所述图形命令解析器可以进一步:在确定了所述第一图形命令可以被修改为所述图形处理单元所支持的形式时,将所述第一图形命令修改为所述图形处理单元所支持的形式;或者在确定了其他功能等效图形命令存在时,将所述第一图形命令替换为所述图形处理单元所支持的所述其他功能等效图形命令。

示例62可以是示例59-61中的任一者,其中,可以使所述计算机系统进一步实现有待至少在所述虚拟机中的第一虚拟机中实例化的图形代理库,其中,所述图形代理库用于维护针对所述第一虚拟机对所述图形处理单元进行抽象的图形应用编程接口的上下文。

示例63可以是示例62,其中,所述图形代理库可以进一步检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元,其中,这两个图形处理单元是不同的图形处理单元。

示例64可以是示例63,其中,所述图形代理库可以:在检测到所述上下文被维护用于由所述图形应用编程接口抽象的不同图形处理单元时,使用在所述第一虚拟机已从所述另一用于计算的装置被实时迁移之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的所述上下文。

示例65可以是至少一种计算机可读介质,具有存储在其中的指令,所述指令用于响应于计算系统的处理器的执行而使所述计算系统实现图形代理库,所述图形代理库用于:由计算系统的多个虚拟机中的第一虚拟机的图形代理库维护图形应用编程接口的上下文,所述上下文使所述计算系统的图形处理单元抽象;以及检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元。

示例66可以是示例65,其中,所述图形代理库可以:在检测到所述上下文被维护用于正由所述图形应用编程接口抽象的不同图形处理单元时,使用在所述第一虚拟机已从所述另一用于计算的装置被实时迁移之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的所述上下文。

示例67可以是一种用于计算的装置,所述装置包括一个或多个通用处理器;图形处理单元;系统存储器,所述系统存储器与所述一个或多个通用处理器和所述图形处理单元耦合;以及虚拟机监视器装置,所述虚拟机监视器装置用于管理由所述一个或多个通用处理器托管的多个虚拟机。所述虚拟机监视器装置可以包括:存储器管理装置,所述存储器管理装置用于管理由所述虚拟机的有待由所述一个或多个通用处理器执行的应用的指令进行的对所述系统存储器的访问。对访问的管理可以包括跟踪所述系统存储器的经修改的存储器页面。所述虚拟机监视器装置可以进一步包括:图形命令解析装置,所述图形命令解析装置用于:分析由所述应用向所述图形处理单元发布的图形命令以检测由所述图形命令引起的对所述系统存储器的写入;以及增强由所述存储器管理器对经修改的存储器页面的所述跟踪。

示例68可以是示例67,其中,所述虚拟机监视器装置可以包括用于选择性地将所述虚拟机中的一者或多者实时迁移到另一用于计算的装置的实时迁移装置,所述实时迁移功能包括:利用如由所述图形命令解析器增强的由所述存储器管理器跟踪的经修改的存储器页面将正被实时迁移的虚拟机的当前存储器内容提供到所述另一装置。

示例69可以是示例67或示例68,其中,所述图形命令解析装置可以包括用于在检测到对系统存储器的写入时获得所述对系统存储器的写入的客户机图形存储器地址的装置。

示例70可以是示例69,其中,所述图形命令解析装置可以包括用于至少部分地基于针对所述对系统存储器的写入而获得的所述客户机图形存储器地址来进一步计算所述对系统存储器的写入的主机图形存储器地址的装置。

示例71可以是示例70,其中,所述图形命令解析装置可以包括用于至少部分地基于针对所述对系统存储器的写入而计算出的所述主机图形存储器地址来进一步获得所述对系统存储器的写入的系统存储器地址的装置。

示例72可以是示例71,其中,所述图形命令解析装置可以包括用于将所述存储器页面中包含所述系统存储器地址的一个存储器页面标记为脏的装置。

示例73可以是示例67-72中的任一者,其中,所述图形命令解析装置可以包括用于识别所述图形处理单元所支持的图形命令的装置。

示例74可以是示例73,其中,所述图形命令解析装置可以包括用于识别所述图形处理单元的图形处理器类型的装置。

示例75可以是示例67-72中的任一者,其中,所述图形命令解析装置可以包括用于分析所述图形命令以判定所述图形处理单元是否支持所述图形命令的装置。

示例70可以是示例75,其中,所述图形命令解析装置可以包括:用于在确定了所述图形处理单元不支持所述图形命令中的第一图形命令时判定所述第一图形命令是否可以被修改为所述图形处理单元所支持的形式、或者替换为所述图形处理单元所支持的功能等效图形命令的装置。

示例77可以是示例76,其中,所述图形命令解析装置可以包括:用于在确定了所述第一图形命令可以被修改为所述图形处理单元所支持的形式时进一步将所述第一图形命令修改为所述图形处理单元所支持的形式、或者在确定了其他功能等效图形命令存在时将所述第一图形命令替换为所述图形处理单元所支持的所述其他功能等效图形命令的装置。

示例78可以是示例67-72中的任一者,进一步包括:图形代理库装置,所述图形代理库装置用于在所述虚拟机中的至少第一虚拟机中被实例化,用于维护针对所述第一虚拟机对所述图形处理单元进行抽象的图形应用编程接口的上下文。

示例79可以是示例78,其中,所述图形代理库装置可以包括用于检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元的装置。

示例80可以是示例79,其中,所述图形代理库装置可以包括:用于在检测到所述图形应用编程接口的所述维护的上下文用于由所述图形应用编程接口抽象的不同图形处理单元时使用在所述第一虚拟机已从所述另一用于计算的装置被实时迁移之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的所述上下文的装置。

示例81可以是一种用于计算的装置,所述装置包括一个或多个通用处理器;图形处理单元;系统存储器,所述系统存储器与所述一个或多个通用处理器和所述图形处理单元耦合;以及虚拟机监视器装置,所述虚拟机监视器装置用于管理由所述一个或多个通用处理器托管的多个虚拟机。所述虚拟机监视器可以包括:存储器管理装置,所述存储器管理装置用于管理由所述虚拟机的由所述一个或多个通用处理器执行的应用的指令进行的对所述系统存储器的访问;以及图形命令解析装置,所述图形命令解析装置用于分析由所述应用向所述图形处理单元发布的图形命令以判定所述图形处理单元是否支持所述图形命令。

示例82可以是示例81,其中,所述图形命令解析装置可以包括:用于在确定了所述图形处理单元不支持所述图形命令中的第一图形命令时判定所述第一图形命令是否可以被修改为所述图形处理单元所支持的形式、或者替换为所述图形处理单元所支持的功能等效图形命令的装置。

示例83可以是示例82,其中,所述图形命令解析装置可以包括:用于在确定了所述第一图形命令可以被修改为所述图形处理单元所支持的形式时进一步将所述第一图形命令修改为所述图形处理单元所支持的形式、或者在确定了其他功能等效图形命令存在时将所述第一图形命令替换为所述图形处理单元所支持的所述其他功能等效图形命令的装置。

示例84可以是示例81-83中的任一者,进一步包括:图形代理库装置,所述图形代理库装置用于在所述虚拟机中的至少第一虚拟机中被实例化,用于维护针对所述第一虚拟机对所述图形处理单元进行抽象的图形应用编程接口的上下文。

示例85可以是示例84,其中,所述图形代理库装置可以包括:用于检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元的装置,其中,这两个图形处理单元是不同的图形处理单元。

示例86可以是示例85,其中,所述图形代理库装置可以包括:用于在检测到所述图形应用编程接口的所述上下文被维护用于由所述图形应用编程接口抽象的不同图形处理单元时使用在所述第一虚拟机已从所述另一用于计算的装置被实时迁移之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的所述上下文的装置。

示例87可以是一种用于计算的装置,所述装置包括一个或多个通用处理器;图形处理单元;系统存储器,所述系统存储器与所述一个或多个通用处理器和所述图形处理单元耦合;虚拟机监视器装置,所述虚拟机监视器装置用于管理由所述一个或多个通用处理器托管的多个虚拟机;以及图形代理库装置,所述图形代理库装置用于在所述虚拟机中的至少第一虚拟机中被实例化,用于维护针对所述第一虚拟机对所述图形处理单元进行抽象的图形应用编程接口的上下文。

示例88可以是示例87,其中,所述图形代理库装置可以包括用于检测所述维护的上下文是否用于由所述图形应用编程接口抽象的不同图形处理单元的装置。

示例89可以是示例88,其中,所述图形代理库装置可以包括:用于在检测到所述图形应用编程接口的所述上下文被维护用于正由所述图形应用编程接口抽象的不同图形处理单元时使用在所述第一虚拟机已从所述另一用于计算的装置被实时迁移之前由所述图形代理库维护用于由所述图形应用编程接口抽象的所述不同图形处理单元的上下文来构建所述图形应用编程接口的所述上下文的装置。

对于本领域技术人员明显的是,可在所述公开的设备和相关联的方法的所述公开的实施例中作出各种修改和变更而不背离本公开的精神或范围。因此,本公开旨在涵盖以上所公开的实施例的这些修改和变更,只要这些修改和变更落在任意权利要求和其等效方案的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1