IP Library Granted Patent US 6,904,511
Granted Patent B2
US 6,904,511 · App. 10/269,373 · Granted Jun 7, 2005

Method and apparatus for register file port reduction in a multithreaded processor

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 6,904,511
App. No.
10/269,373
Granted
Jun 7, 2005
Kind
B2
Abstract

Techniques for thread-based register file access by a multithreaded processor are disclosed. The multithreaded processor determines a thread identifier associated with a particular processor thread, and utilizes at least a portion of the thread identifier to select a particular portion of an associated register file to be accessed by the corresponding processor thread. In an illustrative embodiment, the register file is divided into even and odd portions, with a least significant bit or other portion of the thread identifier being used to select either the even or the odd portion for use by a given processor thread. The thread-based register file selection may be utilized in conjunction with token triggered threading and instruction pipelining. Advantageously, the invention reduces register file port requirements and thus processor power consumption, while maintaining desired levels of concurrency.

Claims (37)

1. A method for accessing a register file associated with a multithreaded processor, the multithreaded processor having a cache memory, the method comprising the steps of:

determining a thread identifier associated with a particular thread of the multithreaded processor; and

utilizing at least a portion of the thread identifier to select a particular portion of the register file to be accessed by the corresponding processor thread;

wherein the register file is not implemented in the form of a cache and is separate from the cache memory of the multithreaded processor; and

wherein the register file is separated into portions without assigning sole use of any particular one of the portions to any single thread, such that a given one of the portions is accessed by at least two of the threads, the at least two threads alternating access to the given portion of the register file over a plurality of processor clock cycles.

2. The method of claim 1 wherein the utilizing step further comprises the step of utilizing a portion of the thread identifier to select one of an even portion and an odd portion of the register file for access by the corresponding processor thread.

3. The method of claim 2 wherein the portion of the thread identifier comprises one or more least significant bits of the thread identifier.

4. The method of claim 1 wherein the portion of the thread identifier is applied to selection circuitry which generates enable signals for particular portions of the register file.

5. The method of claim 1 wherein the register file comprises 2 n distinct portions, and n least significant bits of the thread identifier are utilized to select one of the 2 n distinct portions of the register file for access by the corresponding processor thread.

6. The method of claim 1 wherein the register file comprises a general-purpose register file.

7. The method of claim 1 wherein the multithreaded processor comprises a thread identifier register for storing the thread identifier.

8. The method of claim 7 wherein the thread identifier register is associated with a thread cache corresponding to the particular thread of the multithreaded processor.

9. The method of claim 1 wherein the multithreaded processor is configured to utilize token triggered threading.

10. The method of claim 9 wherein the token triggered threading utilizes a token to identify in association with a current processor clock cycle a particular context that will be permitted to issue an instruction for a subsequent clock cycle.

11. The method of claim 9 wherein the token triggered threading assigns different tokens to each of a plurality of threads of the multithreaded processor.

12. The method of claim 1 wherein the multithreaded processor is configured for pipelined instruction processing.

13. The method of claim 12 wherein the multithreaded processor utilizes an instruction pipeline in which each thread issues a single instruction per processor clock cycle.

14. The method of claim 12 wherein the multithreaded processor utilizes an instruction pipeline in which each thread issues multiple instructions per processor clock cycle.

15. The method of claim 1 wherein the register file comprises a single register.

16. The method of claim 1 wherein the register file comprises a plurality of registers.

17. A method for accessing a register file associated with a multithreaded processor, the method comprising the steps of:

determining a thread identifier associated with a particular thread of the multithreaded processor; and

utilizing at least a portion of the thread identifier to select a particular portion of the register file to be accessed by the corresponding processor thread;

wherein the register file comprises a plurality of even sets of registers and a plurality of odd sets of registers, and the utilizing step further comprises enabling either the plurality of even sets of registers or the plurality of odd sets of registers for access by the corresponding processor thread; and

wherein the register file is separated into even and odd portions without assigning sole use of any particular one of the portions to any single thread, such that a given one of the portions is accessed by at least two of the threads, the at least two threads alternating access to the given portion of the register file over a plurality of processor clock cycles.

18. A method for accessing a register file associated with a multithreaded processor, the method comprising the steps of:

determining a thread identifier associated with a particular thread of the multithreaded processor; and

utilizing at least a portion of the thread identifier to select a particular portion of the register file to be accessed by the corresponding processor thread;

wherein the multithreaded processor is configured for pipelined instruction processing;

wherein the multithreaded processor utilizes an instruction pipeline in which each thread issues multiple instructions per processor clock cycle; and

wherein each of a plurality of the threads issues both a load instruction and a vector multiply instruction in each of a corresponding plurality of processor clock cycles without stalling of any of the plurality of threads.

19. A multithreaded processor having an associated register file comprising at least first and second portions, the multithreaded processor further having a cache memory, the multithreaded processor being operative to determine a thread identifier associated with a particular thread of the multithreaded processor, and to utilize at least a portion of the thread identifier to select a particular one of the portions of the register file to be accessed by the corresponding processor thread, wherein the register file is not implemented in the form of a cache and is separate from the cache memory of the multithreaded processor, and wherein the register file is separated into the portions without assigning sole use of any particular one of the portions to any single thread, such that a given one of the portions is accessed by at least two of the threads, the at least two threads altering access to the given portion of the register file over a plurality of processor clock cycles.

20. An article of manufacture comprising a machine-readable storage medium having embodied thereon program code for use in accessing a register file associated with a multithreaded processor, the multithreaded processor having a cache memory, wherein the program code when executed by the processor implements the steps of:

determining a thread identifier associated with a particular thread of the multithreaded processor; and

utilizing at least a portion of the thread identifier to select a particular portion of the register file to be accessed by the corresponding processor thread;

wherein the register file is not implemented in the form of a cache and is separate from the cache memory of the multithreaded processor; and

wherein the register file is separated into portions without assigning sole use of any particular one of the portions to any single thread, such that a given one of the portions is accessed by at least two of the threads, the at least two threads altering access to the liven portion of the register file over a plurality of processor clock cycles.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2012
From: ASPEN ACQUISITION CORPORATION
To: QUALCOMM INCORPORATED
Reel/Frame 029377/0700 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNMENT BY SUPPLEMENTING TWO PAGES MISSING FROM THE ASSIGNMENT PREVIOUSLY RECORDED ON REEL 025084 FRAME 0963. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF ASSIGNOR'S INTEREST. Recorded Oct 25, 2010
From: SANDBRIDGE TECHNOLOGIES, INC.
To: ASPEN ACQUISITION CORPORATION
Reel/Frame 025178/0760 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2010
From: SANDBRIDGE TECHNOLOGIES, INC.
To: ASPEN ACQUISITION CORPORATION
Reel/Frame 025084/0963 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 13, 2002
From: HOKENEK, ERDEM; MOUDGILL, MAYAN; GLOSSNER, C. JOHN
To: SANDBRIDGE TECHNOLOGIES, INC.
Reel/Frame 013503/0245 →