Compiling SHIM

Embedded systems demand concurrency for supporting simultaneous actions in their environment and parallel hardware. Although most concurrent programming formalisms are prone to races and nondeterminism, some, such as our shim (software/hardware integration medium) language, avoid them by design. In particular, the behavior of shim programs is scheduling-independent, meaning the I/O behavior of a program is independent of scheduling policies, including the relative execution rates of concurrent processes. The shim project demonstrates how a scheduling-independent language simplifies the design, optimization, and verification of concurrent systems. Through examples and discussion, we describe the shim language and code generation techniques for both shared-memory and messagepassing architectures, along with some verification algorithms.

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

[2]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[3]  Stephen A. Edwards,et al.  Experiences teaching an FPGA-based embedded systems class , 2005, SIGBED.

[4]  Stephen A. Edwards,et al.  Programming Shared Memory Multiprocessors with Deterministic Message-Passing Concurrency: Compiling SHIM to Pthreads , 2008, 2008 Design, Automation and Test in Europe.

[5]  Stephen A. Edwards,et al.  A Determinizing Compiler , 2009 .

[6]  Stephen A. Edwards,et al.  Buffer sharing in CSP-like programs , 2009, 2009 7th IEEE/ACM International Conference on Formal Methods and Models for Co-Design.

[7]  Stephen A. Edwards,et al.  Static Deadlock Detection for the SHIM Concurrent Language , 2008, 2008 6th ACM/IEEE International Conference on Formal Methods and Models for Co-Design.

[8]  Gilles Kahn,et al.  The Semantics of a Simple Language for Parallel Programming , 1974, IFIP Congress.

[9]  Gerard J. Holzmann,et al.  The Model Checker SPIN , 1997, IEEE Trans. Software Eng..

[10]  Stephen A. Edwards,et al.  Static elaboration of recursion for concurrent software , 2008, PEPM '08.

[11]  Thomas Martyn Parks,et al.  Bounded scheduling of process networks , 1996 .

[12]  Marco Pistore,et al.  Nusmv version 2: an opensource tool for symbolic model checking , 2002, CAV 2002.

[13]  Stephen A. Edwards,et al.  A deterministic multi-way rendezvous library for haskell , 2008, 2008 IEEE International Symposium on Parallel and Distributed Processing.

[14]  Stephen A. Edwards,et al.  Scheduling-independent threads and exceptions in SHIM , 2006, EMSOFT '06.

[15]  Edward A. Lee,et al.  Scheduling dynamic dataflow graphs with bounded memory using the token flow model , 1993, 1993 IEEE International Conference on Acoustics, Speech, and Signal Processing.

[16]  Stephen A. Edwards,et al.  Compile-Time Analysis and Specialization of Clocks in Concurrent Programs , 2009, CC.

[17]  Stephen A. Edwards,et al.  Celling SHIM: compiling deterministic concurrency to a heterogeneous multicore , 2009, SAC '09.

[18]  Stephen A. Edwards,et al.  SHIM: A Language for Hardware/Software Integration , 2004, SYNCHRON.

[19]  Stephen A. Edwards,et al.  The synchronous languages 12 years later , 2003, Proc. IEEE.

[20]  Stephen A. Edwards,et al.  SHIM: a deterministic model for heterogeneous embedded systems , 2005, IEEE Transactions on Very Large Scale Integration (VLSI) Systems.

[21]  Stephen A. Edwards,et al.  Compositional deadlock detection for rendezvous communication , 2009, EMSOFT '09.

[22]  Stephen A. Edwards,et al.  Efficient code generation from SHIM models , 2006, LCTES '06.

[23]  Stephen A. Edwards,et al.  R-SHIM: deterministic concurrency with recursion and shared variables , 2006, Fourth ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2006. MEMOCODE '06. Proceedings..