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.
|