X86
x86 is the abbreviation of a microprocessor architecture and the associated instruction sets, which are developed by the chip manufacturers Intel and AMD, among others.
The x86 instruction set architecture (ISA for short) is named after the processors of the 8086/8088 series, with which it was introduced in 1978. The first successor processors were later named 80186, 80286, and so on. Thus, in the 1980s, it was referred to as the 80x86 architecture - later the "80" was dropped from the beginning. The x86 architecture has since expanded with each processor generation and was already a 32-bit architecture with the 80386 in 1985, which was also explicitly called i386.
During the development of the Itanium, Intel retronymically renamed the x86 architecture, which was a 32-bit architecture at the time, to "Intel Architecture 32-bit", abbreviated IA-32. The retronymic designation IA-16 for the 16-bit architecture of the 8086/80286 is also known, but was not widely used. On the other hand, the old designations "x86" and "i386" (for 32-bit x86) continued to be used.
Intel called the architecture of the independently developed and incompatible Itanium IA-64, which can also lead to confusion because AMD also made the instruction set architecture IA-32 a 64-bit architecture with the 64-bit instruction set extension AMD64, which was available for the first time in 2003. Intel itself followed suit with Intel 64 2005; in doing so, Intel 64 is compatible with AMD64. Modern 64-bit x86 processors can thus still be described as belonging to the IA-32 architecture, although this has been ambiguous since then. In order to be able to distinguish 32- and 64-bit from each other, the designation "x64" (for x86 with 64 bits) was introduced in the style of "x86" for the 64-bit mode. The retronym "x32" (for x86 with 32 bits) is rather rare and ambiguous, because it can be either a 32-bit x86 processor (mode) or 32-bit addressing on a 64-bit processor running in 64-bit mode.
Since number combinations cannot be trademarked, Intel and most competitors switched to using word marks such as Pentium or Celeron (Intel) or Athlon or Phenom (AMD) after the introduction of the 80486, but the old numbering scheme remained as the name of the whole family.
Processor Intel i8086 in housing form DIP-40.
The Intel i8088 has only an 8 bit wide data bus compared to the i8086 and was used in the IBM PC.
History
The x86 architecture was introduced in 1978 with Intel's first 16-bit CPU, the 8086, which was intended to replace the older 8-bit 8080 and 8085 processors. Although the 8086 was not particularly successful initially, IBM introduced the first PC in 1981 that used a stripped-down variant of the 8086, the 8088, as its CPU. Due to the enormous success of the IBM PC and its numerous replicas, the so-called IBM PC-compatible PCs, the x86 architecture became one of the most successful CPU architectures in the world within a few years and has remained so to this day.
In addition to Intel, other manufacturers have produced x86-compatible CPUs under license over the years, including Cyrix (now VIA Technologies), NEC, UMC, Harris, TI, IBM, IDT, and Transmeta. However, the largest manufacturer of x86-compatible processors after Intel was and still is the company AMD, which, along with Intel, has become a driving force in the further development of the x86 standard today.
Intel developed the 8086 in 1978 during the end of the 8-bit era. With the 80386, Intel introduced the first x86 CPU with a 32-bit architecture as early as 1985. Today this architecture is known as IA-32 (as 32-bit architecture also under the name "i386"); it is, so to speak, the extension of the instruction sets of 8086 and 80286 to 32 bits, but includes their instruction sets completely. The 32-bit era was the longest and most lucrative period of x86 history to date, with IA-32 - largely under Intel's leadership - undergoing permanent further development.
The 64-bit era dawned for x86 from 1999, but this time on the initiative of AMD. The 64-bit x86 standard was given the designation x64 or x86-64, was introduced by AMD in 2003 as AMD64 and was also adopted by Intel under the name Intel 64 in 2005.
The IA-64 architecture used by Intel and HP in the Itanium product line has nothing to do with IA-32 - including x64. It is a new development that does not contain any traces of x86 technology except for an x86 emulation (only in the oldest Itanium series). In contrast, IA-32 with the 64-bit extension x64 is still fully backward compatible with 32- and 16-bit x86.
Nomenclature
The x86 architecture has evolved from a 16-bit to a 32-bit and finally to a 64-bit architecture. The nomenclature has grown historically and the designation x86 alone therefore usually stands for the variant currently in use at the time.
Designation | Architecture |
x86-16 | 16-bit x86 architecture of the 8086. |
x86-32 | 32-bit x86 architecture of the 80386. |
x86-64 | 64-bit x86 architecture of the Opteron. |
Problems arise in the historical context. For example, "x86" can also refer to the entire architecture since the 8086, but not always, because it has also been used to distinguish the 64-bit extension "x64" for the 32-bit extension since the i386. This is found, for example, in the Windows operating system (Windows Vista and later), which uses the designation "x86-based processor" in the 32-bit x86 version, and "x64-based processor" in the 64-bit x86 version. The very first versions of Windows were DOS-based graphical overlays and thus also, like PC-compatible DOS, 16-bit versions that could take advantage of some of the benefits of 80386 processors from Windows /386 2.0x onwards.
Mostly x86 alone therefore denotes the 32-bit x86 architecture from the i386 onwards. For historical purposes, the retronym x86-16 has become established for the 16-bit x86 architecture.
Naming according to instruction set extension
Since the instruction set was constantly expanding, one can only assume a minimum required instruction set when talking about an x86 instruction set architecture - or the current state in each case, with all possible extensions. On this point, the designation "x86" is very ambiguous. A certain convention has therefore emerged in the naming, which is justified by the historical development.
Year | first appointment | Alternative names | Command set | Operating modes |
1972 | IA-8 | - – | "Intel Architecture 8-bit" - unofficial, retronymic designation of the 8-bit 8080, the predecessor of the 8086. This instruction set architecture is not x86 compatible. | |
1978 | 8086 | 80x86, x86 | Processors and instruction set architectures compatible with the Intel 8086 and 8088. | real mode |
1982 | 80286 | i286 | Processors and instruction set architectures compatible with the 80286. | additional 16-Bit-Protected-Mode |
IA-16 | x86, x86-16 | "Intel Architecture 16-bit" - little-used retronymic designation of 16-bit x86 by Intel, i.e. the instruction set of the 8086 (Real Mode) and the 80286 (16-bit Protected Mode). The designation x86 includes in any case also the 16-bit processor mode Real Mode and is more common than IA-16, for clear differentiation retronym is found partly x86-16. | ||
1985 | i386 | IA-32, x86-32 | 32-bit instruction set extension and addressing introduced with the 80386. | additionally 32-Bit-Protected Mode, Virtual 8086 Mode |
1989 | i486 | - – | Processors and instruction set architectures compatible with the 80486, including the math coprocessor (i486DX). | |
x87 | 8087, 80x87 | The floating-point unit (FPU) as a separate mathematical coprocessor for the 8086/8088 (8087), the 80286 (80287), and the i386 (80387 or i387). Starting with the i486DX, the floating-point unit is part of the processor, except for the i486SX (80487 or i487, the last separate FPU). | ||
1993 | i586 | - – | Processors and instruction set architectures compatible with the Pentium. | like i386 and i486, new (optional) SIMD functions |
1995 | i686 | P6 | Processors and instruction set architectures compatible with the Pentium Pro (1995) or Pentium II (1997). The Pentium II already supports the MMX extension, so i686 often additionally uses the vector acceleration instructions if they are available. | |
IA-32 | (x32) | "Intel Architecture 32-bit" - retronymic designation of 32-bit x86, i.e. the 80386 (32-bit protected mode) instruction set. "x32" is a retronyms designation for 32-bit x86 (derived from "x64" for 64-bit x86), but is not widely used and is also ambiguous, as there is also 32-bit addressing within x64 mode (such as the x32 ABI in Linux). "x86-32" is sometimes used to refer to a 32-bit processor (following "x86-64" for 64-bit x86 processors "x64", which are also IA-32). | ||
2003 | amd64 | x86-64 | Processors and instruction set architectures that are compatible with the AMD64 64-bit instruction set of the Opteron and Athlon 64. These include at least the MMX, SSE and SSE2 instruction set extensions as well as x87 and the NX bit. The Virtual 8086 Mode is missing in the 32-bit Long Mode. | Legacy Mode: like i386; Long Mode: 64-bit Mode and (32-bit) Compatibility Mode; SIMD extensions |
x64 | x86-64, amd64 | x64 was introduced by Microsoft and Sun to distinguish pure 32-bit x86 from 64-bit x86, i.e. IA-32 with AMD64 or Intel 64. The abbreviation "x32" also stands for 32-bit addressing within the 64-bit long mode and is part of x64 (64-bit x86). |
While the instruction set architecture x86 is the most imprecise designation, the more precise designations listed still do not precisely characterize the existing machine instructions (required by a software) or the exact integrated instruction set in the processor. Under Linux, for example, the specification "i686-pae" has become accepted for the PentiumII instruction set ‑with PAE. GParted, for example, had a 32-bit ISO image each for "i486" and for "i686-pae" - if a processor did not have the PAE flag (such as the first Pentium M), one had to fall back on the i486 variant. Also under Windows it is not clear if the 64-bit variant actually runs on an older 64-bit x86 processor (with AMD64 or Intel-64 extension), because starting with Windows 8.1 the functions CMPXCHG16b
, PrefetchW
and LAHF/SAHF have
to be present in addition to the x64 instruction set extension.