Switching method in a multi-threaded processor
First Claim
1. A method of operating a processor comprising:
- running one or more program applications concurrently;
executing a plurality of execution threads in a multiple-thread pipeline including a plurality of multiple-bit flip-flops that hold the plurality of execution threads, the execution threads for executing issued instructions for the program applications;
switching the execution threads in the multiple-thread pipeline including;
freezing an active state in the pipeline;
activating a previously idle thread in the pipeline while holding the state of the newly frozen thread in the pipeline; and
subsequently resuming execution of the frozen thread at the precise state of the frozen thread immediately prior to the thread switch;
wherein the multiple-thread pipeline includes a plurality of pulse-based high-speed flip-flops, the pulse-based high-speed flip-flops having a latch structure coupled to a plurality of select-bus lines, the select-bus lines selecting an active thread from among the plurality of execution threads.
2 Assignments
0 Petitions
Accused Products
Abstract
A processor includes logic for attaining a very fast exception handling functionality while executing non-threaded programs by invoking a multithreaded-type functionality in response to an exception condition. The processor, while operating in multithreaded conditions or while executing non-threaded programs, progresses through multiple machine states during execution. The very fast exception handling logic includes connection of an exception signal line to thread select logic, causing an exception signal to evoke a switch in thread and machine state. The switch in thread and machine state causes the processor to enter and to exit the exception handler immediately, without waiting to drain the pipeline or queues and without the inherent timing penalty of the operating system'"'"'s software saving and restoring of registers.
176 Citations
18 Claims
-
1. A method of operating a processor comprising:
-
running one or more program applications concurrently;
executing a plurality of execution threads in a multiple-thread pipeline including a plurality of multiple-bit flip-flops that hold the plurality of execution threads, the execution threads for executing issued instructions for the program applications;
switching the execution threads in the multiple-thread pipeline including;
freezing an active state in the pipeline;
activating a previously idle thread in the pipeline while holding the state of the newly frozen thread in the pipeline; and
subsequently resuming execution of the frozen thread at the precise state of the frozen thread immediately prior to the thread switch;
wherein the multiple-thread pipeline includes a plurality of pulse-based high-speed flip-flops, the pulse-based high-speed flip-flops having a latch structure coupled to a plurality of select-bus lines, the select-bus lines selecting an active thread from among the plurality of execution threads. - View Dependent Claims (2, 3, 4, 5, 6)
detecting a cache miss;
generating a cache miss stall signal in response to the cache miss stall; and
freezing an active state in the pipeline in response to the cache miss stall signal.
-
-
3. A method according to claim 1 further comprising:
issuing instructions for the program applications in-order.
-
4. A method according to claim 1 further comprising:
-
issuing instructions for the program applications in-order; and
managing a machine state of the individual execution threads separately and independently.
-
-
5. A method according to claim 1 further comprising:
loading data from a storage and storing data to a storage via a plurality of load/store units that are individually allocated to individual threads in the multiple-thread pipeline.
-
6. A method according to claim 1 further comprising:
concurrently executing a plurality of execution threads in a plurality of multiple-thread pipelines so that the processor executes the one or more program applications with vertical threading and horizontal threading.
-
7. A method of operating a processor comprising:
-
running one or more program applications concurrently;
executing a plurality of execution threads in a multiple-thread pipeline including a plurality of multiple-bit flip-flops that hold the plurality of execution threads, the execution threads for executing issued instructions for the program applications, the executing operation including;
holding a plurality of threads in the multiple-thread pipeline simultaneously including an active thread and one or more inactive threads;
receiving notification of a stall condition;
in response to receipt of the stall condition, stalling the active thread immediately including immediately deactivating a currently active thread and activating a currently inactive thread while the state of the threads in the multiple-thread pipeline remains the same;
wherein executing a plurality of execution threads in a multiple-thread pipeline includes;
latching data in pulse-based high-speed flip-flops; and
selecting an active thread from among the plurality of execution threads using select-bus lines. - View Dependent Claims (8, 9, 10, 11, 12)
detecting a cache miss;
generating a cache miss stall signal in response to the cache miss stall; and
freezing an active state in the pipeline in response to the cache miss stall signal.
-
-
9. A method according to claim 7 further comprising:
issuing instructions for the program applications in-order.
-
10. A method according to claim 7 further comprising:
-
issuing instructions for the program applications in-order; and
managing a machine state of the individual execution threads separately and independently.
-
-
11. A method according to claim 7 further comprising:
loading data from a storage and storing data to a storage via a plurality of load/store units that are individually allocated to individual threads in the multiple-thread pipeline.
-
12. A method according to claim 7 further comprising:
concurrently executing a plurality of execution threads in a plurality of multiple-thread pipelines so that the processor executes the one or more program applications with vertical threading and horizontal threading.
-
13. A processor comprising:
-
means for running one or more program applications concurrently;
means for executing a plurality of execution threads in a multiple-thread pipeline including a plurality of multiple-bit flip-flops that hold the plurality of execution threads, the execution threads for executing issued instructions for the program applications, the executing operation including;
means for holding a plurality of threads in the multiple-thread pipeline simultaneously including an active thread and one or more inactive threads;
means for receiving notification of a stall condition;
means responsive to receipt of the stall condition for stalling the active thread immediately including;
immediately deactivating a currently active thread and activating a currently inactive thread while the state of the threads in the multiple-thread pipeline remains the same; and
means for loading data from a storage and storing data to a storage via a plurality of load/store units that are individually allocated to individual threads in the multiple-thread pipeline.
-
-
14. A processor comprising:
-
means for running one or more program applications concurrently;
means for executing a plurality of execution threads in a multiple-thread pipeline including a plurality of multiple-bit flip-flops that hold the plurality of execution threads, the execution threads for executing issued instructions for the program applications;
means for switching the execution threads in the multiple-thread pipeline including;
means for freezing an active state in the pipeline;
means for activating a previously idle thread in the pipeline while holding the state of the newly frozen thread in the pipeline;
means for subsequently resuming execution of the frozen thread at the precise state of the frozen thread immediately prior to the thread switch; and
means for loading data from a storage and storing data to a storage via a plurality of load/store units that are individually allocated to individual threads in the multiple-thread pipeline.
-
-
15. A method of operating a processor comprising:
-
selecting a thread from among a plurality of execution threads, other threads being nonselected threads;
activating a machine state for the selected execution thread;
executing the selected execution thread in a shared pipeline;
freezing nonselected threads in the shared pipeline without executing;
allocating a load/store unit to individual threads of the plurality of execution threads; and
accessing the allocated load/store units according to the executing thread. - View Dependent Claims (16, 17, 18)
sharing a data storage unit among the plurality of execution threads.
-
-
17. A method according to claim 15 further comprising:
sharing an instruction control logic among the plurality of execution threads.
-
18. A method according to claim 15 further comprising:
sharing an external cache control unit among the plurality of execution threads.
Specification