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.
[SENSYS '07] J. Yang, M. L. Soffa, L. Selavo, and K. Whitehouse. Clairvoyant: A Comprehensive Source-Level Debugger for Wireless Sensor Networks.
Clairvoyant 0.0.1 -- download times: 57
| 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.
Flexibility. The effort to use Dimension with diverse VEEs is minimal. It is straightforward to modify a VEE to use Dimension, and Dimension can be easily reconfigured to interface with VEEs running on different architectures and written in different programming languages.
Comprehensiveness. Dimension can instrument both the source and target binaries of a VEE. Instrumentation can be done at various levels of granularities from instruction level to method level.
Ease-of-use and efficiency are two other properties that were important in the development of Dimension.
Ease-of-Use. Dimension is transparent to the instrumentation users. Its user-model is similar to ATOM and Pin.
Efficiency. Optimization techniques for instrumentation are applied in Dimension with the result that the slowdown from instrumentation is reasonable, compared to other instrumentation tools.
[VEE '06] J. Yang, S. Zhou, and M. L. Soffa. Dimension: An Instrumentation Tool for Virtual Execution Environments.
| 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