IP Library › Granted Patent US 9,779,469
Granted Patent B2
US 9,779,469 · App. 14/828,215 · Granted Oct 3, 2017

Register spill management for general purpose registers (GPRs)

Inventors: Lee Howes (San Diego, CA); Maxim Kazakov (San Diego, CA)
Assignee: QUALCOMM Incorporated
G06T1/20G06F3/0604G06F3/0647G06F3/0683G06F8/441G06F9/30127G06F9/30138G06F9/462G06T1/60
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,779,469
App. No.
14/828,215
Granted
Oct 3, 2017
Kind
B2
Abstract

Techniques are described for copying data only from a subset of memory locations allocated to a set of instructions to free memory locations for higher priority instructions to execute. Data from a dynamic portion of one or more general purpose registers (GPRs) allocated to the set of instructions may be copied and stored to another memory unit while data from a static portion of the one or more GPRs allocated to the set of instructions may not be copied and stored to another memory unit.

Claims (67)

1. A method of executing instructions on a graphics processing unit (GPU), the method comprising:

executing, with one or more processing elements of one or more cores of the GPU, a first set of instructions;

receiving information allocating a set of static memory locations in one or more general purpose registers (GPRs) for the first set of instructions prior to determining that a second set of instructions to be executed on the GPU are given higher priority, wherein the set of static memory locations comprises memory locations in the one or more GPRs that are only allocated to the first set of instructions throughout the execution of the first set of instructions;

determining a set of dynamic memory locations in the one or more GPRs for the first set of instructions prior to determining that the second set of instructions to be executed on the GPU are given higher priority, wherein at least one of the dynamic memory locations in the set of dynamic memory locations comprises a memory location that is allocated to the first set of instructions and then allocated to one or more other sets of instructions during the execution of the first set of instructions;

determining, with the GPU, that the second set of instructions to be executed on the GPU is given higher priority than the first set of instructions executing on the GPU;

copying, with the GPU, data stored in a subset, and not all, of the one or more GPRs that are allocated to the first set of instructions to another memory unit in response to determining that the second set of instructions are given higher priority, the one or more GPRs are accessible by the one or more cores of the GPU on which the first and second sets of instructions execute, wherein copying data stored in the subset, and not all, of the one or more GPRs comprises:

copying data stored in one or more of the dynamic memory locations in the one or more GPRs that are allocated to the first set of instructions to the other memory unit; and

avoiding copying of data stored in any of the static memory locations in the one or more GPRs that are allocated to the first set of instructions to any other memory unit; and

executing, with the one or more processing elements and after the copying, the second set of instructions utilizing the subset of the one or more GPRs.

2. The method of claim 1 , further comprising:

allocating the one or more dynamic memory locations in the one or more GPRs that were allocated to the first set of instructions to the second set of instructions,

wherein executing the second set of instructions comprises executing the second set of instructions utilizing the one or more dynamic memory locations in the one or more GPRs allocated to the second set of instructions.

3. The method of claim 1 , wherein determining the set of dynamic memory locations comprises determining the set of dynamic memory locations in response to receiving a request for memory locations in the one or more GPRs during execution of the first set of instructions.

4. The method of claim 1 , wherein the first set of instructions and the second set of instructions are for different programs, and wherein determining that the second set of instructions are given higher priority comprises determining that the second set of instructions are given higher priority in response to receiving a command instructing the GPU to execute the second set of instructions in place of the first set of instructions.

5. The method of claim 1 , wherein the first set of instructions and the second set of instructions are for the same program, and wherein determining that the second set of instructions are given higher priority comprises:

determining that a plurality of instructions of the first set of instructions have completed execution to a block point; and

determining that a plurality of instructions of the second set of instructions should be executed before remaining instructions of the first set of instructions are executed in response to determining that the plurality of instructions of the first set of instructions have complete execution to block point.

6. A device for executing instructions, the device comprising:

one or more general purposes registers (GPRs); and

a graphics processing unit (GPU) configured to:

execute, with one or more processing elements of one or more cores of the GPU, a first set of instructions;

receive information allocating a set of static memory locations in the one or more GPRs for the first set of instructions prior to determining that a second set of instructions to be executed on the GPU are given higher priority, wherein the set of static memory locations comprises memory locations in the one or more GPRs that are only allocated to the first set of instructions throughout the execution of the first set of instructions;

determine a set of dynamic memory locations in the one or more GPRs for the first set of instructions prior to determining that the second set of instructions to be executed on the GPU are given higher priority, wherein at least one of the dynamic memory locations in the set of dynamic memory locations comprises a memory location that is allocated to the first set of instructions and then allocated to one or more other sets of instructions during the execution of the first set of instructions;

determine that the second set of instructions to be executed on the GPU is given higher priority than the first set of instructions executing on the GPU;

copy data stored in a subset, and not all, of the one or more GPRs that are allocated to the first set of instructions to another memory unit in response to determining that the second set of instructions are given higher priority, wherein the one or more GPRs are accessible by the one or more cores of the GPU on which the first and second sets of instructions execute, wherein to copy data stored in the subset, and not all, of the one or more GPRs, the GPU is configured to:

copy data stored in one or more of the dynamic memory locations in the one or more GPRs that are allocated to the first set of instructions to the other memory unit; and

avoid copying of data stored in any of the static memory locations in the one or more GPRs that are allocated to the first set of instructions to any other memory unit; and

execute, with the one or more processing elements and after the copying, the second set of instructions utilizing the subset of the one or more GPRs.

7. The device of claim 6 , wherein the GPU comprises the one or more GPRs.

8. The device of claim 6 , wherein the GPU is configured to:

allocate the one or more dynamic memory locations in the one or more GPRs that were allocated to the first set of instructions to the second set of instructions,

wherein to execute the second set of instructions, the GPU is configured to execute the second set of instructions utilizing the one or more dynamic memory locations in the one or more GPRs allocated to the second set of instructions.

9. The device of claim 6 , wherein to determine the set of dynamic memory locations, the GPU is configured to determine the set of dynamic memory locations in response to receiving a request for memory locations in the one or more GPRs during execution of the first set of instructions.

10. The device of claim 6 , wherein the first set of instructions and the second set of instructions are for different programs, and wherein to determine that the second set of instructions are given higher priority, the GPU is configured to determine that the second set of instructions are given higher priority in response to receiving a command instructing the GPU to execute the second set of instructions in place of the first set of instructions.

11. The device of claim 6 , wherein the first set of instructions and the second set of instructions are for the same program, and wherein to determine that the second set of instructions are given higher priority, the GPU is configured to:

determine that a plurality of instructions of the first set of instructions have completed execution to a block point; and

determine that a plurality of instructions of the second set of instructions should be executed before remaining instructions of the first set of instructions are executed in response to determining that the plurality of instructions of the first set of instructions have complete execution to block point.

12. A device for executing instructions, the device comprising:

one or more general purposes registers (GPRs); and

a graphics processing unit (GPU) comprising:

means for executing a first set of instructions, wherein the GPU comprises one or more cores, and the one or more cores comprise the means for executing;

means for receiving information allocating a set of static memory locations in the one or more GPRs for the first set of instructions prior to determining that a second set of instructions to be executed on the GPU are given higher priority, wherein the set of static memory locations comprises memory locations in the one or more GPRs that are only allocated to the first set of instructions throughout the execution of the first set of instructions;

means for determining a set of dynamic memory locations in the one or more GPRs for the first set of instructions prior to determining that the second set of instructions to be executed on the GPU are given higher priority, wherein at least one of the dynamic memory locations in the set of dynamic memory locations comprises a memory location that is allocated to the first set of instructions and then allocated to one or more other sets of instructions during the execution of the first set of instructions;

means for determining that the second set of instructions to be executed on the GPU is given higher priority than the first set of instructions executing on the GPU;

means for copying data stored in a subset, and not all, of the one or more GPRs that are allocated to the first set of instructions to another memory unit in response to determining that the second set of instructions are given higher priority, wherein the one or more GPRs are accessible by the one or more cores of the GPU on which the first and second sets of instructions execute, wherein the means for copying data stored in the subset, and not all, of the one or more GPRs comprises means for copying data stored in one or more of the dynamic memory locations in the one or more GPRs that are allocated to the first set of instructions to the other memory unit, and avoiding copying of data stored in any of the static memory locations in the one or more GPRs that are allocated to the first set of instructions to any other memory unit; and

means for executing, after the copying, the second set of instructions utilizing the subset of the one or more GPRs.

13. The device of claim 12 , further comprising:

means for allocating the one or more dynamic memory locations in the one or more GPRs that were allocated to the first set of instructions to the second set of instructions,

wherein the means for executing the second set of instructions comprises means for executing the second set of instructions utilizing the one or more dynamic memory locations in the one or more GPRs allocated to the second set of instructions.

14. The device of claim 12 , wherein the means for determining the set of dynamic memory locations comprises means for determining the set of dynamic memory locations in response to receiving a request for memory locations in the one or more GPRs during execution of the first set of instructions.

15. A computer-readable storage medium having instructions stored thereon that when executed cause one or more processors to:

execute, with one or more processing elements of one or more cores of a graphics processing unit (GPU), a first set of instructions;

receive information allocating a set of static memory locations in one or more general purpose registers (GPRs) for the first set of instructions prior to determining that a second set of instructions to be executed on the GPU are given higher priority, wherein the set of static memory locations comprises memory locations in the one or more GPRs that are only allocated to the first set of instructions throughout the execution of the first set of instructions; and

determine a set of dynamic memory locations in the one or more GPRs for the first set of instructions prior to determining that the second set of instructions to be executed on the GPU are given higher priority, wherein at least one of the dynamic memory locations in the set of dynamic memory locations comprises a memory location that is allocated to the first set of instructions and then allocated to one or more other sets of instructions during the execution of the first set of instructions;

determine that the second set of instructions to be executed on the GPU is given higher priority than the first set of instructions executing on the GPU;

copy data stored in a subset, and not all, of the one or more GPRs that are allocated to the first set of instructions to another memory unit in response to determining that the second set of instructions are given higher priority, wherein the one or more GPRs are accessible by the one or more cores of the GPU on which the first and second sets of instructions execute, wherein the instructions that cause the one or more processors to copy data stored in the subset, and not all, of the one or more GPRs comprise instructions that cause the one or more processors to:

copy data stored in one or more of the dynamic memory locations in the one or more GPRs that are allocated to the first set of instructions to the other memory unit; and

avoid copying of data stored in any of the static memory locations in the one or more GPRs that are allocated to the first set of instructions to any other memory unit; and

execute, with the one or more processing elements and after the copying, the second set of instructions utilizing the subset of the one or more GPRs.

16. The computer-readable storage medium of claim 15 , further comprising instructions that cause one or more processors to:

allocate the one or more dynamic memory locations in the one or more GPRs that were allocated to the first set of instructions to the second set of instructions,

wherein the instructions that cause the one or more processors to execute the second set of instructions comprise instructions that cause the one or more processors to execute the second set of instructions utilizing the one or more dynamic memory locations in the one or more GPRs allocated to the second set of instructions.

17. The computer-readable storage medium of claim 15 , wherein the instructions that cause the one or more processors to determine the set of dynamic memory locations comprise instructions that cause the one or more processors to determine the set of dynamic memory locations in response to receiving a request for memory locations in the one or more GPRs during execution of the first set of instructions.

18. A computer-readable storage medium of claim 15 , wherein the first set of instructions and the second set of instructions are for different programs, and wherein the instructions that cause the one or more processors to determine that the second set of instructions are given higher priority comprise instructions that cause the one or more processors to determine that the second set of instructions are given higher priority in response to receiving a command instructing the GPU to execute the second set of instructions in place of the first set of instructions.

19. A computer-readable storage medium of claim 15 , wherein the first set of instructions and the second set of instructions are for the same program, and wherein the instructions that cause the one or more processors to determine that the second set of instructions are given higher priority comprise instructions that cause the one or more processors to:

determine that a plurality of instructions of the first set of instructions have completed execution to a block point; and

determine that a plurality of instructions of the second set of instructions should be executed before remaining instructions of the first set of instructions are executed in response to determining that the plurality of instructions of the first set of instructions have complete execution to block point.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2015
From: HOWES, LEE; KAZAKOV, MAXIM
To: QUALCOMM INCORPORATED
Reel/Frame 036342/0055 →
Continuity (1)
Related Publication 20170053374A1 · Feb 23, 2017