Our Research

Transient/Intermittent Computing

Transient (also known as intermittent) computing systems are capable of providing 'correct' operation, i.e. operation which meets the required functionality, despite experiencing loss of power. Such loss of power results in the device being starved of energy and hence frequently turning off completely; however transient computing approaches allow it to survive this gracefully.

On this page, we outline our research in the area of transient computing, including hibernus and hibernus++ (a state-of-the-art approach to efficiently enable a system to perform computation spanning power outages), optimising the state retention process by making it more efficient or considering external peripherals, or enalbing operation for it in widely used embedded operating systems in increase adoption.

Hibernus and Hibernus++

Hibernus is a transient approach which takes advantage of the very small amount of capacitance in most embedded systems (parasitic or decoupling capacitance). It uses this tiny buffer as a 'safety net' to save a snapshot of the system state (RAM and CPU registers) to non-volatile memory when power supply failure is imminent, i.e. when the supply voltage falls below a predefined threshold. Similarly, when the supply voltage increases above a predefined restore threshold, the last snapshot is restored to enable operation to continue from the point it was suspended. This eliminates the need for routine speculative checkpoints, and reduces overheads.

The video below demonstrates the operation of Hibernus, where a miniature wind turbine is connected directly to the microcontroller's Vcc rails through only a half-wave rectifier (diode). A potential divider is also added to allow the microcontroller to monitor the supply voltage. The only energy storage in the system is in the form of the decoupling capacitance already present on the board. The microcontroller counts in binary on the on-board LEDs, demonstrating that state is not lost when no power is being harvested.


The main limitation of Hibernus is that it requires off-line characterization to determine the hibernate and restore thresholds, which are specific to the platform being used. Hibernus++ extends this principle, providing an adaptive mechanism to adjust the hibernate and restore thresholds dynamically in response to the system power consumption, the on-board decoupling capacitance, and the dynamics of the energy harvester. This allows operation to be sustained for a longer duration.

Associated Downloads

You can find the code for both Hibernus and Hibernus++ below. The code is designed to work with the Texas Instruments MSP430FR5739 microcontroller featuring FRAM memory. If you use this code in your research, please acknowledge this by citing this paper.

Hibernus (with internal comparator)
Hibernus (with external comparator)
Hibernus++

Associated Publications

Journal Articles
Conference Papers, Posters and Presentations

Efficient State Retention

Existing transient systems save the entire state upon power failure, and do not consider the properties of different NVM technologies, leading into a sub-optimal state retention process. As a consequence, the time and energy spent towards useful computation are decreased significantly, affecting the forward progress that the system can achieve.

The aim of this research is to introduce novel methods to reduce the time and energy overhead of the state retention process, exploring solutions both in the software and hardware domain.

Associated Publications

Journal Articles
Conference Papers, Posters and Presentations

RESTOP: System-Wide State Retention

Existing approaches to transient computing consider the state of the CPU and on-board peripherals, but cannot retain the state of external peripherals.

In this project, we propose RESTOP, a generic middleware capable of retaining the state of external peripherals, e.g. sensors or actuators, that are connected to a microcontroller through an external interface.

Associated Downloads

You can download the peripheral state retention library below. The code as supplied was written to operate with the Texas Instruments MSP430FR5739 microcontroller featuring FRAM memory, and the Hibernus transient approach. If you use this code in your research, please acknowledge this by citing this paper.

RESTOP (peripheral state retention)

Associated Publications

Journal Articles
Conference Papers, Posters and Presentations

Arm Mbed Support for Transient Computing

Existing approaches to transient computing are typically designed for a specific application or architectures, and hence suffer from not being broadly applicable across multiple embedded IoT platforms. This, in turn, limits their uptake and adoption by users that are not experts in transient computing. To overcome this shortcoming, transient approaches need to be integrated within a general IoT programming framework for simple implementation into systems. In this project, we are exploring how Hibernus can be integrated into the Arm Mbed IoT Device Platform, increasing ease-of-use and deployment across different platforms.


Support for transient computing is offered through libraries and application programming interfaces (APIs) provided by the ARM Mbed OS. The library allows a user to use their Mbed project with a transient energy source (e.g. windturbine, solar power), enabling transient computing to be implemented as a service on top of IoT application protocols. We have developed drivers to support the Freescale KL 05Z and LPC11U24 platforms. For more information, refer to the library documentation on the Mbed project website.

Associated Downloads

If you want to use hibernus in your own Mbed project, you can download the library from its project website at the link below. If you use it in your research, please acknowledge this by citing this paper.

Associated Publications