Está en la página 1de 32

CURSO DE MICROPROCESADORES

Ing. Wilson Javier Prez H.

EL COPROCESADOR ARITMETICO

Un aliado fundamental para la familia de microprocesadores Intel

Introduccin

Un coprocesador es un circuito capaz de realizar operaciones aritmticas complejas. Operan de manera conjunta con el microprocesador para el cual fueron diseados, de modo que el 8087 trabaja junto con el 8086/88, el 80287 acompaa al 80286, el 80387 va con el 80386 y as sucesivamente.

Caractersticas

(1)

El coprocesador tiene su conjunto de instrucciones y hardware caractersticos.


El conjunto de instrucciones y la programacin para estos dispositivos es casi idntica a la del procesador normal. Las instrucciones del coprocesador se caracterizan por empezar con la letra F.

Caractersticas

(2)

La familia de coprocesadores Intel (80X87) puede multiplicar, dividir, sumar, restar, calcular raz cuadrada, tangente parcial, arco tangente parcial, y logaritmos.

El procesamiento matemtico del coprocesador es alrededor de 5 veces mas rpido que en el procesador normal.

Formato de datos

(1)

Los tipos de datos utilizados en los miembros de la familia 80X87 incluyen:

Nmeros enteros con signo Nmeros en BCD Nmeros en punto flotante

Cada uno tiene un propsito especifico dentro del sistema, y muchos sistemas requieren de los tres tipos de datos.

Formato de datos

(2)

Nmeros enteros con signo (1)

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

(3)

Nmeros enteros con signo (2)


15 0

S Magnitud
31 0

S
63

Magnitud
0

Magnitud

Ejemplo: Definicin enteros con signo

Address 0000 0002 0004 0008 000C 0014

Assembled Code 0002 FFDE 000004D2 FFFFFF9C 0000000000005BA0 FFFFFFFFFFFFFF86

Pseudo Code DATA1 DW +2 DATA2 DW -34 DATA3 DD +1234 DATA4 DD -100 DATA5 DQ +23456 DATA6 DQ -122

Comments ; Entero de 16 bits ; Entero de 16 bits ; Entero corto ; Entero corto ; Entero largo ; Entero largo

Formato de datos

(4)

Nmeros en BCD

Requiere 80 bits de memoria Se pueden representar datos hasta de 18 dgitos BCD que ocupan 72 bits.
71
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

79

S x ..x D D D Bits no utilizados

D D D D D D D D D D D D D D D0

Formato de datos

(5)

En formato BCD tanto los nmeros 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.

Ejemplo: Declaracin datos en BCD

0000 00000000000000000200 DATA1 DT 200

;200 decimal almacenado en BCD

000A 80000000000000000010 DATA2 DT -10

;-10 decimal almacenado en BCD

0014 00000000000000010020 DATA3 DT 10020

;10020 decimal almacenado en BCD

Formato de datos

(6)

Nmeros en punto flotante (1) En este formato los datos se escriben en notacin cientfica binaria. Tipos:

P. Sencilla (32 bits): Con una polarizacin de 127 (FFH) y un 1 implcito. P. Doble (64 bits): Con una polarizacin de 1023 (3FFH) y un 1 implcito.

P. Extendida (80 bits): Con una polarizacin de 16363 (3FFFH) y un 1 no implcito.

Formato de datos

(7)

Nmeros en punto flotante (2)


31 30 23 22 0

S Exponente
63 62

Mantisa
0

52 51

S
79 78

Exponente

.
64 63

Mantisa
0

Exponente

Mantisa

Formato de datos

(8)

Ejemplo: Convertir el decimal 120.375 en un nmero decimal de punto flotante de precisin sencilla.
Solucin: Paso Resultado

1 2 3
4

120.375 = 1111000.011 1111000.011 = 1.111000011 x 2 +6 00000110 + 01111111 = 10000101 S Exponente Mantisa 0 10000101 11100001100000000000000

Formato de datos

(9)

Ejemplo: Convertir un nmero de punto flotante de precisin sencilla en un nmero decimal.

Solucin:
Resultado S Exponente Mantisa 1 10000111 10011011010000000000000 10000111 01111111 = 00001000 1.1001101101 x 2+8 110011011.01 -411.2510

Paso 1 2 3 4 5

Formato de datos

(10)

Los nmeros en punto flotante se guardan en memoria con el ensamblador utilizando la directiva DD para precisin sencilla, DQ para doble precisin y DT para precisin extendida.
Ejm: DATO7 DATO8 DATO9 DATO10 DATO11 DATO12 DD DD DD DQ DQ DT -569.3 2.5 3.58E+7 114.725 0.00012056 563.78512

La arquitectura del 80X87

(1)

Hasta el microprocesador 80386 los coprocesadores de la familia Intel se encontraba en el sistema como un circuito integrado externo. A partir de la aparicin del 80486 este circuito se encuentra interno en el procesador.

La arquitectura del 80X87


El coprocesador aritmetico 80287
40 32 35

(2)

READY CLK RESET CLK286

37

2 1

S0 S1
HLDA PEACK CKM

38 36 39

27 28 34 33 29 31

NPRD NPWR
NPS1 NPS2 CMD0 CMD1 COD/INTA

D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 ERROR OCUPADO PEREQ

23 22 21 20 19 18 17 16 15 14 12 11 8 7 6 5

26 25 24

La arquitectura del 80X87

(3)

Definicin de terminales del 80287 CLK Entrada de reloj CLM Modo de reloj CLK286 Entrada de reloj del 80286 RESET Entrada de reinicializacin D15-D0 Canal de datos BUSY Salida de ocupado ERROR Salida de error

La arquitectura del 80X87


PEREQ

(4)

PEACK NPRD NPWR NPS1,NPS2 CMD1,CMD0 HLDA COD/INTA Vcc y Vss

Solicitud de transferencia de datos de operando del coprocesador. Coproc. listo para Tx Indica que PEREQ fue reconocida por el P Lee coprocesador Escribir en el coprocesador Seleccionar coprocesador Lneas de comando. Oper. del coproc. Reconocimiento del cesin del canal Reconocimiento de cdigo/interrupcin Suministro alimentacin y tierra

Estructura interna del 80287


UNIDAD DE CONTROL
PALABRA DE CONTROL PALABRA DE ESTADO

(1)

UNIDAD DE EJECUCION NUMERICA

CANAL DE EXPONENTE

CANAL DE FRACCION

MODULO DE EXPONENTE

UNIDAD DE CONOCIMIENTO PROGRAMABLE

MODULO ARITMETICO MEMORIA DATOS (BUFFER) DE DATOS COLA DE


REGISTRO DE ETIQUETAS

UNIDAD DE CONTROL DE MICROCODIGO

REGISTROS TEMPORALES

OPERANDOS

ESTADO DIR Y RASTREO DEL CANAL DIRECCION APUNTADORES DE EXCEPCION

PILA DE REG

80 bits

Estructura interna del 80287

(2)

Se divide en dos secciones principales:

Unidad de control: Conecta el coprocesador al canal de datos del sistema del microprocesador.
Unidad de ejecucin numrica (NEU): Es responsable de ejecutar todas las 68 instrucciones. Tiene una pila de 8 registros que contiene los operandos para las instrucciones aritmticas y los resultados de dichas instrucciones.

Estructura interna del 80287

(3)

Las instrucciones direccionan los datos en registros de datos especficos de la pila o utilizan un mecanismo de salvar y recuperar para guardar y sacar datos.

Los registros de la pila siempre contienen un nmero en punto decimal flotante de precisin extendida de 80 bits. La nica vez en que los datos aparecen en cualquier otra forma es cuando se transfieren entre el coprocesador y el sistema de memoria

Estructura interna del 80287

(4)

Registro de Estado: Refleja la operacin general del coprocesador. Se accesa ejecutando la instruccin FSTSW que guarda el contenido de este en una palabra de memoria. La instruccin FSTSW AX copia el contenido del registro de estado directamente al registro AX. Una vez guardado en memoria o en el AX su contenido puede ser examinado de forma normal

Estructura interna del 80287

(5)

Palabra de estado de la familia 80X87


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

Banderas de excepcin (1=Ha ocurrido excepcin)


IE DE ZE OE PE IR C3,C2,C1,C0 ST B Operacin no valida Operacin anormal Sobreflujo Subflujo Precisin Solicitud de interrupcin Cdigo de condicin Apuntador de la parte alta de la pila Ocupado

Estructura interna del 80287

(6)

Bits del cdigo de condicin para el registro de estado del 80287


Subnormal = bits iniciales de la mantisa son cero Anormal = el exponente en su valor ms negativo Normal = forma estndar de punto decimal flotante NAN ( no es un nmero) = un exponente de unos y una mantisa que no es igual a cero

Estructura interna del 80287

(7)

Registro de control
15 IR RC PC 7 IEM PM UM OM ZM DM 0 IM

Se utiliza la instruccin FLDCW para cargar un valor en el registro de control Enmascaramiento de excepcin (1 = excepcin enmascarada) IM = Operacin no valida DM = Operando fuera de lo normal ZM = Dividir/Cero OM = Sobreflujo UM = Subflujo PM = Precisin IEM = Enmascaramiento de habilitacin de interrupcin. PC = Control de precisin IC = Control de infinito

Estructura interna del 80287

(8)

Enmascaramiento de habilitacin de interrupciones 0 = Interrupciones habilitadas 1 = Interrupciones deshabilitadas (enmascarada) Control de precisin

00 = 24 bits 01 = (reservado) 10 = 53 bits 11 = 64 bits 00 = Redondear al mas cercano o par 01 = Redondear hacia abajo (hacia -) 10 = Redondear hacia arriba (hacia +) 11 = Recortar (truncar hacia cero) 0 = Proyectivo 1 = Afinidad

Control de redondeo

Control de infinito

Estructura interna del 80287

(9)

Registro de Etiquetas Indica el contenido de cada localidad de la pila del coprocesador


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

Valores de Etiqueta
00 = Valido 01 = Cero 10 = Invalido o Infinito 11 = Vacio

EJEMPLO

AREA DEL CIRCULO


PROC FLD FMUL FLDPI FMUL FSTP FWAIT RET AREA FAR RADIO ST,ST(0)

A = R2
; Se carga la variable RADIO a la pila ; RADIO al cuadrado ; Se carga PI a la pila ; PI por el RADIO al cuadrado ; Se guarda el resultado en la variable AREA ; Sincronizar con el procesador

AREA

AREA

ENDP

EJEMPLO

AREA DEL CIRCULO


FLD RADIO FMUL ST,ST(0)
ST(0) ST(1) ST(2) ST(3)

FLDPI
ST(0) ST(1) ST(2)

ST(0) ST(1) ST(2) ST(3)

RADIO

RADIO2

RADIO2

ST(3)

FMUL
ST(0) ST(1) ST(2) ST(3)

FSTP AREA
ST(0) ST(1) ST(2) ST(3)

RADIO2