Definition of x86 Platform in Network Encyclopedia.
What is x86 platform?
x86 is a computer platform whose processor is based on the Intel 386 architecture microprocessor. The x86, or Intel, platform is one of the two processor platforms supported by Microsoft Windows NT and above (the other being the Alpha platform) and the only processor platform supported by Microsoft Windows 2000. Intel-based systems have essentially caught up with Alpha in terms of speed and functionality and are used for everything from mobile laptop computers to desktop workstations to high-performance symmetric multiprocessing (SMP) servers.
The x86 family is based on the 386 processor and includes the 486, Pentium, Pentium Pro, Pentium II, and Pentium III processors. Intel processors are based on the CISC (complex instruction set computing) architecture, which uses a large set of basic processor instructions to simplify code compilation. The CISC architecture differs from the RISC (reduced instruction set computing) architecture of the Alpha platform, which uses fewer processor instructions and offers better performance.
Basic properties of the architecture
The x86 architecture is a variable instruction length, primarily “CISC” design with emphasis on backward compatibility. The instruction set is not typical CISC, however, but basically an extended version of the simple eight-bit 8008 and 8080 architectures. Byte-addressing is enabled and words are stored in memory with little-endian byte order. Memory access to unaligned addresses is allowed for all valid word sizes. The largest native size for integer arithmetic and memory addresses (or offsets) is 16, 32 or 64 bits depending on architecture generation (newer processors include direct support for smaller integers as well). Multiple scalar values can be handled simultaneously via the SIMD unit present in later generations, as described below. Immediate addressing offsets and immediate data may be expressed as 8-bit quantities for the frequently occurring cases or contexts where a -128..127 range is enough. Typical instructions are therefore 2 or 3 bytes in length (although some are much longer, and some are single-byte).
To further conserve encoding space, most registers are expressed in opcodes using three or four bits, the latter via an opcode prefix in 64-bit mode, while at most one operand to an instruction can be a memory location.[m] However, this memory operand may also be the destination (or a combined source and destination), while the other operand, the source, can be either register or immediate. Among other factors, this contributes to a code size that rivals eight-bit machines and enables efficient use of instruction cache memory. The relatively small number of general registers (also inherited from its 8-bit ancestors) has made register-relative addressing (using small immediate offsets) an important method of accessing operands, especially on the stack. Much work has therefore been invested in making such accesses as fast as register accesses, i.e. a one-cycle instruction throughput, in most circumstances where the accessed data is available in the top-level cache.
x86 floating point unit
Early x86 processors could be extended with floating-point hardware in the form of a series of floating point numerical co-processors with names like 8087, 80287 and 80387, abbreviated x87. This was also known as the NPX (Numeric Processor eXtension), an apt name since the coprocessors, while used mainly for floating-point calculations, also performed integer operations on both binary and decimal formats. With very few exceptions, the 80486 and subsequent x86 processors then integrated this x87 functionality on chip which made the x87 instructions a de facto integral part of the x86 instruction set.