All Topics  
X86 architecture

 

   Email Print
   Bookmark   Link






 

X86 architecture



 
 
The generic term x86 refers to the most commercially successful instruction set architecture in the history of personal computing. It derived from the model numbers, ending in "86", of the first few processor generations backward compatible
Backward compatibility

In technology, for example in telecommunications and computing, a device or technology is said to be backwards compatible if it allows input generated by older devices....
 with the original Intel 8086
Intel 8086

The 8086 is a 16-bit microprocessor chip designed by Intel and introduced on the market in 1978, which gave rise to the x86 architecture. Intel 8088, released in 1979, was essentially the same chip, but with an external 8-bit bus , and is notable as the processor used in the original IBM PC....
.






Discussion
Ask a question about 'X86 architecture'
Start a new discussion about 'X86 architecture'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Slot A Athlon
The generic term x86 refers to the most commercially successful instruction set architecture in the history of personal computing. It derived from the model numbers, ending in "86", of the first few processor generations backward compatible
Backward compatibility

In technology, for example in telecommunications and computing, a device or technology is said to be backwards compatible if it allows input generated by older devices....
 with the original Intel 8086
Intel 8086

The 8086 is a 16-bit microprocessor chip designed by Intel and introduced on the market in 1978, which gave rise to the x86 architecture. Intel 8088, released in 1979, was essentially the same chip, but with an external 8-bit bus , and is notable as the processor used in the original IBM PC....
. Since then, many additions and extensions have been added to the x86 instruction set, almost consistently with full backwards compatibility. The architecture has been implemented in processors from Intel
Intel Corporation

Intel Corporation is the world's largest semiconductor company and the inventor of the X86 architecture series of microprocessors, the processors found in most personal computers....
, Cyrix
Cyrix

Cyrix was a Central processing unit manufacturer that began in 1988 in Richardson, Texas as a specialist supplier of high-performance math coprocessors for Intel 80286 and Intel 80386 systems....
, AMD
Advanced Micro Devices

Advanced Micro Devices, Inc. is an United States multinational corporation semiconductor industry company based in Sunnyvale, California, that develops Central processing unit and related technologies for commercial and consumer markets....
, VIA
VIA Technologies

VIA Technologies is a Taiwanese manufacturer of integrated circuits, mainly motherboard chipsets, Central processing unit, and computer memory, and is part of the Formosa Plastics Group....
, and many others.

As the x86 term became common after the introduction of the 80386, it usually implies a binary compatibility with the 32-bit instruction set
Instruction set

An instruction set is a list of all the instruction , and all their variations, that a processor can execute.Instructions include:* Arithmetic such as add and subtract...
 of the 80386. This may sometimes be emphasized as x86-32 to distinguish it either from the original 16-bit x86-16 or from the newer 64-bit x86-64
X86-64

x86-64 is a superset of the x86. x86-64 Central processing units can run existing 32-bit or 16-bit x86 programs at full speed, but also support new programs written with a 64-bit address space and other additional capabilities....
 (also called x64). Although most x86 processors used in new personal computer
Personal computer

A personal computer is any general-purpose computer whose original sales price, size, and capabilities make it useful for individuals, and which is intended to be operated directly by an end user, with no intervening computer operator....
s and server
Server

Server may refer to:In computing:*Server , a server application, operating system, computer, or appliance**Application server, a server dedicated to running certain software applications...
s have 64-bit capabilities, to avoid compatibility problems with older computers or systems, the term x86-64 is often used to denote 64-bit software, with the term x86 implying only 32-bit.

Today, the x86 architecture is ubiquitous among desktop and notebook computers, as well as a growing majority among servers and workstations. A large amount of software
Computer software

Computer software, or just software is a general term used to describe a collection of computer programs, Algorithm and Software documentation that perform some tasks on a computer system....
 supports the platform, including OS
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s such as MS-DOS
MS-DOS

MS-DOS is an operating system commercialized by Microsoft. It was the most commonly used member of the DOS family of operating systems and was the main operating system for personal computers during the 1980s....
, Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
, Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
, BSD, Solaris, and Mac OS X
Mac OS X

Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
. The architecture is relatively uncommon in embedded systems and low-cost niches such as appliance
Appliance

Appliance may refer to a device with a narrow Function :* Home appliance, household machines, using electricity or some other energy input.** Small appliances...
s and toys lack any significant x86 presence. Simpler 16-bit x86 chips are more common here, but AMD
Advanced Micro Devices

Advanced Micro Devices, Inc. is an United States multinational corporation semiconductor industry company based in Sunnyvale, California, that develops Central processing unit and related technologies for commercial and consumer markets....
's Geode
Geode (processor)

Geode is a series of x86-compatible System-on-a-chip microprocessors and I/O companions produced by AMD targeted at the Embedded system market....
 and the new Intel Atom
Intel Atom

Intel Atom is the brand name for a line of x86 and x86-64 CPUs from Intel, previously List of Intel codenames Silverthorne and Diamondville processors, designed for a 45 nm CMOS process and intended for use in MIDs, smart phones and ultra-mobile PCs meant for portable and low-power applications....
 are examples of 32-bit designs used in this segment.

Contrary to some popular belief, x86 is not synonymous with IBM PC compatibility
IBM PC compatible

IBM PC compatible computers are those generally similar to the original IBM Personal Computer, IBM Personal Computer XT, and IBM Personal Computer/AT....
 as this also implies a multitude of other hardware, albeit with some of it standardized. For instance, the original Xbox
Xbox

The Xbox is a History of video games video game console produced by Microsoft. It was Microsoft's first foray into the gaming console market, and competed with Sony's PlayStation 2 and Nintendo's GameCube....
 was designed around an x86 processor but security restrictions led to software requirements making it incapable of simply running standard code designed for other IBM PC compatible systems. Also, the GRID Compass
GRiD Compass

The Grid Compass 1100 was arguably the first laptop computer, introduced in April 1982.The computer was designed by United Kingdom industrial designer Bill Moggridge in 1979, and first sold three years later....
 laptop (one of the first on the market), and many others, used x86 chips before the IBM PC compatible market even started.

Chronology

The table below lists brands of common consumer targeted processors implementing the x86 instruction set
Instruction set

An instruction set is a list of all the instruction , and all their variations, that a processor can execute.Instructions include:* Arithmetic such as add and subtract...
, grouped by generations that highlight important points in x86 history. Note: CPU generations are not strict - each generation is roughly marked by significantly improved or commercially successful processor microarchitecture
Microarchitecture

In computer engineering, microarchitecture is a description of the electrical circuitry of a computer, central processing unit, or digital signal processor that is sufficient for completely describing the operation of the hardware....
 designs.


Generation First introduced Prominent Consumer CPU brands linear / physical address space Notable (new) features
1 1978 Intel 8086
Intel 8086

The 8086 is a 16-bit microprocessor chip designed by Intel and introduced on the market in 1978, which gave rise to the x86 architecture. Intel 8088, released in 1979, was essentially the same chip, but with an external 8-bit bus , and is notable as the processor used in the original IBM PC....
, Intel 8088
Intel 8088

The Intel 8088 is an Intel x86 microprocessor based on the Intel 8086, with 16-bit registers and an 8-bit external data bus. It can address up to 1 megabyte of random access memory....
 
16-bit / 20-bit (segmented) first x86 microprocessors
2 1982 Intel 80186
Intel 80186

The 80186 is a microprocessor that was developed by Intel circa 1982. The 80186 was an improvement on the Intel 8086 and Intel 8088. As with the 8086, it had a 16-bit external bus and was also available as the Intel 80188, with an 8-bit external data bus....
, Intel 80188
Intel 80188

The Intel 80188 is a version of the Intel 80186 microprocessor with an 8 bit external data bus, instead of 16 bit. This makes it less expensive to connect to computer peripheral....
, NEC V20
NEC V20

The NEC V20 was a central processing unit made by NEC Corporation that was a Reverse engineering, pin-compatible version of the Intel 8088 with an instruction set compatible with the Intel 80186....
 
hardware for fast address
Address

Address may refer to:*A memory address, a unique identifier for a memory location at which a computer can store a piece of data for later retrieval...
 calculations, fast mul/div etc
Intel 80286
Intel 80286

The Intel 286, introduced on February 1, 1982, was an x86 16-bit microprocessor with 134,000 transistors.It was widely used in IBM PC compatible computers during the mid 1980s to early 1990s....
 
16-bit (30-bit virtual) / 24-bit (segmented) MMU
Memory management unit

A memory management unit , sometimes called paged memory management unit , is a computer hardware component responsible for handling accesses to computer memory requested by the central processing unit ....
, for protected mode
Protected mode

In computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units ....
 and a larger address space
Address space

In computing, an address space defines a range of discrete addresses, each of which may correspond to a physical or virtual memory register, a Node , peripheral device, disk sector or other logical or physical entity....
3 (IA-32
IA-32

IA-32 , often generically called x86 or x86-32, is the instruction set architecture of Intel's most commercially successful microprocessors....
)
1985 Intel386
Intel 80386

The Intel 80386, otherwise known as the i386 or just 386, is a microprocessor which has been used as the central processing unit of many personal computers and workstations since 1986....
, AMD Am386
32-bit (46-bit virtual) / 32-bit 32-bit
32-bit

The range of integer values that can be stored in 32 bits is 0 through 4,294,967,295 or -2,147,483,648 through 2,147,483,647 using two's complement encoding....
 instruction set
Instruction set

An instruction set is a list of all the instruction , and all their variations, that a processor can execute.Instructions include:* Arithmetic such as add and subtract...
, MMU with paging
4 1989 Intel486 risc-like pipelining, integrated FPU
Floating point unit

A floating-point unit is a part of a computer system specially designed to carry out operations on floating point numbers. Typical operations are addition, subtraction, multiplication, division , and square root....
, on-chip cache
CPU cache

A CPU cache is a cache used by the central processing unit of a computer to reduce the average time to access computer storage. The cache is a smaller, faster memory which stores copies of the data from the most frequently used main memory locations....
5 1993 Pentium
Pentium

Introduced on March 22, 1993, the original Pentium was the first superscalar x86 architecture microprocessor. Its fifth-generation x86 microarchitecture was a direct extension of the 80486 architecture with dual integer pipeline s, a faster FPU unit, wider data bus, and features for further reduced address calculation latency....
, Pentium MMX
superscalar
Superscalar

A superscalar Central processing unit architecture implements a form of parallel computer called instruction level parallelism within a single processor....
, 64-bit
64-bit

64-bit CPUs have existed in supercomputers since the 1960s and in RISC-based computer workstation and Server s since the early 1990s. In 2003 they were introduced to the mainstream personal computer arena, in the form of the x86-64 and 64-bit PowerPC processor architectures....
 databus, faster FPU, MMX
5/6 1996 Cyrix 6x86
Cyrix 6x86

The Cyrix 6x86 is a sixth-generation, 32-bit 80x86-compatible microprocessor designed by Cyrix and manufactured by International Business Machines and SGS-Thomson....
, Cyrix MII
register renaming
Register renaming

In computer engineering, register renaming refers to a technique usedto avoid unnecessary serialization of program operations imposed by the reuse...
, speculative execution
Speculative execution

In computer science, speculative execution is the execution of Code , the result of which may not be needed. In the context of functional programming, the term "speculative evaluation" is used instead....
6 1995 Pentium Pro
Pentium Pro

The Pentium Pro is a sixth-generation x86-based microprocessor developed and manufactured by Intel introduced in November 1995. It introduced the Intel P6 and was originally intended to replace the original Pentium in a full range of applications....
, AMD K5
AMD K5

The K5 was Advanced Micro Devices first X86 architecture processor to be developed entirely in-house. Introduced in March 1996, its primary competition was Intel Corporation Pentium microprocessor....
, Nx586 (1994)
as above / 36-bit physical (PAE) µ-op translation, PAE
Physical Address Extension

In computing, Physical Address Extension is a feature of x86 and x86-64 processors that enable the use of more than 4 gigabytes of physical memory to be used in 32-bit systems, given appropriate operating system support....
 (not K5, Nx586), integrated L2 cache (not K5, Nx586)
1997 AMD K6
AMD K6

The K6 microprocessor was launched by AMD in 1997. The main advantage of this particular microprocessor is that it was designed to fit into existing desktop designs for Pentium branded CPUs....
/-2/3
AMD K6-2

The K6-2 was an x86 microprocessor introduced by Advanced Micro Devices on May 28, 1998, and available in speeds ranging from 266 to 550 Megahertz....
, Pentium II
Pentium II

The Pentium II brand refers to Intel's sixth-generation microarchitecture and x86 architecture-compatible microprocessors introduced on May 7, 1997....
/III
Pentium III

The Pentium III brand refers to Intel's 32-bit x86 desktop and mobile microprocessors based on the sixth-generation Intel P6 microarchitecture introduced on February 26, 1999....
 
L3-cache support, 3D Now, SSE
Streaming SIMD Extensions

In computing, Streaming SIMD Extensions is a SIMD instruction set extension to the x86 architecture, designed by Intel and introduced in 1999 in their Pentium III series processors as a reply to AMD's 3DNow! ....
7 1999 Athlon
Athlon

Athlon is the brand name applied to a series of different x86 Central processing unit designed and manufactured by Advanced Micro Devices. The original Athlon was the first seventh-generation x86 processor and, in a first, retained the initial performance lead it had over Intel Corporation's competing processors for a significant period of t...
, Athlon XP
superscalar FPU, wide design (up to three x86 instr./clock)
2000 Pentium 4
Pentium 4

The Pentium 4 brand refers to Intel's line of single-core mainstream Desktop computer and laptop central processing units introduced on November 20, 2000 ....
 
deeply pipelined, high frequency, SSE2
SSE2

SSE2, Streaming SIMD Extensions 2, is one of the IA-32 SIMD instruction sets. SSE2 was first introduced by Intel with the initial version of the Pentium 4 in 2001....
, hyper-threading
Hyper-threading

Hyper-threading is Intel trademarked term for its simultaneous multithreading implementation in their Pentium 4, Intel Atom, and Intel Core i7 CPUs....
6-M/7-M 2003 Pentium M
Pentium M

The Pentium M brand refers to only two single-core 32-bit x86 microprocessors introduced in March 2003 , and forming a part of the Intel Centrino platform....
, Intel Core
Intel Core

The Core brand refers to Intel's 32-bit mobile dual-core x86 CPUs that derived from the Pentium M branded processors. The processor family used a more advanced version of the Intel P6 microarchitecture....
 
optimized for low power
Thermal Design Power

The Thermal Design Power represents the maximum amount of power the cooling system in a computer is required to dissipate. For example, a laptop's Microprocessor cooling system may be designed for a 20 W TDP, which means that it can dissipation 20 watts of heat without exceeding the maximum junction temperature for the chip....
8 (x86-64
X86-64

x86-64 is a superset of the x86. x86-64 Central processing units can run existing 32-bit or 16-bit x86 programs at full speed, but also support new programs written with a 64-bit address space and other additional capabilities....
)
Athlon 64
Athlon 64

The Athlon 64 is an eighth-generation, AMD64-architecture microprocessor produced by AMD, released on September 23, 2003. It is the third processor to bear the name Athlon, and the immediate successor to the Athlon XP....
, Opteron
Opteron

The Opteron is Advanced Micro Devices's x86 server Central processing unit line, and was the first processor to implement the AMD64 instruction set architecture ....
 
64-bit / 52-bit (48-bit / 40-bit in first impl.) x86-64 instruction set
X86-64

x86-64 is a superset of the x86. x86-64 Central processing units can run existing 32-bit or 16-bit x86 programs at full speed, but also support new programs written with a 64-bit address space and other additional capabilities....
, on-die memory controller, hypertransport
HyperTransport

HyperTransport , formerly known as Lightning Data Transport , is a bidirectional serial/parallel high-bandwidth, Memory latency Point-to-point that was introduced on April 2 2001....
2004 Pentium 4 Prescott very deeply pipelined, very high frequency, SSE3
SSE3

SSE3, also known by its Intel code name Prescott New Instructions , is the third iteration of the Streaming SIMD Extensions instruction set for the IA-32 architecture....
9 2006 Intel Core 2
Intel Core 2

The Core 2 brand refers to a range of Intel's consumer 64-bit single- and dual-core and 2x2 Multi-Chip Module quad-core CPUs with the x86-64 instruction set, based on the Intel Core microarchitecture, derived from the 32-bit dual-core Intel Core laptop processor....
 
low power, multi-core, lower clock frequency, SSE4
SSE4

SSE4 is an instruction set used in the Intel Intel Core microarchitecture microarchitecture and AMD_K10. It was announced on September 27, 2006 at the Fall 2006 Intel Developer Forum, with vague details in a white paper; more precise details of 47 instructions became available at the Spring 2007 Intel Developer Forum in Beijing, in the prese...
 (Penryn)
10 2007 AMD Phenom
Phenom (processor)

Phenom is the Advanced Micro Devices desktop processor line based on the AMD K10 microarchitecture, or Family 10h Processors, as AMD calls them....
 
as above / 44-bit physical for Beckton Core i7 monolithic quad-core, 128 bit FPUs, SSE4a, HyperTransport 3 or QuickPath, modular design
? 2008 Intel Atom
Intel Atom

Intel Atom is the brand name for a line of x86 and x86-64 CPUs from Intel, previously List of Intel codenames Silverthorne and Diamondville processors, designed for a 45 nm CMOS process and intended for use in MIDs, smart phones and ultra-mobile PCs meant for portable and low-power applications....
, Intel Core i7
Intel Core i7

Intel Core i7 is a family of three Intel desktop x86-64 processors, the first processors released using the Intel Nehalem and the successor to the Intel Core 2 family....
 
In-order but highly pipelined, very-low-power, native memory controller, on-die L3 cache
11 2010 Intel Sandy Bridge
Sandy Bridge (microarchitecture)

Sandy Bridge is the List of Intel codenames for a Central processing unit microarchitecture that is being developed by Intel and is the planned successor to Nehalem ....
, AMD Bulldozer
Bulldozer (processor)

Bulldozer is the codename Advanced Micro Devices has given to one of the next-generation CPU cores after the AMD K10 for the company's M-SPACE design methodology, with the core specifically aimed at 10 watt to 100 watt Thermal Design Power computing products....
 
SSE5
SSE5

The SSE5 , announced by Advanced Micro Devices on August 30, 2007, is an extension to the 128-bit Streaming SIMD Extensions core instructions in the AMD64 instruction set for the Bulldozer processor core, due to begin production in 2011....
/AVX
Advanced Vector Extensions

The Intel Advanced Vector Extensions is a set of SIMD instructions announced by Intel at the Spring Intel Developer Forum in April 2008. These instructions will appear on 2010 Intel processors such as Sandy Bridge ....
, highly modular design

History


Background
The x86 architecture first appeared as the Intel 8086
Intel 8086

The 8086 is a 16-bit microprocessor chip designed by Intel and introduced on the market in 1978, which gave rise to the x86 architecture. Intel 8088, released in 1979, was essentially the same chip, but with an external 8-bit bus , and is notable as the processor used in the original IBM PC....
 CPU
Central processing unit

A central processing unit is an electronic circuit that can execute computer programs. This broad definition can easily be applied to many early computers that existed long before the term "CPU" ever came into widespread usage....
 released in 1978, a fully 16-bit design based on the earlier Intel 8085
Intel 8085

The Intel 8085 is an 8-bit microprocessor introduced by Intel in 1977. It was binary-compatible with the more-famous Intel 8080 but required less supporting hardware, thus allowing simpler and less expensive microcomputer systems to be built....
. Although not binary compatible, it was designed to allow assembly language
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
 programs written for the 8085 to be mechanically translated into the equivalent 8086 assembly
X86 assembly language

x86 assembly language is the family of backwards-compatible assembly languages for the x86 class of processors, which includes Intel's Pentium series and AMD's Athlon series....
. This made the new processor a tempting migration path for 8085 hardware and software vendors, but - mainly due to a wider databus - not without significant redesign of system hardware. To address this, Intel introduced the almost identical, but externally 8-bit, 8088
Intel 8088

The Intel 8088 is an Intel x86 microprocessor based on the Intel 8086, with 16-bit registers and an 8-bit external data bus. It can address up to 1 megabyte of random access memory....
 which permitted simpler printed circuit board
Printed circuit board

A printed circuit board, or PCB, is used to mechanically support and electrically connect electronic components using Conductor pathways, or signal traces, industrial etchinged from copper sheets laminated onto a non-conductive substrate....
s, demanded fewer (1-bit wide) DRAM
Dram

Dram or DRAM may refer to:* Dram , an imperial unit of mass and volume* Armenian dram, a monetary unit* Dynamic random access memory* Database of Recorded American Music...
 chips, and more easily could be interfaced to already established (i.e. low-cost) 8-bit system and peripheral chips. Among other, non technical factors, this contributed to the fact that IBM built their IBM PC
IBM PC

The IBM Personal Computer, commonly known as the IBM PC, is the original version and progenitor of the IBM PC compatible hardware platform ....
 around the 8088, despite a presence of 16-bit microprocessors from Motorola, Zilog, and National Semiconductor. Subsequently, the IBM PC became the dominant personal computer platform and the 8088 and its successors became the dominant CPU architecture for desktop and laptop computers.

Other manufacturers

At various times, companies such as IBM
IBM

International Business Machines Corporation, abbreviated IBM and nicknamed "Big Blue" , is a multinational corporation computer technology and consulting corporation headquartered in Armonk, New York, New York, United States....
, NEC
NEC

is a Japan multinational corporation IT company headquartered in Minato, Tokyo, Japan. NEC, part of the Sumitomo Group, provides information technology and network solutions to business enterprises, communications services providers and government....
, AMD, TI
Texas Instruments

Texas Instruments , better known in the electronics industry as TI, is an United States company based in Dallas, Texas, Texas, United States, renowned for developing and commercializing semiconductor and computer technology....
, STM
STMicroelectronics

STMicroelectronics is an Italy-France electronics and semiconductor manufacturer headquartered in Geneva, Switzerland.While STMicroelectronics corporate headquarters and the headquarters for Europe and emerging markets, are based in Geneva, the holding company, STMicroelectronics N.V....
, Fujitsu
Fujitsu

is a Japanese company specializing in semiconductors, air conditioners, computers , telecommunications, and Service , and is headquartered in Minato, Tokyo, Tokyo....
, OKI
Oki

Oki is a proper name that may refer to:*Oki- a minor villain in Naruto* Oki - a fictional character in Wangan Midnight manga * Oki - a class of spiritual beings found in some traditional Iroquoian religious systems...
, Siemens
Siemens AG

Siemens Aktiengesellschaft is Europe's largest engineering Conglomerate . Siemens' international headquarters are located in Berlin and Munich, Germany....
, Cyrix
Cyrix

Cyrix was a Central processing unit manufacturer that began in 1988 in Richardson, Texas as a specialist supplier of high-performance math coprocessors for Intel 80286 and Intel 80386 systems....
, Intersil
Intersil

Intersil Corporation specializes in the design and manufacture of high-performance analog semiconductors for four high-growth markets ? Communications, Computing, High End Consumer and Industrial....
, C&T
Chips and Technologies

Chips and Technologies was the first fabless semiconductor company, a model developed by its founder Gordon Campbell. Founded by Dado Banatao....
, NexGen
NexGen

NexGen was a private semiconductor company that designed x86 microprocessors until it was purchased by AMD in 1996. Like competitor Cyrix, NexGen was a fabless design house that designed its chips but relied on other companies for production....
, and UMC
United Microelectronics Corporation

UMC was founded as Taiwan's first semiconductor company in 1980 as a spin-off of the government-sponsored institute Industrial Technology Research Institute....
 started to design and/or manufacture x86 processors
Central processing unit

A central processing unit is an electronic circuit that can execute computer programs. This broad definition can easily be applied to many early computers that existed long before the term "CPU" ever came into widespread usage....
 intended for personal computers as well as embedded systems. Such x86 implementations are seldom plain copies but often employ different internal microarchitecture
Microarchitecture

In computer engineering, microarchitecture is a description of the electrical circuitry of a computer, central processing unit, or digital signal processor that is sufficient for completely describing the operation of the hardware....
s as well as different solutions at the electronic and physical levels. Quite naturally, early compatible chips were 16-bit, while 32-bit designs appeared much later. For the personal computer
Personal computer

A personal computer is any general-purpose computer whose original sales price, size, and capabilities make it useful for individuals, and which is intended to be operated directly by an end user, with no intervening computer operator....
 market, real quantities started to appear around 1990 with i386 and i486 compatible processors, often named similarly to Intel's original chips. Other companies, which designed or manufactured x86 or x87
X87

x87 is a math-related instruction subset of the x86 architecture of Central processing unit. It is so called because initially such instructions were processed by an coprocessor#Intel coprocessors chip 8087....
 processors, include ITT Corporation
ITT Corporation

ITT Corporation is a global diversified manufacturing company with 2007 revenues of $9.0 billion. ITT participates in global markets including water and fluids management, defense and security, and motion and flow control....
, National Semiconductor
National Semiconductor

National Semiconductor is a semiconductor manufacturer, specializing in analog devices and subsystems,headquartered in Santa Clara, California, California, United States....
, ULSI System Technology, and Weitek
Weitek

Weitek Corporation was a former chip-design company that originally concentrated on floating point units for a number of commercial Central processing unit designs....
.

Following the fully pipelined i486, Intel
Intel Corporation

Intel Corporation is the world's largest semiconductor company and the inventor of the X86 architecture series of microprocessors, the processors found in most personal computers....
 introduced the Pentium
Pentium

Introduced on March 22, 1993, the original Pentium was the first superscalar x86 architecture microprocessor. Its fifth-generation x86 microarchitecture was a direct extension of the 80486 architecture with dual integer pipeline s, a faster FPU unit, wider data bus, and features for further reduced address calculation latency....
 brand name (which, unlike numbers, could be trademarked) for their new line of superscalar
Superscalar

A superscalar Central processing unit architecture implements a form of parallel computer called instruction level parallelism within a single processor....
 x86 designs. With the x86 naming scheme now legally cleared, IBM
IBM

International Business Machines Corporation, abbreviated IBM and nicknamed "Big Blue" , is a multinational corporation computer technology and consulting corporation headquartered in Armonk, New York, New York, United States....
 partnered with Cyrix
Cyrix

Cyrix was a Central processing unit manufacturer that began in 1988 in Richardson, Texas as a specialist supplier of high-performance math coprocessors for Intel 80286 and Intel 80386 systems....
 to produce the 5x86
Cyrix Cx5x86

Released in August 1995, four months before the more famous Cyrix 6x86, the Cyrix 5x86 was one of the fastest Central processing units ever produced for Socket 3 computer systems....
 and then the very efficient 6x86 (M1) and 6x86MX (MII
MII

A Mii is a personalized digital avatar for Nintendo's Wii video game console.Mii, or MII, may also refer to:*1002, the year or the number, in Roman numerals...
) lines of Cyrix
Cyrix

Cyrix was a Central processing unit manufacturer that began in 1988 in Richardson, Texas as a specialist supplier of high-performance math coprocessors for Intel 80286 and Intel 80386 systems....
 designs, which were the first x86 chips implementing register renaming
Register renaming

In computer engineering, register renaming refers to a technique usedto avoid unnecessary serialization of program operations imposed by the reuse...
 to enable speculative execution
Speculative execution

In computer science, speculative execution is the execution of Code , the result of which may not be needed. In the context of functional programming, the term "speculative evaluation" is used instead....
. AMD meanwhile designed and manufactured the advanced but delayed 5k86 (K5
AMD K5

The K5 was Advanced Micro Devices first X86 architecture processor to be developed entirely in-house. Introduced in March 1996, its primary competition was Intel Corporation Pentium microprocessor....
), which, internally, was heavily based on AMD's earlier 29K RISC design; similar to NexGen
NexGen

NexGen was a private semiconductor company that designed x86 microprocessors until it was purchased by AMD in 1996. Like competitor Cyrix, NexGen was a fabless design house that designed its chips but relied on other companies for production....
's Nx586, it used a strategy where dedicated pipeline stages decode x86 instructions into uniform and easily handled micro-operation
Micro-operation

In computer central processing units, micro-operations, also known as a micro-ops or ?ops, are detailed low-level instructions used in some designs to implement complex machine instructions ....
s, a method that has remained the basis for most (not all) x86 designs to this day.

Some early versions of these chips had heat dissipation problems. The 6x86 was also affected by a few minor compatibility issues, the Nx586 lacked an FPU
Floating point unit

A floating-point unit is a part of a computer system specially designed to carry out operations on floating point numbers. Typical operations are addition, subtraction, multiplication, division , and square root....
 and (the then crucial) pin-compatibility, while the K5
AMD K5

The K5 was Advanced Micro Devices first X86 architecture processor to be developed entirely in-house. Introduced in March 1996, its primary competition was Intel Corporation Pentium microprocessor....
 had somewhat disappointing performance when it was (eventually) launched. A low customer awareness of alternatives to the Pentium line further contributed to these designs being comparatively unsuccessful, despite the fact that the K5
AMD K5

The K5 was Advanced Micro Devices first X86 architecture processor to be developed entirely in-house. Introduced in March 1996, its primary competition was Intel Corporation Pentium microprocessor....
 had very good Pentium compatibility and the 6x86 was significantly faster than the Pentium on integer code. AMD later managed to establish itself as a serious contender with the K6
AMD K6

The K6 microprocessor was launched by AMD in 1997. The main advantage of this particular microprocessor is that it was designed to fit into existing desktop designs for Pentium branded CPUs....
 line of processors, which gave way to the highly successful Athlon
Athlon

Athlon is the brand name applied to a series of different x86 Central processing unit designed and manufactured by Advanced Micro Devices. The original Athlon was the first seventh-generation x86 processor and, in a first, retained the initial performance lead it had over Intel Corporation's competing processors for a significant period of t...
 and Opteron
Opteron

The Opteron is Advanced Micro Devices's x86 server Central processing unit line, and was the first processor to implement the AMD64 instruction set architecture ....
. There were also other contenders, such as Centaur Technology
Centaur Technology

Centaur Technology is an X86 architecture CPU design company, now a wholly owned subsidiary of VIA Technologies, a member of the Formosa Plastics Group, Taiwan's largest industrial conglomerate....
, (IDT
Integrated Device Technology

IDT was founded in 1980 as a semiconductor vendor. Employing approximately 2500 people worldwide, headquartered in San Jose, California, and operating a Fab in Hillsboro, Oregon, the company both designs and fabricates semiconductor components....
), Rise Technology
Rise Technology

Rise Technology, was a short lived microprocessor manufacturer that produced the Intel x86 MMX compatible mP6 processor.The Santa Clara, California based company was started by David Lin in 1993 with funding from 15 Taiwanese investors, including United Microelectronics Corporation, Acer and VIA Technologies....
, and Transmeta
Transmeta

Transmeta Corporation was a United States-based corporation that licensed low power semiconductor intellectual property. Transmeta originally produced very long instruction word code morphing microprocessors, with a focus on reducing power consumption in electronic devices....
. VIA Technologies
VIA Technologies

VIA Technologies is a Taiwanese manufacturer of integrated circuits, mainly motherboard chipsets, Central processing unit, and computer memory, and is part of the Formosa Plastics Group....
' energy efficient C3
VIA C3

The VIA C3 is a family of x86 central processing units for personal computers designed by Centaur Technology and sold by VIA Technologies. The different CPU cores are built following the Centaur Technology#Design_methodology....
 and C7
VIA C7

The VIA C7 is an x86 central processing unit designed by Centaur Technology and sold by VIA Technologies....
 processors, which were designed by Centaur
Centaur Technology

Centaur Technology is an X86 architecture CPU design company, now a wholly owned subsidiary of VIA Technologies, a member of the Formosa Plastics Group, Taiwan's largest industrial conglomerate....
, have been sold for many years, and Centaur newest design, the VIA Nano
VIA Nano

The VIA Nano is a 64-bit central processing unit for personal computers released by VIA Technologies in 2008 after five years of developmentby its CPU division, Centaur Technology....
, is their first processor with superscalar
Superscalar

A superscalar Central processing unit architecture implements a form of parallel computer called instruction level parallelism within a single processor....
 and speculative execution
Speculative execution

In computer science, speculative execution is the execution of Code , the result of which may not be needed. In the context of functional programming, the term "speculative evaluation" is used instead....
. It was, perhaps interestingly, introduced at about the same time as Intel's first "in-order" processor since the original Pentium
Pentium

Introduced on March 22, 1993, the original Pentium was the first superscalar x86 architecture microprocessor. Its fifth-generation x86 microarchitecture was a direct extension of the 80486 architecture with dual integer pipeline s, a faster FPU unit, wider data bus, and features for further reduced address calculation latency....
, the Intel Atom
Intel Atom

Intel Atom is the brand name for a line of x86 and x86-64 CPUs from Intel, previously List of Intel codenames Silverthorne and Diamondville processors, designed for a 45 nm CMOS process and intended for use in MIDs, smart phones and ultra-mobile PCs meant for portable and low-power applications....
.

Extensions of word size
The instruction set architecture has twice been extended to a larger word size
Word (computer science)

In computing, "word" is a term for the natural unit of data used by a particular computer design. A word is simply a fixed-sized group of bits that are handled together by the machine....
. In 1985, Intel released the 32-bit 80386 (or i386) which gradually replaced the earlier 16-bit chips in computers (although typically not in embedded system
Embedded system

An embedded system is a special-purpose computer system designed to perform one or a few dedicated functions, often with real-time computing constraints....
s) during the following years; this extended programming model was originally referred to as the i386 architecture (like its first implementation) but Intel later dubbed it IA-32
IA-32

IA-32 , often generically called x86 or x86-32, is the instruction set architecture of Intel's most commercially successful microprocessors....
 when introducing its (unrelated) IA-64 architecture. In 1999-2003, AMD
Advanced Micro Devices

Advanced Micro Devices, Inc. is an United States multinational corporation semiconductor industry company based in Sunnyvale, California, that develops Central processing unit and related technologies for commercial and consumer markets....
 extended this 32-bit architecture to 64 bits and referred to it as x86-64
X86-64

x86-64 is a superset of the x86. x86-64 Central processing units can run existing 32-bit or 16-bit x86 programs at full speed, but also support new programs written with a 64-bit address space and other additional capabilities....
 in early documents and later as AMD64. Intel soon adopted AMD's architectural extensions under the name IA-32e which was later renamed EM64T and finally Intel 64. Among these five names, x86-64 is probably the most commonly used, although Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 and Sun Microsystems
Sun Microsystems

Sun Microsystems, Inc. is a multinational corporation vendor of computers, computer components, computer software, and information technology services, founded on February 24, 1982....
 also use the (perhaps even more vendor-neutral) term x64.

Overview


Basic properties of the architecture

The x86 architecture is a variable instruction length, primarily two-address "CISC
Complex instruction set computer

A complex instruction set computer is a computer instruction set architecture in which each instruction can execute several low-level operations, such as a load from Memory , an arithmetic operator, and a memory , all in a single instruction....
" design with emphasis on backward compatibility
Backward compatibility

In technology, for example in telecommunications and computing, a device or technology is said to be backwards compatible if it allows input generated by older devices....
. The instruction set is not typical CISC however, but basically an extended and orthogonalized version of the simple eight-bit 8085
Intel 8085

The Intel 8085 is an 8-bit microprocessor introduced by Intel in 1977. It was binary-compatible with the more-famous Intel 8080 but required less supporting hardware, thus allowing simpler and less expensive microcomputer systems to be built....
 architecture. Words are stored in little-endian
Endianness

In computing, endianness is the byte ordering used to represent some kind of data. Typical cases are the order in which integer values are stored as bytes in computer memory and the transmission order over a network or other medium....
 order and 16-bit and 32-bit accesses are allowed to unaligned memory addresses.

To conserve opcode space, most register-addresses are three bits, and at most one operand can be in memory (some highly orthogonal "CISC" designs, such as the PDP-11
PDP-11

The PDP-11 was a series of 16-bit minicomputers sold by Digital Equipment Corporation from 1970 into the 1990s. Though not explicitly conceived as successor to DEC's PDP-8 computer in the Programmed Data Processor series of computers , the PDP-11 replaced the PDP-8 in many Real-time computing....
, may use two memory operands), but this memory operand may also be the destination, while the other operand, the source, can be either register or immediate. This contributes, among other factors, to a code footprint that rivals eight-bit machines and enables efficient use of instruction cache memory. The relatively small number of general registers (also inherited from 8085) 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.

Current implementations

During execution
Execution (computers)

Execution in computer engineering and software engineering is the Process by which a computer or a virtual machine carries out the instructions of a computer program....
, current x86 processors employ a few extra decoding steps to split most instructions into smaller pieces (micro-operations). These are then handed to a control unit that buffers and schedules them in compliance with x86-semantics so that they can be executed, partly in parallel, by one of several (more or less specialized) execution units. These modern x86 designs are thus superscalar
Superscalar

A superscalar Central processing unit architecture implements a form of parallel computer called instruction level parallelism within a single processor....
, and also capable of out of order and speculative execution
Speculative execution

In computer science, speculative execution is the execution of Code , the result of which may not be needed. In the context of functional programming, the term "speculative evaluation" is used instead....
 (via register renaming
Register renaming

In computer engineering, register renaming refers to a technique usedto avoid unnecessary serialization of program operations imposed by the reuse...
), which means they may execute multiple (partial or complete) x86 instructions simultaneously, and not necessarily in the same order as given in the instruction stream.

When introduced, this approach was sometimes referred to as a "RISC core" or as "RISC translation", partly for marketing reasons, but also because these micro-operations share some properties with certain types of RISC instructions. However, traditional microcode
Microcode

Microcode is a layer of lowest-level instructions involved in the implementation of machine code instructions in many computers and other processors; it resides in a special high-speed memory and translates machine instructions into sequences of detailed circuit-level operations....
 (used since the 1950s) also inherently shares many of the same properties; the new approach differs mainly in that the translation to micro-operations now occurs asynchronously. Not having to synchronize the execution units with the decode steps opens up possibilities for more analysis of the (buffered) code stream, and therefore permits detection of operations that can be performed in parallel, simultaneously feeding more than one execution unit.

The latest processors also do the opposite when appropriate; they combine certain x86 sequences (such as a compare followed by a conditional jump) into a more complex µop which fits the execution model better and thus can be executed faster or with less machine resources involved.

Another way to try to improve performance is to cache the decoded micro-operations, so the processor can directly access the decoded micro-operations from a special cache, instead of decoding them again. The Execution Trace Cache found in Intel's NetBurst Microarchitecture (Pentium 4) is so far the only widespread example of this technique.

Transmeta
Transmeta

Transmeta Corporation was a United States-based corporation that licensed low power semiconductor intellectual property. Transmeta originally produced very long instruction word code morphing microprocessors, with a focus on reducing power consumption in electronic devices....
 use a completely different method in their x86 compatible CPUs. They use just-in-time translation to convert x86 instructions to the CPU's native instructions. Transmeta argues that their approach allows for more power efficient designs since the CPU can forgo the complicated decode step of more traditional x86 implementations.

Segmentation

Minicomputers during the late 1970s were running up against the 16-bit 64-KB
Kilobyte

Kilobyte is a unit of Computer data storage equal to either 1,024 bytes or 1,000 bytes , depending on context.It is abbreviated in a number of ways: KB, kB, K and Kbyte....
 address limit, as memory had become cheaper. Most such companies therefore redesigned their processors to directly handle 32-bit addressing and data. The original 8086, developed from the simple 8085
Intel 8085

The Intel 8085 is an 8-bit microprocessor introduced by Intel in 1977. It was binary-compatible with the more-famous Intel 8080 but required less supporting hardware, thus allowing simpler and less expensive microcomputer systems to be built....
 microprocessor and primarily aiming at another market, instead adopted segment registers which raised the memory address limit by only 4 bits, to 20 bits (1 megabyte
Megabyte

Megabyte is a SI prefix-multiple of the unit byte for digital information computer storage or transmission and is equal to 106 bytes....
). While the concept of segment registers was not new at the time, as many mainframes used segment register to quickly swap to different tasks, in practice on the x86 it was (is) a much-criticized implementation.

Data and/or code could be managed within "near" 16-bit segments within this 1 MB
Megabyte

Megabyte is a SI prefix-multiple of the unit byte for digital information computer storage or transmission and is equal to 106 bytes....
 address space, or a compiler could operate in a "far" mode using 32-bit segment:offset pairs reaching (only) 1 MB. While that would also prove to be quite limiting by the mid-1980s, it was working for the emerging PC market, and made it very simple to translate software from the older 8080
Intel 8080

The Intel 8080 was an early microprocessor designed and manufactured by Intel. The 8-bit microprocessor was released in April 1974 running at 2 megahertz , and is generally considered to be the first truly usable microprocessor....
, 8085
Intel 8085

The Intel 8085 is an 8-bit microprocessor introduced by Intel in 1977. It was binary-compatible with the more-famous Intel 8080 but required less supporting hardware, thus allowing simpler and less expensive microcomputer systems to be built....
, and Z80 to the newer processor. In 1985, the 16 bit segment addressing model was effectively factored out by the introduction of 32-bit offset registers, in the 386
Intel 80386

The Intel 80386, otherwise known as the i386 or just 386, is a microprocessor which has been used as the central processing unit of many personal computers and workstations since 1986....
 design.

In real mode
Real mode

Real mode, also called real address mode, is an operating mode of 80286 and later x86-compatible Central processing unit. Real mode is characterized by a 20 bit segmented memory address space , direct software access to BIOS routines and peripheral hardware, and no concept of memory protection or computer multitasking at the hardware le...
, segmentation is achieved by shifting
Bitwise operation

In computer programming, a bitwise operation operates on one or two bit patterns or Binary numeral system at the level of their individual bits....
 the segment address left by 4 bits and adding an offset in order to receive a final 20-bit address. For example, if DS is A000h and SI is 5677h, DS:SI will point at the absolute address DS × 16 + SI = A5677h. Thus the total address space in real mode is 220 bytes, or 1 MB
Megabyte

Megabyte is a SI prefix-multiple of the unit byte for digital information computer storage or transmission and is equal to 106 bytes....
, quite an impressive figure for 1978. All memory addresses consist of both a segment and offset; every type of access (code, data, or stack) has a default segment register associated with it (for data the register is usually DS, for code it is CS, and for stack it is SS). For data accesses, the segment register can be explicitly specified (using a segment override prefix) to use any of the four segment registers.

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. This scheme makes it impossible to use more than four segments at once. CS and SS are vital for the correct functioning of the program, so that only DS and ES can be used to point to data segments outside the program (or, more precisely, outside the currently-executing segment of the program) or the stack.

In protected mode
Protected mode

In computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units ....
, a segment register no longer contains the physical address of the beginning of a segment, but contain a "selector" that points to a system-level structure called a segment descriptor. A segment descriptor contains the physical address of the beginning of the segment, the length of the segment, and access permissions to that segment. The offset is checked against the length of the segment, with offsets referring to locations outside the segment causing an exception. Offsets referring to locations inside the segment are combined with the physical address of the beginning of the segment to get the physical address corresponding to that offset.

The segmented nature can make programming and compilers design difficult because the use of near and far pointers affect performance.

Addressing modes

Addressing modes for 16-bit x86 processors can be summarized by this formula:

Addressing modes for 32-bit code on 32-bit or 64-bit x86 processors can be summarized by this formula:

Addressing modes for 64-bit code on 64-bit x86 processors can be summarized by these formulas:

and

The 8086 had 64 KB of 8-bit (or alternatively 32 K-word of 16-bit) I/O
I/O

I/O may refer to:* Input/output, a system of communication for information processing systems* The input-output model, an economic model of flow prediction between sectors...
 space, and a 64 KB (one segment) stack
Stack (data structure)

In computer science, a stack is an abstract data type and data structure based on the principle of LIFO . Stacks are used extensively at every level of a modern computer system....
 in memory supported by hardware
Hardware

Hardware is a general term that refers to the physical cultural artifacts of a technology. It may also mean the physical components of a computer system, in the form of computer hardware....
. Only words (2 bytes) can be pushed to the stack. The stack grows downwards (toward numerically lower addresses), its bottom being pointed by SS:SP. There are 256 interrupt
Interrupt

In computing, an interrupt is an asynchronous communication signal from hardware indicating the need for attention or a synchronous event in software indicating the need for a change in execution....
s, which can be invoked by both hardware and software. The interrupts can cascade, using the stack to store the return address
Return address

In postal mail, a return address is an explicit inclusion of the address of the person sending the message. It provides the recipient with a means to determine how to respond to the sender of the message if needed....
.

x86 registers

For a description of the general notion of a CPU register, see Processor register
Processor register

In computer architecture, a processor register is a small amount of Computer storage available on the CPU whose contents can be accessed more quickly than storage available elsewhere....
.


16-bit

The original Intel 8086
Intel 8086

The 8086 is a 16-bit microprocessor chip designed by Intel and introduced on the market in 1978, which gave rise to the x86 architecture. Intel 8088, released in 1979, was essentially the same chip, but with an external 8-bit bus , and is notable as the processor used in the original IBM PC....
 and 8088
Intel 8088

The Intel 8088 is an Intel x86 microprocessor based on the Intel 8086, with 16-bit registers and an 8-bit external data bus. It can address up to 1 megabyte of random access memory....
 have fourteen 16-bit
Bit

A bit is a binary numeral system numerical digit, taking a value of either 0 or 1. Binary digits are a basic unit of information Computer data storage and transmission in digital computing and digital information theory....
 registers. Four of them (AX, BX, CX, DX) are general registers (although each may have an additional purpose; for example only CX can be used as a counter with the loop instruction). Each can be accessed as two separate bytes (thus BX's high byte can be accessed as BH and low byte as BL). Four segment registers (CS, DS, SS and ES) are used to form a memory address. There are two pointer registers. SP points to the bottom of the stack and BP which is used to point at some other place in the stack or the memory(Offset). Two registers (SI and DI) are for array indexing. The FLAGS register
FLAGS register (computing)

The FLAGS register is the status register in Intel x86 microprocessors that contains the current state of the processor. This register is 16-bits wide....
 contains flag
Flag (computing)

In computer programming, flag refers to one or more bits that are used to store a binary numeral system value or code that has an assigned meaning....
s such as carry flag
Carry flag

In computer processors the carry flag is a single bit in a system Status register used to indicate when an arithmetic Carry or borrow has been generated out of the Most significant bit Arithmetic logic unit bit position....
, overflow flag
Overflow flag

In computer Central processing units, the overflow flag is usually a single bit in a system status register used to indicate when an arithmetic overflow has occurred in an operation....
 and zero flag
Zero flag

The Zero Flag is a flag stored in the FLAGS register on all x86 compatible CPUs. It is bit 6. When it is set to 1, it means that the result of an instruction was zero....
. Finally, the instruction pointer (IP) points to the next instruction that will be fetched from memory and then executed.

32-bit

With the advent of the 32-bit 80386 processor, the 16-bit general-purpose registers, base registers, index registers, instruction pointer, and FLAGS register, but not the segment registers, were expanded to 32 bits. This is represented by prefixing an "E" (for Extended) to the register opcode
Opcode

In computer technology, an opcode is the portion of a machine language instruction that specifies the operation to be performed. Their specification and format are laid out in the instruction set architecture of the processor in question ....
s (thus the expanded AX became EAX, SI became ESI and so on). The general-purpose registers, base registers, and index registers could all be used as the base in addressing modes, and all of those registers except for the stack pointer could be used as the index in addressing modes. Two new segment registers (FS and GS) were added. With a greater number of registers, instructions and operands, the machine code
Machine code

Machine code or machine language is a system of instructions and data executed directly by a computer's central processing unit. Machine code may be regarded as a primitive programming language or as the lowest-level representation of a compiled and/or assembly language computer program....
 format was expanded. To provide backward compatibility, segments with executable code can be marked as containing either 16-bit or 32-bit instructions. Special prefixes allow inclusion of 32-bit instructions in a 16-bit segment or vice versa.

64-bit

Starting with the AMD Opteron processor, the x86 in 64-bit long mode (as a subset or remset of x86-64
X86-64

x86-64 is a superset of the x86. x86-64 Central processing units can run existing 32-bit or 16-bit x86 programs at full speed, but also support new programs written with a 64-bit address space and other additional capabilities....
 mode) extended the 32-bit registers in a way similar to what 32-bit protected mode had done before (RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, RFLAGS, RIP). However, 8 additional 64-bit general registers (R8, R9, ..., R15) were also introduced. The addressing modes were not dramatically changed from 32-bit mode, except that addressing was extended to 64 bits, physical addressing was now sign extended (so memory always added equally to the top and bottom of memory; note that this does not affect linear or virtual addressing), and other selector details were dramatically reduced. DRAM memory was now signed dynamically.

Miscellaneous/Special Purpose

x86 processors also include various special/miscellaneous registers such as control register
Control register

A control register is a processor register which changes or controls the general behavior of a CPU or other digital device. Common tasks performed by control registers include interrupt control, switching the addressing mode, paging control, and coprocessor control....
s (CR0 through 4), debug register
Debug register

Debug register is a register used by a processor for Computer program debugging. On the x86 architecture, these are named DR0...DR7....
s (DR0 through 3, plus 6 and 7), test register
Test register

Test register was a register used by the processor, usually to do a self-test. Most of these registers were undocumented, and used by specialized software....
s (TR4 through 7), descriptor registers (GDTR, LDTR, IDTR), and a task register (TR).

Purpose

Although the main registers are "general-purpose" and can be used for anything, it was envisaged that they be used for the following purposes:
  • AX/EAX/RAX: accumulator
  • BX/EBX/RBX: base
  • CX/ECX/RCX: counter
  • DX/EDX/RDX: data/general
  • SI/ESI/RSI: "source index" for string
    String (computer science)

    In computer programming and some branches of mathematics, a string is an ordered sequence of symbols. These symbols are chosen from a predetermined set or alphabet....
     operations.
  • DI/EDI/RDI: "destination index" for string operations.
  • SP/ESP/RSP: stack pointer for top address of the stack.
  • BP/EBP/RBP: stack base pointer for holding the address of the current stack frame.
  • IP/EIP/RIP: instruction pointer. Holds the current instruction address.


No particular purposes were envisaged for the other 8 registers available only in 64-bit mode.

Some instructions compile and execute more efficiently when using these registers for their designed purpose. For example, using AL as an accumulator
Accumulator

Accumulator may refer to:* Accumulator , in a CPU, a processor register for storing intermediate results* Accumulator , an apparatus for storing energy or power...
 and adding an immediate byte value to it produces the efficient add to AL opcode
Opcode

In computer technology, an opcode is the portion of a machine language instruction that specifies the operation to be performed. Their specification and format are laid out in the instruction set architecture of the processor in question ....
 of 04h, whilst using the BL register produces the generic and longer add to register opcode of 80C3h.

Structure

General Purpose Registers (A, B, C and D)

Segment Registers (C, D, S, E, F, and G)

Pointer Registers (S and B)

Index Registers (S and D)

Instruction Pointer Register (I)

x86-64-only General Purpose Registers (R8, R9, R10, R11, R12, R13, R14, R15)

Operating modes


Real mode


Real mode is an operating mode of 80286 and later x86-compatible CPUs
Central processing unit

A central processing unit is an electronic circuit that can execute computer programs. This broad definition can easily be applied to many early computers that existed long before the term "CPU" ever came into widespread usage....
. Real mode is characterized by a 20 bit segmented memory address space (meaning that only 1 MB
Megabyte

Megabyte is a SI prefix-multiple of the unit byte for digital information computer storage or transmission and is equal to 106 bytes....
 of memory can be addressed), direct software access to BIOS
BIOS

In computing, the Basic Input/Output System , also known as the System BIOS, is a de facto standard defining a firmware interface for IBM PC Compatible computers....
 routines and peripheral hardware, and no concept of memory protection
Memory protection

Memory protection is a way to control memory usage on a computer, and is core to virtually every modern operating system. The main purpose of memory protection is to prevent a process running on an operating system from accessing memory beyond that allocated to it....
 or multitasking
Computer multitasking

In computing, multitasking is a method by which multiple tasks, also known as Computer process, share common processing resources such as a Central processing unit....
 at the hardware level. All x86 CPUs in the 80286 series and later start up in real mode at power-on; 80186 CPUs and earlier had only one operational mode, which is equivalent to real mode in later chips.

In order to use more than 64 KB of memory, the segment registers must be used. This created great complications for C compiler implementors who introduced odd pointer modes such as "near", "far" and "huge" to lever the implicit nature of segmented architecture to different degrees, with some pointers containing 16-bit offsets within implied segments and other pointers containing segment addresses and offsets within segments.

Protected mode


In addition to real mode, the Intel 80286 supports protected mode, expanding addressable physical memory to 16 MB
Megabyte

Megabyte is a SI prefix-multiple of the unit byte for digital information computer storage or transmission and is equal to 106 bytes....
 and addressable virtual memory
Virtual memory

Virtual memory is a computer system technique which gives an application program the impression that it has contiguous working memory , while in fact it may be physically fragmented and may even overflow on to disk storage....
 to 1 GB
Gigabyte

Gigabyte is an SI prefix-multiple of the unit byte for Computer data storage. Since the giga- prefix means 109, gigabyte means 1,000,000,000 bytes ....
, and providing protected memory, which prevents programs from corrupting one another. This is done by using the segment registers only for storing an index to a segment table. There were two such tables, the Global Descriptor Table
Global Descriptor Table

The Global Descriptor Table or GDT is a data structure used by Intel x86-family processors starting with the 80286 in order to define the characteristics of the various memory areas used during program execution, for example the base address, the size and access privileges like executability and writability....
  (GDT) and the Local Descriptor Table
Local Descriptor Table

The Local Descriptor Table is a memory table used in the x86 architecture in protected mode and containing memory segment descriptors: start in linear memory, size, executability, writability, access privilege, actual presence in memory, etc....
 (LDT), each holding up to 8192 segment descriptors, each segment giving access to 64 KB of memory. The segment table provided a 24-bit base address
Base address

In computing, a base address is an address serving as a reference point for other addresses.In computers using relative addressing scheme, to obtain an absolute address, the relevant base address is taken and Offset is added to it....
, which can be added to the desired offset to create an absolute address. Each segment can be assigned one of four ring
Ring (computer security)

In computer science, hierarchical protection domains, often called protection rings, are a mechanism to protect data and functionality from faults and malicious behaviour ....
 levels used for hardware-based computer security
Computer security

Computer security is a branch of technology known as information security as applied to computers. The objective of computer security can include protection of information from theft or corruption, or the preservation of availability, as defined in the security policy....
.

The Intel 80386
Intel 80386

The Intel 80386, otherwise known as the i386 or just 386, is a microprocessor which has been used as the central processing unit of many personal computers and workstations since 1986....
 introduced support in protected mode for paging
Paging

In computer operating systems that have their main memory divided into page , paging is a transfer of pages between main memory and an auxiliary store, such as hard disk drive....
, a mechanism making it possible to use virtual memory
Virtual memory

Virtual memory is a computer system technique which gives an application program the impression that it has contiguous working memory , while in fact it may be physically fragmented and may even overflow on to disk storage....
.

Paging and segmented memory access are required for modern multitasking operating systems. Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
, 386BSD
386BSD

386BSD, sometimes called "JOLIX", was a Free software Berkeley Software Distribution Unix operating system first released in 1992. It ran on PC compatible computer systems based on the Intel 80386 microprocessor....
 and Windows NT
Windows NT

Windows NT is a family of operating systems produced by Microsoft, the first version of which was released in July 1993. It was originally designed to be a powerful high-level-language-based, processor-independent, multiprocessing, multiuser operating system with features comparable to Unix....
 were developed for the 386 because it was the first Intel architecture CPU to support paging and 32-bit segment offsets. The 386 architecture became the basis of all further development in the x86 series. The success of Windows 3.0
Windows 3.0

Windows 3.0 is the third major release of Microsoft Microsoft Windows, and was released on 22 May 1990. It became the first widely successful version of Windows and a powerful rival to Macintosh and the Commodore Amiga on the GUI front....
, the first widely accepted version of Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
, was largely due to its ability to take advantage of 386 features, even though it was used mainly to run multiple sessions rather than to take advantage of the native 32-bit instruction set
Instruction set

An instruction set is a list of all the instruction , and all their variations, that a processor can execute.Instructions include:* Arithmetic such as add and subtract...
.

x86 processors that support protected mode boot into real mode
Real mode

Real mode, also called real address mode, is an operating mode of 80286 and later x86-compatible Central processing unit. Real mode is characterized by a 20 bit segmented memory address space , direct software access to BIOS routines and peripheral hardware, and no concept of memory protection or computer multitasking at the hardware le...
 for backward compatibility with the older 8086 class of processors. Upon power-on (aka booting
Booting

In computing, booting is a Bootstrapping process that starts operating systems when the user turns on a computer system. A boot sequence is the initial set of operations that the computer performs when it is switched on....
), the processor initiates itself into Real mode, and then it begins loading programs automatically into RAM from ROM and disk
Hard disk

A hard disk drive , commonly referred to as a hard drive, hard disk, or fixed disk drive, is a non-volatile storage device which stores digitally encoded data on rapidly rotating hard disk platters with magnetic surfaces....
. A program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
 inserted somewhere along the boot
Booting

In computing, booting is a Bootstrapping process that starts operating systems when the user turns on a computer system. A boot sequence is the initial set of operations that the computer performs when it is switched on....
 sequence may be used to put the processor into the Protected mode
Protected mode

In computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units ....
. The instruction set in protected mode is backward compatible with the one used in real mode.

Virtual 8086 mode
There is also a sub-mode of operation in 32-bit Protected mode, called virtual 8086 mode
Virtual 8086 mode

In the 80386 microprocessor and later, Virtual 8086 mode, also called virtual real mode or VM86, allows the execution of real mode applications that are protected mode#Real_mode_application_compatibility directly in protected mode....
. This is basically a special hybrid operating mode that allows real mode programs and operating systems to run while under the control of a Protected mode supervisor operating system. This allows for a great deal of flexibility in running both Protected mode programs and real mode programs simultaneously. This mode is available in the 32-bit version of Protected mode; virtual 8086 mode does not exist previously in the 16-bit version of Protected mode, or in the 64-bit long mode.

64-bit Long mode

By 2002, it was obvious that the 32-bit address space of the x86 architecture was limiting its performance in applications requiring large data sets. A 32-bit address space would allow the processor to directly address only 4 GB of data, a size surpassed by applications such as video processing
Video editing software

Video editing software is application software which handles the editing of digital video sequences on a computer. In the simplest case the video is stored as JPEG image files in a directory....
 and database engine
Database engine

A database engine is the underlying software component that a database management system uses to create, retrieve, update and delete data from a database....
s, while using the 64-bit address, one can directly address 16777216 TB
TB

TB or Tb can stand for:...
 (more than 17 billion GB) of data, although most 64-bit architectures don't support access to the full 64-bit address space (AMD64, for example, supports only 48 bits, split into 4 paging levels, from a 64-bit address).

AMD, who would traditionally follow the lead of Intel, took the initiative of extending the 32-bit x86 architecture to 64-bit
64-bit

64-bit CPUs have existed in supercomputers since the 1960s and in RISC-based computer workstation and Server s since the early 1990s. In 2003 they were introduced to the mainstream personal computer arena, in the form of the x86-64 and 64-bit PowerPC processor architectures....
, initially calling it x86-64, later renaming it AMD64. The Opteron
Opteron

The Opteron is Advanced Micro Devices's x86 server Central processing unit line, and was the first processor to implement the AMD64 instruction set architecture ....
, Athlon 64
Athlon 64

The Athlon 64 is an eighth-generation, AMD64-architecture microprocessor produced by AMD, released on September 23, 2003. It is the third processor to bear the name Athlon, and the immediate successor to the Athlon XP....
, Turion 64
Turion 64

Turion 64 is the brand name AMD applies to its 64-bit low-consumption Central Processing Unit codenamed K8L. The Turion 64 and Turion 64 X2 processors compete with Intel's mobile processors, initially the Pentium M and currently the Intel Core and Intel Core 2 processors....
, and later Sempron
Sempron

Sempron has been the marketing name used by AMD for several different entry level desktop CPUs, using several different technologies and CPU socket formats....
 families of processors use this architecture. The success of the AMD64 line of processors coupled with the lukewarm reception of the IA-64 architecture forced Intel to release their own x86-64 instruction set. Intel had previously developed an x86-64 instruction set but opted not to enable it in hopes that AMD would not make it to market with theirs before Itanium's new IA-64 instruction set was widely adopted. They branded their extensions EM64T architecture, and later re-branded it Intel 64.

In its literature and product version names, Microsoft and Sun refer to AMD64/Intel 64 collectively as x64 in the Windows and Solaris
Solaris Operating System

Solaris is a Unix-based operating system introduced by Sun Microsystems in 1992 as the successor to SunOS.Solaris is known for its scalability, especially on SPARC systems, and for originating many innovative features such as DTrace and ZFS....
 operating systems respectively. Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
 distributions refer to it either as "x86-64", its variant "x86_64", or "amd64". BSD
Berkeley Software Distribution

Berkeley Software Distribution is the Unix operating system derivative developed and distributed by the Computer Systems Research Group of the University of California, Berkeley, from 1977 to 1995....
 systems use "amd64" while Mac OS X
Mac OS X

Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
 uses "x86_64".

Long mode is mostly an extension of the 32-bit instruction set, but unlike the 16–to–32-bit transition, many instructions were dropped in the 64 bit mode. This does not affect actual binary backward compatibility (which would execute legacy code in other modes that retain support for those instructions), but it changes the way assembler and compilers for new code have to work.

This was the first time that a major upgrade of the x86 architecture was initiated and originated by a manufacturer other than Intel. It was also the first time that Intel accepted technology of this nature from an outside source.

Extensions


Floating point unit

Initially, IA-32 included floating-point capabilities only on add-on processors (8087, 80287 and 80387.) With the introduction of the 80486, these 8 80x87 floating point registers, known as ST(0) through ST(7) are built in to the CPU. Each register is 80 bits wide and stores numbers in the double extended precision format of the IEEE floating-point standard
IEEE floating-point standard

The first IEEE Standard for Binary Floating-Point Arithmetic set the standard for floating-point computation for 23 years. It became the most widely-used standard for floating point computation, and is followed by many Central processing unit and floating point unit implementations....
.

These registers are not accessible directly, but are accessible like a LIFO stack. The register numbers are not fixed, but are relative to the top of the stack; ST(0) is the top of the stack, ST(1) is the next register below the top of the stack, ST(2) is two below the top of the stack, etc. That means that data is always pushed down from the top of the stack, and operations are always done against the top of the stack. Register access had to be done in the stack order, not randomly.

MMX


MMX is a SIMD
SIMD

In computing, SIMD is a technique employed to achieve data level parallelism....
 instruction set designed by Intel, introduced in 1997 for Pentium
Pentium

Introduced on March 22, 1993, the original Pentium was the first superscalar x86 architecture microprocessor. Its fifth-generation x86 microarchitecture was a direct extension of the 80486 architecture with dual integer pipeline s, a faster FPU unit, wider data bus, and features for further reduced address calculation latency....
 MMX microprocessors. It developed out of a similar unit first used on the Intel i860
Intel i860

The Intel i860 was a RISC microprocessor from Intel, first released in 1989. The i860 was one of Intel's first attempts at an entirely new, high-end instruction set since the failed Intel i432 from the 1980s....
. It first appeared in the Pentium MMX
Pentium

Introduced on March 22, 1993, the original Pentium was the first superscalar x86 architecture microprocessor. Its fifth-generation x86 microarchitecture was a direct extension of the 80486 architecture with dual integer pipeline s, a faster FPU unit, wider data bus, and features for further reduced address calculation latency....
. It is supported on most subsequent IA-32 processors by Intel and other vendors. MMX is typically used for video applications.

MMX added 8 new "registers" to the architecture, known as MM0 through MM7 (henceforth referred to as MMn). In reality, these new "registers" were just aliases for the existing x87 FPU stack registers. Hence, anything that was done to the floating point stack would also affect the MMX registers. Unlike the FP stack, these MMn registers were fixed, not relative, and therefore they were randomly accessible. The instruction set did not adopt the stack-like semantics so that existing operating systems could still correctly save and restore the register state when multitasking without modifications.

Each of the MMn registers are 64-bit integers. However, one of the main concepts of the MMX instruction set is the concept of packed data types, which means instead of using the whole register for a single 64-bit integer (quadword); two 32-bit integers (doubleword
Integer (computer science)

In computer science, the term integer is used to refer to a data type which represents some finite subset of the mathematical integers. These are also known as integral data types....
), four 16-bit integers (word
Integer (computer science)

In computer science, the term integer is used to refer to a data type which represents some finite subset of the mathematical integers. These are also known as integral data types....
) or eight 8-bit integers (byte
Integer (computer science)

In computer science, the term integer is used to refer to a data type which represents some finite subset of the mathematical integers. These are also known as integral data types....
) may be used. Also because the MMX's 64-bit MMn registers are aliased to the FPU stack, and each of the stack registers are 80-bit wide, the upper 16-bits of the stack registers go unused in MMX, and these bits are set to all ones, which makes it look like NaN's or infinities in the floating point view. This makes it easier to tell whether you are working on a floating point data or MMX data.

3DNow!


In 1997 AMD introduced 3DNow! The introduction of this technology coincided with the rise of 3D
3D computer graphics

3D computer graphics are graphics that use a Cartesian coordinate system#Three-dimensional coordinate system representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering 2D images....
 entertainment applications and was designed to improve the CPU's vector processing performance of graphic-intensive applications. 3D video game developers and 3D graphics hardware vendors use 3DNow! to enhance their performance on AMD's K6
AMD K6

The K6 microprocessor was launched by AMD in 1997. The main advantage of this particular microprocessor is that it was designed to fit into existing desktop designs for Pentium branded CPUs....
 and Athlon
Athlon

Athlon is the brand name applied to a series of different x86 Central processing unit designed and manufactured by Advanced Micro Devices. The original Athlon was the first seventh-generation x86 processor and, in a first, retained the initial performance lead it had over Intel Corporation's competing processors for a significant period of t...
 series of processors.

3DNow! was designed to be the natural evolution of MMX from integers to floating point. As such, it uses the exact same register naming convention as MMX, that is MM0 through MM7. The only difference is that instead of packing byte to quadword integers into these registers, one would pack single precision
Single precision

In computing, single precision is a computer numbering format that occupies one storage location in computer memory at a given address. A single-precision number, sometimes simply a single, may be defined to be an integer, fixed point, or floating point....
 floating points into these registers. The advantage of aliasing registers with the FPU registers is that the same instruction and data structures used to save the state of the FPU registers can also be used to save 3DNow! register states. Thus no special modifications are required to be made to operating systems which would otherwise not know about.

SSE


In 1999, Intel introduced the Streaming SIMD Extensions (SSE) instruction set
Instruction set

An instruction set is a list of all the instruction , and all their variations, that a processor can execute.Instructions include:* Arithmetic such as add and subtract...
, following in 2000 with SSE2. The first addition allowed offloading of basic floating-point operations from the x87 stack and the second made MMX almost obsolete and allowed the instructions to be realistically targeted by conventional compilers. Introduced in 2004 along with the Prescott
Pentium 4

The Pentium 4 brand refers to Intel's line of single-core mainstream Desktop computer and laptop central processing units introduced on November 20, 2000 ....
 revision of the Pentium 4
Pentium 4

The Pentium 4 brand refers to Intel's line of single-core mainstream Desktop computer and laptop central processing units introduced on November 20, 2000 ....
 processor, SSE3 added specific memory and thread-handling instructions to boost the performance of Intel's HyperThreading technology. AMD licensed the SSE3 instruction set and implemented most of the SSE3 instructions for its revision E and later Athlon 64 processors. The Athlon 64 does not support HyperThreading and lacks those SSE3 instructions used only for HyperThreading.

SSE discarded all legacy connections to the FPU stack. This also meant that this instruction set discarded all legacy connections to previous generations of SIMD instruction sets like MMX. But it freed the designers up, allowing them to use larger registers, not limited by the size of the FPU registers. The designers created eight 128-bit registers, named XMM0 through XMM7. (Note: in AMD64
X86-64

x86-64 is a superset of the x86. x86-64 Central processing units can run existing 32-bit or 16-bit x86 programs at full speed, but also support new programs written with a 64-bit address space and other additional capabilities....
, the number of SSE XMM registers has been increased from 8 to 16.) However, the downside was that operating systems had to have an awareness of this new set of instructions in order to be able to save their register states. So Intel created a slightly modified version of Protected mode, called Enhanced mode which enables the usage of SSE instructions, whereas they stay disabled in regular Protected mode. An OS that is aware of SSE will activate Enhanced mode, whereas an unaware OS will only enter into traditional Protected mode.

SSE is a SIMD instruction set that works only on floating point values, like 3DNow!. However, unlike 3DNow! it severs all legacy connection to the FPU stack. Because it has larger registers than 3DNow!, SSE can pack twice the number of single precision
Single precision

In computing, single precision is a computer numbering format that occupies one storage location in computer memory at a given address. A single-precision number, sometimes simply a single, may be defined to be an integer, fixed point, or floating point....
 floats into its registers. The original SSE was limited to only single-precision numbers, like 3DNow!. The SSE2 introduced the capability to pack double precision
Double precision

In computing, double precision is a computer numbering format that occupies two adjacent storage locations in computer memory. A double precision number, sometimes simply called a double, may be defined to be an integer, fixed point, or floating point....
 numbers too, which 3DNow! had no possibility of doing since a double precision number is 64-bit in size which would be the full size of a single 3DNow! MMn register. At 128-bit, the SSE XMMn registers could pack two double precision floats into one register. Thus SSE2 is much more suitable for scientific calculations than either SSE1 or 3DNow!, which were limited to only single precision. SSE3 does not introduce any additional registers.

Physical Address Extension (PAE)

By default, physical addresses are 32-bit, however, there exists a page extension mode called Physical Address Extension
Physical Address Extension

In computing, Physical Address Extension is a feature of x86 and x86-64 processors that enable the use of more than 4 gigabytes of physical memory to be used in 32-bit systems, given appropriate operating system support....
 or PAE, first added in the Intel Pentium Pro
Pentium Pro

The Pentium Pro is a sixth-generation x86-based microprocessor developed and manufactured by Intel introduced in November 1995. It introduced the Intel P6 and was originally intended to replace the original Pentium in a full range of applications....
, which allows an additional 4 bits of physical addressing. The size of memory in Protected mode is usually limited to 4 GB
GB

GB may stand for:...
. Through tricks in the processor's page and segment memory management systems, x86 operating systems may be able to access more than 32-bits of address space, even without the switchover to the 64-bit paradigm. This mode does not change the length of segment offsets or linear addresses; those are still only 32 bits.

Virtualization

x86 virtualization
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
 is difficult because the architecture did not meet the Popek and Goldberg requirements
Popek and Goldberg virtualization requirements

The Popek and Goldberg virtualization requirements are a set of sufficient conditions for a computer architecture to efficiently support system virtualization....
 until recently. Nevertheless, there are several commercial x86 virtualization
X86 virtualization

x86 virtualization is the method by which x86-based "guest" operating systems are run under another "host" x86 operating system, with little or no modification of the guest OS....
 products, such as VMware
VMware

VMware, Inc. is a software developer of virtualization software. The company was founded in 1998 and is based in Palo Alto, California. The Company is majority owned by EMC Corporation ....
, Parallels
Parallels Workstation

Parallels Workstation is the first commercial software product released by Parallels, Inc., a developer of desktop and server virtualization software....
 and Microsoft Virtual PC
Virtual PC

Virtual PC can refer to:* A Virtual machine, the generic name for this kind of technology* Microsoft Virtual PC, a product from Microsoft...
, as well as open source
Open source

Open source is an approach to design, development, and distribution offering practical accessibility to a product's source . Some consider open source as one of various possible design approaches, while others consider it a critical Strategy element of their business operations....
 virtualization projects such as QEMU
QEMU

QEMU is a central processing unit emulator that relies on dynamic binary translation to achieve a reasonable speed while being easy to port on new host CPU architectures....
+KQEMU, VirtualBox
VirtualBox

VirtualBox is an x86 virtualization software package, originally created by Germany software company innotek, now developed by Sun Microsystems as part of its Sun xVM virtualization platform....
, Xen
Xen

Xen is a Hypervisor for IA-32 , IA-64 and PowerPC 970 architectures. It allows several guest operating systems to be executed on the same computer hardware concurrently....
.

Intel and AMD have introduced x86 processors with hardware-based virtualization extensions that overcome the classical virtualization limitations of the x86 architecture. These extensions are known as Intel VT
X86 virtualization

x86 virtualization is the method by which x86-based "guest" operating systems are run under another "host" x86 operating system, with little or no modification of the guest OS....
 (IVT or simply VT) that was code named "Vanderpool," and AMD-V
X86 virtualization

x86 virtualization is the method by which x86-based "guest" operating systems are run under another "host" x86 operating system, with little or no modification of the guest OS....
 that was code named "Pacifica." Although most modern x86 server-based and many modern x86 desktop-based processors include these extensions, the technology is generally considered immature at this point with most software-based virtualization outperforming these extensions. This is expected to change as the technology matures.

See also

  • IA-32
    IA-32

    IA-32 , often generically called x86 or x86-32, is the instruction set architecture of Intel's most commercially successful microprocessors....
  • x86 assembly language
    X86 assembly language

    x86 assembly language is the family of backwards-compatible assembly languages for the x86 class of processors, which includes Intel's Pentium series and AMD's Athlon series....
  • x86 instruction listings
    X86 instruction listings

    The x86 instruction set has undergone numerous changes over time. Most of them were to add new functionality to the instruction set....
  • x87
    X87

    x87 is a math-related instruction subset of the x86 architecture of Central processing unit. It is so called because initially such instructions were processed by an coprocessor#Intel coprocessors chip 8087....
  • Real mode
    Real mode

    Real mode, also called real address mode, is an operating mode of 80286 and later x86-compatible Central processing unit. Real mode is characterized by a 20 bit segmented memory address space , direct software access to BIOS routines and peripheral hardware, and no concept of memory protection or computer multitasking at the hardware le...
     — Unreal mode
    Unreal mode

    Unreal mode, also big real mode, huge real mode, or flat real mode, is a variant of real mode , in which one or more data segment registers have been loaded with 32-bit addresses and limits....
     — Virtual 8086 mode
    Virtual 8086 mode

    In the 80386 microprocessor and later, Virtual 8086 mode, also called virtual real mode or VM86, allows the execution of real mode applications that are protected mode#Real_mode_application_compatibility directly in protected mode....
     — Protected mode
    Protected mode

    In computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units ....
     — Long mode
    Long mode

    In the x86-64 computer architecture, long mode is the mode where a 64-bit application can access the 64-bit instructions and registers, while 32-bit and 16-bit programs are executed in a compatibility sub-mode....
  • x86-64
    X86-64

    x86-64 is a superset of the x86. x86-64 Central processing units can run existing 32-bit or 16-bit x86 programs at full speed, but also support new programs written with a 64-bit address space and other additional capabilities....
  • IA64
  • Microarchitecture
    Microarchitecture

    In computer engineering, microarchitecture is a description of the electrical circuitry of a computer, central processing unit, or digital signal processor that is sufficient for completely describing the operation of the hardware....
  • List of Intel microprocessors
    List of Intel microprocessors

    This generational and chronological list of Intel microprocessors attempts to present all of Intel Corporation's microprocessors from the pioneering 4-bit Intel 4004 to the present high-end offerings, the 64-bit Itanium#Itanium2 and Intel Core 2 and Xeon 5100 and 7100 series processors ....
  • List of AMD microprocessors
    List of AMD microprocessors

    This article gives a list of Advanced Micro Devices microprocessors, sorted by generation and release year. If applicable and openly known, the designation of each processor's core is listed in parentheses....
  • List of VIA microprocessors
  • List of x86 manufacturers
    List of x86 manufacturers

    Manufacturersx86-compatible processors have been designed, manufactured and sold by a number of companies, including:...
  • Input/Output Base Address
    Input/Output Base Address

    In x86 architecture, an input/output base address is a base address used for an I/O port....
  • Interrupt request
    Interrupt request

    The computing phrase "interrupt request" is used to refer to either the act of interrupting the Computer bus lines used to signal an interrupt, or the interrupt input lines on a Programmable Interrupt Controller ....


Footnotes


External links