Looking for:
Vmware workstation 12 you must update tools to enable 3d acceleration free -VMware Workstation Pro vs VMware Workstation Player
The was introduced in as a fully bit extension of Intel's 8-bit microprocessor, with memory segmentation as a solution for addressing more memory than can be covered by a plain bit address.
The term "x86" came into being because the names of several successors to Intel's processor end in "86", including the , , and processors. The term is not synonymous with IBM PC compatibility , as this implies a multitude of other computer hardware. Embedded systems and general-purpose computers used x86 chips before the PC-compatible market started , [b] some of them before the IBM PC debut.
As of June [update] , most desktop and laptop computers sold are based on the x86 architecture family, [2] while mobile categories such as smartphones or tablets are dominated by ARM. At the high end, x86 continues to dominate compute-intensive workstation and cloud computing segments. In the s and early s, when the and were still in common use, the term x86 usually represented any compatible CPU.
Today, however, x86 usually implies a binary compatibility also with the bit instruction set of the This is due to the fact that this instruction set has become something of a lowest common denominator for many modern operating systems and probably also because the term became common after the introduction of the in A few years after the introduction of the and , Intel added some complexity to its naming scheme and terminology as the "iAPX" of the ambitious but ill-fated Intel iAPX processor was tried on the more successful family of chips, [c] applied as a kind of system-level prefix.
An system , including coprocessors such as and , and simpler Intel-specific system chips, [d] was thereby described as an iAPX 86 system. Although the was primarily developed for embedded systems and small multi-user or single-user computers, largely as a response to the successful compatible Zilog Z80 , [9] the x86 line soon grew in features and processing power.
Today, x86 is ubiquitous in both stationary and portable personal computers, and is also used in midrange computers , workstations , servers, and most new supercomputer clusters of the TOP list. A large amount of software , including a large list of x86 operating systems are using xbased hardware.
Modern x86 is relatively uncommon in embedded systems , however, and small low power applications using tiny batteries , and low-cost microprocessor markets, such as home appliances and toys, lack significant x86 presence.
There have been several attempts, including by Intel, to end the market dominance of the "inelegant" x86 architecture designed directly from the first simple 8-bit microprocessors. However, the continuous refinement of x86 microarchitectures , circuitry and semiconductor manufacturing would make it hard to replace x86 in many segments. AMD's bit extension of x86 which Intel eventually responded to with a compatible design [11] and the scalability of x86 chips in the form of modern multi-core CPUs, is underlining x86 as an example of how continuous refinement of established industry standards can resist the competition from completely new architectures.
The table below lists processor models and model series implementing various architectures in the x86 family, in chronological order. Each line item is characterized by significantly improved or commercially successful processor microarchitecture designs.
Such x86 implementations were seldom simple copies but often employed different internal microarchitectures and different solutions at the electronic and physical levels. Quite naturally, early compatible microprocessors were bit, while bit designs were developed much later. For the personal computer market, real quantities started to appear around with i and i compatible processors, often named similarly to Intel's original chips.
After the fully pipelined i , in Intel introduced the Pentium brand name which, unlike numbers, could be trademarked for their new set of superscalar x86 designs. With the x86 naming scheme now legally cleared, other x86 vendors had to choose different names for their xcompatible products, and initially some chose to continue with variations of the numbering scheme: IBM partnered with Cyrix to produce the 5x86 and then the very efficient 6x86 M1 and 6x86 MX MII lines of Cyrix designs, which were the first x86 microprocessors implementing register renaming to enable speculative execution.
AMD meanwhile designed and manufactured the advanced but delayed 5k86 K5 , which, internally , was closely based on AMD's earlier 29K RISC design; similar to NexGen 's Nx , it used a strategy such that dedicated pipeline stages decode x86 instructions into uniform and easily handled micro-operations , a method that has remained the basis for most x86 designs to this day.
Some early versions of these microprocessors had heat dissipation problems. The 6x86 was also affected by a few minor compatibility problems, the Nx lacked a floating-point unit FPU and the then crucial pin-compatibility, while the K5 had somewhat disappointing performance when it was eventually introduced. Customer ignorance of alternatives to the Pentium series further contributed to these designs being comparatively unsuccessful, despite the fact that the K5 had very good Pentium compatibility and the 6x86 was significantly faster than the Pentium on integer code.
VIA Technologies ' energy efficient C3 and C7 processors, which were designed by the Centaur company, were sold for many years following their release in Centaur's design, the VIA Nano , was their first processor with superscalar and speculative execution. It was introduced at about the same time in as Intel introduced the Intel Atom , its first "in-order" processor after the P5 Pentium.
Many additions and extensions have been added to the original x86 instruction set over the years, almost consistently with full backward compatibility. The release of its newest "7" family [16] of x86 processors e. KX , which are not quite as fast as AMD or Intel chips but are still state of the art, [17] had been planned for ; as of March the release had not taken place, however.
The instruction set architecture has twice been extended to a larger word size. In , Intel released the bit later known as i which gradually replaced the earlier bit chips in computers although typically not in embedded systems during the following years; this extended programming model was originally referred to as the i architecture like its first implementation but Intel later dubbed it IA when introducing its unrelated IA architecture.
In —, AMD extended this bit architecture to 64 bits and referred to it as x in early documents and later as AMD Microsoft Windows, for example, designates its bit versions as "x86" and bit versions as "x64", while installation files of bit Windows versions are required to be placed into a directory called "AMD64". The x86 architecture is a variable instruction length, primarily " CISC " design with emphasis on backward compatibility.
The instruction set is not typical CISC, however, but basically an extended version of the simple eight-bit and architectures. Byte-addressing is enabled and words are stored in memory with little-endian byte order. Memory access to unaligned addresses is allowed for almost all instructions. The largest native size for integer arithmetic and memory addresses or offsets is 16, 32 or 64 bits depending on architecture generation newer processors include direct support for smaller integers as well.
Multiple scalar values can be handled simultaneously via the SIMD unit present in later generations, as described below. Typical instructions are therefore 2 or 3 bytes in length although some are much longer, and some are single-byte. To further conserve encoding space, most registers are expressed in opcodes using three or four bits, the latter via an opcode prefix in bit mode, while at most one operand to an instruction can be a memory location.
Among other factors, this contributes to a code size that rivals eight-bit machines and enables efficient use of instruction cache memory. The relatively small number of general registers also inherited from its 8-bit ancestors has made register-relative addressing using small immediate offsets an important method of accessing operands, especially on the stack. Much work has therefore been invested in making such accesses as fast as register accesses—i.
A dedicated floating-point processor with bit internal registers, the , was developed for the original This microprocessor subsequently developed into the extended , and later processors incorporated a backward compatible version of this functionality on the same microprocessor as the main processor. In addition to this, modern x86 designs also contain a SIMD -unit see SSE below where instructions can work in parallel on one or two bit words, each containing two or four floating-point numbers each 64 or 32 bits wide respectively , or alternatively, 2, 4, 8 or 16 integers each 64, 32, 16 or 8 bits wide respectively.
The presence of wide SIMD registers means that existing x86 processors can load or store up to bits of memory data in a single instruction and also perform bitwise operations although not integer arithmetic [n] on full bits quantities in parallel.
During execution , current x86 processors employ a few extra decoding steps to split most instructions into smaller pieces called micro-operations. These are then handed to a control unit that buffers and schedules them in compliance with xsemantics 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 pipelined , superscalar , and also capable of out of order and speculative execution via branch prediction , register renaming , and memory dependence prediction , 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, in the mids, this method 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 used since the s also inherently shares many of the same properties; the new method 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 micro-op which fits the execution model better and thus can be executed faster or with fewer 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. Transmeta used a completely different method in their Crusoe x86 compatible CPUs. Transmeta argued that their approach allows for more power efficient designs since the CPU can forgo the complicated decode step of more traditional x86 implementations.
Addressing modes for bit processor modes can be summarized by the formula: [22] [23]. Addressing modes for bit x86 processor modes [24] can be summarized by the formula: [25]. Addressing modes for the bit processor mode can be summarized by the formula: [25]. Only words two bytes can be pushed to the stack. The stack grows toward numerically lower addresses, with SS:SP pointing to the most recently pushed item. There are interrupts , which can be invoked by both hardware and software.
The interrupts can cascade, using the stack to store the return address. The original Intel and have fourteen bit registers. Two pointer registers have special roles: SP stack pointer points to the "top" of the stack , and BP base pointer is often used to point at some other place in the stack, typically above the local variables see frame pointer. Finally, the instruction pointer IP points to the next instruction that will be fetched from memory and then executed; this register cannot be directly accessed read or written by a program.
The Intel and are essentially an upgraded or CPU, respectively, with on-chip peripherals added, and they have the same CPU registers as the and in addition to interface registers for the peripherals. The , , , and can use an optional floating-point coprocessor, the The appears to the programmer as part of the CPU and adds eight bit wide registers, st 0 to st 7 , each of which can hold numeric data in one of seven formats: , , or bit floating point, , , or bit binary integer, and bit packed decimal integer.
The is the floating-point coprocessor for the and has the same registers as the with the same data formats. With the advent of the bit processor, the bit general-purpose registers, base registers, index registers, instruction pointer, and FLAGS register , but not the segment registers, were expanded to 32 bits.
The nomenclature represented this by prefixing an " E " for "extended" to the register names in x86 assembly language. The general-purpose registers, base registers, and index registers can all be used as the base in addressing modes, and all of those registers except for the stack pointer can 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 format was expanded.
To provide backward compatibility, segments with executable code can be marked as containing either bit or bit instructions. Special prefixes allow inclusion of bit instructions in a bit segment or vice versa. The had an optional floating-point coprocessor, the ; it had eight bit wide registers: st 0 to st 7 , [29] like the and The could also use an coprocessor. Starting with the AMD Opteron processor, the x86 architecture extended the bit registers into bit registers in a way similar to how the 16 to bit extension took place.
However, these extensions are only usable in bit mode, which is one of the two modes only available in long mode. The addressing modes were not dramatically changed from bit mode, except that addressing was extended to 64 bits, virtual addresses are now sign extended to 64 bits in order to disallow mode bits in virtual addresses , and other selector details were dramatically reduced.
In addition, an addressing mode was added to allow memory references relative to RIP the instruction pointer , to ease the implementation of position-independent code , used in shared libraries in some operating systems. AVX has eight extra bit mask registers K0—K7 for selecting elements in a vector register. Depending on the vector register and element widths, only a subset of bits of the mask register may be used by a given instruction. Although the main registers with the exception of the instruction pointer are "general-purpose" in the bit and bit versions of the instruction set and can be used for anything, it was originally envisioned that they be used for the following purposes:.
Some instructions compile and execute more efficiently when using these registers for their designed purpose. For example, using AL as an accumulator and adding an immediate byte value to it produces the efficient add to AL opcode of 04h, whilst using the BL register produces the generic and longer add to register opcode of 80C3h. Another example is double precision division and multiplication that works specifically with the AX and DX registers. Modern compilers benefited from the introduction of the sib byte scale-index-base byte that allows registers to be treated uniformly minicomputer -like.
However, using the sib byte universally is non-optimal, as it produces longer encodings than only using it selectively when necessary.
No comments:
Post a Comment