skip to main content
research-article
Open Access

Towards a formal foundation of intermittent computing

Published:13 November 2020Publication History
Skip Abstract Section

Abstract

Intermittently powered devices enable new applications in harsh or inaccessible environments, such as space or in-body implants, but also introduce problems in programmability and correctness. Researchers have developed programming models to ensure that programs make progress and do not produce erroneous results due to memory inconsistencies caused by intermittent executions. As the technology has matured, more and more features are added to intermittently powered devices, such as I/O. Prior work has shown that all existing intermittent execution models have problems with repeated device or sensor inputs (RIO). RIOs could leave intermittent executions in an inconsistent state. Such problems and the proliferation of existing intermittent execution models necessitate a formal foundation for intermittent computing.

In this paper, we formalize intermittent execution models, their correctness properties with respect to memory consistency and inputs, and identify the invariants needed to prove systems correct. We prove equivalence between several existing intermittent systems. To address RIO problems, we define an algorithm for identifying variables affected by RIOs that need to be restored after reboot and prove the algorithm correct. Finally, we implement the algorithm in a novel intermittent runtime system that is correct with respect to input operations and evaluate its performance.

Skip Supplemental Material Section

Supplemental Material

Auxiliary Presentation Video

This OOPSLA 2020 talk is about developing a formal framework to reason about correctness for intermittently powered devices. These devices enable new applications in inaccessible environments, such as space or in-body implants, but also introduce problems in programmability and correctness. To make progress and prevent memory inconsistencies caused by intermittent execution, a program's execution context is saved at checkpoints. However, prior work has shown that existing intermittent systems don't save the correct context w.r.t. repeated input operations (RIOs), showing the need for formal reasoning for intermittent computing. We develop a formal definition of correctness and identify key memory invariants needed to prove systems correct. We apply the framework by defining a provably correct algorithm for identifying RIO variables that need to be checkpointed. We implement the algorithm in a intermittent runtime system that is correct w.r.t. inputs and evaluate its performance.

References

  1. Alberto Arreola, Domenico Balsamo, Geof Merrett, and Alex Weddell. 2018. RESTOP: Retaining External Peripheral State in Intermittently-Powered Sensor Systems. Sensors 18 (01 2018 ). https://doi.org/10.3390/s18010172 Google ScholarGoogle ScholarCross RefCross Ref
  2. D. Balsamo, A. Weddell, A. Das, A. Arreola, D. Brunelli, B. Al-Hashimi, G. 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 PP, 99 ( 2016 ). https://doi.org/10.1109/TCAD. 2016.2547919 Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Domenico Balsamo, Alex S Weddell, Geof V Merrett, Bashir M Al-Hashimi, Davide Brunelli, and Luca Benini. 2015. Hibernus: Sustaining computation during intermittent supply for energy-harvesting systems. IEEE Embedded Systems Letters 7, 1 ( 2015 ). https://doi.org/10.1109/LES. 2014.2371494 Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Naama Ben-David, Guy E. Blelloch, Michal Friedman, and Yuanhao Wei. 2019. Delay-Free Concurrency on Faulty Persistent Memory. In The 31st ACM Symposium on Parallelism in Algorithms and Architectures (SPAA '19). ACM, New York, NY, USA. https://doi.org/10.1145/3323165.3323187 Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Gautier Berthou, Tristan Delizy, Kevin Marquet, Tanguy Risset, and Guillaume Salagnac. 2017. Peripheral state persistence for transiently-powered systems. In 2017 Global Internet of Things Summit (GIoTS). IEEE. https://doi.org/10.1109/giots. 2017.8016243 Google ScholarGoogle Scholar
  6. Guy E. Blelloch, Phillip B. Gibbons, Yan Gu, Charles McGufey, and Julian Shun. 2018. The Parallel Persistent Memory Model. In Proceedings of the 30th on Symposium on Parallelism in Algorithms and Architectures, SPAA 2018, Vienna, Austria, July 16-18, 2018. https://doi.org/10.1145/3210377.3210381 Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. James Bornholt, Antoine Kaufmann, Jialin Li, Arvind Krishnamurthy, Emina Torlak, and Xi Wang. 2016. Specifying and Checking File System Crash-Consistency Models. SIGARCH Comput. Archit. News 44, 2 (March 2016 ). https: //doi.org/10.1145/2980024.2872406 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Dhruva R. Chakrabarti, Hans-J. Boehm, and Kumud Bhandari. 2014. Atlas: Leveraging Locks for Non-Volatile Memory Consistency. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA '14). Association for Computing Machinery, New York, NY, USA. https://doi.org/10.1145/ 2660193.2660224 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Haogang Chen, Daniel Ziegler, Tej Chajed, Adam Chlipala, M. Frans Kaashoek, and Nickolai Zeldovich. 2015. Using Crash Hoare Logic for Certifying the FSCQ File System. In Proceedings of the 25th Symposium on Operating Systems Principles (SOSP '15). ACM, New York, NY, USA. https://doi.org/10.1145/2815400.2815402 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Joel Coburn, Adrian M. Caulfield, Ameen Akel, Laura M. Grupp, Rajesh K. Gupta, Ranjit Jhala, and Steven Swanson. 2011. NV-Heaps: Making Persistent Objects Fast and Safe with Next-generation, Non-volatile Memories. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). https://doi.org/10.1145/1950365.1950380 Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Alexei Colin, Graham Harvey, Brandon Lucia, and Alanson P. Sample. 2016. An Energy-interference-free Hardware-Software Debugger for Intermittent Energy-harvesting Systems. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '16). https://doi.org/10.1145/2872362. 2872409 Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Alexei Colin and Brandon Lucia. 2016. Chain: Tasks and Channels for Reliable Intermittent Programs. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016 ). Association for Computing Machinery, New York, NY, USA. https://doi.org/10.1145/2983990.2983995 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Alexei Colin and Brandon Lucia. 2018. Termination Checking and Task Decomposition for Task-Based Intermittent Programs. In Proceedings of the 27th International Conference on Compiler Construction (CC 2018 ). Association for Computing Machinery, New York, NY, USA. https://doi.org/10.1145/3178372.3179525 Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Alexei Colin, Emily Ruppel, and Brandon Lucia. 2018. A Reconfigurable Energy Storage Architecture for Energy-Harvesting Devices. In Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '18). Association for Computing Machinery, New York, NY, USA. https://doi.org/10. 1145/3173162.3173210 Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Manjeet Dahiya and Sorav Bansal. 2018. Automatic Verification of Intermittent Systems. In Verification, Model Checking, and Abstract Interpretation, Isil Dillig and Jens Palsberg (Eds.). Cham. https://doi.org/10.1007/978-3-319-73721-8_8 Google ScholarGoogle ScholarCross RefCross Ref
  16. Marc De Kruijf and Karthikeyan Sankaralingam. 2013. Idempotent code generation: Implementation, analysis, and evaluation. In Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO). https: //doi.org/10.1109/CGO. 2013.6495002 Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Marc A. de Kruijf, Karthikeyan Sankaralingam, and Somesh Jha. 2012. Static Analysis and Compiler Design for Idempotent Processing. In Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '12). https://doi.org/10.1145/2254064.2254120 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Jasper de Winkel, Carlo Delle Donne, Kasim Sinan Yildirim, Przemysław Pawełczak, and Josiah Hester. 2020. Reliable Timekeeping for Intermittent Computing. In Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '20). Association for Computing Machinery, New York, NY, USA. https://doi.org/10.1145/3373376.3378464 Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Bradley Denby and Brandon Lucia. 2020. Orbital Edge Computing: Nanosatellite Constellations as a New Class of Computer System. In Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '20). Association for Computing Machinery, New York, NY, USA. https://doi.org/10. 1145/3373376.3378473 Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Gidon Ernst, Jörg Pfähler, Gerhard Schellhorn, and Wolfgang Reif. 2016. Inside a Verified Flash File System: Transactions and Garbage Collection. In Verified Software: Theories, Tools, and Experiments, Arie Gurfinkel and Sanjit A. Seshia (Eds.). Springer International Publishing, Cham. https://doi.org/10.1007/978-3-319-29613-5_5 Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Francesco Fraternali, Bharathan Balaji, Yuvraj Agarwal, Luca Benini, and Rajesh Gupta. 2018. Pible: battery-free mote for perpetual indoor BLE applications. In Proceedings of the 5th Conference on Systems for Built Environments. ACM. https://doi.org/10.1145/3276774.3282823 Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Karthik Ganesan, Joshua San Miguel, and Natalie Enright Jerger. 2019. The What's Next Intermittent Computing Architecture. In 2019 IEEE International Symposium on High Performance Computer Architecture (HPCA). IEEE. https://doi.org/10.1109/ HPCA. 2019.00039 Google ScholarGoogle ScholarCross RefCross Ref
  23. Kaan Genç, Michael D. Bond, and Guoqing Harry Xu. 2020. Crafty: Eficient, HTM-Compatible Persistent Transactions. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020 ). Association for Computing Machinery, New York, NY, USA. https://doi.org/10.1145/3385412.3385991 Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Graham Gobieski, Brandon Lucia, and Nathan Beckmann. 2019. Intelligence Beyond the Edge: Inference on Intermittent Embedded Systems. In Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '19). Association for Computing Machinery, New York, NY, USA. https: //doi.org/10.1145/3297858.3304011 Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Dan Grossman, Greg Morrisett, Trevor Jim, Michael Hicks, Yanling Wang, and James Cheney. 2002. Region-based Memory Management in Cyclone. In Proceedings of the ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation (PLDI '02). ACM, New York, NY, USA. https://doi.org/10.1145/512529.512563 Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Josiah Hester and Jacob Sorber. 2017. Flicker: Rapid Prototyping for the Batteryless Internet of Things. In Proceedings of the 15th ACM Conference on Embedded Network Sensor Systems (SenSys '17). https://doi.org/10.1145/3131672.3131674 Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Josiah Hester, Kevin Storer, and Jacob Sorber. 2017. Timely Execution on Intermittently Powered Batteryless Sensors. In Proceedings of the 15th ACM Conference on Embedded Network Sensor Systems (SenSys '17). https://doi.org/10.1145/ 3131672.3131673 Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Josiah Hester, Nicole Tobias, Amir Rahmati, Lanny Sitanayah, Daniel Holcomb, Kevin Fu, Wayne P. Burleson, and Jacob Sorber. 2016. Persistent Clocks for Batteryless Sensing Devices. ACM Trans. Embed. Comput. Syst. 15, 4, Article 77 ( Aug. 2016 ). https://doi.org/10.1145/2903140 Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Matthew Hicks. 2017. Clank: Architectural Support for Intermittent Computation. In Proceedings of the 44th Annual International Symposium on Computer Architecture (ISCA '17). https://doi.org/10.1145/3079856.3080238 Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Joseph Izraelevitz, Terence Kelly, and Aasheesh Kolli. 2016a. Failure-Atomic Persistent Memory Updates via JUSTDO Logging. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '16). ACM, New York, NY, USA. https://doi.org/10.1145/2872362.2872410 Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Joseph Izraelevitz, Hammurabi Mendes, and Michael L. Scott. 2016b. Linearizability of Persistent Memory Objects Under a Full-System-Crash Failure Model. In Distributed Computing, Cyril Gavoille and David Ilcinkas (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-53426-7_23 Google ScholarGoogle Scholar
  32. Neal Jackson, Joshua Adkins, and Prabal Dutta. 2019. Capacity over Capacitance for Reliable Energy Harvesting Sensors. In Proceedings of the 18th International Conference on Information Processing in Sensor Networks (IPSN '19). Association for Computing Machinery, New York, NY, USA. https://doi.org/10.1145/3302506.3310400 Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Hrishikesh Jayakumar, Arnab Raha, and Vijay Raghunathan. 2014. QuickRecall: A low overhead HW/SW approach for enabling computations across power cycles in transiently powered computers. In 2014 27th International Conference on VLSI Design and 2014 13th International Conference on Embedded Systems. https://doi.org/10.1109/VLSID. 2014.63 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Rajeev Joshi and Gerard Holzmann. 2007. A Mini Challenge: Build a Verifiable Filesystem. Formal Asp. Comput. 19 ( 06 2007 ). https://doi.org/10.1007/s00165-006-0022-3 Google ScholarGoogle ScholarCross RefCross Ref
  35. Chih-Kai Kang, Chun-Han Lin, Pi-Cheng Hsiu, and Ming-Syan Chen. 2018. HomeRun: HW/SW Co-Design for Program Atomicity on Self-Powered Intermittent Systems. In Proceedings of the International Symposium on Low Power Electronics and Design (ISLPED '18). Article 29. https://doi.org/10.1145/3218603.3218633 Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Vito Kortbeek, Kasim Sinan Yildirim, Abu Bakar, Jacob Sorber, Josiah Hester, and Przemysław Pawełczak. 2020. TimeSensitive Intermittent Computing Meets Legacy Software. In Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ' 20). Association for Computing Machinery, New York, NY, USA. https://doi.org/10.1145/3373376.3378476 Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Eric Koskinen and Junfeng Yang. 2016. Reducing Crash Recoverability to Reachability. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '16). ACM, New York, NY, USA. https://doi.org/10.1145/2837614.2837648 Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Chris Lattner and Vikram Adve. 2004. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In Proceedings of the International Symposium on Code Generation and Optimization: Feedback-directed and Runtime Optimization (CGO '04). IEEE Computer Society, Washington, DC, USA. http://dl.acm.org/citation.cfm?id= 977395. 977673Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Q. Liu, J. Izraelevitz, S. K. Lee, M. L. Scott, S. H. Noh, and C. Jung. 2018. iDO: Compiler-Directed Failure Atomicity for Nonvolatile Memory. In 2018 51st Annual IEEE/ACM International Symposium on Microarchitecture (MICRO). https: //doi.org/10.1109/MICRO. 2018.00029 Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Brandon Lucia and Benjamin Ransford. 2015. A Simpler, Safer Programming and Execution Model for Intermittent Systems. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2015 ). https://doi.org/10.1145/2737924.2737978 Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Kaisheng Ma, Xueqing Li, Jinyang Li, Yongpan Liu, Yuan Xie, Jack Sampson, Mahmut Taylan Kandemir, and Vijaykrishnan Narayanan. 2017. Incidental Computing on IoT Nonvolatile Processors. In Proceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO-50 '17). ACM, New York, NY, USA. https://doi.org/10.1145/ 3123939.3124533 Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Kaisheng Ma, Xueqing Li, Shuangchen Li, Yongpan Liu, John Jack Sampson, Yuan Xie, and Vijaykrishnan Narayanan. 2015a. Nonvolatile processor architecture exploration for energy-harvesting applications. IEEE Micro 35, 5 ( 2015 ). https://doi.org/10.1109/MM. 2015.88 Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Kaisheng Ma, Yang Zheng, Shuangchen Li, Karthik Swaminathan, Xueqing Li, Yongpan Liu, Jack Sampson, Yuan Xie, and Vijaykrishnan Narayanan. 2015b. Architecture exploration for ambient energy harvesting nonvolatile processors. In High Performance Computer Architecture (HPCA), 2015 IEEE 21st International Symposium on. https://doi.org/10.1109/ HPCA. 2015.7056060 Google ScholarGoogle ScholarCross RefCross Ref
  44. Kiwan Maeng, Alexei Colin, and Brandon Lucia. 2017. Alpaca: Intermittent Execution Without Checkpoints. Proc. ACM Program. Lang. 1, OOPSLA, Article 96 (Oct. 2017 ). https://doi.org/10.1145/3133920 Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Kiwan Maeng, Alexei Colin, and Brandon Lucia. 2019. Alpaca: Intermittent Execution without Checkpoints. ( 2019 ). arXiv:cs.DC/ 1909.06951Google ScholarGoogle Scholar
  46. Kiwan Maeng and Brandon Lucia. 2018. Adaptive Dynamic Checkpointing for Safe Eficient Intermittent Computing. In Proceedings of the 12th USENIX Conference on Operating Systems Design and Implementation (OSDI'18). USENIX Association, Berkeley, CA, USA. http://dl.acm.org/citation.cfm?id= 3291168. 3291178Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Kiwan Maeng and Brandon Lucia. 2019. Supporting Peripherals in Intermittent Systems with Just-In-Time Checkpoints. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '19). https://doi.org/10.1145/3314221.3314613 Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Andrea Maioli, Luca Mottola, Muhammad Hamad Alizai, and Junaid Haroon Siddiqui. 2019. On intermittence bugs in the battery-less internet of things (WIP paper). In Proceedings of the 20th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, and Tools for Embedded Systems. ACM. https://doi.org/10.1145/3316482.3326346 Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. J. San Miguel, K. Ganesan, M. Badr, and N. E. Jerger. 2018. The EH Model: Analytical Exploration of Energy-Harvesting Architectures. IEEE Computer Architecture Letters 17, 1 (Jan 2018 ). https://doi.org/10.1109/LCA. 2017.2777834 Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Azalia Mirhoseini, Ebrahim M Songhori, and Farinaz Koushanfar. 2013. Idetic: A high-level synthesis approach for enabling long computations on transiently-powered ASICs. In Pervasive Computing and Communications (PerCom), 2013 IEEE International Conference on. https://doi.org/10.1109/PerCom. 2013.6526735 Google ScholarGoogle ScholarCross RefCross Ref
  51. Dushyanth Narayanan and Orion Hodson. 2012. Whole-system Persistence. In Proceedings of the Seventeenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVII). https://doi.org/ 10.1145/2150976.2151018 Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Matteo Nardello, Harsh Desai, Davide Brunelli, and Brandon Lucia. 2019. Camaroptera: A Batteryless Long-Range Remote Visual Sensing System. In Proceedings of the 7th International Workshop on Energy Harvesting & Energy-Neutral Sensing Systems (ENSsys'19). ACM, New York, NY, USA. https://doi.org/10.1145/3362053.3363491 Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Gian Ntzik, Pedro da Rocha Pinto, and Philippa Gardner. 2015. Fault-Tolerant Resource Reasoning. In Programming Languages and Systems, Xinyu Feng and Sungwoo Park (Eds.). Springer International Publishing, Cham. https://doi.org/10.1007/978-3-319-26529-2_10 Google ScholarGoogle ScholarCross RefCross Ref
  54. Steven Pelley, Peter M. Chen, and Thomas F. Wenisch. 2014. Memory Persistency. In Proceeding of the 41st Annual International Symposium on Computer Architecuture (ISCA '14). Piscataway, NJ, USA. https://doi.org/10.1109/ISCA. 2014.6853222 Google ScholarGoogle ScholarCross RefCross Ref
  55. Steven Pelley, Peter M Chen, and Thomas F Wenisch. 2015. Memory Persistency: Semantics for Byte-Addressable Nonvolatile Memory Technologies. IEEE Micro 35, 3 ( 2015 ). https://doi.org/10.1109/MM. 2015.46 Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Proteus Digital Health. 2015. Proteus Digital Health. http://www.proteus.com/. ( 2015 ).Google ScholarGoogle Scholar
  57. Azalea Raad and Viktor Vafeiadis. 2018. Persistence Semantics for Weak Memory: Integrating Epoch Persistency with the TSO Memory Model. Proc. ACM Program. Lang. 2, OOPSLA, Article 137 (Oct. 2018 ). https://doi.org/10.1145/3276507 Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Azalea Raad, John Wickerson, Gil Neiger, and Viktor Vafeiadis. 2019b. Persistency Semantics of the Intel-X86 Architecture. Proc. ACM Program. Lang. 4, POPL, Article 11 ( Dec. 2019 ). https://doi.org/10.1145/3371079 Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Azalea Raad, John Wickerson, and Viktor Vafeiadis. 2019a. Weak Persistency Semantics from the Ground Up: Formalising the Persistency Semantics of ARMv8 and Transactional Models. Proc. ACM Program. Lang. 3, OOPSLA, Article 135 (Oct. 2019 ). https://doi.org/10.1145/3360561 Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Ganesan Ramalingam and Kapil Vaswani. 2013. Fault Tolerance via Idempotence. ( 2013 ). https://doi.org/10.1145/2429069. 2429100 Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Benjamin Ransford, Jacob Sorber, and Kevin Fu. 2011. Mementos: System Support for Long-running Computation on RFID-scale Devices. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). https://doi.org/10.1145/1950365.1950386 Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Emily Ruppel and Brandon Lucia. 2019. Transactional Concurrency for Intermittent Systems. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '19). https://doi.org/10.1145/ 3314221.3314583 Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. Gerhard Schellhorn, Gidon Ernst, Jörg Pfähler, Dominik Haneberg, and Wolfgang Reif. 2014. Development of a Verified Flash File System. In Proceedings of the 4th International Conference on Abstract State Machines, Alloy, B, TLA, VDM, and Z-Volume 8477 (ABZ 2014 ). Springer-Verlag, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-43652-3_2 Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Helgi Sigurbjarnarson, James Bornholt, Emina Torlak, and Xi Wang. 2016. Push-Button Verification of File Systems via Crash Refinement. In 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI '16). USENIX Association, Savannah, GA. https://www.usenix.org/conference/osdi16/technical-sessions/presentation/sigurbjarnarsonGoogle ScholarGoogle Scholar
  65. Milijana Surbatovich, Limin Jia, and Brandon Lucia. 2019. I/O Dependent Idempotence Bugs in Intermittent Systems. Proc. ACM Program. Lang. 3, OOPSLA, Article 183 (Oct. 2019 ). https://doi.org/10.1145/3360609 Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. TI Inc. 2020a. Overview for MSP430FRxx FRAM. https://www.ti.com/microcontrollers/msp430-ultra-low-power-mcus/ overview.html. ( 2020 ). Visited October 14th, 2020.Google ScholarGoogle Scholar
  67. TI Inc. 2020b. TI-RTOS: Real-Time Operating System (RTOS) for Microcontrollers (MCU). ( 2020 ). https://www.ti.com/tool/TIRTOS-MCU Visited October 14th, 2020.Google ScholarGoogle Scholar
  68. Haris Volos, Andres Jaan Tack, and Michael M. Swift. 2011. Mnemosyne: Lightweight Persistent Memory. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI). https://doi.org/10.1145/1950365.1950379 Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. Joel Van Der Woude and Matthew Hicks. 2016. Intermittent Computation without Hardware Support or Programmer Intervention. In 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI '16). USENIX Association, Savannah, GA. https://www.usenix.org/conference/osdi16/technical-sessions/presentation/vanderwoudeGoogle ScholarGoogle Scholar
  70. Kasim Sinan Yildirim, Amjad Yousef Majid, Dimitris Patoukas, Koen Schaper, Przemyslaw Pawelczak, and Josiah Hester. 2018. InK: Reactive Kernel for Tiny Batteryless Sensors. In Proceedings of the 16th ACM Conference on Embedded Networked Sensor Systems (SenSys '18). ACM, New York, NY, USA. https://doi.org/10.1145/3274783.3274837 Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Zac Manchester. 2015. KickSat. http://zacinaction.github.io/kicksat/. ( 2015 ).Google ScholarGoogle Scholar
  72. Hong Zhang, Mastooreh Salajegheh, Kevin Fu, and Jacob Sorber. 2011. Ekho: Bridging the Gap Between Simulation and Reality in Tiny Energy-harvesting Sensors. In Proceedings of the 4th Workshop on Power-Aware Computing and Systems (HotPower '11). Article 9. https://doi.org/10.1145/2039252.2039261 Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Towards a formal foundation of intermittent computing

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image Proceedings of the ACM on Programming Languages
        Proceedings of the ACM on Programming Languages  Volume 4, Issue OOPSLA
        November 2020
        3108 pages
        EISSN:2475-1421
        DOI:10.1145/3436718
        Issue’s Table of Contents

        Copyright © 2020 Owner/Author

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 13 November 2020
        Published in pacmpl Volume 4, Issue OOPSLA

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!