CN104094224B - 用于超虚拟化的非对称gpu处理器的方法和系统 - Google Patents
用于超虚拟化的非对称gpu处理器的方法和系统 Download PDFInfo
- Publication number
- CN104094224B CN104094224B CN201380006386.0A CN201380006386A CN104094224B CN 104094224 B CN104094224 B CN 104094224B CN 201380006386 A CN201380006386 A CN 201380006386A CN 104094224 B CN104094224 B CN 104094224B
- Authority
- CN
- China
- Prior art keywords
- gpu
- dummy node
- node
- dummy
- umd
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/4555—Para-virtualisation, i.e. guest operating system has to be modified
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及用于在超虚拟化环境中提供非对称图形处理单元(“GPU”)处理器的方法、系统及计算机程序产品。超虚拟化环境的子分区内的虚拟GPU(“vGPU”)包括内核模式驱动器(“KMD”)和用户模式驱动器(“UMD”)。KMD包括多个虚拟节点。每一虚拟节点与其它类型的操作并行地执行不同类型的操作。KMD被声明为多引擎GPU。UMD调度供在虚拟节点上并行执行的操作。超虚拟化环境的根分区内的渲染组件在物理GPU处执行从vGPU接收的GPU命令。在KMD与渲染组件之间建立的多个存储器存取信道在KMD处的对应虚拟节点与渲染组件之间传达GPU命令。
Description
技术领域
本申请涉及GPU处理器,尤其涉及在超虚拟化环境中提供非对称图形处理单元(“GPU”)处理器的方法、系统及计算机程序产品。
背景技术
计算机系统及相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。现在,计算机系统通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排、帐目管理等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统及其他电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行分布在多个不同的计算机系统和/或多个不同的计算环境中。
一些计算机被配置成提供超虚拟化执行环境,超虚拟化执行环境允许客软件以隔离方式共享单个计算机系统的硬件设备。一般而言,超虚拟化执行环境包括受系统管理程序支持的多个分区。每一分区提供供软件在其中执行的隔离执行环境。分区一般包括根分区以及一个或多个子分区。根分区运行主机操作系统并管理虚拟化栈。根分区可获得对物理设备的访问。每一子分区托管客软件(例如,客操作系统和客应用)。通过虚拟设备和系统管理程序的软件接口向子分区提供对物理设备的访问。
一些超虚拟化执行环境给子分区(以及在其中运行的客软件)提供对一个或多个物理图形处理单元(“GPU”)的超虚拟化访问。GPU是被配置成执行并行处理任务(诸如图形渲染任务)的处理设备。GPU一般包含能够并发操作的多个物理硬件处理模块(也被称为节点或引擎)。通常,每一节点/引擎执行不同类型的任务(例如,三维渲染、视频加速等)。由此,这些节点/引擎常常被称为是非对称的。
现有的超虚拟化解决方案提供子分区中对客软件而言呈现为物理GPU的“虚拟GPU”(“vGPU”)。vGPU提供用于从客软件接收GPU命令和数据的接口。vGPU连同根分区内的一个或多个组件来工作以在任何可用物理GPU上执行接收到的命令。现有的vGPU向客软件呈现处理全部GPU命令的单个处理节点。现有的vGPU随后将要在物理GPU上执行的任务串行化,以使得一个时间仅在物理GPU上执行单个任务(而非在物理GPU上并行执行多个任务)。由此,vGPU在任何给定时间利用物理GPU处的单个节点/引擎,从而导致对物理GPU的更多高效特征中的一些的利用不足。
发明内容
本发明涉及用于在超虚拟化环境中提供非对称图形处理单元(“GPU”)处理器的方法、系统及计算机程序产品。
一些实施例包括一种用于在超虚拟化执行环境的子分区中提供非对称虚拟化GPU节点的方法。虚拟GPU(“vGPU”)在该子分区内被实例化。该vGPU被配置成虚拟化物理GPU。该vGPU包括内核模式驱动器(KMD)和用户模式驱动器(UMD)。KMD包括多个虚拟节点。每一虚拟节点被配置成与一个或多个其它类型的操作并行地执行不同类型的操作。KMD被声明为多引擎GPU。UMD被配置成调度供在虚拟节点上并行执行的不同类型的操作。还在超虚拟化执行环境的根分区内实例化渲染组件。渲染组件被配置成在物理GPU处执行从vGPU接收的GPU命令。
在KMD和渲染组件之间建立多个存储器存取信道。每一存储器存取信道对应于KMD处的不同虚拟节点。每一存储器存取信道被配置成在对应的虚拟节点与渲染组件之间传达GPU命令。UMD调度供在不同虚拟节点上执行的多个不同类型的操作。
提供本发明内容是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
本发明的附加特征和优点将在以下描述中叙述,并且其一部分根据本描述将是显而易见的,或者可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些以及其它特征、优点和特征将根据以下描述和所附权利要求而变得更显而易见,或者可通过如此后阐述的对本发明的实践而获知。
附图说明
为了描述可获得本发明的上述和其他优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限制,本发明将通过使用附图用附加特征和细节来描述和说明,在附图中:
图1解说了促进用虚拟图形处理单元(“GPU”)的并行操作的示例计算机架构。
图2解说了用于在超虚拟化执行环境的子分区中提供非对称虚拟化GPU节点的一示例方法的流程图。
具体实施方式
本发明涉及用于在超虚拟化环境中提供非对称图形处理单元(“GPU”)处理器的方法、系统及计算机程序产品。
一些实施例包括一种用于在超虚拟化执行环境的子分区中提供非对称虚拟化GPU节点的方法。虚拟GPU(“vGPU”)在该子分区内被实例化。该vGPU被配置成虚拟化物理GPU。该vGPU包括内核模式驱动器(KMD)和用户模式驱动器(UMD)。KMD包括多个虚拟节点。每一虚拟节点被配置成与一个或多个其它类型的操作并行地执行不同类型的操作。KMD被声明为多引擎GPU。UMD被配置成调度供在虚拟节点上并行执行的不同类型的操作。还在超虚拟化执行环境的根分区内实例化渲染组件。渲染组件被配置成在物理GPU处执行从vGPU接收的GPU命令。
在KMD和渲染组件之间建立多个存储器存取信道。每一存储器存取信道对应于KMD处的不同虚拟节点。每一存储器存取信道被配置成在对应的虚拟节点与渲染组件之间传达GPU命令。UMD调度供在不同虚拟节点上执行的多个不同类型的操作。
本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如举例而言一个或多个处理器和系统存储器的计算机硬件,如以下更详细讨论的。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质:计算机存储介质(设备)和传输介质。
计算机存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM、固态驱动器(SSD)(如基于RAM)、闪存、相变存储器(PCM)、其他类型的存储器、其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为使得电子数据能够在计算机系统和/或模块和/或其它电子设备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置并可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质(设备)。因而,应当理解,计算机存储介质(设备)可被包括在还利用(甚至主要利用)传输介质的计算机系统组件中。
计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令例如可以是二进制代码、诸如汇编语言之类的中间格式指令或者甚至是源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。更具体而言,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、平板、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。
图1解说了促进用虚拟GPU执行并行操作的示例计算机架构100。参考图1,计算机架构100包括物理硬件102。物理硬件102可包括任何适合的硬件设备,诸如一个或多个通用处理器、系统存储器,等等。如所描绘的,物理硬件102包括物理GPU 104,并且可包括多个物理GPU。
物理GPU 104是被配置成执行并行处理任务(诸如图形渲染任务、视频加速等)的处理设备。如所描绘的,物理GPU 104包括节点104a。节点104a包括被配置成执行处理任务的一个或多个物理节点或引擎。节点104a可被称为是“非对称的”,因为每一节点被配置成处理不同类型的图形操作。节点104a可包括任何数目的节点,其可执行各种各样的操作类型。例如,一个节点可被配置成处理视频加速渲染命令(例如,视频加速(“DXVA”)节点),而另一节点可被配置成处理三维渲染命令。
计算机架构100还包括系统管理程序106。系统管理程序106在物理硬件102之上执行并且支持超虚拟化执行环境。超虚拟化执行环境包括多个分区。每一分区提供客软件在其中执行的隔离逻辑单元。如描绘的,计算机架构100包括根分区108和子分区110。
根分区108执行主机操作系统,并且具有对物理硬件102的直接访问(如物理硬件102上显现的根分区108所描绘的)。每一子分区提供用于执行客软件的执行环境(例如操作系统和/或应用)并且可以间接地访问物理硬件102(即,按超虚拟化方式)。也即,每一子分区向客软件提供一个或多个软件接口(例如,虚拟化硬件)。客软件进而使用软件接口来访问物理硬件102。计算机架构100可包括多个子分区。
根分区108内的渲染组件130被配置成在物理GPU 104上执行任何所请求的GPU功能。具体而言,渲染组件130被配置成调度供在物理GPU 104上执行的从子分区110的组件接收的任何物理GPU专用的图形命令,并且为执行那些命令创建合适上下文。例如,渲染组件130被配置成在物理GPU 104处创建用于执行图形命令的任何恰适合成设备(例如,表示桌面的合成设备)。
如所描绘的,子分区110包括客软件112、vGPU 116和图形运行时114。客软件112包括操作系统和/或在操作系统中执行的应用程序。图形运行时111可以是客软件的一部分,诸如被包括为操作系统的一部分的运行时。图形运行时114与一个或多个图形渲染框架相对应,并且提供使客软件112能够请求对受支持的渲染框架的GPU功能的执行的API。如所描绘的,图形运行时114可作为子分区110的用户模式的一部分和/或作为子分区110的内核模式的一部分来执行。
子分区110将vGPU 116暴露于图形运行时114,并且因而向客软件112提供通过图形运行时114对vGPU 116的访问。vGPU 116使物理GPU 104虚拟化,从而使得图形运行时114(以及客软件112)能够间接地访问物理GPU 104。由此,vGPU 116被配置成暴露物理GPU 104的全部功能或其功能的子集。
vGPU 116被配置成将一个或多个软件接口暴露于图形运行时114,其使得图形运行时114能够调用用于访问物理GPU 104的vGPU 116。vGPU 116进而结合根分区108中的渲染组件130来工作以在物理GPU 104上执行任何请求的GPU操作。
vGPU 116包括用户模式驱动器118(如所描绘的,其在子分区110的用户模式中执行)以及内核模式驱动器124(如所描绘的,其在子分区110的内核模式中执行)。用户模式驱动器118被配置成从收到的图形命令构造硬件上下文和命令缓冲器,并且将命令缓冲器传递到内核模式驱动器124以供进一步处理。具体地,用户模式驱动器118被配置成将图形运行时114发出的图形命令转换成硬件专用命令(即,物理GPU 101a专用的命令)。作为转换的一部分,用户模式驱动器118为物理GPU 104保留合适的硬件上下文。例如,用户模式驱动器118将影响渲染流水线的设置的逻辑值变换成值以及对应的物理设置。
内核模式驱动器124进而被配置成从用户模式驱动器118接收命令缓冲器(如用户模式驱动器118和内核模式驱动器124之间的箭头所指示的),并且构造对应的直接存储器存取(“DMA”)缓冲器。当是时候要由GPU 104处理DMA缓冲器时,内核模式驱动器124被配置成向渲染组件130提交DMA缓冲器以供在物理GPU 104处渲染。
用户模式驱动器118被配置成暴露一个或多个设备驱动器接口(“DDI”)120,其使得图形运行时114能够请求在物理GPU 104处执行GPU操作。如用户模式驱动器118和图形运行时114之间的箭头所描绘的,图形运行时114可以将图形命令发送给用户模式驱动器118并且用户模式驱动器118可以恰适地作出响应。用户模式驱动器118暴露与一个或多个渲染框架支持的GPU功能相对应的DDI 120。在一些实施例中,DDI 120包括与来自公司的渲染框架有关的DDI。在其它实施例中,DDI 120包括与不同渲染框架有关的DDI,诸如来自硅谷图形公司的渲染框架。
vGPU 116被配置成向图形运行时114暴露多个虚拟节点(或引擎)并且协调并行操作在虚拟节点上的调度。例如,如所描绘的,内核模式驱动器124包括虚拟节点126。每一虚拟节点对应于能够有效地与其它不同功能并行地执行的功能类型。每一虚拟节点包括独立于其它虚拟节点的不同DMA引擎。每一DMA引擎被配置成执行一个或多个其它组件(诸如用户模式驱动器118、图形运行时114或端口驱动器(未示出))触发的不同DMA操作。
虚拟节点126可包括一个或多个非对称虚拟节点(例如,可具有物理类比的节点),诸如执行渲染的渲染节点、和/或执行视频加速渲染命令的视频加速节点(例如,DXVA节点)。每一非对称虚拟节点执行就计算而言独立于另一虚拟节点执行的功能的完全不同类型的功能。
虚拟节点126可包括一个或多个虚拟对称节点(例如,不具有物理类比的节点),诸如执行从GPU存储器到系统存储器的存储器读取或者从系统存储器到GPU存储器的存储器写入的锁定/解锁节点。虚拟对称节点通常仅在特定操作的上下文内具有意义,并且通常在对称虚拟节点的上下文中使用。
内核模式驱动器124可包括与物理GPU 104处的节点104a不同的虚拟节点126的数目和配置。例如,即便节点104a仅包括单个节点,vGPU 116处的虚拟节点126可包括多个节点。由此,vGPU 116可通过在vGPU 116处执行交叠操作来提取某种并行化。因而,物理GPU104不必支持多个节点以便vGPU 116实现多个节点以及提升优于先前vGPU解决方案的性能。
如所指示的,虚拟节点126可包括不具有物理类比的一个或多个节点(对称节点)。例如,虚拟节点126中的辅助节点可在DMA中执行锁定/解锁存储器操作,或者虚拟节点126中的辅助节点可创建/初始化稍后用于渲染操作的资源。由此,虚拟节点126可包括执行非渲染类型操作的一个或多个节点。当然,可以利用各种各样的虚拟节点来反映和利用物理GPU 104处的所有节点104a。
如所描绘的,内核模式驱动器124和渲染组件130被配置成建立一个或多个DMA信道128。每一DMA信道128与虚拟节点126中的一个不同节点相对应。由此,DMA信道128包括其数目至少与虚拟节点126的数目一样多的信道。也可在渲染组件130和内核模式驱动器124之间建立其它通信信道,诸如一个或多个管理信道。在建立DMA信道128时,每一信道被指派唯一标识符。内核模式驱动器124和渲染组件130在使用信道时使用该唯一标识符。使用独立的信道和对应的唯一标识符阻止了虚拟节点126对使用DMA信道的竞争。
另外,用户模式驱动器118包括调度组件122。调度组件122被配置成调度供在虚拟节点126上执行的操作。具体地,当用户模式驱动器118从图形运行时114接收到图形命令(即,与DDI 120暴露的功能有关的图形命令)时,调度组件122被配置成选择特定DMA操作,这些特定DMA操作能够被并行化以将那些操作指派给虚拟节点126中的特定虚拟节点。
另外,调度组件122被配置成跨虚拟节点126来同步操作。在各个时间,第一虚拟节点在其能够继续之前可能需要在第二虚拟节点上完成渲染。当然,调度组件122能够跨两个以上的节点来同步操作。知晓虚拟节点126的配置以及要执行的操作的调度组件122被配置成以同步的方式调度虚拟节点126上的操作。
在一些实施例中,同步通过信令来达成。例如,同步组件122能够调度第一虚拟节点上的操作。第一虚拟节点被配置成当其操作完成时发出信号,随后等待来自第二虚拟节点的信号。这进而导致DMA信道上与第一虚拟节点相对应的信号,接着是需要由第二节点满足的等待。第二虚拟节点遵循类似的过程,其中它的信号接着的是要由来自第一虚拟节点满足的等待。
vGPU 116还处理栅栏报告。具体地,图形运行时114所请求的每一操作被指派唯一的栅栏标识符。使用栅栏标识符来定义图形运行时114预期以该顺序来接收操作结果的顺序。vGPU 116的用户模式驱动器118和内核模式驱动器124从图形运行时抽象出虚拟节点126的细节,并且确保当操作完成时,它们按照正确的栅栏顺序向图形运行时返回报告。
图2解说了用于在超虚拟化执行环境的子分区中提供非对称虚拟化GPU节点的一示例方法200的流程图。方法200将参考计算机架构100的组件和数据来描述。
方法200包括在超虚拟化执行环境的根分区内实例化渲染组件的动作,该渲染组件被配置成在物理GPU处执行接收到的GPU命令(动作202)。例如,渲染组件130能够在根分区108内实例化。渲染组件130能够通过在根分区108内执行来直接访问物理GPU 104,并且能够调度供在物理GPU 104上执行的从vGPU 116接收的操作。
方法200还包括在超虚拟化执行环境的子分区内实例化vGPU的动作,该vGPU被配置成虚拟化物理GPU,该vGPU包括:KMD,其包括多个虚拟节点,每一虚拟节点被配置成与一个或多个其它类型的操作并行地执行不同类型的操作;以及UMD,其被配置成调度供在虚拟节点上并行执行的不同类型的操作(动作204)。例如,vGPU 116能够在子分区110内实例化。vGPU 116可被配置成虚拟化物理GPU 104,并且为图形运行时114提供软件接口以请求在物理GPU 104处执行操作。vGPU包括内核模式驱动器124,其包括虚拟节点126。每一虚拟节点被配置成执行不同类型的操作。在虚拟节点126与节点104a之间可能存在一对一的对应关系,或者可能存在与节点104a不同的数目和类型的虚拟节点126。vGPU116还包括用户模式驱动器118。用户模式驱动器118包括调度组件122,其调度不同虚拟节点上的操作,并且跨所有节点来同步操作。
方法200还包括将KMS声明为多引擎GPU的动作(动作206)。例如,vGPU116能够将内核模式驱动器124声明为多引擎或多节点GPU,而非单引擎GPU,从而暴露内核模式驱动器124处的虚拟节点126。
方法200还包括在KMD与渲染组件之间建立多个存储器存取信道的动作,每一存储器存取信道对应于虚拟节点中的一个不同虚拟节点,并且被配置成在对应的虚拟节点与渲染组件之间传达GPU命令(动作208)。例如,渲染组件130和内核模式驱动器124可建立DMA信道128。具体地,DMA信道128可包括用于内核模式驱动器124处的每一虚拟节点126的独立DMA信道。每一DMA信道可被指派一不同的标识符。
方法200还包括调度供在虚拟节点中的一个不同虚拟节点上执行的多个不同类型操作中的每一个操作的动作(动作210)。例如,调度组件122可调度供在不同虚拟节点126上执行的多个不同类型的操作。这些操作可由图形运行时114请求,并且可源自客软件112。
本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。
Claims (15)
1.一种在包括一个或多个处理器以及系统存储器的计算机系统处用于在超虚拟化执行环境的子分区中提供非对称虚拟化GPU节点的方法,所述计算机系统还包括物理图形处理单元GPU,所述方法包括:
在所述超虚拟化执行环境的根分区内实例化渲染组件的动作,所述渲染组件被配置成在物理GPU处执行接收到的GPU命令;
在所述子分区内实例化虚拟GPU vGPU的动作,所述vGPU被配置成虚拟化所述物理GPU,所述vGPU包括:
内核模式驱动器KMD,其包括多个虚拟节点,每一虚拟节点被配置成与一个或多个其它类型的操作并行地执行不同类型的操作;以及
用户模式驱动器UMD,其被配置成调度供在所述虚拟节点上并行执行的不同类型的操作;
将所述KMD声明为多引擎GPU的动作;
在所述KMD与所述渲染组件之间建立多个存储器存取信道的动作,每一存储器存取信道对应于所述虚拟节点中的一个不同虚拟节点,并且被配置成在所述对应的虚拟节点与所述渲染组件之间传达GPU命令;以及
所述UMD调度多个不同类型的操作中的每一操作以供在所述虚拟节点中的一个不同虚拟节点上执行的动作。
2.如权利要求1所述的方法,其特征在于,所述KMD的所述多个虚拟节点超过所述物理GPU处的物理节点的数目。
3.如权利要求1所述的方法,其特征在于,所述UMD调度多个不同类型的操作中的每一操作以供在所述虚拟节点的一个不同虚拟节点上执行的动作包括所述UMD跟踪所述虚拟节点中的每一虚拟节点处正在执行哪一操作的动作。
4.如权利要求1所述的方法,其特征在于,所述UMD调度多个不同类型的操作中的每一操作以供在所述虚拟节点的一个不同虚拟节点上执行的动作包括所述UMD跨所述虚拟节点同步所述多个操作的执行的动作。
5.如权利要求4所述的方法,其特征在于,所述UMD跨所述虚拟节点同步所述多个操作的执行的动作包括:
所述UMD调度第一操作在第一节点上运行的动作;以及
所述UMD在完成所述第一操作之后调度依赖于所述第一操作的至少一个附加操作在一个或多个附加节点上运行的动作。
6.如权利要求5所述的方法,其特征在于,所述UMD调度所述至少一个附加操作的动作包括将所述第一节点配置成在所述第一操作完成时向所述一个或多个附加节点发出信号的动作。
7.如权利要求1所述的方法,其特征在于,所述多个不同类型的操作中的每一操作具有标识所述操作的顺序的栅栏标识符,所述方法进一步包括根据栅栏顺序报告所述多个不同类型的操作中的每一操作的完成的动作。
8.如权利要求1所述的方法,其特征在于,所述多个虚拟节点包括至少一个非对称虚拟节点和至少一个对称虚拟节点。
9.如权利要求1所述的方法,其特征在于,所述多个虚拟节点中的至少一个虚拟节点包括被配置成执行非渲染和非视频加速操作类型的虚拟节点。
10.一种在超虚拟化执行环境的子分区中提供非对称虚拟化GPU节点的系统,所述系统包括以下:
用于在所述超虚拟化执行环境的根分区内实例化渲染组件的装置,所述渲染组件被配置成在物理GPU处执行接收到的GPU命令;
用于在所述子分区内实例化虚拟GPU vGPU的装置,所述vGPU被配置成虚拟化所述物理GPU,所述vGPU包括:
内核模式驱动器KMD,其包括多个虚拟节点,每一虚拟节点被配置成与一个或多个其它类型的操作并行地执行不同类型的操作;以及
用户模式驱动器UMD,其被配置成调度供在所述虚拟节点上并行执行的不同类型的操作;
用于将所述KMD声明为多引擎GPU的装置;
用于在所述KMD与所述渲染组件之间建立多个存储器存取信道的装置,每一存储器存取信道对应于所述虚拟节点中的一个不同虚拟节点,并且被配置成在所述对应的虚拟节点与所述渲染组件之间传达GPU命令;以及
用于由所述UMD调度多个不同类型的操作中的每一操作以供在所述虚拟节点中的一个不同虚拟节点上执行的装置。
11.如权利要求10所述的系统,其特征在于,每一虚拟节点包括与任何其它虚拟节点分开执行一个或多个操作的不同直接存储器存取DMA引擎。
12.如权利要求10所述的系统,其特征在于,所述虚拟节点中的至少一个虚拟节点不具有所述物理GPU处的对应物理节点。
13.如权利要求12所述的系统,其特征在于,不具有所述物理GPU处的对应物理节点的所述虚拟节点包括在所述物理GPU与系统存储器之间执行存储器操作的锁定/解锁节点。
14.如权利要求10所述的系统,其特征在于,所述虚拟节点中的至少一个虚拟节点具有所述物理GPU处的对应物理节点。
15.一种计算机系统,所述计算机系统包括:
一个或多个处理器;
系统存储器;
一个或多个图形处理单元GPU;以及
存储表示多个组件的计算机可执行指令的一个或多个计算机存储介质,包括:
渲染组件,所述渲染组件被配置成在超虚拟化执行环境的根分区内执行并且在物理GPU处执行GPU命令;以及
虚拟GPU vGPU,所述vGPU被配置成在所述超虚拟化执行环境的子分区内执行并且虚拟化所述物理GPU,所述vGPU包括:
内核模式驱动器KMD,所述KMD被配置成通过至少将多个虚拟节点暴露于图形运行时来将其自身声明为多引擎GPU,每一虚拟节点被配置成与一个或多个其它类型的操作并行地执行不同类型的操作,所述KMD还被配置成与所述渲染组件建立多个存储器存取信道,每一存储器存取信道与所述虚拟节点中的一个不同虚拟节点相对应并且被配置成将GPU命令传达至所述渲染组件以供在所述物理GPU处执行;以及
用户模式驱动器UMD,所述UMD被配置成调度供在所述虚拟节点上并行执行的不同类型的操作并且跨所述虚拟节点同步这些操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/355,790 US8692832B2 (en) | 2012-01-23 | 2012-01-23 | Para-virtualized asymmetric GPU processors |
US13/355,790 | 2012-01-23 | ||
PCT/US2013/021507 WO2013112314A1 (en) | 2012-01-23 | 2013-01-15 | Para-virtualized asymmetric gpu processors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104094224A CN104094224A (zh) | 2014-10-08 |
CN104094224B true CN104094224B (zh) | 2017-05-17 |
Family
ID=48796855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380006386.0A Active CN104094224B (zh) | 2012-01-23 | 2013-01-15 | 用于超虚拟化的非对称gpu处理器的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8692832B2 (zh) |
EP (1) | EP2807555B1 (zh) |
CN (1) | CN104094224B (zh) |
WO (1) | WO2013112314A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8570318B2 (en) | 2011-08-25 | 2013-10-29 | Intel Corporation | Collaborative graphics rendering using mobile devices to support remote display |
US20140373005A1 (en) * | 2013-06-12 | 2014-12-18 | Nvidia Corporation | Requirement based exposure of engines of a graphics processing unit (gpu) to a virtual machine (vm) consolidated on a computing platform |
CN105830026B (zh) * | 2013-11-27 | 2020-09-15 | 英特尔公司 | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 |
US20150278512A1 (en) * | 2014-03-28 | 2015-10-01 | Intel Corporation | Virtualization based intra-block workload isolation |
CN107533463A (zh) * | 2015-03-18 | 2018-01-02 | 英特尔公司 | 用于软件不可知多gpu处理的设备和方法 |
US10089706B1 (en) * | 2015-09-23 | 2018-10-02 | EMC IP Holding Company LLC | GPU virtual device driver for offload processing in a storage array |
EP3722947A1 (en) * | 2019-04-12 | 2020-10-14 | Aptiv Technologies Limited | Distributed system for displaying a content |
US11900156B2 (en) | 2019-09-24 | 2024-02-13 | Speedata Ltd. | Inter-thread communication in multi-threaded reconfigurable coarse-grain arrays |
US11175922B1 (en) | 2020-04-28 | 2021-11-16 | Speedata Ltd. | Coarse-grain reconfigurable array processor with concurrent handling of multiple graphs on a single grid |
US11354157B2 (en) | 2020-04-28 | 2022-06-07 | Speedata Ltd. | Handling multiple graphs, contexts and programs in a coarse-grain reconfigurable array processor |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1751297A (zh) * | 2002-12-17 | 2006-03-22 | 甲骨文国际公司 | 用直接存储器存取在两台或更多机器之间执行数据库操作 |
CN101894044A (zh) * | 2003-02-18 | 2010-11-24 | 微软公司 | 用于调度协处理器的处理的方法和系统 |
CN101978352A (zh) * | 2007-12-13 | 2011-02-16 | 先进微装置公司 | 用于具有多重图形子系统、减少的功率消耗模式的计算装置的驱动程序架构、软件和方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890660A (zh) | 2003-11-19 | 2007-01-03 | 路西德信息技术有限公司 | Pc总线上的多重三维图形管线的方法及系统 |
US20080074429A1 (en) | 2003-11-19 | 2008-03-27 | Reuven Bakalash | Multi-mode parallel graphics rendering system (MMPGRS) supporting real-time transition between multiple states of parallel rendering operation in response to the automatic detection of predetermined operating conditions |
US7623732B1 (en) * | 2005-04-26 | 2009-11-24 | Mercury Computer Systems, Inc. | Method and apparatus for digital image filtering with discrete filter kernels using graphics hardware |
TWI322354B (en) * | 2005-10-18 | 2010-03-21 | Via Tech Inc | Method and system for deferred command issuing in a computer system |
US9275430B2 (en) | 2006-12-31 | 2016-03-01 | Lucidlogix Technologies, Ltd. | Computing system employing a multi-GPU graphics processing and display subsystem supporting single-GPU non-parallel (multi-threading) and multi-GPU application-division parallel modes of graphics processing operation |
US20090305790A1 (en) | 2007-01-30 | 2009-12-10 | Vitie Inc. | Methods and Apparatuses of Game Appliance Execution and Rendering Service |
US8266337B2 (en) * | 2007-12-06 | 2012-09-11 | International Business Machines Corporation | Dynamic logical data channel assignment using channel bitmap |
US9615049B2 (en) * | 2008-04-10 | 2017-04-04 | Imagine Communications Corp. | Video multiviewer system providing direct video data transfer to graphics processing unit (GPU) memory and related methods |
US20100115510A1 (en) | 2008-11-03 | 2010-05-06 | Dell Products, Lp | Virtual graphics device and methods thereof |
US20100110089A1 (en) | 2008-11-06 | 2010-05-06 | Via Technologies, Inc. | Multiple GPU Context Synchronization Using Barrier Type Primitives |
US8711159B2 (en) | 2009-02-23 | 2014-04-29 | Microsoft Corporation | VGPU: a real time GPU emulator |
US8629878B2 (en) * | 2009-08-26 | 2014-01-14 | Red Hat, Inc. | Extension to a hypervisor that utilizes graphics hardware on a host |
US9092249B2 (en) * | 2009-09-11 | 2015-07-28 | Citrix Systems, Inc. | Remote rendering of three-dimensional images using virtual machines |
US20110102443A1 (en) * | 2009-11-04 | 2011-05-05 | Microsoft Corporation | Virtualized GPU in a Virtual Machine Environment |
-
2012
- 2012-01-23 US US13/355,790 patent/US8692832B2/en active Active
-
2013
- 2013-01-15 WO PCT/US2013/021507 patent/WO2013112314A1/en active Application Filing
- 2013-01-15 EP EP13741262.3A patent/EP2807555B1/en active Active
- 2013-01-15 CN CN201380006386.0A patent/CN104094224B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1751297A (zh) * | 2002-12-17 | 2006-03-22 | 甲骨文国际公司 | 用直接存储器存取在两台或更多机器之间执行数据库操作 |
CN101894044A (zh) * | 2003-02-18 | 2010-11-24 | 微软公司 | 用于调度协处理器的处理的方法和系统 |
CN101978352A (zh) * | 2007-12-13 | 2011-02-16 | 先进微装置公司 | 用于具有多重图形子系统、减少的功率消耗模式的计算装置的驱动程序架构、软件和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20130187932A1 (en) | 2013-07-25 |
CN104094224A (zh) | 2014-10-08 |
WO2013112314A1 (en) | 2013-08-01 |
US8692832B2 (en) | 2014-04-08 |
EP2807555A1 (en) | 2014-12-03 |
EP2807555B1 (en) | 2018-07-11 |
EP2807555A4 (en) | 2015-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104094224B (zh) | 用于超虚拟化的非对称gpu处理器的方法和系统 | |
CN104067230B (zh) | 用于准虚拟化高性能计算和gdi加速的方法和系统 | |
CN101128807B (zh) | 用于扩充中断控制器和合成中断来源的系统和方法 | |
CN104205050B (zh) | 访问远程机器上的设备 | |
CN104040494B (zh) | 准虚拟化的域着色器、外壳着色器和几何着色器 | |
CN102754076B (zh) | 用于在虚拟化环境中处理i/o操作的方法和设备 | |
EP3627319B1 (en) | Display resource scheduling method and device for embedded system | |
CN106797388A (zh) | 跨系统多媒体数据编解码方法、装置、电子设备和计算机程序产品 | |
CN105830026A (zh) | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 | |
CN101268445A (zh) | 用于分区的多处理器系统的实时线程服务 | |
CN106164881A (zh) | 异构计算系统中的工作窃取 | |
CN102597958A (zh) | 虚拟机的对称实时迁移 | |
CN111694675B (zh) | 任务调度方法及装置、存储介质 | |
CN107463357A (zh) | 任务调度系统、调度方法、制动仿真系统及仿真方法 | |
CN100489830C (zh) | 面向科学计算的64位流处理器芯片 | |
CN105556473A (zh) | 一种i/o任务处理的方法、设备和系统 | |
CN106598696A (zh) | 一种虚拟机之间数据交互的方法及装置 | |
CN104360962B (zh) | 匹配于高性能计算机结构的多级嵌套数据传输方法与系统 | |
KR102014670B1 (ko) | 서브그룹 간 데이터 공유 | |
CN118043773A (zh) | 不受操作数在存储器中的存储位置限制对矩阵操作数进行运算 | |
CN105229622B (zh) | 应用和硬件设备之间的通信系统和方法 | |
CN104199642B (zh) | 一种在目标平台运行原平台代码的实现方法及装置 | |
US11061654B1 (en) | Synchronization of concurrent computation engines | |
CN102662730A (zh) | 并行多核虚拟机的原子指令模拟方法及虚拟机装置 | |
CN104866295B (zh) | OpenCL运行时系统框架的设计方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150717 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150717 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |