IA-32 (Intel Architecture, 32-bit), often generically called x86 or x86-32, is the instruction set architecture of Intel's most commercially successful microprocessors. It is a 32-bit extension, first implemented in the Intel 80386, of the earlier 16-bit Intel 8086, 80186 and 80286 processors and the common denominator for all subsequent x86 designs. This architecture defines the instruction set for the family of microprocessors installed in the vast majority of personal computers in the world.
The longevity is partially due to full backward compatibility and the architecture has also recently been extended to 64-bits, without breaking compatibility. This is now called Intel 64 by Intel (generically called x86-64) and is basically unrelated to the 64-bit IA-64 architecture implemented in Intel's Itanium series.
The IA-32 instruction set is usually described as a CISC (Complex Instruction Set Computer) architecture, though such classifications have become less meaningful with advances in microprocessor design. Modern x86 microarchitectures such as K7, NetBurst, and newer, are often referred to as post-RISC processors.
The IA-32 instruction set was introduced in the Intel 80386
microprocessor in 1985
and remains the basis of most PC microprocessors over twenty years later. Even though the instruction set has remained intact, the successive generations of microprocessors that run it have become much faster. Within various programming language
directives, IA-32 is still sometimes referred to as the "i386" architecture.
Intel was the inventor and is the biggest supplier of IA-32 processors, but it is not the only supplier. The second biggest supplier is AMD. There are other suppliers, but their volumes are small. As of 2007, Intel is moving to x86-64, but still produces IA-32 processors such as Celeron M for laptops. VIA Technologies continues to produce the VIA C3/C7 family of "pure" IA-32 devices, and AMD still produces the Geode line and mobile IA-32 processors. For a time Transmeta produced IA-32 processors.
The IA-32 architecture was expanded by AMD in 2003 to natively support 64 bits, creating a new derivative x86-64 architecture. The first family of processors to support this architecture, which AMD calls AMD64, was the AMD K8 family of processors. This was the first time any company other than Intel made significant additions to the IA-32 architecture. Intel was forced to follow suit, introducing modified NetBurst family processors, initially referred to as "IA-32e" or "EM64T" and now called Intel 64 and almost identical to AMD64. x86-64 is backwards compatible with 32-bit code without any performance loss. For example, The Developers Manuals available from Intel on the IA-32 architecture refer to IA-32 and IA-32e in tandem.
The original IA-32 instruction set has been evolved over time with the addition of the matrix maths instruction updates. Many new architectures, including 64-bit ones, have since succeeded IA-32. However, the ultimate evolution of IA-32 was when it was extended again to 64-bits, but of course at that point it cannot be called IA-32 anymore; the 64-bit extension is called x86-64
. It could not be called IA-64
as Intel had already used this label for the Itanium
design (a design which is not really an evolution of the IA-32 architecture). AMD's AMD64
was the first x86-64 instruction set designed. Later, Intel followed by imitating AMD's design with what they call Intel 64
(formerly IA-32e and EM64T).
Intel's IA-64 architecture is not directly compatible with the IA-32 instruction set, despite having a similar name. It completely discards all IA-32 instructions, and starts from scratch with a completely different instruction set as well as using a VLIW
design instead of out-of-order execution
. IA-64 is the architecture used by the Itanium
line of processors. Itanium initially had hardware-support for IA-32, but it was very slow. Intel shifted to the use of a software emulator
instead. The nomenclature "IA-64" means "Intel Architecture, 64-bit", but the connection with IA-32 is only in the name.
Further improvements are:
- Sixteen times the number of general purpose registers (now 128)
- Sixteen times the number of floating point registers (now 128)
- Register rotation mechanism to keep values in registers over function calls
's AMD64 instruction set, initially called x86-64, is largely built on top of IA-32, and thus maintains the x86
family heritage, despite having a different name. While extending the instruction set, AMD took the opportunity to clean up some of the odd behavior of this instruction set that has existed since its earliest 16-bit days, while the processor is operating in 64-bit mode.
Further improvements are:
- Two times the number of general purpose registers (now 16)
- Two times the number of SSE registers (now 16)
- The general purpose registers are now truly general-purpose registers and are no longer restricted.
- Most of the functionality of the segment registers has been deprecated, since their usage has steadily declined even during the IA-32 days.
By February 2004, Intel announced the Intel 64
instruction set, formerly known as Yamhill
. It was derived from AMD's AMD64
. Intel 64 is generally compatible with code written for the AMD64, though it lacks some AMD64 features. Intel started using the set starting with the Xeon
Nocona core in late 2004, introducing it to the desktop market with the Pentium 4
E0 revision in early 2005.