Claims Analysis
Total Claims: 22
Claim 1
Independent Claim
295 words
A data processing system comprising: plural processing elements, each having a thread descriptor storage, for imperative processing of each of plural threads of computation in response to thread descriptors from the thread descriptor storage, each of said thread descriptors identifying a next instruction to be processed in one of said plural threads of computation and a frame of storage locations on which the next instruction is to operate; a memory for storing data and instructions for the plural processing elements in executing the plural threads of computation; a memory controller for controlling the memory, the controller responding to request messages from respective ones of the plural processing elements for memory access to the memory by returning a response message to the respective one of said processing elements, the response message including requested data and also including one of said thread descriptors; wherein each of the plural processing elements responds to a load instruction to retrieve data from the memory by generating one of said request messages comprised of a thread descriptor that is not retained by said processing element and by transmitting said request message to the memory controller which, in turn, generates a response message that includes the thread descriptor of the request message and the requested data, said processing element processing the response message by storing the requested data in the frame identified in the thread descriptor, said processing element storing the thread descriptor of the response message in said thread descriptor storage only upon the storing of all data required for processing of the next instruction identified by the thread descriptor, such that the storing of the thread descriptors in the thread descriptor storage and resultant imperative processing of the plural threads of computation are independently performed by the plural processing elements.
Claim 2
Dependent Claim
295 words
A data processing system comprising: plural processing elements, each having a thread descriptor storage, for imperative processing of each of plural threads of computation in response to thread descriptors from the thread descriptor storage, each of said thread descriptors identifying a next instruction to be processed in one of said plural threads of computation and a frame of storage locations on which the next instruction is to operate; a memory for storing data and instructions for the plural processing elements in executing the plural threads of computation; a memory controller for controlling the memory, the controller responding to request messages from respective ones of the plural processing elements for memory access to the memory by returning a response message to the respective one of said processing elements, the response message including requested data and also including one of said thread descriptors; wherein each of the plural processing elements responds to a load instruction to retrieve data from the memory by generating one of said request messages comprised of a thread descriptor that is not retained by said processing element and by transmitting said request message to the memory controller which, in turn, generates a response message that includes the thread descriptor of the request message and the requested data, said processing element processing the response message by storing the requested data in the frame identified in the thread descriptor, said processing element storing the thread descriptor of the response message in said thread descriptor storage only upon the storing of all data required for processing of the next instruction identified by the thread descriptor, such that the storing of the thread descriptors in the thread descriptor storage and resultant imperative processing of the plural threads of computation are independently performed by the plural processing elements.
Claim 3
Dependent Claim
44 words
A data processing system as recited in claim 1 wherein the processing elements execute forking instructions that generate two threads of computation from a single thread of computation and execute joining instructions that merge multiple threads of computation into a single thread of computation.
Claim 4
Dependent Claim
18 words
A data processing system as recited in claim 1 wherein the threaded descriptor storage is a FIFO queue.
Claim 5
Dependent Claim
40 words
A data processing system as recited in claim 1 wherein each of the plural processing elements begins processing a next thread in the thread descriptor storage if continuing processing of a current thread would cause the processing element to idle.
Claim 6
Dependent Claim
23 words
A data processing system as recited in claim 1 wherein each of the plural processing elements is a reduced instruction set processing element.
Claim 7
Dependent Claim
50 words
A data processing system as claimed in claim 1 wherein each of the plural processing elements responds to the response message by storing data from the response message at a memory location identified in the response message and stores the thread descriptor in said thread descriptor storage without the data.
Claim 8
Dependent Claim
44 words
A data processing system as claimed in claim 1 wherein each of the plural processing elements processes a join instruction by incrementing a value stored in a memory location and determining from said value whether a continuation to a next instruction is to issue.
Claim 9
Dependent Claim
259 words
In a multithreaded data processing system having a processing element for imperative processing of plural threads of computation, a method for executing load instructions by the processing element to load data from a global memory location of global memory to a local memory location of local memory, the local memory being local to the processing element, the method comprising, for each of said load instructions, the steps of: a) generating a request message from the processing element to a memory controller to read the data held at the global memory location, the request message including a thread descriptor identifying a next operation in one of said plural threads of computation to be processed and an identification of the local memory location; b) generating a response message to respond to the request message using the memory controller wherein the response message comprises the data from the global memory location, the thread descriptor of the request message, and the identification of the local memory location, such that the response message is generated independent of current activity of the processing element; and c) from the response message loading the data from the global memory into the local memory location and storing the thread descriptor of the response message in said thread descriptor storage only upon the storing of all data required for processing of the next operation identified by the thread descriptor, such that the storing of the thread descriptors in the thread descriptor storage and resultant imperative processing of the plural threads of computation are independently performed by the processing element.
Claim 10
Dependent Claim
259 words
In a multithreaded data processing system having a processing element for imperative processing of plural threads of computation, a method for executing load instructions by the processing element to load data from a global memory location of global memory to a local memory location of local memory, the local memory being local to the processing element, the method comprising, for each of said load instructions, the steps of: a) generating a request message from the processing element to a memory controller to read the data held at the global memory location, the request message including a thread descriptor identifying a next operation in one of said plural threads of computation to be processed and an identification of the local memory location; b) generating a response message to respond to the request message using the memory controller wherein the response message comprises the data from the global memory location, the thread descriptor of the request message, and the identification of the local memory location, such that the response message is generated independent of current activity of the processing element; and c) from the response message loading the data from the global memory into the local memory location and storing the thread descriptor of the response message in said thread descriptor storage only upon the storing of all data required for processing of the next operation identified by the thread descriptor, such that the storing of the thread descriptors in the thread descriptor storage and resultant imperative processing of the plural threads of computation are independently performed by the processing element.
Claim 11
Dependent Claim
26 words
A method as recited in claim 8 wherein multiple request messages generated for distinct load instructions are sent before a single corresponding response message is returned.
Claim 12
Dependent Claim
28 words
A method as recited in claim 8 wherein a response message for a second load instruction is returned prior to a response message for a first load instruction.
Claim 13
Dependent Claim
214 words
A data processing system comprising: at least one processing element for imperative processing, in response to thread descriptors from a thread descriptor storage, of individual imperative control flow instructions of each of plural threads of computation; a working memory, coupled to said at least one processing element, comprising frames of memory on which the at least one processing element operates in processing instructions; said thread descriptor storage, coupled to said at least one processing element, for storing a plurality of thread descriptors each of which identifies a next instruction to be processed in one of said plural threads of computation and identifies one of said frames of memory for processing by the at least one processing element; said at least one processing element matching operands required for processing of said next instruction and storing said operands in the frame of memory identified by the thread descriptor, said at least one processing element storing the thread descriptor in said thread descriptor storage only upon the storing of all operands required for processing of said next instruction identified by the thread descriptor, such that said storing of the thread descriptors in said thread descriptor storage and resultant imperative processing of the individual imperative control flow instructions are independently performed by said at least one processing element.
Claim 14
Dependent Claim
214 words
A data processing system comprising: at least one processing element for imperative processing, in response to thread descriptors from a thread descriptor storage, of individual imperative control flow instructions of each of plural threads of computation; a working memory, coupled to said at least one processing element, comprising frames of memory on which the at least one processing element operates in processing instructions; said thread descriptor storage, coupled to said at least one processing element, for storing a plurality of thread descriptors each of which identifies a next instruction to be processed in one of said plural threads of computation and identifies one of said frames of memory for processing by the at least one processing element; said at least one processing element matching operands required for processing of said next instruction and storing said operands in the frame of memory identified by the thread descriptor, said at least one processing element storing the thread descriptor in said thread descriptor storage only upon the storing of all operands required for processing of said next instruction identified by the thread descriptor, such that said storing of the thread descriptors in said thread descriptor storage and resultant imperative processing of the individual imperative control flow instructions are independently performed by said at least one processing element.
Claim 15
Dependent Claim
58 words
A data processing system as recited in claim 11 wherein the thread descriptors are comprised of two parts: a frame pointer that identifies the frame of storage elements residing in local memory to be transferred to working memory for processing by the processing element and an instruction pointer which identifies an instruction which operates on multiple memory locations.
Claim 16
Dependent Claim
28 words
A data processing system as recited in claim 12 wherein memory space allocated for the frames of storage elements is not fixed a priori at a fixed size.
Claim 17
Dependent Claim
16 words
A data processing system as recited in claim 11 wherein the working memory comprises a cache.
Claim 18
Dependent Claim
26 words
A data processing system as recited in claim 11 wherein the at least one processing element comprises a plurality of processing elements that process in parallel.
Claim 19
Dependent Claim
23 words
A data processing system as recited in claim 11 wherein the at least one processing element is a reduced instruction set processing element.
Claim 20
Dependent Claim
30 words
A data processing system as recited in claim 11 wherein the processing element comprises a pipeline such that each stage of the pipeline may operate on separate threads of computation.
Claim 21
Dependent Claim
42 words
A data processing system as recited in claim 17 further comprising a clocking means that clocks thread descriptors out of the thread descriptor storage into the pipeline so that the processing element may act on the thread specified by the thread descriptor.
Claim 22
Dependent Claim
36 words
A data processing system as recited in claim 17 wherein the clocking means also clocks successive stages of the pipeline to shift data from one stage of the pipeline to a next stage of the pipeline.