CN104094224A - 超虚拟化非对称gpu处理器 - Google Patents

超虚拟化非对称gpu处理器 Download PDF

Info

Publication number
CN104094224A
CN104094224A CN201380006386.0A CN201380006386A CN104094224A CN 104094224 A CN104094224 A CN 104094224A CN 201380006386 A CN201380006386 A CN 201380006386A CN 104094224 A CN104094224 A CN 104094224A
Authority
CN
China
Prior art keywords
node
gpu
dummy node
dummy
virtual
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.)
Granted
Application number
CN201380006386.0A
Other languages
English (en)
Other versions
CN104094224B (zh
Inventor
M·P·马拉卡帕里
S·R·帕特里克
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN104094224A publication Critical patent/CN104094224A/zh
Application granted granted Critical
Publication of CN104094224B publication Critical patent/CN104094224B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/4555Para-virtualisation, i.e. guest operating system has to be modified
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/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处理器
背景
1.背景和相关技术
计算机系统及相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。现在,计算机系统通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排、帐目管理等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统及其他电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行分布在多个不同的计算机系统和/或多个不同的计算环境中。
一些计算机被配置成提供超虚拟化执行环境,超虚拟化执行环境允许客软件以隔离方式共享单个计算机系统的硬件设备。一般而言,超虚拟化执行环境包括受系统管理程序支持的多个分区。每一分区提供供软件在其中执行的隔离执行环境。分区一般包括根分区以及一个或多个子分区。根分区运行主机操作系统并管理虚拟化栈。根分区可获得对物理设备的访问。每一子分区托管客软件(例如,客操作系统和客应用)。通过虚拟设备和系统管理程序的软件接口向子分区提供对物理设备的访问。
一些超虚拟化执行环境给子分区(以及在其中运行的客软件)提供对一个或多个物理图形处理单元(“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包括物理GPU104,并且可包括多个物理GPU。
物理GPU104是被配置成执行并行处理任务(诸如图形渲染任务、视频加速等)的处理设备。如所描绘的,物理GPU104包括节点104a。节点104a包括被配置成执行处理任务的一个或多个物理节点或引擎。节点104a可被称为是“非对称的”,因为每一节点被配置成处理不同类型的图形操作。节点104a可包括任何数目的节点,其可执行各种各样的操作类型。例如,一个节点可被配置成处理视频加速渲染命令(例如,视频加速(“DXVA”)节点),而另一节点可被配置成处理三维渲染命令。
计算机架构100还包括系统管理程序106。系统管理程序106在物理硬件102之上执行并且支持超虚拟化执行环境。超虚拟化执行环境包括多个分区。每一分区提供客软件在其中执行的隔离逻辑单元。如描绘的,计算机架构100包括根分区108和子分区110。
根分区108执行主机操作系统,并且具有对物理硬件102的直接访问(如物理硬件102上显现的根分区108所描绘的)。每一子分区提供用于执行客软件的执行环境(例如操作系统和/或应用)并且可以间接地访问物理硬件102(即,按超虚拟化方式)。也即,每一子分区向客软件提供一个或多个软件接口(例如,虚拟化硬件)。客软件进而使用软件接口来访问物理硬件102。计算机架构100可包括多个子分区。
根分区108内的渲染组件130被配置成在物理GPU104上执行任何所请求的GPU功能。具体而言,渲染组件130被配置成调度供在物理GPU104上执行的从子分区110的组件接收的任何物理GPU专用的图形命令,并且为执行那些命令创建合适上下文。例如,渲染组件130被配置成在物理GPU104处创建用于执行图形命令的任何恰适合成设备(例如,表示桌面的合成设备)。
如所描绘的,子分区110包括客软件112、vGPU116和图形运行时114。客软件112包括操作系统和/或在操作系统中执行的应用程序。图形运行时111可以是客软件的一部分,诸如被包括为操作系统的一部分的运行时。图形运行时114与一个或多个图形渲染框架相对应,并且提供使客软件112能够请求对受支持的渲染框架的GPU功能的执行的API。如所描绘的,图形运行时114可作为子分区110的用户模式的一部分和/或作为子分区110的内核模式的一部分来执行。
子分区110将vGPU116暴露于图形运行时114,并且因而向客软件112提供通过图形运行时114对vGPU116的访问。vGPU116使物理GPU104虚拟化,从而使得图形运行时114(以及客软件112)能够间接地访问物理GPU104。由此,vGPU116被配置成暴露物理GPU104的全部功能或其功能的子集。
vGPU116被配置成将一个或多个软件接口暴露于图形运行时114,其使得图形运行时114能够调用用于访问物理GPU104的vGPU116。vGPU116进而结合根分区108中的渲染组件130来工作以在物理GPU104上执行任何请求的GPU操作。
vGPU116包括用户模式驱动器118(如所描绘的,其在子分区110的用户模式中执行)以及内核模式驱动器124(如所描绘的,其在子分区110的内核模式中执行)。用户模式驱动器118被配置成从收到的图形命令构造硬件上下文和命令缓冲器,并且将命令缓冲器传递到内核模式驱动器124以供进一步处理。具体地,用户模式驱动器118被配置成将图形运行时114发出的图形命令转换成硬件专用命令(即,物理GPU101a专用的命令)。作为转换的一部分,用户模式驱动器118为物理GPU104保留合适的硬件上下文。例如,用户模式驱动器118将影响渲染流水线的设置的逻辑值变换成值以及对应的物理设置。
内核模式驱动器124进而被配置成从用户模式驱动器118接收命令缓冲器(如用户模式驱动器118和内核模式驱动器124之间的箭头所指示的),并且构造对应的直接存储器存取(“DMA”)缓冲器。当是时候要由GPU104处理DMA缓冲器时,内核模式驱动器124被配置成向渲染组件130提交DMA缓冲器以供在物理GPU104处渲染。
用户模式驱动器118被配置成暴露一个或多个设备驱动器接口(“DDI”)120,其使得图形运行时114能够请求在物理GPU104处执行GPU操作。如用户模式驱动器118和图形运行时114之间的箭头所描绘的,图形运行时114可以将图形命令发送给用户模式驱动器118并且用户模式驱动器118可以恰适地作出响应。用户模式驱动器118暴露与一个或多个渲染框架支持的GPU功能相对应的DDI120。在一些实施例中,DDI120包括与来自微公司的渲染框架有关的DDI。在其它实施例中,DDI120包括与不同渲染框架有关的DDI,诸如来自硅谷图形公司的渲染框架。
vGPU116被配置成向图形运行时114暴露多个虚拟节点(或引擎)并且协调并行操作在虚拟节点上的调度。例如,如所描绘的,内核模式驱动器124包括虚拟节点126。每一虚拟节点对应于能够有效地与其它不同功能并行地执行的功能类型。每一虚拟节点包括独立于其它虚拟节点的不同DMA引擎。每一DMA引擎被配置成执行一个或多个其它组件(诸如用户模式驱动器118、图形运行时114或端口驱动器(未示出))触发的不同DMA操作。
虚拟节点126可包括一个或多个非对称虚拟节点(例如,可具有物理类比的节点),诸如执行渲染的渲染节点、和/或执行视频加速渲染命令的视频加速节点(例如,DXVA节点)。每一非对称虚拟节点执行就计算而言独立于另一虚拟节点执行的功能的完全不同类型的功能。
虚拟节点126可包括一个或多个虚拟对称节点(例如,不具有物理类比的节点),诸如执行从GPU存储器到系统存储器的存储器读取或者从系统存储器到GPU存储器的存储器写入的锁定/解锁节点。虚拟对称节点通常仅在特定操作的上下文内具有意义,并且通常在对称虚拟节点的上下文中使用。
内核模式驱动器124可包括与物理GPU104处的节点104a不同的虚拟节点126的数目和配置。例如,即便节点104a仅包括单个节点,vGPU116处的虚拟节点126可包括多个节点。由此,vGPU116可通过在vGPU116处执行交叠操作来提取某种并行化。因而,物理GPU104不必支持多个节点以便vGPU116实现多个节点以及提升优于先前vGPU解决方案的性能。
如所指示的,虚拟节点126可包括不具有物理类比的一个或多个节点(对称节点)。例如,虚拟节点126中的辅助节点可在DMA中执行锁定/解锁存储器操作,或者虚拟节点126中的辅助节点可创建/初始化稍后用于渲染操作的资源。由此,虚拟节点126可包括执行非渲染类型操作的一个或多个节点。当然,可以利用各种各样的虚拟节点来反映和利用物理GPU104处的所有节点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接收到图形命令(即,与DDI120暴露的功能有关的图形命令)时,调度组件122被配置成选择特定DMA操作,这些特定DMA操作能够被并行化以将那些操作指派给虚拟节点126中的特定虚拟节点。
另外,调度组件122被配置成跨虚拟节点126来同步操作。在各个时间,第一虚拟节点在其能够继续之前可能需要在第二虚拟节点上完成渲染。当然,调度组件122能够跨两个以上的节点来同步操作。知晓虚拟节点126的配置以及要执行的操作的调度组件122被配置成以同步的方式调度虚拟节点126上的操作。
在一些实施例中,同步通过信令来达成。例如,同步组件122能够调度第一虚拟节点上的操作。第一虚拟节点被配置成当其操作完成时发出信号,随后等待来自第二虚拟节点的信号。这进而导致DMA信道上与第一虚拟节点相对应的信号,接着是需要由第二节点满足的等待。第二虚拟节点遵循类似的过程,其中它的信号接着的是要由来自第一虚拟节点满足的等待。
vGPU116还处理栅栏报告。具体地,图形运行时114所请求的每一操作被指派唯一的栅栏标识符。使用栅栏标识符来定义图形运行时114预期以该顺序来接收操作结果的顺序。vGPU116的用户模式驱动器118和内核模式驱动器124从图形运行时抽象出虚拟节点126的细节,并且确保当操作完成时,它们按照正确的栅栏顺序向图形运行时返回报告。
图2解说了用于在超虚拟化执行环境的子分区中提供非对称虚拟化GPU节点的一示例方法200的流程图。方法200将参考计算机架构100的组件和数据来描述。
方法200包括在超虚拟化执行环境的根分区内实例化渲染组件的动作,该渲染组件被配置成在物理GPU处执行接收到的GPU命令(动作202)。例如,渲染组件130能够在根分区108内实例化。渲染组件130能够通过在根分区108内执行来直接访问物理GPU104,并且能够调度供在物理GPU104上执行的从vGPU116接收的操作。
方法200还包括在超虚拟化执行环境的子分区内实例化vGPU的动作,该vGPU被配置成虚拟化物理GPU,该vGPU包括:KMD,其包括多个虚拟节点,每一虚拟节点被配置成与一个或多个其它类型的操作并行地执行不同类型的操作;以及UMD,其被配置成调度供在虚拟节点上并行执行的不同类型的操作(动作204)。例如,vGPU116能够在子分区110内实例化。vGPU116可被配置成虚拟化物理GPU104,并且为图形运行时114提供软件接口以请求在物理GPU104处执行操作。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被配置成调度供在所述虚拟节点上并行执行的不同类型的操作并且跨所述虚拟节点同步这些操作。
CN201380006386.0A 2012-01-23 2013-01-15 用于超虚拟化的非对称gpu处理器的方法和系统 Active CN104094224B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/355,790 2012-01-23
US13/355,790 US8692832B2 (en) 2012-01-23 2012-01-23 Para-virtualized asymmetric GPU processors
PCT/US2013/021507 WO2013112314A1 (en) 2012-01-23 2013-01-15 Para-virtualized asymmetric gpu processors

Publications (2)

Publication Number Publication Date
CN104094224A true CN104094224A (zh) 2014-10-08
CN104094224B 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107533463A (zh) * 2015-03-18 2018-01-02 英特尔公司 用于软件不可知多gpu处理的设备和方法
CN111768330A (zh) * 2019-03-30 2020-10-13 华为技术有限公司 图像处理方法及计算机系统
CN111813355A (zh) * 2019-04-12 2020-10-23 Aptiv技术有限公司 用于显示内容的分布式系统

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013028202A1 (en) 2011-08-25 2013-02-28 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
WO2015080719A1 (en) * 2013-11-27 2015-06-04 Intel Corporation Apparatus and method for scheduling graphics processing unit workloads from virtual machines
US20150278512A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Virtualization based intra-block workload isolation
US10089706B1 (en) * 2015-09-23 2018-10-02 EMC IP Holding Company LLC GPU virtual device driver for offload processing in a storage array
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

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7406481B2 (en) * 2002-12-17 2008-07-29 Oracle International Corporation Using direct memory access for performing database operations between two or more machines
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7808499B2 (en) 2003-11-19 2010-10-05 Lucid Information Technology, Ltd. PC-based computing system employing parallelized graphics processing units (GPUS) interfaced with the central processing unit (CPU) using a PC bus and a hardware graphics hub having a router
US20080094404A1 (en) 2003-11-19 2008-04-24 Reuven Bakalash Computing system having multi-mode parallel graphics rendering subsystem including multiple graphics processing pipelines (GPPLS) and supporting automated division of graphics commands and data during automatic mode control
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
JP5427187B2 (ja) * 2007-12-13 2014-02-26 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 複数のグラフィックサブシステムおよび低電力消費モードを有するコンピューティングデバイス用ドライバアーキテクチャ、ソフトウェアおよび方法
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
WO2011032114A1 (en) * 2009-09-11 2011-03-17 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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107533463A (zh) * 2015-03-18 2018-01-02 英特尔公司 用于软件不可知多gpu处理的设备和方法
CN111768330A (zh) * 2019-03-30 2020-10-13 华为技术有限公司 图像处理方法及计算机系统
CN111813355A (zh) * 2019-04-12 2020-10-23 Aptiv技术有限公司 用于显示内容的分布式系统
CN111813355B (zh) * 2019-04-12 2024-03-22 Aptiv制造管理服务公司 用于显示内容的分布式系统

Also Published As

Publication number Publication date
EP2807555B1 (en) 2018-07-11
US20130187932A1 (en) 2013-07-25
WO2013112314A1 (en) 2013-08-01
US8692832B2 (en) 2014-04-08
EP2807555A1 (en) 2014-12-03
CN104094224B (zh) 2017-05-17
EP2807555A4 (en) 2015-10-07

Similar Documents

Publication Publication Date Title
CN104094224A (zh) 超虚拟化非对称gpu处理器
CN101268445B (zh) 用于向多核环境中的应用程序提供实时线程服务的方法、装置
CN107766148B (zh) 一种异构集群及任务处理方法和装置
CN104067230A (zh) 准虚拟化高性能计算和gdi加速
CN101128807B (zh) 用于扩充中断控制器和合成中断来源的系统和方法
CN106797388B (zh) 跨系统多媒体数据编解码方法、装置、电子设备和计算机程序产品
CN104205050B (zh) 访问远程机器上的设备
CN103530167A (zh) 一种虚拟机内存数据的迁移方法及相关装置和集群系统
WO2018119951A1 (zh) Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品
CN104040494A (zh) 准虚拟化的域着色器、外壳着色器和几何着色器
US11010859B2 (en) Display resource scheduling method and device for embedded system
CN106796530B (zh) 一种虚拟化方法、装置、及电子设备、计算机程序产品
CN102915285A (zh) 虚拟化环境中的应用加速
JP2005235019A5 (zh)
CN111796921B (zh) 嵌入式多核操作系统调度方法、调度装置、电子设备及存储介质
CN107678752A (zh) 一种面向异构集群的任务处理方法及装置
US10761822B1 (en) Synchronization of computation engines with non-blocking instructions
CN109656646B (zh) 一种远程桌面控制方法、装置、设备及虚拟化芯片
US11175919B1 (en) Synchronization of concurrent computation engines
US10467078B2 (en) Crash dump extraction of guest failure
US11467946B1 (en) Breakpoints in neural network accelerator
US20140245291A1 (en) Sharing devices assigned to virtual machines using runtime exclusion
CN101739284A (zh) 一种计算机以及信息处理方法
US10922146B1 (en) Synchronization of concurrent computation engines
US11061654B1 (en) Synchronization of concurrent computation engines

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