Region Scheduling: An Approach for Detecting and Redistributing Parallelism

Region scheduling, a technique applicable to both fine-grain and coarse-grain parallelism, uses a program representation that divides a program into regions consisting of source and intermediate level statements and permits the expression of both data and control dependencies. Guided by estimates of the parallelism present in regions, the region scheduler redistributes code, thus providing opportunities for parallelism in those regions containing insufficient parallelism compared to the capabilities of the executing architecture. The program representation and the transformations are applicable to both structured and unstructured programs, making region scheduling useful for a wide range of applications. The results of experiments conducted using the technique in the generation of code for a reconfigurable long instruction word architecture are presented. The advantages of region scheduling over trace scheduling are discussed. >

[1]  FerranteJeanne,et al.  The program dependence graph and its use in optimization , 1987 .

[2]  Rajiv Gupta,et al.  A Reconfigurable LIW Architecture , 1987, International Conference on Parallel Processing.

[3]  Rajiv Gupta A reconfigurable liw architecture and its compiler , 1987 .

[4]  David A. Padua,et al.  High-Speed Multiprocessors and Compilation Techniques , 1980, IEEE Transactions on Computers.

[5]  Vivek Sarkar,et al.  Automatic discovery of parallelism: a tool and an experiment (extended abstract) , 1988, PPoPP 1988.

[6]  David L. Kuck,et al.  The Structure of Computers and Computations , 1978 .

[7]  Joseph A. Fisher,et al.  Trace Scheduling: A Technique for Global Microcode Compaction , 1981, IEEE Transactions on Computers.

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

[9]  David A. Padua,et al.  Dependence graphs and compiler optimizations , 1981, POPL '81.

[10]  Vivek Sarkar,et al.  Compile-time partitioning and scheduling of parallel programs , 1986, SIGPLAN '86.

[11]  John R. Ellis,et al.  Bulldog: A Compiler for VLIW Architectures , 1986 .

[12]  Thomas R. Gross,et al.  Postpass Code Optimization of Pipeline Constraints , 1983, TOPL.

[13]  Mary Lou Soffa,et al.  An Incremental Version of Iterative Data Flow Analysis , 1989, IEEE Trans. Software Eng..

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