Compiling concurrent programs for embedded sequential execution

  • Authors:
  • Bill Lin

  • Affiliations:
  • Electrical and Computer Engineering Department, University of California, San Diego, La Jolla, CA 92093-0407, USA

  • Venue:
  • Integration, the VLSI Journal
  • Year:
  • 2007

Quantified Score

Hi-index 0.00

Visualization

Abstract

Embedded applications are often more naturally modeled as a set of concurrent tasks, but yet they are often implemented using a single embedded processor. Traditionally, run-time operating systems have been used to simulate concurrency by timesharing the underlying processor and to facilitate inter-process communication amongst the concurrent tasks. However, this run-time approach to multi-tasking and inter-process communication can often introduce significant overhead to execution times and memory requirements, prohibitive in many cases for embedded applications where processor and memory resources are scarce. In this paper, we present compilation techniques that can statically resolve concurrency at compile-time so that the resulting code produced can be sequentially executed on an embedded processor without the need for a run-time scheduler. Our techniques are based on a novel Petri net theoretic framework. In particular, we show how a concurrent program specification can be transformed into an intermediate Petri net representation. We then show how the intermediate Petri net may be statically scheduled to produce a sequential state machine model that can be sequentially executed directly on an embedded processor without a run-time operating system. In practice, this technique produces efficient results. However, theoretically, it is possible for the resulting state machine to become very large, resulting in code explosion. To circumvent this limitation, we describe a compositional approach that can scale well to large applications and is immune to code explosion.