Está en la página 1de 57

CURSO DE

MICROPROCESADORES

“EL COPROCESADOR
ARITMETICO”

Sem I 2018 Ing. Wilson Javier Pérez H.


Introducción
• Un coprocesador es un circuito capaz de acelerar el
calculo de operaciones aritméticas realizadas en punto
flotante y operaciones trascendentales.
Introducción
• 8087 trabaja con el 8086
• 80287 acompaña al 80286,
• 80387 va con el 80386 y así sucesivamente.

Último Coprocesador
vendido por Intel
de forma individual
Características
• El coprocesador se programa de forma similar al
procesador.
• Las instrucciones del coprocesador inician por la letra F
para diferenciarlas de las del procesador.
Procesador Coprocesador
ADD FADD
MUL FMUL
SUB FSUB
Formato de datos
• Los tipos de datos utilizados en los miembros de la
familia 80X87 incluyen:
 Números enteros con signo

 Números en BCD

 Números en punto flotante

• Cada uno tiene un propósito especifico dentro del


sistema, y muchos sistemas requieren de los tres tipos
de datos.
Formato de datos
• Números enteros con signo
• Tipo Palabra (16 bits): Desde –32,768 a +32,767

• Entero Corto (32 bits): Desde –2 x 10+9 a +2 x 10+9

• Entero Largo (64 bits): Desde –9 x 10+18 a +9 x 10+18


Formato de datos
• Números enteros con signo

Entero tipo palabra


15 0
S Magnitud

Entero corto
31 0
S Magnitud

Entero largo
63 0
S Magnitud
Formato de datos
Ejemplo: Definición enteros con signo
Address Assembled Code Pseudo Code Comments
0000 0002 DATA1 DW +2 ; Entero de 16 bits
0002 FFDE DATA2 DW -34 ; Entero de 16 bits
0004 000004D2 DATA3 DD +1234 ; Entero corto
0008 FFFFFF9C DATA4 DD -100 ; Entero corto
000C 0000000000005BA0 DATA5 DQ +23456 ; Entero largo
0014 FFFFFFFFFFFFFF86 DATA6 DQ -122 ; Entero largo
Formato de datos
• Números en BCD
• Requiere 80 bits de memoria

• Se pueden representar datos hasta de 18 dígitos BCD que

ocupan 72 bits.

79 71 0

S x ..x D D D
17 16 15 D D D D D D D D D D D D D D D0
14 13 12 11 10 9 8 7 6 5 4 3 2 1

Bits no
utilizados
Formato de datos
• En formato BCD tanto los números positivos como
negativos se guardan en binario original y nunca en la
forma de complemento de diez.

• La directiva DT se emplea para guardar los datos BCD en


memoria.
Formato de datos
Ejemplo: Declaración datos en BCD

0000 00000000000000000200 DATA1 DT 200 ; 200 decimal en BCD

000A 80000000000000000010 DATA2 DT -10 ; -10 decimal en BCD

0014 00000000000000010020 DATA3 DT 10020 ; 10020 decimal en BCD


Formato de datos
• Números en punto flotante
El rango de los números en punto flotante incluyen sub-rangos idénticos
para los números positivos F + y negativos F 
En la siguiente figura se representa el rango completo de los números
en punto flotante:

 F 0 F +
 +
Exponent Exponent Exponent Exponent
Overflow Underflow Underflow Overflow

Not all real numbers in the Not all real numbers in the
range are representable range are representable
Page 13

Representación
Si consideramos por ejemplo un sistema de punto flotante
sencillo basado tan solo en:
 dos bits de mantisa,
 un exponente base 2 con rango [-2, 0],
 un bit de signo y
 un gap normalizado para los números en punto flotante entre
-4/16 a 4/16

(-1) S ( 1.b1b0 )2 E = (-1)S . (20 + b1.2-1 + b0.2-2) . 2E


Page 14

Representación
Por ejemplo, para S = 0 (numero positivo), E = ‒2 y
 b1b0 = 00
(-1)0 . (20 + 0.2-1 + 0.2-2) . 2-2 = 1 . (1) . 1/4 = 1/4 = 4/16

 b1b0 = 01
(-1)0 . (20 + 0.2-1 + 1.2-2) . 2-2 = 1 . (1 + 1/4) . 1/4 = 5/16

 b1b0 = 10
(-1)0 . (20 + 1.2-1 + 0.2-2) . 2-2 = 1 . (1 + 1/2) . 1/4 = 6/16

 b1b0 = 11
(-1)0 . (20 + 1.2-1 + 1.2-2) . 2-2 = 1 . (1 + 1/2 + 1/4) . 1/4 = 7/16
Page 15

Representación
Vemos que todos los posible números caen en la recta
real mostrada a continuación:
Números negativos normalizados en punto flotante Números positivos normalizados en punto flotante

Se verifica que los números en punto flotante están mas


esparcidos que en punto fijo y que presentan perdida de
precisión.
Representación
 Números en punto flotante
Los números en punto flotante están mas esparcidos que en
punto fijo y por lo tanto este formato presenta perdida de
precisión.
Números Reales

Números en Punto Flotante

Existen diferentes alternativas para la representación del cero


(0), pero la preferida es en la que la mantisa y el exponente son
ambos cero, ya que es idéntica a la representación en punto fijo.
Formato de datos
• Números en punto flotante
En punto flotante los datos se escriben en notación científica.
Los números en base 10 se representan en binario y luego se
escriben en su equivalente en notación científica corriendo el
punto decimal a izquierda o derecha según corresponda, como
se observa en los siguientes ejemplos:

Ejemplo 1. 120.37510 = 1111000.0112


1111000.0112 = 1.1110000112 x 210 +6
Ejemplo 2. – 0.04687510 = – 0.0000112
– 0.0000112 = – 1.12 x 210 –5
Formato de datos
• Números en punto flotante

Se busca que los números en punto flotante no empiecen por


ceros (no leading zeros), ya que esto permite retener el máximo
numero de dígitos significativos en la mantisa. Se conoce como
forma normalizada.

La forma normalizada simplifica la comparación de números en


punto flotante ya que solo se pueden comparar números con
igual exponente.
Representación
 Números en punto flotante
Tipos:
 P. Sencilla (32 bits): Con una polarización de 127 (FFH) y un
1 implícito.

 P. Doble (64 bits): Con una polarización de 1023 (3FFH) y


un 1 implícito.

 P. Extendida (80 bits): Con una polarización de 16363


(3FFFH) y un 1 no implícito.
Representación
• Números en punto flotante

31 30 23 22 0
S Exponente Mantisa
.
63 62 52 51 0
S Exponente Mantisa
.
79 78 64 63 0
S Exponente 1 Mantisa
.
Representación
 Ejemplo: Convertir el decimal 120.375 en un
número decimal de punto flotante de precisión
sencilla.
 Solución:
Paso Resultado
1 120.37510 = 1111000.0112
2 1111000.0112 = 1.1110000112 x 210 +6
3 000001102 + 011111112 = 100001012
S Exponente Mantisa
4 0 10000101 11100001100000000000000
Representación
 Ejemplo: Convertir un número de punto
flotante de precisión sencilla en un número
decimal.
 Solución:
Paso Resultado
S Exponente Mantisa
1 1 10000111 10011011010000000000000
2 100001112 – 011111112 = 000010002
3 1.10011011012 x 210+8
4 110011011.012
5 -411.2510
Representación
• Los números en punto flotante se guardan en
memoria con el ensamblador utilizando las
directivas DD, DQ y DT.

• Ejm:
DATO7 DD -569.3
DATO8 DD 2.5
DATO9 DD 3.58E+7
DATO10 DQ 114.725
DATO11 DQ 0.00012056
DATO12 DT 563.78512
Representación
• Los números en punto flotante se guardan en
memoria con el ensamblador utilizando las
directivas DD, DQ y DT.

• Ejm:
DATO7 DD -569.3
DATO8 DD 2.5 Precisión
DATO9 DD 3.58E+7 sencilla
DATO10 DQ 114.725 Doble precisión
DATO11 DQ 0.00012056
DATO12 DT 563.78512 Precisión
extendida
Representación
• Los valores a ser representados en punto flotante pueden
ser divididos en:
 ceros
 números normalizados
 números desnormalizados
 infinitos
 NaN ¬E, no es un número, (la raíz cuadrada de un número
negativo)
Clase Exp Fracción
Ceros 0 0
Números
0 distinto de 0
desnormalizados
Números normalizados 1-254 cualquiera
Infinitos 255 0
NaN (Not a Number) 255 distinto de 0
Aritmética en Punto Flotante
• SUMA
Tomando como ejemplo la suma de dos datos base 10
en punto flotante con:
2 dígitos para el Exponente y
4 dígitos para la Mantisa.

Datos a sumar: +9,99810 x 10+1 y +1,82310 x 10-1


Aritmética en Punto Flotante
• SUMA
El proceso de suma en punto flotante requiere alinear los
datos adecuadamente.
Para esto, desplazaremos el número mas pequeño hasta
que su exponente coincida con el del número mas grande,
+1,82310 x 10-1 = +0,182310 x 100 = +0,0182310 x 10+1

Debido a que en este ejemplo se tiene la restricción de


emplear solo 4 dígitos en la mantisa, es necesario
redondear el dato a 4 dígitos (se debe elegir una
estrategia de redondeo):
+0,01810 x 10+1
Aritmética en Punto Flotante
• SUMA
Ahora sí podemos sumar los datos
+9,99810 x 10+1
+ +0,01810 x 10+1
+10,01610 x 10+1
Luego se debe normalizar el resultado
+1,001610 x 10+2

Finalmente, se debe ajustar la mantisa (a 4 dígitos)


+1,00210 x 10+2 Resultado final
Aritmética en Punto Flotante
Trabajo Individual:
1. Una vez entendido el proceso para la SUMA, averigüe
el proceso para realizar RESTAS, MULTIPLICACIONES
y DIVISIONES en Punto Flotante.
2. Desarrolle un ejemplo (en punto flotante de precisión
sencilla de 32 bits) para cada una de éstas 4
operaciones.
La arquitectura del 80X87
• Como se mencionó anteriormente, hasta el 80386 los
coprocesadores de la familia Intel se encontraban
instalados en el sistema como un circuito integrado
externo (al procesador).

• A partir de la aparición del 80486DX este circuito se


encuentra interno en el procesador.
La arquitectura del 80X87
40 23
READY D0
Ejemplo: 32
CLK D1
22
35 21
Coprocesador RESET D2
D3
20

Aritmético 37
CLK286 D4
19
18
D5
Intel 80287 2
S0 D6
17
1 16
S1 D7
15
D8
38 14
HLDA D9
36 12
PEACK D10
39 11
CKM D11
8
D12
27 7
NPRD D13
28 6
NPWR D14
5
D15
34
NPS1
33 26
NPS2 ERROR
25
OCUPADO
29
24
CMD0 PEREQ
31
CMD1
3
COD/INTA
La arquitectura del 80X87
• Definición de terminales del 80287
CLK Entrada de reloj
CLM Modo de reloj
CLK286 Entrada de reloj del 80286
RESET Entrada de reinicialización
D15-D0 Canal de datos
BUSY Salida de ocupado
ERROR Salida de error
La arquitectura del 80X87
PEREQ Solicitud de transferencia de datos del operando.
Coprocesador listo para Tx
PEACK La solicitud PEREQ fue reconocida por el µP
NPRD Lectura (RD) del coprocesador
NPWR Escritura (WR) del coprocesador
NPS1,NPS2 Seleccionar coprocesador
CMD1,CMD0 Líneas de comando. Operaciones del coprocesador
HLDA Reconocimiento de cesión del canal
COD/INTA Reconocimiento de código/interrupción
Vcc y Vss Suministro alimentación y tierra
Arquitectura del 8087 y 80287
UNIDAD DE UNIDAD DE CANAL DE FRACCION
CANAL DE
CONTROL EJECUCION EXPONENTE
NUMERICA
PALABRA DE CONTROL MODULO DE UNIDAD DE
PALABRA DE ESTADO EXPONENTE CONOCIMIENTO
PROGRAMABLE

MODULO
ARITMETICO

MEMORIA UNIDAD DE
DATOS CONTROL DE
(BUFFER) MICROCODIGO
REGISTROS
DE TEMPORALES
DATOS COLA DE
ST0
REGISTRO DE ETIQUETAS
OPERANDOS
ST1
ST2 PILA
ST3
ESTADO DE
ST4
DIR Y RASTREO DEL REGISTROS
CANAL ST5
DIRECCION ST6
APUNTADORES DE
EXCEPCION ST7
80 bits
Arquitectura del 80287
 Registro de Estado:

Refleja la operación general del coprocesador.


Se accede al contenido de este registro ejecutando la
instrucción FSTSW que guarda su contenido en una
palabra de memoria.
La instrucción FSTSW AX copia el contenido del
registro de estado al registro AX.
Una vez guardado en memoria (o en el AX) su
contenido puede ser examinado de forma normal.
Arquitectura del 80287
 Palabra de estado de la familia 80X87

15 7 0
B C3 ST C2 C1 C0 IR PE UE OE ZE DE IE

Banderas de excepción (1 = ha ocurrido una excepción)


IE  Operación no valida
DE  Operación anormal
ZE  Sobreflujo
OE  Subflujo
PE  Precisión
IR  Solicitud de interrupción
C3,C2,C1,C0  Código de condición
ST  Apuntador de la parte alta de la pila
B  Ocupado
Arquitectura del 80287
• Bits del código de condición para el registro de estado del 80287

Subnormal = bits
iniciales de la
mantisa son cero
Anormal = el
exponente en su
valor más negativo
Normal = forma
estándar de punto
decimal flotante
NAN ( no es un
número) = un
exponente de unos
y una mantisa que
no es igual a cero
Arquitectura del 80287
• Registro de control
15 7 0
IR RC PC IEM PM UM OM ZM DM IM

Se utiliza la instrucción FLDCW para cargar un valor en el registro de control


Enmascaramiento de excepción (1 = excepción enmascarada)

IM = Operación no valida
DM = Operando fuera de lo normal
ZM = Dividir/Cero
OM = Sobreflujo
UM = Subflujo
PM = Precisión
IEM = Enmascaramiento de habilitación de interrupción.
PC = Control de precisión
IC = Control de infinito
Arquitectura del 80287
 Enmascaramiento de habilitación de interrupciones
 0 = Interrupciones habilitadas
 1 = Interrupciones deshabilitadas (enmascarada)
 Control de precisión
 00 = 24 bits
 01 = (reservado)
 10 = 53 bits
 11 = 64 bits
 Control de redondeo
 00 = Redondear al mas cercano o par
 01 = Redondear hacia abajo (hacia -)
 10 = Redondear hacia arriba (hacia +)
 11 = Recortar (truncar hacia cero)
 Control de infinito
 0 = Proyectivo
 1 = Afinidad
Arquitectura del 80287
• Registro de Etiquetas
Indica el contenido de cada localidad de la pila del
coprocesador

15 0
ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA
(0) (1) (2) (3) (4) (5) (6) (7)

Valores de Etiqueta
00 = Valido
01 = Cero
10 = Invalido o Infinito
11 = Vacio
EJEMPLO 1
• AREA DEL CIRCULO A = R2

AREA PROC FAR


FLD RADIO ; Se carga la variable RADIO a la pila
FMUL ST,ST(0) ; RADIO al cuadrado
FLDPI ; Se carga PI a la pila
FMUL ; Multiplicar ST = ST x ST(1)
FSTP AREA ; Se guarda el resultado en la variable AREA
FWAIT ; Sincronizar con el procesador
RET
AREA ENDP
EJEMPLO 1
• AREA DEL CIRCULO
En el Segmento de Datos
RADIO DD 5.95
AREA PROC FAR
AREA DD ?
FLD RADIO
FMUL ST,ST(0)
ST(0) RADIO ST
FLDPI
ST(1)
FMUL ST(2)
FSTP AREA ST(3)
FWAIT ST(4) ...
RET
AREA ENDP
EJEMPLO 1
• AREA DEL CIRCULO

AREA PROC FAR


FLD RADIO
FMUL ST,ST(0)
ST(0) RADIO2 ST
FLDPI
ST(1)
FMUL ST(2)
FSTP AREA ST(3)
FWAIT ST(4) ...
RET
AREA ENDP
EJEMPLO 1
• AREA DEL CIRCULO

AREA PROC FAR


FLD RADIO
FMUL ST,ST(0)
ST(0)  ST
FLDPI
ST(1) RADIO2
FMUL ST(2)
FSTP AREA ST(3)
FWAIT ST(4) ...
RET
AREA ENDP
EJEMPLO 1
• AREA DEL CIRCULO

AREA PROC FAR


FLD RADIO
FMUL ST,ST(0)
ST(0)  RADIO2 ST
FLDPI
ST(1)
FMUL ST(2)
FSTP AREA ST(3)
FWAIT ST(4) ...
RET
AREA ENDP
EJEMPLO 1
• AREA DEL CIRCULO

AREA   RADIO2
AREA PROC FAR
FLD RADIO
FMUL ST,ST(0)
ST(0) ST
FLDPI
ST(1)
FMUL ST(2)
FSTP AREA ST(3)
FWAIT ST(4) ...
RET
AREA ENDP
EJEMPLO 2
• FRECUENCIA RESONANTE F = 1/ 2 LC
.286
.287
DATA SEGMENT
FR DD ?
L DD 0.00001
C DD 0.00001
TWO DD 2.0
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,
DS:DATA
FRES PROC FAR
MOV AX,@DATA
MOV DS,AX
. . . (continua)
EJEMPLO 2
• FRECUENCIA RESONANTE F = 1/ 2 LC
. . . (continuación)
FLD L
FMUL C
FSQRT
FMUL TWO
FLDPI
FMUL
FLD1
FDIVR
FSTP FR
FWAIT
RET
FRES ENDP
CODE ENDS
END
EJEMPLO 2
• FRECUENCIA RESONANTE

FRES PROC FAR


FLD L
FMUL C
FSQRT
FMUL TWO ST(0) L ST
FLDPI ST(1)
FMUL ST(2)
FLD1 ST(3)
FDIVR ST(4) ...
FSTP FR
FWAIT
RET
FRES ENDP
EJEMPLO 2
• FRECUENCIA RESONANTE

FRES PROC FAR


FLD L
FMUL C
FSQRT
FMUL TWO ST(0) LC ST
FLDPI ST(1)
FMUL ST(2)
FLD1 ST(3)
FDIVR ST(4) ...
FSTP FR
FWAIT
RET
FRES ENDP
EJEMPLO 2
• FRECUENCIA RESONANTE

FRES PROC FAR


FLD L
FMUL C
FSQRT
FMUL TWO ST(0)  LC ST
FLDPI ST(1)
FMUL ST(2)
FLD1 ST(3)
FDIVR ST(4) ...
FSTP FR
FWAIT
RET
FRES ENDP
EJEMPLO 2
• FRECUENCIA RESONANTE

FRES PROC FAR


FLD L
FMUL C
FSQRT
FMUL TWO ST(0) 2  LC ST
FLDPI ST(1)
FMUL ST(2)
FLD1 ST(3)
FDIVR ST(4) ...
FSTP FR
FWAIT
RET
FRES ENDP
EJEMPLO 2
• FRECUENCIA RESONANTE

FRES PROC FAR


FLD L
FMUL C
FSQRT
FMUL TWO ST(0)  ST
FLDPI ST(1) 2  LC
FMUL ST(2)
FLD1 ST(3)
FDIVR ST(4) ...
FSTP FR
FWAIT
RET
FRES ENDP
EJEMPLO 2
• FRECUENCIA RESONANTE

FRES PROC FAR


FLD L
FMUL C
FSQRT
FMUL TWO ST(0) 2  LC ST
FLDPI ST(1)
FMUL ST(2)
FLD1 ST(3)
FDIVR ST(4) ...
FSTP FR
FWAIT
RET
FRES ENDP
EJEMPLO 2
• FRECUENCIA RESONANTE

FRES PROC FAR


FLD L
FMUL C
FSQRT
FMUL TWO ST(0) 1 ST
FLDPI ST(1) 2  LC
FMUL ST(2)
FLD1 ST(3)
FDIVR ST(4) ...
FSTP FR
FWAIT
RET
FRES ENDP
EJEMPLO 2
• FRECUENCIA RESONANTE

FRES PROC FAR


FLD L
FMUL C
FSQRT
FMUL TWO ST(0) 1 / 2  LC ST
FLDPI ST(1)
FMUL ST(2)
FLD1 ST(3)
FDIVR ST(4) ...
FSTP FR
FWAIT
RET
FRES ENDP
EJEMPLO 2
• FRECUENCIA RESONANTE

FRES PROC FAR FR  1 / 2  LC


FLD L
FMUL C
FSQRT
FMUL TWO ST(0) ST
FLDPI ST(1)
FMUL ST(2)
FLD1 ST(3)
FDIVR ST(4) ...
FSTP FR
FWAIT
RET
FRES ENDP

También podría gustarte