What is Intermittent Computing?
For a summary and broad perspective of our work that is less technical, please read our feature in the ACM XRDS Student Magazine titled “Batteries Not Included”
The future of computing will involve millions, billions, or trillions of tiny devices computing, sensing, and learning all around us.This is a future where devices are small, cheap, and are useful for the entire lifetime of the things they monitor. This means these devices have to leave their batteries in the lab because batteries wear out, are expensive, they are bulky, and replacing or recycling the number of batteries needed to power the next billions sensors is not feasible, and is environmentally irresponsible.
Batteryless devices enable applications that have always seemed impractical. When the batteries are left behind, infrastructure monitoring on a large scale finally becomes feasible. Sensors can harvest vibrations off buried water pipes to listen for leaks. River beds can be coated with sensors that watch for bridge deterioration. Sensors embedded in pavement on roads and highways can communicate with vehicles, and maintenance workers. Small animal tracking, invisible long-lived wearables, and deployment in extreme environments–even space, become possible. All of these applications represent long term sensing deployments in hard to reach places, some require thousands or tens of thousands of sensors, they all would have trouble working with batteries, and they are all impractical, and maybe even impossible, with our current techniques.
Intermittent computing: These tiny devices have energy storage that is eight orders of magnitude smaller than the energy i your phone: the difference in mass between an african elephant and a ant. These are devices with so little energy storage that energy harvesting becomes essential, supply voltages — which are normally stable and clean — become intermittent, now without batteries, power failures become common events. This complicates everything from design to testing to deployment.
This research project focuses on the exploration of languages, architectures, hardware, and tools to enable reliable, sophisticated intermittent computing. Some of the past work done for this project is listed below.
Ekho Emulator [ACM SenSys’14]
Ekho is an emulator capable of recording energy harvesting conditions and accurately recreating those conditions in the lab. This makes it possible to conduct realistic and repeatable experiments involving energy harvesting, intermittently powered devices. Ekho is a general-purpose, mobile tool that supports a wide range of harvesting technologies.
Federated Energy Storage [ACM SenSys’15]
Untethered sensing devices have, for decades, powered all system components (processors, sensors, actuators, etc) from a single shared energy store (battery or capacitor). When designing batteryless sensors that are powered by harvested energy, this traditional approach results in devices that charge slowly and that are more error prone, inflexible, and inefficient than they could be. Federated Energy partitions and prioritizes harvested energy automatically into multiple isolated smaller energy stores (capacitors), which simplifies task scheduling, enables efficient use of components with differing voltage requirements, and produces devices that charge more quickly under identical harvesting conditions than a traditional centralized approach.
Mayfly Programming Language [ACM SenSys’17]
Mayfly is a language and runtime for timely execution of sensing tasks on tiny, intermittently-powered, energy harvesting sensing devices. Mayfly is a coordination language and runtime built on top of Embedded-C that combines intermittent execution fragments to form coherent sensing schedules: maintaining forward progress, data consistency, data freshness, and data utility across multiple power failures. Mayfly makes the passing of time explicit, binding data to the time it was gathered, and keeping track of data and time through power failures.
Flicker Prototyping Platform [ACM SenSys’17]
Flicker is a a platform for quickly prototyping batteryless embedded, energy harvesting sensors. Flicker is an extensible, modular, “plug and play” architecture that supports RFID, solar, and kinetic energy harvesting; passive and active wireless communication; and a wide range of sensors through common peripheral and harvester interconnects.
Intermittent Kernel [ACM SenSys’18]
InK is the first multi-threaded task based language for intermittent computing. With InK prioritized threads can be scheduled and dynamically executed including with timing constraints as in Mayfly.
Timekeeping Circuit and System [ACM ASPLOS 2020]
We explored dynamic reconfiguration of remanence based timekeepers to facilitate more accurate timing of off periods. This system, BOTOKS, enables new applications like TDMA communication, from the enhanced timekeeping architecture and hardware platform.
Automatic Checkpointing with Timekeeping [ACM ASPLOS 2020]
We built an automated checkpoints system called TICS that instruments arbitrary C programs (including those with pointer usage and recursion) for intermittent operation, preserving state and execution progress through power failures. The key observation in TICS is that checkpointing, if done poorly, will results in inconsistency in memory and time. We identified three timing consistency violations that could happen through arbitrary automated checkpointing approaches and design TICS to be aware of those. We also allowed for lightweight annotations (compiler pragmas) to be added to any C program if a programmer want4ed to preserve a notionoftimeorexpirationofavalueinC;forexampleifglobalvariable holdsasensorreadingthatisonlyuseful for a set time, this could be designated and TICS would roll back to the last instantiation point of the variable to get new data and proceed.