Abstract
In this paper, we consider the problem of optimizing register allocation and cache behavior for loop array references. We exploit techniques developed initially for data locality estimation and improvement. First we review the concept of “reference window” that serves as our basic tool for both data locality evaluation and management. Then we study how some loop restructuring techniques (interchanging, tiling, ...) can help to improve data locality. We describe a register allocation algorithm and a cache usage optimization algorithm based on the window concept which can be effectively implemented in a compiler system. Experimental speedup measurements on a RISC processor, the IBM RS/6000, give evidence of the efficiency of our technique.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Aho AV., Sethi R, Ullman JD. Compiler Principles, Techniques and Tools, Addison-Wesley, 1986.
Banerjee U. Unimodular Transformations of Double Loops, Advances in Languages and Compilers for Parallel Processing. Research Monograph in Parallel and Distributed Computing, The MIT Press, 1991.
Burke M, Cytron R. Interprocedural analysis and parallelization, Proceedings of the Symposium on Compiler Construction, July 1986, pp. 162–175.
Chi CH, Dietz H. Unified Management of Registers and Cache Using Liveness and Cache Bypass, Proceedings of the Conference on Programming Language Design and Implementation, 1989.
Callahan D, Carr S, Kennedy K. Improving Register Allocation for Sub-scripted Variables, Proceedings of the Conference on Programming Language Design and Implementation, 1990.
Eisenbeis C, Jalby W, Windheiser D, Bodin F. A Strategy for Array Management in Local Memory, Advances in Languages and Compilers for Parallel Processing, MIT Press, 1991.
Gannon D, Jalby W, Gallivan K. Strategies for Cache and Local Memory Management by Global Program Transformation, Proceedings of the International Conference on Supercomputing, Springer Verlag, New York, 1987 and Journal of Parallel and Distributed Computing, October 1988.
Gallivan K, Gannon D, Jalby W. On the Problem of Optimizing Data Transfers for Complex Memory Systems, Proceedings of International Conference on Supercomputing, 1988, pp. 238–253.
Gallivan K, Jalby W, Meier U. The use of BLAS3 in linear Algebra on a Parallel Processor with Hierarchical Memory, SIAM Journal on Scientific and Statistical Computing, Vol 8, N. 6, November 1986.
Kennedy K. Automatic translation of Fortran programs to vector form, Technical Report, Rice University, Houston, Texas, 1980.
Kuck D, Kuhn R, Leasure B, Wolfe, MJ. Dependence graphs and compiler optimizations, Proceedings of the Eighth Symposium on the Principles of Programming Languages, January 1981.
Lam M, Rothberg E, Wolf M. The Cache Performance and Optimizations of Blocked Algorithms, Proceedings of the Fourth ACM ASPLOS conference, April 91, pp 63–75.
Minoux M. Programmation mathématique: théorie et algorithmes, Dunod, Paris, Collection technique et scientifique des télécommunications 1983.
Padua D, Kuck D. High-speed multiprocessors and compilation techniques, IEEE Transaction on Computer, C-29, 9, pp. 763–776.
Padua D, Wolfe MJ. Advanced compiler optimizations for supercomputers, CACM, 29, 12, pp. 1184–1201.
Porterfield A. Compiler management of program locality, Technical Report, Rice University, Houston, Texas, January 1988.
Wolf M, Lam M. An algorithm to generate sequential and parallel code with improved data locality, Technical Report, Stanford University 1990.
Wolf M, Lam M. A Data Locality Optimizing Algorithm ACM Conference on Programming Language Design and Implementation, June 26–28, 1991.
Wolfe MJ. Optimizing Supercompilers for Supercomputers, PhD thesis, University of Illinois, October 1982.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1992 Springer-Verlag London
About this paper
Cite this paper
Bodin, F., Jalby, W., Windheiser, D., Eisenbeis, C. (1992). A Quantitative Algorithm for Data Locality Optimization. In: Giegerich, R., Graham, S.L. (eds) Code Generation — Concepts, Tools, Techniques. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3501-2_8
Download citation
DOI: https://doi.org/10.1007/978-1-4471-3501-2_8
Publisher Name: Springer, London
Print ISBN: 978-3-540-19757-7
Online ISBN: 978-1-4471-3501-2
eBook Packages: Springer Book Archive