Claims
- 1. A method for managing transitions between a first number of threads and a second number of threads executing a simultaneous multi-threaded processor, comprising:
receiving an instruction indicating a thread mode switch; setting thread enable signals indicating an enable state of multiple threads, wherein said second number of threads is specified for further execution; and reallocating per-thread fixed entries within a rename resource of said processor in conformity with said thread enable signals, by directing an action at a mapper associated with said rename resource that maps said per-thread fixed entries.
- 2. The method of claim 1, wherein said first number of threads is greater than said second number of threads, and wherein said reallocating directs a signal at said mapper causing said mapper to discard said per-thread fixed entries for at least one thread not specified for further execution.
- 3. The method of claim 2, wherein said discarding of said per-thread fixed rename resource entries is performed by clearing all of a plurality bits indicating an architected state from said per-thread fixed entries within said mapper associated with said at least one thread not specified for further execution.
- 4. The method of claim 1, wherein said second number of threads is greater than said first number of threads, and wherein said reallocating comprises issuing dummy instruction dispatches implicating a predetermined fixed number of rename registers within said rename resource to an instruction sequencer, whereby said instruction sequencer commands said mapper to allocate said predetermined number of new entries within said rename resource for at least one additional thread specified for further execution.
- 5. The method of claim 4, wherein said reallocating further comprises directing an architect signal at said mapper, whereby said mapper fixes said new entries within said rename resource as said per-thread fixed entries.
- 6. The method of claim 4, further comprising:
receiving an instruction dispatch at said instruction sequencer unit; determining whether said instruction dispatch is a dummy instruction dispatch; and only in response to determining said instruction dispatch is not a dummy instruction dispatch, issuing said instruction dispatch to at least one issue queue and a completion table.
- 7. The method of claim 4, wherein said reallocating reallocates per-thread fixed entries within general purpose registers and fixed point registers by sending dummy dispatch instructions implicating a first pretermined number of new entries within said general purpose registers and a second predetermined number of new entries within said fixed point registers.
- 8. The method of claim 4, wherein said reallocating reallocates per-thread fixed entries within conditional branching registers by sending dummy branching dispatches implicating said pretermined number of new entries within said conditional branching registers.
- 9. The method of claim 4, wherein said reallocating reallocates per-thread fixed entries within exception registers by sending dummy exception-setting instruction dispatches implicating said pretermined number of new entries within said exception registers.
- 10. The method of claim 4, further comprising selecting at said instruction sequencer, input from an instruction dispatch unit or a dummy dispatch unit, wherein said dummy dispatch unit is selected in response to receipt of said thread mode switch indicating instruction, whereby said instruction sequencer subsequently receives said dummy instruction dispatches.
- 11. A processor supporting concurrent execution of multiple threads, said processor comprising:
an instruction decoder supporting a decode of a thread mode change instruction; a thread enable register for receiving a thread enable state specifying a requested enable state of multiple threads specified for further execution; at least one resource including renamed registers for supporting execution of instructions within said processor, said rename register including per-thread fixed entries mapped by a mapper; and control logic coupled to said instruction decoder for controlling execution units of said processor in response to said thread mode change instruction, and wherein said control logic controls said mapper in order to reallocate said per-thread fixed entries in conformity with said requested enable state of said multiple threads.
- 12. The processor of claim 11, wherein said requested enable state requests a decrease in the number of threads executing within said processor, and wherein said control logic signals said mapper to discard said per-thread fixed entries for at least one thread not specified for further execution.
- 13. The processor of claim 12, wherein said mapper clears all of a plurality bits indicating an architected state from said per-thread fixed entries within said mapper associated with said at least one thread not specified for further execution in response to said signal from said control logic.
- 14. The processor of claim 1, wherein said requested enable state requests an increase in the number of threads executing within said processor, and wherein said processor further comprises:
an instruction dispatch unit for dispatching instructions; an instruction sequencer unit coupled to said instruction dispatch unit for receiving instruction dispatches and coupled to said at least one resource for requesting allocations within said at least one resource in response to said received instruction dispatches; and a pseudo-dispatch unit coupled to said instruction sequencer unit for issuing dummy instruction dispatches implicating a predetermined fixed number of rename registers within said rename resource to said instruction sequencer, and wherein said instruction sequencer commands said mapper to allocate said predetermined number of new entries within said rename resource for at least one additional thread specified for further execution, whereby said control logic controls said mapper.
- 15. The processor of claim 14, wherein said control logic directs an architect signal at said mapper, whereby said mapper fixes said new entries within said rename resource as said per-thread fixed entries.
- 16. The processor of claim 14, further comprising a multiplexer having an output coupled to said instruction sequencer, a first input coupled to said pseudo-dispatch unit and a second input coupled to said instruction dispatch unit, whereby an output of said pseudo-dispatch unit is selected for issuing said dummy dispatches to said instruction sequencer by said control logic in response to receiving said thread mode change instruction.
- 17. The processor of claim 14, wherein said instruction sequencer is coupled to at least one issue queue for receiving issued instructions and a completion table for tracking queued instruction completion, and wherein said instruction sequencer only queues instructions in said at least one issue queue and tags said instructions in said completion table when receiving instructions from said instruction dispatch unit.
- 18. The processor of claim 14, wherein said pseudo-dispatch unit issues dummy instructions implicating a first predetermined number of new entries within a set of general purpose registers and a second predetermined number of new entries within a set of fixed point registers.
- 19. The processor of claim 14, wherein said pseudo-dispatch unit issues dummy branching instructions implicating a first predetermined number of new entries within a set of conditional branching registers.
- 20. The processor of claim 14, pseudo-dispatch unit issues dummy exception-setting instructions implicating said pretermined number of new entries within said exception registers.
- 21. A processor supporting concurrent execution of multiple threads, said processor comprising:
at least one resource including renamed registers for supporting execution of instructions within said processor, said rename register including per-thread fixed entries mapped by a mapper; an instruction dispatch unit for dispatching said instructions; an instruction sequencer unit coupled to said instruction dispatch unit for receiving instruction dispatches and coupled to said at least one resource for requesting allocations within said at least one resource in response to said received instruction dispatches; a pseudo-dispatch unit coupled to said instruction sequencer unit for issuing dummy instruction dispatches implicating a predetermined fixed number of rename registers within said rename resource to said instruction sequencer; a multiplexer having an output coupled to said instruction sequencer, a first input coupled to said pseudo-dispatch unit and a second input coupled to said instruction dispatch unit; an instruction decoder supporting a decode of a thread mode change instruction; a thread enable register for receiving a thread enable state specifying a requested enable state of multiple threads specified for further execution; and control logic coupled to said instruction decoder for controlling execution units of said processor in response to said thread mode change instruction, and wherein said control logic is coupled to a select input of said multiplexer, whereby said output of said pseudo-dispatch unit is selected for issuing said dummy dispatches to said instruction sequencer by said control logic in response to receiving said thread mode change instruction.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application is related to co-pending U.S. patent applications: docket number AUS920030217US1 entitled “METHOD AND LOGICAL APPARATUS FOR MANAGING THREAD EXECUTION IN A SIMULTANEOUS MULTI-THREADED (SMT) PROCESSOR”, docket number AUS920030267US1 entitled “METHOD AND LOGICAL APPARATUS FOR MANAGING RESOURCE REDISTRIBUTION IN A SIMULTANEOUS MULTI-THREADED (SMT) PROCESSOR”, and docket number ROC920030068US1 entitled “DYNAMIC SWITCHING OF MULTITHREADED PROCESSOR BETWEEN SINGLE THREADED AND SIMULTANEOUS MULTITHREADED MODES”, filed concurrently with this application. The specifications of the above-referenced patent applications are incorporated herein by reference.