Hardware supported software pipelined loop prologue optimization
First Claim
1. A method for optimizing a software pipelineable loop in a software code, wherein the loop comprises one or more pipelined stages and one or more loop operations, the method comprising:
- (a) evaluating an initiation interval time (IN) for a pipelined stage of the loop;
(b) determining a loop operation time latency (Tld);
(c) determining a number of loop operations (Np) from the pipelined stages to peel based on IN and Tld;
(d) peeling Np copies of the loop operation;
(e) copying the peeled loop operations before the loop in the software code;
(f) allocating a vector of registers;
(g) assigning results of the peeled loop operations and a result of an original loop operation to the vector of registers; and
(h) assigning memory addresses to the results of the peeled loop operations and original loop operation.
1 Assignment
0 Petitions
Accused Products
Abstract
A method for optimizing a software pipelineable loop in a software code is provided. The loop comprises one or more pipelined stages and one or more loop operations. The method comprises evaluating an initiation interval time (IN) for a pipelined stage of the loop. A loop operation time latency (Tld) and a number of loop operations (Np) from the pipelined stages to peel based on IN and Tld is then determined. The loop operation is peeled Np times and copied before the loop in the software code. A vector of registers is allocated and the results of the peeled loop operations and a result of an original loop operation is assigned to the vector of registers. Memory addresses for the results of the peeled loop operations and original loop operation are also assigned.
-
Citations
9 Claims
-
1. A method for optimizing a software pipelineable loop in a software code, wherein the loop comprises one or more pipelined stages and one or more loop operations, the method comprising:
-
(a) evaluating an initiation interval time (IN) for a pipelined stage of the loop;
(b) determining a loop operation time latency (Tld);
(c) determining a number of loop operations (Np) from the pipelined stages to peel based on IN and Tld;
(d) peeling Np copies of the loop operation;
(e) copying the peeled loop operations before the loop in the software code;
(f) allocating a vector of registers;
(g) assigning results of the peeled loop operations and a result of an original loop operation to the vector of registers; and
(h) assigning memory addresses to the results of the peeled loop operations and original loop operation. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An apparatus for optimizing a software pipelineable loop in a software code, wherein the loop comprises one or more pipelined stages and one or more loop operations, the apparatus comprising:
-
(a) instructions for evaluating an initiation interval time (IN) for a pipelined stage of the loop;
(b) instructions for determining a loop operation time latency (Tld);
(c) instructions for determining a number of loop operations from the pipelined stages to peel (Np) based on the IN and Tld;
(d) instructions for peeling Np copies of the loop operation;
(e) instructions for copying the peeled loop operations before the loop in the software code;
(f) instructions for allocating a vector of registers;
(g) instructions for assigning results of the peeled loop operations and a result of an original loop operation to the vector of registers; and
(h) instructions for assigning memory addresses to the results of the peeled loop operations and original loop operation.
-
Specification