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. In some cases such as instruction set simulation, the target instruction set may be the same as the source instruction set, providing testing and debugging features such as instruction trace, conditional breakpoints and hot spot detection.
The two main types are static and dynamic binary translation.
Contents |
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.
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 already translated and saved code (memoization).
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 where 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 X 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 Alpha RISC architecture.
- In March 2006 Intel had announced plans to support Transitive Binary Translator on their future Itanium and Xeon CPU.
- Sun, IBM and SGI[1] are also utilizing QuickTransit by Transitive. SPARC→x86 in Sun's case, x86→Power Architecture in IBM's (called PowerVM Lx86), and MIPS→Itanium2 in SGI's.
- 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.
- HP ARIES (Automatic Re-translation and Integrated Environment Simulation) is a dynamic binary translation system that combines fast code interpretation with two phase dynamic translation to transparently and accurately execute HP 9000 HP-UX applications on HP-UX 11i for HP Integrity servers. The ARIES fast interpreter emulates a complete set of non-privileged PA-RISC instructions with no user intervention. During interpretation, it monitors the applications execution pattern and translates only the frequently executed code into native Itanium code at runtime. ARIES implements two phase dynamic translation, a technique in which translated code in first phase collects runtime profile information which is used during second phase translation to further optimize the translated code. ARIES stores the dynamically translated code in memory buffer called code cache. Further references to translated basic blocks execute directly in the code cache and do not require additional interpretation or translation. The targets of translated code blocks are back-patched to ensure execution takes place in code cache most of the time. At the end of the emulation, ARIES discards all the translated code without modifying the original application. The ARIES emulation engine also implements Environment Emulation which emulates an HP 9000 HP-UX application's system calls, signal delivery, exception management, threads management, emulation of HP GDB for debugging, and core file creation for the application.
- Some test & debugging systems dating back to the 1970s such as "Oliver", utilized dynamic binary translation to provide breakpoint, storage protection, trace, program animation and other features for IBM/360/370/390/ES9000 platforms.
See also
- Comparison of platform virtual machines
- Emulator
- Instruction set simulator
- Just-in-time compilation
- Virtual machine
References
External links
- http://www.transitive.com
- http://bellard.org/qemu/
- http://www.itee.uq.edu.au/~csmweb/decompilation/bintrans.html (somewhat dated)
- http://www.gtoal.com/sbt/ Static Binary Translation HOWTO
- http://www.itee.uq.edu.au/~cristina/uqbt.html University of Queensland Binary Translator
- http://www.experimentalstuff.com/Technologies/Walkabout/ Walkabout - Binary Translation research by Sun and University collaborators
- http://csdl.computer.org/comp/mags/mi/1998/02/m2056abs.htm - FX!32, an x86 to Alpha binary translator developed by DEC
- http://www.hp.com/go/aries
This entry is from Wikipedia, the leading user-contributed encyclopedia. It may not have been reviewed by professional editors (see full disclaimer)




