← Back to Patent Explorer
US5584027A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for finding induction variables for use in compiling computer instructions

Assignee: NXP USA Inc
•
Filing: 1994-08-31
•
Granted: 1996-12-10
•
Expires: 2014-08-31
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A compiler and/or a compilation method is used to change or compile a plurality of instructions in memory from a form which is better understood by a human user to a form which is readily executed by a microprocessor. In doing this compilation, execution optimization is usually performed. A more efficient job of optimization (and therefore improved software performance) is achieved by correctly finding/identifying induction variables in code loops which may be used in the compiler's optimization routines. Induction variable properties can be found by constructing and analyzing an integer transfer matrix wherein the values of variables at the beginning of one execution of the loop are related functionally to the values of variables at the end of the one execution of the loop. This matrix can be effectively processed using eigenvalue processing using integer unimodular matrices to determine induction variable properties which were previously missed by prior methods, thereby improving performance.

Inventors

  • 👤 Roger A. Smith

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-04 13:31
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/44; G06F8/443

Claims Analysis

Total Claims: 50
Claim 1
Independent Claim 413 words
A method for determining induction variables comprising the steps of: accessing a file stored in computer memory, the file containing several program statements wherein a plurality of the program statements are to be executed in a looping execution flow by a central processing unit (CPU); parsing the file to produce a representation of the program statements contained in the file, the representation being stored in computer memory; identifying, from the representation in computer memory, the plurality of program statements which is to be executed in a looping execution flow; identifying a set of potential induction variables within the plurality of the program statements within the looping execution flow; reducing the set of potential induction variables to a reduced set of potential induction variables wherein a potential induction variable in the reduced set of potential induction variables has a value at the end of any execution of the loop which is representable as a sum of constant integer coefficients multiplied by the values of other potential induction variables in the reduced set of potential induction variables at the start of that execution of the loop; creating a transfer matrix A in computer memory which represents the relationships of the values of the potential induction variables in the reduced set of potential induction variables at the end of an execution of the loop to the values of the potential induction variables in the reduced set of potential induction variables at the start of that execution; transforming the transfer matrix A from computer memory to a transformed matrix A' in computer memory wherein the transformed matrix A' is easier to analyze for induction variables than the transfer matrix A, the transforming being performed by using an integer unimodular transformation, the reduced set of potential induction variables being transformed to a set of potential transformed induction variables by the same integer unimodular transformation; analyzing the matrix A' to find transformed induction variables and transformed non-induction variables wherein the value of a transformed induction variable at the beginning of the Nth execution of the loop is a linear combination of a predetermined set of functions of N and wherein each non-induction variable defines an undetermined independent function of N; and applying the inverse of the transformation to the sets of transformed induction variables and transformed non-induction variables thereby expressing each of the variables in the reduced set of potential induction variables as a linear combination of the predetermined functions of N and the undetermined independent functions of N.
Claim 2
Independent Claim 413 words
A method for determining induction variables comprising the steps of: accessing a file stored in computer memory, the file containing several program statements wherein a plurality of the program statements are to be executed in a looping execution flow by a central processing unit (CPU); parsing the file to produce a representation of the program statements contained in the file, the representation being stored in computer memory; identifying, from the representation in computer memory, the plurality of program statements which is to be executed in a looping execution flow; identifying a set of potential induction variables within the plurality of the program statements within the looping execution flow; reducing the set of potential induction variables to a reduced set of potential induction variables wherein a potential induction variable in the reduced set of potential induction variables has a value at the end of any execution of the loop which is representable as a sum of constant integer coefficients multiplied by the values of other potential induction variables in the reduced set of potential induction variables at the start of that execution of the loop; creating a transfer matrix A in computer memory which represents the relationships of the values of the potential induction variables in the reduced set of potential induction variables at the end of an execution of the loop to the values of the potential induction variables in the reduced set of potential induction variables at the start of that execution; transforming the transfer matrix A from computer memory to a transformed matrix A' in computer memory wherein the transformed matrix A' is easier to analyze for induction variables than the transfer matrix A, the transforming being performed by using an integer unimodular transformation, the reduced set of potential induction variables being transformed to a set of potential transformed induction variables by the same integer unimodular transformation; analyzing the matrix A' to find transformed induction variables and transformed non-induction variables wherein the value of a transformed induction variable at the beginning of the Nth execution of the loop is a linear combination of a predetermined set of functions of N and wherein each non-induction variable defines an undetermined independent function of N; and applying the inverse of the transformation to the sets of transformed induction variables and transformed non-induction variables thereby expressing each of the variables in the reduced set of potential induction variables as a linear combination of the predetermined functions of N and the undetermined independent functions of N.
Claim 3
Dependent Claim 63 words
The method of claim 1 wherein the step of transforming the transfer matrix A to a transformed matrix A' comprises: creating an integer unimodular matrix U in computer memory which has an inverse matrix U -1 that is also an integer unimodular matrix and using matrix multiplication between matrices A, U, and U -1 to transform the matrix A to the matrix A'.
Claim 4
Dependent Claim 34 words
The method of claim 2 wherein the step of transforming the transfer matrix A to a transformed matrix A' comprises: finding A' wherein A' is calculated by performing the matrix operation U -1 ·A·U.
Claim 5
Dependent Claim 40 words
The method of claim 3 wherein the step of transforming the transfer matrix A to a transformed matrix A' comprises: exposing eigenvalues and eigenvectors of matrix A' or a submatrix of A' using the matrices U and U -1 .
Claim 6
Dependent Claim 58 words
The method of claim 1 wherein the step of analyzing the matrix A' to find transformed induction variables and transformed non-induction variables comprises: reducing at least one entry in the matrix A' from a non-zero integer value to a zero integer value by iteratively processing matrix A' using at least one eigenvalue in a set of predetermined eigenvalues.
Claim 7
Dependent Claim 43 words
The method of claim 5 wherein the step of reducing at least one entry in the matrix A' from a non-zero integer value to a zero integer value comprises: iteratively processing the matrix A' using the eigenvalues of 1, -1, 2, and 0.
Claim 8
Dependent Claim 61 words
The method of claim 1 wherein the step of accessing a file stored in computer memory, the file containing several program statements wherein a plurality of the program statements are to be executed in a looping execution flow comprises: accessing the plurality of program statements wherein the program statements contain a plurality of looping structures wherein each looping structure is processed.
Claim 9
Dependent Claim 79 words
The method of claim 7 wherein the step of accessing a file stored in computer memory, the file containing several program statements wherein a plurality of the program statements are to be executed in a looping execution flow comprises: accessing the plurality of program statements wherein the program statements contain a plurality of looping structures wherein at least two of the plurality of looping structures are organized as nested loops wherein one looping structure lies within another looping structure.
Claim 10
Dependent Claim 32 words
The method of claim 1 further comprising the step of: using a compiler which receives as input the induction variables and processes the induction variables to optimize the execution of the loop.
Claim 11
Dependent Claim 48 words
The method of claim 1 further comprising the step of: using means for optimizing, which receives as input the induction variables and processes the induction variables, to optimize the execution of the loop to improve one of either speed of execution, parallel execution efficiency, and cache memory performance.
Claim 12
Independent Claim 396 words
A method for processing induction variables, the method comprising the steps of: (a) providing a user source code in computer memory; (b) parsing the user source code via means for parsing which is stored in computer memory to find a loop in the user source code, the loop being a portion of the user source code which selectively executes several times in sequence via a central processing unit (CPU) depending upon evaluation of an loop termination condition, the loop having a beginning and an end; (c) scanning the loop to find assignments to a set of N variables S i within the loop which are of the form: S.sub.i =ΣC.sub.ij S.sub.j +d.sub.i ; (d) constructing in computer memory a transfer matrix A and a vector b relating the values of the variables S i at the end of loop to the values of the variables S i at the beginning of the loop, the matrix A having a size which is N×N wherein: S.sub.i (end)=ΣA.sub.ij S.sub.j (beginning)+a.sub.i ; (e) initializing a working transfer matrix A 0 to A; (f) initializing p to 0 and m to N; (g) initializing a matrix U 0 having an inverse matrix U 0 -1 to an identity matrix; (h) selecting an eigenvalue λ from an eigenvalue list stored in computer memory; (i) finding a number e of eigenvectors corresponding to the eigenvalue λ in an m×m submatrix of the matrix A p , if no eigenvectors are found then continue with step (k); (j) decrementing m by e, transforming A p to A p+1 to form a new transfer matrix A p+1 , transforming U p to form a new unimodular matrix U p+1 , transforming U p -1 to a new inverse unimodular matrix U p+1 -1 , and incrementing p by one and then repeating step (i); (k) repeating steps (h) through (k) until all eigenvalues λ in the eigenvalue list stored in computer memory have been selected in step (h); (l) multiplying the vector a by the U p -1 to form a vector a p ; (m) analyzing the matrix A p and the vector a p to find N-m transformed induction variables and m transformed non-induction variables; and (n) transforming the N-m transformed induction variables and m transformed non-induction variables using the matrix U p to determine induction properties of the variables S i .
Claim 13
Independent Claim 396 words
A method for processing induction variables, the method comprising the steps of: (a) providing a user source code in computer memory; (b) parsing the user source code via means for parsing which is stored in computer memory to find a loop in the user source code, the loop being a portion of the user source code which selectively executes several times in sequence via a central processing unit (CPU) depending upon evaluation of an loop termination condition, the loop having a beginning and an end; (c) scanning the loop to find assignments to a set of N variables S i within the loop which are of the form: S.sub.i =ΣC.sub.ij S.sub.j +d.sub.i ; (d) constructing in computer memory a transfer matrix A and a vector b relating the values of the variables S i at the end of loop to the values of the variables S i at the beginning of the loop, the matrix A having a size which is N×N wherein: S.sub.i (end)=ΣA.sub.ij S.sub.j (beginning)+a.sub.i ; (e) initializing a working transfer matrix A 0 to A; (f) initializing p to 0 and m to N; (g) initializing a matrix U 0 having an inverse matrix U 0 -1 to an identity matrix; (h) selecting an eigenvalue λ from an eigenvalue list stored in computer memory; (i) finding a number e of eigenvectors corresponding to the eigenvalue λ in an m×m submatrix of the matrix A p , if no eigenvectors are found then continue with step (k); (j) decrementing m by e, transforming A p to A p+1 to form a new transfer matrix A p+1 , transforming U p to form a new unimodular matrix U p+1 , transforming U p -1 to a new inverse unimodular matrix U p+1 -1 , and incrementing p by one and then repeating step (i); (k) repeating steps (h) through (k) until all eigenvalues λ in the eigenvalue list stored in computer memory have been selected in step (h); (l) multiplying the vector a by the U p -1 to form a vector a p ; (m) analyzing the matrix A p and the vector a p to find N-m transformed induction variables and m transformed non-induction variables; and (n) transforming the N-m transformed induction variables and m transformed non-induction variables using the matrix U p to determine induction properties of the variables S i .
Claim 14
Dependent Claim 32 words
The method of claim 11 wherein the step (h) comprises: using the eigenvalue list wherein the eigenvalue list comprises an eigenvalue selected from the group consisting of: 1, -1, 2, and 0.
Claim 15
Dependent Claim 32 words
The method of claim 11 further comprising the step of: using the induction properties of the variables S i to optimize an execution of the loop in terms of speed of execution.
Claim 16
Dependent Claim 209 words
The method of claim 11 wherein the step (m) further comprising the steps of: (a) providing the matrix A p having a diagonal and an integer vector a p in computer memory, the matrix A p being an integer matrix having a size of N×N, an upper left m×m submatrix in the matrix A p containing integer values, the last N-m rows of the matrix A p having zero values to the left of the diagonal of the matrix A p ; (b) providing a set of variables y i .sup.(t) in computer memory such that: y.sub.i.sup.(t+1) =ΣA.sub.ij y.sub.j.sup.(t) +a.sub.i wherein t is a iteration counter for the loop, i represents rows in a matrix and j represents column in a matrix; (c) initializing p to N; (d) selecting a method for finding induction variables depending upon the value of A pp which is a diagonal value in the matrix A; (e) using the method and zero or more previously determined induction variables to determine y p .sup.(t) as a linear combination of a set of predetermined functions of t; (f) decrementing p by one; (g) performing steps (d) through (g) while p>m; and (h) assigning for any p≦m an independent undetermined function of t to y p .sup.(t).
Claim 17
Dependent Claim 23 words
The method of claim 11 wherein the step (d) comprises: forming the transfer matrix A as an integer matrix having N×N integer entries.
Claim 18
Dependent Claim 191 words
A data processing system for finding induction variables, the data processing system comprising: means for accessing a plurality of program instructions wherein the plurality of program instructions contain a looping structure wherein the looping structure contains program instructions which are executed more than once in a looping manner, the means for accessing creating an analyzable representation of the looping structure; means for scanning accessing the analyzable representation of the looping structure to find N variables assignment statements in the looping structure wherein the N variable assignment statements assigns a value to at least one variable S i (1<i≦N), the variable assignment statements being of the form: S.sub.i =ΣC.sub.ij S.sub.j +d.sub.i wherein ΣC ij S j represents at least one term of the form constant.variable and d i represents a constant having a value -∞<d i <∞; and means for analyzing the variables S i wherein the means for analyzing represents the variables S i in a transfer matrix A which is N×N in size, the means for analyzing iteratively transforming the matrix A via multiplication by an integer unimodular matrix U until induction information from the variables S i is attained.
Claim 19
Dependent Claim 191 words
A data processing system for finding induction variables, the data processing system comprising: means for accessing a plurality of program instructions wherein the plurality of program instructions contain a looping structure wherein the looping structure contains program instructions which are executed more than once in a looping manner, the means for accessing creating an analyzable representation of the looping structure; means for scanning accessing the analyzable representation of the looping structure to find N variables assignment statements in the looping structure wherein the N variable assignment statements assigns a value to at least one variable S i (1<i≦N), the variable assignment statements being of the form: S.sub.i =ΣC.sub.ij S.sub.j +d.sub.i wherein ΣC ij S j represents at least one term of the form constant.variable and d i represents a constant having a value -∞<d i <∞; and means for analyzing the variables S i wherein the means for analyzing represents the variables S i in a transfer matrix A which is N×N in size, the means for analyzing iteratively transforming the matrix A via multiplication by an integer unimodular matrix U until induction information from the variables S i is attained.
Claim 20
Dependent Claim 40 words
The data processing system of claim 16 wherein the means for analyzing iteratively transforms that matrix A by performing matrix multiplication transform operations of the form U -1 ·A·U wherein U -1 is an inverse matrix of the matrix U.
Claim 21
Dependent Claim 34 words
The data processing system of claim 16 wherein the means for analyzing iteratively transforms that matrix A to a new matrix A' wherein the new matrix A' has diagonal elements which are integer eigenvalues.
Claim 22
Dependent Claim 136 words
A data processing system for finding induction variables, the data processing system comprising: means for accessing a plurality of program instructions wherein the plurality of program instructions contain a looping structure, the means for accessing creating an analyzable representation of the looping structure; means for scanning accessing the analyzable representation of the looping structure to find N variables assignment statements in the looping structure wherein the N variable assignment statements assigns a value to at least one variable S i (1<i≦N); and means for analyzing the variables S i wherein the means for analyzing represents the variables S i in a transfer matrix A which is N×N in size, the means for analyzing iteratively transforming the matrix A via multiplication by an integer unimodular matrix U until induction information from the variables S i is attained.
Claim 23
Dependent Claim 136 words
A data processing system for finding induction variables, the data processing system comprising: means for accessing a plurality of program instructions wherein the plurality of program instructions contain a looping structure, the means for accessing creating an analyzable representation of the looping structure; means for scanning accessing the analyzable representation of the looping structure to find N variables assignment statements in the looping structure wherein the N variable assignment statements assigns a value to at least one variable S i (1<i≦N); and means for analyzing the variables S i wherein the means for analyzing represents the variables S i in a transfer matrix A which is N×N in size, the means for analyzing iteratively transforming the matrix A via multiplication by an integer unimodular matrix U until induction information from the variables S i is attained.
Claim 24
Independent Claim 237 words
A method for transforming a first matrix A to a second matrix A' to expose an eigenvalue, the method comprising the steps of: providing the first matrix A having a diagonal stored on a computer memory and accessible by a central processing unit (CPU), the first matrix A being an integer matrix having a size of N×N, an m×m submatrix in the first matrix A containing integer values where m≦N, the last N-m rows of the first matrix A having zero values to the left of the diagonal of the first matrix A, the matrix A being stored in computer memory; transforming the first matrix A to the second matrix A' in the computer memory by executing computer instructions via the CPU wherein the second matrix A' is an integer matrix having a size of N×N, an upper left m'×m' submatrix in the second matrix A' containing integer values wherein m'<m, the last N-m rows of the matrix A' being the same as the last N-m rows of the matrix A, the rows m'+1 to m of the second matrix A' having zero values to the left of the diagonal of the second matrix A' wherein a diagonal element in each of these m'-m rows contains the eigenvalue; and using the eigenvalue to compile computer code located in computer memory, wherein the computer code is compiled into an executable form which is then manufactured onto computer-readable medium.
Claim 25
Independent Claim 237 words
A method for transforming a first matrix A to a second matrix A' to expose an eigenvalue, the method comprising the steps of: providing the first matrix A having a diagonal stored on a computer memory and accessible by a central processing unit (CPU), the first matrix A being an integer matrix having a size of N×N, an m×m submatrix in the first matrix A containing integer values where m≦N, the last N-m rows of the first matrix A having zero values to the left of the diagonal of the first matrix A, the matrix A being stored in computer memory; transforming the first matrix A to the second matrix A' in the computer memory by executing computer instructions via the CPU wherein the second matrix A' is an integer matrix having a size of N×N, an upper left m'×m' submatrix in the second matrix A' containing integer values wherein m'<m, the last N-m rows of the matrix A' being the same as the last N-m rows of the matrix A, the rows m'+1 to m of the second matrix A' having zero values to the left of the diagonal of the second matrix A' wherein a diagonal element in each of these m'-m rows contains the eigenvalue; and using the eigenvalue to compile computer code located in computer memory, wherein the computer code is compiled into an executable form which is then manufactured onto computer-readable medium.
Claim 26
Dependent Claim 63 words
The method of claim 20 further comprising: using the matrix A' from the step of transforming as a new matrix A and performing the step of transforming iteratively in order to continually transform the matrix A to an increasingly transformed matrix A' until the increasingly transformed matrix A' is used to determine induction properties of variables represented by the increasingly transformed matrix A'.
Claim 27
Dependent Claim 41 words
The method of claim 21 wherein the step of transforming comprises: transforming the matrix A to the matrix A' by performing the matrix operation U -1 ·A·U wherein U is an integer unimodular matrix having an inverse matrix U -1 .
Claim 28
Independent Claim 236 words
A method for transforming a first matrix A to a second matrix A' to expose an eigenvalue, the method comprising the steps of: providing the first matrix A having a diagonal stored on a computer memory and accessible by a central processing unit (CPU), the first matrix A being an integer matrix having a size of N×N, an m×m submatrix in the first matrix A containing integer values wherein m≦N, the last N-m columns of the first matrix A having zero values to the right of the diagonal of the first matrix A, the matrix A being stored in computer memory; transforming the first matrix A to the second matrix A' in the computer memory by executing computer instructions via the CPU wherein the second matrix A' is an integer matrix having a size of N×N, an upper left m'×m' submatrix in the second matrix A' containing integer values wherein m'<m, the last N-m columns of the matrix A' being the same as the last N-m columns of the matrix A, the columns m'+1 to m of the second matrix A' having zero values to the right of the diagonal of the second matrix A' wherein the diagonal in each of these m'-m columns contains the eigenvalue; and using the eigenvalue to compile computer code located in computer memory, wherein the computer code is compiled into an executable form which is then manufactured onto computer-readable medium.
Claim 29
Independent Claim 236 words
A method for transforming a first matrix A to a second matrix A' to expose an eigenvalue, the method comprising the steps of: providing the first matrix A having a diagonal stored on a computer memory and accessible by a central processing unit (CPU), the first matrix A being an integer matrix having a size of N×N, an m×m submatrix in the first matrix A containing integer values wherein m≦N, the last N-m columns of the first matrix A having zero values to the right of the diagonal of the first matrix A, the matrix A being stored in computer memory; transforming the first matrix A to the second matrix A' in the computer memory by executing computer instructions via the CPU wherein the second matrix A' is an integer matrix having a size of N×N, an upper left m'×m' submatrix in the second matrix A' containing integer values wherein m'<m, the last N-m columns of the matrix A' being the same as the last N-m columns of the matrix A, the columns m'+1 to m of the second matrix A' having zero values to the right of the diagonal of the second matrix A' wherein the diagonal in each of these m'-m columns contains the eigenvalue; and using the eigenvalue to compile computer code located in computer memory, wherein the computer code is compiled into an executable form which is then manufactured onto computer-readable medium.
Claim 30
Dependent Claim 63 words
The method of claim 23 further comprising: using the matrix A' from the step of transforming as a new matrix A and performing the step of transforming iteratively in order to continually transform the matrix A to an increasingly transformed matrix A' until the increasingly transformed matrix A' is used to determine induction properties of variables represented by the increasingly transformed matrix A'.
Claim 31
Dependent Claim 41 words
The method of claim 21 wherein the step of transforming comprises: transforming the matrix A to the matrix A' by performing the matrix operation U -1 ·A·U wherein U is an integer unimodular matrix having an inverse matrix U -1 .
Claim 32
Independent Claim 217 words
A method for solving an induction variable problem associated with a matrix A, the method comprising the steps of: (a) providing the matrix A and an integer vector a in computer memory, the matrix A being an integer matrix having a size of N×N, an upper left m×m submatrix in the matrix A containing integer values, the last N-m rows of the matrix A having zero values to the left of the diagonal of the matrix A, the matrix A; (b) providing a set of variables y i .sup.(t) in computer memory such that: y.sub.i.sup.(t+1) =ΣA.sub.ij y.sub.j.sup.(t) +ai; where t is a loop iteration count value; (c) initializing p to N; (d) selecting a method for finding induction variables depending upon the value of A pp which is a diagonal value in the matrix A; (e) using the method and zero or more previously determined induction variables to determine y p .sup.(t) as a linear combination of a set of predetermined functions of t; (f) decrementing p by one; (g) performing steps (d) through (g) while p>m; (h) assigning for any p≦m an independent undetermined function of t to y p .sup.(t) ; and (i) using the steps (a) through (h) to compile computer code to executable code and storing the executable code onto computer readable medium.
Claim 33
Independent Claim 217 words
A method for solving an induction variable problem associated with a matrix A, the method comprising the steps of: (a) providing the matrix A and an integer vector a in computer memory, the matrix A being an integer matrix having a size of N×N, an upper left m×m submatrix in the matrix A containing integer values, the last N-m rows of the matrix A having zero values to the left of the diagonal of the matrix A, the matrix A; (b) providing a set of variables y i .sup.(t) in computer memory such that: y.sub.i.sup.(t+1) =ΣA.sub.ij y.sub.j.sup.(t) +ai; where t is a loop iteration count value; (c) initializing p to N; (d) selecting a method for finding induction variables depending upon the value of A pp which is a diagonal value in the matrix A; (e) using the method and zero or more previously determined induction variables to determine y p .sup.(t) as a linear combination of a set of predetermined functions of t; (f) decrementing p by one; (g) performing steps (d) through (g) while p>m; (h) assigning for any p≦m an independent undetermined function of t to y p .sup.(t) ; and (i) using the steps (a) through (h) to compile computer code to executable code and storing the executable code onto computer readable medium.
Claim 34
Independent Claim 217 words
A method for solving an induction variable problem associated with a matrix A, the method comprising the steps of: (a) providing the matrix A and an integer vector a in computer memory, the matrix A being an integer matrix having a size of N×N, an upper left m×m submatrix in the matrix A containing integer values, the last N-m columns of the matrix A having zero values to the left of the diagonal of the matrix A, the matrix A; (b) providing a set of variables y i .sup.(t) in computer memory such that: y.sub.i.sup.(t+1) =ΣA.sub.ij y.sub.j.sup.(t) +ai; where t is a loop iteration count value; (c) initializing p to N; (d) selecting a method for finding induction variables depending upon the value of A pp which is a diagonal value in the matrix A; (e) using the method and zero or more previously determined induction variables to determine y p .sup.(t) as a linear combination of a set of predetermined functions of t; (f) decrementing p by one; (g) performing steps (d) through (g) while p>m; (h) assigning for any p≦m an independent undetermined function of t to y p .sup.(t) ; and (i) using the steps (a) through (h) to compile computer code to executable code and storing the executable code onto computer readable medium.
Claim 35
Independent Claim 217 words
A method for solving an induction variable problem associated with a matrix A, the method comprising the steps of: (a) providing the matrix A and an integer vector a in computer memory, the matrix A being an integer matrix having a size of N×N, an upper left m×m submatrix in the matrix A containing integer values, the last N-m columns of the matrix A having zero values to the left of the diagonal of the matrix A, the matrix A; (b) providing a set of variables y i .sup.(t) in computer memory such that: y.sub.i.sup.(t+1) =ΣA.sub.ij y.sub.j.sup.(t) +ai; where t is a loop iteration count value; (c) initializing p to N; (d) selecting a method for finding induction variables depending upon the value of A pp which is a diagonal value in the matrix A; (e) using the method and zero or more previously determined induction variables to determine y p .sup.(t) as a linear combination of a set of predetermined functions of t; (f) decrementing p by one; (g) performing steps (d) through (g) while p>m; (h) assigning for any p≦m an independent undetermined function of t to y p .sup.(t) ; and (i) using the steps (a) through (h) to compile computer code to executable code and storing the executable code onto computer readable medium.
Claim 36
Independent Claim 314 words
A method for determining induction variables comprising the steps of: accessing a file stored in computer memory, the file containing several program statements wherein a plurality of the program statements are to be executed in a looping execution flow; parsing the file to produce a representation of the program statements contained in the file; identifying, from the representation, the plurality of program statements which is to be executed in a looping execution flow; identifying a set of potential induction variables within the plurality of the program statements within the looping execution flow; reducing the set of potential induction variables to a reduced set of potential induction variables wherein the number of potential induction variables in the reduced set is ≦ the number of potential induction variables in the set of potential induction variables; creating a transfer matrix A in computer memory which represents the relationships of the values of the potential induction variables in the reduced set of potential induction variables at the end of an execution of the loop to the values of the potential induction variables in the reduced set of potential induction variables at the start of that execution; transforming the transfer matrix A to a transformed matrix A' wherein the transformed matrix A' is easier to analyze for induction variables than the transfer matrix A, the transforming being performed by using a unimodular integer transformation; analyzing the matrix A' to find transformed induction variables and transformed non-induction variables wherein the value of a transformed induction variable at the beginning of the Nth execution of the loop is a linear combination of a predetermined set of functions of N; and applying the inverse of the unimodular transformation to the transformed induction variables and transformed non-induction variables thereby expressing a plurality of the variables in the reduced set of potential induction variables as a linear combination of the predetermined functions of N.
Claim 37
Independent Claim 314 words
A method for determining induction variables comprising the steps of: accessing a file stored in computer memory, the file containing several program statements wherein a plurality of the program statements are to be executed in a looping execution flow; parsing the file to produce a representation of the program statements contained in the file; identifying, from the representation, the plurality of program statements which is to be executed in a looping execution flow; identifying a set of potential induction variables within the plurality of the program statements within the looping execution flow; reducing the set of potential induction variables to a reduced set of potential induction variables wherein the number of potential induction variables in the reduced set is ≦ the number of potential induction variables in the set of potential induction variables; creating a transfer matrix A in computer memory which represents the relationships of the values of the potential induction variables in the reduced set of potential induction variables at the end of an execution of the loop to the values of the potential induction variables in the reduced set of potential induction variables at the start of that execution; transforming the transfer matrix A to a transformed matrix A' wherein the transformed matrix A' is easier to analyze for induction variables than the transfer matrix A, the transforming being performed by using a unimodular integer transformation; analyzing the matrix A' to find transformed induction variables and transformed non-induction variables wherein the value of a transformed induction variable at the beginning of the Nth execution of the loop is a linear combination of a predetermined set of functions of N; and applying the inverse of the unimodular transformation to the transformed induction variables and transformed non-induction variables thereby expressing a plurality of the variables in the reduced set of potential induction variables as a linear combination of the predetermined functions of N.
Claim 38
Independent Claim 399 words
A method for processing induction variables, the method comprising the steps of: (a) providing a user source code in computer memory; (b) parsing the user source code via means for parsing which is stored in computer memory to find a loop in the user source code, the loop being a portion of the user source code which selectively executes several times in sequence, the loop having a beginning and an end; (c) scanning the loop to find assignments to a set of N variables S i within the loop; (d) constructing in computer memory a transfer matrix A and a vector a relating the values of the variables S i at the end of loop to the values of the variables S i at the beginning of the loop, the matrix A having a size which is N×N; (e) initializing a working transfer matrix A 0 to A; (f) initializing m to N and p to zero; (g) initializing a matrix U 0 having an inverse matrix U 0 -1 to a predetermined configuration; (h) selecting an eigenvalue λ from an eigenvalue list which is stored in computer memory; (i) finding a number e of eigenvectors corresponding to the eigenvalue λ in an m×m submatrix of the matrix A p , if no eigenvectors are found then continue with step (k); (j) decrementing m by e, transforming A p to A p+1 to form a new transfer matrix A p+1 , transforming U p to form a new unimodular matrix U p+1 , transforming U p -1 to a new inverse unimodular matrix U p+1 -1 , and incrementing p by one and then repeating step (i); (k) repeating steps (h) through (k) until all eigenvalues λ in the eigenvalue list stored in computer memory have been selected in step (h); (l) multiplying the vector a by the U p -1 to form a vector a p ; (m) analyzing the matrix A p and the vector a p to find N-m transformed induction variables and m transformed non-induction variables; (n) transforming the N-m transformed induction variables and m transformed non-induction variables using the matrix U p to determine induction properties of the variables S i ; and (o) using the induction properties to compile the user source code into executable code stored in computer memory and mass manufacturing a plurality of computer readable means containing the executable code.
Claim 39
Independent Claim 399 words
A method for processing induction variables, the method comprising the steps of: (a) providing a user source code in computer memory; (b) parsing the user source code via means for parsing which is stored in computer memory to find a loop in the user source code, the loop being a portion of the user source code which selectively executes several times in sequence, the loop having a beginning and an end; (c) scanning the loop to find assignments to a set of N variables S i within the loop; (d) constructing in computer memory a transfer matrix A and a vector a relating the values of the variables S i at the end of loop to the values of the variables S i at the beginning of the loop, the matrix A having a size which is N×N; (e) initializing a working transfer matrix A 0 to A; (f) initializing m to N and p to zero; (g) initializing a matrix U 0 having an inverse matrix U 0 -1 to a predetermined configuration; (h) selecting an eigenvalue λ from an eigenvalue list which is stored in computer memory; (i) finding a number e of eigenvectors corresponding to the eigenvalue λ in an m×m submatrix of the matrix A p , if no eigenvectors are found then continue with step (k); (j) decrementing m by e, transforming A p to A p+1 to form a new transfer matrix A p+1 , transforming U p to form a new unimodular matrix U p+1 , transforming U p -1 to a new inverse unimodular matrix U p+1 -1 , and incrementing p by one and then repeating step (i); (k) repeating steps (h) through (k) until all eigenvalues λ in the eigenvalue list stored in computer memory have been selected in step (h); (l) multiplying the vector a by the U p -1 to form a vector a p ; (m) analyzing the matrix A p and the vector a p to find N-m transformed induction variables and m transformed non-induction variables; (n) transforming the N-m transformed induction variables and m transformed non-induction variables using the matrix U p to determine induction properties of the variables S i ; and (o) using the induction properties to compile the user source code into executable code stored in computer memory and mass manufacturing a plurality of computer readable means containing the executable code.
Claim 40
Dependent Claim 140 words
A data processing system comprising: a central processing unit for executing instructions; and a computer memory, coupled to the central processing unit, which stores an induction variable identifier and a plurality of program instructions, the induction variable identifier accessing the plurality of program instructions to find at least one instruction in the plurality of instructions which is executed in a loop, the induction variable identifier scanning the loop to identify potential induction variables within the loop and representing the potential induction variables in a transfer matrix A, the transfer matrix A being iteratively mapped via at least one matrix multiplication step wherein the transfer matrix A is multiplied with a unimodular matrix U to form a transformed matrix A', the induction variable identifier determining induction variable properties for the potential induction variables within the loop from the transformed matrix A'.
Claim 41
Dependent Claim 140 words
A data processing system comprising: a central processing unit for executing instructions; and a computer memory, coupled to the central processing unit, which stores an induction variable identifier and a plurality of program instructions, the induction variable identifier accessing the plurality of program instructions to find at least one instruction in the plurality of instructions which is executed in a loop, the induction variable identifier scanning the loop to identify potential induction variables within the loop and representing the potential induction variables in a transfer matrix A, the transfer matrix A being iteratively mapped via at least one matrix multiplication step wherein the transfer matrix A is multiplied with a unimodular matrix U to form a transformed matrix A', the induction variable identifier determining induction variable properties for the potential induction variables within the loop from the transformed matrix A'.
Claim 42
Independent Claim 183 words
A method for determining induction variables within a plurality of computer instructions, the method comprising the steps of: accessing computer code from computer memory; identifying the plurality of computer instructions in the computer code, the plurality of instructions being executed in a loop and containing at least one assignment statement which assigns a numerical value to at least one variable within the loop; representing the at least one assignment statement in a transfer matrix format in computer memory wherein the values of the at least one variables at the end of an execution of the loop are expressed in terms of the values of the at least one variables at the beginning of the execution of the loop; performing multiplication operations on the transfer matrix by multiplying the transfer matrix with an integer unimodular matrix stored in computer memory to determine if the at least one assignment statement includes any induction variables; and analyzing the induction variables to allow for compilation of the computer code to executable code which can be executed by a data processing system comprising a central processing unit (CPU).
Claim 43
Independent Claim 183 words
A method for determining induction variables within a plurality of computer instructions, the method comprising the steps of: accessing computer code from computer memory; identifying the plurality of computer instructions in the computer code, the plurality of instructions being executed in a loop and containing at least one assignment statement which assigns a numerical value to at least one variable within the loop; representing the at least one assignment statement in a transfer matrix format in computer memory wherein the values of the at least one variables at the end of an execution of the loop are expressed in terms of the values of the at least one variables at the beginning of the execution of the loop; performing multiplication operations on the transfer matrix by multiplying the transfer matrix with an integer unimodular matrix stored in computer memory to determine if the at least one assignment statement includes any induction variables; and analyzing the induction variables to allow for compilation of the computer code to executable code which can be executed by a data processing system comprising a central processing unit (CPU).
Claim 44
Dependent Claim 34 words
The method of claim 31 wherein the step of representing the at least one assignment statement in a transfer matrix format comprises: making all of the entries in the transfer matrix format integer values.
Claim 45
Independent Claim 147 words
A method for determining induction variables within a plurality of computer instructions, the method comprising the steps of: accessing computer code from computer memory; identifying the plurality of computer instructions in the computer code, the plurality of instructions being executed in a loop and containing at least one assignment statement which assigns a numerical value to at least one variable within the loop; representing the at least one assignment statement in a matrix format in computer memory and analyzing the matrix by performing eigenvalue analysis on linear combinations of the at least one variable to determine if any linear combination of the at least one variable are induction variables; and analyzing the any linear combination of the at least one variable are induction variables to compile the computer code to executable code which can be executed by a data processing system comprising a central processing unit (CPU).
Claim 46
Independent Claim 147 words
A method for determining induction variables within a plurality of computer instructions, the method comprising the steps of: accessing computer code from computer memory; identifying the plurality of computer instructions in the computer code, the plurality of instructions being executed in a loop and containing at least one assignment statement which assigns a numerical value to at least one variable within the loop; representing the at least one assignment statement in a matrix format in computer memory and analyzing the matrix by performing eigenvalue analysis on linear combinations of the at least one variable to determine if any linear combination of the at least one variable are induction variables; and analyzing the any linear combination of the at least one variable are induction variables to compile the computer code to executable code which can be executed by a data processing system comprising a central processing unit (CPU).
Claim 47
Independent Claim 174 words
A method for determining induction variables within a plurality of computer instructions, the method comprising the steps of: accessing computer code from computer memory; identifying the plurality of computer instructions in the computer code, the plurality of instructions being executed in a loop and containing at least one assignment statement which assigns a numerical value to at least one variable within the loop; accessing a plurality of eigenvalues stored by a user in computer memory wherein the eigenvalues in the plurality of eigenvalues are a plurality of values which are within the range of -∞ and +∞; representing the at least one assignment statement in a matrix format in computer memory and analyzing the matrix by performing eigenvalue analysis on linear combinations of the at least one variable by using the plurality of eigenvalues to determine induction variable properties from the at least one variable; and analyzing the induction variable properties to compile the computer code to executable code which can be executed by a data processing system comprising a central processing unit (CPU).
Claim 48
Independent Claim 174 words
A method for determining induction variables within a plurality of computer instructions, the method comprising the steps of: accessing computer code from computer memory; identifying the plurality of computer instructions in the computer code, the plurality of instructions being executed in a loop and containing at least one assignment statement which assigns a numerical value to at least one variable within the loop; accessing a plurality of eigenvalues stored by a user in computer memory wherein the eigenvalues in the plurality of eigenvalues are a plurality of values which are within the range of -∞ and +∞; representing the at least one assignment statement in a matrix format in computer memory and analyzing the matrix by performing eigenvalue analysis on linear combinations of the at least one variable by using the plurality of eigenvalues to determine induction variable properties from the at least one variable; and analyzing the induction variable properties to compile the computer code to executable code which can be executed by a data processing system comprising a central processing unit (CPU).
Claim 49
Dependent Claim 172 words
An induction variable identifier stored via computer-readable memory media wherein the computer-readable memory media comprises: a plurality of binary values for accessing computer code from a memory area; a plurality of binary values for scanning the computer code to find a looping instruction structure containing loop instructions, the looping instructions containing at least one assignment statement which assign at least one value to at least one variable; a plurality of binary values for representing the at least one assignment statement in the looping instructions in a transfer matrix format in the memory area wherein the at least one value of the at least one variable at the end of an execution of the loop are expressed in terms of the at least one value of the at least one variable at the beginning of the execution of the loop; and a plurality of binary values for performing multiplication operations by multiplying the transfer matrix with an integer unimodular matrix to determine if the at least one assignment statement includes any induction variables.
Claim 50
Dependent Claim 172 words
An induction variable identifier stored via computer-readable memory media wherein the computer-readable memory media comprises: a plurality of binary values for accessing computer code from a memory area; a plurality of binary values for scanning the computer code to find a looping instruction structure containing loop instructions, the looping instructions containing at least one assignment statement which assign at least one value to at least one variable; a plurality of binary values for representing the at least one assignment statement in the looping instructions in a transfer matrix format in the memory area wherein the at least one value of the at least one variable at the end of an execution of the loop are expressed in terms of the at least one value of the at least one variable at the beginning of the execution of the loop; and a plurality of binary values for performing multiplication operations by multiplying the transfer matrix with an integer unimodular matrix to determine if the at least one assignment statement includes any induction variables.

References Cited (Backward Citations)

US5109331A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1999-12-10 2000-06-10 2000-12-10 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2003-12-10 2004-06-10 2004-12-10 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2007-12-10 2008-06-10 2008-12-10 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag