## 1 Introduction  
Millions of new sensing devices have been deployed in recent years, and many more will take their places in the years to come. This makes a decisive step towards transforming the sparse IoT (Internet of Things) of today into the massive IoT. The IoT devices are employed for an extensive range of applications--from military to health and well-being monitoring, from environment sensing to vehicle tracking [1]. Despite all the difference in the requirements and the key performance indicators originating from the very nature of these various use cases, the structure of the majority of the sensing devices, called nodes, is today rather uniform. Namely, a typical commercial IoT node is composed [2] of a microcontroller, controlling its operation, a radio transceiver, providing means for communication, the set of application-specific peripherals (typically--sensors and actuators) and an energy source,typically represented by a primary or a secondary battery, or mains. The devices like these have been in use already for many years and have shown themselves well. Nonetheless, the limited lifetime of such devices still represents one of the major limitations for such systems. Luckily, the recent advances in respect to the ultra-low power signal processing and wireless communications provide means to approach this challenge by replacing a battery with a solution enabling a node to get powered with the energy available around it. This enables for the battery-free sensor applications, which are more ecologically friendly and can enjoy more simple service and maintenance. To give an example, the nodes in a sensor network feature a self-forming infrastructure, developing a configuration based on the application as well as on the environment [3]. The capability of communicating over wireless channels and without batteries allows deployment in harsh and very dynamic environments--for instance, in smart mechanical components inside an engine where vibrations and moving objects would abstain from supplying power over cables or placing the sensors with heavy and volatile batteries. Another motivation for getting rid of the cells is due to safety and ecological constraints. The heat-up of the moving parts along with the possibility of suffering mechanical damage obstruct the use of batteries, which include flammable or hazardous materials. Finally, removing the cells for extremely large numbered sensor networks may bring substantial savings. Therefore, with energy harvesting, the applications in which using sensors was impossible or too expensive now become a reality. It is evident that, to enable energy transmission or harvesting of the energy, the consumption of a node should be balanced with the available energy income, thus implementing an _energy neutral_ system [4]. This inevitably requires minimizing the energy consumption of all three critical functions of a sensor node: processing, sensing, and communication. The two former ones are heavily dependent on the features of the hardware (HW) components used, which, in their turn, are dependent on the requirements of a particular application scenario. To give a practical example, the contemporary digital-output temperature and humidity sensors typically consume under one milliWatt and have millisecond-order response time (e.g., [5; 6]). Meanwhile, the accurate carbon dioxide sensors feature hundred milliWatt order consumptions with response times of up to ten minutes [7; 8]. The processing system should be selected while mindful of the complexity of the operation algorithms and the respective memory requirements. In addition, one needs to keep in mind the extra energy cost for keeping up the non-volatile memory content, and the difference in the energy efficiency of computing for general processors and application-specific co-processors and accelerators.