| IA-32 Execution Layer | |
|---|---|
| Original author | Intel |
| Stable release | 5336 / 5.3.81.31.21 |
| Operating system | Linux,Windows Server |
| Type | Emulator |
| License | LGPL, Proprietary |
TheIA-32 Execution Layer (IA-32 EL) is a softwareemulator in the form of asoftware driver that improves performance of32-bit x86 applications running on64-bitIntelItanium-based systems, particularly those runningLinux andWindows Server 2003.Windows Server 2003 SP1 (for Itanium) and later include it; it can also be downloaded from Microsoft.[1] MostLinux distributions for Itanium also include it. Thex86 hardware emulation which was built into Itanium processors was notoriously slow, but Intel did not re-engineer it; after IA-32 EL appeared, Intel droppedx86 hardware emulation from Itanium, starting with theMontecito models in 2006.
The IA-32 EL uses a two-phase (later three-phase) approach: initially it quickly translated every piece of code at abasic block level, adding certain instrumentation for detectinghot code; then hot code was dynamically optimized at a super-block level, and the optimized translated code replaced cold code on the fly.[2] Later interpretation engine was added that allowed to avoid altogether translation of code executed just a few times - cold non-optimized translation became thus the second phase, and hot optimized translation became the third phase. IA-32 Execution Layer supportedself-modifying code, and could even optimize it quite well.
Part of the software is under theLGPL and part is under an Intel proprietary license.[3]