IP Library › Granted Patent US 10,453,427
Granted Patent B2
US 10,453,427 · App. 15/477,030 · Granted Oct 22, 2019

Register spill/fill using shared local memory space

Inventors: Joydeep Ray (Folsom, CA); Altug Koker (El Dorado Hills, CA); Balaji Vembu (Folsom, CA); Murali Ramadoss (Folsom, CA); Guei-Yuan Lueh (San Jose, CA); James A. Valerio (Hillsboro, OR); Prasoonkumar Surti (Folsom, CA); Abhishek R. Appu (El Dorado Hills, CA); Vasanth Ranganathan (El Dorado Hills, CA); Kalyan Bhairavabhatla (Bangalore, IN); Arthur D. Hunter, Jr. (Cameron Park, CA); Wei-Yu Chen (San Jose, CA); Subramaniam M. Maiyuran (Gold River, CA)
Assignee: INTEL CORPORATION
G09G5/363G06F9/461G06F12/0875G09G5/001G06F12/084G06F12/0811G06F2212/1024G06F2212/1028G06F2212/455G09G2340/02G09G2350/00G09G2352/00G09G2360/08G09G2360/121
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,453,427
App. No.
15/477,030
Granted
Oct 22, 2019
Kind
B2
Abstract

A mechanism is described for facilitating using of a shared local memory for register spilling/filling relating to graphics processors at computing devices. A method of embodiments, as described herein, includes reserving one or more spaces of a shared local memory (SLM) to perform one or more of spilling and filling relating to registers associated with a graphics processor of a computing device.

Claims (41)

1. An apparatus comprising:

one or more processors including a graphics processor, the graphics processor including a plurality of hardware threads;

a plurality of registers associated with the graphics processor; and

a shared local memory (SLM);

wherein the one or more processors are to:

estimate an amount of space required for one or more of spilling or filling for the plurality of registers in execution of an application,

allocate a portion of the SLM to perform the one or more of spilling and filling relating to the plurality of registers associated with the graphics processor, wherein the portion of the SLM includes a plurality of spaces, the plurality of spaces including a respective space reserved for each hardware thread of the plurality of hardware threads used in execution of the application, and

utilize the portion of SLM as a register buffer for the one or more of spilling and filling relating to the plurality of registers during execution of the application.

2. The apparatus of claim 1 , wherein the one or more processors are further to:

allocate a second portion of the SLM to load and hold one or more constants, the second portion of the SLM being a global space for access by the plurality of hardware threads; and

store one or more constants in the SLM during the execution of the application.

3. The apparatus of claim 2 , wherein the one or more processors are to continuously or periodically load constants in the second portion of the SLM during execution of the application.

4. The apparatus of claim 1 , wherein the one or more processors are to detect the plurality of registers and generate a code to specify the plurality of spaces in the portion of the SLM.

5. The apparatus of claim 4 , wherein the one or more processors are further to communicate the code specifying the plurality of spaces in the portion of the SLM to a graphics driver associated with the graphics processor and to facilitate the graphics driver to communicate information relating to the plurality of spaces in the portion of the SLM to the graphics processor.

6. The apparatus of claim 1 , wherein the graphics processor is co-located with an application processor on a common semiconductor package.

7. The apparatus of claim 1 , wherein the portion of the SLM is to be shared between three-dimensional (3D) shader threads and compute threads when both types of threads are run.

8. A method comprising:

estimating an amount of space required for one or more of one or more of spilling or filling for a plurality of registers associated with a graphics processor of a computing device in execution of an application, the graphics processor including a plurality of hardware threads;

allocating a portion of a shared local memory (SLM) to perform the one or more of spilling and filling relating to the plurality of registers associated with the graphics processor, wherein the portion of the SLM includes a plurality of spaces, the plurality of spaces including a respective space reserved for each hardware thread of the plurality of hardware threads used in execution of the application, and

utilizing the portion of SLM as a register spill/fill buffer for the one or more of spilling and filling relating to the plurality of registers during execution of the application.

9. The method of claim 8 , further comprising:

allocating a second portion of the SLM to load and hold one or more constants, the second portion of the SLM being a global space for access by the plurality of hardware threads, and

storing one or more constants in the SLM during the execution of the application.

10. The method of claim 8 , further comprising:

detecting the plurality of registers; and

generating a code to specify the plurality of spaces in the portion of the SLM.

11. The method of claim 10 , further comprising:

communicating the code specifying the plurality of spaces in the portion of the SLM to a graphics driver associated with the graphics processor, wherein the graphics driver is to communicate information relating to the plurality of spaces in the portion of the SLM to the graphics processor.

12. The method of claim 8 , wherein the graphics processor is co-located with an application processor on a common semiconductor package.

13. At least one non-transitory machine-readable medium comprising instructions that when executed by a computing device, cause the computing device to perform operations comprising:

estimating an amount of space required for one or more of one or more of spilling or filling for a plurality of registers associated with a graphics processor of the computing device in execution of an application, the graphics processor including a plurality of hardware threads;

allocating a portion of a shared local memory (SLM) to perform the one or more of spilling and filling relating to the plurality of registers associated with the graphics processor, wherein the portion of the SLM includes a plurality of spaces, the plurality of spaces including a respective space reserved for each hardware thread of the plurality of hardware threads used in execution of the application, and

utilizing the portion of SLM as a register spill/fill buffer for the one or more of spilling and filling relating to the plurality of registers during execution of the application.

14. The non-transitory machine-readable medium of claim 13 , wherein the operations further comprise:

allocating a second portion of the SLM to load and hold one or more constants, the second portion of the SLM being a global space for access by the plurality of hardware threads, and

storing one or more constants in the SLM during the execution of the application.

15. The non-transitory machine-readable medium of claim 13 , wherein the operations further comprise:

the plurality of registers; and

generating a code to specify the plurality of spaces in the portion of the SLM.

16. The non-transitory machine-readable medium of claim 15 , wherein the operations further comprise:

communicating the code specifying the plurality of spaces in the portion of the SLM to a graphics driver associated with the graphics processor, wherein the graphics driver is to communicate information relating to the plurality of spaces in the portion of the SLM to the graphics processor, wherein the graphics processor is co-located with an application processor on a common semiconductor package.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2018
From: RAY, JOYDEEP; KOKER, ALTUG; VEMBU, BALAJI; RAMADOSS, MURALI; LUEH, GUEI-YUAN; VALERIO, JAMES A.; SURTI, PRASOONKUMAR; APPU, ABHISHEK R.; RANGANATHAN, VASANTH; BHIRAVABHALTA, KAYLAN K.; HUNTER, ARTHUR D., JR.; CHEN, WEI-YU; MAIYURAN, SUBRAMANIAM M.
To: INTEL CORPORATION
Reel/Frame 046734/0698 →
Continuity (1)
Related Publication 20180285120A1 · Oct 4, 2018