IP Library Granted Patent US 7,925,861
Granted Patent B2
US 7,925,861 · App. 11/669,868 · Granted Apr 12, 2011

Plural SIMD arrays processing threads fetched in parallel and prioritized by thread manager sequentially transferring instructions to array controller for distribution

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 7,925,861
App. No.
11/669,868
Granted
Apr 12, 2011
Kind
B2
Abstract

A data processor comprises a plurality of processing elements arranged in a first plurality of single instruction multiple data (SIMD) processing arrays, and comprises a second plurality of controllers for transferring instructions to the processing arrays. Each controller is operable to retrieve a plurality of incoming instruction streams in parallel with one another and operable to supply incoming instruction streams to one of a plurality of processing arrays.

Claims (44)

1. A multithreaded data processor operable to process a plurality of threads, the data processor comprising:

a plurality of single instruction multiple data (SIMD) processing arrays, each processing array comprising a plurality of processing elements (PEs), each PE operable to receive a selected one of the plurality of threads;

a thread manager operable to transfer the threads to an array controller, the thread manager comprising:

a fetch unit operable to retrieve the threads in parallel with one another;

a thread scheduler operable to schedule processing priority for each thread from among the plurality of threads;

wherein the fetch unit is further operable to transfer sequentially a plurality of core instructions from each selected thread from among the plurality of threads to the array controller; and wherein;

the array controller is operable to transfer each selected thread from among the plurality of threads to the plurality of SIMD processing arrays on the basis of a priority status allocated to the threads.

2. A data processor as claimed in claim 1 , wherein the array controller is operable to transfer each of the threads to a single SIMD processing array.

3. A data processor as claimed in claim 1 , wherein the array controller is operable to transfer each of the threads to at least two of the plurality of SIMD processing arrays.

4. A data processor as claimed in claim 1 , wherein each thread manager comprises a cache memory for storing retrieved threads.

5. A data processor as claimed in claim 1 , wherein each thread manager comprises a first-in-first-out buffer for storing retrieved threads.

6. A data processor as claimed in claim 1 , wherein each thread manager comprises a synchronization controller for controlling synchronization between threads.

7. A data processor as claimed in claim 1 , wherein each thread manager comprises a synchronization controller for controlling synchronization between threads and external hardware units.

8. A data processor as claimed in claim 1 , wherein each thread manager comprises:

a thread processor for controlling a plurality of threads;

a synchronization controller for controlling synchronization between threads;

a status block for providing status information regarding each of the threads; and

a scheduling means connected to receive status information, and operable to determine which of the threads is to be active.

9. A data processor as claimed in claim 1 , wherein each thread manager is operable to assign threads respective relative priority levels.

10. A data processor as claimed in claim 1 , wherein each thread manager comprises a scheduler connected to receive status information from functional units external to the array of processing elements, and operable to schedule threads using such received status information.

11. A method for controlling a data processor operable to process a plurality of threads, the data processor including: a plurality of single instruction multiple data (SIMD) processing arrays, each processing array comprising a plurality of processing elements (PEs), each PE operable to receive a selected one of the plurality of threads; a thread manager operable to transfer the threads to an array controller, the thread manager comprising a fetch unit operable to retrieve the threads in parallel with one another; a thread scheduler operable to schedule processing priority for each thread from among the plurality of threads; wherein fetch unit is further operable to transfer sequentially a plurality of core instructions from each selected thread from among the plurality of threads to the array controller; and wherein

the array controller is operable for transferring each instruction stream from among the plurality of threads to the plurality of SIMD processing arrays on the basis of a priority status allocated to the threads, the method comprising:

retrieving by the fetch unit a plurality of incoming threads in parallel with one another; and

transferring sequentially a plurality of instructions from a selected one of the retrieved threads to the array controller for transfer to the plurality of SIMD processing arrays on the basis of a priority status allocated to the threads.

12. A method as claimed in claim 11 , wherein the array controller transfers each of the threads to a single SIMD processing array.

13. A method as claimed in claim 11 , wherein the array controller transfers each of the threads to at least two of the plurality of SIMD processing arrays.

14. A method as claimed in claim 11 , wherein transferring the retrieved instruction streams includes transferring the retrieved threads to one or more function controllers operable to control respective functional units.

15. A method as claimed in claim 11 , wherein transferring the retrieved threads includes transferring the retrieved threads to one or more function controllers operable to control the processing elements in a corresponding processor array.

16. A method as claimed in claim 11 , wherein transferring the retrieved threads includes transferring the retrieved threads to one or more function controllers operable to control input/output functions of respective arrays of processing elements.

17. A method as claimed in claim 11 , wherein transferring the retrieved threads includes transferring the retrieved threads to a plurality of first function controllers operable to control the processing elements in respective processor arrays, and to a plurality of second function controllers operable to control input/output functions of respective arrays of processing elements, the first and second function controllers operating asynchronously.

18. A method as claimed in claim 11 , wherein transferring the retrieved threads includes transferring selectively the retrieved threads to either an array controller which controls data processing of the processor arrays, or to a channel controller which controls the transfer of data to and from the processing elements in the processor arrays.

19. A method as claimed in claim 11 , comprising storing the retrieved threads in a cache memory.

20. A method as claimed in claim 11 , comprising storing the retrieved threads in a first-in-first-out buffer.

21. A method as claimed in claim 11 , comprising controlling synchronization between threads.

22. A method as claimed in claim 11 , comprising controlling synchronization between threads and external hardware units.

23. A method as claimed in claim 11 , comprising controlling a plurality of threads;

a synchronization controller for controlling synchronization between threads;

a status block for providing status information regarding each of the threads; and

a scheduling means connected to receive status information, and operable to determine which of the threads is to be active.

24. A method as claimed in claim 11 , comprising assigning threads respective relative priority levels.

25. A data processor as claimed in claim 1 , wherein the array controller comprises an instruction launcher operable to receive the plurality of threads from the thread manager.

26. A data processor as claimed in claim 25 , wherein the array controller comprises an instruction sequencer; and a load/store controller and wherein the instruction launcher is operable to direct instruction information to either the instruction sequencer or a load/store controller, the instruction sequencer operable to receive instruction information relating to data processing of the plurality of processing elements of the SIMD processing arrays, the load/store controller operable to receive instruction information relating to data transfer operations.

27. A data processor as claimed in claim 1 , wherein the array controller comprises a scoreboard unit, the scoreboard unit operable to store information regarding the use of processing elements registers by each thread.

28. A data processor as claimed in claim 1 further comprising a channel controller operable to asynchronously control computation and external input/output operations and wherein the thread manager is operable to synchronize the operations of the processing elements of the SIMD arrays with the input/output operations.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2010
From: CLEARSPEED TECHNOLOGY LTD
To: RAMBUS INC.
Reel/Frame 024964/0861 →
CHANGE OF NAME Recorded Jun 18, 2010
From: CLEARSPEED TECHNOLOGY PLC
To: CLEARSPEED TECHNOLOGY LIMITED
Reel/Frame 024555/0672 →
CORRECTIVE ASSIGNMENT TO CORRECT THE LAST NAME OF INVENTOR JOHN "RHODES" PREVIOUSLY RECORDED ON REEL 020874 FRAME 0944. ASSIGNOR(S) HEREBY CONFIRMS THE LAST NAME IS --RHOADES--. Recorded Feb 2, 2009
From: STUTTARD, DAVE; WILLIAMS, DAVE; O'DEA, EAMON; FAULDS, GORDON; RHOADES, JOHN; CAMERON, KEN; ATKIN, PHIL; WINSER, PAUL; DAVID, RUSSELL; MCCONNELL, RAY; DAY, TIM; GREER, TREY
To: CLEARSPEED TECHNOLOGY PLC
Reel/Frame 022188/0130 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2008
From: STUTTARD, DAVE; WILLIAMS, DAVE; O'DEA, EAMON; FAULDS, GORDON; RHODES, JOHN; CAMERON, KEN; ATKIN, PHIL; WINSER, PAUL; DAVID, RUSSELL; MCCONNELL, RAY; DAY, TIM; GREER, TREY
To: CLEARSPEED TECHNOLOGY PLC
Reel/Frame 020874/0944 →