Decoupling the number of logical threads from the number of simultaneous physical threads in a processor
First Claim
1. A method of managing threads, comprising:
- supporting a plurality of logical threads with a plurality of simultaneous physical threads.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods of managing threads provide for supporting a plurality of logical threads with a plurality of simultaneous physical threads in which the number of logical threads may be greater than or less than the number of physical threads. In one approach, each of the plurality of logical threads is maintained in one of a wait state, an active state, a drain state, and a stall state. A state machine and hardware sequencer can be used to transition the logical threads between states based on triggering events and whether or not an interruptible point has been encountered in the logical threads. The logical threads are scheduled on the physical threads to meet, for example, priority, performance or fairness goals. It is also possible to specify the resources that are available to each logical thread in order to meet these and other, goals. In one example, a single logical thread can speculatively use more than one physical thread, pending a selection of which physical thread should be committed.
-
Citations
36 Claims
-
1. A method of managing threads, comprising:
supporting a plurality of logical threads with a plurality of simultaneous physical threads. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
19. A method of supporting a plurality of logical threads with a plurality of simultaneous physical threads, comprising:
-
mapping macro-instructions associated with a first logical thread to a next instruction pointer of a simultaneous physical thread;
monitoring a processor for a triggering event at a first time;
holding the first logical thread in an active state until the triggering event is present;
halting the mapping and switching the first logical thread to a drain state if the triggering event is present;
monitoring the first logical thread for an interruptible point;
holding the first logical thread in the drain state until the interruptible point is encountered;
switching the first logical thread to a stall state if the interruptible point is encountered;
monitoring the processor for the triggering event at a second time;
holding the first logical thread in the stall state until the triggering event is not present;
switching the first logical thread to a wait state if the triggering event is not present;
monitoring the plurality of simultaneous physical threads for an available physical thread;
holding the first logical thread in the wait state until the available physical thread is encountered; and
switching the first logical thread to the active state if the available physical thread is encountered. - View Dependent Claims (20, 21, 22)
-
-
23. A thread management architecture comprising:
a state machine to support a plurality of logical threads with a plurality of simultaneous physical threads by maintaining each of the plurality of logical threads in one of a wait state, an active state, a drain state and a stall state. - View Dependent Claims (24, 25, 26, 27)
-
28. A computer system comprising:
-
a random access memory to store macro-instructions;
a system bus coupled to the memory; and
a processor coupled to the system bus to retrieve the macro-instructions, the processor including a thread management architecture having a state machine to support a plurality of logical threads that correspond to the macro-instructions with a plurality of simultaneous physical threads by maintaining each of the plurality of logical threads in one of a wait state, an active state, a drain state and a stall state. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36)
-
Specification