Compiler-directed run-time monitoring of program data access

Accurate run-time analysis has been expensive for complex programs, in part because most methods perform on all a data. Some applications require only partial reorganization. An example of this is off-loading infrequently used data from a mobile device. Complete monitoring is not necessary because not all accesses can reach the displaced data. To support partial monitoring, this paper presents a framework that includes a source-to-source C compiler and a run-time monitor. The compiler inserts run-time calls, which invoke the monitor during execution. To be selective, the compiler needs to identify relevant data and their access. It needs to analyze both the content and the location of monitored data. To reduce run-time overhead, the system uses a source-level interface, where the compiler transfers additional program information to reduce the workload of the monitor. The paper describes an implementation for general C programs. It evaluates different levels of data monitoring and their application on an SGI workstation and an Intel PC.

[1]  Ken Kennedy,et al.  Improving cache performance in dynamic applications through data and computation reorganization at run time , 1999, PLDI '99.

[2]  L SteffenJoseph Adding run-time checking to the portable C compiler , 1992 .

[3]  Todd M. Austin,et al.  Efficient detection of all pointer and array access errors , 1994, PLDI '94.

[4]  David B. Whalley,et al.  Tools for application-oriented performance tuning , 2001, ICS '01.

[5]  Rabin A. Sugumar,et al.  Multi-configuration simulation algorithms for the evaluation of computer architecture designs , 1993 .

[6]  Christopher W. Fraser,et al.  A Retargetable C Compiler: Design and Implementation , 1995 .

[7]  Paul Havlak,et al.  Interprocedural symbolic analysis , 1995 .

[8]  J. Cocke Global common subexpression elimination , 1970, Symposium on Compiler Optimization.

[9]  Matthew Arnold,et al.  A framework for reducing the cost of instrumented code , 2001, PLDI '01.

[10]  Robert O. Hastings,et al.  Fast detection of memory leaks and access errors , 1991 .

[11]  Amer Diwan,et al.  Type-based alias analysis , 1998, PLDI.

[12]  James R. Larus,et al.  Abstract execution: A technique for efficiently tracing programs , 1990, Softw. Pract. Exp..

[13]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[14]  Hans-Juergen Boehm Space efficient conservative garbage collection , 2004, SIGP.

[15]  Pen-Chung Yew,et al.  The impact of synchronization and granularity on parallel systems , 1990, [1990] Proceedings. The 17th Annual International Symposium on Computer Architecture.

[16]  Martin Hirzel,et al.  Bursty Tracing: A Framework for Low-Overhead Temporal Profiling , 2001 .

[17]  Li Xiao,et al.  Improving memory performance of sorting algorithms , 2000, JEAL.

[18]  Ken Kennedy,et al.  Analyzing and visualizing performance of memory hierarchies , 1990 .

[19]  Joseph L. Steffen Adding run‐time checking to the portable C compiler , 1992, Softw. Pract. Exp..