Multithreading recycle and dispatch mechanism
AssigneeInternational Business Machines Corporation
InventorsKurt Alan Feiste, David Shippy, Albert James Van Norstrand JR.
Life of this patent
Estimating the term…
Abstract
A system and method is provided for improving throughput of an in-order multithreading processor. A dependent instruction is identified to follow at least one long latency instruction with register dependencies from a first thread. The dependent instruction is recycled by providing it to an earlier pipeline stage. The dependent instruction is delayed at dispatch. The completion of the long latency instruction is detected from the first thread. An alternate thread is allowed to issue one or more instructions while the long latency instruction is being executed.
Claims28
A method for improving throughput of an in-order multithreading processor, the method comprising the steps of:
- identifying a dependent instruction following at least one long latency instruction with register dependencies from a first thread;
- recycling the dependent instruction by providing the dependent instruction to an earlier pipeline stage;
- delaying the dependent instruction at dispatch;
- detecting completion of the at least one long latency instruction from the first thread;
- and
- allowing an alternate thread to issue one or more instructions while the at least one long latency instruction is being executed.
An in-order multithreading processor having two or more threads, comprising:
- a plurality of instruction fetch address registers, at least one of the instruction fetch address registers being assigned to each of the two of more threads;
- an instruction cache coupled to the plurality of instruction fetch address registers;
- a plurality of instruction buffers, at least one of the instruction buffers being assigned to each thread, the plurality of instruction buffers being coupled to the instruction cache for receiving one or more instructions from the instruction cache;
- an instruction dispatch stage coupled to both the instruction cache and the plurality of instruction buffers;
- an instruction issue stage coupled to the instruction dispatch stage;
- a dependency checking logic coupled to the instruction issue stage for identifying a dependent instruction following at least one long latency instruction with register dependencies from the first thread;
- the dependency checking logic for recycling the dependent instruction by providing the dependent instruction to an earlier pipeline stage;
- the dependency checking logic for delaying the dependent instruction at dispatch;
- the dependency checking logic for detecting completion of the at least one long latency instruction from the first thread;
- and
- the dependency checking logic for allowing the alternate thread to issue the one or more instructions while the at least one long latency instruction is being executed.
An in-order multithreading processor having two or more threads, comprising:
- means for identifying a dependent instruction following at least one long latency instruction with register dependencies from a first thread;
- means for recycling the dependent instruction by providing the dependent instruction to an earlier pipeline stage;
- means for delaying the dependent instruction at dispatch;
- means for detecting completion of the at least one long latency instruction from the first thread;
- and
- means for allowing an alternate thread to issue one or more instructions while the at least one long latency instruction is being executed.
A computer program product for improving throughput of an in-order multithreading processor, the computer program product having a medium with a computer program embodied thereon, the computer program comprising:
- computer program code for identifying a dependent instruction following at least one long latency instruction with register dependencies from the first thread;
- computer program code for recycling the dependent instruction by providing the dependent instruction to an earlier pipeline stage;
- computer program code for delaying the dependent instruction at dispatch;
- computer program code for detecting completion of the at least one long latency instruction from the first thread;
- and
- computer program code for allowing the alternate thread to issue one or more instructions while the at least one long latency instruction is being executed.
Dependencies are inferred from the claim text.