Ultra-Low-Power Sensor Nodes Featuring a Virtual Runtime Environment Emanuele Lattanzi and Alessandro Bogliolo DiSBeF – University of Urbino NeuNet
Agenda Introduction HW-SW platform Power states DPM issues and solutions Experimental results
Introduction Need for energy efficient wireless sensor nodes Lifetime maximization Compatibility with energy harvesters Attractiveness of runtime virtual environment Development Deployment Re-use/Re-programming Availability of ultra-low-power micro controller units (MCUs) featuring 16-bit RISC architectures clocked at tens of MHz 16kbytes of main memory 64kbytes of flash memory Voltage-frequency scaling Low-power modes with sum ms wake-up time
Objective Ultra-low power sensor node Java-compatible virtual run-time environment Full exploitation of low-power modes Off-the-shelf low-cost components Open-hardware PCB Open-source software stack
Agenda Introduction HW-SW platform Power states DPM issues and solutions Experimental results
HW platform TI MSP430F54xxa MCU 16-bit RISC 8.9mA @ 25MHz 6 LP modes 0.1-73 uA 5us wake-up
HW platform VirtualSense provides a new Pareto-optimal point in the power-performance design space of wireless sensor modules
SW stack Contiki OS Operating-source real-time OS for sensor networks and networked embedded systems Portability Multi-tasking Memory efficiency Event-driven organization Elementary DPM which exploits the stand-by state of the MCU and wakes it up every 10ms
SW stack Darjeeling VM Open-source VM for extremely limited devices Java compatibility Limited requirements (10kbytes of RAM) Bytecode efficiency (infuser) Runs as a single process Supports multi-threading Preemptive round-robin scheduling
Agenda Introduction HW-SW platform Power states DPM issues and solutions Experimental results
Power modes Active mode Standby mode Sleep mode CPU Clock Memory Active mode 1-10mW Reboot at external interrupt [1-100ms] External interrupt [<1ms] Self wake up [1-10us] Standby mode 1-100uW Sleep mode 1uW Hibernation mode 100nW
SW-stack dimension Active Standby Sleep Hibernation OS boot VM boot Int hand OS sch VM sch Vtask Vtask Standby Sleep Hibernation
Wake-up transitions Active Standby Sleep Hibernation OS boot VM boot Int hand OS sch VM sch Vtask Standby Sleep Hibernation
Voltage and frequency scaling The PMM can provide four different levels of VCORE and it can be programmed in order to select the lowest supply voltage compatible with the speed of the CPU.
Voltage and frequency scaling
Agenda Introduction HW-SW platform Power states DPM issues and solutions Experimental results
Standby mode ContikiOS schedules a self-wakeup every 10ms Int hand OS sch VM sch Vtask ContikiOS schedules a self-wakeup every 10ms There are 3 cases: The VM has no tasks to resume a The OS has no processes to resume b The VM has a task to resume Actual wake up
Standby mode abstract state diagram Vtask Active 1-10mW Exploitation issues: c The self-loop longer than 10ms No power saving a 1-10mW Standby b Not supported by the SW stack (VM always active) 1-100uW Not supported by Contiki OS Lack of timing info 1-10uW Stanby mode is not compatible with the SW stack!
Standby mode improvements Modified Contiki OS to make it able to dynamically adjust the INTERVAL of timer interrupts Modified Darjeeling VM scheduler to make it able to set the OS timer and suspends the VM PROCESS_WAIT_EVENT_UNTIL() Implemented a timed standby mode with just-in-time predictive wake-up Mounted an external low-power (0.3uW) real-time clock (RTC) to preserve timing accuracy
Standby mode modified state diagram Vtask 6.6mW 4.5uW + 153.72uJ/T Standby.a(T) Families of low-power states depending on T Standby.b(T) 4.5uW + 0.33uJ/T 4.5uW + 0.3uW Standby.t 4.5uW Standby
Sleep mode issues Unable to issue self-events Wakup can only be triggered by external interrupts Cannot be exploited is there are processes/tasks that need to resume at a given time (e.g., periodic monitoring tasks typical of many WSN applications) Lack of timing information No information about the time elapsed since shut down No time stamps associated with external interrupts Sleep mode can ony be exploited in case of time-independent reactive applications
Sleep mode improvements Implemented a timed sleep mode with just in time predictive wakeup based on the external RTC Used the external RTC to provide relative and absolute timing information at wake up 1.5uW + 0.3uW Sleep.t 1.5uW Sleep
Hibernation mode issues Unable to issue self-events As for Sleep mode Lack of timing information Lack of data retention Requires a complete reboot Impossible to resume a process/task Hibernation mode can ony be exploited in case of memor-less reactive applications
Hibernation mode improvements Used the external RTC as for the Sleep mode Implemented a native method in the main of the VM to save and restore the heap of the VM in falsh memory 1.5uW + 0.3uW Hibernation.t 1.5uW Hibernation
Agenda Introduction HW-SW platform Power states DPM issues and solutions Experimental results
Characterization results Data refer to a MSP430F5418a MCU powered at 3V and clocked at 16MHz
Experimental results Average power consumption of the MCU used to execute a periodic monitoring task which keeps the CPU busy for 1s
Conclusions Ultra-low-power sensor node Java-compatible virtual runtime environment Power consumption ranging from 6.6mW to 0.1uW (in Hibernation) Capable of reacting to external events and resume execution from any low-power state All low-power modes directly exploitable from the Java runtime environment Open-HW / Open-SW approach
Future directions Hardware filtering of non-Intended frame Multitasking support Ultrasound remote wake-up On-board ultrasound localization
Frame filtering Filtered CCA Non-inteded Intended
Frame filtering
Multitasking support The application manager receives applications to be installed or upgraded through the network and stores its on the applications memory.
Multitasking support Task manager is responsible for loading, starting, stopping, and unloading into the VirtualSense VM the installed applications.
Multitasking support The VirtualSense network dispatcher is responsible for managing communication between concurrent tasks and the low-level system network.