On the Deterministic Multi-threaded Software Synthesis from Polychronous Specifications

In order to exploit the emerging multi-core processors, creating multi-threaded applications is going to be a necessity. However, resolving concurrency, synchronization, and coordination issues, and tackling the non-determinism germane in multi-threaded software is extremely difficult. Ensuring deterministic behavior and correctness with respect to the specification is necessary for safe execution of such code. It is desirable to synthesize multi-threaded code from formal specifications using a provably 'correct-by- construction' approach. In the past, reasonable success has been achieved in the 'correct-by-construction' sequential software synthesis for embedded reactive systems from synchronous programming models. Here we target deterministic multi-threaded software synthesis from deterministic specifications, such that the behavior of the code is semantically equivalent to that of the specification. We choose the polychronous model of computation for specification because (i) such specifications are multi-rate, reactive, concurrent and can be made deterministic through constraints on the environment, and (ii) formal verification methodologies and tools exist for such specifications. In this paper, we analyze under what condition a polychronous specification can be synthesized into multi-threaded C-code preserving its semantics. We also discuss how the synchronous data flow graph structure for a polychronous specification can be used to infer the threading structure of the resulting C-code.

[1]  Benoît Caillaud,et al.  From Synchrony to Asynchrony , 1999, CONCUR.

[2]  Jean-Christophe Le Lann,et al.  POLYCHRONY for System Design , 2003, J. Circuits Syst. Comput..

[3]  Pascal Raymond,et al.  The synchronous data flow programming language LUSTRE , 1991, Proc. IEEE.

[4]  Albert Benveniste,et al.  Compositionality in Dataflow Synchronous Languages: Specification and Distributed Code Generation , 2000, Inf. Comput..

[5]  Frédéric Boussinot,et al.  The ESTEREL language , 1991, Proc. IEEE.

[6]  Pascal Aubry,et al.  Synchronous distribution of SIGNAL programs , 1996, Proceedings of HICSS-29: 29th Hawaii International Conference on System Sciences.

[7]  Edward A. Lee The problem with threads , 2006, Computer.

[8]  Paul Le Guernic,et al.  Distributed Implementation of SIGNAL: Scheduling & Graph Clustering , 1994, FTRTFT.

[9]  Thierry Gautier,et al.  Programming real-time applications with SIGNAL , 1991, Proc. IEEE.

[10]  Stephen A. Edwards,et al.  Code Generation in the Columbia Esterel Compiler , 2007, EURASIP J. Embed. Syst..

[11]  James R. Larus,et al.  Transactional Memory (Synthesis Lectures on Computer Architecture) , 2007 .

[12]  Sandeep K. Shukla,et al.  Polychrony for formal refinement-checking in a system-level design methodology , 2003, Third International Conference on Application of Concurrency to System Design, 2003. Proceedings..

[13]  Robert de Simone,et al.  Necessary and sufficient conditions for deterministic desynchronization , 2007, EMSOFT '07.

[14]  Paul Le Guernic,et al.  Separate Compilation of Polychronous Specifications , 2008, Electron. Notes Theor. Comput. Sci..

[15]  Benoît Caillaud,et al.  Concurrency in synchronous systems , 2004, Proceedings. Fourth International Conference on Application of Concurrency to System Design, 2004. ACSD 2004..

[16]  Sandeep K. Shukla,et al.  Generating Multi-Threaded code from Polychronous Specifications , 2009, Electron. Notes Theor. Comput. Sci..

[17]  Xin Li,et al.  Mapping esterel onto a multi-threaded embedded processor , 2006, ASPLOS XII.