Virtual Execution Environments (VEE)

We have a number of research projects on virtual execution environments, including a number of applications. We are also exploring developing VEEs for embedded systems and wireless sensor networks.

Clairvoyant

Clairvoyant is the first comprehensive source-level debugger for wireless sensor networks (WSN). In can operate on the deployment hardware and in the deployment environment, without requiring any additional hardware or wires. Furthermore, no modifications need to be made to the application's source code. Clairvoyant provides a suite of standard debugging commands like break, step, watch, and backtrace, among others. It also provides new functionality that is specially designed for WSNs, including access to typical hardware such as external flash and interrupt vectors, global commands such as gstop and gcontinue that operate not on a single node but on all nodes in the network, and the ability to log variables to LEDs, RAM, external flash, or radio. Clairvoyant can be used to debug race conditions, stack overflow, errors in global state, and errors in low-level hardware drivers, all of which are common yet difficult-to-debug errors in WSNs.

Clairvoyant has been implemented on the Mica2 sensor node and used to successfully debug several real, documented bugs in the TinyOS repository. We are currently working on an implementation for the MSP430-based telosb sensor node which has far less program memory than the Mica2 sensor node. We are trying to use the MSP430's ability to execute instructions directly out of RAM (instead of the flash-based program memory) to 1) reduce the demand of Clairvoyant on internal program memory, and 2) reduce the number of flash writes that Clairvoyant requires.

Publications

Code release

Dimension

Dimension   is tool that provides instrumentation services for virtual execution environments (VEE). The objective for Dimension is to build a flexible and efficient instrumentation tool that can be used be a variety of VEEs. Given an instrumentation specification, Dimension can be used to by a VEE to provide customized instrumentation, enabling analyses on both the source and target binaries. The design of Dimension identifies a few components of VEEs that need to communicate with an Instrumenter and develop interfaces between the VEE and Dimension. Dimension is designed to be both flexible and comprehensive.

Ease-of-use and efficiency are two other properties that were important in the development of Dimension.

Publications

VEEs for embedded systems

Memory Footprint Optimization of Virtual Execution Environments for Embedded Platforms (Kim Hazelwood and Apala Guha)

Due to the large memory demands of a VEE and  constrained memory resources of an embedded device, developing a VEE for an embedded system presents a number of challenges.  In this project, we are reducing the memory footprint, taking into consideration the memory perforamnce tradeoffs of the techniques used.  this research is exploring different strategies for each of the major design decisions that affect the memory footprint.  Specifically,  this research is targeting the memory demands of the code cache and data structures used by the VEE.

Publications