Unconventional Applications of Compiler Analysis

Previously, compiler transformations have primarily focussed on minimizing program execution time. This thesis explores some examples of applying compiler technology outside of its original scope. Specifically, we apply compiler analysis to the field of software maintenance and evolution by examining the use of global data throughout the lifetimes of many open source projects. Also, we investigate the effects of compiler optimizations on the power consumption of small battery powered devices. Finally, in an area closer to traditional compiler research we examine automatic program parallelization in the form of thread-level speculation.

[1]  Miodrag Potkonjak,et al.  MediaBench: a tool for evaluating and synthesizing multimedia and communications systems , 1997, Proceedings of 30th Annual International Symposium on Microarchitecture.

[2]  Paul DuBois Software portability with imake (2nd ed.) , 1996 .

[3]  Gordon B. Davis,et al.  Software Development Practices, Software Complexity, and Software Maintenance Performance: a Field Study , 1998 .

[4]  J. W. Backus The History of FORTRAN I, II and III , 1979, IEEE Ann. Hist. Comput..

[5]  Antero Taivalsaari,et al.  The Spotless System: Implementing a Java System for the Palm Connected Organizer , 1999 .

[6]  Gurindar S. Sohi,et al.  ARB: A Hardware Mechanism for Dynamic Reordering of Memory References , 1996, IEEE Trans. Computers.

[7]  Margaret Martonosi,et al.  Wattch: a framework for architectural-level power analysis and optimizations , 2000, Proceedings of 27th International Symposium on Computer Architecture (IEEE Cat. No.RS00201).

[8]  Narayanan Vijaykrishnan,et al.  Energy-aware code cache management for memory-constrained Java devices , 2003, IEEE International [Systems-on-Chip] SOC Conference, 2003. Proceedings..

[9]  Mahmut T. Kandemir,et al.  Energy Behavior of Java Applications from the Memory Perspective , 2001, Java Virtual Machine Research and Technology Symposium.

[10]  Antonio González,et al.  Thread-spawning schemes for speculative multithreading , 2002, Proceedings Eighth International Symposium on High Performance Computer Architecture.

[11]  Israel Koren,et al.  Cool-Fetch: a compiler-enabled IPC estimation based framework for energy reduction , 2004, Eighth Workshop on Interaction between Compilers and Computer Architectures, 2004. INTERACT-8 2004..

[12]  Michael Wolfe,et al.  Iteration Space Tiling for Memory Hierarchies , 1987, PPSC.

[13]  Chandra Krintz,et al.  Adaptive code unloading for resource-constrained JVMs , 2004, LCTES '04.

[14]  A. Veidenbaum,et al.  Architectural and compiler strategies for dynamic power management in the COPPER project , 2001, 2001 Innovative Architecture for Future Generation High-Performance Processors and Systems.

[15]  Mikko H. Lipasti,et al.  Value locality and load value prediction , 1996, ASPLOS VII.

[16]  Donald E. Knuth,et al.  An empirical study of FORTRAN programs , 1971, Softw. Pract. Exp..

[17]  Jenn-Yuan Tsai,et al.  Compiler Techniques for the Superthreaded Architectures1, 2 , 1999, International Journal of Parallel Programming.

[18]  Evelyn Duesterwald,et al.  Exploring optimal compilation unit shapes for an embedded just-in-time compiler , 2000 .

[19]  David W. Wall,et al.  Limits of instruction-level parallelism , 1991, ASPLOS IV.

[20]  Vasanth Bala,et al.  Dynamo: a transparent dynamic optimization system , 2000, SIGP.

[21]  Kunle Olukotun,et al.  The case for a single-chip multiprocessor , 1996, ASPLOS VII.

[22]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[23]  Mark Giesbrecht,et al.  A Fine-Grained Analysis of the Performance and Power Benefits of Compiler Optimizations for Embedded Devices , 2006, Software Engineering Research and Practice.

[24]  David B. Wortman,et al.  Tools for extracting software structure from compiled programs , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[25]  Harald C. Gall,et al.  Journal of Software Maintenance and Evolution: Research and Practice Visualizing Feature Evolution of Large-scale Software Based on Problem and Modification Report Data , 2022 .

[26]  James E. Smith,et al.  The predictability of data values , 1997, Proceedings of 30th Annual International Symposium on Microarchitecture.

[27]  Stephen M. Watt,et al.  Parametric polymorphism for software component architectures , 2005, OOPSLA '05.

[28]  Penny Grubb,et al.  Software Maintenance: Concepts and Practice , 2003 .

[29]  Josep Torrellas,et al.  Tradeoffs in buffering memory state for thread-level speculation in multiprocessors , 2003, The Ninth International Symposium on High-Performance Computer Architecture, 2003. HPCA-9 2003. Proceedings..

[30]  William R. Bush,et al.  A java virtual machine architecture for very small devices , 2003 .

[31]  Erik R. Altman,et al.  LaTTe: a Java VM just-in-time compiler with fast and efficient register allocation , 1999, 1999 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.PR00425).

[32]  Costin Raiciu,et al.  Using code collection to support large applications on mobile devices , 2004, MobiCom '04.

[33]  Maurice Herlihy,et al.  The art of multiprocessor programming , 2020, PODC '06.

[34]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

[35]  John L. Henning SPEC CPU2000: Measuring CPU Performance in the New Millennium , 2000, Computer.

[36]  Christopher M. Lott,et al.  Does Software Design Complexity Affect Maintenance Effort , 1994 .

[37]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .

[38]  Josep Torrellas,et al.  Removing architectural bottlenecks to the scalability of speculative parallelization , 2001, Proceedings 28th Annual International Symposium on Computer Architecture.

[39]  Stephen M. Watt,et al.  Distributed Models of Thread Level Speculation , 2005, PDPTA.

[40]  Antonia Zhai,et al.  Compiler optimization of scalar value communication between speculative threads , 2002, ASPLOS X.

[41]  Rachel Harrison,et al.  Evolution in software systems: foundations of the SPE classification scheme: Research Articles , 2006 .

[42]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[43]  Kouichi Kishida,et al.  Evolution patterns of open-source software systems and communities , 2002, IWPSE '02.

[44]  Roy Dz-Ching Ju,et al.  A compiler framework for speculative analysis and optimizations , 2003, PLDI '03.

[45]  Monica S. Lam,et al.  A data locality optimizing algorithm , 1991, PLDI '91.

[46]  Jack Martin,et al.  The Problem and Its Solutions , 1983 .

[47]  Harald C. Gall,et al.  Mining evolution data of a product family , 2005, MSR '05.

[48]  Mary Shaw,et al.  Global variable considered harmful , 1973, SIGP.

[49]  Pedro López,et al.  Anaphase: A Fine-Grain Thread Decomposition Scheme for Speculative Multithreading , 2009, 2009 18th International Conference on Parallel Architectures and Compilation Techniques.

[50]  Harald C. Gall,et al.  CVS release history data for detecting logical couplings , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[51]  James Martin,et al.  Software Maintenance: The Problem and Its Solutions , 1983 .

[52]  Monica S. Lam,et al.  In search of speculative thread-level parallelism , 1999, 1999 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.PR00425).

[53]  Bjarne Stroustrup,et al.  The C++ Programming Language: Special Edition , 2000 .

[54]  Hans van Vliet,et al.  Software engineering - principles and practice , 1993 .

[55]  Jason W. A. Selby,et al.  The Pervasiveness of Global Data in Evolving Software Systems , 2006, FASE.

[56]  Dean M. Tullsen,et al.  The effect of compiler optimizations on Pentium 4 power consumption , 2003, Seventh Workshop on Interaction Between Compilers and Computer Architectures, 2003. INTERACT-7 2003. Proceedings..

[57]  John R. Levine Linkers and Loaders , 1999 .

[58]  Vivek Sarkar,et al.  The Jalape ~ no Dynamic Optimizing Compiler for Java TM , 1999 .

[59]  Gwendolyn H. Walton,et al.  Identifying high maintenance legacy software , 2002, J. Softw. Maintenance Res. Pract..

[60]  Gurindar S. Sohi,et al.  Master/Slave Speculative Parallelization , 2002, 35th Annual IEEE/ACM International Symposium on Microarchitecture, 2002. (MICRO-35). Proceedings..

[61]  Wei Zhang,et al.  Compiler support for reducing leakage energy consumption , 2003, 2003 Design, Automation and Test in Europe Conference and Exhibition.

[62]  Kunle Olukotun,et al.  Software and Hardware for Exploiting Speculative Parallelism with a Multiprocessor , 1997 .

[63]  Michael W. Godfrey,et al.  Examining the Effects of Global Data Usage on Software Maintainability , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[64]  Antonia Zhai,et al.  A general compiler framework for speculative optimizations using data speculative code motion , 2005, International Symposium on Code Generation and Optimization.

[65]  Lizy Kurian John,et al.  Effective adaptive computing environment management via dynamic optimization , 2005, International Symposium on Code Generation and Optimization.

[66]  Todd C. Mowry,et al.  The Potential for Thread-level Data Speculation in Tightly-coupled Multiprocessors , 1997 .

[67]  Steve McConnell,et al.  Code complete - a practical handbook of software construction, 2nd Edition , 1993 .

[68]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[69]  Marc Tremblay,et al.  Rock: A High-Performance Sparc CMT Processor , 2009, IEEE Micro.

[70]  J. Liang,et al.  Designing the Agassiz Compiler for Concurrent Multithreaded Architectures , 1999, LCPC.

[71]  Kunle Olukotun,et al.  Exploiting method-level parallelism in single-threaded Java programs , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

[72]  Peter Rundberg Low-Cost Thread-Level Data Dependence Speculation on Multiprocessors , 2000 .

[73]  Scott A. Mahlke,et al.  Compiler managed dynamic instruction placement in a low-power code cache , 2005, International Symposium on Code Generation and Optimization.

[74]  Antonio González,et al.  Value prediction for speculative multithreaded architectures , 1999, MICRO-32. Proceedings of the 32nd Annual ACM/IEEE International Symposium on Microarchitecture.

[75]  Todd M. Austin,et al.  The SimpleScalar tool set, version 2.0 , 1997, CARN.

[76]  Nik Shaylor,et al.  A Just-in-Time Compiler for Memory-Constrained Low-Power Devices , 2002, Java Virtual Machine Research and Technology Symposium.

[77]  Meir M. Lehman,et al.  Laws of Software Evolution Revisited , 1996, EWSPT.

[78]  A. Jefferson Offutt,et al.  A software metric system for module coupling , 1993, J. Syst. Softw..

[79]  Simcha Gochman,et al.  Introduction to Intel Core Duo Processor Architecture , 2006 .

[80]  Andreas Zeller,et al.  Mining version histories to guide software changes , 2005, Proceedings. 26th International Conference on Software Engineering.

[81]  Stephen R. Schach,et al.  Quality Impacts of Clandestine Common Coupling , 2003, Software Quality Journal.

[82]  Richard M. Stallman,et al.  Gnu Emacs Manual , 1996 .

[83]  Krishna V. Palem,et al.  The emerging power crisis in embedded processors: what can a poor compiler do? , 2001, CASES '01.

[84]  J. Gregory Steffan The Potential for Thread-Level Data Speculat ion in Tight ly-Coupled Mult iprocessors , 1997 .

[85]  Per Stenström,et al.  Limits on speculative module-level parallelism in imperative and object-oriented programs on CMP platforms , 2001, Proceedings 2001 International Conference on Parallel Architectures and Compilation Techniques.

[86]  Kathryn S. McKinley,et al.  Dynamic SimpleScalar: Simulating Java Virtual Machines , 2003 .

[87]  Gurindar S. Sohi,et al.  Speculative Versioning Cache , 2001, IEEE Trans. Parallel Distributed Syst..

[88]  Per Stenström,et al.  An All-Software Thread-Level Data Dependence Speculation System for Multiprocessors , 2001, J. Instr. Level Parallelism.

[89]  P.-C. Yew,et al.  A compiler framework for recovery code generation in general speculative optimizations , 2004, Proceedings. 13th International Conference on Parallel Architecture and Compilation Techniques, 2004. PACT 2004..

[90]  Gary V. Vaughan,et al.  GNU Autoconf, Automake, and Libtool , 2000 .

[91]  Chris F. Kemerer,et al.  Determinants of software maintenance profiles: an empirical investigation , 1997, J. Softw. Maintenance Res. Pract..

[92]  Karl Pettis,et al.  Profile guided code positioning , 1990, PLDI '90.

[93]  Li-Ling Chen,et al.  Aggressive compiler optimization and parallelization with thread-level speculation , 2003, 2003 International Conference on Parallel Processing, 2003. Proceedings..

[94]  Geoffrey C. Fox,et al.  The Perfect Club Benchmarks: Effective Performance Evaluation of Supercomputers , 1989, Int. J. High Perform. Comput. Appl..

[95]  David Thomas,et al.  The Pragmatic Programmer: From Journeyman to Master , 1999 .

[96]  Stephen R. Schach,et al.  Categorization of common coupling and its application to the maintainability of the Linux kernel , 2004, IEEE Transactions on Software Engineering.

[97]  Michael W. Godfrey,et al.  Evolution in open source software: a case study , 2000, Proceedings 2000 International Conference on Software Maintenance.

[98]  Meir M. Lehman,et al.  A Model of Large Program Development , 1976, IBM Syst. J..

[99]  Krste Asanovic,et al.  Energy-exposed instruction sets , 2002 .

[100]  Nadia Tawbi,et al.  E-Bunny: A Dynamic Compiler for Embedded Java Virtual Machines , 2005, J. Object Technol..

[101]  Balaram Sinharoy,et al.  POWER4 system microarchitecture , 2002, IBM J. Res. Dev..

[102]  Lizy K. John,et al.  Is Compiling for Performance — Compiling for Power? , 2001 .

[103]  Nicholas Nethercote,et al.  How to shadow every byte of memory used by a program , 2007, VEE '07.

[104]  Kunle Olukotun,et al.  Targeting Dynamic Compilation for Embedded Environments , 2002, Java Virtual Machine Research and Technology Symposium.

[105]  E. B. Swanson,et al.  Software maintenance management , 1980 .