Fat binary
|
A fat binary (or multiarchitecture binary) is a computer program that is native to multiple instruction set architectures (ISA) and thus can be run on multiple processor types. The usual method of implementation is to include a version of the machine code for each ISA, resulting in a file n times larger than a normal one-architecture binary, thus the name.
One popular occurrence of fat binaries was on the Apple Macintosh PowerPC, where a program would contain both 68000 instructions and PowerPC instructions. This was accomplished by putting the PowerPC code (in PEF format) into the data fork of the program, while the 68000 code continued to be stored as resources in the resource fork.
Fat binaries will also be used for the transition from PPC to Intel Pentiums in 2006 and 2007. Apple has chosen to call these binaries "Universal Binaries," perhaps to distinguish this new processor transition from the 68K to PowerPC transition.
The Mach-O object file format used in NeXT's NeXTSTEP and OPENSTEP operating systems supports fat binaries, which allows software on a NeXT Cube to be compiled and run on an Intel machine running NeXTSTEP, and so on. The technology is also available in Darwin (Mac OS X), where it can be used to support multiple variants of an architecture, for instance to have different versions of code compiled for PowerPC G3, PowerPC G4, and PowerPC G5 processors.
Fat binary support is not commonplace among operating systems; there are several alternatives to solve the same problem, such as the use of an installer program to choose an architecture-specific binary at install time, or the use of a virtual machine and Just In Time compilation.