Method and apparatus for nested instruction looping using implicit predicates
First Claim
1. A vector processor for executing a nested program loop having an inner loop and an outer loop, the vector processor comprising:
- a first input stream unit comprising a fetch unit, a logic circuit and a first inner counter, the first input stream unit being configured to fetch a data value once per outer loop iteration of the nested program loop, as indicated by the first inner counter and being further configured to output, to a data path, the data value and a data validity tag associated with the data value, the data validity tag indicating that the data value is valid, and the first input stream unit being configured to set the data validity tag associated with the data value to indicate that the data value is invalid at other iterations of the inner loop;
a plurality of functional units, each functional unit being configured to operate on input data values in the data path and produce, as output, a data value and an associated data validity tag, wherein the data validity tag is set to indicate that the output data value is valid if all of the inputs are valid; and
a first output stream unit configured to receive a data value and an associated data validity tag from the data path, the first output stream unit comprising a store unit, a logic circuit and a second inner counter,wherein, once per outer loop iteration of the nested program loop, as indicated by the second inner counter, the first output stream unit sinks a data value if it is valid, as indicated by the associated data validity tag, andwherein, at other inner loop iterations, or if the data validity tag indicates that the data value is invalid, the first output stream unit does not sink the data value;
wherein the data path comprises an interconnect switch configured to couple between the plurality of functional units, the first input stream unit and the first output stream unit.
4 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for executing a nested program loop on a vector processor, the loop comprising outer-pre, inner and outer-post portions. An input stream unit of the vector processor provides a data value to a data path and sets an associated data validity tag to ‘valid’ once per outer loop iteration, as indicated by an inner counter of the input stream unit. The tag is set to ‘invalid’ in other iterations. Functional units of the vector processor operate on data values in the data path, each functional unit producing a valid result if the data validity tags associated with inputs data values are set to ‘valid’. An output stream unit of the vector processor sinks a data value from the data path once per outer loop iteration if an associated data validity tag indicates that the data value is valid.
-
Citations
18 Claims
-
1. A vector processor for executing a nested program loop having an inner loop and an outer loop, the vector processor comprising:
-
a first input stream unit comprising a fetch unit, a logic circuit and a first inner counter, the first input stream unit being configured to fetch a data value once per outer loop iteration of the nested program loop, as indicated by the first inner counter and being further configured to output, to a data path, the data value and a data validity tag associated with the data value, the data validity tag indicating that the data value is valid, and the first input stream unit being configured to set the data validity tag associated with the data value to indicate that the data value is invalid at other iterations of the inner loop; a plurality of functional units, each functional unit being configured to operate on input data values in the data path and produce, as output, a data value and an associated data validity tag, wherein the data validity tag is set to indicate that the output data value is valid if all of the inputs are valid; and a first output stream unit configured to receive a data value and an associated data validity tag from the data path, the first output stream unit comprising a store unit, a logic circuit and a second inner counter, wherein, once per outer loop iteration of the nested program loop, as indicated by the second inner counter, the first output stream unit sinks a data value if it is valid, as indicated by the associated data validity tag, and wherein, at other inner loop iterations, or if the data validity tag indicates that the data value is invalid, the first output stream unit does not sink the data value; wherein the data path comprises an interconnect switch configured to couple between the plurality of functional units, the first input stream unit and the first output stream unit. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of executing a nested program loop on a vector processor, the nested loop comprising an outer-pre portion, an inner portion and an outer-post portion, the method comprising:
-
providing a data value to a data path and setting an associated data validity tag to ‘
valid’
once per outer loop iteration, as indicated by an inner counter;setting the associated data validity tag to ‘
invalid’
if the inner counter does not indicate a start of an inner loop;performing functional operations on data values in the data path, each functional operation producing a valid result if the data validity tags associated with inputs data values are set to ‘
valid’
; andsinking a data value from the data path once per outer loop iteration, as indicated by an inner counter, if an associated data validity tag indicates that the data value is valid. - View Dependent Claims (11, 12, 13, 14)
-
-
15. A method for providing a stream of data values to a data path of a vector processor configured to execute a nested program loop, the method comprising:
at each inner iteration of the nested loop; updating an inner counter; if the inner counter has a specified value; retrieving a data value from a data source; providing the data value to the data path; and setting a data validity tag associated with the data value to indicate that the data value is valid; otherwise, if the inner loop counter does not have the specified value; setting the data validity tag associated with the data value to indicate that the data value is invalid; and providing the data value and the associated data validity tag to the data path. - View Dependent Claims (16, 17, 18)
Specification