Method and Apparatus For Register Spill Minimization
First Claim
1. A compiler method implemented within a compiler on a computing device, the method comprising:
- identifying operations that may be performed on either a main pipe or an alternative pipe;
identifying chains of related operations that may be performed on either the main pipe or the alternative pipe;
identifying points of execution at which a number of simultaneous live values will exceed a number of available registers in the main pipe;
choosing a chain of operations as a candidate to be moved to the alternative pipe in order to reduce the number of simultaneous live values at identified points of execution that compete for registers in the main pipe; and
generating instructions for the chosen chain of operations for execution on either the main pipe or the alternative pipe.
1 Assignment
0 Petitions
Accused Products
Abstract
The aspects enable a computing device to allocate memory space to variables during runtime compilation of a software application. A compiler may be modified to identify operations that can be performed on either a main pipe or an alternative pipe, identify chains of related operations that can be performed on either the main pipe or the alternative pipe, identify points in the execution of code at which the number of live values will exceed the number of registers, and choosing a chain of operations as a candidate to be moved to the alternative pipe in order to reduce the number of live values at identified points in the execution of code. The entire chosen chain of operations may be moved to the alternative pipe. The alternative pipe may perform the computations and return the results to the main pipe for execution.
28 Citations
28 Claims
-
1. A compiler method implemented within a compiler on a computing device, the method comprising:
-
identifying operations that may be performed on either a main pipe or an alternative pipe; identifying chains of related operations that may be performed on either the main pipe or the alternative pipe; identifying points of execution at which a number of simultaneous live values will exceed a number of available registers in the main pipe; choosing a chain of operations as a candidate to be moved to the alternative pipe in order to reduce the number of simultaneous live values at identified points of execution that compete for registers in the main pipe; and generating instructions for the chosen chain of operations for execution on either the main pipe or the alternative pipe. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A computing device, comprising:
-
means for identifying operations that may be performed on either a main pipe or an alternative pipe; means for identifying chains of related operations that may be performed on either the main pipe or the alternative pipe; means for identifying points of execution at which a number of simultaneous live values will exceed a number of available registers in the main pipe; means for choosing a chain of operations as a candidate to be moved to the alternative pipe in order to reduce the number of simultaneous live values at identified points in of execution which compete for registers in the main pipe; and means for generating instructions for the chosen chain of operations for execution on either the main pipe or the alternative pipe. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computing device, comprising:
-
a memory; and a processor coupled to the memory, wherein the processor is configured with processor-executable instructions to perform operations comprising; identifying operations that may be performed on either a main pipe or an alternative pipe; identifying chains of related operations that may be performed on either the main pipe or the alternative pipe; identifying points of execution at which a number of simultaneous live values will exceed a number of available registers in the main pipe; choosing a chain of operations as a candidate to be moved to the alternative pipe in order to reduce the number of simultaneous live values at identified points of execution which compete for registers in the main pipe; and generating instructions for the chosen chain of operations for execution on either the main pipe or the alternative pipe. - View Dependent Claims (16, 17, 18, 19, 20, 21)
-
-
22. A non-transitory computer readable storage medium having stored thereon processor-executable instructions configured to cause a processor to perform operations comprising:
-
identifying operations that may be performed on either a main pipe or an alternative pipe; identifying chains of related operations that may be performed on either the main pipe or the alternative pipe; identifying points of execution at which a number of simultaneous live values will exceed a number of available registers in the main pipe; choosing a chain of operations as a candidate to be moved to the alternative pipe in order to reduce the number of simultaneous live values at identified points of execution which compete for registers in the main pipe; and generating instructions for the chosen chain of operations for execution on either the main pipe or the alternative pipe. - View Dependent Claims (23, 24, 25, 26, 27, 28)
-
Specification