Copyright © Philip M. Parker, INSEAD. Terms of Use.

X86

Specialty Definition: X86

DomainDefinition

Computing

X86 A common abbreviation for any of the Intel 80x86 range, or compatibles, e.g. from Cyrix or AMD. (1999-08-29). Source: The Free On-line Dictionary of Computing.

Source: compiled by the editor from various references; see credits.

Top     

Specialty Definition: X86

(From Wikipedia, the free Encyclopedia)

x86 or Intel 80x86 is the generic name of an architecture of microprocessors first developed and manufactured by Intel, also manufactured at various stages by AMD, Cyrix, NEC, Transmeta (that uses it in PDAs too, see Crusoe) (arguably) and sundry other makers at various stages in its nearly 25-year history.

In addition to basic architecture itself, these names are also used to describe a family of particular microprocessors manufactured by Intel, including the Intel 8086, Intel 80186, Intel 80286, Intel 80386, Intel 80486, Pentium, Pentium Pro, Pentium II, Pentium III and Pentium 4. The architecture of Intel's 32-bit x86 processors is sometimes known as IA-32.

Intel's IA-64 architecture used in its Itanium processors is related to x86, but incompatible with its instruction set. AMD's x86-64 is backward-compatible with x86.

History

The x86 architecture first appeared inside the Intel 8086 CPU in 1978. It was adopted (in the simpler 8088 version) three years later as the standard CPU of the IBM PC. The PC's enormous success during the last 20 years has guaranteed that the x86 architecture that became the most popular CPU architecture ever. See also Intel.

Design

It can be generalized that the x86 architecture is CISC with variable instruction length. Memory is aligned by byte boundaries. Information is stored in the little-endian order. Backwards compatibility was a driving force behind the development of the x86 architecture, that caused numerous sub-optimal and otherwise unjustifiable design decisions.

Note that the names for instructions and registers (mnemonics) that appear in this brief review are the ones specified in Intel documentation and used by some of the assemblers, however they are still arbitrary. An instruction that is specified in TASM syntax by mov al, 30h is equivalent to AT&T-syntax movb $0x30, %al, and both translate to the two bytes of machine code B0 30 (hexadecimal). You can see that there is no trace left in this code of either "mov" or "al", which are the original Intel mnemonics. If we wanted, we could write an assembler that would produce the same machine code from the command "move immediate byte hexadecimally encoded 30 into low half of the first register". However, the convention is to stick to Intel's original mnemonics.

The x86 assembly language is discussed in more detail in the x86 assembly language article.

Real mode

Intel 8086 and 8088 had 14 16-bit registers. Four of them (AX, BX, CX, DX) were general purpose (although each had also an additional purpose; for example only CX can be used as a counter with the loop instruction). Each could be accessed as two separate bytes (thus BX's high byte can be accessed as BH and low byte as BL). In addition to them, there are 4 segment registers (CS, DS, SS and ES). They are used to form a memory address. There are 2 pointer registers (SP which points to the bottom of the stack, and BP which can be used to point at some other place in the stack or the memory). There are two index registers (SI and DI) which can be used to point inside an array. Finally, there are the flag register (containing flags such as carry, overflow, zero and so on), and the instruction pointer (IP) which points at the current instruction. Both can't be changed directly.

In real mode, memory access is segmented. This is done by shifting the segment address left by 4 bits and adding an offset in order to receive a final 20-bit address. Thus the total address space in real mode is 220 bits, or 1 MB, quite an impressive figure for 1978. There are two addressing modes: near and far. In far mode, both the segment and the offset are specified. In near mode, only the offset is specified, and the segment is taken from the appropriate register. For data the register is DS, for code is CS, and for stack it is SS. For example, if DS is A000h and SI is 5677h, DS:SI will point at the absolute address DS × 16 + SI = A5677h.

In this scheme, two different segment/offset pairs can point at a single absolute location. Thus, if DS is A111h and SI is 4567h, DS:SI will point at the same A5677h as above. In addition to duplicacy, this scheme also makes it impossible to have more than 4 segments at once. Moreover, CS, DS and SS are vital for the correct functioning of the program, so that only ES can be used to point somewhere else. This scheme, which was intended as a compatibility measure with the Intel 8085 has caused no end of grief to programmers.

In addition to the above-said, the 8086 also had 64K of 8-bit (or alternatively 32K of 16-bit) I/O space, and support for up to 256 interrupts. A 64K (one segment) stack in memory is supported by hardware. Only words (2 bytes) can be pushed to the stack. The stack grows downwards, its bottom being pointed by SS:SP. There are 256 interrupts, which can be created by both the hardware and the software. The interrupts can cascade, using the stack to store the return address.

Protected and Enhanced Modes

The Intel 80286 could support 8086 Real Mode 16-bit software without any changes, however it also supported another mode of work called the Protected Mode, which expanded addressable memory to 16MB. This was done by using the segment registers only for storing an index to a segment table. The segment table provided a 24-bit base address, which could then be added to the desired offset to create an absolute address. In addition, each segment could be given one of four privilege levels (called the rings). Overall, the introductions were an improvements; however they were not used widely per se because using Protected Mode made software incompatible with the Real Mode of 8086.

The Intel 80386 introduced, perhaps, the greatest leap so far in the x86 architecture. It was 32-bit - all the registers, instructions, I/O space and memory. To work with the latter, it used Enhanced Mode, a 32-bit extension of Protected Mode. As it was in the 286, segment registers were used to index inside a segment table that described the division of memory. Unlike the 286, however, inside each segment one could use 32-bit offsets, which allowed every application to access up to 4GB of memory. In addition, Enhanced Mode supported paging, a mechanism which made it possible to use virtual memory.

No new general-purpose registers were added. All 16-bit registers except the segment ones were expanded to 32 bits. Intel represented this by adding "E" to the register mnemonics (thus the expanded AX became EAX, SI became ESI and so on). Since there was a greater number of registers, instructions and operands, the machine code format was expanded as well. In order to provide backwards compatibility, the segments which contain executable code can be marked as containing either 16 or 32 bit instructions. In addition, a special byte prefix can be used to include 32-bit instructions in a 16-bit segment and vice versa.

Paging and segmented memory access were both required in order to support a modern multitasking operating system. Linux, 386BSD, Windows NT and Windows 95 were all initially developed for the 386, because it was the first CPU that made it possible to reliably support the separation of programs' memory space (each into its own address space) and the preemption of them in the case of necesity (using rings). The basic architecture of the 386 (which is also called IA-32) became the basis of all further development in the x86 series, and no significant changes have been made to it since, thus exemplifying the elegance and scalability of the 386's design.

The Intel 80387 math co-processor was integrated into the next CPU in the series, the Intel 80486. The new FPU could be used to make floating point calculations, important for scientific calculation and graphic design.

MMX and beyond

1996 saw the appearance of the MMX (Multimedia Extensions) technology by Intel. While the new technology has been advertised widely and vaguely, its essence is very simple: MMX added 8 64-bit registers to the Intel Pentium CPU design. Instructions were added to the CPU so that it could support moving the registers' contents from and to the memory, and perform arithmetic operations upon them more quickly and with more convenience than before.

While MMX itself was not a ground-breaking success, it overcame to an extent the x86 architecture's greatest deficiency: the lack of general-purpose registers (only 4 to 6, depending on the task, when some architectures offer up to 128!). The additional registers could be used to store extra variables, perform vector transformations and do all sorts of useful calculations with registers, that would otherwise have to be much slower due to the need to continuously access the variables in memory. Thus, while a very-well optimised assembly code could run almost as fast as MMX, its presence made generic programming (without spending much time on optimisations) much easier.

SSE

64-bit

As of 2002, the x86 architecture has begun to reach some design limits due to the 32-bit word length. This makes it more difficult to handle massive information stores larger than 4 GB such as those found in databases.

Intel and AMD appear to be planning different strategies for the transition to 64-bit architectures. AMD is planning on a generation of chips known as x86-64 (or Hammer) which are compatible with 32-bit x86 chips. Publicly, Intel has stated that it is abandoning the x86 architecture for the radically different Itanium chips. There are rumors that Intel is secretly designing a 64-bit x86 chip to compete with Hammer should AMD begin to capture market share.

Manufacturers

x86 and compatibles have been manufactured by a number of companies, including: This article (or an earlier version of it) contains material from FOLDOC, used with permission.

Source: adapted by the editor from Wikipedia, the free encyclopedia under a copyleft GNU Free Documentation License (GFDL) from the article "X86."

Top     

Crosswords: X86

Specialty definitions using "X86": Athlonfdlibm, flat address spaceSocket 1, Socket 2, Socket 3, Socket 4, Socket 5, Socket 6, Socket 7, Socket 8, System VWindows 2000x86 processor socket, XFree86 Project, Inc.. (references)

Top     

Usage Frequency: X86

"X86" is generally used as an unclassified items -- approximately 79.59% of the time. "X86" is used about 49 times out of a sample of 100 million words spoken or written in English. Its rank is based on over 700,000 words used in the English language. Some parts-of-speech are not covered due to the samples used by the British National Corpus. (note: percents less than one-hundredth of one percent have been omitted)
Parts of SpeechPercentUsage per
100 Million Words
Rank in English
Unclassified Items79.59%3955,036
Alphabetical Symbol20.41%10111,207
                    Total100.00%49N/A

Source: compiled by the editor from several corpora; see credits.

Top     

Expression: X86

Expression using "X86": x86 processor socket. Additional references.

Source: compiled by the editor from various references; see credits.

Top     

Frequency of Internet Keywords: X86

The following statistics estimate the number of searches per day across the major English-language search engines as identified by various trade publications. Hyperlinks lead to commercial use of the expression at Amazon.com.
 
ExpressionFrequency
per Day
ExpressionFrequency
per Day

x86

56

architecture intel x86

4

enu.exe sp1 wxp x86

15

cab iuctl.cab unicode v4.windowsupdate.microsoft.com x86

4

intel itanium x86

12

emulator x86

4

6 6 8 family model stepping x86

12

x86 family 6

4

msdn.microsoft.com scriptcontrol scripting sct10en.exe x86

12

x86 family

4

sp2 w2k x86

10

16 bit multiplication x86

3

solaris x86

9

enu.exe q318365 sp1 wxp x86

3

1.4 3stages gentoo rc4.iso x86

8

en x86 xpsp1a

3

0 4 5 cyrix family model processor stepping x86

7

enu.exe q321178 sp1 wxp x86

3

enu.exe q323183 sp2 wxp x86

7

3.20 full.exe q2 x86

3

3.20 ctf.exe full q2 x86

6

3.3.7 vnc win32.exe x86

3

enu.exe sp2 wxp x86

6

4 architecture creating ipv linux stack x86

3

x86 processor

6

enu q306676 sp1 wxp x86

3

10 6 8 family model stepping x86

6

15 family x86

3

solaris x86 download

6

1.4 index livecd rc4 release x86 x86

3

darwin x86

6

memtest x86

3

enu.exe q306676 sp1 wxp x86

5

en x86 xpsp1

3

6 8 family model x86

5

osx x86

3

intel x86

5

based pc x86

3

x86 instruction set

4

eng.exe fpse02 x86

3

mp ui x86.dl

3
Source: compiled by the editor from various references; see credits.

Top     

Alternative Orthography: X86


Hexadecimal (or equivalents, 770AD-1900s) (references)

58 38 36

Leonardo da Vinci (1452-1519; backwards) (references)

Binary Code (1918-1938, probably earlier) (references)

01011000 00111000 00110110

HTML Code (1990) (references)

&#88 &#56 &#54

ISO 10646 (1991-1993) (references)

0058 0038 0036

Encryption (beginner's substitution cypher): (references)

582624

Top     



INDEX

1. Crosswords
2. Usage Frequency
3. Expressions
4. Expressions: Internet
5. Orthography
6. Bibliography


  

Copyright © Philip M. Parker, INSEAD. Terms of Use.