IP Library › Granted Patent US 10,768,935
Granted Patent B2
US 10,768,935 · App. 15/765,279 · Granted Sep 8, 2020

Boosting local memory performance in processor graphics

Inventor: Can K. Que (Minhang, CN)
Assignee: Intel Corporation
G06F9/30138G06F9/3867G06F9/3887G06F9/522G06F12/0804G06T1/20G06T1/60G06T19/00G06F2212/1016G06F2212/1024
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,768,935
App. No.
15/765,279
Granted
Sep 8, 2020
Kind
B2
Abstract

In some cases, processor graphics with a slower local memory can compensate by using another memory in place of the lowest level or L3 cache. For example, in some processors, there is a large register space that can be used for the local memory function by allocating the local memory within those registers. Also, since the registers do not operate with barriers, barriers can be simulated by letting one execution unit thread execute more SIMD instructions. For example, one execution thread may simulate a whole work-group in the OpenCL API.

Claims (62)

1. A method comprising:

executing a first work-group on a processor, wherein the first work-group comprises a plurality of work-items that are executed in parallel to perform a defined function, wherein the processor comprises internal registers files, wherein the processor uses a cache hierarchy including a lowest level cache and at least one other cache;

determining an available space in the internal register files of the processor;

allocating the determined available space in the internal register files as local memory for the first work-group, wherein the local memory for the first work-group is only accessible by the plurality of work-items included in the first work-group; and

within the available space of the internal register files that is allocated as the local memory for the first work-group, simulating a barrier of the first work-group by controlling a number of single instruction multiple data instructions executed by one execution thread.

2. The method of claim 1 including:

determining whether the available space in the internal register files is sufficient for the local memory for the first work-group; and

in response to a determination that the available space in the internal register files is not sufficient for the local memory for the first work-group:

allocating the available space in the internal register files as a first portion of the local memory for the first work-group, and

allocating the lowest level cache as a second portion of the local memory for the first work-group.

3. The method of claim 1 wherein simulating the barrier of the first work-group includes synchronizing the plurality of work-items in the first work-group.

4. The method of claim 1 wherein the first work-group is an OpenCL work-group.

5. The method of claim 1 including:

detecting a non-aligned write from a first register location in a source register to a second register location in a destination register, wherein the first register location is not aligned with the second register location;

in response to the detected non-aligned write, generating a plurality of instructions based on permutation group theory; and

transforming the non-aligned write using the generated plurality of instructions.

6. The method of claim 5 including generating the plurality of instructions in an OpenGL compiler.

7. The method of claim 5 wherein k is a value calculated using permutation group theory, and wherein generating the plurality of instructions comprises generating log (k−1) instructions to transform the source register.

8. The method of claim 1 , wherein the internal register files are general purpose registers of the processor.

9. The method of claim 1 , wherein the defined function is an OpenGL kernel.

10. One or more non-transitory computer readable media storing instructions to perform a sequence comprising:

executing a first work-group on a processor, wherein the first work-group comprises a plurality of work-items that are executed in parallel to perform a defined function, wherein the processor comprises internal registers files, wherein the processor uses a cache hierarchy including a lowest level cache and at least one other cache;

determining an available space in the internal register files of the processor;

allocating the determined available space in the internal register files as local memory for the first work-group, wherein the local memory for the first work-group is only accessible by the plurality of work-items included in the first work-group; and

within the available space of the internal register files that is allocated as the local memory for the first work-group, simulating a barrier of the first work-group by controlling a number of single instruction multiple data instructions executed by one execution thread.

11. The media of claim 10 including:

determining whether the available space in the internal register files is sufficient for the local memory for the first work-group; and

in response to a determination that the available space in the internal register files is not sufficient for the local memory for the first work-group:

allocating the available space in the internal register files as a first portion of the local memory for the first work-group, and

allocating the lowest level cache as a second portion of the local memory for the first work-group.

12. The media of claim 10 wherein simulating the barrier of the first work-group includes synchronizing the plurality of work-items in the first work-group.

13. The media of claim 10 wherein the first work-group is an OpenCL work-group.

14. The media of claim 10 including:

detecting a non-aligned write from a first register location in a source register to a second register location in a destination register, wherein the first register location is not aligned with the second register location;

in response to the detected non-aligned write, generating a plurality of instructions based on permutation group theory; and

transforming the non-aligned write using the generated plurality of instructions.

15. The media of claim 14 including generating the plurality of instructions in an OpenGL compiler.

16. The media of claim 14 wherein k is a value calculated using permutation group theory, and wherein generating the plurality of instructions comprises generating log (k−1) instructions to transform source registers.

17. The media of claim 10 , wherein the internal register files are general purpose registers of the processor.

18. The media of claim 10 , wherein the defined function is an OpenGL kernel.

19. An apparatus comprising:

a processor to:

execute a first work-group comprising a plurality of work-items that are executed in parallel to perform a defined function, wherein the processor comprises internal registers files, wherein the processor uses a cache hierarchy including a lowest level cache and at least one other cache;

determine an available space in the internal register files of the processor;

allocate the determined available space in the internal register files as local memory for the first work-group, wherein the local memory for the first work-group is only accessible by the plurality of work-items included in the first work-group; and

within the available space of the internal register files that is allocated as the local memory for the first work-group, simulate a barrier of the first work-group by controlling a number of single instruction multiple data instructions executed by one execution thread; and

a storage coupled to said processor.

20. The apparatus of claim 19 , said processor to:

determine whether the available space in the internal register files is sufficient for the local memory for the first work-group; and

in response to a determination that the available space in the internal register files is not sufficient for the local memory for the first work-group:

allocate the available space in the internal register files as a first portion of the local memory for the first work-group, and

allocate the lowest level cache as a second portion of the local memory for the first work-group.

21. The apparatus of claim 19 , wherein simulating the barrier of the first work-group includes synchronizing the plurality of work-items in the first work-group.

22. The apparatus of claim 19 , wherein the first work-group is an OpenCL work-group.

23. The apparatus of claim 19 , said processor to:

detect a non-aligned write from a first register location in a source register to a second register location in a destination register, wherein the first register location is not aligned with the second register location;

in response to the detected non-aligned write, generate a plurality of instructions based on permutation group theory; and

transform the non-aligned write using the generated plurality of instructions.

24. The apparatus of claim 23 , said processor to generate the plurality of instructions in an OpenGL compiler.

25. The apparatus of claim 23 , wherein k is a value calculated using permutation group theory, and said processor to generate log (k−1) instructions to transform the source register.

26. The apparatus of claim 19 , wherein the internal register files are general purpose registers of the processor.

27. The apparatus of claim 19 , wherein the defined function is an OpenGL kernel.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 11, 2020
From: QUE, CAN K.
To: INTEL CORPORATION
Reel/Frame 052624/0332 →
Continuity (1)
Related Publication 20180300139A1 · Oct 18, 2018