Apparatus and method for efficient graphics virtualization

US10891773B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10891773-B2
Application numberUS-201715482677-A
CountryUS
Kind codeB2
Filing dateApr 7, 2017
Priority dateApr 7, 2017
Publication dateJan 12, 2021
Grant dateJan 12, 2021

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

An apparatus and method are described for allocating local memories to virtual machines. For example, one embodiment of an apparatus comprises: a command streamer to queue commands from a plurality of virtual machines (VMs) or applications, the commands to be distributed from the command streamer and executed by graphics processing resources of a graphics processing unit (GPU); a tile cache to store graphics data associated with the plurality of VMs or applications as the commands are executed by the graphics processing resources; and tile cache allocation hardware logic to allocate a first portion of the tile cache to a first VM or application and a second portion of the tile cache to a second VM or application; the tile cache allocation hardware logic to further allocate a first region in system memory to store spill-over data when the first portion of the tile cache and/or the second portion of the file cache becomes full.

First claim

Opening claim text (preview).

What is claimed is: 1. A processor comprising: a command streamer to queue commands from a plurality of virtual machines (VMs), the commands to be distributed from the command streamer and executed by graphics processing resources of a graphics processing unit (GPU); a tile cache to store graphics data associated with the plurality of VMs as the commands are executed by the graphics processing resources; and tile cache allocation hardware logic to allocate a first portion of the tile cache to a first VM and a second portion of the tile cache to a second VM, wherein a priority associated with each of the plurality of VMs and sizes of the first portion and second portion of the tile cache are selected in accordance with the priorities; the tile cache allocation hardware logic to further allocate a first region in system memory to store spill-over data for the first VM when the first portion of the tile cache allocated to the first VM becomes full and the second portion of the tile cache allocated to the second VM is available. 2. The processor as in claim 1 wherein the tile cache allocation hardware logic comprises circuitry and/or logic to determine whether requested data is stored in the tile cache and, if not, to send a request to the first region in memory. 3. The processor as in claim 1 wherein the tile cache allocation hardware logic is to allocate a relatively larger size for the first portion than the second portion if the first VM has a relatively higher priority than the second VM. 4. The processor as in claim 1 further comprising: a shared local memory (SLM) to be shared by the first VM and the second VM; and an SLM controller to allocate a first portion of the SLM to the first VM and a second portion of the SLM to the second VM; the SLM controller to further allocate a second region in the system memory to store spill-over data when at least one of the first portion of the SLM and the second portion of the SLM becomes full. 5. The processor as in claim 4 wherein the SLM controller comprises circuitry and/or logic to determine whether requested data is stored in the SLM and, if not, to send a request to the second region in memory. 6. The processor as in claim 4 wherein the SLM controller comprises prioritization logic to determine a priority associated with each of the plurality of VMs and to determine a size of the first portion and second portion of the SLM in accordance with the priorities. 7. The processor as in claim 6 wherein the SLM controller is to allocate a relatively larger size for the first portion than the second portion of the SLM if the first VM has a relatively higher priority than the second VM. 8. The processor as in claim 1 wherein the graphics processing resources are subdivided into a plurality of slices, the processor further comprising: a power/performance management unit to independently set at least one of voltage and frequency provided to each of the plurality of slices based on identifying the slices used to process the first and second VMs and priorities associated with the first VM and the second VM. 9. The processor as in claim 1 , wherein one or more counters are programmed in accordance with relative priorities of the plurality of VMs. 10. The processor as in claim 9 , wherein the one or more counters count numbers of VM access to a memory fabric. 11. The processor as in claim 9 , wherein the one or more counters count numbers of elapsed cycles. 12. The processor as in claim 1 , wherein storing the spill-over data in the system memory comprises translating guest virtual addresses of the first VM to guest page numbers, and translating the guest page numbers to physical page numbers. 13. The processor as in claim 1 , wherein the first region is to store spill-over data for the second VM when the second portion of the tile cache allocated to the second VM becomes full and the first portion of the tile cache allocated to the first VM is available. 14. The processor as in claim 13 , wherein the first VM is to store the spill-over data using a first base address, and the second VM is to store the spill-over data using a second base address different from the first base address. 15. A method comprising: queuing commands from a plurality of virtual machines (VMs), the commands to be distributed and executed by graphics processing resources of a graphics processing unit (GPU); storing graphics data associated with the plurality of VMs in a tile cache as the commands are executed by the graphics processing resources; allocating a first portion of the tile cache to a first VM and a second portion of the tile cache to a second VM, wherein a priority associated with each of the plurality of VMs and sizes of the first portion and second portion of the tile cache are selected in accordance with the priorities; and allocating a first region in system memory to store spill-over data for the first VM when the first portion of the tile cache allocated to the first VM becomes full and the second portion of the tile cache allocated to the second VM is available. 16. The method as in claim 15 further comprising: determining whether requested data is stored in the tile cache and, if not, sending a request to the first region in memory. 17. The method as in claim 15 wherein a relatively larger size is to be allocated for the first portion compared to the second portion if the first VM has a relatively higher priority than the second VM. 18. The method as in claim 15 further comprising: allocating a first portion of a shared local memory (SLM) to the first VM and a second portion of the SLM to the second VM; and allocating a second region in the system memory to store spill-over data when at least one of the first portion of the SLM and the second portion of the SLM becomes full. 19. The method as in claim 18 further comprising: determining whether requested data is stored in the SLM and, if not, sending a request to the second region in memory. 20. The method as in claim 18 further comprising: determining a priority associated with each of the plurality of VMs; and selecting a size of the first portion and second portion of the SLM in accordance with the priorities. 21. The method as in claim 20 further comprising: allocating a relatively larger size for the first portion than the second portion of the SLM if the first VM has a relatively higher priority than the second VM. 22. The method as in claim 15 wherein the graphics processing resources are subdivided into a plurality of slices, the method further comprising: independently setting at least one of voltage and frequency provided to each of the plurality of slices based on identifying the slices used to process the first and second VMs and priorities associated with the first VM and the second VM. 23. A non-transitory machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform: queuing commands from a plurality of virtual machines (VMs), the commands to be distributed and executed by graphics processing resources of a graphics processing unit (GPU); storing graphics data associated with the plurality of VMs in a tile cache as the commands are executed by the graphics processing resources; allocating a first portion of the tile cache to a first VM and a second portion of the tile cache to a second VM, wherein a priority associated with each of the plurality of VMs and sizes of the

Assignees

Inventors

Classifications

  • Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS · CPC title

  • Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation · CPC title

  • Distribution of virtual machine instances; Migration and load balancing · CPC title

  • Hypervisor-specific management and integration aspects · CPC title

  • Image or video data · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10891773B2 cover?
An apparatus and method are described for allocating local memories to virtual machines. For example, one embodiment of an apparatus comprises: a command streamer to queue commands from a plurality of virtual machines (VMs) or applications, the commands to be distributed from the command streamer and executed by graphics processing resources of a graphics processing unit (GPU); a tile cache to …
Who is the assignee on this patent?
Intel Corp
What technology area does this patent fall under?
Primary CPC classification G06F9/45554. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jan 12 2021 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 4 related publications on this page (citations in our corpus or others sharing the same primary CPC).