Dynamic memory interval test vs. interprocedural pointer analysis in multimedia applications

Techniques to detect aliasing between access patterns of array elements are quite effective for many numeric applications. However, although multimedia codes usually follow very regular memory access patterns, current commercial compilers remain unsuccessful in disambiguating them due mainly to complex pointer references. The Dynamic Memory Interval Test is a runtime memory disambiguation technique that takes advantage of the specific behavior of multimedia memory access patterns. It evaluates whether or not the full loop is disambiguated by analyzing the region domain of each load or store before each invocation of the loop.This paper provides a detailed evaluation of the approach, compares it against an advanced interprocedural pointer analysis framework, and analyzes the possibility of using both techniques at the same time. Both techniques achieve similar speedups separately (1.25X in average for a 8-issue width architecture). Furthermore, they can be used together to improve performance (reaching an average speed-up of 1.32X). Results also confirm that memory disambiguation is a key optimization to exploit the available parallelism in multimedia codes, especially for wide-issue architectures (1.50X average speed-up when scaling from 4- to 12-issue width in contrast to a low 1.10X for the baseline compiler).

[1]  Thomas W. Reps,et al.  Pointer analysis for programs with structures and casting , 1999, PLDI '99.

[2]  Microsystems Sun,et al.  Jini^ Architecture Specification Version 2.0 , 2003 .

[3]  B. Ramakrishna Rau,et al.  Elcor's Machine Description System: Version 3.0 , 1998 .

[4]  Carlos Alvarez,et al.  Cost effective memory disambiguation for multimedia codes , 2002, CASES '02.

[5]  Alexandru Nicolau,et al.  Run-Time Disambiguation: Coping with Statically Unpredictable Dependencies , 1989, IEEE Trans. Computers.

[6]  Monica S. Lam,et al.  Efficient context-sensitive pointer analysis for C programs , 1995, PLDI '95.

[7]  Scott Mahlke,et al.  Effective compiler support for predicated execution using the hyperblock , 1992, MICRO 1992.

[8]  William Landi,et al.  Undecidability of static analysis , 1992, LOPL.

[9]  Ken Kennedy,et al.  Practical dependence testing , 1991, PLDI '91.

[10]  Yunheung Paek,et al.  Simplification of array access patterns for compiler optimizations , 1998, PLDI.

[11]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .

[12]  G. Ramalingam,et al.  The undecidability of aliasing , 1994, TOPL.

[13]  Barbara G. Ryder,et al.  A safe approximate algorithm for interprocedural aliasing , 1992, PLDI '92.

[14]  Scott A. Mahlke,et al.  Effective compiler support for predicated execution using the hyperblock , 1992, MICRO 25.

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

[16]  David I. August,et al.  Compiler technology for future microprocessors , 1995, Proc. IEEE.

[17]  William Pugh,et al.  Constraint-based array dependence analysis , 1998, TOPL.

[18]  John Paul Shen,et al.  Speculative disambiguation: a compilation technique for dynamic memory disambiguation , 1994, ISCA '94.

[19]  Monica S. Lam,et al.  Efficient and exact data dependence analysis , 1991, PLDI '91.

[20]  Paul Feautrier,et al.  Dataflow analysis of array and scalar references , 1991, International Journal of Parallel Programming.

[21]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[22]  Susan Horwitz,et al.  Fast and accurate flow-insensitive points-to analysis , 1997, POPL '97.

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

[24]  Laurie J. Hendren,et al.  Context-sensitive interprocedural points-to analysis in the presence of function pointers , 1994, PLDI '94.

[25]  David Bernstein,et al.  Dynamic memory disambiguation for array references , 1994, Proceedings of MICRO-27. The 27th Annual IEEE/ACM International Symposium on Microarchitecture.

[26]  Jong-Deok Choi,et al.  Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects , 1993, POPL '93.

[27]  Michael Hind,et al.  Which pointer analysis should I use? , 2000, ISSTA '00.

[28]  B. R. Rau,et al.  HPL-PD Architecture Specification:Version 1.1 , 2000 .

[29]  GhiyaRakesh,et al.  Context-sensitive interprocedural points-to analysis in the presence of function pointers , 1994 .

[30]  Scott A. Mahlke,et al.  The superblock: An effective technique for VLIW and superscalar compilation , 1993, The Journal of Supercomputing.

[31]  David Mark Gallagher,et al.  Memory disambiguation to facilitate instruction-level parallelism compilation , 1995 .

[32]  Mateo Valero Cortés,et al.  An evaluation of different DLP alternatives for the embedded media domain , 1999 .

[33]  Rudolf Eigenmann,et al.  The range test: a dependence test for symbolic, non-linear expressions , 1994, Proceedings of Supercomputing '94.

[34]  Lawrence Rauchwerger,et al.  The privatizing DOALL test: a run-time technique for DOALL loop identification and array privatization , 1994, ICS '94.

[35]  Sungdo Moon,et al.  Evaluation of predicated array data-flow analysis for automatic parallelization , 1999, PPoPP '99.

[36]  Mateo Valero,et al.  An Evaluation of Different DLP Alternatives for the Embedded Media Domain , 1999 .

[37]  Chau-Wen Tseng,et al.  Compiler optimizations for improving data locality , 1994, ASPLOS VI.

[38]  Scott A. Mahlke,et al.  Dynamic memory disambiguation using the memory conflict buffer , 1994, ASPLOS VI.