CN105830026B - 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 - Google Patents
用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 Download PDFInfo
- Publication number
- CN105830026B CN105830026B CN201380080556.XA CN201380080556A CN105830026B CN 105830026 B CN105830026 B CN 105830026B CN 201380080556 A CN201380080556 A CN 201380080556A CN 105830026 B CN105830026 B CN 105830026B
- Authority
- CN
- China
- Prior art keywords
- gpu
- engine
- memory
- microcontroller
- scheduled
- 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
Images
Classifications
-
- 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/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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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
-
- 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/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Advance Control (AREA)
Abstract
在实施例中,一种系统包括图形处理单元(GPU)和微控制器,所述图形处理单元包括一个或多个GPU引擎。所述微控制器将要为多个虚拟机(VM)中的每个虚拟机指派相应的调度时间片。当特定的VM被调度以使用第一GPU引擎时,特定的VM独占使用第一GPU引擎。描述并请求保护了其它实施例。
Description
技术领域
实施例与调度来自虚拟机的图形处理器单元工作负荷有关。
背景技术
在现代计算系统中,客户端操作系统的虚拟化是一种趋势。虚拟化的计算平台可具有多个虚拟机(VM),并且在特定的时间段期间,单个对应的VM可能看起来像是具有计算硬件的完全使用。
虚拟化可与图形密集型应用和工作负荷一起使用,这可能会增加对于图形处理单元(GPU)虚拟化技术的需求。可通过由虚拟机管理器(VMM)将GPU“传递”到单个VM来实现对于GPU的全部能力的使用。虽然传递性能是良好的,但是它基本上被限于特定GPU至特定VM的一对一映射。
附图说明
图1是根据本发明实施例的用来使能由多个VM调度使用GPU的系统。
图2是根据本发明实施例的在分区之前和适当分区情况下的图形存储器的框图。
图3是将要在GPU上执行的、执行源于各种虚拟机的工作负荷的方法的流程图。
图4示出了根据本发明实施例的处理器的框图。
图5是根据本发明实施例的多域处理器的框图。
图6是根据本发明实施例的系统的框图。
具体实施方式
可通过由多个虚拟机共享使用单个GPU来实现GPU(例如图形应用程序接口(API)、媒体API以及计算API)的能力。
GPU工作负荷处理的传统模型依赖于单个图形和媒体软件栈以及提交点来按优先序排列和调度GPU。共享使用GPU典型地借助于软件(SW)管理器来进行,例如具有可提供例如特定三维API的加速给VM的软件能力的虚拟机管理器(VMM)。VMM SW可管理来自多个客户VM的工作负荷和API调用到一个中心域(例如主机操作系统或服务域)中的聚集,借助于所述中心域,物理GPU和相关联的SW驱动器是可用的。然而,软件管理器可能会在工作负荷从VM使用的API到对于在主机操作系统(OS)或服务域中的VMM SW栈可用的API的迁移中引入挑战和复杂性。
为了减少与用于GPU工作负荷调度的传统模型相关联的等待时间并且为了提供灵活使用用于非图形应用(例如计算应用)的GPU,可使用嵌入式微控制器(“微控制器”、“图形微控制器”或者“GPU微控制器”),所述嵌入式微控制器能够并发地(例如并行地)为多个应用或操作系统级工作队列提供服务。在一些实施例中,GPU微控制器可位于GPU(例如嵌入式微控制器)内。在一些实施例中,GPU微控制器可与GPU耦合或者包括在GPU内。在一些实施例中,微控制器可以是硬件微控制器。额外的计算效率和使用GPU能力的增强的多样性可以由每个VM使用对应的设备驱动器与GPU进行接口引起。
图形微控制器可调度将要在多个VM内并且跨多个VM并发地(例如并行地)执行的工作负荷。另外,图形微控制器可维护对于每个VM来说是唯一的对应GPU状态,例如与VM相关联的GPU配置参数的集合。当GPU工作负荷执行从第一VM调度迁移至第二VM时,图形微控制器可保存来自GPU的对于第一VM来说是唯一的GPU状态并且提供(或恢复)第二VM的对应GPU状态至该GPU。在实施例中,图形微控制器可将GPU的每一个配置保存在基于存储器的存储设备中,例如虚拟或物理寄存器的一个或多个集合,并且可将特定VM的特定GPU状态提供或恢复至该GPU,特定GPU状态对应于已经便于从特定VM传输一个或多个GPU工作负荷的驱动器接口(vdriver)。可从GPU可访问的存储器保存/恢复每个VM的GPU状态。在实施例中,GPU和处理器可访问的存储器(例如孔(aperture)存储器)可被用于GPU状态存储并且用于将工作负荷传递至GPU。存储的工作负荷可包括命令和数据,并且GPU存储的状态可包括来自在处理器上运行的VM应用、操作系统或驱动器的一个或多个较早保存的状态。VMM SW可配置(例如存储在处理器存储器中或GPU存储器中的)每个VM的GPU状态的可用性并且可使得与特定VM相关联的特定GPU状态对微控制器可用。特定VM的GPU状态(“每VM GPU状态”)可被图形微控制器使用来在执行由特定VM提供的工作负荷的准备中重新配置GPU,所述特定VM随后将在调度的时间间隔暂时但独占使用GPU(或它的部分)。
参见图1,示出了根据本发明实施例的用来使能通过多个VM调度使用GPU的系统100。系统100包括GPU微控制器102、孔(aperture)存储器140、vdriver接口106、用来与GPU130的工作负荷队列控制器(未示出)交互的存储器映射的输入/输出(MMIO)108机制、以及多个客户VM1101、1102(、…110n),它们中的每一个具有对应的超虚拟化的GPU驱动器(pdriver)1121、1122(、…112n)。在一些实施例中,工作负荷队列控制器可以是GPU 130内的硬件。GPU微控制器102耦合至GPU 130(或它的部件),它可以包括不同的子部件,例如但不限于,由来自命令流装置(command streamer)134的命令供给的渲染引擎132、由命令流装置138供给的媒体效果引擎136以及由命令流装置144供给的视频编码引擎142。在其它实施例中,GPU 130可具有更多的引擎或更少的引擎,它们中的每一个可被设计成处理一个或多个特定类型的任务/工作负荷。
在操作中,GPU微控制器102可调度将要由GPU 130执行的客户VM 1101、1102、…、110n中的每一个的工作负荷。根据由GPU微控制器102执行的调度,每个VM 1101、1102、…、110n可以在对应的调度时间片(slot)中被调度以独占地使用GPU 102或它的一部分,例如渲染引擎132、媒体效果引擎134、视频编码引擎142或者GPU130的其它引擎或部分。例如,VM1101可在第一调度时间片中被调度以独占地使用GPU102并且执行将要由GPU 130执行的第一工作负荷,例如由VM 1101提供的第一指令集合。在由GPU 102执行第一工作负荷之前,GPU微控制器102可检索第一GPU状态,例如对于VM 1101来说特定的第一参数值集合,利用它来配置GPU 130。因此,可在执行从VM 1101发出的第一工作负荷之前配置GPU 130。第一GPU状态可以在先前由vdriver接口106存储在例如孔存储器140中(例如存储器部分150内或者GPU微控制器102可访问的其它存储器内)。VM 1101-110n中的每一个可具有由vdriver接口106存储(例如在存储器部分150中)的对应的参数值(GPU状态)集合。当特定VMi被调度以使用GPU 130(或它的部分)时,在由GPU 130或它的部分执行任务之前,可由GPU微控制器102与vdriver接口106配合来再调用VMi的GPU状态以提供或恢复GPU 130(或它的部分)的对应配置。
每个VMi(i=1至n)可被vdriver接口106指派存储器140的对应部分,例如存储器部分146、148或者另一存储器部分(未示出),并且存储器部分指派的配置可由vdriver接口106指示给GPU微控制器102。当特定VM(例如VM 1101)被调度以独占地使用GPU 130时,在将要在GPU 130(或它的部分)上执行的任务的执行期间,GPU 130的存储器访问可被限制到存储器140的对应部分或多个部分(例如存储器部分146),所述任务由VM 1101借助于传递给GPU 130的命令来提供,例如通过孔存储器140或者借助于其它机制。
对系统存储器的访问可通过DMA转换引擎(未示出)进行转换,DMA转换引擎有助于在GPU 130的编程中使用的VM地址转换至由GPU 130使用的系统地址。针对特定VM的转换(多个转换)可通过使用与特定虚拟接口、物理接口或VM相关联的特定PCI设备功能编号进行管理。PCI设备功能编号(“功能编号”)可包括在GPU工作负荷中并且可与给定工作负荷的提交点相关联或者可由vdriver接口106和GPU微控制器102的相互协调来独立确定。在执行由特定VM发出的工作负荷之前,与特定VM(或者由特定VM发出的工作负荷)相关联的功能编号可包括在将要被载入GPU 130的配置信息中。通过vdriver接口106和VMM(未示出),使用设备功能编号来控制对与特定VM独占地相关联的存储器页面的访问可提高工作负荷的执行中的效率而高于其它技术(例如通过每个VM和GPU 130访问孔存储器140的所有部分),以及VM至系统存储器地址的SW转换(例如客户至主机地址转换)。
GPU微控制器102可将任务的多个部分分配给GPU 130的不同部分。例如,命令流装置134可提供将要由GPU 130的渲染引擎132执行的一个或多个指令/操作集合。命令流装置138还可提供将要由GPU 130的媒体效果引擎136执行的一个或多个指令/操作。命令流装置144可提供将要由GPU 130的视频编码引擎142执行的一个或多个指令/操作。
在一些实施例中,特定VM(例如VM 1101)在调度时间片期间可独占使用GPU的整体。在其它实施例中,在特定的调度时间片期间,第一VM可独占使用GPU的多个部分的仅第一部分(例如引擎),例如仅独占使用GPU 130的渲染引擎132。在实施例中,与调度的VM相关联的配置状态,包括调度的第一VM的设备功能编号,可被提供给GPU的第一部分以使GPU的第一部分在第一VM的调度时间片期间执行第一VM的工作负荷。第二VM可被调度,在与第一VM使用第一GPU部分的相同时间段期间独占使用GPU的第二GPU部分(例如GPU 130的媒体效果引擎136)。也就是,第一VM和第二VM中的每一个可被允许独占使用相应的GPU部分并且来自VM的对应工作负荷可以被相应的GPU部分并行地(例如并发地)执行。在执行将要由对应VM提供给相应的GPU部分的工作负荷之前,每个GPU部分可装备有与将要使用相应的GPU部分的VM相关联的对应配置状态和设备功能编号。
参见图2,示出了在分区之前(“原生的图形地址空间”)以及适当分区情况下的图形存储器200的框图。(被分区的)图形存储器200可包括图形孔空间204,例如可在GPU和处理器(例如中央处理单元)之间共享的存储器空间,并且图形存储器200还可包括通用全局图形地址空间206。多个VM中的每一个可被分配图形孔空间204的对应部分和通用全局图形地址空间206的对应部分。例如,VM1可被指派图形孔空间204的一部分208和通用全局图形地址空间206的一部分216。VM2可被指派图形孔空间204的一部分210和通用全局图形地址空间206的一部分218。VM3可被指派图形孔空间204的一部分212和通用全局图形地址空间206的一部分220。VM4可被指派图形孔空间204的一部分214和通用全局图形地址空间206的一部分222。
VMM软件(未示出)(例如VMM管理程序)可确定可用功能编号以标识存储器的对应部分。设备功能编号可通过管理设备功能编号与对应VM的关联性的vdriver接口来与每一个VM相关联。GPU(或它的部分)对映射进(共享的)图形存储器200中的系统存储器页面的访问可通过IO存储器映射单元(“IOMMU”,未示出)使用与当前独占使用GPU(或它的部分)的VM相关联的设备功能编号而被转换和管理。在实施例中,每个工作负荷将被限制成仅访问与对应功能编号相关联并且与发出工作负荷的对应虚拟机相关联的图形存储器的部分。
参见图3,示出了执行将要在GPU上被执行的源于多个虚拟机的工作负荷的方法300的流程图。在块302处,GPU驱动器被安装在每一个VM中。继续至块304,对于每个VM,通过例如已经从VM内的对应驱动器接收到对应GPU状态的vdriver接口将对应GPU状态(例如一个或多个配置参数)存储至系统存储器。前进至块306,图形孔存储器空间和全局图形地址空间被分配给每个VM。移动至块308,设备功能编号被指派(例如通过VMM管理程序)给每个VMi。特定VM的设备功能编号可由GPU微控制器使用来允许GPU(或者它的分立的引擎中的一个)在由特定VM提供的工作负荷的执行期间访问对应的存储器空间。行进至块310,通过GPU微控制器调度每个VMi对GPU(或GPU引擎或它的其它部分)的使用。例如,在一个实施例中,每个VMi可被顺次调度以独占使用GPU。在其它实施例中,两个或多个VM可被并行地(例如并发地)调度以独占使用GPU的对应部分,使得由第一VM提供的第一工作负荷由GPU的第一GPU部分来执行,同时由第二VM提供的第二工作负荷由GPU的第二GPU部分来执行。
在块312处,下标i被设置为等于零。行进至块314,下标被递增。在块316处,为将要独占使用GPU或者GPU的分立部分(例如图1的渲染引擎132)的VMi检索GPU状态并且根据检索的GPU状态来配置GPU或GPU部分。移至块318,由VMi提供的工作负荷被发送至GPU或GPU部分将要被执行。前进至判定菱形块320,确定是否存在有将要在GPU上被执行的源于其它VM的附加工作负荷。如果是,返回至块314,下标i被递增并且方法行进至块316。在一些实施例中,来自若干VM的工作负荷可被并发地执行,例如在不同GPU部分上并行执行。在其它实施例中,一个VM可在给定的时间段期间(例如调度时间片期间)独占使用GPU。如果不再有将要被GPU执行的来自其它VM的工作负荷,则方法在322处结束。
现在参见图4,示出了根据本发明实施例的处理器的框图。如图4所示,处理器400可以是多核处理器,包括多个核心410a-410n。各种核心可借助于互连415耦合至可包括各种部件的系统代理或非核心420。如所看到的,非核心420可包括共享的高速缓冲存储器430,它可以是末级高速缓冲存储器。另外,非核心420可包括集成的存储器控制器440、各种接口450和电源控制单元(PCU)455。
进一步参见图4,处理器400可例如借助于存储器总线与系统存储器460进行通信。另外,通过接口450,可以进行到各种片外部件(例如外围设备、大容量存储设备等)的连接。
处理器400可包括图形处理单元(GPU)470,它可被耦合至图形存储器480。根据本发明的实施例,GPU 470可包括GPU微控制器472,GPU微控制器472被配置成通过多个VM中的每个VM调度使用GPU470(或它的部分)。根据本发明的实施例,每个VM在它的调度执行时间片期间可独占使用GPU 470或它的部分。在一些实施例中,若干VM可唯一地使用GPU的对应部分并且可在它们的GPU的相应部分上并发地执行对应的工作负荷。在本发明的一些实施例中,每个VM被指派图形存储器480的唯一存储器部分并且当特定VM被GPU微控制器472调度以使用GPU 470时,GPU 470可访问的存储器部分被限制到与特定VM相关联的存储器部分。在一些实施例中,GPU微控制器472被配置成为多个VM中的每个VM将相应的GPU配置保存在对应的寄存器集合(未示出)中,使得当特定VM被调度以使用GPU 470(或它的部分)时,GPU微控制器472将要例如通过从对应的寄存器集合检索相应的GPU配置而在GPU 470(或它的部分)内提供或恢复对应的GPU配置。虽然在图4的实施例中利用这个特定实现进行了显示,但是本发明的范围并不限于这一点。
现在参见图5,示出了根据本发明的另一实施例的多域处理器的框图。如图5的实施例中所示的,处理器500包括多个域。具体地,核心域510可包括多个核心5100-510n,图形域520可包括一个或多个图形引擎(例如GPU 522),以及系统代理域550。注意,在其它实施例中可呈现附加的域。例如,可呈现多个核心域,每个包括至少一个核心。
通常,除了各种执行单元和附加的处理元件之外,每个核心510i可进一步包括低级高速缓冲存储器。各种核心可彼此间耦合并且耦合至由低级高速缓冲存储器(LLC)5400-540n的多个单元形成的共享高速缓冲存储器。在各种实施例中,LLC 5400-540n可在核心和图形引擎以及各种媒体处理电路之间共享。如所看到的,环形互连530将核心耦合在一起并且提供核心510、图形域520和系统代理电路550之间的互连。
图形域520可与处于处理器500外部的图形存储器560耦合。根据本发明的实施例,GPU 522可包括GPU微控制器524,GPU微控制器524被配置成通过多个VM中的每个VM调度使用GPU 522(或它的部分)。根据本发明的实施例,每个VM在它的调度时间片期间可独占使用GPU522(或它的部分)。在本发明的一些实施例中,每个VM被指派图形存储器560的唯一存储器部分,并且当特定VM被GPU微控制器524调度以使用GPU 522时,通过GPU 522访问图形存储器560可被限制到与特定VM相关联的存储器部分。在一些实施例,通过GPU522访问图形存储器560被限制到指派给(例如在VM的调度时间片期间)独占使用GPU522的VM的存储器部分。根据本发明的实施例,GPU微控制器524可被配置成为多个VM中的每个VM将相应的GPU配置保存在对应的物理或虚拟寄存器集合(未示出)中,使得当特定VM被调度以使用GPU 522(或它的部分)时,GPU微控制器524可通过例如从对应的寄存器集合检索相应的GPU配置而在GPU 522(或它的部分)内提供或恢复对应的GPU配置。
如更进一步看到的,系统代理域550可包括电源控制单元(PCU)556以便为处理器执行电源管理操作。处理器500可进一步包括集成的存储器控制器(IMC)570,集成的存储器控制器(IMC)570可准备到系统存储器572的接口,诸如动态随机存取存储器(DRAM)。可呈现多个接口5800-580n以使能处理器和其它电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(DMI)接口以及一个或多个外设部件互连高速(PCI ExpressTM(PCIeTM))接口。更进一步地,为了准备其它代理(诸如附加的处理器或其它电路)之间的通信,还可提供依照QPITM协议的一个或多个接口。虽然在图5的实施例中在这个高级处示出了,但是理解本发明的范围不限于这一点。
可在许多不同的系统类型中实现实施例。现在参见图6,示出了根据本发明实施例的系统的框图。如图6所示,多处理器系统600是点对点互连系统并且包括借助于点对点互连650而被耦合的第一处理器670和第二处理器680。如图6所示,处理器670和680中的每一个可以是多核处理器,包括第一和第二处理器核心(例如处理器核心674a和674b,以及处理器核心684a和684b),尽管潜在地许多核心可以在处理器中被呈现。
仍然参见图6,第一处理器670进一步包括存储器控制器集线器(MCH)672以及点对点(P-P)接口676和678。类似地,第二处理器680包括MCH 682以及P-P接口686和688。如图6所示,MCH 672和682将处理器耦合至相应的存储器,也就是存储器632和存储器634,它们可以是本地附连至相应的处理器的系统存储器(DRAM)的多个部分。第一处理器670和第二处理器680可分别借助于P-P互连662和654耦合至芯片组690。如图6所示,芯片组690包括P-P接口694和698。
此外,芯片组690包括接口692以通过P-P互连639将芯片组690和图形处理单元(GPU)638耦合。图形引擎638可耦合至图形存储器636。
根据本发明的实施例,GPU 638可包括GPU微控制器640,GPU微控制器640可被配置成通过多个VM中的每个VM调度使用GPU 638(或它的部分)。根据本发明的实施例,每个VM在它的调度时间片期间可独占使用GPU 638(或它的部分)。在本发明的一些实施例中,每个VM被指派图形存储器636的唯一存储器部分。当特定VM被GPU微控制器640调度以使用GPU 638(或它的部分)时,通过GPU 638(或它的部分)访问图形存储器636可被限制到与VM相关联的存储器部分。
在一些实施例中,GPU微控制器640被配置成为多个VM中的每个VM将相应的GPU配置保存在对应的存储设备(未示出)中,使得当特定VM被调度以使用GPU 638(或它的部分)时,GPU微控制器640将要例如通过从对应的存储设备检索相应的GPU配置而在GPU 638(或它的部分)内提供或恢复对应的GPU配置。
芯片组690可借助于接口696耦合至第一总线616。如图6所示,各种输入/输出(I/O)设备614可耦合至第一总线616连同总线桥618,它将第一总线616耦合至第二总线620。在一个实施例中,各种设备可耦合至第二总线620,包括例如键盘/鼠标622、通信设备626和数据存储单元628(诸如磁盘驱动器或者可存储代码630的其它大容量存储设备。此外,音频I/O 624可耦合至第二总线620。实施例可被结合进包括移动设备(诸如智能蜂窝式手机、平板电脑、上网本、超极本TM等)的其它类型的系统中。
实施例可被用于许多不同类型的系统中。例如,在一个实施例中,通信设备可被安排成执行本文描述的各种方法和技术。当然,本发明的范围并不限于通信设备,并且代替地,其它实施例可针对用于处理指令的其它类型的装置或者包括指令的一个或多个机器可读媒体,所述指令响应于在计算设备上被执行而导致设备执行本文描述的方法和技术中的一个或多个。
下面描述了附加的实施例。
在第一示例中,一种系统包括图形处理单元(GPU),所述图形处理单元(GPU)包括一个或多个GPU引擎。所述系统还包括微控制器以便为多个虚拟机(VM)中的每个虚拟机指派相应的执行调度时间片来使用对应的GPU引擎,其中当特定VM被调度以使用所述GPU的第一GPU引擎时,所述特定VM独占使用所述第一GPU引擎。
第二示例包括第一示例的特征。任选地,每个VM包括使得相应的VM能够在对应的GPU引擎上执行对应的工作负荷的相应的设备驱动器接口。所述系统可进一步包括虚拟化驱动器接口(vdriver接口)以助于为每个相应的VM向所述微控制器提供将要被存储的相应的GPU配置。每个GPU配置将要包括与相应的VM相关联的一个或多个配置参数。
第三示例包括第一和第二示例的所有特征,并且进一步地,当第一VM被调度以使用所述第一GPU引擎时,所述微控制器将要通过从第一存储设备检索所述第一GPU配置来向所述第一GPU引擎提供与所述第一VM相关联的第一GPU配置。当第二VM被调度以使用所述第一GPU引擎时,所述微处理器通过从第二存储设备检索所述第二GPU配置来向所述第一GPU引擎提供与所述第二VM相关联的第二GPU配置。任选地,所述vdriver接口在被虚拟机管理器(VMM)实例化时将要把对应的存储器空间分配给每个VM。任选地,当特定VM将要访问所述第一GPU引擎时,所述第一GPU引擎的存储器访问被限制到被分配给所述特定VM的对应的存储器空间。
第五示例包括示例1至4的特征,并且其中每个VM与唯一设备功能编号相关联。可通过使用对应的设备功能编号来执行由所述第一VM提供给所述第一GPU引擎的存储器访问指令。
第六示例包括示例1的特征,并且所述GPU进一步包括第二GPU引擎,并且所述微控制器被配置成调度在所述第一GPU引擎上的由所述第一VM发出的第一工作负荷的执行,并且所述微控制器被配置成调度在所述第二GPU引擎上的由第二VM发出的第二工作负荷的执行。所述第一工作负荷和所述第二工作负荷将要被并发地执行。
在第七示例中,一种方法包括将唯一存储器空间指派给多个虚拟机(VM)中的每一个,包括将第一存储器空间指派给第一VM以及将第二存储器空间指派给第二VM。所述方法还包括在GPU的第一图形处理单元(GPU)引擎上执行由所述第一VM发出的第一指令并且在所述GPU的第二GPU引擎上执行由第二VM发出的第二指令。响应于由所述第一VM发出的第一存储器访问,所述第一GPU引擎的存储器访问被限制到所述第一存储器空间,并且响应于由所述第二VM发出的第二存储器访问,所述第二GPU引擎的存储器访问被限制到所述第二存储器空间。任选地,所述方法包括在第一存储设备中存储包括与第一VM相关联的第一参数值集合的第一状态,并且在第二存储设备中存储包括与第二VM相关联的第二参数值集合的第二状态,以及响应于所述第一VM对所述第一GPU引擎的访问使能,从所述第一存储设备检索所述第一状态并根据所述第一状态配置所述第一GPU引擎。所述方法还包括响应于所述第二VM对所述第二GPU引擎的访问使能,从所述第二存储设备检索所述第二状态并根据所述第二状态配置所述第二GPU引擎。
第八示例包括第七示例的特征,并且还包括在相应的使用时间片期间调度由多个VM中的每个VM独占使用相应的GPU引擎。所述调度将要由耦合至所述GPU的图形微控制器来确定。
第九示例包括第八示例的特征。另外,所述第一VM发出的所述第一指令被所述第一GPU引擎执行与所述第二VM发出的所述第二指令被所述第二GPU引擎执行并发地进行。
在第10示例中,至少一个机器可读存储设备包括机器可读指令,在被执行时所述机器可读指令实现如示例7-9中任一个的方法。
第11示例是一种装置,包括用来执行如示例7-9中任一个的方法的部件。
第12示例是一种装置,包括数据存储设备用来存储与第一虚拟机(VM)相关联的第一参数值集合以及与第二VM相关联的第二参数值集合。所述装置还包括微控制器用来响应于所述第一VM被调度用于使用所述第一GPU引擎而根据所述第一参数值集合来配置GPU的第一图形处理单元(GPU)引擎,并且所述微控制器将要响应于所述第二VM被调度用于使用所述第二GPU引擎而根据所述第二参数值集合来配置第二GPU引擎。
第13示例包括示例12的特征,并且所述微控制器将要响应于所述第一VM独占使用所述第一GPU引擎而限制由所述第一GPU引擎访问与所述第一VM唯一关联的存储器的第一部分。另外,所述微控制器将要响应于所述第二VM独占使用所述第二GPU引擎而限制由所述第二GPU引擎访问与所述第二VM唯一关联的所述存储器的第二部分。
示例14包括示例13的特征。另外,所述微控制器将要在调度的第一调度时间片期间使能由所述第一VM独占使用所述第一GPU引擎。所述微控制器在所述调度的第二调度时间片期间使能由所述第二VM独占使用所述第二GPU引擎。
示例15包括示例14的特征。另外,由所述第一VM独占使用所述第一GPU引擎发生的同时所述第二VM独占使用所述第二GPU引擎。
示例16包括示例15的特征并且特定VM独占使用所述GPU的特定GPU引擎使得由所述特定VM发出的工作负荷能够独占地在所述特定GPU引擎上执行。
示例17包括示例12的特征,并且进一步包括多个VM,所述多个VM包括所述第一VM和所述第二VM。每个VM包括相应的设备驱动器以使得对应的GPU引擎能够执行将要由所述相应的VM提供的相应的工作负荷,并且每个设备驱动器将独立于任何其它设备驱动器来与所述GPU接口。
示例17包括示例16的特征。此外,所述多个VM中的每个VM具有独立的操作系统栈。
示例18包括示例16的特征。示例18进一步包括耦合至所述VM中的每个VM的虚拟设备接口。所述虚拟设备接口将要从所述第一VM的第一设备驱动器接收所述第一参数值集合并且从所述第二VM的第二设备驱动器接收所述第二参数值集合,并且把所述第一参数值集合和所述第二参数值集合存储在所述数据存储设备中。所述虚拟设备接口响应于所述第一VM被调度独占使用所述第一GPU引擎而从所述数据存储设备检索并提供所述第一参数值集合给所述微控制器,以及响应于所述第二VM被调度独占使用所述第二GPU引擎而从所述数据存储设备检索并提供所述第二参数值集合给所述微控制器。
示例19包括示例12至18中的任何一个的特征。此外,所述微控制器将要调度将要在所述GPU上执行的多个VM中的每个VM的相应的工作负荷,所述多个VM包括第一VM和第二VM。
实施例可以在代码中实现并且可存储在非暂态存储介质上,所述非暂态存储介质具有存储在其上的指令,所述指令可被用来编程系统以执行所述指令。所述存储介质可包括但不限于任何类型的磁盘(包括软盘、光盘、固态驱动器(SSD)、只读光盘存储器(CD-ROM)、可重写光盘(CD-RW)以及磁-光盘)、半导体器件(诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM))、磁或光卡、或者适于存储电子指令的任何其它类型的媒体。
虽然已经相对于有限数量的实施例描述了本发明,但是本领域技术人员将会由此意识到许多的修改和变化。意图是所附的权利要求覆盖了属于本发明的真实精神和范围的所有这样的修改和变化。
Claims (25)
1.一种用来处理来自多个虚拟机VM的指令的系统,所述系统包括:
图形处理单元GPU,所述图形处理单元GPU包括一个或多个GPU引擎;
微控制器,所述微控制器用来为多个虚拟机VM中的每个虚拟机指派相应的调度时间片以使用对应的GPU引擎,其中当在指派的调度时间片期间第一VM被调度以使用所述GPU的第一GPU引擎时,所述第一VM独占使用所述第一GPU引擎;
其中每个VM与唯一的设备功能编号相关联,并且其中通过使用对应的设备功能编号将要由所述第一GPU引擎执行由所述第一VM提供给所述第一GPU引擎的存储器访问指令;以及
驱动器接口,所述驱动器接口用来管理所述设备功能编号与每个VM的关联性并且使用所述设备功能编号来控制对与所述第一VM独占地相关联的存储器页面的访问。
2.如权利要求1所述的系统,其中每个相应的VM包括使得所述相应的VM能够在所述GPU的对应的GPU引擎上执行对应的工作负荷的相应的设备驱动器接口。
3.如权利要求2所述的系统,进一步包括虚拟化驱动器vdriver接口以助于为每个相应的VM向所述微控制器提供将要被存储的相应的GPU配置,其中每个GPU配置包括与所述相应的VM相关联的一个或多个配置参数。
4.如权利要求3所述的系统,其中当第一VM被调度以使用所述第一GPU引擎时,所述微控制器将要通过从第一存储设备检索第一GPU配置来向所述第一GPU引擎提供与所述第一VM相关联的第一GPU配置,并且当第二VM被调度以使用所述第一GPU引擎时,所述微控制器将要通过从第二存储设备检索第二GPU配置来向所述第一GPU引擎提供与所述第二VM相关联的第二GPU配置。
5.如权利要求3至4中的任何一项所述的系统,其中所述vdriver接口在被虚拟机管理器VMM实例化时将要把对应的存储器空间分配给每个VM。
6.如权利要求5所述的系统,其中当所述第一VM将要使用所述第一GPU引擎时,所述第一GPU引擎的存储器访问被限制到被分配给所述第一VM的对应的存储器空间。
7.如权利要求1所述的系统,其中所述GPU进一步包括第二GPU引擎,并且其中所述微控制器被配置成调度在所述第一GPU引擎上的由所述第一VM发出的第一工作负荷的执行,并且所述微控制器被配置成调度在所述第二GPU引擎上的由第二VM发出的第二工作负荷的执行,其中所述第一工作负荷和所述第二工作负荷将要被并发地执行。
8.一种处理来自多个虚拟机VM的指令的方法,包括:
将唯一的存储器空间指派给多个虚拟机VM中的每个虚拟机,包括将第一存储器空间指派给第一VM以及将第二存储器空间指派给第二VM;
由驱动器接口来管理设备功能编号与每个VM的关联性,所述管理包括将第一设备功能编号指派给所述第一VM并且将第二设备功能编号指派给所述第二VM;
在图形处理单元GPU的第一GPU引擎上执行由所述第一VM发出的第一指令,并且在所述GPU的第二GPU引擎上执行由第二VM发出的第二指令;以及
由所述驱动器接口控制对与所述第一VM独占地相关联的存储器页面的访问,
其中响应于由所述第一VM发出的第一存储器访问,所述第一GPU引擎的存储器访问被限制到所述第一存储器空间,并且响应于由所述第二VM发出的第二存储器访问,所述第二GPU引擎的存储器访问被限制到所述第二存储器空间;
其中所述第一GPU引擎使用所述第一设备功能编号来访问用于所述第一VM的所述第一存储器空间;以及
其中所述第二GPU引擎使用所述第二设备功能编号来访问用于所述第二VM的所述第二存储器空间。
9.如权利要求8所述的方法,进一步包括:
将包括与第一VM相关联的第一参数值集合的第一状态存储在第一存储设备中,并且将包括与第二VM相关联的第二参数值集合的第二状态存储在第二存储设备中;
响应于所述第一VM对所述第一GPU引擎的使用使能,从所述第一存储设备检索所述第一状态并且根据检索的第一状态来配置所述第一GPU引擎;以及
响应于所述第二VM对所述第二GPU引擎的使用使能,从所述第二存储设备检索所述第二状态并且根据检索的第二状态来配置所述第二GPU引擎。
10.如权利要求8所述的方法,进一步包括在相应的使用时间片期间调度由多个VM中的每个VM独占使用相应的GPU引擎,其中所述调度由耦合至所述GPU的图形微控制器来确定。
11.如权利要求10所述的方法,其中由所述第一VM发出的所述第一指令被所述第一GPU引擎执行并且由所述第二VM发出的所述第二指令被所述第二GPU引擎并发地执行。
12.一种用来处理来自多个虚拟机VM的指令的装置,包括用来执行如权利要求8至11中的任何一项所述的方法的部件。
13.一种计算机可读介质,其上存储有指令,所述指令在被执行时促使处理器执行如权利要求8至11中的任何一项所述的方法。
14.一种用来处理来自多个虚拟机VM的指令的装置,包括:
数据存储设备,用来存储与第一虚拟机VM相关联的第一参数值集合以及与第二VM相关联的第二参数值集合;
微控制器,用来响应于所述第一VM被调度用于使用第一图形处理单元GPU引擎而根据所述第一参数值集合来配置GPU的第一图形处理单元GPU引擎,并且所述微控制器用来响应于所述第二VM被调度用于使用第二GPU引擎而根据所述第二参数值集合来配置第二GPU引擎;
其中每个VM与唯一的设备功能编号相关联;以及
驱动器接口,所述驱动器接口用来管理所述设备功能编号与每个VM的关联性,所述管理包括将第一设备功能编号指派给所述第一VM并且将第二设备功能编号指派给所述第二VM以及控制对与所述第一VM独占地相关联的存储器页面的访问。
15.如权利要求14所述的装置,其中所述微控制器将要限制所述第一GPU引擎对存储器的第一部分的访问,其中存储器的第一部分响应于所述第一VM独占使用所述第一GPU引擎而唯一地与所述第一VM相关联,并且所述微控制器将要限制所述第二GPU引擎对所述存储器的第二部分的访问,所述存储器的第二部分响应于所述第二VM独占使用所述第二GPU引擎而唯一地与所述第二VM相关联。
16.如权利要求14所述的装置,其中所述微控制器将要在调度的第一调度时间片期间使能由所述第一VM独占使用所述第一GPU引擎,并且将要在所述调度的第二调度时间片期间使能由所述第二VM独占使用所述第二GPU引擎。
17.如权利要求16所述的装置,其中由所述第一VM独占使用所述第一GPU引擎发生的同时所述第二VM独占使用所述第二GPU引擎。
18.如权利要求17所述的装置,其中特定的VM独占使用所述GPU的特定的GPU引擎使得由所述特定的VM发出的工作负荷能够独占地在所述特定的GPU引擎上执行。
19.如权利要求16所述的装置,进一步包括多个VM,所述多个VM包括所述第一VM和所述第二VM,其中每个VM包括相应的设备驱动器以使得对应的GPU引擎能够执行将要由所述相应的VM提供的相应的工作负荷,并且其中每个设备驱动器将要独立于任何其它设备驱动器来与所述GPU接口。
20.如权利要求19所述的装置,其中所述多个VM中的每个VM具有独立的操作系统栈。
21.如权利要求19所述的装置,进一步包括耦合至所述VM中的每个VM的虚拟设备接口,所述虚拟设备接口用来:
从所述第一VM的第一设备驱动器接收所述第一参数值集合并且从所述第二VM的第二设备驱动器接收所述第二参数值集合;
将所述第一参数值集合和所述第二参数值集合存储在所述数据存储设备中;
响应于所述第一VM被调度使用所述第一GPU引擎而从所述数据存储设备检索并提供所述第一参数值集合给所述微控制器;以及
响应于所述第二VM被调度使用所述第二GPU引擎而从所述数据存储设备检索并提供所述第二参数值集合给所述微控制器。
22.如权利要求14至21中的任一项所述的装置,其中所述微控制器将要调度将要在所述GPU上执行的多个VM中的每个VM的相应的工作负荷,所述多个VM包括所述第一VM和所述第二VM。
23.一种用来处理来自多个虚拟机VM的指令的装置,包括:
用于处理指令的部件;
用于调度多个虚拟机VM中的每个虚拟机以使用用于处理指令的部件的相应部分的部件,其中当特定的VM被调度以使用用于处理指令的部件的第一部分时,所述特定的VM独占使用所述第一部分;
其中每个VM与唯一的设备功能编号相关联;以及
用于管理所述设备功能编号与每个VM的关联性并且使用所述设备功能编号来控制对与所述特定的VM独占地相关联的存储器页面的访问的部件。
24.如权利要求23所述的装置,其中当第一VM被调度以使用所述第一部分时,用于调度的部件将要通过从第一存储部件检索第一配置而将与所述第一VM相关联的第一配置提供给所述第一部分,并且当第二VM被调度以使用所述第一部分时,用于调度的部件将要通过从第二存储部件检索第二配置将与所述第二VM相关联的第二配置提供给所述第一部分。
25.如权利要求23所述的装置,其中当第一VM被调度以使用处理部件的第一部分时,响应于由所述第一VM发出的第一存储器访问,所述第一部分的存储器访问被限制到与所述第一VM相关联的第一存储部件,并且当第二VM被调度以使用所述处理部件的第二部分时,响应于由所述第二VM发出的第二存储器访问,所述处理部件的所述第二部分的存储器访问被限制到与所述第二VM相关联的第二存储部件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/072169 WO2015080719A1 (en) | 2013-11-27 | 2013-11-27 | Apparatus and method for scheduling graphics processing unit workloads from virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105830026A CN105830026A (zh) | 2016-08-03 |
CN105830026B true CN105830026B (zh) | 2020-09-15 |
Family
ID=53199499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380080556.XA Active CN105830026B (zh) | 2013-11-27 | 2013-11-27 | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10191759B2 (zh) |
EP (1) | EP3074866A4 (zh) |
CN (1) | CN105830026B (zh) |
WO (1) | WO2015080719A1 (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898795B2 (en) * | 2014-06-19 | 2018-02-20 | Vmware, Inc. | Host-based heterogeneous multi-GPU assignment |
US9898794B2 (en) | 2014-06-19 | 2018-02-20 | Vmware, Inc. | Host-based GPU resource scheduling |
US11145271B2 (en) * | 2015-08-10 | 2021-10-12 | Amazon Technologies, Inc. | Virtualizing graphics processing in a provider network |
US9904975B2 (en) | 2015-11-11 | 2018-02-27 | Amazon Technologies, Inc. | Scaling for virtualized graphics processing |
US9904974B2 (en) | 2015-11-11 | 2018-02-27 | Amazon Technologies, Inc. | Placement optimization for virtualized graphics processing |
US9904973B2 (en) | 2015-11-11 | 2018-02-27 | Amazon Technologies, Inc. | Application-specific virtualized graphics processing |
CN105786589A (zh) * | 2016-02-26 | 2016-07-20 | 成都赫尔墨斯科技有限公司 | 一种云渲染系统、服务器及方法 |
US10181172B1 (en) | 2016-06-08 | 2019-01-15 | Amazon Technologies, Inc. | Disaggregated graphics asset delivery for virtualized graphics |
US10181173B1 (en) | 2016-06-08 | 2019-01-15 | Amazon Technologies, Inc. | Disaggregated graphics asset management for virtualized graphics |
US10423463B1 (en) | 2016-06-09 | 2019-09-24 | Amazon Technologies, Inc. | Computational task offloading for virtualized graphics |
US10102605B1 (en) | 2016-08-26 | 2018-10-16 | Amazon Technologies, Inc. | Graphics library virtualization for virtualized graphics processing |
CN109690482A (zh) | 2016-09-05 | 2019-04-26 | 华为技术有限公司 | 虚拟机图形处理器的分配 |
US10200249B1 (en) | 2016-12-09 | 2019-02-05 | Amazon Technologies, Inc. | Network traffic management for virtualized graphics devices |
US10692168B1 (en) | 2017-01-26 | 2020-06-23 | Amazon Technologies, Inc. | Availability modes for virtualized graphics processing |
US10593009B1 (en) | 2017-02-22 | 2020-03-17 | Amazon Technologies, Inc. | Session coordination for auto-scaled virtualized graphics processing |
US10169841B1 (en) | 2017-03-27 | 2019-01-01 | Amazon Technologies, Inc. | Dynamic interface synchronization for virtualized graphics processing |
US10482562B2 (en) * | 2017-04-21 | 2019-11-19 | Intel Corporation | Graphics engine partitioning mechanism |
CN108984264B (zh) | 2017-06-02 | 2022-11-15 | 阿里巴巴集团控股有限公司 | 虚拟gpu的实现方法、装置及系统 |
GB2565770B (en) * | 2017-08-15 | 2019-09-18 | Advanced Risc Mach Ltd | Data processing systems |
US10649790B1 (en) | 2017-08-24 | 2020-05-12 | Amazon Technologies, Inc. | Multithreaded rendering for virtualized graphics processing |
US10338847B1 (en) | 2017-08-28 | 2019-07-02 | Amazon Technologies, Inc. | Coherent buffer mapping for virtualized graphics processing |
US10908940B1 (en) | 2018-02-26 | 2021-02-02 | Amazon Technologies, Inc. | Dynamically managed virtual server system |
US10929209B2 (en) * | 2018-12-31 | 2021-02-23 | Texas Instruments Incorporated | Safe, secure, virtualized, domain specific hardware accelerator |
US10769020B2 (en) * | 2019-01-31 | 2020-09-08 | EMC IP Holding Company LLC | Sharing private space among data storage system data rebuild and data deduplication components to minimize private space overhead |
CN110308992B (zh) * | 2019-06-24 | 2022-12-27 | 中国航空无线电电子研究所 | 面向多分区的gpu访问管理方法 |
US20210089423A1 (en) * | 2019-09-24 | 2021-03-25 | Advanced Micro Devices, Inc. | Flexible multi-user graphics architecture |
US11295507B2 (en) * | 2020-02-04 | 2022-04-05 | Advanced Micro Devices, Inc. | Spatial partitioning in a multi-tenancy graphics processing unit |
US11403729B2 (en) * | 2020-02-28 | 2022-08-02 | Advanced Micro Devices, Inc. | Dynamic transparent reconfiguration of a multi-tenant graphics processing unit |
US11755251B2 (en) * | 2021-06-02 | 2023-09-12 | Samsung Electronics Co., Ltd. | Virtual computational storage devices |
CN115988218B (zh) * | 2023-03-14 | 2023-06-09 | 摩尔线程智能科技(北京)有限责任公司 | 一种虚拟化视频编解码系统、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100262722A1 (en) * | 2009-04-10 | 2010-10-14 | Christophe Vauthier | Dynamic Assignment of Graphics Processing Unit to a Virtual Machine |
CN102089752A (zh) * | 2008-07-10 | 2011-06-08 | 洛克泰克科技有限公司 | 依赖性问题的有效率的并行计算 |
CN103034524A (zh) * | 2011-10-10 | 2013-04-10 | 辉达公司 | 半虚拟化的虚拟gpu |
US20130174144A1 (en) * | 2011-12-28 | 2013-07-04 | Ati Technologies Ulc | Hardware based virtualization system |
CN103282881A (zh) * | 2010-12-23 | 2013-09-04 | 英特尔公司 | 通过虚拟化直接共享智能设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8341624B1 (en) * | 2006-09-28 | 2012-12-25 | Teradici Corporation | Scheduling a virtual machine resource based on quality prediction of encoded transmission of images generated by the virtual machine |
US7650603B2 (en) * | 2005-07-08 | 2010-01-19 | Microsoft Corporation | Resource management for virtualization of graphics adapters |
US7325086B2 (en) * | 2005-12-15 | 2008-01-29 | Via Technologies, Inc. | Method and system for multiple GPU support |
US20070294693A1 (en) * | 2006-06-16 | 2007-12-20 | Microsoft Corporation | Scheduling thread execution among a plurality of processors based on evaluation of memory access data |
US8645620B2 (en) * | 2007-06-29 | 2014-02-04 | International Business Machines Corporation | Apparatus and method for accessing a memory device |
US20110102443A1 (en) * | 2009-11-04 | 2011-05-05 | Microsoft Corporation | Virtualized GPU in a Virtual Machine Environment |
EP2383648B1 (en) * | 2010-04-28 | 2020-02-19 | Telefonaktiebolaget LM Ericsson (publ) | Technique for GPU command scheduling |
US9069622B2 (en) * | 2010-09-30 | 2015-06-30 | Microsoft Technology Licensing, Llc | Techniques for load balancing GPU enabled virtual machines |
US8692832B2 (en) * | 2012-01-23 | 2014-04-08 | Microsoft Corporation | Para-virtualized asymmetric GPU processors |
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 |
-
2013
- 2013-11-27 WO PCT/US2013/072169 patent/WO2015080719A1/en active Application Filing
- 2013-11-27 CN CN201380080556.XA patent/CN105830026B/zh active Active
- 2013-11-27 US US15/025,735 patent/US10191759B2/en active Active
- 2013-11-27 EP EP13898093.3A patent/EP3074866A4/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102089752A (zh) * | 2008-07-10 | 2011-06-08 | 洛克泰克科技有限公司 | 依赖性问题的有效率的并行计算 |
US20100262722A1 (en) * | 2009-04-10 | 2010-10-14 | Christophe Vauthier | Dynamic Assignment of Graphics Processing Unit to a Virtual Machine |
CN103282881A (zh) * | 2010-12-23 | 2013-09-04 | 英特尔公司 | 通过虚拟化直接共享智能设备 |
CN103034524A (zh) * | 2011-10-10 | 2013-04-10 | 辉达公司 | 半虚拟化的虚拟gpu |
US20130174144A1 (en) * | 2011-12-28 | 2013-07-04 | Ati Technologies Ulc | Hardware based virtualization system |
Also Published As
Publication number | Publication date |
---|---|
EP3074866A1 (en) | 2016-10-05 |
US20160239333A1 (en) | 2016-08-18 |
EP3074866A4 (en) | 2017-12-27 |
WO2015080719A1 (en) | 2015-06-04 |
US10191759B2 (en) | 2019-01-29 |
CN105830026A (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105830026B (zh) | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 | |
US8972991B2 (en) | Systems and methods for exposing processor topology for virtual machines | |
US10275288B2 (en) | Virtualization manager for reconfigurable hardware accelerators | |
JP5170782B2 (ja) | ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ | |
US9798565B2 (en) | Data processing system and method having an operating system that communicates with an accelerator independently of a hypervisor | |
JP5782445B2 (ja) | 物理コンピューティング・リソースの部分を論理パーティションに割り当てる方法 | |
WO2018177309A1 (en) | Techniques for virtual machine transfer and resource management | |
WO2017024783A1 (zh) | 一种虚拟化方法、装置和系统 | |
US9697024B2 (en) | Interrupt management method, and computer implementing the interrupt management method | |
CN107977251B (zh) | 对在虚拟化系统中的共享寄存器的排他访问 | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
US9176787B2 (en) | Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor | |
JP7123235B2 (ja) | 仮想化用のgpuタスクコンテナとしてのvmid | |
US20150186180A1 (en) | Systems and methods for affinity dispatching based on network input/output requests | |
US8402191B2 (en) | Computing element virtualization | |
US20210073033A1 (en) | Memory management using coherent accelerator functionality | |
US20200201758A1 (en) | Virtualized input/output device local memory management | |
US20240211291A1 (en) | Budget-based time slice assignment for multiple virtual functions | |
US11928511B2 (en) | Systems and methods for prioritizing memory allocation for isolated computing workspaces executing on information handling systems | |
US20230033583A1 (en) | Primary input-output queue serving host and guest operating systems concurrently | |
JP2022511670A (ja) | 仮想化コンピューティング環境での安全なメモリアクセス | |
鈴木勇介 et al. | GPU の完全仮想化 | |
CN114691297A (zh) | 一种信息读写方法、电子设备、分布式系统以及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |