Programming concurrent systems is substantially more difficult than programming sequential systems, yet most embedded systems need concurrency. We believe this should be addressed through higher-level models of concurrency that eliminate many of the usual challenges, such as nondeterminism arising from races. The shim model of computation provides deterministic concurrency, and there already exist ways of implementing it in hardware and software. In this work, we describe how to produce more efficient C code from shim systems. We propose two techniques: a largely mechanical one that produces tail-recursive code for simulating concurrency, and a more clever one that statically analyzes the communication pattern of multiple processes to produ...
Typical embedded hardware/software systems are implemented using a combination of C and an HDL such ...
Concurrent programming languages are growing in importance with the advent of multicore systems. Two...
Most compilers focus on optimizing performance, often at the expense of memory, but efficient memory...
Embedded systems demand concurrency for supporting simultaneous actions in their environment and par...
Concurrent programming languages are good for embedded systems because they match the parallelism of...
Concurrent programming languages should be a good fit for embedded systems because they match the in...
Describing parallel hardware and software is difficult, especially in an embedded setting. Five year...
Multicore shared-memory architectures are becoming prevalent and bring many programming challenges. ...
Parallel architectures are the way of the future, but are notoriously difficult to program. In addit...
Concurrent programming languages should be a good fit for embedded systems because they match the in...
Concurrent programming languages should be a good fit for embedded systems because they match the in...
Unlike sequential software, concurrent software needs a structuring mechanism capable of specifying ...
Unlike sequential software, concurrent software needs a structuring mechanism capable of specifying ...
Most compilers focus on optimizing performance, often at the expense of memory, but efficient memory...
Nondeterminism is a central challenge in most concurrent models of computation. That programmers mus...
Typical embedded hardware/software systems are implemented using a combination of C and an HDL such ...
Concurrent programming languages are growing in importance with the advent of multicore systems. Two...
Most compilers focus on optimizing performance, often at the expense of memory, but efficient memory...
Embedded systems demand concurrency for supporting simultaneous actions in their environment and par...
Concurrent programming languages are good for embedded systems because they match the parallelism of...
Concurrent programming languages should be a good fit for embedded systems because they match the in...
Describing parallel hardware and software is difficult, especially in an embedded setting. Five year...
Multicore shared-memory architectures are becoming prevalent and bring many programming challenges. ...
Parallel architectures are the way of the future, but are notoriously difficult to program. In addit...
Concurrent programming languages should be a good fit for embedded systems because they match the in...
Concurrent programming languages should be a good fit for embedded systems because they match the in...
Unlike sequential software, concurrent software needs a structuring mechanism capable of specifying ...
Unlike sequential software, concurrent software needs a structuring mechanism capable of specifying ...
Most compilers focus on optimizing performance, often at the expense of memory, but efficient memory...
Nondeterminism is a central challenge in most concurrent models of computation. That programmers mus...
Typical embedded hardware/software systems are implemented using a combination of C and an HDL such ...
Concurrent programming languages are growing in importance with the advent of multicore systems. Two...
Most compilers focus on optimizing performance, often at the expense of memory, but efficient memory...