  Internet of Things (IoT) devices are rapidly expanding in many areas,
including deep mines, space, industrial environments, and health monitoring
systems. Most of the sensors and actuators are battery-powered, and these
batteries have a finite lifespan. Maintaining and replacing these many
batteries increases the maintenance cost of IoT systems and causes massive
environmental damage. Energy-harvesting devices (EHDs) are the alternative and
promising solution for these battery-operated IoT devices. These EHDs collect
energy from the environment and use it for daily computations, like collecting
and processing data from the sensors and actuators. Using EHDs in IoT reduces
overall maintenance costs and makes the IoT system energy-sufficient. However,
energy availability from these EHDs is unpredictable, resulting in frequent
power failures.
  Most of these devices use volatile memories as storage elements, implying
that all collected data and decisions made by the IoT devices are lost during
frequent power failures, resulting in two possible overheads. First, the IoT
device must execute the application from the beginning whenever power comes
back. Second, IoT devices may make wrong decisions by considering incomplete
data, i.e., data-inconsistency issues. To address these two challenges, a
computing model is required that backs up the collected data during power
failures and restores it for later computations; this type of computing is
defined as intermittent computing. However, this computing model doesn't work
with conventional processors or memories. Non-volatile memory and processors
are required to design a battery-less IoT device that supports intermittent
computing.
