Coati: A Programming and Execution Model for Concurrency in Intermittent Systems

Abstract

Batteryless, energy-harvesting devices are positioned to deliver a new class of applications enabled by maintenance free sensing and computing. These tiny embedded devices harvest and store energy captured from their environments, but they operate only intermittently and may experience a power failure at any time. Prior works have explored strategies for performing long running computations across power failures, but none of the systems allow for interrupts that trigger asynchronous events, a common practice in code for embedded applications.

In this talk I will present recent work developing Coati, a runtime system that provides support for intermittent computation and event driven programming on batteryless devices. Coati builds on task-based programming models for intermittent execution and introduces events, atomic blocks of code that are triggered by an interrupt. Coati provides full isolation between tasks and events to prevent power failures in events from forcing persistent memory into an inconsistent state. Coati also supports multi-task transactions to eliminate data races between concurrent shared memory accesses in tasks and events because surprising synchronization errors arise under intermittent executions.

Bio

Emily Ruppel is a second year PhD student advised by Brandon Lucia. Her research focuses on hardware-software co-design for energy constrained devices.