The increasing prevalence of embedded devices, which account for over 99% of all CPUs manufactured today, drives the need for an advanced execution environment that addresses a number of important problems for embedded systems. Dynamic reprogramming, fault isolation and recovery, dealing with limited hardware resources, and automatic adaptation are but a few of the motivating issues.
Currently, many general-purpose computers use a virtual execution environment (VEE) in addition to the operating system to provide meta-execution functionality, including software and hardware compatibility, dynamic optimization, profiling, and security. The VEE transparently and automatically mediates, controls, and adapts an application as it executes on the target architecture. Despite the benefits, the power of VEEs has yet to be realized for embedded devices due to the memory and power constraints of these devices. Furthermore, the resource profiles of embedded devices lead to the need for new strategies to be explored and developed.
This project explores new virtualization technology specifically designed for the resource profiles of embedded devices. The research is making several fundamental advances in VEE technology including reducing the memory footprint, designing VEEs that function on the multitude of embedded platforms, and efficiently offloading large computation that cannot be performed on resource-constrained nodes.
Rather than focusing on a single VEE for a particular device, the ultimate goal is to explore the entire VEE design space continuum, evaluating the numerous design options and trade-offs for a variety of embedded devices. As a first step, this project explores new design points for three commonly used embedded devices: the PDA, the cell phone, and the sensor node.