Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

Generating fast code from concurrent program dependence graphs

Published: 11 June 2004 Publication History
  • Get Citation Alerts
  • Abstract

    While concurrency in embedded systems is most often supplied by real-time operating systems, this approach can be unpredictable and difficult to debug. Synchronous concurrency, in which a system marches in lockstep to a global clock, is conceptually easier and potentially more efficient because it can be statically scheduled beforehand.We present an algorithm for generating efficient sequential code from such synchronous concurrent specifications. Starting from a concurrent program dependence graph generated from the synchronous, concurrent language Esterel, we generate efficient, statically scheduled sequential code while adding a minimal amount of runtime scheduling overhead.Experimentally, we obtain speedups as high as six times over existing techniques. While we applied our technique to Esterel, it should be applicable to other synchronous, concurrent languages.

    References

    [1]
    Albert Benveniste, Paul Caspi, Stephen A. Edwards, Nicolas Halbwachs, Paul Le Guernic, and Robert de Simone. The synchronous languages 12 years later. Proceedings of the IEEE, 91(1):64--83, January 2003.
    [2]
    Gérard Berry and Georges Gonthier. The Esterel synchronous programming language: Design, semantics, implementation. Science of Computer Programming, 19(2):87--152, November 1992.
    [3]
    Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems, 13(4):451--490, October 1991.
    [4]
    Stephen A. Edwards. An Esterel compiler for large control-dominated systems. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 21(2):169--183, February 2002.
    [5]
    Stephen A. Edwards. Compiling concurrent languages for sequential processors. ACM Transactions on Design Automation of Electronic Systems, 8(2):141--187, April 2003.
    [6]
    Stephen A. Edwards, Vimal Kapadia, and Michael Halas. Compiling Esterel into static discrete-event code. In Proceedings of Synchronous Languages, Applications, and Programming (SLAP), Barcelona, Spain, March 2004.
    [7]
    Jeanne Ferrante, Mary Mace, and Barbara Simons. Generating sequential code from parallel code. In 1988 International Conference on Supercomputing, pages 582--592, St. Malo, France, July 1988. ACM.
    [8]
    Jeanne Ferrante, Karl J. Ottenstein, and Joe D.Warren. The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst., 9(3):319--349, 1987.
    [9]
    Barbara Simons and Jeanne Ferrante. An efficient algorithm for constructing a control flow graph for parallel code. Technical Report TR--03.465, IBM, Santa Teresa Laboratory, San Jose, California, February 1993.
    [10]
    Bjarne Steensgaard. Sequentializing program dependence graphs for irreducible programs. Technical Report MSR-TR-93-14, Microsoft, October 1993.

    Index Terms

    1. Generating fast code from concurrent program dependence graphs

      Recommendations

      Reviews

      R. Clayton

      Representing a program as a graph recognizes program concurrency as independent subgraphs. Complicating recognition is the need to preserve the program's shared-data semantics, and the desire to minimize concurrency overhead. Annotating the graph with data dependencies, and reconfiguring the graph, takes care of the first complication. A number of approaches address the second complication. One approach is to preschedule one, or a small number of, possible concurrent executions. Prescheduling trades the responsiveness of concurrent execution for minimal concurrency overhead. Given the cost of concurrency on stock systems, this tradeoff is almost always successful. This paper presents a set of annotation, reconfiguration, and prescheduling algorithms for concurrent program dependence graphs (cPDGs). The work described is relative to Esterel, a concurrent programming language, but cPDGs are general enough to represent concurrency in many programming languages, although some necessary assumptions, particularly with respect to acyclic cPDG structure, may cause some problems in the more general case. Some algorithms, because they are concerned with minimization, are NP-complete, and are heuristics; the remaining algorithms are exact. Data presented in the paper shows that the algorithms provide the expected speed-ups, in some cases impressively so, when compared to other approaches for compiling Esterel. The costs of the algorithms, in terms of compilation time or compiler complexity, are not discussed. The paper is short and clear; algorithms are described textually, and in pseudocode. Knowledge of concurrent compilation techniques is not necessary; knowledge of more advanced compilation techniques is helpful. Online Computing Reviews Service

      Access critical reviews of Computing literature here

      Become a reviewer for Computing Reviews.

      Comments

      Information & Contributors

      Information

      Published In

      cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 39, Issue 7
      LCTES '04
      July 2004
      265 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/998300
      Issue’s Table of Contents
      • cover image ACM Conferences
        LCTES '04: Proceedings of the 2004 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
        June 2004
        276 pages
        ISBN:1581138067
        DOI:10.1145/997163
      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      Published: 11 June 2004
      Published in SIGPLAN Volume 39, Issue 7

      Check for updates

      Author Tags

      1. concurrent
      2. esterel
      3. program dependence graph
      4. sequencial

      Qualifiers

      • Article

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)0
      • Downloads (Last 6 weeks)0

      Other Metrics

      Citations

      View Options

      Get Access

      Login options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      Media

      Figures

      Other

      Tables

      Share

      Share

      Share this Publication link

      Share on social media