Intermittently operating embedded computing platforms powered by energy harvesting must frequently checkpoint their computation state. Using non-volatile memory reduces checkpoint size by eliminating the need to checkpoint volatile memory but increases checkpoint frequency to cover Write After Read (WAR) dependencies. Non-volatile memory is also significantly slower to access and consumes more energy than volatile memory, suggesting the use of a data cache. Unfortunately, existing data cache solutions do not fit the challenges of intermittent computing and often require additional hardware or software to detect WARs. In this paper, we extend the data cache by integrating it with WAR detection, removing the need for an additional memory tracker. This idea forms the basis of NACHO, a data cache tailored to intermittent computing. NACHO reduces intermittent-computing runtime overhead by 54% on average compared with state-of-the-art cache-based systems. It also reduces non-volatile memory writes by 82% compared with a system without a data cache and by 18% on average compared with multiple state-of-the-art cache-based systems.
GitHub repository and artifact: https://github.com/TUDSSL/intermittent-risc-v/tree/nacho-artifact-release