Data processing: software development – installation – and managem – Software program development tool – Translation of code
Reexamination Certificate
1998-12-23
2002-07-02
Powell, Mark R. (Department: 2122)
Data processing: software development, installation, and managem
Software program development tool
Translation of code
C717S152000, C717S152000, C717S152000, C717S152000, C717S152000
Reexamination Certificate
active
06415433
ABSTRACT:
TECHNICAL FIELD
The present invention relates generally to compilation of computer programs and, more particularly, to the optimization of computer programs.
BACKGROUND OF THE INVENTION
Computer programs can be very complex and consume enormous amounts of computational resources when executed. For example, a computer program that models the weather over the entire earth may model the weather to an accuracy of a square mile of the surface of the earth and at elevations that are multiples of 1000 feet. Thus, a complex computation may need to be performed for each square mile of the surface of the earth at various elevations. In addition, the complex computation may need to be repeated multiple times to simulate the changing weather conditions. Such complex computer programs, in practice, can only be executed on the fastest supercomputers. Even when executing such complex computer programs on a supercomputer, they may take too long to execute to be practical. Moreover, even less complex computer programs may consume enough computational resources so that a user of the computer program becomes frustrated with the speed of execution. For example, a user may replace a spreadsheet program that is slow at performing a recalculation with another spreadsheet program that can perform the recalculation much faster.
Computer programmers devote considerable effort to improving the efficiency of the computer programs that they develop. However, because of the complexities of the computer programs, programmers may not have the time to fully understand all the improvements that can be made. As a result, compilers often include an extensive optimization phase in which the compiler attempts to optimize (i.e., improved efficiency of) the computer program that is being compiled. Also, some optimizers have been developed to analyze and optimize executable code. The goal of these optimizers is to generate code that is as efficient as could possibly be generated by a programmer. Although no optimizer has achieved that goal, in practice, optimizers can significantly improve efficiency of a computer program. For example, if an optimizer can identify a statement whose execution can be removed from inside a loop that is executed for each square mile of the surface of the earth, then the computational efficiency of the program is improved. Although such an optimization may result in a relatively small increase in the overall speed of execution of the computer program, the effect of many such optimizations can be significant. Various optimization techniques are described “Compilers: Principles, Techniques, and Tools,” Aho, Sethi, and Ullman, Addison-Wesley, 1988, which is hereby incorporated by reference.
SUMMARY OF THE INVENTION
Embodiments of the present invention provide a method system for optimizing a computer program. In one embodiment, the system identifies depths of blocks of a computer program and identifies the availability of expressions of the computer program. The system then modifies the computer program when he identified availability of the expression and the identified depth of a block indicate that the expression can be moved to the block. The depth of the block may represent the number of dominator blocks of that block. The availability of the expression may represent the depth of a block to which the expression may be moved. In one embodiment, when the identified availability of the expression is less than the identified depth of the block, the expression can be moved to the block.
Another aspect of the present invention determines the availability of expressions of a computer program. The system for determining such availability visits blocks of the computer program during a forward traversal of a control flow graph representing that computer program. For each expression of each block visited, the system sets the availability of the expression based on the reaching definition when the operation of the expression is a load from memory. The system also sets the availability of an expression to the latest availability of its operands when the operation is not store from memory. The setting of the availability of the expression based on the reaching definition may include the setting of the availability of the expression to the availability of the reaching definition when the reaching definition is a store of the result of expression with the same value as the value of the expression.
Another aspect of the present invention identifies a direct dominator of a block of the computer program. To identify the direct dominator, the system identifies the closest dominator of the block such that the block is contained in the inner most region containing that dominator. That identified closest dominator is the direct dominator of the block. In one embodiment, the system identifies the direct dominator by first selecting the closest dominator of the block. The system then selects the least common region that contains the region that contains the block and the region that contains the selected dominator of the block. The system then loops searching for the least common region that is the same as an inner most region of a currently selected dominator.
REFERENCES:
patent: 4819234 (1989-04-01), Huber
patent: 4872167 (1989-10-01), Maezawa et al.
patent: 5168554 (1992-12-01), Luke
patent: 5175856 (1992-12-01), Dyke et al.
patent: 5301325 (1994-04-01), Benson
patent: 5333280 (1994-07-01), Ishikawa et al.
patent: 5355494 (1994-10-01), Sistare et al.
patent: 5450575 (1995-09-01), Sites
patent: 5504932 (1996-04-01), Vassiliadis et al.
patent: 5533192 (1996-07-01), Hawley et al.
patent: 5557761 (1996-09-01), Chan
patent: 5564051 (1996-10-01), Halliwell et al.
patent: 5572148 (1996-11-01), Lytle et al.
patent: 5581764 (1996-12-01), Fitzgerald et al.
patent: 5594864 (1997-01-01), Trauben
patent: 5598560 (1997-01-01), Benson
patent: 5632032 (1997-05-01), Ault et al.
patent: 5649203 (1997-07-01), Sites
patent: 5652889 (1997-07-01), Sites
patent: 5712996 (1998-01-01), Schepers
patent: 5754855 (1998-05-01), Miller et al.
patent: 5768591 (1998-06-01), Robinson
patent: 5768592 (1998-06-01), Chang
patent: 5774721 (1998-06-01), Robinson
patent: 5805892 (1998-09-01), Nakajima
patent: 5812811 (1998-09-01), Dubey et al.
patent: 5826265 (1998-10-01), Van Huben et al.
patent: 5867643 (1999-02-01), Sutton
patent: 5877766 (1999-03-01), Bates et al.
patent: 5887166 (1999-03-01), Mallick et al.
patent: 5901315 (1999-05-01), Edwards et al.
patent: 5903730 (1999-05-01), Asai et al.
patent: 5913925 (1999-06-01), Kahle et al.
patent: 5787245 (1999-07-01), You et al.
patent: 5930142 (1999-07-01), Schleicher et al.
patent: 5953530 (1999-09-01), Rishi et al.
patent: 5961639 (1999-10-01), Mallick et al.
patent: 5966539 (1999-10-01), Srivastava
patent: 5978902 (1999-11-01), Mann
patent: 6002872 (1999-12-01), Alexander, III et al.
patent: 6002879 (1999-12-01), Radigan et al.
patent: 6009269 (1999-12-01), Burrows et al.
patent: 6029005 (2000-02-01), Radigan
patent: 6049671 (2000-04-01), Slivka et al.
patent: 6058493 (2000-05-01), Talley
patent: 6059840 (2000-05-01), Click, Jr.
patent: 6072952 (2000-06-01), Janakiraman
patent: 6094716 (2000-07-01), Witt
patent: 6101524 (2000-08-01), Choi et al.
patent: 6112293 (2000-08-01), Witt
patent: 6117185 (2000-09-01), Schmidt
patent: 6151701 (2000-11-01), Humphreys et al.
patent: 6151704 (2000-11-01), Radigan
patent: 6226789 (2001-05-01), Tye et al.
patent: 19710252 (1998-02-01), None
patent: 0422945 (1991-04-01), None
patent: 0455966 (1991-11-01), None
patent: 0537098 (1993-04-01), None
patent: 0855648 (1998-07-01), None
patent: 0864979 (1998-09-01), None
patent: 2307760 (1997-06-01), None
TERA MTA Principles of Operation, Nov. 18, 1997.
Davidson, Jack W. and Whally, David B., “Reducing the Cost of Branches by Using Registers,” Proceedings of the 17th Annual Symposium on Computer Architecture, Seattle, Washington, May 28-31, 1990.
Knoops, Jens et al., “The Power of Assignment Motion,” ACM SIGPLAN '95 Conference on Programming Language Design and Implementation, La Jolla, California, Jun. 18-
Callahan, II Charles David
Koblenz Brian D.
Chaudhuridas Chameli
Cray Inc.
Perkins Coie LLP
Powell Mark R.
LandOfFree
Method and system for identifying locations to move portions... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Method and system for identifying locations to move portions..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and system for identifying locations to move portions... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2828611