Energy-harvesting in the Internet of Things
tuesday 14 february 2017 at 12h04
Chain: A new programming language for dependable computing without dependable power
Summary by Daniele Puccinelli, University of Applied Sciences of Southern Switzerland (SUPSI), Manno
Brandon Lucia, an assistant professor at Carnegie Mellon University (USA), recently proposed a novel programming model to overcome the key challenge posed by energy-harvesting computing devices: applications must run correctly even when they operate intermittently due to the inherent lack of dependability of the power supply.
As the size of the Internet of Things continues to grow and miniaturization technologies continue to advance, energy-harvesting computers are bound to become increasingly widespread. As opposed to traditional computing devices, energy-harvesting computers don't need an external power supply, but scavenge energy from their surroundings. Energy harvesting means sustainable computing, but power comes in through an inherently non-dispatchable source that may go offline at any time.
How can applications cope with this lack of dependability?
State-of-the-art approaches rely on checkpointing: they periodically take a snapshot of the application's state and roll back to the latest snapshot in case of a reboot. Unfortunately, this approach may result in the propagation of inconsistent state and comes with a sizable overhead.
Chain seeks to overcome the limitations of the state-of-the-art. With Chain, a programmer can break down her applications into a set of lightweight tasks, which exchange data through separate input/output channels. The control flow is given by a sequence of tasks defined by the programmer. As long as the energy budget is sufficient to complete any individual task, the application is guaranteed to continue as per the programmer-defined control flow. After a reboot, the application resumes from the beginning of the task that was interrupted prior to reboot. There is no risk of state inconsistency because all volatile variables are task-local and task input channels are separate from task output channels.
Thanks to its unique design, Chain achieves a significantly higher throughput than previously proposed systems. A research question that remains open is how programmers should design each task so that its energy consumption does not exceed the available energy budget, which in turn is mostly a function of the deployment conditions.
See the full article in the ACM library