http://en.wikipedia.org/wiki/Binary_translation
Binary translation
From Wikipedia, the free encyclopedia
In computing, binary translation is the emulation
of one instruction set by another through
translation of code. Sequences of instructions are translated
from the source to the target instruction set.
There is static binary translation, where an entire executable file
is translated into an executable of the target architecture. This is
very difficult to do correctly, since not all the code can be
discovered by the translator. For example, some parts of the executable
may be reachable only through indirect branches, whose value is only
known at run-time.
Alternatively, dynamic translation looks at a short sequence
of code, typically on the order of a single basic
block,
translates it and caches the resulting sequence. Code is only
translated as it is discovered and when possible, branch instructions
are made to point to translated code.
Dynamic binary translation differs from simple emulation eliminating
the emulator's main read-decode-execute loop (a major performance
bottleneck), paying for this by large overhead during translation time.
This overhead is hopefully amortized as translated code sequences are
executed multiple times.
More advanced dynamic translators employ dynamic recompilation: the
translated code is instrumented to find out what portions are executed
a large number of times, and these portions are optimized aggressively. This
technique is reminiscent of a JIT compiler, and in fact such compilers (e.g.
Sun's HotSpot technology) can
be viewed as dynamic translators from a virtual instruction set (the bytecode)
to a real one.
- Apple Computer
implemented a dynamic translating emulator
for M68K code in their PowerPC
line of Macintoshes, which
achieved a very high level of reliability, performance and
compatibility (see Mac 68K emulator). This allowed Apple to
bring the machines to market with only a partially native operating system,
and end users could adopt the new, faster architecture without risking
their investment in software. Partly because the emulator was so
successful, many parts of the operating system remained emulated. A
full transition to a PowerPC native operating system (OS) was not made until
the release of Mac OS X (10.0) in 2001, and within this new OS
the "Classic" runtime environment still
offers the emulation capability on PowerPC Macs. Also, the Rosetta
translation layer included in releases of Mac OS 10.4 for Intel-based
Macs, which is used to ease the transition from the PPC to x86, is an
example of dynamic translation. Developed for Apple by Transitive, the
Rosetta software is an implementation of Transitive's QuickTransit
solution, which can be used to dynamically translate between platforms
that include SPARC, PowerPC, MIPS, Itanium and x86.
- DEC achieved similar success
with its translation tools to help users migrate from the CISC VAX
architecture to the DEC Alpha RISC architecture.
- In March 2006 Intel had announced plans to
support Transitive
Binary Translator on their future Itanium and Xeon CPU.
- In January 2000, Transmeta Corporation announced a novel
processor design named Crusoe. From the FAQ
on their web site, The smart microprocessor consists of a hardware VLIW
core as its engine and a software layer called Code Morphing software.
The Code Morphing software acts as a shell ... morphing or translating x86
instructions to native Crusoe instructions. In addition, the Code
Morphing software contains a dynamic compiler and code optimizer ...
The result is increased performance at the least amount of power. ...
[This] allows Transmeta to evolve the VLIW hardware and Code Morphing
software separately without affecting the huge base of software
applications. More info at arstechnica, geek.com.
[edit] See also
[edit] External links
|