IP Library Granted Patent US 9,378,572
Granted Patent B2
US 9,378,572 · App. 13/588,308 · Granted Jun 28, 2016

Shared virtual memory

Inventors: Jayanth N. Rao (Folsom, CA); Ronald W. Silvas (Sacramento, CA); Ankur N. Shah (Folsom, CA)
Assignee: Intel Corporation
G06T11/60G06F12/1009G06F12/109G06T1/60G06F12/126G06F2212/302G06F2212/656G06F2212/657Y02B60/1225
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,378,572
App. No.
13/588,308
Granted
Jun 28, 2016
Kind
B2
Abstract

A method and system for shared virtual memory between a central processing unit (CPU) and a graphics processing unit (GPU) of a computing device are disclosed herein. The method includes allocating a surface within a system memory. A CPU virtual address space may be created, and the surface may be mapped to the CPU virtual address space within a CPU page table. The method also includes creating a GPU virtual address space equivalent to the CPU virtual address space, mapping the surface to the GPU virtual address space within a GPU page table, and pinning the surface.

Claims (45)

1. A method for shared virtual memory, comprising:

allocating a surface within a physical memory, wherein the surface is directly shared between a CPU and a GPU and data on the surface is automatically visible without copying data;

creating a CPU virtual address space;

mapping the surface to the CPU virtual address space within a CPU page table;

creating a GPU virtual address space equivalent to the CPU virtual address space;

mapping the surface to the GPU virtual address space within a GPU page table; and

pinning the surface.

2. The method of claim 1 , comprising sharing physical memory between the CPU and the GPU via the surface without copying data from a CPU memory to a GPU memory.

3. The method of claim 1 , comprising allocating the surface in response to input from an application running on the CPU of the computing device.

4. The method of claim 1 , wherein the method is executed by a driver of the computing device.

5. The method of claim 1 , comprising ensuring data from a cache of the CPU and a cache of the GPU is coherent with a last level cache (LLC) that is shared between the CPU and the GPU.

6. The method of claim 1 , comprising:

offloading an operation from the CPU to the GPU;

performing the operation within the GPU; and

sending a completion signal to the CPU, wherein the completion signal comprises an indication that the GPU has performed some computation that has resulted in a modification of data within the surface.

7. The method of claim 1 , wherein a device driver synchronizes the processing of data between the CPU and the GPU.

8. The method of claim 1 , comprising translating the CPU virtual address space and the GPU virtual address space to determine corresponding physical locations within the surface.

9. A computing device, comprising:

a central processing unit (CPU) that is adapted to execute stored instructions;

a GPU than includes a GPU page table;

a storage device that stores instructions, the storage device comprising processor executable code that, when executed by the CPU, is adapted to:

allocate a surface within a physical memory, wherein the surface is directly shared between the CPU and the GPU and data on the surface is automatically visible without copying data;

create a CPU virtual address space;

map the surface to the CPU virtual address space within a CPU page table;

create a GPU virtual address space equivalent to the CPU virtual address space;

map the surface to the GPU virtual address space within the GPU page table; and

pin the surface.

10. The computing device of claim 9 , wherein the CPU and the GPU share physical memory without the processor executable code being configured to copy data from a CPU memory to a GPU memory.

11. The computing device of claim 9 , wherein the CPU and the GPU are on a same die within the computing device.

12. The computing device of claim 9 , wherein the CPU and the GPU share a last level cache (LLC), and wherein the LLC retrieves data from any cache of the CPU or GPU.

13. The computing device of claim 9 , wherein the CPU and the GPU comprise a unified memory architecture (UMA).

14. The computing device of claim 9 , wherein the processor executable code is adapted to allocate the surface in response to input from an application running on the CPU of the computing device.

15. The computing device of claim 9 , wherein the processor executable code is configured to map the virtual memory addresses within the CPU page table and the GPU page table to physical locations within the surface by conversion of the plurality of virtual memory addresses within the CPU page table to physical addresses and conversion of the plurality of virtual memory addresses within the GPU page table to physical addresses.

16. The computing device of claim 9 , comprising a driver configured to initiate execution of the processor executable code.

17. The computing device of claim 9 , further comprising a radio and a display, the radio and display communicatively coupled at least to the central processing unit.

18. At least one non-transitory computer readable medium having instructions stored therein that, in response to being executed on a computing device, cause the computing device to:

allocate a surface within a physical memory, wherein the surface is directly shared between a CPU and a GPU and data on the surface is automatically visible without copying data;

generate a CPU virtual address space;

map the surface to the CPU virtual address space within a CPU page table;

generate a GPU virtual address space equivalent to the CPU virtual address space;

map the surface to the GPU virtual address space within the GPU page table; and

pin the surface.

19. The at least one non-transitory computer readable medium of claim 18 , wherein the physical memory is shared between the CPU and the GPU without copying data from a CPU memory to a GPU memory.

20. The at least one non-transitory computer readable medium of claim 18 , further comprising instructions stored thereon, which cause the computing device to:

ensure data from a cache of the CPU and a cache of the GPU is coherent with a last level cache (LLC).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2012
From: RAO, JAYANTH N.; SILVAS, RONALD W.; SHAH, ANKUR N.
To: INTEL CORPORATION
Reel/Frame 029214/0849 →
Continuity (1)
Related Publication 20140049551A1 · Feb 20, 2014