Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters
First Claim
1. A method for executing, on a processor, a pipelined program loop having a loop body but no separately coded prolog instructions for priming the pipeline, the processor comprising a plurality of functional units coupled through an interconnection switch and controlled by a controller, 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, the method comprising:
- executing the loop body for a plurality of iterations without executing any separately programmed prolog instruction for priming the pipeline; and
at each iteration of the plurality of iterations;
determining if the input data values of a functional unit of the plurality of functional units are valid by checking the associated input data validity tags,executing the iteration whether or not the input data values are valid, andsetting an output data validity tag to indicate that a resulting output data from the functional unit is invalid if any of the input data values to the functional unit is invalid.
3 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for the elimination of prolog and epilog instructions in a vector processor. To eliminate the prolog, a functional unit of the vector processor has at least one input for receiving an input data value tagged with a data validity tag and an output for outputting an intermediate result tagged with a data validity tag. The data validity tags indicate the validity of the data. Before a loop is executed, the data validity tags are set to indicate that the associated data values are invalid. During execution of the loop body a functional unit checks the validity of input data. If all of the input data values are valid the functional operation is performed, the corresponding data validity tag set to indicate that the result is valid. If any of the input data values is invalid, the data validity tag of the result is set to indicate that the result is invalid. To eliminate the epilog, an iteration counter is associated with each sink unit of the vector processor. When a specified number of data values have been produced by a particular sink, no more data values are produced by that sink. The instructions for the pipelined loop body may be repeated, without alteration, to eliminate prolog and epilog instructions.
80 Citations
17 Claims
-
1. A method for executing, on a processor, a pipelined program loop having a loop body but no separately coded prolog instructions for priming the pipeline, the processor comprising a plurality of functional units coupled through an interconnection switch and controlled by a controller, 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, the method comprising:
-
executing the loop body for a plurality of iterations without executing any separately programmed prolog instruction for priming the pipeline; and at each iteration of the plurality of iterations; determining if the input data values of a functional unit of the plurality of functional units are valid by checking the associated input data validity tags, executing the iteration whether or not the input data values are valid, and setting an output data validity tag to indicate that a resulting output data from the functional unit is invalid if any of the input data values to the functional unit is invalid. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method for executing, on a processor, a pipelined program loop having a loop body but no separately coded epilog instructions for draining the pipeline comprising a plurality of functional units and at least one data sink coupled through an interconnection switch and controlled by a controller, each data sink being associated with a sink iteration counter, the method comprising:
-
initializing each sink iteration counter; executing the loop body for a specified number of iterations without executing any separately programmed epilog instruction for draining the pipeline; and at each iteration of the specified number of iterations for which a data value is to be sunk by a data sink unit; determining if the sink iteration counter of the data sink unit indicates that all data values have been committed to memory, and executing the iteration without committing the data value to memory if the sink iteration counter indicates that all data values have been committed to memory. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A method for reducing the number of instructions in a program for controlling a computational pipeline of a processor, the method comprising:
-
implementing instructions for priming the pipeline as one or more iterations of the loop body; associating each data value in the pipeline with a data validity tag; initializing data validity tags to indicate that associated data values are invalid; and during execution of the loop body; setting data validity tags to indicate that an associated data value is valid if it is the result of an operation on all valid data; and setting data validity tags to indicate that an associated data value is invalid if it is the result of an operation on any invalid data. - View Dependent Claims (14, 15, 16, 17)
-
Specification