Dali VM: Virtual Machine for Dali |
Rivl is a programming language that treats video, audio and images as first class data types. Rivl was implemented as an interpreter. As such, the optimizations it could perform were somewhat limited, and the implementation so complex that it was difficult to extend or debug. Despite these problems, our experience with Rivl lead us to develop many new optimizations for computing with multimedia data, but robustly incorporating these into the Rivl interpreter was difficult or impossible.
Dali is a new project based on our experience with Rivl. Dali consists of a programming language, a compiler, and a virtual machine. The compiler reads a Dali program, compiles it, and writes the result in Dali Virtual Machine (DVM) code. The Dali VM provides a high performance execution environment for DVM code. Our current focus is to design DVM and the Dali VM.
DVM contains low level, high performance primitives that operate on multimedia data, such as audio, video, and images. The challenge of designing DVM is to design a set of primitives that allow high performance implementations, and can be combined to implement most of the optimizations that the compiler (or an expert) would use.
The Dali VM executes DVM code. The current implementation of the Dali VM is as a Tcl extension. Although this may seem a somewhat surprising design decision, the granularity of DVM instructions is such that the overhead of interpreting the Tcl instructions is small compared to the cost of implementing their function.
We are planning implementations of the Dali VM on multimedia processors, such as MMX and the Phillips Trimedia Chip, in near future. We also plan to combine Dali with Mash and the Safe Language Kernel to support in-network processing of multimedia data.
This research is supported by the DARPA Intelligent Collaboration and Visualization program (contract N00014-95-1-0799), Kodak, Intel, Xerox, and Microsoft.
Ph.D. Students