IP Library › Granted Patent US 12,504,989
Granted Patent B2
US 12,504,989 · App. 17/699,992 · Granted Dec 23, 2025

Load store bank aware thread scheduling techniques

Inventors: Abhishek R. Appu (El Dorado Hills, CA); Joydeep Ray (Folsom, CA); Karthik Vaidyanathan (San Francisco, CA); Sreedhar Chalasani (Folsom, CA); Vasanth Ranganathan (El Dorado Hills, CA)
Assignee: Intel Corporation
G06F9/4881G06F9/48G06F9/4806G06F9/4843G06F9/50G06F9/5005G06F9/5016G06F9/505G06F9/5061G06F12/0891G06T1/00G06T1/20G06T1/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 12,504,989
App. No.
17/699,992
Granted
Dec 23, 2025
Kind
B2
Abstract

Bank aware thread scheduling and early dependency clearing techniques are described herein. In one example, bank aware thread scheduling involves arbitrating and scheduling threads based on the cache bank that is to be accessed by the instructions to avoiding bank conflicts. Early dependency clearing involves clearing dependencies for cache loads in a scoreboard before the data is loaded. In early dependency clearing for loads, delays in operation can be reduced by clearing dependencies before data is required from the cache.

Claims (59)

1 . A graphics processing unit (GPU) comprising:

a cache including multiple banks; and

hardware logic to schedule threads to access the cache, including to:

determine which banks of the cache are to be accessed by threads available for scheduling,

select a plurality of the threads available for scheduling based on the banks to be accessed by the threads, including to select threads that are to access different banks of the cache, and

schedule the selected threads for execution.

2 . The GPU of claim 1 , wherein the hardware logic is to:

determine if two or more of the selected threads have a bank conflict with instructions to access a same bank of the cache; and

in response to the bank conflict, select another thread that is to access a different bank.

3 . The GPU of claim 1 , wherein the hardware logic to select the plurality of the threads is to:

select the plurality of the threads based on which pipeline is to be used by the threads, including to select the threads that are to access different pipelines.

4 . The GPU of claim 3 , wherein the hardware logic is to:

determine if two or more of the selected threads have a pipeline conflict with instructions to be sent to a same pipeline; and

in response to the pipeline conflict, select another thread to replace the thread with the pipeline conflict.

5 . The GPU of claim 3 , wherein:

the pipelines include: an integer pipeline, a floating point pipeline, and an extended math pipeline.

6 . The GPU of claim 3 , wherein:

a number of threads to be selected for scheduling is equal to a number of pipelines.

7 . The GPU of claim 1 , wherein the hardware logic to select a plurality of the threads is to:

select instructions from the threads for scheduling only from instructions that do not have dependencies within threads or across threads.

8 . The GPU of claim 1 , wherein the hardware logic is to:

schedule a first instruction for execution; and

clear a dependency for a second instruction that is dependent on the first instruction in response to scheduling the first instruction before data is loaded for the first instruction.

9 . The GPU of claim 8 , wherein the hardware logic to clear the dependency is to:

clear the dependency in a scoreboard in response to scheduling the first instruction before the data is loaded.

10 . A system comprising:

a memory device; and

graphics processing unit (GPU) coupled with the memory device, the GPU including:

a cache including multiple banks; and

hardware logic to schedule threads to access the cache, including to:

determine which banks of the cache are to be accessed by threads available for scheduling,

select a plurality of the threads available for scheduling based on the banks to be accessed by the threads, including to select threads that are to access different banks of the cache, and

schedule the selected threads for execution.

11 . The system of claim 10 , wherein the hardware logic is to:

determine if two or more of the selected threads have a bank conflict with instructions to access a same bank of the cache; and

in response to the bank conflict, select another thread that is to access a different bank.

12 . The system of claim 10 , wherein the hardware logic to select the plurality of the threads is to:

select the plurality of the threads based on which pipeline is to be used by the threads, including to select the threads that are to access different pipelines.

13 . The system of claim 12 , wherein the hardware logic is to:

determine if two or more of the selected threads have a pipeline conflict with instructions to be sent to a same pipeline; and

in response to the pipeline conflict, select another thread to replace the thread with the pipeline conflict.

14 . The system of claim 12 , wherein:

the pipelines include: an integer pipeline, a floating point pipeline, and an extended math pipeline.

15 . The system of claim 12 , wherein:

a number of threads to be selected for scheduling is equal to a number of pipelines.

16 . The system of claim 10 , wherein the hardware logic to select a plurality of the threads is to:

select instructions from the threads for scheduling only from instructions that do not have dependencies within threads or across threads.

17 . The system of claim 10 , wherein the hardware logic is to:

schedule a first instruction for execution; and

clear a dependency for a second instruction that is dependent on the first instruction in response to scheduling the first instruction before data is loaded for the first instruction.

18 . The system of claim 17 , wherein the hardware logic to clear the dependency is to:

clear the dependency in a scoreboard in response to scheduling the first instruction before the data is loaded.

19 . A method comprising:

determining which banks of a cache are to be accessed by threads available for scheduling;

selecting a plurality of the threads available for scheduling based on the banks to be accessed by the threads, including selecting threads that are to access different banks of the cache; and

scheduling the selected threads for execution.

20 . The method of claim 19 , further comprising:

determining if two or more of the selected threads have a bank conflict with instructions to access a same bank of the cache; and

in response to the bank conflict, selecting another thread that is to access a different bank.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2022
From: APPU, ABHISHEK R.; RAY, JOYDEEP; VAIDYANATHAN, KARTHIK; CHALASANI, SREEDHAR; RANGANATHAN, VASANTH
To: INTEL CORPORATION
Reel/Frame 059374/0070 →
Continuity (1)
Related Publication 20230297419A1 · Sep 21, 2023
References Cited (8)
US 7640284B1 · Goodnight · 2009 [cited by examiner]
US 8490101B1 · Small · 2013 [cited by examiner]
US 20090031314A1 · Moscibroda · 2009 [cited by examiner]
US 20130013864A1 · Chung · 2013 [cited by examiner]
US 20180239709A1 · Zaykov · 2018 [cited by examiner]
US 20200293380A1 · Ashbaugh · 2020 [cited by examiner]
US 20220171731A1 · Wang · 2022 [cited by examiner]
Mutlu et al., “Parallelism-Aware Batch Scheduling: Enhancing both Performance and Fairness of Shared DRAM Systems”, IEEE, 2008, pp. 63-74 (Year: 2008). [cited by examiner]