IP Library › Granted Patent US 10,181,171
Granted Patent B2
US 10,181,171 · App. 14/085,778 · Granted Jan 15, 2019

Sharing resources between a CPU and GPU

Inventors: Eric Sprangle (Austin, TX); Matt Craighead (Austin, TX); Chris Goodman (Austin, TX); Belliappa Kuttanna (Austin, TX)
Assignee: Intel Corporation
G06T1/20
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 10,181,171
App. No.
14/085,778
Granted
Jan 15, 2019
Kind
B2
Abstract

A technique to share execution resources. In one embodiment, a CPU and a GPU share resources according to workload, power considerations, or available resources by scheduling or transferring instructions and information between the CPU and GPU.

Claims (29)

1. An apparatus comprising:

a central processing unit (CPU);

a graphics processing unit (GPU) coupled to the CPU; and

shared scheduling logic to determine what GPU and CPU processing resources are best used to perform one or more instructions, and to cause resource sharing by the CPU and the GPU by scheduling the one or more instructions for execution on one of the CPU and GPU, but to be performed by the execution resources of the other one of the CPU and GPU, wherein execution results of the one or more instructions are to be returned to said one of the CPU and GPU over a virtual page of a shared memory, and wherein the shared scheduling logic comprises a hypervisor to control the CPU and the GPU as virtual machines, wherein the other one of the CPU and GPU sends a direct link to the virtual page to indicate to the one of the CPU and GPU that information is available in the shared memory, the direct link to include page information to prevent one of the CPU and GPU from closing a page that the other one of the CPU and GPU may need.

2. The apparatus of claim 1 further comprising logic to communicate page information between the CPU and GPU.

3. The apparatus of claim 2 , wherein the GPU includes floating point execution resources to be used by the CPU.

4. The apparatus of claim 1 , wherein the CPU and GPU are to utilize a coherency filter to access the virtual page of the shared memory.

5. The apparatus of claim 1 , wherein the CPU and GPU share floating point logic.

6. The apparatus of claim 1 , wherein the one or more instructions are part of user-level software written without regard to underlying processing resources, and wherein the shared scheduling logic determines what resources are best used for execution, the user-level software being unaware of the resource sharing.

7. The apparatus of claim 1 , wherein the CPU and GPU are implemented as part of a single die.

8. The apparatus of claim 1 , wherein the CPU and GPU are incorporated into a single processor.

9. The apparatus of claim 1 , wherein the shared scheduling logic is to schedule sequential instructions for execution by the CPU, and to schedule single-instruction, multiple-data (SIMD) and multiple-instruction, multiple-data (MIMD) instructions for execution by the GPU.

10. The apparatus of claim 1 , wherein the shared scheduling logic is to schedule integer instructions for execution by the CPU, and to schedule floating-point instructions for execution by the GPU.

11. The apparatus of claim 10 , wherein integer execution resources and floating-point execution resources each have their own dedicated scheduling logic used to schedule integer instructions and floating-point instructions, respectively, for execution.

12. The apparatus of claim 1 , wherein the shared memory comprises a physical memory having its physical pages mapped onto a plurality of virtual pages.

13. A system comprising:

a central processing unit (CPU);

a graphics processing unit (GPU) coupled to the CPU;

shared scheduling logic to determine what GPU and CPU processing resources are best used to perform one or more instructions, and to cause resource sharing by the CPU and the GPU by scheduling the one or more instructions for execution on one of the CPU and GPU, but to be performed by the execution resources of the other one of the CPU and GPU, wherein execution results of the one or more instructions to be returned to said one of the CPU and GPU over a virtual page of a shared memory, and wherein the shared scheduling logic comprises a hypervisor to control the CPU and the GPU as virtual machines, wherein the other one of the CPU and GPU sends a direct link to the virtual page to indicate to the one of the CPU and GPU that information is available in the shared memory, the direct link to include page information to prevent one of the CPU and GPU from closing a page that the other one of the CPU and GPU may need.

14. The system of claim 13 further comprising logic to communicate page information between the CPU and GPU.

15. The system of claim 13 , wherein the GPU includes floating point execution resources to be used by the CPU.

16. A method comprising:

determining, using shared scheduling logic, what processing resources of a central processing unit (CPU) and a graphics processing unit (GPU) to best use to perform an instruction;

scheduling, using the shared scheduling logic, the instruction on a first processor having a first set of execution resources, wherein the first processor is one of the CPU and the GPU;

migrating the scheduled instruction from the first processor to be performed on a second processor having a second set of execution resources asymmetric with the first processor; and

transferring information resulting from performing the instruction on the second processor to the first processor through a virtual page of shared memory, wherein the shared scheduling logic comprises a hypervisor to control the CPU and the GPU as virtual machines, wherein the other one of the CPU and GPU sends a direct link to the virtual page to indicate to the one of the CPU and GPU that information is available in the shared memory, the direct link to include page information to prevent one of the CPU and GPU from closing a page that the other one of the CPU and GPU may need.

17. The method of claim 16 , wherein the first processor is a CPU and the second processor is a GPU.

18. The method of claim 17 , further comprising communicating page information from between the first and second processor.

19. The method of claim 16 , wherein the second processor includes floating point execution resources to be used by the first processor.

Continuity (2)
Continuation 12655577 · Dec 31, 2009
Related Publication 20140078159A1 · Mar 20, 2014