PureMEM: a structured programming model for transiently powered computers

Advances in energy harvesting circuits and energy efficient architecture of processors create the potential for batteryless computing and sensing systems called transiently powered computers. These computers can only operate intermittently due to fluctuating nature of ambient energy. Intermittent operation requires a new programming model that should preserve forward progress and maintain data consistency; which are challenging. We propose a structured task-based programming model; namely PureMEM, to cope with these challenges. We discuss how PureMEM prevents interdependencies caused by the unstructured control encountered in intermittent operation, enables re-usability of the tasks, provides dynamic memory management and supports error handling. We also present intermittent programs to exemplify the features of PureMEM.

[1]  David Holmes,et al.  Java Concurrency in Practice , 2006 .

[2]  Jacob Sorber,et al.  Timely Execution on Intermittently Powered Batteryless Sensors , 2017, SenSys.

[3]  Guy L. Steele Debunking the “expensive procedure call” myth or, procedure call implementations considered harmful or, LAMBDA: The Ultimate GOTO , 1977, ACM '77.

[4]  Edsger W. Dijkstra,et al.  Letters to the editor: go to statement considered harmful , 1968, CACM.

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

[6]  Luca Mottola,et al.  HarvOS: Efficient Code Instrumentation for Transiently-Powered Embedded Sensing , 2017, 2017 16th ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN).

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

[8]  John C. Mitchell,et al.  Concepts in programming languages , 2002 .

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

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

[11]  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.

[12]  Arnab Raha,et al.  QuickRecall , 2015, ACM J. Emerg. Technol. Comput. Syst..

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

[14]  Tiark Rompf,et al.  RRB vector: a practical general purpose immutable sequence , 2015, ICFP.

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

[16]  Joshua R. Smith Wirelessly Powered Sensor Networks and Computational RFID , 2013 .

[17]  Przemyslaw Pawelczak,et al.  InK: Reactive Kernel for Tiny Batteryless Sensors , 2018, SenSys.