CN107015845A - Gpu虚拟化 - Google Patents
Gpu虚拟化 Download PDFInfo
- Publication number
- CN107015845A CN107015845A CN201611088395.0A CN201611088395A CN107015845A CN 107015845 A CN107015845 A CN 107015845A CN 201611088395 A CN201611088395 A CN 201611088395A CN 107015845 A CN107015845 A CN 107015845A
- Authority
- CN
- China
- Prior art keywords
- gpu
- registers
- memory
- address
- virtual machine
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- 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
-
- 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/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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及GPU虚拟化。GPU虚拟化的方法包括由管理程序给每个虚拟机(或在VM上运行的操作系统)分配标识符,且接着这个标识符用于给从在给定VM上下文内操作的GPU工作负荷得到的每个交易(即在使CPU、GPU和其它外围设备互连的系统总线上的每个GPU交易)加上标签。此外,为每个VM提供存储器资源的专用部分(其可以是GPU寄存器或RAM),且同时每个VM可以只看到存储器的它们的所分配的部分,在GPU内的微处理器可看到所有存储器。使用根存储器管理单元来实现访问控制,根存储器管理单元由管理程序配置并基于与交易相关的标识符将客户机物理地址映射到实际存储器地址。
Description
背景
当前计算系统常常包括中央处理单元(CPU)和图形处理器单元(GPU),其也可被称为视频处理单元(VPU)。GPU是具有高度平行的结构且一般用于图形操作例如纹理映射和再现多变形的处理器。图形命令从CPU发送到GPU(经由GPU驱动器)并在GPU上被执行。
在很多情况下,CPU可运行多个虚拟机(VM),每个虚拟机运行操作系统(例如其中在不同VM上运行的操作系统可以是相同的或不同的)。VM由被称为管理程序(或虚拟机监视器,VMM)并控制每个VM对在计算系统内的硬件的访问的软件创建和监督。因此,在操作系统(在VM上运行)和GPU之间的通信常常通过负责实施安全的管理程序。
下面所述的实施方式仅作为例子被提供且不是解决虚拟化GPU的已知方法的任何或所有缺点的实现的限制。
概述
这个概述被提供来以简化的形式介绍概念的选择,其在下面在详细描述中被进一步描述。这个概述并不打算识别所主张的主题的关键特征或必要特征,也不打算用作在确定所主张的主题的范围时的帮助。
GPU虚拟化的方法包括由管理程序给每个虚拟机(或在VM上运行的操作系统)分配标识符,且接着这个标识符用于给从在给定VM上下文内操作的GPU工作负荷得到的每个交易(即在使CPU、GPU和其它外围设备互连的系统总线上的每个GPU交易)加上标签。此外,为每个VM提供存储器资源的专用部分(其可以是GPU寄存器或RAM),且同时每个VM可以只看到存储器的它们的所分配的部分,在GPU内的微处理器可看到所有存储器。使用根存储器管理单元来实现访问控制,根存储器管理单元由管理程序配置并基于与交易相关的标识符将客户机物理地址映射到实际存储器地址。在GPU内的微处理器中运行的软件涉及管理不同VM的工作负荷(例如不是依赖于在CPU中运行的管理程序软件来控制并管理工作负荷)。
第一方面提供计算系统,其包括:布置成在管理程序的控制下运行多个虚拟机的中央处理单元,以及其中由中央处理单元输出的交易被分配它所相关的虚拟机的标识符;布置成在由虚拟机使用的虚拟存储器地址和客户机物理地址之间转换的CPU存储器管理单元;由管理程序配置并布置成基于被分配到交易的虚拟机的标识符在由CPU存储器管理单元使用的客户机物理地址和实际物理存储器地址之间转换的第一根存储器管理单元;包括微处理器的图形处理器单元,以及其中由图形处理器单元输出的交易被分配虚拟机的标识符,虚拟机从接收自中央处理单元的触发交易继承该标识符;布置成在由图形处理器单元使用的虚拟存储器地址和客户机物理地址之间转换的GPU存储器管理单元;以及由管理程序配置并布置成基于被分配到交易的虚拟机的标识符在由GPU存储器管理单元使用的客户机物理地址和实际物理存储器地址之间转换的第二根存储器管理单元;以及其中对存储器资源的一个或多个部分的访问作为由根存储器管理单元执行的地址转换的结果被控制。
第二方面提供一种方法,其包括:由管理程序将存储器资源的一部分和标识符分配到在中央处理单元上运行的多个虚拟机中的每个;在第一和第二根存储器管理单元中配置转换表,其中转换表基于虚拟机的标识符来定义在客户机物理地址和实际物理地址之间的转换,第一根管理单元与中央处理单元相关,而第二根管理单元与图形处理器单元相关;以及在一个或多个虚拟机的执行期间,使用交易所相关的虚拟机的标识符给由中央处理单元输出的交易加上标签,并且在根存储器管理单元内,基于交易被加标签所用的标识符来转换在交易中的地址。
另外的方面提供在集成电路制造系统处制造如本文所述的计算系统、集成电路定义数据集的方法,集成电路定义数据集当其在集成电路制造系统中被处理时配置系统以制造如本文所述的计算系统和计算机可读存储介质,其具有存储在其上的集成电路定义数据集,集成电路定义数据集当在集成电路制造系统中被处理时配置系统以制造如本文所述的计算系统。
优选特征可在适当时被组合,如对技术人员将明显的,并可与本发明的任何方面组合。
附图的简要说明
本发明的实施方式将作为例子参考附图被描述,其中:
图1是包括CPU和具有嵌入式微处理器的GPU的计算系统的示意图;
图2是图1的系统的操作的示例方法的流程图;
图3是图1的系统的操作的另一示例方法的流程图;
图4示出存储器地址空间的示意图;以及
图5示出包括布局处理系统和集成电路产生系统的集成电路制造系统的例子。
共同的参考数字在全部附图中用于指示相似的特征。
详细描述
下面仅通过示例的方式描述本发明的实施方式。这些例子代表实施本发明的、申请人当前已知的最佳方式,虽然它们并不是这可被实现的唯一方式。该描述阐述例子的功能和用于构造和操作例子的步骤的顺序。然而,相同或等效的功能和顺序可由不同的例子完成。
如上所述,在GPU在多个VM之间被共享(例如可以有在CPU上运行的多达8个VM或可以有在CPU上运行的多于8个VM)的场合,在VM上运行的操作系统和GPU之间的所有通信经由管理程序进行。这可引入性能惩罚,作为来去管理程序和/或上下文切换(例如,如由管理程序得到的)的额外调用的结果。对此的现有解决方案为每个VM提供专用GPU(即通过复制整个GPU硬件)或将一个或多个上下文专门用于每个VM(例如其中GPU支持多个独立上下文)。提供多个GPU增加系统的尺寸(和因而成本),且可以是低效的(例如其中8个GPU被提供,且少于8个VM运行)。将一个或多个上下文专门用于每个VM(被称为“介导透传(mediatedpass-through)”的技术)在VM当中为GPU调度工作(这对CPU引入往返延迟并使用CPU资源)时仍然涉及CPU且可能需要对在VM上的GPU驱动器的变化。
在本文描述了GPU虚拟化的方法,其中由管理程序(例如在建立时)给每个VM(或在VM上运行的操作系统)分配标识符(OS_ID),且这个OS_ID接着用于给在VM和GPU之间的每个交易加上标签(即在使CPU和GPU互连的系统总线上的每个GPU交易)。此外,为每个VM提供专用GPU寄存器,且同时每个VM可以只看到(即访问)它们自己的GPU寄存器,GPU可看到所有GPU寄存器。OS_ID和专用GPU寄存器的组合使来自不同VM(和因而不同的操作系统)的不同工作(其可以是图形或计算工作)能够同时在GPU上(例如在不同的GPU管线中)运行,并消除对从VM到GPU的每个通信涉及管理程序的需要。这导致性能提高。
图1是包括CPU 52和GPU 54的计算系统50的示意图。该图只示出硬件,且所以没有示出在CPU上运行的VM和管理程序。GPU 54包括GPU核心56,其包括执行GPU任务的硬件(例如数据流量大师、阴影群集、纹理管线和数据后处理模块)。GPU 54还包括控制GPU和在GPU内的存储器管理单元(MMU)15的操作(并可被称为GPU客户机MMU或GPU G-MMU以将它与在GPU外部的根和客户机MMU区分开)的嵌入式微处理器58。GPU 52还包括SoC(片上系统)接口(SOCIF)112,微处理器58可经由SoC接口112访问GPU寄存器114。
GPU寄存器114也可经由系统总线116和SOCIF 112访问CPU 52,因为它们被映射在MMU(例如CPU根MMU 120)中,但如下面更详细描述的,对不同寄存器的访问被控制,使得每个VM(被表示为VM0-VMn)可看到单独专用的一组寄存器126,且管理程序可看到VM不可访问的另一组寄存器128。相反,在GPU 54内的微处理器58可看到所有GPU寄存器114(经由SOCIF112)。
系统50还包括三个另外的MMU:CPU客户机MMU(CPU G-MMU)118和两个根MMU(R-MMU)120、122。这两个R-MMU 120、122(其也可被称为“系统MMU”、“IP MMU”、“IO MMU”或“级2MMU”)由在CPU 52上运行的管理程序建立(且因此可被描述为由在CPU 52上运行的管理程序控制)。每个MMU 15、118、120、122执行存储器地址的转换,并且也可执行其它存储器管理功能。在只有MMU的一个级(而不是图1所示的两个级)的更方便的系统中,MMU将虚拟存储器地址(在CPU/GPU内产生)转换成物理存储器地址(反之亦然)。相反,在图1的系统50中,CPUG-MMU 118将由VM产生的虚拟地址转换成客户机物理地址(和因此名称客户机MMU)(并从客户机物理地址转换),且这些客户机物理地址然后由在管理程序的控制下的CPU R-MMU 120(因此名称根MMU)转换成实际物理地址。类似地,GPU G-MMU 15将由GPU产生的虚拟地址转换成客户机物理地址(并从客户机物理地址转换),且这些客户机物理地址然后由也在管理程序的控制下的GPU R-MMU 122转换成实际物理地址。虽然两个R-MMU 120、122可能组合,它们仍然在逻辑上分离,因为给定VM具有不同的CPU和GPU访问要求。
通过控制在R-MMU 120、122内执行的转换,管理程序控制什么交易访问系统总线116。虽然通过CPU G-MMU 118从虚拟地址到客户机物理地址的映射由在VM上运行的操作系统管理;管理程序可通过未能在CPU R-MMU 120中将客户机物理地址映射到实际物理地址来阻止对系统总线116的访问。
虽然图1将R-MMU 120、122示为相邻CPU/GPU的外部部件,在其它例子中,R-MMU120、122可被实现为相关处理器的整体部分(例如CPU R-MMU 120可被实现为CPU 52的整体部分和/或GPU R-MMU 122可被实现为GPU 54的整体部分,例如为GPU核心56的整体部分)。
被分配到VM的GPU寄存器126的组中的每个寄存器(且可被称为“寄存器块”)可例如消耗在系统物理地址空间图中的空间的64kB。这个粒度可被选择为匹配R-MMU的粒度。将认识到,这些地址不与RAM重叠,且因此这些64kB区实际上不消耗存储器(仅仅在物理地址映射中的空间)。
由CPU R-MMU 120产生的物理地址可涉及GPU寄存器114(在这种情况下调用由SOCIF 112接收,SOCIF 112经由系统总线116监控相应于GPU寄存器的地址的范围(或多个地址,其中地址不是连续的)或涉及在计算系统50内的存储器124,其中这个存储器124将驱动器提供到每VM控制接口固件并可包括RAM。由GPU R-MMU 122产生的物理地址可与在计算系统50内的VM驱动器/固件接口存储器124有关。
将认识到,系统50除了VM驱动器/固件接口存储器124之外还将包括其它存储器,例如其它仅CPU存储器和包含其它GPU设置、纹理和再现缓冲器等的CPU/GPU存储器,且由存储器124占据的地址空间不需要是连续的(例如其它存储器可存在于在相邻块132之间的间隙中)。
将认识到,其它计算系统可以不包括在图1中示出的所有功能元件(即在图1中所示的一个或多个功能元件可被省略),且在一些例子中可包括未在图1中示出的额外功能元件。例如,图1所示的系统50上的变化可以不包括SOCIF 112,且替代地GPU寄存器114可以是在GPU R-MMU 122中映射的存储器(即以实现存储器映射的寄存器访问和保护);然而,这在从GPU 54中的微处理器58访问寄存器114时可引入额外的时延。
可参考图2所示的流程图描述系统50的操作,图2示出初始化阶段202和操作阶段204。在可在系统建立时执行的初始化阶段202期间或当新VM被提供时,管理程序将存储器(例如从存储器124和/或GPU寄存器114)分配到VM,并且也将标识符(OS_ID)分配到VM(块206)。OS_ID可以每个包括m个位,且在各种例子中,OS_ID每个包括3个位(m=3),使每个OS_ID能够识别最多8个VM(虽然如下所述,在各种例子中,OS_ID之一被分配到管理程序)中的一个。管理程序也在R-MMU 120、122(块208)内建立转换表(也被称为“页表”),其中在客户机物理地址和真实物理地址之间的转换取决于OS_ID,且所以转换表可根据OS_ID由R-MMU120、122编索引或选择。在分配存储器和OS_ID(在块206中)并建立R-MMU(在块208中)之后,VM可被加载(块25)并可开始执行(块212)。
在操作(或执行)阶段204期间,VM执行且在系统总线116上的每个交易由它所相关的VM的OS_ID识别(块214)。如下所述,管理程序也可被分配它自己的OS_ID,使得它可用于确定管理程序可访问存储器的哪个部分。因为每个交易被用OS_ID加标签,OS_ID有效地提供地址空间的m个更多位。不起源于VM的交易从触发交易继承它们的OS_ID,使得来自GPU的输出继承提交产生该输出的GPU任务的VM的OS_ID。
OS_ID由R-MMU 120、122使用来选择适当的页(块216),且这控制每个VM可访问存储器的哪个部分(例如可从存储器的哪个部分读取和/或写到存储器的哪个部分)。以这种方式,每个VM看到在同一位置上的同一组寄存器(即这些寄存器的虚拟地址可以是相同的,且这些可由CPU G-MMU映射到同一客户机物理地址),但不能在页面中看到由R-MMU映射到其它VM的寄存器。
结合由管理程序建立的R-MMU使用OS_ID提供在不同的VM(和因此不同的操作系统)之间切换的有效方式,因为管理程序不一定介导每个交易,以便识别它所相关的VM并实施安全措施来防止流氓存储器访问(例如由一个VM访问由其它VM或系统的其它部分写入的存储器)。如上所述,可通过未能将客户机物理地址映射到实际物理地址(在R-MMU中)来阻止对系统总线116的访问,且这在初始化阶段52期间被配置而不是需要每次通过涉及管理程序的交易基础在交易上执行。
为了使单独的VM可独立地将GPU任务提交到GPU 54而不需要涉及管理程序,在寄存器126的每个专用组中的寄存器之一可以是触发在GPU54内的嵌入式微处理器58中的事件的特殊寄存器130(在本文被称为“kick寄存器”)。在各种例子中,可以只有在相应于这组寄存器126的64kB地址范围中的单个寄存器。此外,存储器124的专用部分132(被表示为HD/FI0-HD/FI0)作为每个VM的循环缓冲器(其可被称为主机驱动器/固件接口并包括内核命令循环缓冲器CCB)操作,且这些作为GPU的命令接口来操作,每个VM只访问它自己的驱动器/固件接口132。如同GPU寄存器114一样,在GPU 54中的微处理器58可看到所有主机驱动器/固件接口132,虽然访问机制是不同的(存储器124经由GPU R-MMU 122被访问,而GPU寄存器114经由SOCIF 112被访问)。可参考在图3中示出的流程图来描述这些主机驱动器/固件接口132和kick寄存器130的操作。
kick寄存器和主机驱动器/固件接口在虚拟化时被分配到VM,例如在图2中的块206中。也在R-MMU内由管理程序建立在kick寄存器和主机驱动器/固件接口的虚拟和客户机物理地址与它们的实际物理地址之间的映射,作为初始化阶段202的部分(例如在块208中)。
当VM(例如在VM内的图形应用)希望触发GPU任务时,VM在存储器中建立控制流(块302),且这可以用常规方式完成,例如好像VM是具有相关GPU的本机CPU一样。VM接着将命令写到一般命令循环缓冲器(块304),即在CPU上运行的每个VM可使用相同的虚拟地址和客户机物理地址来写命令,以及客户机物理地址接着由CPU R-MMU 120映射到HD/FI的VM特定物理地址(块306),使得命令可被存储(块308)。控制流的这个建立(在块302中)以及存储命令(在块304-308中)可在当VM想要将GPU任务提交到GPU时之前被执行。
为将GPU任务提交到GPU,VM写到一般kick寄存器(块35),其可在各种例子中对在CPU上运行的所有VM是相同的,即在CPU上运行的每个VM可在各种例子中对kick寄存器使用相同的虚拟和客户机物理地址。如同HD/FI地址一样,kick寄存器地址由CPU R-MMU 120映射到正确的VM的kick寄存器的物理地址(块312),且这可基于由CPU R-MMU 120接收的OS_ID连同写命令,或可使用存在于CPU中的另一机制来基于正执行的当前VM选择正确的映射。如上所述,SOCIF 112监控相应于GPU寄存器114的地址范围,且所以检测写(块314)。作为写到VM特定kick寄存器130的结果,在GPU 54内的微处理器58中产生事件(块316),且这通过微处理器58触发任务的运行(块318)。调用VM的OS_ID(其直接从被写入的kick寄存器得到并可存储在微处理器58内部的寄存器中)传到在微处理器中运行的任务(块320)例如作为边带信息,且OS_ID接着用于执行转换并识别那个特定VM的HD/FI的地址(块322),即OS_ID用于例如通过偏移对正确的VM接口存储器的访问来计算VM的正确地址(如下面更详细描述的)。这意味着GPU知道哪个VM触发事件而不需要信任VM以正确地识别本身或询问管理程序,因为每个VM借助于CPU R-MMU只具有对它自己的kick寄存器的可见性。在识别出正确的HD/FI(在块322中)后,可从存储器读取执行GPU任务的所有必要的信息(例如在块302中写的控制流和在块304-308中写的命令)。微处理器58可从HD/FI读取以前写的命令(块324)并接着基于该命令来访问所有必要的数据。
基于被读的命令(在块324中)且如果GPU有容量(例如,如果在所需的GPU核心内的特定管线没有已经执行另一GPU任务),则工作负荷可由微处理器在GPU中建立(块326),且接着GPU可开始工作负荷(块328)而没有微处理器的进一步涉及。
如果当kick被接收到时(例如当命令在块324中被读取时)GPU(例如所需的GPU管线)已经是忙碌的,则它可被微处理器58忽略,在这种情况下,工作负荷将不被建立且任务将不被执行。然而在一些示例实现中,可存储所接收的但不是实施的kick的记录,使得当在GPU核心内的容量可用时,可做出关于接着要实施哪个GPU任务的决定(例如通过在微处理器内的调度器)。在各种实现中,GPU任务的完成可触发对微处理器的中断(块320),例如使得在任务中使用的资源可被释放用于由另一GPU任务使用,且在完成上的这个中断又可触发下一GPU工作负荷的开始,例如使得GPU任务不由kick但由以前的GPU任务(例如利用与所触发的GPU任务相同的资源的以前的GPU任务)的完成触发。
在上面的描述中,存在被分配到每个VM的kick寄存器。在可选的实现中,可提供由所有VM使用的单个kick寄存器。在这样的实现中,图3的方法如上所述开始,并建立控制流(在块302中)且将命令写到VM的特定HD/FI(在块304-308中),VM写到一般kick寄存器(在块35中)。在这个实现中,由CPU R-MMU执行的转换不是从一般地址到VM特定kick寄存器(如在块312中的),转换是从一般地址到单个kick寄存器。如上所述,SOCIF检测写到kick寄存器(在块314中)且事件在微处理器中产生(在块316中),这触发任务的运行(在块318中)。然而,与在图3中不同,因为只有单个kick寄存器,调用VM的OS_ID不能传递到任务并用于识别包含相应的命令的HD/FI(即图3的块320和322被省略)。替代地,有方法可继续进行的两种不同的方式。在一个实现中,微处理器58检查所有HD/FI 132以识别具有在它里面的新命令的一个HD/FI,使得命令可被读取(在块324中),且接着该方法如图3所示和上面所述的继续进行。在其它实现中,调用VM进行管理程序调用且管理程序用作安全代理,附加调用VM的OS_ID,且接着该方法如图3所示和上面所述的继续进行。
因为微处理器的性能由外部存储器访问影响(因为有与每个外部存储器访问相关的延迟),与对每个VM有kick寄存器比较,使用单个kick寄存器引入性能惩罚,因为对HD/FI的多个访问是需要的。
在另一例子中,可使用两种方法(每VM专用kick寄存器和单个kick寄存器)的混合。在存在比OS_ID多的VM的这样的例子中,kick寄存器之一可由超过OS_ID限制的所有VM使用(例如,对于没有自己的唯一OS_ID的所有那些VM)。在这样的实现中,这些VM的确进行管理程序调用,或在微处理器58上运行的固件代码知道为这个特殊情况OS_ID扫描N个VM队列。
写到HD/FI内(在块304-306中)的命令可包括对数据被存储在存储器中时的存储器地址的参考(在块302中)。对存储器地址的参考可以是以指针的形式。然而在其它例子中,可规定偏移而不是指针,以便提供更安全的接口,如可参考图4所述的。
图4更详细地示出包括相应于存储器124的地址的存储器地址空间的示意图。在这个例子中,示出GPU寄存器114被映射到的存储器地址402(在CPU R-MMU 120中)连同HD/FI132;然而,将认识到,虽然这些GPU寄存器114占据存储器地址空间,它们不占据物理存储器(即它们不存储在RAM中)。此外,在图4中示出为每个VM预留的存储器404的部分(被表示为MEM0-MEMn),且HD/FI 132(以及在HD/FI内的CCB)是在存储器404的部分内的子结构。存储器404的这些部分在虚拟地址空间中是连续的,所以它们在微处理器58看来是连续的,且所以不是提供对任何数据的开始的指针,可提供偏移,且微处理器58可使用下式来计算实际存储器地址:
地址=基本地址+(OS_ID x部分尺寸)+偏移
以及其中基本地址B是存储器的部分的起始地址,以及部分尺寸C是一部分的尺寸,如图4所示。以这种方式,不受信软件可能从不产生在它们自己的安全容器(MEM0-MEMn)之外的指针。调用者只提供偏移,其在内部使安全容器基本地址被应用(如上面)以及范围检查以确保偏移不从它的底部溢出安全容器范围。
为了使检测一些恶意行动变得可能,被通过的偏移可在用于计算地址(例如使用上面的方程)之前被处理。例如,可从偏移移除多个位(例如基于孔尺寸和/或OS_ID),且如果检测到任何被移除的位改变(例如与标准值比较),微处理器可确定存在恶意活动,并可因此丢弃GPU任务。
所有上面的描述指为从CPU到GPU的调用使用OS_ID。OS_ID也可由GPU使用来确定在存储器中的哪里写从GPU任务输出的数据,并防止写到被分配到其它VM的存储器(例如RAM)。
来自/到存储器124的任何GPU读/写命令识别由GPU G-MMU 15转换成客户机物理地址的虚拟地址。基于与命令相关的OS_ID(其中这不是指在GPU上运行的OS而是数据所相关的并从初始GPU交易继承的VM),客户机物理地址接着由GPU R-MMU 122转换成真实物理地址。这防止一个VM的GPU任务将数据写到被分配到不同的VM的存储器内(例如由VM0发出的任务的数据可以只被写到存储器部分MEM0内),且这意味着数据对其它VM不是可用的且不能不注意地盖写属于另一VM的数据。
在各种例子中,由CPU传递(并相应于调用VM)的OS_ID可被表示为CPU OS_ID,而由GPU传递(并相应于被调用的VM)的OS_ID可被表示为GPU OS_ID。在CPU上运行的管理程序可具有它自己的被分配的OS_ID,且这些不同的OS_ID可用于控制对存储器124的不同部分(或除了存储器124以外的存储器,如上所述)的访问。例如,只有管理程序和GPU可访问的部分可以只从伴随有相应于管理程序的预定CPU OS_ID或GPU OS_ID的客户机物理地址映射/映射到该客户机物理地址,GPU和在CPU上运行的受信软件(即不是不受信VM)可采用的部分可以只从伴随有相应于受信执行环境的预定CPU OS_ID或GPU OS_ID的客户机物理地址映射/映射到该客户机物理地址,以及只有CPU(而不是GPU)可访问的部分可以只从伴随有相应于受信执行环境(而不是相应的GPU OS_ID)的预定CPU OS_ID的客户机物理地址映射/映射到该客户机物理地址。
上面所述的“特殊”寄存器(例如寄存器组126和/或kick寄存器130)使不受信软件(例如VM或在VM上运行的软件)能够直接与GPU对话。虽然GPU不信任由VM本身提供的任何调用者身份信息(因为VM是不受信的),每个VM的单个kick寄存器或专用kick寄存器(或这两种方法的混合,如上所述)的使用提供不能由流氓VM欺骗的机制且不需要管理程序调用来执行“kick”操作。这因此使每个VM(或在VM上运行的每个OS)能够独立地将在GPU上的工作排队而没有管理程序干预,且给所有交易加上标签的OS_ID的使用能够使来自不同VM的GPU任务能够并行地在不同的GPU管线上运行。
如上所述,虽然有在多个VM之间共享的单个GPU,每个VM具有它自己的驱动器堆栈(即全标准驱动器堆栈,好像它是单个本地机器一样),所以对于每个VM,它看起来具有专用虚拟化GPU。这与具有多个GPU的SoC比较代表成本节省(例如从芯片面积和效率方面看),例如有具有一个虚拟化GPU而不是N个专用GPU的更不冗余的GPU硬件。此外,使用上面所述的方法,在VM当中切换GPU时存在零软件开销。
使用上面所述的方法和装置,GPU的虚拟化在GPU内部被介导(例如固件在GPU内部运行),且所以这对CPU和对在CPU上运行的VM是透明的。这与其中在“虚拟GPU”之间的介导发生在主机CPU中的介导透传相反。
术语“处理器”和“计算机”在本文用于指具有处理能力的任何设备或其部分,使得它可执行指令。术语“处理器”可例如包括中央处理单元(CPU)、图形处理单元(GPU或VPU)、物理处理单元(PPU)、无线电处理单元(RPU)、数字信号处理器(DSP)、通用处理器(例如通用GPU)、微处理器、设计成加速在CPU外部的任务的任何处理单元等。本领域中的技术人员将认识到,这样的处理能力合并到很多不同的设备内,且因此术语“计算机”包括机顶盒、媒体播放器、数字无线电装置、PC、服务器、移动电话、个人数字助理和很多其它设备。
本领域中的技术人员将认识到,用于存储程序指令的存储设备可分布在网络当中。例如,远程计算机可存储被描述为软件的过程的例子。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可选地,本地计算机可按需要下载软件的片段或执行在本地终端处的一些软件指令和在远程计算机(或计算机网络)处的一些指令。本领域中的技术人员也将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路例如DSP、可编程逻辑阵列等实现。
本文所述的方法可由配置有软件的计算机执行,软件是以存储在有形存储介质上的机器可读形式、例如以包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式或以包括适合于当程序在计算机上运行时执行本文所述的任何方法的所有步骤的计算机程序代码工具的计算机程序的形式,且其中计算机程序可体现在计算机可读存储介质上。有形(或非临时)存储介质的例子包括磁盘、拇指驱动器、存储卡等,且并不包括传播信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序或同时被执行。
本文所述的硬件部件可由非临时计算机可读存储介质产生,非临时计算机可读存储介质具有在其上编码的计算机可读程序代码。
意图也包括“描述”或定义硬件的配置的软件,其实现上述的模块、功能、部件、单元或逻辑(如,图形处理系统202的部件),例如HDL(硬件描述语言)软件,如对设计集成电路或对配置可编程芯片使用的,以实现期望功能。也就是说,可提供计算机可读存储介质,其具有在其上编码的以集成电路定义数据集的形式的计算机可读程序代码,其当在集成电路制造系统中被处理时配置系统以制造配置成执行本文所述的任何方法的图形处理系统或制造包括本文所述的任何装置的图形处理系统。IC定义数据集可以是例如用适当的HDL写的计算机代码例如寄存器传输级(RTL)代码的形式。现在将关于图5描述在集成电路制造系统处处理集成电路定义数据集以便配置系统以制造图形处理系统的例子。
图5示出包括布局处理系统504和集成电路产生系统506的集成电路(IC)制造系统502的例子。IC制造系统502配置成接收IC定义数据集(例如定义如在本文的任何例子中所述的图形处理系统),处理IC定义数据集,并根据IC定义数据集(例如其体现如在本文的任何例子中所述的图形处理系统)产生IC。IC定义数据集的处理配置IC制造系统502以制造体现如在本文的任何例子中所述的图形处理系统的集成电路。更具体地,布局处理系统504配置成接收并处理IC定义数据集以确定电路布局。从IC定义数据集确定电路布局的方法在本领域中是已知的,且例如可涉及合成RTL代码以例如从逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)方面确定待产生的电路的门级表示。可通过确定逻辑部件的位置信息从电路的门级表示确定电路布局。这可自动地或使用用户干预来完成,以便优化电路布局。当布局处理系统504确定电路布局时,它可将电路布局定义输出到IC产生系统506。IC产生系统506根据电路布局定义产生IC,如在本领域中已知的。例如,IC产生系统506可实现半导体器件制造过程以产生IC,这可涉及光刻和化学处理步骤的多步骤序列,在其其间,电子电路通常在由半导体材料制成的晶圆上被创建。电路布局定义可以是掩模的形式,掩模可在光刻过程中用于根据电路定义产生IC。可选地,被提供到IC产生系统506的电路布局定义可以以计算机可读代码的形式,IC产生系统506可使用该计算机可读代码来形成适当的掩模用于在产生IC时使用。由IC制造系统502执行的不同过程可以都在一个位置上例如由一方实现。可选地,IC制造系统502可以是分布式系统,使得一些过程可在不同的位置处被执行,并可由不同的方执行。例如,可在不同的位置上和/或由不同的方执行(i)合成表示IC定义数据集的RTL代码以形成待产生的电路的门级表示、(ii)基于门级表示来产生电路布局、(iii)根据电路布局形成掩模和(iv)使用掩模制造集成电路的一些阶段。
在其它例子中,在集成电路制造系统处的集成电路定义数据集的处理可配置系统以制造图形处理系统而没有IC定义数据集被处理,以便确定电路布局。例如,集成电路定义数据集可定义可重配处理器例如FPGA的配置,且那个数据集的处理可配置IC制造系统以产生具有那个所定义的配置的可重配处理器(如,通过将配置数据加载到FPGA)。
在一些例子中,集成电路定义数据集可包括在由数据定义的硬件上运行或与由数据集定义的硬件组合的软件。在图5中所示的例子中,IC生成系统还可由集成电路定义数据集配置成在制造集成电路时根据在集成电路定义数据处定义的程序代码将固件加载到集成电路上或以其他方式使用集成电路提供程序代码以供集成电路使用。
存储在实现所公开的方面时使用的机器可执行数据的存储器可以是非临时介质。非临时介质可以是易失性的或非易失性的。易失性非临时介质的例子包括基于半导体的存储器,例如SRAM或DRAM。可用于实现非易失性存储器的技术的例子包括光学和磁性存储器技术、闪存、相变存储器、电阻性RAM。
对“逻辑”的特定提及指执行一种或多种功能的结构。逻辑的例子包括布置成执行那些功能的电路。例如,这样的电路可包括晶体管和/或在制造过程中可用的其它硬件元件。作为例子,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器例如寄存器、触发器或锁存器、逻辑运算符例如布尔运算、数学运算符例如加法器、乘法器或移位器和互连的电路或结构。这样的元件可作为定制电路或标准单元库、宏或在其它抽象级处被提供。可在特定的布置中使这样的元件互连。逻辑可包括固定功能的电路,且电路可被编程以执行一种或多种功能;这样的编程可从固件或软件更新或控制机制提供。被识别为执行一种功能的逻辑也可包括实现组成功能或子过程的逻辑。在例子中,硬件逻辑具有实现固定功能操作或多个操作、状态机或过程的电路。
本文给出的任何范围或设备值可扩展或改变而不失去所寻求的效应,如对技术人员将明显的。
将理解,上面描述的益处和优点可涉及一个实施方式或可涉及几个实施方式。实施方式不限于解决任何或所有所陈述的问题的那些实施方式或具有任何或全部所陈述的益处和优点的那些实施方式。
对“一个”项目的任何提及指那些项目中的一个或多个。术语“包括”在本文用于意指包括所识别的方法块或元件,但这样的块或元件并不包括排他列表,且装置可包含额外的块或元件,以及方法可包含额外的操作或元件。此外,块、元件和操作本身并不隐含地是封闭的。
本文描述的方法的步骤可在适当时以任何适当的顺序或同时被执行。在附图中的方框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或并行的多个步骤的执行。此外,单独的块可从任何方法删除而不偏离本文描述的主题的精神和范围。上面描述的任何例子的方面可与所描述的其它例子中的任一个的方面组合以形成另外的例子,而不失去所寻求的效应。在附图的元件被示为由箭头连接的场合,将认识到,这些箭头示出在元件之间的通信(包括数据和控制消息)的仅仅一个示例流。在元件之间的流可以在任一方向上或在两个方向上。
将理解,优选实施方式的上述描述仅作为例子被给出,以及各种修改可由本领域中的技术人员做出。虽然上面以某个详细程度或参考一个或多个单独的实施方式描述了各种实施方式,本领域中的技术人员可对所公开的实施方式进行很多变更而不偏离本发明的精神或范围。
Claims (19)
1.一种计算系统,包括:
中央处理单元,其布置成在管理程序的控制下运行多个虚拟机,以及其中由所述中央处理单元输出的交易被分配它所相关的所述虚拟机的标识符;
CPU存储器管理单元,其布置成在由所述虚拟机使用的虚拟存储器地址和客户机物理地址之间转换;
第一根存储器管理单元,其由所述管理程序配置并布置成基于被分配到所述交易的所述虚拟机的所述标识符在由所述CPU存储器管理单元使用的客户机物理地址和实际物理存储器地址之间转换;
图形处理器单元,其包括微处理器;
GPU存储器管理单元,其布置成在由所述图形处理器单元使用的虚拟存储器地址和客户机物理地址之间转换;以及
第二根存储器管理单元,其由所述管理程序配置并布置成基于被分配到所述交易的所述虚拟机的所述标识符在由所述GPU存储器管理单元使用的客户机物理地址和实际物理存储器地址之间转换;以及
其中对存储器资源的一个或多个部分的访问作为由所述根存储器管理单元执行的地址转换的结果被控制。
2.如权利要求1所述的计算系统,其中由所述图形处理器单元输出的交易被分配虚拟机的标识符,所述标识符从接收自所述中央处理单元的触发交易继承。
3.如权利要求1所述的计算系统,还包括所述存储器资源,以及其中所述存储器资源包括多个部分。
4.如权利要求1所述的计算系统,其中所述存储器资源包括多个GPU寄存器,以及所述存储器资源的每个部分包括一个或多个GPU寄存器并被分配到所述虚拟机之一。
5.如权利要求4所述的计算系统,其中所述GPU寄存器中的每个具有相应的实际物理存储器地址,且由虚拟机对所述GPU寄存器的访问作为由所述CPU根存储器管理单元执行的地址转换的结果被控制。
6.如权利要求4所述的计算系统,还包括与所述微处理器和GPU寄存器通信的接口单元,以及其中由所述微处理器对所述GPU寄存器的访问经由所述接口被提供。
7.如权利要求6所述的计算系统,其中所述GPU寄存器中的每个具有相应的实际物理存储器地址,且由虚拟机对所述GPU寄存器的访问作为由所述CPU根存储器管理单元执行的地址转换的结果被控制,以及所述接口单元配置成监控相应于所述GPU寄存器的多个物理存储器地址。
8.如权利要求4所述的计算系统,其中在所述存储器资源的每个部分中的一个GPU寄存器包括kick寄存器,以及其中所述微处理器配置成响应于虚拟机对在所述存储器资源的它的被分配的部分中的所述kick寄存器进行写操作而运行任务。
9.如权利要求4所述的计算系统,其中在所述存储器资源的一个部分中的一个GPU寄存器包括kick寄存器,以及其中所述微处理器配置成响应于虚拟机对所述kick寄存器进行写操作而运行任务。
10.如权利要求8所述的计算系统,其中对所述kick寄存器进行写操作的所述虚拟机的所述标识符被作为输入提供给所述任务。
11.如权利要求1所述的计算系统,其中对第二存储器资源的多个部分的访问作为由所述根存储器管理单元执行的地址转换的结果被控制。
12.如权利要求11所述的计算系统,其中所述第二存储器资源包括RAM,以及所述第二存储器资源的所述多个部分中的每个被分配到所述虚拟机之一。
13.如权利要求12所述的计算系统,其中所述第二存储器资源的所述多个部分中的每个包括循环缓冲器。
14.如权利要求12所述的计算系统,其中在所述存储器资源的一部分中的GPU寄存器包括kick寄存器,以及其中所述微处理器配置成响应于虚拟机对所述kick寄存器进行写操作而运行任务,以及所述任务配置成访问在所述第二存储器资源的所述多个部分中的被分配到对所述kick寄存器进行写操作的所述虚拟机的所述部分中存储的命令。
15.如权利要求14所述的计算系统,其中所述图形处理器单元包括GPU核心,以及所述微处理器配置成基于所访问的命令和可选地基于从所述第二存储器资源的被分配到对所述kick寄存器进行写操作的所述虚拟机的所述部分访问的其它数据建立GPU任务用于由所述GPU核心执行。
16.一种方法,包括:
由管理程序将存储器资源的一部分和标识符分配到在中央处理单元上运行的多个虚拟机中的每一个;
配置第一根存储器管理单元和第二根存储器管理单元中的转换表,其中所述转换表基于所述虚拟机的标识符来定义在客户机物理地址和实际物理地址之间的转换,所述第一根管理单元与所述中央处理单元相关,而所述第二根管理单元与图形处理器单元相关;以及
在所述虚拟机中的一个或多个执行期间,使用由所述中央处理单元输出的交易所相关的所述虚拟机的所述标识符给所述交易加上标签,并且在所述根存储器管理单元内基于所述交易被加标签所用的标识符来转换在交易中的地址。
17.如权利要求16所述的方法,其中所述存储器资源包括一个或多个GPU寄存器,所述一个或多个GPU寄存器中的每个具有相应的实际物理寄存器地址,且所述方法还包括:
在所述图形处理器单元内监控相应于所述一个或多个GPU寄存器的物理存储器地址;以及
响应于检测到对相应于所述一个或多个GPU寄存器的一个的物理存储器地址的写操作,在所述图形处理器单元中的微处理器中运行任务。
18.如权利要求17所述的方法,还包括:
将对所述一个或多个GPU寄存器的所述一个进行写操作的所述虚拟机的所述标识符作为输入提供给所述任务。
19.如权利要求18所述的方法,还包括:
使用所述标识符来访问被分配到对所述一个或多个GPU寄存器进行写操作的所述虚拟机的循环缓冲器;
从所述循环缓冲器读命令;以及
基于所述命令在所述图形处理器单元中建立工作负荷。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210430601.0A CN114816664B (zh) | 2015-12-02 | 2016-11-30 | Gpu虚拟化 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1521250.9A GB2545170B (en) | 2015-12-02 | 2015-12-02 | GPU virtualisation |
GB1521250.9 | 2015-12-02 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210430601.0A Division CN114816664B (zh) | 2015-12-02 | 2016-11-30 | Gpu虚拟化 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107015845A true CN107015845A (zh) | 2017-08-04 |
CN107015845B CN107015845B (zh) | 2022-04-05 |
Family
ID=55177575
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611088395.0A Active CN107015845B (zh) | 2015-12-02 | 2016-11-30 | Gpu虚拟化 |
CN202210430601.0A Active CN114816664B (zh) | 2015-12-02 | 2016-11-30 | Gpu虚拟化 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210430601.0A Active CN114816664B (zh) | 2015-12-02 | 2016-11-30 | Gpu虚拟化 |
Country Status (4)
Country | Link |
---|---|
US (4) | US10366012B2 (zh) |
EP (2) | EP4310685A3 (zh) |
CN (2) | CN107015845B (zh) |
GB (1) | GB2545170B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408449A (zh) * | 2017-08-15 | 2019-03-01 | Arm有限公司 | 数据处理系统 |
CN110196753A (zh) * | 2019-01-21 | 2019-09-03 | 腾讯科技(北京)有限公司 | 基于容器的图形处理器gpu虚拟化方法、装置和可读介质 |
CN111782268A (zh) * | 2020-04-10 | 2020-10-16 | 北京京东尚科信息技术有限公司 | 分配硬件资源的方法、装置、设备和计算机可读介质 |
CN115840618A (zh) * | 2022-12-23 | 2023-03-24 | 科东(广州)软件科技有限公司 | 一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3249541B1 (en) * | 2016-05-27 | 2020-07-08 | NXP USA, Inc. | A data processor |
CN110419025B (zh) * | 2017-03-14 | 2023-03-03 | 华为技术有限公司 | 用于管理动态随机存取存储器(dram)的系统和方法 |
US10489185B2 (en) * | 2017-03-17 | 2019-11-26 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on attribute matching |
US10380039B2 (en) * | 2017-04-07 | 2019-08-13 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
CN107193759A (zh) * | 2017-04-18 | 2017-09-22 | 上海交通大学 | 设备内存管理单元的虚拟化方法 |
US11469953B2 (en) | 2017-09-27 | 2022-10-11 | Intel Corporation | Interworking of legacy appliances in virtualized networks |
EP4220447A1 (en) * | 2017-10-24 | 2023-08-02 | INTEL Corporation | Hardware assisted virtual switch |
US10838624B2 (en) | 2018-01-31 | 2020-11-17 | Hewlett Packard Enterprise Development Lp | Extent pool allocations based on file system instance identifiers |
US10725822B2 (en) * | 2018-07-31 | 2020-07-28 | Advanced Micro Devices, Inc. | VMID as a GPU task container for virtualization |
US11481241B2 (en) * | 2018-08-30 | 2022-10-25 | Micron Technology, Inc. | Virtual machine register in a computer processor |
CN111124594B (zh) * | 2018-10-31 | 2023-04-07 | 杭州海康威视数字技术股份有限公司 | 容器运行方法、装置、异构gpu服务器及容器集群系统 |
US10831507B2 (en) | 2018-11-21 | 2020-11-10 | SambaNova Systems, Inc. | Configuration load of a reconfigurable data processor |
US11188497B2 (en) | 2018-11-21 | 2021-11-30 | SambaNova Systems, Inc. | Configuration unload of a reconfigurable data processor |
CN109542829B (zh) * | 2018-11-29 | 2023-04-25 | 北京元心科技有限公司 | 多系统中gpu设备的控制方法、装置及电子设备 |
US10698853B1 (en) * | 2019-01-03 | 2020-06-30 | SambaNova Systems, Inc. | Virtualization of a reconfigurable data processor |
US11295008B2 (en) * | 2019-02-13 | 2022-04-05 | Nec Corporation | Graphics processing unit accelerated trusted execution environment |
US11386038B2 (en) | 2019-05-09 | 2022-07-12 | SambaNova Systems, Inc. | Control flow barrier and reconfigurable data processor |
EP3964949B1 (en) * | 2019-05-27 | 2023-09-06 | Huawei Technologies Co., Ltd. | Graphics processing method and apparatus |
GB2579112B (en) | 2019-05-31 | 2021-04-21 | Imagination Tech Ltd | Graphics processing units and methods using render progression checks |
US11055141B2 (en) | 2019-07-08 | 2021-07-06 | SambaNova Systems, Inc. | Quiesce reconfigurable data processor |
US11321068B2 (en) | 2019-09-05 | 2022-05-03 | International Business Machines Corporation | Utilizing memory coherency to improve bandwidth performance |
US11640315B2 (en) | 2019-11-04 | 2023-05-02 | Vmware, Inc. | Multi-site virtual infrastructure orchestration of network service in hybrid cloud environments |
US11709698B2 (en) * | 2019-11-04 | 2023-07-25 | Vmware, Inc. | Multi-site virtual infrastructure orchestration of network service in hybrid cloud environments |
GB2593730B (en) | 2020-03-31 | 2022-03-30 | Imagination Tech Ltd | Hypervisor removal |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
GB2603618B (en) | 2020-12-18 | 2023-04-26 | Imagination Tech Ltd | Graphics processing systems and methods |
US12020344B2 (en) * | 2021-05-25 | 2024-06-25 | Vizzio Technologies Pte. Ltd. | Highly parallel virtualized graphics processors |
US11409540B1 (en) | 2021-07-16 | 2022-08-09 | SambaNova Systems, Inc. | Routing circuits for defect repair for a reconfigurable data processor |
US11556494B1 (en) | 2021-07-16 | 2023-01-17 | SambaNova Systems, Inc. | Defect repair for a reconfigurable data processor for homogeneous subarrays |
US11327771B1 (en) | 2021-07-16 | 2022-05-10 | SambaNova Systems, Inc. | Defect repair circuits for a reconfigurable data processor |
GB2605471B (en) * | 2021-09-30 | 2023-11-01 | Imagination Tech Ltd | Processor with hardware pipeline |
US11487694B1 (en) | 2021-12-17 | 2022-11-01 | SambaNova Systems, Inc. | Hot-plug events in a pool of reconfigurable data flow resources |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8200796B1 (en) * | 2005-05-05 | 2012-06-12 | Digital Display Innovations, Llc | Graphics display system for multiple remote terminals |
CN102495769A (zh) * | 2010-09-30 | 2012-06-13 | 微软公司 | 动态虚拟设备故障恢复 |
CN102650950A (zh) * | 2012-04-10 | 2012-08-29 | 南京航空航天大学 | 一种支持多gpu虚拟化的平台架构及其工作方法 |
CN104520823A (zh) * | 2012-08-07 | 2015-04-15 | 高通股份有限公司 | 用于混合存储器管理的方法、系统和设备 |
US20150242319A1 (en) * | 2014-02-21 | 2015-08-27 | Arm Limited | Invalidating stored address translations |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070038996A1 (en) * | 2005-08-09 | 2007-02-15 | International Business Machines Corporation | Remote I/O for virtualized systems |
US7623134B1 (en) * | 2006-06-15 | 2009-11-24 | Nvidia Corporation | System and method for hardware-based GPU paging to system memory |
GB2460393B (en) * | 2008-02-29 | 2012-03-28 | Advanced Risc Mach Ltd | A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry |
US8190839B2 (en) * | 2009-03-11 | 2012-05-29 | Applied Micro Circuits Corporation | Using domains for physical address management in a multiprocessor system |
US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US9734545B2 (en) * | 2009-10-08 | 2017-08-15 | Nvidia Corporation | Software methods in a GPU |
US9606936B2 (en) * | 2010-12-16 | 2017-03-28 | Advanced Micro Devices, Inc. | Generalized control registers |
US20120167082A1 (en) * | 2010-12-23 | 2012-06-28 | Sanjay Kumar | Direct sharing of smart devices through virtualization |
WO2013091185A1 (en) * | 2011-12-21 | 2013-06-27 | Intel Corporation | Gpu accelerated address translation for graphics virtualization |
US9223721B2 (en) * | 2012-09-04 | 2015-12-29 | Arm Finance Overseas Limited | Embedded processor with virtualized security controls using guest identifications, a common kernel address space and operational permissions |
US10514938B2 (en) * | 2012-12-18 | 2019-12-24 | Dynavisor, Inc. | Making direct calls to a native device driver of a hypervisor using dynamic device driver virtualization |
US9251115B2 (en) * | 2013-03-07 | 2016-02-02 | Citrix Systems, Inc. | Dynamic configuration in cloud computing environments |
US10031767B2 (en) * | 2014-02-25 | 2018-07-24 | Dynavisor, Inc. | Dynamic information virtualization |
US9519596B2 (en) * | 2014-03-06 | 2016-12-13 | Stmicroelectronics (Grenoble 2) Sas | Resource access control in a system-on-chip |
US20150277949A1 (en) * | 2014-03-27 | 2015-10-01 | Thiam Wah Loh | Securing shared interconnect for virtual machine |
GB2525003B (en) * | 2014-04-09 | 2021-06-09 | Advanced Risc Mach Ltd | Data Processing Systems |
-
2015
- 2015-12-02 GB GB1521250.9A patent/GB2545170B/en active Active
-
2016
- 2016-11-30 CN CN201611088395.0A patent/CN107015845B/zh active Active
- 2016-11-30 CN CN202210430601.0A patent/CN114816664B/zh active Active
- 2016-12-01 EP EP23206657.1A patent/EP4310685A3/en active Pending
- 2016-12-01 EP EP16201612.5A patent/EP3185128B1/en active Active
- 2016-12-02 US US15/367,370 patent/US10366012B2/en active Active
-
2019
- 2019-06-14 US US16/442,138 patent/US10802985B2/en active Active
-
2020
- 2020-09-07 US US17/013,720 patent/US11016906B2/en active Active
-
2021
- 2021-04-27 US US17/242,028 patent/US20210263857A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8200796B1 (en) * | 2005-05-05 | 2012-06-12 | Digital Display Innovations, Llc | Graphics display system for multiple remote terminals |
CN102495769A (zh) * | 2010-09-30 | 2012-06-13 | 微软公司 | 动态虚拟设备故障恢复 |
CN102650950A (zh) * | 2012-04-10 | 2012-08-29 | 南京航空航天大学 | 一种支持多gpu虚拟化的平台架构及其工作方法 |
CN104520823A (zh) * | 2012-08-07 | 2015-04-15 | 高通股份有限公司 | 用于混合存储器管理的方法、系统和设备 |
US20150242319A1 (en) * | 2014-02-21 | 2015-08-27 | Arm Limited | Invalidating stored address translations |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408449A (zh) * | 2017-08-15 | 2019-03-01 | Arm有限公司 | 数据处理系统 |
CN110196753A (zh) * | 2019-01-21 | 2019-09-03 | 腾讯科技(北京)有限公司 | 基于容器的图形处理器gpu虚拟化方法、装置和可读介质 |
CN111782268A (zh) * | 2020-04-10 | 2020-10-16 | 北京京东尚科信息技术有限公司 | 分配硬件资源的方法、装置、设备和计算机可读介质 |
CN111782268B (zh) * | 2020-04-10 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 分配硬件资源的方法、装置、设备和计算机可读介质 |
CN115840618A (zh) * | 2022-12-23 | 2023-03-24 | 科东(广州)软件科技有限公司 | 一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 |
CN115840618B (zh) * | 2022-12-23 | 2023-08-11 | 科东(广州)软件科技有限公司 | 一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3185128B1 (en) | 2024-02-07 |
US11016906B2 (en) | 2021-05-25 |
US20170161204A1 (en) | 2017-06-08 |
EP4310685A3 (en) | 2024-03-27 |
US20200409863A1 (en) | 2020-12-31 |
CN107015845B (zh) | 2022-04-05 |
GB201521250D0 (en) | 2016-01-13 |
US20190294556A1 (en) | 2019-09-26 |
US10802985B2 (en) | 2020-10-13 |
US10366012B2 (en) | 2019-07-30 |
CN114816664B (zh) | 2023-09-26 |
GB2545170B (en) | 2020-01-08 |
EP3185128A1 (en) | 2017-06-28 |
GB2545170A (en) | 2017-06-14 |
CN114816664A (zh) | 2022-07-29 |
EP4310685A2 (en) | 2024-01-24 |
US20210263857A1 (en) | 2021-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107015845A (zh) | Gpu虚拟化 | |
CN101606130B (zh) | 在处理器系统的指令级使能资源分配标识的方法和装置 | |
CN105892955B (zh) | 一种管理存储系统的方法及设备 | |
TW201841118A (zh) | 採用映射記憶體提供多重命名空間的方法及設備 | |
CN110383246A (zh) | 虚拟机控制可编程硬件的单独子集 | |
CN109791536A (zh) | 可配置逻辑平台 | |
CN105373344A (zh) | 虚拟化超大规模环境中的数据管理方案 | |
CN107239413A (zh) | 处理存储器请求 | |
CN104115129A (zh) | 用于从处理器到存储器子系统智能刷新数据的系统和方法 | |
CN103946826A (zh) | 用于在公共存储器通道上实现多级存储器层级的设备和方法 | |
CN107924340A (zh) | 资源配置系统、资源配置方法以及资源配置程序 | |
CN104052621A (zh) | 用于跨快速外围组件互连(pcie)段的平台管理消息的方法和系统 | |
CN103946812A (zh) | 用于实现多级别存储器分级体系的设备和方法 | |
CN106598480A (zh) | 具有接口控制机制的电子系统及其操作方法 | |
CN104050118B (zh) | 提供对设备功能的访问的装置、系统和方法 | |
CN103309620B (zh) | 用于多存储子系统虚拟化的管理接口 | |
CN108628548A (zh) | 从耦合于计算装置的单个存储装置模拟多个存储装置 | |
CN104781794A (zh) | 用于非易失性存储器中的数据结构的暂时和持久状态之间的原地改变 | |
CN106663061A (zh) | 用于可编程逻辑的存储器的虚拟化 | |
US20150347016A1 (en) | Input/output virtualization (iov) host controller (hc) (iov-hc) of a flash-memory-based storage device | |
CN106502760A (zh) | 一种虚拟机亲和性策略可视化的方法及装置 | |
CN110275840A (zh) | 在存储器接口上的分布式过程执行和文件系统 | |
CN109314103A (zh) | 用于远程现场可编程门阵列处理的方法和装置 | |
US20220108135A1 (en) | Methods and apparatus for performing a machine learning operation using storage element pointers | |
CN107209643A (zh) | 虚拟化环境中的存储资源管理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |