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.
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)
- D. Balsamo, A.S. Weddell, A. Das, A.R. Arreola, D. Brunelli, B.M. Al-Hashimi, G.V. Merrett and L. Benini (2016) Hibernus++: a self-calibrating and adaptive system for transiently-powered embedded devices IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 35, (12), pp. 1968-1980. (doi:10.1109/TCAD.2016.2547919).
- D. Balsamo, A.S. Weddell, G.V. Merrett, B.M. Al-Hashimi, D. Brunelli and L. Benini (2014) Hibernus: Sustaining Computation during Intermittent Supply for Energy-Harvesting Systems IEEE Embedded Systems Letters
Conference Papers, Posters and Presentations
- S.T. Sliper, D. Balsamo, A.S. Weddell, and G.V. Merrett (2018) Enabling intermittent computing on high-performance out-of-order processors. At 6th International Workshop on Energy Harvesting & Energy-Neutral Sensing Systems Shenzhen, China. 04 Nov 2018. 7 pp.
- G.V. Merrett (2016) Energy harvesting and transient computing: a paradigm shift for embedded systems? At Design Automation Conference (DAC) 2016, United States. 05 - 09 Jun 2016. 2 pp. (doi:10.1145/2897937.2905011).
- A.R. Arreola, D. Balsamo, A. Das, A.S. Weddell, D. Brunelli, B.M. Al-Hashimi and G.V. Merrett (2015) Approaches to Transient Computing for Energy Harvesting Systems - A Quantitative Evaluation At ENSsys '15 Proceedings of the 3rd International Workshop on Energy Harvesting Energy Neutral Sensing Systems, Korea, Republic of. 01 - 04 Nov 2015. , pp. 3-8.