IP Library › Granted Patent US 11,068,308
Granted Patent B2
US 11,068,308 · App. 16/298,709 · Granted Jul 20, 2021

Thread scheduling for multithreaded data processing environments

Inventors: Kedar Chitnis (Bangalore, IN); Mihir Narendra Mody (Bangalore, IN); Jesse Gregory Villarreal, Jr. (Richardson, TX); Lucas Carl Weaver (Farmers Branch, TX); Brijesh Jadav (Bangalore, IN); Niraj Nandan (Plano, TX)
Assignee: TEXAS INSTRUMENTS INCORPORATED
G06F9/4887G06F9/50G06F9/544G06F9/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 11,068,308
App. No.
16/298,709
Granted
Jul 20, 2021
Kind
B2
Abstract

Methods, apparatus, systems and articles of manufacture (e.g., physical storage media) to implement thread scheduling for multithreaded data processing environments are disclosed. Example thread schedulers disclosed herein for a data processing system include a buffer manager to determine availability of respective buffers to be acquired for respective processing threads implementing respective functional nodes of a processing flow, and to identify first ones of the processing threads as stalled due to unavailability of at least one buffer in the respective buffers to be acquired for the first ones of the processing threads. Disclosed example thread schedulers also include a thread execution manager to initiate execution of second ones of the processing threads that are not identified as stalled.

Claims (34)

1. A system comprising:

a buffer manager circuit configured to:

determine availability of buffers to be acquired for respective processing threads; and

identify a first one and a second one of the respective processing threads as stalled due to unavailability of a first buffer in the buffers to be acquired for the first one and the second one of the processing threads; and

store respective states for each of the buffers in memory, a first one of the respective states corresponding to the first buffer, the first one of the states identifies the first one and the second one of the processing threads that are stalled due to unavailability of the first one of the buffers; and

a thread execution manager circuit configured to initiate execution of a third one of the processing threads that is not identified as stalled.

2. The system of claim 1 , wherein the buffer manager circuit and the thread execution manager circuit are implemented by a processor in a processing thread that is different from the processing threads implementing the respective functional nodes of an image processing flow.

3. The system of claim 1 , wherein the buffer manager circuit is to update the first one of the states corresponding to the first buffer to include a respective thread identifier for each one of the first ones of the processing threads that is stalled due to unavailability of the first one of the buffers.

4. The system of claim 3 , wherein the buffer manager circuit is configured to remove thread identifiers for unstalled threads from the respective states.

5. The system of claim 1 , wherein the buffer manager circuit is configured to update the first one of the states corresponding to the first buffer to indicate that the first one and the second one of the processing threads that were stalled due to unavailability of the first buffer have become unstalled threads when a third one of the processing threads that had acquired the first buffer prior to execution has released the first buffer.

6. The system of claim 5 , wherein the buffer manager circuit is configured to maintain a data structure in memory identifying the unstalled threads, and the thread execution manager circuit is configured to reattempt to initiate execution of the unstalled threads based on the data structure.

7. The system of claim 6 , wherein the data structure includes at least one of a first input first output (FIFO) memory buffer or a priority-based queue.

8. A non-transitory computer readable medium comprising computer readable instructions that, when executed by a processor, cause the processor to at least:

determine availability of buffers to be acquired for processing threads;

identify a first and a second thread of the processing threads as stalled due to unavailability of a first buffer to be acquired for the first and the second threads;

store states for each of the buffers in memory, a first state of the states corresponding to the first buffer of the buffers, the first state to identify the first and the second thread of the processing threads that are stalled due to unavailability of the first buffer; and

initiate execution of a third thread of the processing threads that is not identified as to be stalled.

9. The non-transitory computer readable medium of claim 8 , wherein the instructions are to be executed by the processor in a processing thread that is different from the processing threads implementing functional nodes of a processing flow.

10. The non-transitory computer readable medium of claim 8 , wherein the instructions cause the processor to update the first state corresponding to the first buffer to include a thread identifier for each thread that is stalled due to unavailability of the first buffer.

11. The non-transitory computer readable medium of claim 8 , wherein the first buffer was acquired by a fourth thread of the processing threads, and the instructions cause the processor to update the first state to indicate that the first and second processing threads have become unstalled threads when the fourth thread has released the first buffer.

12. The non-transitory computer readable medium of claim 11 , wherein the instructions cause the processor to remove thread identifiers for unstalled threads from the first state to update the first state to indicate that the first and second threads that were stalled due to unavailability of the first buffer have become unstalled.

13. The non-transitory computer readable medium of claim 11 , wherein the instructions cause the processor to:

maintain a data structure identifying unstalled processing threads; and

reattempt to initiate execution of the unstalled processing threads based on the data structure.

14. A method comprising:

determining, by a processor, availability of buffers to be acquired for respective processing threads implementing respective functional nodes of a processing flow;

identifying, by the processor, a first one and a second one of the respective processing threads as stalled due to unavailability of a first buffer to be acquired for the first one and the second one of the processing threads;

storing, by the processor, respective states for each of the buffers in memory, a first one of the respective states corresponding to the first buffer, the first one of the states identifies the first one and the second one of the processing threads that are stalled due to unavailability of the first one of the buffers; and

initiating, with the processor, execution of a third one of the processing threads that is not identified as stalled.

15. The method of claim 14 , further including updating the first one of the states corresponding to the first buffer to include a respective thread identifier for each one of the processing threads that is stalled due to unavailability of the first one of the buffers.

16. The method of claim 15 , wherein the first one of the buffers was acquired by a fourth one of the processing threads, and further including updating the first one of the states to indicate that the first one and the second one of the processing threads that were stalled due to unavailability of the first one of the buffers have become unstalled threads when the fourth one of the processing threads has released the first one of the buffers.

17. The method of claim 16 , further including:

maintaining a data structure identifying the unstalled threads; and

reattempting to initiate execution of the unstalled threads based on the data structure.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2020
From: CHITNIS, KEDAR; MODY, MIHIR NAREDNDRA; VILLAREAL, JESSE GREGORY, JR; WEAVER, LUCAS CARL; JADAV, BRIJESH; NANDAN, NIRAJ
To: TEXAS INSTRUMENTS INCORPORATED
Reel/Frame 052375/0695 →
Continuity (2)
Provisional Application 62643009 · Mar 14, 2018
Related Publication 20190286483A1 · Sep 19, 2019