Intel 8086
From Free net encyclopedia
The 8086 is a 16-bit microprocessor chip designed by Intel in 1978, which gave rise to the x86 architecture. The Intel 8088 (released shortly afterwards) was essentially the same chip, but with an external 8-bit data bus, allowing the use of cheap chipsets. The 8088 is notable as the processor used in the original IBM PC.
Both processors were based on the design of the 8080 and 8085 with a similar register set (the 8086 and 8088 were assembly language source-compatible with the 8080), but was expanded to support 16-bit processing. The Bus Interface Unit fed the instruction stream to the Execution Unit through a 6 byte prefetch queue, so fetch and execution were concurrent – a primitive form of pipelining (8086 instructions varied from 1 to 4 bytes).
Buses:
- Address Bus - 20-bit address bus. Can access 220 memory locations i.e 1 MB of memory.
- Data Bus - 16 bit data bus. Can access 16 bit data in one operation. Hence called 16-bit microprocessor.
- Control buses - Carries the essential signals for various operations.
It featured four 16-bit general registers, which could also be accessed as eight 8-bit registers, and four 16-bit index registers (including the stack pointer). The data registers were often used implicitly by instructions, complicating register allocation for temporary values. It featured 64K 8-bit I/O (or 32K 16 bit) ports and fixed vectored interrupts. Most instructions could only access one memory location, so one operand had to be a register. The result was stored in one of the operands.
There were also four segment registers that could be set from index registers. The segment registers allowed the CPU to access one megabyte + 64 KB - 16 bytes of memory in an odd way. Rather than just supplying missing bytes, as in most segmented processors, the 8086 shifted the segment register left 4 bits and added it to the address. As a result segments overlapped, which most people consider to have been poor design. Although this was largely acceptable (and even useful) for assembly language, where control of the segments was complete, it caused confusion in languages which make heavy use of pointers (such as C). It made efficient representation of pointers difficult, and made it possible to have up to 4096 pointers with different values pointing to the same location. Worse, this scheme made expanding the address space to more than one megabyte + 64 KB - 16 bytes difficult. Effectively, it was expanded by changing the addressing scheme in the 80286.
The processor runs at clock speeds between 4.77 (as with the 8088 version used in the original IBM PC) and 10 MHz.
Typical execution times in cycles (estimates):
- addition: 3–4 (register), 9+EA–25+EA (memory access)
- multiplication: 70–118 (register), 76+EA–143+EA (memory access)
- move: 2 (register), 8+EA–14+EA (memory access)
- near jump: 11–15, 18+EA (memory access)
- far jump: 15, 24+EA (memory access)
EA: time to compute effective address, ranging from 5 to 12 cycles
The 8086 did not contain any floating point instructions, but could be connected to a mathematical coprocessors to add this capability. The Intel 8087 was the standard version and used as a Math Co-processor operating on 80-bit numbers , but manufacturers like Weitek soon offered higher performance alternatives.
The 8086 was cloned by the NEC V20, V25 and V30 processors.
Microcomputers using the 8086
The first commercial microcomputer built on the basis of the 8086 was the Mycron 2000.
The IBM Displaywriter word processing machine and Wang Professional Computer also used the 8086. The most influential microcomputer of all, the IBM PC, used the Intel 8088, a version of the 8086 with a narrower memory bus.
External links
Intel processors 4004 | 4040 | 8008 | 8080 | 8085 | 8086 | 8088 | iAPX 432 | 80186 | 80188 | 80286 | 80386 | 80486 | i860 | i960 | Pentium | Pentium Pro | Pentium II | Celeron | Pentium III | XScale | Pentium 4 | Pentium M | Pentium D | Pentium Extreme Edition | Xeon | Core | Itanium | Itanium 2 (italics indicate non-x86 processors) |
Article based on Intel 8086 at FOLDOC, used with permission.cs:Intel 8086 de:Intel 8086 es:Intel 8086 y 8088 fr:Intel 8086 ko:인텔 8086 id:Intel 8086 it:Intel 8086 ms:Intel 8086 nl:8086 (processor) ja:Intel 8086 pl:Intel 8086 pt:Intel 8086 ru:Intel 8086 fi:Intel 8086 sv:Intel 8086 zh:Intel 8086