Tuesday, April 28, 2009

8086 Microprocessor




Intel 8086 microprocessor is a first member of x86 family of processors. Advertised as a "source-code compatible" with Intel 8080 and Intel 8085 processors, the 8086 was not object code compatible with them. The 8086 has complete 16-bit architecture - 16-bit internal registers, 16-bit data bus, and 20-bit address bus (1 MB of physical memory). Because the processor has 16-bit index registers and memory pointers, it can effectively address only 64 KB of memory. To address memory beyond 64 KB the CPU uses segment registers - these registers specify memory locations for code, stack, data and extra data 64 KB segments. The segments can be positioned anywhere in memory, and, if necessary, user programs can change their position. This addressing method has one big advantage - it is very easy to write memory-independent code when the size of code, stack and data is smaller than 64 KB each. The complexity of the code and programming increases, sometimes significantly, when the size of stack, data and/code is larger than 64 KB. To support different variations of this awkward memory addressing scheme many 8086 compilers included 6 different memory models: tiny, small, compact, medium, large and huge. 64 KB direct addressing limitation was eliminated with the introduction of the 32-bit protected mode in Intel 80386 processor.
Intel 8086 instruction set includes a few very powerful string instructions. When these instructions are prefixed by REP (repeat) instruction, the CPU will perform block operations - move block of data, compare data blocks, set data block to certain value, etc, that is one 8086 string instruction with a REP prefix could do as much as a 4-5 instruction loop on some other processors. To be fair, the Zilog Z80 included move and search block instructions, and Motorola 68000 could execute block operations using just two instructions.
The 8086 microprocessor provides support for Intel 8087 numeric co-processor. The CPU recognizes all Floating-Point (FP) instructions. When the FP instructions reference the memory, the CPU calculates memory address and performs dummy memory read. The calculated address, and possibly read data, is captured by the FPU. After that the CPU proceeds to the next instruction, while the FPU executes the floating-point instruction. Thus, both integer and floating-point instructions can be executed concurrently.
Original Intel 8086 CPU was manufactured using HMOS technology. Later Intel introduced 80C86 and 80C86A - CHMOS versions of the CPU. These microprocessors had much lower power consumption and featured standby mode.

0 comments: