System and method of scheduling computing threads
First Claim
Patent Images
1. A method of scheduling a computing thread, the method comprising:
- identifying a lead thread index of a thread from a plurality of threads before a start of a scheduling cycle based on a plurality of precycle signals that indicate thread states of the plurality of threads, the precycle signals indicating whether each thread of the plurality of threads will be runnable at the start of the scheduling cycle, the thread identified by the lead thread index being runnable at the start of the scheduling cycles, wherein the scheduling cycle is a clock cycle of a clock signal and the start of the scheduling cycle is established by an edge of the clock signal;
identifying an alternative thread index of another thread from the plurality of threads before the start of the scheduling cycle based on the plurality of precycle signals, the thread identified by the alternative thread index being runnable at the staff of the scheduling cycle, the lead thread index being ranked higher than the alternative thread index; and
selecting either the lead thread index or the alternative thread index as a selected thread index in the scheduling cycle, based on a same cycle signal received in the scheduling cycle indicating whether the thread identified by the lead thread index has become unrunnable in the scheduling cycle, the thread identified by the selected thread index being a highest ranked thread index being runnable at an end of the scheduling cycle, wherein the same cycle signal indicates a cache miss occurring in a pipelined processor or an instruction exception occurring in the pipelined processor or a wait on arithmetic operation occurring in the pipelined processor or an instruction synchronization occurring in the pipelined processor.
3 Assignments
0 Petitions
Accused Products
Abstract
A system and method for scheduling a thread identifies runnable threads based on precycle signals determined before the scheduling cycle. The thread indexes of the runnable threads are grouped according to the thread priorities of the runnable threads, and the thread indexes are ranked within each group. The runnable threads that will be runnable in the next scheduling cycle are identified based on same cycle signals determined during the scheduling cycle. The highest ranked thread index of the runnable threads that will also be runnable in the next scheduling cycle is selected as the scheduled thread.
-
Citations
14 Claims
-
1. A method of scheduling a computing thread, the method comprising:
-
identifying a lead thread index of a thread from a plurality of threads before a start of a scheduling cycle based on a plurality of precycle signals that indicate thread states of the plurality of threads, the precycle signals indicating whether each thread of the plurality of threads will be runnable at the start of the scheduling cycle, the thread identified by the lead thread index being runnable at the start of the scheduling cycles, wherein the scheduling cycle is a clock cycle of a clock signal and the start of the scheduling cycle is established by an edge of the clock signal; identifying an alternative thread index of another thread from the plurality of threads before the start of the scheduling cycle based on the plurality of precycle signals, the thread identified by the alternative thread index being runnable at the staff of the scheduling cycle, the lead thread index being ranked higher than the alternative thread index; and selecting either the lead thread index or the alternative thread index as a selected thread index in the scheduling cycle, based on a same cycle signal received in the scheduling cycle indicating whether the thread identified by the lead thread index has become unrunnable in the scheduling cycle, the thread identified by the selected thread index being a highest ranked thread index being runnable at an end of the scheduling cycle, wherein the same cycle signal indicates a cache miss occurring in a pipelined processor or an instruction exception occurring in the pipelined processor or a wait on arithmetic operation occurring in the pipelined processor or an instruction synchronization occurring in the pipelined processor. - View Dependent Claims (5, 6, 7)
-
-
2. A system for scheduling a computing thread, the system comprising:
-
a pipelined processor; a thread ranking module configured to identify both a lead thread index of a thread and an alternative thread index of another thread from a plurality of threads before a start of a scheduling cycle, based on a plurality of precycle signals that indicate thread states of the plurality of threads, the precycle signals indicating whether each thread of the plurality of threads will be runnable at the staff of the scheduling cycle, both the thread identified by the lead thread index and the thread identified by the alternative thread index being runnable at the start of the scheduling cycle, the lead thread index being ranked higher than the alternative thread index, wherein the scheduling cycle is a clock cycle of a clock signal and the start of the scheduling cycle is established by an edge of the clock signal; and a thread selector configured to select either the lead thread index or the alternative thread index as a selected thread index in the scheduling cycle, based on a same cycle signal received in the scheduling cycle indicating whether the thread identified by the lead thread index has become unrunnable in the scheduling cycle, the thread identified by the selected thread index being a highest ranked thread index being runnable at an end of the scheduling cycle, wherein the same cycle signal indicates a cache miss occurring in the pipelined processor or an instruction exception occurring in the pipelined processor or a wait on arithmetic operation occurring in the pipelined processor or an instruction synchronization occurring in the pipelined processor. - View Dependent Claims (8, 9)
-
-
3. A storage device storing a computer program product including computer program code for performing a method comprising:
-
identifying a lead thread index of a thread from a plurality of threads before a start of a scheduling cycle based on a plurality of precycle signals that indicate thread states of the plurality of threads, the precycle signals indicating whether each thread of the plurality of threads will be runnable at the start of the scheduling cycle, the thread identified by the lead thread index being runnable at the start of the scheduling cycles wherein the scheduling cycle is a clock cycle of a clock signal and the start of the scheduling cycle is established by an edge of the clock signal; identifying an alternative thread index of another thread from the plurality of threads before the start of the scheduling cycle based on the plurality of precycle signals, the thread identified by the alternative thread index being runnable at the start of the scheduling cycle, the lead thread index being ranked higher than the alternative thread index; and selecting either the lead thread index or the alternative thread index as a selected thread index in the scheduling cycle, based on a same cycle signal received in the scheduling cycle indicating whether the thread identified by the lead thread index has become unrunnable in the scheduling cycle, the thread identified by the selected thread index being a highest ranked thread index being runnable at an end of the scheduling cycle, wherein the same cycle signal indicates a cache miss occurring in a pipelined processor or an instruction exception occurring in the pipelined processor or a wait on arithmetic operation occurring in the pipelined processor or an instruction synchronization occurring in the pipelined processor. - View Dependent Claims (10, 11, 12)
-
-
4. A system for scheduling a computing thread, the system comprising:
-
a pipelined processor; means for identifying a lead thread index of a thread from a plurality of threads before a start of a scheduling cycle based on a plurality of precycle signals that indicate thread states of the plurality of threads, the precycle signals indicating whether each thread of the plurality of threads will be runnable at the start of the scheduling cycle, the thread identified by the lead thread index being runnable at the start of the scheduling cycle, wherein the scheduling cycle is a clock cycle of a clock signal and the start of the scheduling cycle is established by an edge of the clock signal; means for identifying an alternative thread index of another thread from the plurality of threads before the start of the scheduling cycle based on the plurality of precycle signals, the thread identified by the alternative thread index being runnable at the start of the scheduling cycle, the lead thread index being ranked higher than the alternative thread index; and means for selecting either the lead thread index or the alternative thread index as a selected thread index in the scheduling cycle, based on a same cycle signal received in the scheduling cycle indicating whether the thread identified by the lead thread index has become unrunnable in the scheduling cycle, the thread identified by the selected thread index being a highest ranked thread index being runnable at an end of the scheduling cycle, wherein the same cycle signal indicates a cache miss occurring in the pipelined processor or an instruction exception occurring in the pipelined processor or a wait on arithmetic operation occurring in the pipelined processor or an instruction synchronization occurring in the pipelined processor. - View Dependent Claims (13, 14)
-
Specification