Paravirtualized virtual GPU

US10310879B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10310879-B2
Application numberUS-201113270082-A
CountryUS
Kind codeB2
Filing dateOct 10, 2011
Priority dateOct 10, 2011
Publication dateJun 4, 2019
Grant dateJun 4, 2019

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 embodiment of the invention sets forth a primary processing unit, a secondary processing unit coupled to the primary processing unit and accessible via a plurality of channels and a plurality of guest virtual machines executing on the primary processing unit. Each guest virtual machine includes a driver associated with the secondary processing unit, and a privileged virtual machine executing on the primary processing unit and configured to allocate a different set of channels of the plurality of channels to each of the drivers included in the guest virtual machines, where a first set of channels allocated to a first driver enables the first driver to access the secondary processing unit without conflicting with any of the other and with minimal performance overhead by directly accessing the secondary processing unit channels.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer system, comprising: a primary processing unit; a secondary processing unit that is coupled to the primary processing unit and accessible via a plurality of channels; a plurality of guest virtual machines executing on the primary processing unit, wherein each guest virtual machine includes a driver associated with the secondary processing unit; and a privileged virtual machine executing on the primary processing unit and configured to allocate a different set of channels included in the plurality of channels to each of the drivers included in the plurality of guest virtual machines, wherein a first set of channels included in the plurality of channels allocated to a first driver included in a first guest virtual machine enables the first driver to directly access the secondary processing unit without conflicting with and being protected from any of the other drivers included in the plurality of guest virtual machines, and wherein the first driver accesses the second processing unit by writing commands to a command buffer and communicating addresses of the commands to the secondary processing unit via the first set of channels. 2. The computer system of claim 1 , wherein each guest virtual machine includes a proxy resource manager configured to communicate with the privileged virtual machine via remote procedure calls. 3. The computer system of claim 2 , wherein the first guest virtual machine includes a first proxy resource manager configured to: transmit a request to the privileged virtual machine to set up access to the secondary processing unit for the first driver, and receive a communication from the privileged virtual machine that the first set of channels has been allocated to the first driver, wherein the privileged virtual machine maps one or more control registers associated with the first set of channels into a portion of a memory space accessible by the first driver, wherein each control register is associated with a different channel in the first set of channels, and each channel in the first set of channels is populated with commands based on the contents of the associated control register associated with the channel. 4. The computer system of claim 3 , wherein the first driver accesses the second processing unit by further populating a control register associated with a first channel included in the first set of channels with at least a first memory address associated with the command buffer. 5. The computer system of claim 2 , wherein the privileged virtual machine includes an emulation software module that is configured to emulate a portion of the secondary processing unit, and the proxy resource manager is configured to: route a request to access the portion of the second processing unit from the first driver to the emulation software module, and transmit data from the emulation software module to the first driver in response to the request. 6. The computer system of claim 2 , wherein the privileged virtual machine includes an emulation software module that is notified each time an event is raised by the second processing unit, and a first proxy resource manager is configured to: route a request to register for a first event that is to be raised by the second processing unit to the emulation software module, and transmit a notification from the emulation software module to the first driver when the first event is raised by the second processing unit. 7. The computer system of claim 2 , wherein the privileged virtual machine includes an emulation software module that is notified by the second processing unit each time a fault associated with any of the channels included in the plurality of channels occurs. 8. The computer system of claim 7 , wherein a first proxy resource manager is configured to receive a notification from the emulation software module when a fault associated with a first channel included in the first set of channels occurs and to transmit the notification to the first driver. 9. The computer system of claim 1 , further comprising a display, wherein each of the guest virtual machines includes a display driver configured to render display frames onto the display. 10. The computer system of claim 9 , wherein the privileged virtual machine includes an emulation software module that is configured to trap a display command transmitted by a first display driver included within the first guest virtual machine that pertains to rendering a first display frame onto the display. 11. The computer system of claim 10 , wherein the emulation software module is further configured to translate the display command into a different display command for rendering the first display frame in a portion of the display allocated to the first guest virtual machine. 12. The computer system of claim 1 , wherein the privileged virtual machine is configured to de-allocate the first set of channels from the first driver when the first guest virtual machine is terminated. 13. A method for configuring a virtual machine executing on a primary processing unit to access a secondary processing unit, the method comprising: receiving a first request from a driver residing within the virtual machine to set up access to the secondary processing unit; transmitting a second request to a hardware resource manager to set up access to the secondary processing unit for the driver; receiving a communication from the hardware resource manager that a first channel providing access to the secondary processing unit has been allocated to the driver; and notifying the driver that the driver can transmit one or more commands directly to the secondary processing unit via the first channel, wherein the driver writes commands to a command buffer and communicates addresses of the commands to the secondary processing unit via the first channel. 14. The method of claim 13 , further comprising mapping a set of control registers associated with the first channel into a portion of a memory space accessible by the driver. 15. The method of claim 14 , wherein the driver notifies a control register associated with the first channel that the one or more commands are stored in the command buffer, wherein the one or more commands stored in the command buffer are transmitted to the second processing unit via the first channel in response to the notification. 16. The method of claim 13 , further comprising trapping a first display command transmitted by a display driver executing within the virtual machine for rendering a display frame onto a display, and translating the first display command into a second display command for rendering the display frame in a portion of the display allocated to the virtual machine. 17. A non-transitory computer readable medium for storing instructions that, when executed by a processor, cause the processor to configure a virtual machine executing on a primary processing unit to access a secondary processing unit, by performing the steps of: receiving a first request from a driver residing within the virtual machine to set up access to the secondary processing unit; transmitting a second request to a hardware resource manager to set up access to the secondary processing unit for the driver; receiving a communication from the hardware resource manager that a first channel providing access to the secondary processing unit has been allocated to the driver; and notifying the driver that the driver can transmit one or more commands directly to the secondary processing unit via the first channel, wherein the driver writes commands to a c

Assignees

Inventors

Classifications

  • G06F9/4555Primary

    Para-virtualisation, i.e. guest operating system has to be modified · CPC title

  • I/O management, e.g. providing access to device drivers or storage · CPC title

  • Hypervisor-specific management and integration aspects · 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 US10310879B2 cover?
An embodiment of the invention sets forth a primary processing unit, a secondary processing unit coupled to the primary processing unit and accessible via a plurality of channels and a plurality of guest virtual machines executing on the primary processing unit. Each guest virtual machine includes a driver associated with the secondary processing unit, and a privileged virtual machine executing…
Who is the assignee on this patent?
Earl William J, Kranzusch Kevin J, Popuri Satya Kiran, and 2 more
What technology area does this patent fall under?
Primary CPC classification G06F9/4555. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jun 04 2019 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 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).