0% found this document useful (0 votes)
251 views23 pages

8087

The document discusses the architecture and functioning of the 8087 math coprocessor, which was designed by Intel to work alongside the 8086 and 8088 processors in order to improve the speed of floating point calculations. The 8087 contains a control unit and numeric execution unit that work asynchronously to execute floating point instructions and manage communication between the CPU and memory. It also has registers like the status and control registers that provide information on the coprocessor's status and control its operating modes.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as ODP, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
251 views23 pages

8087

The document discusses the architecture and functioning of the 8087 math coprocessor, which was designed by Intel to work alongside the 8086 and 8088 processors in order to improve the speed of floating point calculations. The 8087 contains a control unit and numeric execution unit that work asynchronously to execute floating point instructions and manage communication between the CPU and memory. It also has registers like the status and control registers that provide information on the coprocessor's status and control its operating modes.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as ODP, PDF, TXT or read online on Scribd
You are on page 1/ 23

20­Nov­10

Introduction

 8087 was the first math coprocessor for 16­bit 

www.eazynotes.com
processors designed by Intel.
 It was built to pair with 8086 and 8088.
 The purpose of 8087 was to speed up the 
computations involving floating point calculations.
 Addition, subtraction, multiplication and division 
of simple numbers is not the coprocessor’s job.
 It does all the calculations involving floating point 
numbers like scientific calculations and algebraic 
functions. 1
20­Nov­10
Introduction

 By having a coprocessor, which performs all the 
calculations, it can free up a lot of CPU’s time.

www.eazynotes.com
 This would allow the CPU to focus all of its resources on the 
other functions it has to perform.
 This increases the overall speed and performance of the 
entire system.
 This coprocessor introduced about 60 new instructions 
available to the programmer.
 All the mnemonics begin with “F” to differentiate them from 
the standard 8086 instructions.
 For e.g.: in contrast to ADD/MUL, 8087 provide  2
FADD/FMUL.
20­Nov­10
Introduction

 Math coprocessor is also called as:

www.eazynotes.com
 Numeric Processor Extension (NPX)

 Numeric Data Processor (NDP)

 Floating Point Unit (FPU)

3
 The 8087 is divided into 2 sections CU and NEU. That’s is 
control unit and numeric execution unit.
 The numeric execution unit executes all numeric processor 
instructions  while  control  unit  receives,  decodes 
instructions,  read  and  writes  memory  operands  and 
executes 8087 control instructions.
 These 2 units works asynchronously with each other. 
 The  control  unit  is  majorly  responsible  for  establishing 
communication  between  CPU  and  memory  and  also  for 
coordinating internal coprocessor execution.
 The  NEU  has  8  registers  80  bit  wide  stack  that  holds 
operands for arithmetic instructions and their result. 
 The  FSTSW  AX;  is  the  instructions  used  for 
communication between coprocessor and micro processor.
 The  control  unit  is  used  to  synchronize  operation  between 
coprocessor and microprocessor.  
 The unit has a control word a status word and a data 
buffer.  If  the  instruction  is  an  ESCape  (coprocessor) 
instruction  the  coprocessor  executes  it  otherwise  the 
microprocessor executes it. 
 The status register reflects the overall operation of the 
coprocessor.
 The  8087  is  a  numeric  data  processor.  It  is  basically 
made  to  work  along  with  the  8086  and  8088 
processors. 
 It  is  incapable  of fetching the  instructions on its own, 
so  it  is  simply  connected  to  respective  buses  of  the 
processor. 
 Its instructions are recognized by word ‘F’ as each and 
every  instructions  starts  with  F.  for  example  FADD, 
FSUB etc.
 The  BUSY  pin  of  the  coprocessor  is  connected  to  the 
main  processor's  TEST  pin.  This  TEST  pin  is  active 
20­Nov­10
Architecture of 8087
 8087 coprocessor is designed to operate with 
8086 microprocessor.

www.eazynotes.com
 The microprocessor and coprocessor  can execute 
their respective instructions simultaneously.
 Microprocessor interprets and executes the 
normal instruction set and the coprocessor 
interprets and executes only the coprocessor 
instructions.
 All the coprocessor instructions are ESC 
instructions, i.e. they start with “F”.
6
20­Nov­10 www.eazynotes.com
7
Architecture of 8087
20­Nov­10
Architecture of 8087
 The internal structure of 8087 coprocessor is 
divided into two major sections:

www.eazynotes.com
 Control Unit (CU)

 Numerical Execution Unit (NEU)

8
20­Nov­10
Control Unit (CU)
 It interfaces coprocessor to the microprocessor 
system bus.

www.eazynotes.com
 It also synchronize the operation of the 
coprocessor and the microprocessor.
 This unit has a Control Word, Status Word and 
Data Buffer.
 If an instruction is ESC instruction, then 
coprocessor executes it.
 If not, then microprocessor executes.
9
20­Nov­10
Numeric Execution Unit (NEU)
 This unit is responsible for executing all 
coprocessor instructions.

www.eazynotes.com
 It has an 8 register stack that holds the operands 
for instructions and result of instructions.
 The stack contains 8 registers that are 80­bits 
wide.
 Numeric data is transferred inside the 
coprocessor in two parts:
 64­bit mantissa bus

 16­bit exponent bus
10
20­Nov­10 www.eazynotes.com
11
Status Register
20­Nov­10
Status Register

www.eazynotes.com
 Status Register tells the overall status of 8087 
coprocessor.
 It is a 16­bit register.
 It is accessed by executing the FSTSW 
instruction.
 This instruction stores the contents of status 
register into memory.
 Once the status is stored in memory, the bit 
12
positions of the status register can be examined.
20­Nov­10
Status Register

www.eazynotes.com
 Busy: It indicates that the coprocessor is busy 
executing the task.
 Condition Codes (C0­C3): They indicate various conditions about 
the coprocessor.

 Top of Stack: It indicates a register as top of stack register, out of the eight stack 

registers.

 Exception Flag: It is set if any of the exception flag bits (SF, PR, UF, OF, ZD, DN, 

IO) are set. 13
20­Nov­10
Status Register

www.eazynotes.com
 Stack Fault: It is not available in 8087. It is 
active only in 80387  and above.
 Precision: It indicates that the result has 
exceeded the selected precision.
 Underflow: It tells if the result is too small to 
fit in a register.
 Overflow: It tells if the result is too large to fit 
in a register.
14
20­Nov­10
Status Register

www.eazynotes.com
 Zero Divide: It indicates that you try to divide a 
non­zero value by zero.
 Denormalized: It indicates that at least one of 
the operand is de­normalized.
 Invalid Operation: It indicates an invalid 
operation. For e.g.: pushing more than eight 
items onto the stack, attempting to pop an item 
off an empty stack or taking the square root of a 
negative number. 15
20­Nov­10 www.eazynotes.com
16
Control Register
20­Nov­10
Control Register

www.eazynotes.com
 Control Register controls the operating modes of 
8087.
 It is also a 16­bit register.
 It performs rounding control and precision control.
 It is also used to do masking and unmasking of the 
exception bits that correspond to the rightmost six 
bits of the status register.
 FLDCW instruction is used to load the value into 
control register. 17
20­Nov­10
Control Register

www.eazynotes.com
 Rounding Control: It determines the type of 
rounding or truncating to be done.
 Precision Control: It sets the precision of the 
result.
 Exception Masks: It determines that whether an 
error effects the exception bits in the status register.
 If it is one, then the corresponding error is ignored.

 If it is zero and the corresponding error occurs, then it 
generates an interrupt, and the corresponding bit in 
status register is set. 18
20­Nov­10
Tag Register

www.eazynotes.com
TAG 7 TAG 6 TAG 5 TAG 4 TAG 3 TAG 2 TAG 1 TAG 0

Tag Values:
00 = Valid
01 = Zero
10 = Invalid
11 = Empty

19
TAG 7 TAG 6 TAG 5 TAG 4 TAG 3 TAG 2 TAG 1 TAG 0

20­Nov­10
Tag Values:
Tag Register 00 = Valid
01 = Zero
10 = Invalid
11 = Empty

www.eazynotes.com
 Tag Register is used to indicate the contents of 
each register in the stack.
 There are total 8 tags (Tag 0 to Tag 7) in this 
register and each tag uses 2 bits to represent a 
value.
 Therefore, it is a 16­bit register.

20
20­Nov­10
Pin Diagram of 8087
GND VCC
AD14 AD15
AD13 A16/S3
AD12 A17/S4

www.eazynotes.com
AD11 A18/S5
AD10 A19/S6
AD9 BHE/S7
AD8
8087 RQ/GT1
AD7 INT
AD6 RQ/GT0
AD5 NC
AD4 NC
AD3 S2
AD2 S1
AD1 S0
AD0 QS0
NC QS1
NC BUSY 21

CLK READY
GND RESET
20­Nov­10
Interfacing of 8086 and 8087
 Multiplexed address­data bus lines are 
connected directly from 8086 to 8087.

www.eazynotes.com
 The status lines and the queue status lines are 
connected directly from 8086 to 8087.
 The Request/Grant (RQ/GT0 and RQ/GT1) signals of 8087 are 
connected to RQ/GT0 and RQ/GT1 of 8086.

 BUSY signal of 8087 is connected to TEST pin of 8086.

22
Thank You
Have a Nice Day

23

You might also like