Unit 2 Part A
Unit 2 Part A
8086 Architecture
A Microprocessor is an important part of a computer architecture without which you will not
be able to perform anything on your computer. It is a programmable device that takes in input
performs some arithmetic and logical operations over it and produces the desired output. In
simple words, a Microprocessor is a digital device on a chip that can fetch instructions from
memory, decode and execute them, and give results.
Generations of microprocessors:
1. First-generation – From 1971 to 1972 the era of the first generation came
which brought microprocessors like INTEL 4004 Rockwell international PPS-4
INTEL 8008 etc.
3. Third generation – The third generation brought forward the 16-bit processors
like INTEL 8086/80186/80286 Motorola 68000 68010 etc. From 1979 to 1980
this generation used the HMOS technology.
5. Fifth-generation – From 1995 till now we are in the fifth generation. 64-bit
processors like PENTIUM, Celeron, dual, quad, and octa-core processors came
into existence.
Types of microprocessors :
• Complex instruction set microprocessor – The processors are designed to
minimize the number of instructions per program and ignore the number of
cycles per instruction. The compiler is used to translate a high-level language to
assembly-level language because the length of code is relatively short and an
extra RAM is used to store the instructions. These processors can do tasks like
downloading, uploading, and recalling data from memory. Apart from these
tasks, this microprocessor can perform complex mathematical calculations in a
single command.
Example: IBM 370/168, VAX 11/780
Disadvantages of microprocessors –
1. Overheating occurs due to overuse
2. Performance depends on the size of the data
3. Large board size than microcontrollers
4. Most microprocessors do not support floating-point operations
Features of 8086
• It is a 16-bit Microprocessor (μp). It’s ALU, internal registers works with 16bit binary
word.
• 8086 has a 20 bit address bus can access up to 2 20= 1 MB memory locations.
• 8086 has a 16bit data bus. It can read or write data to a memory/port either 16bits or
8 bit at a time.
• It can support up to 64K I/O ports.
• It provides 14, 16 -bit registers.
• Frequency range of 8086 is 6-10 MHz
• It has multiplexed address and data bus AD0- AD15 and A16 – A19.
• It requires single phase clock with 33% duty cycle to provide internal timing.
• It can prefetch upto 6 instruction bytes from memory and queues them in order to
speed up instruction execution.
• It requires +5V power supply.
• A 40 pin dual in line package.
• 8086 is designed to operate in two modes, Minimum mode and Maximum mode.
• The minimum mode is selected by applying logic 1 to the MN / MX# input pin.
• This is a single microprocessor configuration.
• The maximum mode is selected by applying logic 0 to the MN / MX# input pin.
• This is a multi micro processors configuration.
The architecture of the 8086 microprocessor is based on a complex instruction set computer
(CISC) architecture, which means that it supports a wide range of instructions, many of which
can perform multiple operations in a single instruction.
The 8086 microprocessor has a segmented memory architecture, which means that memory
is divided into segments that are addressed using both a segment register and an offset. The
segment register points to the start of a segment, while the offset specifies the location of a
specific byte within the segment.
The 8086 microprocessor has two main execution units: the execution unit (EU) and the bus
interface unit (BIU). The BIU is responsible for fetching instructions from memory and
decoding them, while the EU executes the instructions. The BIU also manages data transfer
between the microprocessor and memory or I/O devices.
The 8086 microprocessor has a rich set of registers, including general-purpose registers,
segment registers, and special registers. The general-purpose registers can be used to store
data and perform arithmetic and logical operations, while the segment registers are used to
address memory segments. The special registers include the flags register, which stores status
information about the result of the previous operation, and the instruction pointer (IP), which
points to the next instruction to be executed.
8086 does not have a RAM or ROM inside it. However, it has internal registers for storing
intermediate and final results and interfaces with memory located outside it through the
System Bus.
In the case of 8086, it is a 16-bit Integer processor in a 40-pin, Dual Inline Packaged IC.
The size of the internal registers(present within the chip) indicates how much information the
processor can operate on at a time (in this case 16-bit registers) and how it moves data around
internally within the chip, sometimes also referred to as the internal data bus.
8086 provides the programmer with 14 internal registers, each of 16 bits or 2 bytes wide. The
main advantage of the 8086 microprocessor is that it supports Pipelining.
8086 is designed to operate in two modes, Minimum mode and Maximum mode. o The
minimum mode is selected by applying logic 1 to the MN / MX# input pin. This is a single
microprocessor configuration. o The maximum mode is selected by applying logic 0 to the MN
/ MX# input pin. This is a multi micro processors configuration.
Memory segmentation:
• To increase execution speed and fetching speed, 8086 segments the memory.
• Its 20-bit address bus can address 1MB of memory, it segments it into 16 64kB
segments.
• 8086 works only with four 64KB segments within the whole 1MB memory.
The internal architecture of Intel 8086 is divided into 2 units: The Bus Interface Unit (BIU),
and The Execution Unit (EU). These are explained as following below.
It provides the interface of 8086 to external memory and I/O devices via the System Bus. It
performs various machine cycles such as memory read, I/O read, etc. to transfer data between
memory and I/O devices.
BIU performs the following functions are as follows:
• It generates the 20-bit physical address for memory access.
• It fetches instructions from the memory.
• It transfers data to and from the memory and I/O.
• Maintains the 6-byte pre-fetch instruction queue(supports pipelining).
BIU mainly contains the 4 Segment registers, the Instruction Pointer, a pre-fetch queue,
and an Address Generation Circuit.
1. Instruction Pointer (IP):
• It is a 16-bit register. It holds offset of the next instructions in the Code Segment.
• IP is incremented after every instruction byte is fetched.
• IP gets a new value whenever a branch instruction occurs.
• CS is multiplied by 10H to give the 20-bit physical address of the Code Segment.
• The address of the next instruction is calculated by using the formula CS x 10H +
IP.
• Code Segment register: (16 Bit register): CS holds the base address for the Code
Segment. All programs are stored in the Code Segment and accessed via the IP.
• Data Segment register: (16 Bit register): DS holds the base address for the Data
Segment.
• Stack Segment register: (16 Bit register): SS holds the base address for the Stack
Segment.
• Extra Segment register: (16 Bit register): ES holds the base address for the Extra
Segment.
The Prefetch Unit in the 8086 microprocessor is a component responsible for fetching
instructions from memory and storing them in a queue. The prefetch unit allows the 8086 to
perform multiple instruction fetches in parallel, improving the overall performance of the
microprocessor.
The prefetch unit consists of a buffer and a program counter that are used to fetch instructions
from memory. The buffer stores the instructions that have been fetched and the program
counter keeps track of the memory location of the next instruction to be fetched. The prefetch
unit fetches several instructions ahead of the current instruction, allowing the 8086 to execute
instructions from the buffer rather than from memory.
This parallel processing of instruction fetches helps to reduce the wait time for memory
access, as the 8086 can continue to execute instructions from the buffer while it waits for
memory access to complete. This results in improved overall performance, as the 8086 is
able to execute more instructions in a given amount of time.
The prefetch unit is an important component of the 8086 microprocessor, as it allows the
microprocessor to work more efficiently and perform more instructions in a given amount of
time. This improved performance helps to ensure that the 8086 remains competitive in its
performance and capabilities, even as technology continues to advance.
The main components of the EU are General purpose registers, the ALU, Special purpose
registers, the Instruction Register and Instruction Decoder, and the Flag/Status Register.
1. Fetches instructions from the Queue in BIU, decodes, and executes arithmetic and
logic operations using the ALU.
2. Sends control signals for internal data transfer operations within the
microprocessor.(Control Unit)
3. Sends request signals to the BIU to access the external module.
4. It operates with respect to T-states (clock cycles) and not machine cycles.
1. 8086 has four 16-bit general purpose registers AX, BX, CX, and DX which store
intermediate values during execution. Each of these has two 8-bit parts (higher and
lower).
• AX register: (Combination of AL and AH Registers)
It holds operands and results during multiplication and division operations. Also
an accumulator during String operations.
2. Arithmetic Logic Unit (16-bit): Performs 8 and 16-bit arithmetic and logic
operations.
3. Special purpose registers (16-bit): Special purpose registers are called Offset
registers also. Which points to specific memory locations under each segment.
We can understand the concept of segments as Textbook pages. Suppose there are 10 chapters
in one textbook and each chapter takes exactly 100 pages. So the book will contain 1000
pages. Now suppose we want to access page number 575 from the book then 500 will be the
segment base address which can be anything in the context of microprocessors like Code,
Data, Stack, and Extra Segment. So 500 will be segment registers that are present in Bus
Interface Unit (BIU). And 500 + 75 is called an offset register through which we can reach
on specific page number under a specific segment.
Hence 500 is the segment base address and 75 is an offset address or (Instruction Pointer,
Stack Pointer, Base Pointer, Source Index, Destination Index) any of the above according to
their segment implementation.
• Stack Pointer: Points to Stack top. Stack is in Stack Segment, used during
instructions like PUSH, POP, CALL, RET etc.
• Base Pointer: BP can hold the offset addresses of any location in the stack
segment. It is used to access random locations of the stack.
• Source Index: It holds offset address in Data Segment during string operations.
• Destination Index: It holds offset address in Extra Segment during string
operations.
4. Instruction Register and Instruction Decoder:
The EU fetches an opcode from the queue into the instruction register. The instruction
decoder decodes it and sends the information to the control circuit for execution.
5. Flag/Status register (16 bits): It has 9 flags that help change or recognize the state
of the microprocessor.
6 Status flags:
1. Carry flag(CF)
2. Parity flag(PF)
3. Auxiliary carry flag(AF)
4. Zero flag(Z)
5. Sign flag(S)
6. Overflow flag (O)
Status flags are updated after every arithmetic and logic operation.
3 Control flags:
1. Trap flag(TF)
2. Interrupt flag(IF)
3. Direction flag(DF)
These flags can be set or reset using control instructions like CLC, STC, CLD, STD, CLI,
STI, etc. The Control flags are used to control certain operations.
4. Decode unit:
The Decode Unit in the 8086 microprocessor is a component that decodes the instructions
that have been fetched from memory. The decode unit takes the machine code instructions
and translates them into micro-operations that can be executed by the microprocessor’s
execution unit.
The Decode Unit works in parallel with the Prefetch Unit, which fetches instructions from
memory and stores them in a queue. The Decode Unit reads the instructions from the queue
and translates them into micro-operations that can be executed by the microprocessor.
The Decode Unit is an important component of the 8086 microprocessor, as it allows the
microprocessor to execute instructions efficiently and accurately. The decode unit ensures
that the microprocessor can execute complex instructions, such as jump instructions and loop
instructions, by translating them into a series of simple micro-operations.
The Decode Unit is responsible for decoding instructions, performing register-to-register
operations, and performing memory-to-register operations. It also decodes conditional
jumps, calls, and returns, and performs data transfers between memory and registers.
The Decode Unit helps to improve the performance of the 8086 microprocessor by allowing
it to execute instructions quickly and accurately. This improved performance helps to ensure
that the 8086 remains competitive in its performance and capabilities, even as technology
continues to advance.
5. Control unit :
The Control Unit in the 8086 microprocessor is a component that manages the overall
operation of the microprocessor. The control unit is responsible for controlling the flow of
instructions through the microprocessor and coordinating the activities of the other
components, including the Decode Unit, Execution Unit, and Prefetch Unit.
The Control Unit acts as the central coordinator for the microprocessor, directing the flow of
data and instructions and ensuring that the microprocessor operates correctly. It also monitors
the state of the microprocessor, ensuring that the correct sequence of operations is followed.
The Control Unit is responsible for fetching instructions from memory, decoding them,
executing them, and updating the microprocessor’s state. It also handles interrupt requests
and performs system management tasks, such as power management and error handling.
The Control Unit is an essential component of the 8086 microprocessor, as it allows the
microprocessor to operate efficiently and accurately. The control unit ensures that the
microprocessor can execute complex instructions, such as jump instructions and loop
instructions, by coordinating the activities of the other components.
The Control Unit helps to improve the performance of the 8086 microprocessor by managing
the flow of instructions and data through the microprocessor, ensuring that the
microprocessor operates correctly and efficiently. This improved performance helps to
ensure that the 8086 remains competitive in its performance and capabilities, even as
technology continues to advance.
Advantages of Architecture of 8086:
The architecture of the 8086 microprocessor provides several advantages, including:
1. Wide range of instructions: The 8086 microprocessor supports a wide range of
instructions, allowing programmers to write complex programs that can perform
many different operations.
2. Segmented memory architecture: The segmented memory architecture allows the
8086 microprocessor to address large amounts of memory, up to 1 MB, while still
using a 16-bit data bus.
3. Powerful instruction set: The instruction set of the 8086 microprocessor includes
many powerful instructions that can perform multiple operations in a single
instruction, reducing the number of instructions needed to perform a given task.
4. Multiple execution units: The 8086 microprocessor has two main execution units,
the execution unit and the bus interface unit, which work together to efficiently
execute instructions and manage data transfer.
5. Rich set of registers: The 8086 microprocessor has a rich set of registers, including
general-purpose registers, segment registers, and special registers, allowing
programmers to efficiently manipulate data and control program flow.
6. Backward compatibility: The architecture of the 8086 microprocessor is backward
compatible with earlier 8-bit microprocessors, allowing programs written for
these earlier microprocessors to be easily ported to the 8086 microprocessor.
Dis-advantages of Architecture of 8086:
The architecture of the 8086 microprocessor has some disadvantages, including:
1. Complex programming: The architecture of the 8086 microprocessor is complex
and can be difficult to program, especially for novice programmers who may not
be familiar with the assembly language programming required for the 8086
microprocessor.
2. Segmented memory architecture: While the segmented memory architecture
allows the 8086 microprocessor to address a large amount of memory, it can be
difficult to program and manage, as it requires programmers to use both segment
registers and offsets to address memory.
3. Limited performance: The 8086 microprocessor has a limited performance
compared to modern microprocessors, as it has a slower clock speed and a limited
number of execution units.
4. Limited instruction set: While the 8086 microprocessor has a wide range of
instructions, it has a limited instruction set compared to modern microprocessors,
which can limit its functionality and performance in certain applications.
5. Limited memory addressing: The 8086 microprocessor can only address up to 1
MB of memory, which can be limiting in applications that require large amounts
of memory.
6. Lack of built-in features: The 8086 microprocessor lacks some built-in features
that are commonly found in modern microprocessors, such as hardware floating-
point support and virtual memory management.