Abstract
Optimizations performed at link time or directly applied to final program executables have received increased attention in recent years. This paper discuss the discovery and elimination of redundant load operations in the context of a link time optimizer, an optimization that we call Load Redundancy Elimination (LRE). Our experiments show that between 50% and 75% of a program’s memory references can be considered redundant because they are accessing memory locations that have been referenced less than 200–400 instructions away. We then present three profile-based LRE algorithms targeted at optimizing away these redundancies. Our results show that between 5% and 30% of the redundancy detected can indeed be eliminated, which translates into program speedups in the range of 3% to 8%. We also test our algorithm assuming different cache latencies, and show that, if latencies continue to grow, the load redundancy elimination will become more important.
This work is being supported by the Spanish Ministry of Education under grants CYCIT TIC98-0511 and PN98 46057403-1. The research described in this paper has been developed using the resources of the CEPBA.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
A. V. Aho, R. Sethi, and J. D. Ullman. Compilers principles, techniques, and tools. Addison-Wesley, Reading, MA, 1986.
D. Burger and T. M. Austin. The SimpleScalar tool set, version 2.0. Technical Report CS-TR-97-1342, CS Department, University of Wisconsin-Madison, 1997.
R. Cohn, D. Goodwin, P. G. Lowney, and N. Rubin. Spike: An optimizer for Alpha/ NT executables. In USENIX, editor, The USENIX Windows NT Workshop 1997, pages 17–23, Seattle, Washington, August 11–13 1997.
S. Debray, R. Muth, and M. Weippert. Alias analysis of executable code. In The 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 12–24, Orlando, Florida, January 19–21 1998.
M. Fernández, R. Espasa, and S. Debray. Load redundancy elimination on executable code. Technical Report UPC-DAC-2001-3, Computer Architecture Department, Universitat Politécnica de Catalunya-Barcelona, 2001.
D. W. Goodwin. Interprocedural dataflow analysis in an executable optimizer. In Proceedings of the ACM SIGPLAN’ 97 Conference on Programming Language Design and Implementation, pages 122–133, Las Vegas, Nevada, June 15–18 1997.
R. Gupta, D. A. Berson, and J. Z. Fang. Path profile guided partial redundancy elimination using speculation. In Proceedings of the 1998 International Conference on Computer Languages, pages 230–239, Chicago, May 14–16 1998.
R. N. Horspool and H. Partial redundancy elimination driven by a cost-benefit analysis. In 8th Israeli Conference on Computer System and Software Engineering, pages 111–118, Herzliya, Israel, June 1997.
S. S. Muchnick. Building an Optimizing Compiler. Morgan Kaufman, 1997.
R. Muth. Alto: A Platform for Object Code Modification. PhD thesis, Department of Computer Science, University of Arizona, 1999.
R. Muth, S. Debray, S. Watterson, and K. de Bosschere. alto: A link-time optimizer1 for the DEC Alpha. Technical Report TR98-14, Department of Computer Science, University of Arizona, 1998.
K. Pettis and R. C. Hansen. Profile guided code positioning. In Proceedings of the ACM SIGPLAN’ 90 Conference on Programming Language Design and Implementation, pages 16–27, June 1990.
A. Srivastava and D. W. Wall. A practical system for intermodule code optimization at link-time. Journal of Programming Languages, 1(1):1–18, Dec. 1992.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Fernández, M., Espasa, R., Debray, S. (2001). Load Redundancy Elimination on Executable Code. In: Sakellariou, R., Gurd, J., Freeman, L., Keane, J. (eds) Euro-Par 2001 Parallel Processing. Euro-Par 2001. Lecture Notes in Computer Science, vol 2150. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44681-8_33
Download citation
DOI: https://doi.org/10.1007/3-540-44681-8_33
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-42495-6
Online ISBN: 978-3-540-44681-1
eBook Packages: Springer Book Archive