Parallel data processing apparatus
View Patent ↗A data processor comprises a plurality of processing elements arranged for parallel processing of data, and a controller for controlling the plurality of processing elements. The controller is operable to determine respective status information for a plurality of processing threads, and to control processing of the processing threads by the plurality of processors in dependence upon such status information.
1. A data processor comprising:
a plurality of processing elements arranged for parallel processing of data; and
a controller for controlling the plurality of processing elements, the controller including:
a thread manager operable to determine respective status information for a plurality of processing threads and to control processing of the processing threads by the plurality of processing elements in dependence upon such status information, said thread manager including:
an instruction fetch unit for fetching instructions for each thread;
at least one cache memory unit for storing instructions fetched for each thread;
a status block for receiving status information from each of the threads;
a thread scheduler for determining which thread should be active at any one time based on said status information;
a separate thread processor for each thread, said thread processor operative to control issuance of core instructions for a respective thread for maintaining processing of simultaneously active program threads; and
a semaphore controller for synchronizing the threads with one another.
2. A data processor as claimed in claim 1 , wherein the controller is operable to receive status information from at least one processing element of the plurality of the processing elements.
3. A data processor as claimed in claim 2 , wherein the processing elements are arranged as a single instruction multiple data (SIMD) processor array.
4. A data processor as a claimed in claim 1 , wherein the controller is operable to receive status information from an input/output unit adapted to perform input/output operations for processing elements.
5. A data processor as claimed in claim 1 , wherein the controller is operable to receive status information from an external processor which is separate from the processing elements.
6. A controller for controlling a data processor which includes a plurality of processing elements, the controller including a thread manager operable to determine respective status information for a plurality of processing threads and to control processing of the processing threads by the plurality of processors in dependence upon such status information, said thread manager including:
an instruction fetch unit for fetching instructions for each thread;
at least one cache memory unit for storing instructions fetched for each thread;
a status block for receiving status information from each of the threads;
a thread scheduler for determining which thread should be active at any one time based on said status information;
a separate thread processor for each thread, said thread processor operative to control issuance of core instructions for a respective thread for maintaining processing of simultaneously active program threads; and
a semaphore controller for synchronizing the threads with one another.
7. A controller as claimed in claim 6 , operable to receive status information from at least one processing element of the plurality of the processing elements.
8. A controller as claimed in claim 6 , operable to receive status information from an input/output unit adapted to perform input/output operations for the processing elements.
9. A controller as claimed in claim 6 , operable to receive status information from an external processor which is separate from the processing elements.
10. A method for controlling a plurality of processing elements arranged for parallel processing of data, the method comprising:
determining respective status information for a plurality of processing threads and controlling processing of the processing threads by the plurality of processors in dependence upon such status information by means of a thread manager, the step of determining respective status information and controlling processing of the processing threads via said thread manager comprising the steps of:
fetching instructions for each thread via a an instruction fetch unit within said thread manager;
storing instructions fetched for each thread via at least one cache memory unit within said thread manager;
receiving status information from each of the threads via a status block within said thread manager;
determining which thread should be active at any one time based on said status information via a thread scheduler within said thread manager;
controlling issuance of core instructions for a respective thread for maintaining processing of simultaneously active program threads via a separate thread processor for each thread within said thread manager; and
synchronizing the threads with one another via a semaphore controller within said thread manager.
11. A method as claimed in claim 10 , further comprising receiving status information from at least one processing element of the plurality of the processing elements.
12. A method as claimed in claim 10 , further comprising receiving status information from an input/output unit adapted to perform input/output operations for processing elements.
13. A method as claimed in claim 10 , further comprising receiving status information from an external processor which is separate from the processing elements.