A PDG-based Tool and its Use in Analyzing Program Control Dependences

This paper explores the potential of a program representation called the program dependence graph (PDG) for representing and exposing programs’ hierarchical control dependence structure. It presents several extensions to current PDG designs, including a node labeling scheme that simplifies and generalizes PDG traversal. A post-pass PDG-based tool called PEDIGREE has been implemented. It is used to generate and analyze the PDGs for several benchmarks, including the SPEC92 suite. In particular, initial results characterize the control dependence structure of these programs to provide insight into the scheduling benefits of employing speculative execution, and exploiting control equivalence information. Some of the benefits of using the PDG instead of the CFG are demonstrated. Our ultimate aim is to use this tool for exploiting multi-grained parallelism.

[1]  William Baxter,et al.  The program dependence graph and vectorization , 1989, POPL '89.

[2]  Monica S. Lam,et al.  Limits of control flow on parallelism , 1992, ISCA '92.

[3]  Thomas W. Reps,et al.  The use of program dependence graphs in software engineering , 1992, International Conference on Software Engineering.

[4]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

[5]  J. Janardhan,et al.  Enhanced Region Scheduling On A Program Dependence Graph , 1992, [1992] Proceedings the 25th Annual International Symposium on Microarchitecture MICRO 25.

[6]  Milind Girkar,et al.  Automatic Extraction of Functional Parallelism from Ordinary Programs , 1992, IEEE Trans. Parallel Distributed Syst..

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

[8]  Michael Rodeh,et al.  Global instruction scheduling for superscalar machines , 1991, PLDI '91.

[9]  Arthur B. Maccabe,et al.  The program dependence web: a representation supporting control-, data-, and demand-driven interpretation of imperative languages , 1990, PLDI '90.

[10]  Lori L. Pollock,et al.  Register allocation over the program dependence graph , 1994, PLDI '94.

[11]  Karl J. Ottenstein,et al.  Experience compiling Fortran to program dependence graphs , 1992, Softw. Pract. Exp..

[12]  V. Sarkar,et al.  Automatic partitioning of a program dependence graph into parallel tasks , 1991, IBM J. Res. Dev..