启用配置有图形处理器的服务器的远程管理的技术的制作方法

文档序号:6442123阅读:152来源:国知局
专利名称:启用配置有图形处理器的服务器的远程管理的技术的制作方法
技术领域
本发明涉及启用服务器的远程管理的技术,尤其是启用配置有图形处理器的服务器的远程管理的技术。
背景技术
处理三维图像工作负载的服务器越来越成为紧俏商品。例如,主存远程桌面会话和/或虚拟桌面会话(即,个人计算机环境在虚拟机内运行并且将用户界面发送到远程计算机的会话)的服务器可包括在3D图形处理单元(GPU)上生成计算密集的三维(3D)图形用户界面的应用。由3D GPU生成的所得图形可随后通过诸如因特网的网络被流传输到客户机。这些服务器通常被容纳在数据中心中,并且很少在部署之后进行物理地交互。相反,每个服务器可以具有已安装的基板管理控制器(BMC),该基板管理控制器可被耦合到网络适配器并包括或具有对低端图形处理单元的访问。管理员可以使用键盘、视频和鼠标 (KVM)开关来连接到BMC,并远程地查看服务器的视频输出。虽然其他远程技术在服务器的运行时操作期间可用,但通常在操作系统运行之前的时间段期间使用BMC,并且即使操作系统已经崩溃BMC仍能工作。例如,管理员可以使用BMC来远程地查看基本输入/输出系统 (BIOS)的用户界面以配置服务器的BIOS和固件。问题在于BMC所使用的这些低端图形处理单元的显示驱动程序是根据传统显示驱动程序模型来编写的,传统显示驱动程序模型与服务器用来呈现3D图形用户界面的显示驱动程序模型不兼容。或者换言之,操作系统无法同时运行符合传统驱动程序模型(例如,Windows XP 驱动程序模型(XPDM))以及由服务器用来呈现3D图形用户界面的驱动程序模型(例如,Windows显示驱动程序模型(WDDM))的驱动程序。这种冲突导致操作系统加载根据传统驱动程序模型编写的驱动程序以便为BMC和3D图形处理单元二者使用的图形处理单元加载。这进而导致3D图形处理单元以降低的性能级别操作,例如没有高级3D 图形处理能力。这个问题使管理员处于不合乎需要的情形。为解决这个问题,管理员可以禁用BIOS内的BMC/传统GPU,使得主机3D工作负载能够工作。因此,需要克服这个问题的技术。

发明内容
示例性实施例包括一种系统。在该示例中,系统包括但不限于处理器、图形处理单元、3D图形处理单元、基板管理控制器、以及在计算机系统可操作时与该处理器通信的存储器。在该示例中,存储器可包括但不限于在执行时使计算机系统执行以下操作的指令在引导操作系统之前加载被配置为控制图形处理单元的第一驱动程序,其中第一驱动程序顺应第一图形驱动程序模型;在操作系统的引导序列期间加载第二驱动程序到操作系统中,其中第二驱动程序被配置为模拟对图形处理单元的控制,其中第二驱动程序顺应第二图形驱动程序模型,其中操作系统无法同时运行符合第一图形驱动程序模型和第二图形驱动程序模型的图形驱动程序;在操作系统的引导序列期间将被配置为向3D图形处理单元发出三维图形命令的第三驱动程序加载到操作系统中,其中第三驱动程序顺应第二图形驱动程序模型;以及将3D图形处理单元生成的3D图像发送到客户机。除上述之外,权利要求书、具体实施例和附图中描述了其他技术。另一示例性实施例包括计算机可读存储介质。在该示例中,计算机可读存储介质包括在执行时使处理器执行以下操作的计算机可读指令在操作系统的引导序列期间加载被配置为模拟对第一图形处理单元的控制的帽驱动程序,该第一图形处理单元耦合到被配置为将第一图形处理单元生成的图形发送到管理计算机的基板管理控制器,其中第一驱动程序顺应窗口显示驱动程序模型;在操作系统的引导序列期间加载被配置为向第二图形处理单元发出三维图形命令的3D显示驱动程序,其中3D窗口显示驱动程序模型驱动程序顺应窗口显示驱动程序模型;以及响应于确定操作系统崩溃而运行崩溃驱动程序,视频图形阵列驱动程序被配置为引导第一图形处理单元生成计算机系统的图形用户界面,其中视频图形阵列驱动程序顺应XP驱动程序模型。除上述之外,权利要求书、具体实施例和附图中描述了其他技术。另一示例性实施例包括一种方法。在该示例中,方法包括但不局限于由引导加载器加载被配置为引导图形处理单元为基本输入/输出系统生成图形用户界面的引导驱动程序,其中该引导驱动程序符合XP驱动程序模型;基板管理控制器将图形处理单元生成的图形用户界面发送到管理计算机系统;操作系统加载帽驱动程序,其中帽驱动程序被配置为将指示帽驱动程序能够控制图形处理单元的信息发送到图形应用程序接口,其中帽驱动程序符合窗口显示驱动程序模型,其中图形应用程序接口无法同时与符合窗口显示驱动程序模型和XP驱动程序模型的驱动程序接口 ;操作系统加载被配置为从图形应用程序接口接收三维图形信息并向3D图形处理单元发出三维图形命令的3D图形驱动程序,其中3D驱动程序符合窗口显示驱动程序模型;以及将指示3D图形处理单元所创建的3D图像的位图发送到客户计算机系统。除上述之外,权利要求书、具体实施例和附图中描述了其他技术。本领域技术人员将理解,本公开的一个或多个各种方面可包括但不限于用于实现此处所引用的方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所引用的方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明白,本发明内容只是说明性的并且决不旨在是限制性的。


图1描绘了计算机系统的高级框图。图2描绘了虚拟机服务器的高级框图。图3描绘了虚拟机服务器的高级框图。图4描绘了数据中心的高级框图。图5描绘了在引导序列的第一阶段期间的计算机系统的高级框图。图6描绘了在引导序列的第二阶段期间的计算机系统的高级框图。图7示出被配置为将3D图形用户界面流传输给客户机的计算机系统的高级框图。图8示出被配置为主存启用3D的虚拟桌面会话的计算机系统的高级框图。
图9示出存储器中具有已崩溃的操作系统的计算机系统的高级框图。图10描绘了操作过程。图11示出了包括附加操作的图10的操作过程。图12描绘了操作过程。图13示出了包括附加操作的图12的操作过程。图14描绘了操作过程。图15示出了包括附加操作的图14的操作过程。
具体实施例方式在此公开的主题可以使用一个或多个计算机系统。图1和以下讨论旨在提供其中可以实现所公开的主题的适当计算环境的简要描述。贯穿本说明书使用的术语电路可包括诸如硬件中断控制器、硬盘驱动程序、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件。术语“电路”还可以包括由固件和/或软件来配置的进行指令读取和执行的微处理器、专用集成电路、以及处理器,例如多核通用处理单元的核。处理器可由从例如RAM、R0M、 固件和/或大容量存储等存储器加载的指令来配置,从而具体化可用于配置处理器来执行功能的逻辑。在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由硬件执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件实现的功能或软件实现的功能之间几乎没有差别的地步,因而选择硬件还是软件来实现此处描述的功能只是一个设计选择。换言之,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现留给了实现者。现在参考图1,描绘了示例性计算系统100。计算机系统100可包括处理器102,例如,执行核。尽管示出了一个处理器102,但在其他实施例中,计算机系统100可具有多个处理器,例如每一处理器衬底有多个执行核,和/或各自可具有多个执行核的多个处理器衬底。如图所示,各种计算机可读存储介质110可由一个或多个系统总线互连,所述系统总线将各种系统组件耦合到处理器102。系统总线可以是几种类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线模型中的任一种的本地总线。 在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器(RAM) 104、存储设备106(例如电机硬盘驱动器、固态硬盘驱动器等)、引导ROM 108、以及可移动存储设备 118(例如⑶-ROM、软盘、DVD、闪速驱动器、外部存储设备等)。本领域的技术人员应当理解, 可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、和/或数字视频盘。计算机可读存储介质110可以提供对处理器可执行指令、数据结构、程序模块以及诸如可执行指令之类的用于计算机100的其他数据的非易失性和易失性存储。基本输入 /输出系统(BIOS) 120可被存储在固件108中,它包含帮助在诸如启动期间在计算机系统 100内的各元件之间传递信息的基本例程。包括操作系统和/或应用程序的多个程序可被存储在固件108、存储设备106、RAM 104和/或可移动存储设备118上,并且可由处理器102 来执行。如图所示以及在以下段落中更详细地描述的,帽驱动程序514可用于允许基板管理控制器502所使用的图形处理单元被启用,并且允许操作系统加载可用于生成高级3D图形用户界面的3D图形驱动程序。帽驱动程序514用虚线来示出,这指示了帽驱动程序514 可以可选地被存储在一种或多种所标识的形式的计算机可读存储介质110中。命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和定点设备。其他输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其他输入设备常通过耦合到系统总线的串行端口接口连接到处理器102,但也可通过其他接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由诸如视频适配器等可以是3D图形处理器单元112的一部分或可连接到3D图形处理器单元112的接口来连接到系统总线。除显示器之外,计算机通常包括其他外围输出设备,如扬声器和打印机(未示出)。图1的示例性系统还可包括主适配器、小型计算机系统接口 (SCSI)总线和连接到SCSI总线的外部存储设备。计算机系统100可使用至一个或多个远程计算机,如远程计算机,的逻辑连接在网络化环境中操作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,并且通常可包括上面关于计算机系统100所述的许多或全部元件。当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡(NIC) 114 连接至LAN或WAN。NIC 114,可以是内部的或外部的,可被连接到系统总线。在联网环境中,相对于计算机系统100或其部分所描述的程序模块可以被存储在远程存储器存储设备中。可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。此外,虽然构想本公开的许多实施例尤其适用于计算机化的系统,然而在本文中没有任何表述旨在将本公开限于那些实施例。转向图2,示出了可被用来生成虚拟机的示例性虚拟平台。在该实施例中,系统管理程序(hypervisor)微内核202可被配置成控制并仲裁对计算机系统200的硬件的访问。 系统管理程序微内核202可以生成被称为分区的执行环境,诸如父分区和子分区1到N(其中N是大于1的整数)。在此,子分区是系统管理程序微内核202所支持的基本隔离单元。 或者换言之,系统管理程序微内核202可以隔离进程,由此防止一个分区中的进程访问另一分区的资源。每个子分区都可以被映射到在系统管理程序微内核202控制之下的一组硬件资源,例如,存储器、设备、处理器周期等。系统管理程序微内核202可以通过各种形式来具体化,例如它可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件中、嵌入在一个或多个专用集成电路内、或其组合。系统管理程序微内核202可以通过限制客操作系统对物理计算机系统中的存储器的视图来实施分区划分。当系统管理程序微内核202实例化一虚拟机时,它可以将系统物理存储器(SPM)的页(例如,具有开始和结束地址的固定长度存储器块)分配给虚拟机作为客物理存储器(GPM)。在此,虚拟机对系统存储器的视图仅限于系统管理程序微内核 202分配给它的存储器。术语“客物理存储器”是从虚拟机的观点描述存储器页的简写方式,且术语“系统物理存储器”是从物理系统的观点描述存储器页的简写方式。因此,被分配给虚拟机的存储器页会有客物理地址(虚拟机所使用的地址)和系统物理地址(页的实际地址)。在客操作系统运行在虚拟机内的实例中,它可以将客物理存储器虚拟化,由此添加另一层转换。虚拟存储器是一种管理技术,其允许操作系统过度提交存储器,并且给予应用对连续工作存储器的唯一访问。在虚拟化环境中,客操作系统可以使用一个或多个页表来将被称为虚拟客地址的虚拟地址转换成客物理地址。在客OS运行在虚拟机内的实例中, 存储器地址可以具有客虚拟地址、客物理地址、以及系统物理地址。在所描绘的示例中,父分区组件(也可被认为是类似于Xen的开源系统管理程序的域0)可以包括主机204。主机204可以是被配置成通过使用虚拟化服务提供者228 (VSP) 和/或仿真器234向在子分区I-N中执行的客操作系统提供资源的操作系统(或一组配置实用程序)。VPS 228(—般在开源社区中被称为后端驱动程序)可用来通过虚拟化服务客户端(VSC)(在开源社区或类虚拟化设备中一般称为前端驱动程序)对到硬件资源的接口进行多路复用。如图所示,虚拟化服务客户端可以在客操作系统的上下文中执行。然而,这些驱动程序不同于客机中的其余驱动程序,因为向它们提供了系统管理程序而非客机。在一示例性实施例中,虚拟化服务提供者2 与虚拟化服务客户端216和218通信所使用的路径可以被认为是虚拟化路径。如图所示,仿真器234(例如虚拟化IDE设备、虚拟化视频适配器、虚拟化NIC等) 可被配置成在主机204中运行并被附连到对客操作系统220和222可用的资源。例如,当客OS接触被映射到设备的寄存器所处的存储器位置时,微内核系统管理程序202可截取该请求并将客机试图写入的值传递给相关联的仿真器。在此,该示例中的资源可被认为是虚拟设备所处的位置。仿真器的以这种方式的使用可以被认为是仿真路径。仿真路径与虚拟化路径相比是低效的,因为与在VSP和VSC之间传递消息相比,它需要更多的CPU资源来仿真设备。例如,可以将经由仿真路径把值写入盘所需的、被映射至寄存器的存储器上的几百个动作减少为在虚拟化路径中从VSC被传递至VSP的单个消息。最终,仿真器234或VSP 2 可以经由设备驱动程序2M向硬件设备发送命令。设备驱动程序2M可以向硬件发出命令并向仿真器234或VSP 228发出命令的完成或失败的信号。仿真器234或VSP 2 可将命令的完成或失败发送到相关联的虚拟机。在以下段落中更详细地描述的帽驱动程序514还可以在主机204中运行。每一子分区可包括一个或多个虚拟处理器Q30和23 ,客操作系统Q20和222) 可管理并调度线程以在这些虚拟处理器上执行。一般而言,虚拟处理器是向物理处理器的表示提供特定模型的可执行指令以及相关联的状态信息。例如,一个虚拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。本例中的虚拟处理器可被映射到计算机系统的处理器,使得实现虚拟处理器的指令将得到处理器的支持。由此,在包括多个处理器的实施例中,虚拟处理器可以由处理器同时执行,同时例如其他处理器执行系统管理程序指令。分区中虚拟处理器和存储器的组合可被认为是虚拟机。客操作系统Q20和222)可以是任何操作系统,如来自微软 、苹果 、开源社区等的操作系统。客操作系统可包括用户/内核操作模式,并且可具有包括调度器、存储器管理器等的内核。一般而言,内核模式可包括处理器中的执行模式,该执行模式授予至少对特权处理器指令的访问。每一客操作系统可具有相关联的文件系统,该文件系统上可存储有应用(诸如终端服务器、电子商务服务器、电子邮件服务器等)以及客操作系统本身。客操作系统可调度要在虚拟处理器上执行的线程,且这些应用的实例可被实现。现在参考图3,示出了上述图2中的替换虚拟平台。图3描绘了与图2的组件相类似的组件;然而,在该示例实施例中,系统管理程序302可包括微内核组件以及与图2的主机204中的组件(如虚拟化服务提供者228、设备驱动程序2M和帽驱动程序514)相类似的组件,而管理操作系统304可包含例如用于配置系统管理程序302的配置实用程序。在该模型中,系统管理程序302可以执行与图2的系统管理程序微内核202相同或相似的功能;然而,在该模型中,系统管理程序304可被配置成向子分区中执行的客操作系统提供资源。图3中的系统管理程序302可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件内,或者系统管理程序302的一部分可以由专用集成电路来实现。被配置为允许在包括基板管理控制器的服务器中3D遥控的计算机系统通常被组织成数据中心,并由管理员远程控制。在转向图4,它示出了表示数据中心400的高级框图。 如图所示,数据中心400包括多个计算机系统006-4 ),其中每个计算机系统可包括参考图1-3上述的硬件/软件中的部分或全部。管理员可以使用运行在管理计算机系统402上的管理程序404来访问数据中心400,并且与其中容纳的任一个计算机系统通信。例如,管理程序404可包括允许管理员选择要连接的特定计算机(例如,计算机系统406)的菜单。 一旦连接,管理员可以通过向计算机系统406发送指示键盘敲击和/或鼠标事件的信息来执行多个操作,诸如引导计算机系统406、查看计算机系统406的图形用户界面、为计算机系统配置BIOS设置、以及接管对计算机系统406的控制。在管理员希望将计算机系统配置成在操作系统/虚拟化平台(为便于使用,此处称为“控制程序”)的运行时期间启用3D GPU的高级3D能力以在其引导序列期间和/或它崩溃之后查看计算机系统的情况下,运行在计算机系统406上的控制程序可以安装并加载帽驱动程序514而不是基本图形驱动程序。如将在以下段落中更详细地描述的,帽驱动程序514可用于允许在控制程序被引导之前和/或在它崩溃之后使用基板管理控制器502以及允许控制程序加载3D优化图形驱动程序。在示例性实施例中,帽驱动程序514可能无法实际控制耦合到BMC 502或集成在 BMC 502内的低端图形处理单元。即,帽驱动程序514可能无法将API构造转换为GPU命令,并将它们发送到图形处理单元。相反,帽驱动程序514可被配置为模拟可控制低端图形处理单元的驱动程序的行为。例如,帽驱动程序514可以实现能够向3D图形应用程序接口(API)报告的设备驱动程序接口(DDI),诸如可以控制低端图形处理单元的硬件功能的 DirectX 。简言之,3D图形API可以启用应用(以及控制程序,例如操作系统)以生成3D 图形用户界面。例如,3D图形API提供例如视频游戏的图形应用与驱动程序(在此情形中的帽驱动程序514)之间的抽象层。3D图形API向由驱动程序(诸如帽驱动程序514)展示的图形处理单元接口提供低级接口,并且3D图形API提供可以被应用调用的3D图形命令的标准化库。该配置将软件开发者从必须理解每一个图形驱动程序的特性中解放出来。在该示例中,帽驱动程序514可包括使3D图形API报告它可以传递并控制低端图形处理单元的接口。帽驱动程序514还可被配置为模拟对3D图形API在初始化阶段期间发出的请求的响应。例如,帽驱动程序514可包括以下功能确认从3D图形API接收到的请求,并且简单地回头报告请求的完成,而不必实际向低端图形处理单元发送请求。因此, 在帽驱动程序514无法控制低端图形处理单元的情况下,基板管理控制器502可能无法用于远程地与计算机系统406接口。或者换言之,基板管理控制器502可能无法在控制程序的运行时期间用于查看计算机系统406的显示器。现在转向图5,它示出了在引导序列期间导致加载帽驱动程序514而不是基本显示器驱动程序518 (根据传统驱动程序模型来编码的)的计算机系统,例如计算机系统406。 管理员通过经由网络将信号从管理计算机系统402发送到BMC 502来远程地引导计算机系统406。基板管理控制器502可以经由网络接口卡接收信号,并使计算机系统406通电并进入引导序列。在计算机系统406通电之后,诸如处理器102的处理器可以运行指示来自引导ROM 108的引导固件504的指令。引导ROM 108可以运行并加载引导固件504和引导固件显示驱动程序506,例如可用于生成允许用户与引导固件504接口的图形用户界面的符合视频图形阵列(VGA)的驱动程序。在特定的示例中,引导固件504可以是基本输入/输出系统(BIOS)或者符合可扩展固件接口(EFI)规范的程序。引导固件504可以执行对计算机系统406进行测试的通电自检(POST),并且绘制可被基板管理控制器502捕捉并发送到管理计算机系统402的图形用户界面。在引导序列中的该点,图形用户界面可以简单地示出带有白色文本的黑色屏幕,该白色文本指示POST 测试的结果、标识引导固件504的开发者的信息、标识可被按下以进入配置实用程序的按键的信息等。在该点,管理员可以按下管理计算机402上的按键,例如F8,并且可向BMC 502 发送信号,BMC502导致生成指示按键按压的信号。引导固件504可以启动允许管理员在操作系统引导之前远程地配置计算机系统406的配置实用程序。最终,引导固件504将接收指令以启动控制程序并且在例如控制程序引导加载器的存储设备106上搜索预定点,即,操作系统弓I导加载器508,例如,像Microsoft 操作系统的NT加载器或winload. exe的程序、类似Unix的操作系统的名为GNU GRUB的程序、像基于 Linux的操作系统的syslinux的程序等。处理器102可以运行操作系统引导加载器508,操作系统引导加载器508可使固件504退出并使包括引导固件504和引导固件显示驱动程序 506的存储器被释放,使得例如操作系统的控制程序的信息、或甚至操作系统本身可被写入其中。这导致引导固件显示驱动程序506停止并且计算机系统406的图形用户界面变黑, 直到加载另一设备驱动程序。现在转向图6,操作系统引导加载器508可以继续加载例如操作系统602的操作系统的组件到存储器中,直到加载了操作系统的内核以及任何关键的驱动程序。在该点,操作系统602可以接管引导过程,启动加载软件模块,并且使操作系统引导加载器508退出。 最终,即插即用管理器608和例如注册表的配置文件606被加载到存储器中。即插即用管理器608被配置为枚举附连于主板的每个硬件设备,并且加载可用于管理硬件的设备驱动程序。例如,在一个实施例中,即插即用管理器608可以从硬件设备的寄存器读取硬件标识符,并搜索硬件标识符的配置文件606以及驱动程序集的位置以控制硬件设备。GPTO10和 3D GPU 112是即插即用管理器608将检测的两个硬件设备。当即插即用管理器608检测到 GPU 510时,它将确定配置文件606包括声明帽驱动程序514运行GPU 510的信息并将帽驱动程序514加载到存储器中。因此,即插即用管理器608还将加载3D GPU驱动程序512。 由于两个驱动程序都符合计算机系统406用来生成3D图形用户界面的图形驱动程序模型, 因此用于向应用展示图形驱动程序的高级3D硬件能力的3D图形API 604、以及作为调度 3D工作负载在图形处理单元上的执行的软件模块的图形内核610可以初始化。在该示例中,还可以加载用户模式3D图形驱动程序516,该驱动程序是结合3D图形驱动程序512工作以生成3D图形用户界面的用户模式组件。例如,用户模式3D图形驱动程序516可以生成例如图元和命令的API构造,并将其存储在顶点缓冲区中,并且3D图形驱动程序512可将顶点缓冲区附加在图形内核610队列之后。现在转向图7,它示出了运行在计算机系统406上的例如操作系统602的控制程序的特定示例。在操作系统602加载之后,可以开始会话,并且操作系统602可以启动诸如远程呈现引擎702的用户模式应用,该用户模式应用允许诸如客户机720的远程计算机系统连接到计算机系统406。另外,还可以加载例如操作系统的图形用户界面的3D应用704。继续对附图的概要描述并参考图8,它示出了控制程序是虚拟化平台的实例,例如带有系统管理程序的主机操作系统。在以下章节中被描述为在虚拟化平台800 “以内”的功能可以在图2或图3中描绘的一个或多个元件中实现。例如,帽驱动程序514可以在图2 的主机204中实现。在一个更具体的示例中,帽驱动程序514可以在父分区中运行的主机操作系统中实现。虚拟化平台800可以配置其本身以使用3D图形API 604来为虚拟机(814、814B和 814C)生成3D图形用户界面,并且将该3D图形用户界面流传输到诸如客户机820、820B和 /或820C的客户机。客户机820、820B和/或820C可包括具有类似于图1中所示的那些组件的计算机系统、移动设备、和/或瘦客户机。例如,瘦客户机可以具有商业硬件和单片式 web浏览器,该web浏览器被配置为管理该硬件、用户输入和输出并且连接到因特网。在此示例中,瘦客户机还可包括例如显示器的用户界面824以及诸如鼠标的用户输入设备。虚拟化平台800可以加载3D图形服务管理器804以启用虚拟机的3D图形用户界面。3D图形服务管理器804可以执行并被配置为在接收到虚拟桌面会话连接时接收信号。 当虚拟机被启动时,3D图形服务管理器804可以为其加载图形渲染模块并使启用客操作系统220的组件渲染3D图形。简言之,图形渲染模块可以代表其相关联的虚拟机向3D GPU 112渲染。在所示的示例中,图形渲染模块806与虚拟机814相对应,而图形渲染模块806B 和806C分别与虚拟机714B和714C相对应。可以从虚拟机向渲染模块反馈用于虚拟机的图形用户界面,这被虚拟化平台800作为生成图形用户界面的3D处理。继续对图8的描述,虚拟化平台800可使3D图形模块在客操作系统220中生成诸如虚拟设备驱动程序818。当客操作系统220启动时,即插即用模块可执行并且可查询映射至IO的存储器地址。例如图2的系统管理程序202的系统管理程序可截取读取并用导致运行在客OS 220内的即插即用模块加载虚拟设备驱动程序818的设备标识符进行响应。 虚拟设备驱动程序818可以在虚拟机814和虚拟化平台800之间建立图形缓冲区,例如共享库、管道或图形孔径(graphics aperture) 818。在该示例中,虚拟设备驱动程序818可被配置为将包括API构造的DMA缓冲区写到图形孔径818,并且图形孔径818可将DMA缓冲区路由到与虚拟机相关联的图形渲染模块。在示例性实施例中,虚拟设备驱动程序818对于客操作系统220可表现为有3D能力的图像处理单元的设备驱动程序,由此导致客操作系统220将其自身配置成支持3D图形,例如,通过加载可在功能上与3D图形API 604相同的3D图形API 802的实例。虚拟设备驱动程序818被配置成与API 802接口,API 802使得3D应用816产生3D图形。在操作中,3D图形API 802可以生成例如基本几何形状之类的图元,该图元在计算机图形中用作被表示成顶点和常数的其他形状的构建块,并且3D图形API 802将这些图元存储在多个顶点缓冲区中,例如直接存储器存取(DMA)缓冲区。虚拟设备驱动程序818可以通过图形孔径818将图元发送给图形渲染模块806,并且图形渲染模块806可以将缓冲存储在存储器中。当3D图形API 802发出绘制命令时,虚拟设备驱动程序818可将命令和附加数据放置在DMA缓冲区中;将它们打包到一个或多个GPU令牌中;并且经由图形孔径818 将GPU令牌发送到图形渲染模块806。图形渲染模块806可以接收令牌;从DMA缓冲区提取该命令并将该命令发出给图形内核610。可被配置成调度计算机系统406内的图形处理单元上的执行的图形内核610 可接收命令和DMA缓冲区的地址,并确定何时向3D图形驱动程序512发出命令。当来自各个DMA缓冲器的图元将被渲染时,图形内核610可向3D图形驱动程序512发送绘制命令, 该3D图形驱动程序512可在处理器上执行并且可指导3D图形处理单元112执行命令并处理DMA缓冲区中的数据。三维图形处理单元112可以执行并生成指示存储器中的图像帧的位图,例如像素值阵列。图形渲染模块806可捕捉位图并将该位图传递给压缩模块,并且随后经由图形孔径818传递给远程呈现引擎622。远程呈现引擎622可经由一个或多个信息分组将位图发送给客户机,例如客户机820。现在参考图9,它示出了操作系统602(由操作系统602内的大“X”来表示)崩溃之后的计算机系统406。当操作系统602引导时,它可以加载包括整体式崩溃栈图形驱动程序904的崩溃栈,崩溃栈图形驱动程序904通常符合传统驱动程序模型,操作系统602预初始化崩溃栈图形驱动程序904以在发生崩溃时向屏幕绘制任何错误代码。当操作系统602 崩溃时,传统驱动程序与3D优化驱动程序之间不存在操作系统冲突。由此,崩溃栈图形驱动程序904可运行任何检测到的错误代码并将其绘制到存储器。GPU 510可由崩溃栈图形驱动程序904来控制,并且GPU 510可以捕捉已生成的图形用户界面并将其发送到管理计算机系统402。以下是描绘操作过程的一系列流程图。为便于理解,流程图被组织成使得初始流程图通过总体“大图”视点来演示各实现,并且后续的流程图提供以虚线示出的进一步的附加物和/或细节。此外,本领域的技术人员可以理解,虚线所描绘的操作过程被认为是可选的。现在转向图10,它示出了操作过程。操作1000开始操作过程,并且操作1002示出在引导操作系统之前,加载被配置为控制图形处理单元的第一驱动程序,其中该第一驱动程序顺应第一图形驱动程序模型。例如并参考图5,在例如操作系统602的控制程序被加载之前,处理器102可以执行使固件显示驱动程序506被加载到例如随机存取存储器的存储器的指令。引导固件显示驱动程序506可以顺应第一驱动程序模型,例如传统驱动程序模型,并且可以向GPTOlO和/或3D GPU 112发出命令以绘制指示引导固件504的图形用户界面。GPTOlO可以生成图形用户界面,并且基板管理控制器502可将其发送到图4的管理计算机系统402。简要地回头参考图10,所示的下一个操作是操作1004,它示出了在操作系统的引导序列期间,将第二驱动程序加载操作系统中,其中第二驱动程序被配置为模拟对图形处理单元的控制,其中该第二驱动程序顺应第二图形驱动程序模型,其中该操作系统无法同时运行顺应第一图形驱动程序模型和第二图形驱动程序模型的图形驱动程序。回头参考图 5的上下文,引导固件504可以检测存储在例如存储设备106或任何其他存储设备的存储中的操作系统引导加载器508,并将其加载到随机存取存储器。此刻,引导固件504可以调度操作系统引导加载器508以运行及退出。该过程的副作用是包括引导固件504和引导固件显示驱动程序506的存储器被释放,使得其他数据可被写入这两个模块所占据的存储器地址。现在转向图6,操作系统引导加载器508可以开始将某些驱动程序加载到存储器中,并最终加载例如操作系统602的操作系统的内核。例如,该阶段加载的驱动程序可以是文件系统的驱动程序,或操作系统602在该操作系统的剩余部分可被加载之前所需要的其他驱动程序。在这些驱动程序被加载之后,操作系统引导加载器508可以加载操作系统 602的其他组件,诸如内核、硬件抽象层、例如注册表的配置文件606等,并且最终是即插即用管理器608。即插即用管理器608可由处理器102来执行,并且附连于主板的硬件可被枚举。即插即用管理器608可为与所枚举的硬件相对应的驱动程序搜索配置文件606。在示例性实施例中,即插即用管理器608可以检测图形处理单元510的存在,并查看与其对应的驱动程序的配置文件606。在该示例中,即插即用管理器608可以检测帽驱动程序514和基本图形驱动程序518作为与GPU 510 一同工作的两个驱动程序。然而,配置文件606可包括明确地指导即插即用管理器608加载帽驱动程序514而不是基本图形驱动程序518的信息,帽驱动程序514被设计为符合被优化以与3D图形API 604操作的驱动程序模型,基本图形驱动程序518可被编写以符合传统驱动程序模型。返回图10并转向操作1006,它示出了在操作系统的引导序列期间,将被配置为向 3D图形处理单元发出三维图形命令的第三驱动程序加载到操作系统中,其中该第三驱动程序顺应第二图形驱动程序模型。转回到图6的上下文,即插即用管理器608可以继续加载附连于计算机系统406主板的硬件的驱动程序,并且还加载被优化以与3D图形API 604 一同使用的3D图形驱动程序512。例如,即插即用管理器608可以检查配置文件,并发现指示3D图形驱动程序512及其对应的用户模式3D图形驱动程序516的信息被用于3D GPU 112,并且将它们从存储设备106加载到操作系统602中。再回到图10,操作1008示出了将3D图形处理单元生成的3D图像发送到客户机。 例如并参考图6,在操作系统602启动并运行之后,3D GPU 112所创建的3D图形用户界面可被发送到诸如客户机620的客户机。例如,诸如视频游戏的3D应用704可由操作系统602 来执行,并且3D应用704可以向3D图形API 604发出命令。3D图形API 604可以与用户模式3D图形驱动程序516接口并生成图元的DMA缓冲区,并将其发送到可将DMA缓冲区附加到队列的3D图形驱动程序512。图形内核610可以发出执行命令,并且3D图形驱动程序 512可将DMA缓冲区发送到3D GPU 112。可被发送到客户机620的位图可由3D GPU 112 来生成。现在参考图11,其示出了包括以上关于图10描述的操作以及附加操作1110-1122 的操作过程。如图所示,附加操作提供更多细节并补充以上描述的操作。操作1110示出在一个实施例中,计算机系统可包括用于运行第四驱动程序的电路,该第四驱动程序被配置为响应于确定操作系统崩溃而控制图形处理单元,其中该第四驱动程序顺应第一图形驱动程序模型。例如并参考图9,操作系统602可能崩溃,并且崩溃图形驱动程序904可在处理器102上执行并向GPU 112和GPU 510发送命令以指导它们生成图形用户界面,该图形用户界面包括示出错误代码的文本和/或解释操作系统遇到错误并已关闭的信息。其一个具体示例可包括生成包括“死机的蓝屏”的图形用户界面。在该示例性实施例中,崩溃图形驱动程序904可以顺应传统驱动程序模型,因为它不太复杂并且在崩溃图形驱动程序904运行时丰富的3D图形是不必要的。基板管理控制器502可被配置为捕捉由GPU 510生成的图形用户界面,并将其经由网络接口卡发送到管理计算机系统402。回头参考图11,操作1112示出计算机系统可包括用于运行第四驱动程序的电路, 该第四驱动程序被配置为响应于确定操作系统进入诊断操作模式而控制图形处理单元,其中该第四驱动程序顺应第一图形驱动程序模型。如图所示,在执行该操作的实例中,可能已经进入操作系统602的诊断操作模式,而不是常规模式(未示出)。诊断模式通常用于标识问题,并且通过将操作系统配置为具有经缩减的功能来使该过程更容易。在诊断模式中被禁用的特征之一可以是3D图形API 604。因此,当操作系统602正在将其自身配置为运行在诊断模式中时,即插即用管理器608可被配置为加载基本显示驱动程序518来代替3D图形驱动程序512。例如,配置文件606可包括指示基本驱动程序518而不是3D图形驱动程序 512将在诊断模式中被加载的信息。基本图形驱动程序518可被GPU 510用来呈现可被基板管理控制器502捕捉的图形用户界面,并将其发送到管理计算机系统602。在该示例中, 由于在该模式中仅被加载的图形驱动程序符合传统驱动程序模型,因此不存在操作系统冲突。继续图11的描述,操作1114在示例性实施例中示出,计算机系统可包括用于基于存储在图形处理单元的寄存器中的硬件标识符来加载第二驱动程序的电路。例如,即插即用管理器608可被配置为枚举附连于主板的设备,并且检查GPU 510的寄存器以获得硬件设备标识符。例如,每个硬件设备可包括标准化寄存器,该寄存器包括用于标识设备的字母数字值。即插即用管理器608可以读取该值并检查配置文件606以确定应该为设备加载什么驱动程序。在该示例中,配置文件606可包括标识与硬件标识符相关联的帽驱动程序514 的位置的信息。即插即用管理器608可以在存储设备106中定位帽驱动程序514并将其加载到操作系统602中。在具体示例中,BMC 502和/或GPU 510可以顺应外围组件接口。当计算机系统406启动时,BMC 502和GPU 510的寄存器可被映射到计算机系统的存储器映射的地址空间。这样,用于访问随机存取存储器的指令也可用于访问设备。转向操作1116,它示出响应于确定配置文件中不存在硬件标识符,基于存储在图形处理单元的寄存器中的设备类标识符来加载第二驱动程序。类似于前述示例,即插即用管理器608可被配置为枚举附连于主板的设备,并且检查GPU 510的寄存器以获得硬件设备标识符并用其来搜索配置文件。然而,在该示例中,配置文件606中可能不存在GPU 510 的设备标识符。响应于确定设备标识符不存在,即插即用管理器608可被配置为在配置文件606中为传统GPTOlO搜索类标识符。在该示例中,即插即用管理器608可为与帽驱动程序514的位置相关联的GPU 510寻找类标识符并加载帽驱动程序514。继续对图11的描述,操作1118示出了加载第二驱动程序,其中该第二驱动程序被配置为用指示其满足控制图形处理单元的最低要求的信息来响应初始化请求。结合图 11转向图6,帽驱动程序514可能无法实际控制GPU 510。然而,由于在计算机系统的操作系统或虚拟化平台的运行时执行期间,其他技术可用于遥控到该计算机系统,因此可以不需要GPU 510。在该示例中,帽驱动程序514可被配置为响应来自3D图形API 604的初始化请求,指示帽驱动程序514满足最低的要求集,而不是使用其实际能力来响应。例如,帽驱动程序514可以使用指示其实现用于调用图形处理单元的3D硬件功能的设备驱动程序接口的信息来响应。在一个具体示例中,帽驱动程序514可被配置为使用指示其至少在 Direct3D 9Ex运行时实现接口的信息来响应。简要地回头参考图11,操作1120在示例性实施例中示出,计算机系统可包括用于加载第二驱动程序的电路,其中该第二驱动程序被配置为对图形应用程序接口发出的图形命令的完成进行仿真。类似于操作1118,帽驱动程序514可被配置为对3D图形API 604发出的命令的完成进行仿真。在该示例中,3D图形API 604可在初始化过程期间发出命令,并且如果请求成功,则3D图形API 604可允许帽驱动程序514被用于GPU 410 ;否则报告错误并可加载基本图形驱动程序518。在该示例中,帽驱动程序514可被配置为使用指示操作成功的信息来响应3D图形API 604命令。例如,帽驱动程序514可被编程为报告GPU 510 成功地完成对3D图形API 604的某些操作。继续对图11的描述,操作1122示出在实施例中,计算机系统可包括用于执行虚拟机的电路,其中该虚拟机被配置为经由第三驱动程序在图形处理单元上渲染3D图形。参考图7,在一个示例性实施例中,计算机系统406可包括可用于主存多个启用3D的虚拟机的组件。在该示例中,被发送到客户机的3D图形用户界面可用于诸如虚拟机814的虚拟机。在该示例中,当3D应用716(例如,客操作系统716的图形用户界面)生成用于3D图形的命令时,用户模式图形驱动程序710 (运行客操作系统220)可以生成图元的DMA缓冲区和命令,并且虚拟设备驱动程序712可经由图形孔径818将其发送到图形渲染模块806。图形渲染模块806可将DMA缓冲区路由到用户模式3D图形驱动程序710,并将对虚拟化平台602 中的3D图形API 604的命令发出到3D图形驱动程序512。3D图形驱动程序512可以接收该命令并将DMA缓冲区追加到队列。图形内核708可以发出执行命令,并且3D图形驱动程序512可将DMA缓冲区发送到3D GPU 112。可被路由回到远程呈现引擎722的位图可由 3DGPU 112来生成。远程呈现引擎722可以接收该位图并将其发送到与虚拟机814相对应的客户机,例如客户机720。现在转向图12,其示出了使用基板管理控制器时配置计算机以启用3D图形能力的操作过程。如图所示,操作过程始于操作1200并移至操作1202,其示出了在操作系统的引导序列期间加载被配置为模拟对第一图形处理单元的控制的帽驱动程序,该第一图形处理单元耦合到被配置为将第一图形处理单元生成的图形发送到管理计算机的基板管理控制器,其中该第一驱动程序顺应Windows显示驱动程序模型。再次转向图5,引导固件504 可将操作系统引导加载器508加载到存储器中并退出。操作系统引导加载器508可以将操作系统602的组件加载到存储器中,诸如内核、硬件抽象层、即插即用管理器608、例如注册表的配置文件608等。现在转向图6,操作系统引导加载器508可以开始将某些驱动程序加载到存储器中,并最终加载例如操作系统602的操作系统的内核。例如,该阶段加载的驱动程序可以是文件系统的驱动程序,或操作系统602在该操作系统的剩余部分可被加载之前所需要的其他驱动程序。在这些驱动程序被加载之后,操作系统引导加载器508可以加载操作系统 602的其他组件,诸如内核、硬件抽象层、例如注册表的配置文件606等,并且最终是即插即用管理器608。即插即用管理器608可由处理器102来执行,并且附连于主板的硬件可被枚举。即插即用管理器608可为与所枚举的硬件相对应的驱动程序搜索配置文件606。在示例性实施例中,即插即用管理器608可以检测图形处理单元510的存在,并查看与其对应的驱动程序的配置文件606。在该示例中,即插即用管理器608可以检测帽驱动程序514(即,顺应 WDDM的驱动程序)和基本图形驱动程序518 ( S卩,顺应XPDM的驱动程序)作为与GPU 510 一同工作的两个驱动程序。然而,配置文件606可包括明确地指导即插即用管理器608加载帽驱动程序514而不是基本图形驱动程序518的信息。回头参考图12,操作1204在实施例中示出,计算机系统可包括用于在操作系统的引导序列期间加载3D显示驱动程序的电路,该3D显示驱动程序被配置为向第二图形处理单元发出三维图形命令,其中该3D窗口显示驱动程序模型驱动程序顺序窗口显示驱动程序模型。回头参考图6,即插即用管理器608还可将顺应WDDM的3D GPU 112的图形设备驱动程序加载到操作系统602中。例如,即插即用管理器608可以检查配置文件604,并发现指示3D图形驱动程序512及其对应的用户模式3D图形驱动程序516被用于3D GPU 112 的信息,并且将它们从存储设备106加载到操作系统602中。简要地回到图12,操作1206示出响应于确定操作系统崩溃而运行崩溃驱动程序, 视频图形阵列驱动程序被配置为指导第一图形处理单元生成计算机系统的图形用户界面, 其中该视频图形阵列驱动程序顺应XP驱动程序模型。例如并参考图8,在示例性实施例中, 操作系统602可能崩溃,并且可以是视频图形阵列(VGA)传统驱动程序的崩溃图形驱动程序904可在处理器102上执行并向GPU 510发送命令以指导它生成图形用户界面,该图形用户界面包括示出错误代码的文本和/或解释操作系统602遇到错误并已关闭的信息。基板管理控制器502可被配置为捕捉由GPU 510生成的图形用户界面,并将其经由网络接口卡发送到管理计算机系统402。现在参考图13,它示出了可结合以上关于图12所示的那些操作来执行的附加操作。例如,操作1308示出在一个实施例中,计算机系统还可包括用于在引导操作系统之前加载引导固件驱动程序的电路,该引导固件驱动程序被配置为指导第一图形处理单元生成引导固件程序的图形用户界面,其中该视频图形阵列驱动程序顺应XP驱动程序模型。例如并参考图5,处理器102可以执行使弓I导固件显示驱动程序504 (即,传统VGA驱动程序)被加载到例如随机存取存储器的存储器中的指令。在该示例中,引导固件显示驱动程序504 可导致图形处理单元(例如GPU 510)将指示引导固件的图形用户界面的位图绘制到存储器。在该示例中,GPU 510可以与基板管理控制器504集成或可操作地耦合到基板管理控制器502,例如附连于常见总线,并且基板管理控制器502可以捕捉GPU 510生成的图形用户界面并将其发送到图4的管理计算机系统402。继续对图13的描述,操作1310示出计算机系统可包括用于在操作系统的诊断操作模式期间加载图形驱动程序的电路,该图形驱动程序被配置为指导第一图形处理单元在诊断操作模式中生成操作系统的图形用户界面,其中该图形驱动程序顺应XP驱动程序模型。如图所示,在执行该操作的实例中,可能已经进入操作系统602的诊断操作模式,而不是常规模式。在该示例中,即插即用管理器608可被配置为加载可以是VGA驱动程序的基本图形驱动程序518来代替帽驱动程序514以启用对GPU 510的使用。在该示例中,高级图形能力可能是不必要的,并且可能不需要3D图形驱动程序512。由此,在此场景中将不存在操作系统冲突。在该示例中,配置文件606可包括指导即插即用管理器608加载3D GPU112和GPU 510的基本图形驱动程序518来代替帽驱动程序514和3D图形驱动程序512的信息。由此,虽然在诊断模式中,基板管理控制器502可捕捉GPU 510生成的图形用户界面, 并将其发送到管理计算机系统402。现在参考操作1312,它示出了加载帽驱动程序,其中该帽驱动程序被配置为使用指示其满足控制第二图形处理单元的最低要求的信息来响应初始化请求。结合图11转向图6,帽驱动程序514可能无法实际控制GPU 510。然而,由于在计算机系统的操作系统或虚拟化平台的运行时执行期间,其他技术可用于遥控到该计算机系统,因此可以不需要GPU 510。在该示例中,帽驱动程序514可被配置为响应来自3D图形API 604的初始化请求, 指示帽驱动程序514满足最低的要求集,而不是使用其实际能力来响应。例如,帽驱动程序514可以使用指示其实现用于调用图形处理单元的3D硬件功能的设备驱动程序接口的信息来响应。在一个具体示例中,帽驱动程序514可被配置为使用指示其至少在Direct3D 9Ex运行时实现接口的信息来响应。继续对图13的描述,它还示出了操作1314,其描绘了加载帽驱动程序,其中该帽驱动程序被配置为对图形应用程序接口发出的图形命令的完成进行仿真。在该示例中,帽驱动程序514可被配置为对3D图形API 604发出的命令的完成进行仿真。在该示例中,3D 图形API 604可在初始化过程期间发出命令,并且如果请求成功,则3D图形API 604可允许帽驱动程序514被用于GPU 510 ;否则报告错误并可加载基本图形驱动程序518。在该示例中,帽驱动程序514可被配置为使用指示操作成功的信息来响应3D图形API 604命令。 例如,帽驱动程序514可被编程为报告GPU 510成功地完成对3D图形API 604的某些操作。参考操作1316,它示出基于存储在第一图形处理单元的寄存器中的硬件标识符从一组驱动程序中选择帽驱动程序,其中该组驱动程序包括第一图形处理单元的多个驱动程序,其中该组驱动程序包括符合XP驱动程序模型、窗口显示驱动程序模型、以及视频图形阵列驱动程序模型的至少一个驱动程序。例如并再次参考图6,在一个实施例中,存储设备 106可包括可用于控制GPU 510的一组显示驱动程序。例如,该组可包括但不限于,帽驱动程序514、基本图形驱动程序518、或顺应传统驱动程序模型的第三方图形驱动程序、基板管理控制器502的硬件制造商创建的传统驱动程序等。在该示例中,即插即用管理器608 基于配置文件(例如注册表)中的指示帽驱动程序514应被加载以代替这些其他驱动程序中的任一个的信息,从该组中选择帽驱动程序514以加载到操作系统602中。再次参考图13,操作1318示出执行虚拟机,其中该虚拟机被配置为经由第三驱动程序在图形处理单元上渲染3D图形。参考图7,在一个示例性实施例中,计算机系统406可包括可用于主存多个启用3D的虚拟机的组件。在该示例中,被发送到客户机的3D图形用户界面可用于诸如虚拟机814的虚拟机。现在参考图14,其示出了移除包括操作1400、1402、1404、1406和1408的操作系统驱动程序冲突的操作过程。如图14所示,操作过程始于操作1400,并且操作1402示出由引导加载器加载被配置为指导图形处理单元为基本输入/输出系统生成图形用户界面的引导驱动程序,其中该引导驱动程序符合XP驱动程序模型。例如并参考图5,在操作系统602被加载之前,处理器102可以执行使VGA显示驱动程序加载到例如随机存取存储器的存储器的指令。在一个具体的示例中,VGA图形驱动程序可以是固件显示驱动程序506。 引导固件显示驱动程序506可以顺应XP驱动程序模型,例如传统驱动程序模型,并且可以
17向GPU 510和/或3D GPU 112发出命令以绘制指示引导固件504 (例如,基本输入/输出系统)的图形用户界面。继续对图14的描述,操作1404示出了基板管理控制器将图形处理单元生成的图形用户界面发送到管理计算机系统。转回到图5,基板管理控制器502可包括GPU 510或连接到GPU 510。GPU 510为BIOS生成图形用户界面时,基板管理控制器502可以捕捉位图并将其以一个或多个分组的形式发送到管理计算机系统402。操作管理计算机系统402的管理员可以使用管理程序404来查看BIOS的图形用户界面。转回到图14,操作1406示出加载帽驱动程序,其中该帽驱动程序被配置为对图形应用程序接口发出的命令的完成进行仿真。回头参考图6,BIOS可将操作系统引导加载器 508加载到随机存取存储器中。操作系统引导加载器508可以开始将某些驱动程序加载到存储器中,最终即插即用管理器608可被加载到操作系统602中。即插即用管理器608可以检测帽驱动程序514和基本图形驱动程序518作为与GPU 510 一同工作的两个驱动程序。在该示例中,配置文件可包括明确地指导即插即用管理器608加载帽驱动程序514的信息。帽驱动程序514还可被配置为使用预定信息响应初始化请求来代替使用其实际能力来响应,该预定信息指示帽驱动程序514满足最低的要求集。继续对图14的描述,操作1408示出了操作系统加载被配置为从图形应用程序接口接收三维图形信息并向3D图形处理单元发出三维图形命令的3D图形驱动程序,其中该 3D驱动程序符合窗口显示驱动程序模型。转回到图6,即插即用管理器608可以继续加载附连于计算机系统406主板的硬件的驱动程序,并且还加载被优化以与3D图形API 604 — 同使用的3D图形驱动程序512。例如,即插即用管理器608可以检查配置文件,并发现指示3D图形驱动程序512及其对应的用户模式3D图形驱动程序516的信息被用于3D GPU 112,并且将它们从存储设备106加载到操作系统602中。转回到图13,它还包括操作1410,其示出将指示3D图形处理单元创建的3D图像的位图发送到客户计算机系统。例如并参考图6,在操作系统602启动并运行之后,3D GPU 112所创建的3D图形用户界面可被发送到诸如客户机620的客户机。例如,诸如视频游戏的3D应用704可由操作系统602来执行,并且3D应用704可以向3D图形API 604发出命令。3D图形API 604可以与用户模式3D图形驱动程序516接口并生成图元的DMA缓冲区, 并将其发送到可将DMA缓冲区附加到队列的3D图形驱动程序512。图形内核610可以发出执行命令,并且3D图形驱动程序512可将DMA缓冲区发送到3DGPU 112。可被发送到客户机620的位图可由3D GPU 112来生成。参考图15,它示出包括附加操作1512-1518的图15所示的操作过程的替代实施例。操作1512示出在一个示例性实施例中,操作过程可包括响应于确定操作系统崩溃,运行被配置为指导图形处理单元生成图形用户界面的崩溃图形驱动程序。例如并参考图9,操作系统602可能崩溃,并且崩溃图形驱动程序904可在处理器102上执行并向GPU 112和 GPU 510发送命令以指导它们生成图形用户界面,该图形用户界面包括示出错误代码的文本和/或解释操作系统遇到错误并已关闭的信息。在该示例性实施例中,崩溃图形驱动程序904可以是VGA驱动程序。基板管理控制器502可被配置为捕捉由GPU 510生成的图形用户界面,并将其经由网络接口卡发送到管理计算机系统402。转向操作1514,它示出了加载帽驱动程序,其中该帽驱动程序被配置为对图形应用程序接口发出的图形命令的完成进行仿真。在该示例中,帽驱动程序514可被配置为对 3D图形API 604发出的命令的完成进行仿真。在该示例中,帽驱动程序514可被配置为使用指示操作成功的信息来响应3D图形API604命令,例如,帽驱动程序514可被配置为指示渲染图像的请求已成功地完成,来代替实际向GPU 510发送命令。参考操作1516,它示出操作系统基于存储在图形处理单元的寄存器中的硬件标识符从一组驱动程序中选择帽图形驱动程序,其中该组驱动程序包括图形处理单元的多个驱动程序,其中该组驱动程序包括符合窗口显示驱动程序模型的至少一个驱动程序、以及符合XP驱动程序模型的至少一个驱动程序。例如并再次参考图6,在一个实施例中,存储设备 106可包括可用于控制GPU 510的一组显示驱动程序。例如,该组可包括但不限于,帽驱动程序514、基本图形驱动程序518、或顺应传统驱动程序模型的第三方图形驱动程序、基板管理控制器502的硬件制造商创建的传统驱动程序等。在该示例中,即插即用管理器608 基于配置文件(例如注册表)中的指示帽驱动程序514应被加载以代替这些其他驱动程序中的任一个的信息,从该组中选择帽驱动程序514以加载到操作系统602中。现在转向操作1518,它示出执行虚拟机,其中该虚拟机被配置为经由3D驱动程序在图形处理单元上渲染3D图形。参考图7,在一个示例性实施例中,计算机系统406可包括可用于主存多个启用3D的虚拟机的组件。在该示例中,被发送到客户机的3D图形用户界面可用于诸如虚拟机814的虚拟机。上述详细描述通过示例和/或操作图阐明了系统和/或过程的各种实施例。就这些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些框图或示例中的每一功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。尽管示出和描述了此处所描述的本主题的特定方面,但是,对于本领域的技术人员显而易见的是,基于此处的原理,在不偏离此处所描述的主题以及其广泛的方面的情况下,可以作出更改和修改,因此,所附权利要求书将包含在它们的范围内,所有这样的更改和修改都将在此处所描述的主题的真正的精神和范围内。
权利要求
1.一种计算机系统,包括处理器;图形处理单元;3D图形处理单元;基板管理控制器,被配置为将所述图形处理单元生成的图形用户界面发送到管理计算机系统;以及存储器,被配置为当通电时与所述处理器、所述图形处理单元、所述3D图形处理单元、 以及所述基板管理控制器通信,所述存储器包括在执行时使所述计算机系统执行以下动作的指令在引导操作系统之前,加载被配置为控制所述图形处理单元的第一驱动程序,其中所述第一驱动程序顺应第一图形驱动程序模型;在所述操作系统的引导序列期间,将第二驱动程序加载到所述操作系统中,其中所述第二驱动程序被配置为模拟对所述图形处理单元的控制,其中所述第二驱动程序顺应第二图形驱动程序模型,其中所述操作系统无法同时运行顺应所述第一图形驱动程序模型和所述第二图形驱动程序模型的图形驱动程序;在所述操作系统的所述引导序列期间,将被配置为向所述3D图形处理单元发出三维图形命令的第三驱动程序加载到所述操作系统中,其中所述第三驱动程序顺应所述第二图形驱动程序模型;以及将所述3D图形处理单元生成的3D图像发送到客户机。
2.如权利要求1所述的计算机系统,其特征在于,所述存储器还包括在执行时使所述计算机系统执行以下动作的指令运行第四驱动程序,所述第四驱动程序被配置为响应于确定所述操作系统崩溃而控制所述图形处理单元,其中所述第四驱动程序顺应所述第一图形驱动程序模型。
3.如权利要求1所述的计算机系统,其特征在于,所述存储器还包括在执行时使所述计算机系统执行以下动作的指令运行第四驱动程序,所述第四驱动程序被配置为响应于确定所述操作系统进入诊断操作模式而控制所述图形处理单元,其中所述第四驱动程序顺应所述第一图形驱动程序模型。
4.如权利要求1所述的计算机系统,其特征在于,在执行时使所述计算机系统加载所述第二驱动程序的指令还包括在执行时使所述计算机系统执行以下动作的指令响应于确定配置文件中不存在硬件标识符,基于存储在所述图形处理单元的寄存器中的设备类标识符,加载所述第二驱动程序。
5.如权利要求1所述的计算机系统,其特征在于,所述存储器还包括在执行时使所述计算机系统执行以下动作的指令执行虚拟机,其中所述虚拟机被配置为经由所述第三驱动程序在所述图形处理单元上渲染3D图形。
6.一种包括指令的计算机可读存储介质,所述指令在由处理器执行时使得计算机系统执行以下动作在操作系统的引导序列期间,加载被配置为模拟对第一图形处理单元的控制的帽驱动程序,所述第一图形处理单元耦合到被配置为将所述第一图形处理单元生成的图形发送到管理计算机的基板管理控制器,其中所述第一驱动程序顺应窗口显示驱动程序模型;在所述操作系统的所述引导序列期间,加载被配置为向第二图形处理单元发出三维图形命令的3D显示驱动程序,其中所述3D窗口显示驱动程序模型驱动程序顺应窗口显示驱动程序模型;以及响应于确定所述操作系统崩溃而运行崩溃驱动程序,视频图形阵列驱动程序被配置为指导所述第一图形处理单元生成所述计算机系统的图形用户界面,其中所述视频图形阵列驱动程序顺应XP驱动程序模型。
7.如权利要求6所述的计算机可读存储介质,其特征在于,还包括在由所述处理器执行时使得所述计算机系统执行以下动作的指令加载所述帽驱动程序,其中所述帽驱动程序被配置为使用指示其满足控制所述第二图形处理单元的最低要求的信息来响应初始化请求。
8.一种计算机实现的方法,包括引导加载器加载被配置为指导图形处理单元为基本输入/输出系统生成图形用户界面的引导驱动程序,其中所述引导驱动程序符合XP驱动程序模型;基板管理控制器将所述图形处理单元生成的所述图形用户界面发送到管理计算机系统;所述操作系统加载帽驱动程序,其中所述帽驱动程序被配置为将指示所述帽驱动程序能够控制所述图形处理单元的信息发送到图形应用程序接口,其中所述帽驱动程序符合窗口显示驱动程序模型,其中所述图形应用程序接口无法同时与符合窗口显示驱动程序模型和XP驱动程序模型的驱动程序进行接口 ;所述操作系统加载3D图形驱动程序,所述3D图形驱动程序被配置为从所述图形应用程序接口接收三维图形信息并向3D图形处理单元发出三维图形命令,其中所述3D驱动程序符合所述窗口显示驱动程序模型;以及将指示3D图形处理单元创建的3D图像的位图发送到客户计算机系统。
9.如权利要求8所述的方法,其特征在于,还包括加载所述帽驱动程序,其中所述帽驱动程序被配置为对所述图形应用程序接口发出的图形命令的完成进行仿真。
10.如权利要求8所述的方法,其特征在于,还包括所述操作系统基于存储在所述图形处理单元的寄存器中的硬件标识符从一组驱动程序中选择所述帽图形驱动程序,其中所述一组驱动程序包括所述图形处理单元的多个驱动程序,其中所述一组驱动程序包括符合所述窗口显示驱动程序模型的至少一个驱动程序以及符合所述XP驱动程序模型的至少一个驱动程序。
全文摘要
本发明涉及启用配置有图形处理器的服务器的远程管理的技术。描述了在被配置为将3D图形用户界面流传输到远程客户机的计算机系统中启用对基板管理控制器的使用的技术。在示例性配置中,可加载被编写成符合能够与3D图形应用程序接口进行接口的驱动程序模型的帽驱动程序以便与基板管理控制器一同使用,而不是加载被编写成符合传统驱动程序模型的传统驱动程序。这允许控制程序加载可与3D图形应用程序接口互操作的图形驱动程序。除上述之外,在发明内容和具体实施例的文本、权利要求书和附图中描述了其他方面。
文档编号G06F9/445GK102567052SQ20111042760
公开日2012年7月11日 申请日期2011年12月19日 优先权日2010年12月20日
发明者B·A·库马尔, E·K·韩, H·张, K·拉克什米娜拉亚, M·P·马拉卡帕利 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1