Energy versus Output Quality of Non-volatile Writes in Intermittent Computing
<|reference_start|>Energy versus Output Quality of Non-volatile Writes in Intermittent Computing: We explore how to improve the energy performance of battery-less Internet of Things (IoT) devices at the cost of a reduction in the quality of the output. Battery-less IoT devices are extremely resource-constrained energy-harvesting devices. Due to erratic energy patterns from the ambient, their executions become intermittent; periods of active computation are interleaved by periods of recharging small energy buffers. To cross periods of energy unavailability, a device persists application and system state onto Non-Volatile Memory (NVM) in anticipation of energy failures. We purposely control the energy invested in these operations, representing a major energy overhead, when using Spin-Transfer Torque Magnetic Random-Access Memory (STT-MRAM) as NVM. As a result, we abate the corresponding overhead, yet introduce write errors. Based on 1.9+ trillion experimental data points, we illustrate whether this is a gamble worth taking, when, and where. We measure the energy consumption and quality of output obtained from the execution of nine diverse benchmarks on top of seven different platforms. Our results allow us to draw three key observations: i) the trade-off between energy saving and reduction of output quality is program-specific; ii) the same trade-off is a function of a platform's specific compute efficiency and power figures; and iii) data encoding and input size impact a program's resilience to errors. As a paradigmatic example, we reveal cases where we achieve up to 50% reduction in energy consumption with negligible effects on output quality, as opposed to settings where a minimal energy gain causes drastic drops in output quality.<|reference_end|>
@article{barjami2024energy,
    title={Energy versus Output Quality of Non-volatile Writes in Intermittent
  Computing},
    author={Rei Barjami, Antonio Miele, Luca Mottola},
    journal={arXiv preprint arXiv:2403.07517},
    year={2024},
    archivePrefix={arXiv},
    eprint={2403.07517},
    primaryClass={eess.SY cs.SY}
}