So Far So Good: Self-Adaptive Dynamic Checkpointing for Intermittent Computation based on Self-Modifying Code

Recently, different software and hardware based checkpointing strategies have been proposed to ensure forward progress toward execution for energy harvesting IoT devices. In this work, inspired by the idea used in dynamic compilers, we propose SFSG: a dynamic strategy, which shifts checkpoint placement and specialization to the runtime and takes decisions based on the past power failures and execution paths taken before each power failure. The goal of SFSG is to provide forward progress and to avoid facing non-termination without using hardware features or programmer intervention. We evaluate SFSG on a TI MSP430 device, with different types of benchmarks as well as different uninterrupted intervals, and we evaluate it in terms of the number of checkpoints and its runtime overhead.

[1]  Guy Clerc,et al.  Study of Supercapacitor Aging and Lifetime Estimation According to Voltage, Temperature, and RMS Current , 2014, IEEE Transactions on Industrial Electronics.

[2]  Brandon Lucia,et al.  A simpler, safer programming and execution model for intermittent systems , 2015, PLDI.

[3]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[4]  Bo Zhao,et al.  A 3us wake-up time nonvolatile processor based on ferroelectric flip-flops , 2012, 2012 Proceedings of the ESSCIRC (ESSCIRC).

[5]  Brandon Lucia,et al.  Alpaca: intermittent execution without checkpoints , 2017, Proc. ACM Program. Lang..

[6]  Brandon Lucia,et al.  Supporting peripherals in intermittent systems with just-in-time checkpoints , 2019, PLDI.

[7]  David Wetherall,et al.  RFID sensor networks with the Intel WISP , 2008, SenSys '08.

[8]  Kerstin Eder,et al.  On the Limitations of Analyzing Worst-Case Dynamic Energy of Processing , 2016, ACM Trans. Embed. Comput. Syst..

[9]  Arnab Raha,et al.  QUICKRECALL: A Low Overhead HW/SW Approach for Enabling Computations across Power Cycles in Transiently Powered Computers , 2014, 2014 27th International Conference on VLSI Design and 2014 13th International Conference on Embedded Systems.

[10]  Matthew Hicks,et al.  Intermittent Computation without Hardware Support or Programmer Intervention , 2016, OSDI.

[11]  Matthew Hicks,et al.  Clank: Architectural support for intermittent computation , 2017, 2017 ACM/IEEE 44th Annual International Symposium on Computer Architecture (ISCA).

[12]  Albert Cohen,et al.  Processor virtualization and split compilation for heterogeneous multicore embedded systems , 2008, Design Automation Conference.

[13]  Erven Rohou,et al.  Compiler Optimizations for Safe Insertion of Checkpoints in Intermittently Powered Systems , 2020, SAMOS.

[14]  Brandon Lucia,et al.  Chain: tasks and channels for reliable intermittent programs , 2016, OOPSLA.

[15]  Luca Benini,et al.  Hibernus++: A Self-Calibrating and Adaptive System for Transiently-Powered Embedded Devices , 2016, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[16]  Mani B. Srivastava,et al.  Power management in energy harvesting sensor networks , 2007, TECS.

[17]  Matthew Hicks Clank , 2017 .

[18]  Luca Benini,et al.  Hibernus: Sustaining Computation During Intermittent Supply for Energy-Harvesting Systems , 2015, IEEE Embedded Systems Letters.

[19]  Christos Margiolas,et al.  Automating efficient variable-grained resiliency for low-power IoT systems , 2018, CGO.

[20]  G. Edward Suh,et al.  A non-volatile microcontroller with integrated floating-gate transistors , 2011, 2011 IEEE/IFIP 41st International Conference on Dependable Systems and Networks Workshops (DSN-W).

[21]  Kevin Fu,et al.  Mementos: system support for long-running computation on RFID-scale devices , 2011, ASPLOS XVI.