skip to main content
10.1145/773146.773041acmconferencesArticle/Chapter ViewAbstractPublication PagesmspConference Proceedingsconference-collections
Article

Automatic pool allocation for disjoint data structures

Published: 16 June 2002 Publication History

Abstract

This paper presents an analysis technique and a novel program transformation that can enable powerful optimizations for entire linked data structures. The fully automatic transformation converts ordinary programs to use pool (aka region) allocation for heap-based data structures. The transformation relies on an efficient link-time interprocedural analysis to identify disjoint data structures in the program, to check whether these data structures are accessed in a type-safe manner, and to construct a Disjoint Data Structure Graph that describes the connectivity pattern within such structures. We present preliminary experimental results showing that the data structure analysis and pool allocation are effective for a set of pointer intensive programs in the Olden benchmark suite. To illustrate the optimizations that can be enabled by these techniques, we describe a novel pointer compression transformation and briefly discuss several other optimization possibilities for linked data structures.

References

[1]
A. Ayers, S. de Jong, J. Peyton, and R. Schooler. Scalable cross-module optimization. ACM SIGPLAN Notices, 33(5):301--312, 1998.]]
[2]
D. A. Barret and B. G. Zorn. Using lifetime predictors to improve memory allocation performance. In Proc. SIGPLAN '93 Conf. on Programming Language Design and Implementation, pages 187--196, Albuquerque, New Mexixo, June 1993.]]
[3]
M. Burke and L. Torczon. Interprocedural optimization: eliminating unnecessary recompilation. ACM Transactions on Programming Languages and Systems (TOPLAS), 15(3):367--399, 1993.]]
[4]
B. Cahoon and K. McKinley. Data flow analysis for software prefetching linked data structures in java. In International Conference on Parallel Architectures and Compilation Techniques, Barcelona, Spain, Sept. 2001.]]
[5]
B. C. Cheng and W. mei Hwu. Modular interprocedural pointer analysis using access paths: Design, implementation, and evalutation. In SIGPLAN Conference on Programming Language Design and Implementation, pages 57--69, Vancouver, British Columbia, Canada, June 2000.]]
[6]
T. M. Chilimbi, B. Davidson, and J. R. Larus. Cache-conscious structure definition. In SIGPLAN Conference on Programming Language Design and Implementation, pages 13--24, 1999.]]
[7]
T. M. Chilimbi and J. R. Larus. Using generational garbage collection to implement cache-conscious data placement. ACM SIGPLAN Notices, 34(3):37--48, 1999.]]
[8]
I. Corporation. X1 fortran: Eight ways to boost performance. White Paper, 2000.]]
[9]
R. Courts. Improving locality of reference in a garbage-collecting memory management system. Communications of the ACM, 31(9):1128--1138, 1988.]]
[10]
K. Crary, D. Walker, and G. Morrisett. Typed memory management in a calculus of capabilities. In Conference Record of POPL 99: The 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Antonio, Texas, pages 262--275, New York, NY, 1999.]]
[11]
M. Emami, R. Ghiya, and L. J. Hendren. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In SIGPLAN Conference on Programming Language Design and Implementation, pages 242--256, Orlando, FL, June 1994.]]
[12]
M. F. Fernández. Simple and effective link-time optimization of Modula-3 programs. ACM SIGPLAN Notices, 30(6):103--115, 1995.]]
[13]
D. Gay and A. Aiken. Language support for regions. In Proc. SIGPLAN '01 Conf. on Programming Language Design and Implementation, pages 70--80, Snowbird, UT, June 2001.]]
[14]
R. Ghiya and L. J. Hendren. Is it a tree, a DAG, or a cyclic graph? a shape analysis for heap-directed pointers in c. In Symposium on Principles of Programming Languages, pages 1--15, 1996.]]
[15]
D. Grunwald and B. G. Zorn. Customalloc: Efficient synthesized memory allocators. Software---Practice and Experience, 23(8):851--869, 1993.]]
[16]
N. Hallenberg, M. Elsman, and M. Tofte. Combining region inference and garbage collection. In SIGPLAN Conference on Programming Language Design and Implementation, Berlin, Germany, June 2002.]]
[17]
L. J. Hendren and A. Nicolau. Parallelizing programs with recursive data structures. IEEE Transactions on Parallel and Distributed System, pages 35--47, 1990.]]
[18]
J. R. Larus and P. N. Hilfinger. Detecting conflictsbetween structure accesses. In SIGPLAN Conference on Programming Language Design and Implementation, pages 21--34, July 1988.]]
[19]
C. Luk and T. Mowry. Compiler-based Prefetching for Recursive Data Structures. In Proceedings of the Eighth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS-VII), Boston, USA, Oct. 1996.]]
[20]
M. C. Rinard and P. C. Diniz. Commutativity analysis: a new analysis technique for parallelizing compilers. ACM Transactions on Programming Languages and Systems (TOPLAS), 19(6):942--991, 1997.]]
[21]
A. Roth and G. S. Sohi. Effective jump-pointer prefetching for linked data structures. In Proceedings of the 26th Annual International Symposium on Computer Architecture, pages 111--121, May 1999.]]
[22]
M. Sagiv, T. Reps, and R. Wilhelm. Solving shape-analysis problems in languages with destructive updating. ACM Transactions on Programming Languages and Systems, 20(1), Jan. 1998.]]
[23]
M. L. Seidl and B. G. Zorn. Segregating heap objects by reference behavior and lifetime. In Proceedings of the eighth international conference on Architectural support for programming languages and operating systems, pages 12--23. ACM Press, 1998.]]
[24]
B. Steensgaard. Points-to analysis in almost linear time. In Symposium on Principles of Programming Languages, pages 32--41, January 1996.]]
[25]
M. Tofte and L. Birkedal. A region inference algorithm. ACM Transactions on Programming Languages and Systems, 20(1), 1998.]]
[26]
M. Tofte and J.-P. Talpin. Region-based memory management. Information and Computation, pages 132(2):109--176, Feb. 1997.]]
[27]
D. N. Truong, F. Bodin, and A. Seznec. Improving cache behavior of dynamically allocated data structures. In Proceedings of the International Conference on Parallel Architectures and Compilation Techniques (PACT'98), pages 322--329, Oct. 1998.]]
[28]
D. M. Tullsen, S. J. Eggers, J. S. Emer, H. M. Levy, J. L. Lo, and R. L. Stamm. Exploiting choice: Instruction fetch and issue on an implementable simultaneous multithreading processor. In Proceedings of the 23rd Annual International Symposium on Computer Architecture, pages 191--202, May 1996.]]
[29]
F. Vivien and M. Rinard. Incrementalized pointer and escape analysis. In SIGPLAN Conference on Programming Language Design and Implementation, pages 35--46, Snowbird, UT, June 2001.]]
[30]
R. Wilhelm, M. Sagiv, and T. Reps. Shape analysis. In Proceedings of CC 2000: 9th Int. Conf. on Compiler Construction, Berlin, Ger., Mar-Apr 2000.]]
[31]
P. R. Wilson, M. S. Lam, and T. G. Moher. Effective "static-graph" reorganization to improve locality in garbage-collected systems. In Proceedings of the conference on Programming language design and implementation, pages 177--191. ACM Press, 1991.]]
[32]
Y. Zhang and R. Gupta. Data compression transformations for dynamically allocated data structures. In International Conference on Compiler Construction (CC), Apr 2002.]]

Cited By

View all
  1. Automatic pool allocation for disjoint data structures

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    MSP '02: Proceedings of the 2002 workshop on Memory system performance
    June 2002
    298 pages
    ISBN:9781450373685
    DOI:10.1145/773146
    • cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 38, Issue 2 supplement
      MSP 2002 and ISMM 2002
      February 2003
      291 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/773039
      Issue’s Table of Contents
    Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third-party components of this work must be honored. For all other uses, contact the Owner/Author.

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 16 June 2002

    Check for updates

    Qualifiers

    • Article

    Conference

    MSP02
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 6 of 20 submissions, 30%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)7
    • Downloads (Last 6 weeks)3
    Reflects downloads up to 30 Dec 2024

    Other Metrics

    Citations

    Cited By

    View all

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media