Documente Academic
Documente Profesional
Documente Cultură
CPU
dir
Bus local
datos
dir
FPU
datos
Ejecuta instrucciones sobre nmeros reales Maneja operandos de alta precisin (hasta 80 bits) Existen instrucciones especficas para su manejo
EL COPROCESADOR MATEMTICO Procesadores antiguos sin FPU integrada Necesidad de emulacin Multitud de programas emuladores Filtran las instrucciones del coproc.
Comparacin de velocidad (Caso del par 8086 / 8087) a 5 MHz Operacin Coproc. (s) Emulado (s)
Suma-resta Multiplicacin Divisin Comparacin LOAD STORE Raz cuadrada Tangente Exponenciacin
17 19 39 9 10 21 36 90 100
Bit de signo
Exponente 15 bits
Mantisa 64 bits
Adems:
15 0
Registro de CONTROL Registro de STATUS Palabra TAG Puntero instrucciones Puntero datos
EL COPROCESADOR MATEMTICO Tipos de datos manejados por la FPU Norma IEEE 754 (Floating Point Standard)
Tipo de datos ENTEROS ENTEROS CORTOS ENTEROS LARGOS DECIMAL EMPAQUETADO REAL REAL DOBLE PRECISIN REAL PREC. EXTENDIDA Bits 16 32 64 80 32 64 80 Dg. signif. 4 9 18 18 67 15 16 19 Margen de valores -32768 a +32767 2.147.483.648 8.646.744.073.709.551.616 18 dgitos con signo 1,1810-37 a 3,41038 2,2310-307 a 1,810308 3,310-4932 a 1,21104932 Equivalente C o PASCAL int short long float double long double
Siempre trabaja internamente con 80 bits Enteros se representan en complemento a dos Decimal empaquetado: 10 bytes 9 bytes ms 1 de signo
Byte 9 Byte 8 Byte 7 Byte 0
SIGNO 0 0 3 1 1 1 0 9 0 1
R0 R1 R2 R3 R4 R5 R6 R7
Registro activo
Registro de STATUS
x+ y S = sin z
Puntero:
110 101 100 100 100 100 101
y z
x y z
x+y y z
(x+y)/z y z
S y z
S y z
R0 R1 R2 R3 R4 R5 R6 R7
Repartidor de trabajo
Instrucciones del coprocesador: Sus mnemnicos empiezan por F Su cdigo mquina comienza por 11011 (ESC)
CPU
FERR IRQ 5
PIC 8259
Antiguamente seal necesaria Actualmente se mantiene por compatibilidad Seal IGNNE : Si se activa el procesador ignora los errores numricos Puede tambien realizarse por software.
STALL
Slo si no relacionada
2. Sincronizacin de datos
Datos compartidos por la CPU y el procesador:
Ejecucin concurrente: FIST mem MOV AX, mem Solucin: FIST mem FWAIT MOV AX, mem Se detiene la ejecucin hasta que FST termina No se garantiza que AX contenga el dato grabado previamente
Instrucciones aritmticas
Formatos: OPERACIN OPERACIN ST, ST(i) OPERACIN ST(i), ST OPERACIN mem opera sobre ST y ST(1) opera sobre ST y ST(i) opera sobre ST(i) y ST opera sobre ST y memoria
Instrucciones de comparacin
FCOM FCOMP FCOMPP FICOM FICOMP FTST FXAM Compara dos nmeros reales Compara dos nmeros reales e inc. puntero Compara dos nmeros reales e inc. punt. 2 veces Compara nmeros enteros Compara enteros con incremento de puntero TEST: Compara el registro TOP con 0 Informa del tipo de objeto contenido en ST
Los resultados de la comparacin se reflejan en los bits de condicin del registro de status
Instrucciones de control
FINIT FLDCW FSTCW FSTSW FSTSW AX FNSTSW AX FCLEX FSTENV FLDENV FSAVE FRSTOR FINCSTP FDECSTP FFREE FNOP FWAIT Inicializa el coprocesador Carga palabra de CONTROL Almacena palabra de CONTROL Almacena palabra de STATUS Almacena palabra de STATUS en AX Borra flags de excepcin Almacena entorno (CONTROL, SATUS, TAG y errores) Carga entorno Salvaguarda todos los registros de coprocesador Restaura todos los registros Incrementa el puntero de pila Decrementa el puntero de pila Libera un registro (anota vaco en TAG) No operacin Instruccin WAIT de la CPU
EXCEPCIN
OPERACIN INVLIDA
UNDERFLOW
RESULTADO INEXACTO
Redondeo
Hacia el valor ms prximo Hacia abajo (-) Hacia arriba (+) Truncar hacia cero
PC PC 0 0 1 1 0 1 0 1
Precisin
24 bits reservado 53 bits 64 bits
C3 C2 C1 C0
SF
STACK FAULT
Indicadores de excepcin
IE DE ZE OE UE PE ES OPERACIN INVLIDA OPERANDO FUERA DE NORMA DIVISIN POR CERO OVERFLOW UNDERFLOW RESULTADO INEXACTO Indicador general de excepcin
TAG 00 01 10 11
Significado Contenido vlido Contenido CERO Contenido especial (infinito, fuera de norma) Registro vaco
Los punteros de instruccn y dato Almacenan la direccin de memoria y el dato que han producido la ltima excepcin Tambin almacenan informacin de depuracin Ocupan un total de 28 bytes