Method and apparatus for parallel computations with incomplete input operands
First Claim
1. A data processor for pipelined computation comprising:
- a first functional unit having at least one input and an output, each input being operable to receive an input data value and an associated input data validity tag indicative of the validity of the input data value and the output being operable to provide an output data value and an associated output data validity tag indicative of the validity of the output data value;
wherein the first functional unit is operable in a first mode in which an output data value from the first functional unit is valid if all of the input data values are valid, and in a second mode in which the output data value from the first functional unit is valid if any of the input data values is valid.
4 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for performing pipelined computations that include cross-iteration computations. The apparatus includes a functional unit having at least one input and an output, each input being operable to receive an input data value and an associated input data validity tag indicative of the validity of the input data value and the output being operable to provide an output data value and an associated output data validity tag indicative of the validity of the output data value. The first functional unit is operable in a first mode in which an output data value from the first functional unit is valid if all of the input data values are valid, and in a second mode in which the output data value from the first functional unit is valid if any of the input data values is valid.
38 Citations
28 Claims
-
1. A data processor for pipelined computation comprising:
-
a first functional unit having at least one input and an output, each input being operable to receive an input data value and an associated input data validity tag indicative of the validity of the input data value and the output being operable to provide an output data value and an associated output data validity tag indicative of the validity of the output data value; wherein the first functional unit is operable in a first mode in which an output data value from the first functional unit is valid if all of the input data values are valid, and in a second mode in which the output data value from the first functional unit is valid if any of the input data values is valid. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A functional unit for a pipelined data processor comprising:
-
a) at least one input register operable to receive an input data value and an associated input data validity tag indicative of the validity of the input data value; b) an output register operable to store an output data value and an associated output data validity tag indicative of the validity of the output data value; and c) a computational unit operable to calculate the output data value and the output data validity tag dependent upon the input data value and the associated input data validity tag of each input register of the at least one input register, wherein the functional unit is operable in a first mode in which an output data value from the functional unit is valid if all of the input data values are valid, and in a second mode in which the output data value from the functional unit is valid if any of the input data values is valid. - View Dependent Claims (11, 12, 13, 14)
-
-
15. A data processor for pipelined computation comprising:
-
at least one first functional unit having at least one input and an output, each input being operable to receive an input data value and an associated input data validity tag indicative of the validity of the input data value and the output being operable to provide an output data value and an associated output data validity tag indicative of the validity of the output data value; and at least one second functional unit having at least one input and an output, each input being operable to receive an input data value and an associated input data validity tag indicative of the validity of the input data value and the output being operable to provide an output data value and an associated output data validity tag indicative of the validity of the output data value; wherein an output data value from a functional unit of the at least one first functional units is valid if all of the input data values are valid in a first mode of the functional unit of the at least one first functional units and the output data value from the functional unit of the at least one first function units is valid if any of the input data values is valid in a second mode of the functional unit of the at least one first functional units, and wherein the output data value from a functional unit of the at least one second functional units is valid if all of the input data values are valid in a first mode of the functional unit of the at least one second functional units and the output data value from the functional unit of the at least one second functional units is valid if any of the input data values is valid in a second mode of the functional unit of the at least one second functional units. - View Dependent Claims (16, 17, 18)
-
-
19. A method for executing an unrolled program loop on a processor, the unrolled loop comprising a plurality of iterations of a computation and the processor comprising a plurality of functional units, each functional unit of the plurality of functional units having at least one input for receiving an input data value and an associated input data validity tag and each functional unit of the plurality of functional units being configurable between a first mode of operation and a second mode of operation in response to an operation code, the method comprising, in each cycle of the processor:
-
a) determining if the input data values are valid by checking the associated input data validity tags, b) if all of the input data values are valid, performing a functional operation on the input data values, storing the result of the functional operation in the result register and setting an associated output data validity tag to indicate that the intermediate result is valid; c) if the functional unit is configured in the first mode of operation; if any of the input data values is invalid, setting the associated output data validity tag to indicate that the intermediate result is invalid, and d) if the functional unit is configured in the second mode of operation; if any of the input data values is valid, setting the associated output data validity tag to indicate that the intermediate result is valid. - View Dependent Claims (20, 21, 22, 23)
-
-
24. A data processor for performing pipelined computation comprising:
-
a first means for performing an arithmetic function, the first means having at least one input and an output, each input being operable to receive an input data value and an associated input data validity tag indicative of the validity of the input data value and the output being operable to provide an output data value and an associated output data validity tag indicative of the validity of the output data value; and a second means for performing an arithmetic function, the second means having at least one input and an output, each input being operable to receive an input data value and an associated input data validity tag indicative of the validity of the input data value and the output being operable to provide an output data value and an associated output data validity tag indicative of the validity of the output data value; wherein the output from the first means is valid if all of the input data values are valid in a first mode of the first means and the output from the first means is valid if any of the input data values is valid in a second mode of the first means, and wherein the output from the second means is valid if all of the input data values are valid in a first mode of the second means and the output from the second means is valid if any of the input data values is valid in a second mode of the second means. - View Dependent Claims (25, 26)
-
-
27. A data processor for pipelined computation of a data element, comprising:
-
a first functional unit having at least one input and an output, each input being operable to receive an input data value and an associated input data validity tag indicative of the validity of the input data value and the output being operable to provide an output data value and an associated output data validity tag indicative of the validity of the output data value; wherein the first functional unit is operable in a first mode in which an output data value from the first functional unit is valid if all of the input data values are valid, and in a second mode in which the output data value from the first functional unit is valid if any of the input data values is valid, and the data element comprising; a data value portion representing a numerical value of a data element; and a data validity tag representing the validity of the data element; wherein the use of the data value in an operation is controlled by the value of the data validity tag such that the result of the operation on data elements from the same iteration of a pipelined computation is valid if all data elements input to the computation are valid and the result of the operation on data elements from different iterations of the pipelined computation is valid if any of the data elements input to the computation is valid.
-
-
28. A data processor for pipelined computation of a data element, comprising:
-
a first functional unit having at least one input and an output, each input being operable to receive an input data value and an associated input data validity tag indicative of the validity of the input data value and the output being operable to provide an output data value and an associated output data validity tag indicative of the validity of the output data value; wherein the first functional unit is operable in a first mode in which an output data value from the first functional unit is valid if all of the input data values are valid, and in a second mode in which the output data value from the first functional unit is valid if any of the input data values is valid, and the data element comprising; a) a data value portion representing a numerical value of a data element; and b) a data validity tag representing the validity of the data element; wherein the use of the data value in an operation is controlled by the value of the data validity tag such that the result of the operation on data elements is valid if all data elements input to the computation are valid, invalid if all data elements input to the computation are invalid, and dependent upon the operation if at least one data element input to the computation is valid and at least one data element input to the computation is invalid.
-
Specification