Home Services Technologies Company Careers Contact  

Services

Technologies

Virtual Machine Development Services

A virtual machine is an abstraction layer, where some machine below the layer is used to emulate a machine above the layer. One of the common uses of a virtual machine is as a standard applications programming interface which enhances application portability and reduces switching costs from platform to platform. This is the purpose of the Java and .NET virtual machines. The most basic implementation of a virtual machine is a software interpreter. However, to increase performance, compiler techniques are used that cross the abstraction barrier and optimize the application directly to the underlying hardware. In simple cases, hardware accelerators can be used to make applications to a virtual machine run faster, but compiler technology is required for optimization and acceleration beyond those simple transformations, and in cases where custom hardware is unavailable. There is a complex transition between optimizations best handled by hardware and those best handled by compilers. It is possible to automate the transition to hardware by synthesizing the hardware accelerator from the software optimizer specification.

Reservoir Labs has experience accelerating virtual machines through the application of compiler technology. We are particularly experienced with Java, and have a uniquely thorough understanding of Java semantics and performance issues, including garbage collection and synchronization. Furthermore, we work with other clients in supercomputing, military applications, and signal processing, where the simultaneous objectives of preserving software development investment, minimizing switching costs, and maximizing performance, necessitate other special virtual machines with advanced compilation and optimization capabilities.

Reservoir Labs' virtual machine development services include:

  • The design and implementation of new virtual machines in new domains.
  • Critical reviews and constructive suggestions for virtual machine specification proposals, particularly with regard to their optimizability using compiler techniques.
  • Porting, tuning, development, and long term support of third-party proprietary and open source virtual machines.
  • Implementation of advanced compiler optimization capability in third-party proprietary and open source virtual machines.
  • Application of Reservoir's proprietary dynamic compilation technologies to third-party proprietary and open source virtual machines.
  • Validation, using our own proprietary test suites, third-party suites, and development of new suites.
  • Engineering of hardware/software optimization tradeoffs in virtual machine implementations, such as synthesizing hardware accelerator modules from compiler optimization specification.

Reservoir Labs can be of particular use in support of JVMs for new hardware platforms or operating systems. For example, we can take responsibility for porting, tuning, and support the JDK, J2SE, J2ME, and J2EE, as well as open source and other third-party JVMs. Reservoir provides our client strong value because beyond basic porting, we are experienced in testing as well as rapid isolation and correction of esoteric bugs and interactions among garbage collection, synchronization, and dynamic class loading. Our experience with advanced hardware increases our value for supporting Java on such platforms.

For more information or to have us prepare a written response to your formal RFQ/RFP, please call Richard Lethin at +1-212-780-0527or fill out our web-based inquiry form.

Copyright © 1998-2008 Reservoir Labs, Inc.