Data-Flow Analysis of Extended Finite State Machines

In this paper, we present a static data-flow analysis for synchronous programs, which is used to improve the run-time efficiency of the generated code. Our optimization techniques are based on extended finite state machines (EFSMs) which are obtained by a translation from synchronous guarded actions. In order to avoid a potential state space explosion of that translation, the subsequent analysis does not necessarily consider monolithic EFSMs, but is able to cope with a set of concurrent EFSMs, where invariants of the individual parts are collected and shared. Experiments show the potential of the optimizations: optimized programs generally have a smaller size and a better run-time performance.

[1]  Klaus Schneider,et al.  The Synchronous Programming Language Quartz , 2009 .

[2]  Klaus Schneider,et al.  Improving Automata Generation for Linear Temporal Logic by Considering the Automaton Hierarchy , 2001, LPAR.

[3]  Sandeep K. Shukla,et al.  Translating concurrent action oriented specifications to synchronous guarded actions , 2010, LCTES '10.

[4]  Tobias Schüle,et al.  Causality analysis of synchronous programs with delayed actions , 2004, CASES '04.

[5]  Pierre Wolper,et al.  Memory-efficient algorithms for the verification of temporal properties , 1990, Formal Methods Syst. Des..

[6]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[7]  Klaus Schneider,et al.  Performing causality analysis by bounded model checking , 2008, 2008 8th International Conference on Application of Concurrency to System Design.

[8]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[9]  Gérard Berry,et al.  The constructive semantics of pure esterel , 1996 .

[10]  Jeffrey D. Ullman,et al.  Characterizations of Reducible Flow Graphs , 1974, JACM.

[11]  Robert de Simone,et al.  Curing schizophrenia by program rewriting in Esterel , 2004, Proceedings. Second ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2004. MEMOCODE '04..

[12]  Natarajan Shankar,et al.  A Tutorial on Satisfiability Modulo Theories , 2007, CAV.

[13]  Girish Bhat,et al.  Efficient on-the-fly model checking for CTL , 1995, Proceedings of Tenth Annual IEEE Symposium on Logic in Computer Science.

[14]  Barry K. Rosen,et al.  High-level data flow analysis , 1977, CACM.

[15]  David L. Dill,et al.  The Murphi Verification System , 1996, CAV.

[16]  Klaus Schneider,et al.  Separate compilation for synchronous programs , 2009, SCOPES.

[17]  Antoine Rauzy,et al.  Yet Another Application for Topie: Verification of Mutual Exclusion Algorithms , 1993, LPAR.

[18]  Tobias Schüle,et al.  A Verified Compiler for Synchronous Programs with Local Declarations , 2006, SLAP@ETAPS.

[19]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[20]  Klaus Schneider,et al.  Separate Translation of Synchronous Programs to Guarded Actions , 2011 .

[21]  Jean-Pierre Banâtre,et al.  Parallel Program Design , 1991, Research Directions in High-Level Parallel Programming Languages.

[22]  Reino Kurki-Suonio,et al.  The DisCo Language and Temporal Logic of Actions , 1990 .

[23]  Frances E. Allen,et al.  Control-flow analysis , 2022 .

[24]  Jeffrey D. Ullman,et al.  Analysis of a simple algorithm for global data flow problems , 1973, POPL.

[25]  Robert de Simone,et al.  Instantaneous Termination in Pure Esterel , 2003, SAS.

[26]  Nicolas Halbwachs,et al.  Generating Efficient Code From Data-Flow Programs , 1991, PLILP.

[27]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[28]  Klaus Schneider,et al.  Static data-flow analysis of synchronous programs , 2009, 2009 7th IEEE/ACM International Conference on Formal Methods and Models for Co-Design.

[29]  Stephen A. Edwards,et al.  Compiling Esterel , 2007 .