Patent US6092175A successfully refreshed from Google Patents.
← Back to Patent Explorer
US6092175A Expired / Lapsed US ⏱️ 0.0 years remaining

Shared register storage mechanisms for multithreaded computer systems with out-of-order execution

Assignee: WASHINGTON, University of
•
Filing: 1998-04-02
•
Granted: 2000-07-18
•
Expires: 2018-04-02
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and organization for implementing the registers required in a computer system supporting multithreading and dynamic out-of-order execution. Multithreaded computer systems are those in which the processor supports multiple contexts (threads), and either rapid context switching from thread to thread or scheduling of instructions from different threads within a single cycle. An important component of processors for such systems is the register file; the processor needs a large register file or resource to provide the registers used for the threads. One form of the invention maintains a set of private architecturally specified registers, and a set of private renaming register for each different thread. In the other three embodiments, sharing of renaming registers between different threads is permitted, to enable a reduction in the total number of registers required. One of these three embodiments enables any of the architecturally specified registers that are private to a thread but are not in use, to be employed as renaming registers. Another of the embodiments treats all registers as sharable and enables any register from the register file or resource to be used as a renaming register for any thread.

Inventors

  • 👤 Henry M. Levy
  • 👤 Susan J. Eggers
  • 👤 Jack Lo
  • 👤 Dean M. Tullsen

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-01 16:21
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/30098; G06F9/3012; G06F9/30123; G06F9/30003; G06F9/30076; G06F9/38; G06F9/3836; G06F9/3838; G06F9/384; G06F9/3851; G06F9/3854; G06F9/3856; G06F9/3858; G06F9/46; G06F9/461; G06F9/462

Claims Analysis

Total Claims: 18
Claim 1
Independent Claim 130 words
A method for assigning registers for use by a multithreaded processor that is capable of concurrently executing instructions from a plurality of threads out-of-order, where each of the plurality of threads has a separate context and the plurality of threads can include threads running within a single application, threads running within different applications, and/or threads for different processes, comprising the steps of: (a) providing a plurality of registers for use by the processor in executing the plurality of threads, each register among the plurality of registers being allocable to be used as an architectural register and as a renaming register; and (b) dynamically allocating and assigning said plurality of registers to a thread being processed by the multithreaded processor, as required to support out-of-order execution of instructions for said thread.
Claim 2
Independent Claim 130 words
A method for assigning registers for use by a multithreaded processor that is capable of concurrently executing instructions from a plurality of threads out-of-order, where each of the plurality of threads has a separate context and the plurality of threads can include threads running within a single application, threads running within different applications, and/or threads for different processes, comprising the steps of: (a) providing a plurality of registers for use by the processor in executing the plurality of threads, each register among the plurality of registers being allocable to be used as an architectural register and as a renaming register; and (b) dynamically allocating and assigning said plurality of registers to a thread being processed by the multithreaded processor, as required to support out-of-order execution of instructions for said thread.
Claim 3
Dependent Claim 44 words
The method of claim 1, wherein if a thread defines a new register value, a renaming register is dynamically allocated from any of the plurality of registers not currently in use by the processor, for a lifetime of said register value for said thread.
Claim 4
Dependent Claim 40 words
The method of claim 2, wherein after use of said register value is complete, said renaming register is made available for reallocation and assignment to any thread, including said thread to which said renaming register was previously allocated and assigned.
Claim 5
Dependent Claim 27 words
The method of claim 2, further comprising the step of mapping architectural registers referenced in the instructions to any of the plurality of registers that are available.
Claim 6
Dependent Claim 79 words
In a multithreaded processor that is capable of concurrently executing instructions out-of-order for a plurality threads, each thread having a separate context, a register resource comprising: (a) a plurality of registers, each of which may be used by any of said plurality of threads as an architectural register or a renaming register; and (b) a register handler that dynamically allocates and assigns architectural registers and renaming registers to a thread to enable execution of instructions out-of-order for that thread.
Claim 7
Dependent Claim 79 words
In a multithreaded processor that is capable of concurrently executing instructions out-of-order for a plurality threads, each thread having a separate context, a register resource comprising: (a) a plurality of registers, each of which may be used by any of said plurality of threads as an architectural register or a renaming register; and (b) a register handler that dynamically allocates and assigns architectural registers and renaming registers to a thread to enable execution of instructions out-of-order for that thread.
Claim 8
Dependent Claim 49 words
The register resource of claim 5, wherein if a thread defines a new register value, a renaming register is dynamically allocated by the register handler from any of the plurality of registers not currently in use by the processor, for a lifetime of said register value for said thread.
Claim 9
Dependent Claim 45 words
The register resource of claim 6, wherein after use of said register value is complete, said renaming register is made available to the register handler for reallocation and assignment to any thread, including said thread to which said renaming register was previously allocated and assigned.
Claim 10
Dependent Claim 32 words
The register resource of claim 6, wherein the register handler maps architectural registers referenced in the instructions to any of the plurality of registers that are available, for use as renaming registers.
Claim 11
Independent Claim 184 words
A method for assigning registers for use by a multithreaded processor that is capable of concurrently executing instructions from a plurality of threads out-of-order, where the plurality of threads can include threads running within a single application, threads running within different applications, and/or threads for different processes, said multithreaded processor providing a separate hardware context including a set of architectural registers for each thread up to a maximum number of threads that may be concurrently executed, and where at least one hardware context will be idle if less than the maximum number of threads is being concurrently executed, the method comprising the steps of: (a) providing a plurality of registers for use by the processor in executing the plurality of threads; and (b) dynamically allocating and assigning registers for use as renaming registers to a thread being processed by the multithreaded processor from a pool of registers that includes the plurality of registers provided in step (a) and any registers among a set of architectural registers that corresponds to an idle hardware context, as required to support out-of-order execution of instructions for said thread.
Claim 12
Independent Claim 184 words
A method for assigning registers for use by a multithreaded processor that is capable of concurrently executing instructions from a plurality of threads out-of-order, where the plurality of threads can include threads running within a single application, threads running within different applications, and/or threads for different processes, said multithreaded processor providing a separate hardware context including a set of architectural registers for each thread up to a maximum number of threads that may be concurrently executed, and where at least one hardware context will be idle if less than the maximum number of threads is being concurrently executed, the method comprising the steps of: (a) providing a plurality of registers for use by the processor in executing the plurality of threads; and (b) dynamically allocating and assigning registers for use as renaming registers to a thread being processed by the multithreaded processor from a pool of registers that includes the plurality of registers provided in step (a) and any registers among a set of architectural registers that corresponds to an idle hardware context, as required to support out-of-order execution of instructions for said thread.
Claim 13
Dependent Claim 39 words
The method of claim 9, wherein the processor determines that the architectural register in a set is temporarily usable as a renaming register by executing an instruction that indicates said architectural register is not being used for a thread.
Claim 14
Dependent Claim 55 words
The method of claim 9, further comprising the step of enabling reassignment of all renaming registers that are assigned to registers among the set of architectural registers corresponding to the idle hardware context to new registers to free the idle hardware context so that it can be used to support execution of a new thread.
Claim 15
Dependent Claim 119 words
In a multithreaded processor that is capable of concurrently executing instructions out-of-order for a plurality of threads, a register resource comprising: (a) a plurality of registers including a portion of which are divided into sets of architectural registers, each set of architectural registers corresponding to a respective hardware context that supports execution of a separate thread by the multithreaded processor; and (b) a register handler that dynamically allocates and assigns registers among said plurality of registers as renaming registers as necessary to support out-of-order execution of the plurality of threads such that any of the architectural registers in a set that is currently not being used to support execution of a thread is temporarily usable as a renaming register.
Claim 16
Dependent Claim 119 words
In a multithreaded processor that is capable of concurrently executing instructions out-of-order for a plurality of threads, a register resource comprising: (a) a plurality of registers including a portion of which are divided into sets of architectural registers, each set of architectural registers corresponding to a respective hardware context that supports execution of a separate thread by the multithreaded processor; and (b) a register handler that dynamically allocates and assigns registers among said plurality of registers as renaming registers as necessary to support out-of-order execution of the plurality of threads such that any of the architectural registers in a set that is currently not being used to support execution of a thread is temporarily usable as a renaming register.
Claim 17
Dependent Claim 41 words
The register resource of claim 12, wherein the processor determines that the architectural register in a set is temporarily usable as a renaming register by executing an instruction that indicates said architectural register is not currently being used for a thread.
Claim 18
Dependent Claim 46 words
The register resource of claim 12, wherein the register handler reassigns any renaming registers that have been assigned to architectural registers in a set corresponding to an idle hardware context to new registers to enable the idle hardware context to support execution of a new thread.

References Cited (Backward Citations)

US5404469A Cited
US5630149A Cited
US5564031A Cited
US5867725A Cited
US5826070A Cited
US5913059A Cited
US5996068A Cited
US5941977A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-07-18 2004-01-17 2004-07-18 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-07-18 2008-01-17 2008-07-18 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-07-18 2012-01-17 2012-07-18 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag