EL COPROCESADOR ARITMETICO
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)
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)
Cada uno tiene un propsito especifico dentro del sistema, y muchos sistemas requieren de los tres tipos de datos.
Formato de datos
(2)
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)
S Magnitud
31 0
S
63
Magnitud
0
Magnitud
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
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.
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.
Formato de datos
(7)
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)
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
(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.
(2)
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
23 22 21 20 19 18 17 16 15 14 12 11 8 7 6 5
26 25 24
(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
(4)
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
(1)
CANAL DE EXPONENTE
CANAL DE FRACCION
MODULO DE EXPONENTE
REGISTROS TEMPORALES
OPERANDOS
PILA DE REG
80 bits
(2)
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.
(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
(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
(5)
(6)
(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
(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
(9)
Valores de Etiqueta
00 = Valido 01 = Cero 10 = Invalido o Infinito 11 = Vacio
EJEMPLO
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
FLDPI
ST(0) ST(1) ST(2)
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