IP Library › Granted Patent US 12,026,799
Granted Patent B2
US 12,026,799 · App. 17/357,964 · Granted Jul 2, 2024

Method and apparatus for software based preemption using two-level binning to improve forward progress of preempted workloads

Inventors: Gabriel T. Dagani (Austin, TX); Christopher P. Frascati (Liberty Hill, TX); Fnu Gurupad (San Jose, CA); David Tannenbaum (Austin, TX); Rama S. B. Harihara (San Jose, CA); Keshavan Varadarajan (Austin, TX)
Assignee: SAMSUNG ELECTRONICS CO., LTD.
G06T1/20G06F9/485G06F9/4881
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 12,026,799
App. No.
17/357,964
Granted
Jul 2, 2024
Kind
B2
Abstract

A system and a method are disclosed improving forward progress of preempted workloads. A graphics pipeline processes tiles of a first low-priority job. A controller stops the first job by resetting the GPU and preempting the first job with a second job having a higher priority, determine whether the first job has been previously preempted one or more times, and adjust a batch-binning parameter reducing a likelihood that the first job will again be preempted in the current frame. In one embodiment, the controller is configured to stop the first job at a preemption boundary during a draw call or by resetting the GPU. A batch-binning parameter may include postponing sorting primitives into tiles during a binning process, increasing a number of tiles for backend rendering, reducing a quality of anti-aliasing, decreasing a shading rate quality, and/or decreasing input resolution and increasing upscaling of the first job.

Claims (42)

1. A graphics processing unit (GPU), comprising:

a graphics pipeline circuit that processes tiles of a first job during a draw call, the first job comprising a first priority; and

a controller circuit coupled to the graphics pipeline circuit, the controller circuit configured to:

set a preemption timer;

stop the first job by resetting the GPU to preempt the first job with a second job comprising a second priority that is greater than the first priority, determine whether the first job has been previously preempted one or more times, and

adjust at least one of a batch-binning parameter and an image quality parameter to reduce preemption granularity and to reduce a likelihood that the first job will not be preempted, wherein the resetting comprises discarding current results in a software reset or reinitializing the GPU in a hardware reset after the preemption timer has reached a threshold.

2. The GPU of claim 1 , wherein the controller circuit is further configured to stop the first job at a preemption boundary during a draw call or by resetting the GPU.

3. The GPU of claim 1 , wherein adjusting the batch-binning parameter comprises postponing running tiles during a binning process of the GPU.

4. The GPU of claim 1 , wherein adjusting the batch-binning parameter comprises increasing a number of tiles for backend rendering by the GPU.

5. The GPU of claim 1 , wherein the GPU supports multi-sample anti-aliasing, and

wherein adjusting the batch-binning parameter comprises reducing a quality of anti-aliasing.

6. The GPU of claim 1 , wherein the GPU supports variable rate shading, and wherein adjusting the batch-binning parameter comprises decreasing a shading rate quality.

7. The GPU of claim 1 , wherein the GPU is part of a System of a Chip (SoC), and the GPU that supports high quality upscaling, and

wherein adjusting the batch-binning parameter comprises decreasing an input resolution of the first job and increasing an upscaling of the first job.

8. A method for preempting a job in a graphics processing unit (GPU), the method comprising:

stopping a first job being processed by the GPU by resetting the GPU, the first job comprising a first priority;

processing a second job by the GPU, the second job comprising a second priority that is greater than the first priority;

determining, by a controller of the GPU, whether the first job has been previously preempted one or more times;

setting, by the controller of the GPU, a preemption timer; and

adjusting, by the controller of the GPU, a batch-binning parameter to reduce a likelihood that the first job will be preempted, wherein the resetting comprises discarding current results in a software reset or reinitializing the GPU in a hardware reset after the preemption timer has reached a threshold.

9. The method of claim 8 , further comprising stopping the first job at a preemption boundary during a draw call or by resetting the GPU.

10. The method of claim 8 , wherein adjusting the batch-binning parameter comprises postponing sorting primitives into tiles during a binning process of the GPU.

11. The method of claim 8 , wherein adjusting the batch-binning parameter comprises increasing a number of tiles for backend rendering by the GPU.

12. The method of claim 8 , wherein the GPU supports multi-sample anti-aliasing, and

wherein adjusting the batch-binning parameter comprises reducing a quality of anti-aliasing.

13. The method of claim 8 , wherein the GPU supports variable rate shading, and

wherein adjusting the batch-binning parameter comprises decreasing a shading rate quality.

14. The method of claim 8 , wherein the GPU is part of a System on a Chip (SoC) and the GPU supports high quality upscaling, and

wherein adjusting the batch-binning parameter comprises decreasing an input resolution of the first job and increasing an upscaling of the first job.

15. A graphics processing unit (GPU), comprising:

a graphics pipeline circuit that processes tiles of a first job during a draw call, the first job comprising a first priority; and

a controller circuit coupled to the graphics pipeline circuit, the controller circuit configured to:

set a preemption timer;

stop the first job at a preemption boundary during a draw call or by resetting the GPU to preempt the first job with a second job comprising a second priority that is greater than the first priority, determine whether the first job has been previously preempted one or more times, wherein the resetting comprises discarding current results in a software reset or reinitializing the GPU in a hardware reset after the preemption timer has reached a threshold; and

adjust a batch-binning parameter to reduce a likelihood that the first job will not be preempted.

16. The GPU of claim 15 , wherein adjusting the batch-binning parameter comprises postponing sorting of primitives into tiles during a binning process of the GPU.

17. The GPU of claim 15 , wherein adjusting the batch-binning parameter comprises increasing a number of tiles for backend rendering by the GPU.

18. The GPU of claim 15 , wherein the GPU supports multi-sample anti-aliasing, and

wherein adjusting the batch-binning parameter comprises reducing a quality of anti-aliasing.

19. The GPU of claim 15 , wherein the GPU supports variable rate shading, and wherein adjusting the batch-binning parameter comprises decreasing a shading rate quality.

20. The GPU of claim 15 , wherein the GPU is part of a System on a Chip (SoC) and the GPU supports high quality upscaling, and

wherein adjusting the batch-binning parameter comprises decreasing an input resolution of the first job and increasing an upscaling of the first job.

Continuity (2)
Provisional Application 63163736 · Mar 19, 2021
Related Publication 20220301095A1 · Sep 22, 2022