Coprocesador

18

Click here to load reader

Transcript of Coprocesador

Page 1: Coprocesador

EL COPROCESADOR MATEMÁTICO

En los procesadores actuales:

Unidad de punto flotante

CPU FPU

Bus

loca

ldatos

dir datos

dir

8086802868038680486 – SX80486

8087802878038780487 – SXIntegrado

CPU Coprocesador

Ejecuta instrucciones sobre números reales

Maneja operandos de alta precisión (hasta 80 bits)

Existen instrucciones específicas para su manejo

Page 2: Coprocesador

Procesadores antiguos sin FPU integrada

Necesidad de emulación

Multitud de programas emuladores

Filtran las instrucciones del coproc.

Comparación de velocidad(Caso del par 8086 / 8087) a 5 MHz

Operación Coproc. (µs)

Emulado(µs)

Suma-restaMultiplicaciónDivisiónComparaciónLOADSTORERaíz cuadradaTangenteExponenciación

1719399

10213690

100

160016003200130017001200

196001300017000

EL COPROCESADOR MATEMÁTICO

Page 3: Coprocesador

EL COPROCESADOR MATEMÁTICO

El juego de registros

79 78 64 63 0

Bit designo

Exponente15 bits

Mantisa64 bits

Pila de 8 registros de 80 bits

R0 .. R7

S EXP MANTISA

1 15 64

R0R1R2R3R4R5R6R7

TAG

2

Registro de CONTROLRegistro de STATUSPalabra TAG

Puntero instruccionesPuntero datos

15 0

Además:

Page 4: Coprocesador

EL COPROCESADOR MATEMÁTICO

Tipos de datos manejados por la FPU

Norma IEEE 754 (“Floating Point Standard”)

Tipo de datos Bits Díg.signif.

Margen devalores

EquivalenteC o PASCAL

ENTEROS

ENTEROS “CORTOS”

ENTEROS “LARGOS”

DECIMAL EMPAQUETADO

REAL

REAL DOBLE PRECISIÓN

REAL PREC. EXTENDIDA

16

32

64

80

32

64

80

4

9

18

18

6 ó 7

15 ó 16

19

-32768 a +32767

± 2.147.483.648

± 8.646.744.073.709.551.616

18 dígitos con signo

1,18·10-37 a 3,4·1038

2,23·10-307 a 1,8·10308

3,3·10-4932 a 1,21·104932

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 más 1 de signo

Byte 9 Byte 8 Byte 7 Byte 0

SIGNO0 0 1 1 1 0 0 1

3 9

Page 5: Coprocesador

EL COPROCESADOR MATEMÁTICO

Funcionamiento interno

Trabaja como ciertas calculadoras científicas

Utiliza RPN (Notación polaca inversa)

Primero operandos, luego signo

Registro en el tope de la pila : TOP ó ST(0)

R0R1R2R3R4R5R6R7

ST(6)ST(7)ST(0)ST(1)ST(2)ST(3)ST(4)ST(5)

Registro activo

Registro de STATUS3 bits

Punterode pila

Page 6: Coprocesador

EL COPROCESADOR MATEMÁTICO

Ejemplo de operación con la FPU

Calcular:

Instrucciones ensamblador para la FPU

⎟⎠⎞

⎜⎝⎛ +

=z

yxsinS

1 FLD z Carga z en registro TOP2 FLD y Carga y en registro TOP3 FLD x Carga x en registro TOP4 FADD Suma ST y ST(1)5 FDIV ST,ST(2) Divide ST entre ST(2)6 FSIN Calcula sen(ST)7 FST S Almacena TOP en S

110

z

101

yz

100

xyz

100

x+yyz

100

(x+y)/zyz

100

Syz

101

Syz

R0R1R2R3R4R5R6R7

1 2 3 4 5 6 7

Puntero:

Page 7: Coprocesador

EL COPROCESADOR MATEMÁTICO

Ejecución desaltos

Puerto 0

Puerto1Puerto 2Puerto 3Puerto 4

Unidadde ejecuciónde enteros

cálculo de direcciones

Operaciones FP

Operaciones FP

Unidadde ejecuciónde enteros

Unidadde ejecuciónde enteros

Unidadde carga

(LOAD)

Unidadde almace-namientode direcc.

(STORE)

Unidadde almace-namientode datos

(STORE)

Repartidor de trabajo

Ejecución en paralelo

Instrucciones del coprocesador:

Sus mnemónicos empiezan por FSu código máquina comienza por 11011 (ESC)

Page 8: Coprocesador

EL COPROCESADOR MATEMÁTICO

Patillaje externo

Señal FERR :

Activa cuando la FPU detecta un error en una operación

Generalmente conectada a una entrada de interrupción

IRQ 5 (PIC 2)

CPU PIC8259FERR IRQ 5

Antiguamente señal necesaria

Actualmente se mantiene por compatibilidad

Señal IGNNE :

Si se activa el procesador ignora los errores numéricos

Puede tambien realizarse por software.

Page 9: Coprocesador

EL COPROCESADOR MATEMÁTICO

Control de la ejecución concurrente

Tres tipos de sincronización necesarios:

1. Sincronización de instrucciones

CPUCoproc.

CPUCPUCPU

Coproc.Coproc.

CPU

STALL

No debe comenzar la ejecución de una nueva instrucción en la FPU hasta no finalizar las anteriores

Sólo si no relacionada

2. Sincronización de datosDatos compartidos por la CPU y el procesador:

Se encarga de ello el procesador, transparente al usuario

FIST memMOV AX, mem

No se garantiza que AX contenga el dato grabado previamente

Ejecución concurrente:

FIST memFWAITMOV AX, mem

Se detiene la ejecución hasta que FST termina

Solución:

Page 10: Coprocesador

EL COPROCESADOR MATEMÁTICO

Control de la ejecución concurrente

3. Sincronización de errores

El coprocesador activa la interrupción en la instrucción siguiente a la que ha producido el error.

Generalmente los compiladores tienen en cuenta este tipo de sincronización.

FLD contadorINC contadorFSQRT

FLD puede generar un error (formato incorrecto)No se detecta hasta FSQRT

FLD contadorFSQRTINC contador

De esta forma se asegura que el error se detecta antes de incrementar la variable

Page 11: Coprocesador

EL COPROCESADOR MATEMÁTICO

El juego de instrucciones del coprocesador

Los mnemónicos comienzan siempre por F

Instrucciones de transferencia de datosFLDFSTFSTP

FILDFISTFISTP

FBLDFBSTP

FXCHFXCH ST(i)

Cargar número real desde memoriaSalvar número real a memoriaSalvar número real e incrementar puntero de pila

Cargar número entero desde memoriaSalvar número entero a memoriaSalvar número entero e incrementar puntero de pila

Cargar número en BCD desde memoriaSalvar número en BCD a memoria e incrementar puntero

Intercambia ST con ST(1)Intercambia ST con el registro especificado

Instrucciones aritméticas

Formatos:

OPERACIÓN opera sobre ST y ST(1)

OPERACIÓN ST, ST(i) opera sobre ST y ST(i)

OPERACIÓN ST(i), ST opera sobre ST(i) y ST

OPERACIÓN mem opera sobre ST y memoria

Page 12: Coprocesador

EL COPROCESADOR MATEMÁTICO

El juego de instrucciones del coprocesador

Instrucciones aritméticas

FADDFADDPFIADD

FSUBFSUBPFISUBFSUBRFSUBRPFISUBR

FMULFMULPFIMUL

FDIVFDIVPFIDIVFDIVRFDIVRPFIDIVR

Suma números realesSuma números reales e incrementa puntero de pilaSuma números enteros

Resta números realesResta números reales e incrementa punteroResta números enterosResta números reales en orden inversoResta números reales en orden inverso e inc. punt.Resta números enteros en orden inverso

Multiplica números realesMultiplica números reales e incrementa punteroMultiplica números enteros

Divide números realesDivide números reales e incrementa punteroDivide números enterosDivide números reales en orden inversoDivide números reales en orden inverso e inc. punteroDivide números enteros en orden inverso

Otras instrucciones aritméticas

FSQRTFSCALEFPREMFRNDINTFXTRACTFABSFCHS

Raíz cuadradaPara multiplicar o dividir por potencias de 2RestoRedondeo a enteroExtrae exponente y mantisaValor absoltoCambiar signo

Page 13: Coprocesador

EL COPROCESADOR MATEMÁTICO

El juego de instrucciones del coprocesador

Instrucciones transcendentes

FSINFCOSFSINCOSFPTANFPATANF2XM1FYLSXFYL2XP1

Calcula senoCalcula cosenoCalcula seno y cosenoCalcula tangenteCalcula arco tangenteCalcula 2x-1Calcula Y·log2 (X)Calcula Y·log2 (X+1)

Instrucciones de manejo de constantes

FLDZFLD1FLDPIFLDL2TFLDL2EFLDLG2FLDLN2

Carga el valor 0Carga el valor 1Carga el valor PICarga el valor log2 (10)Carga el valor log2 (e)Carga el valor log10 (2)Carga el valor ln (2)

Instrucciones de comparación

FCOMFCOMPFCOMPPFICOMFICOMPFTSTFXAM

Compara dos números realesCompara dos números reales e inc. punteroCompara dos números reales e inc. punt. 2 vecesCompara números enterosCompara enteros con incremento de punteroTEST: Compara el registro TOP con 0Informa del tipo de objeto contenido en ST

Los resultados de la comparación se reflejan en los bits de condición del registro de status

Page 14: Coprocesador

EL COPROCESADOR MATEMÁTICO

El juego de instrucciones del coprocesador

Instrucciones de controlFINITFLDCWFSTCWFSTSWFSTSW AXFNSTSW AXFCLEXFSTENVFLDENVFSAVEFRSTORFINCSTPFDECSTPFFREEFNOPFWAIT

Inicializa el coprocesadorCarga palabra de CONTROLAlmacena palabra de CONTROLAlmacena palabra de STATUS

Almacena palabra de STATUS en AXBorra flags de excepciónAlmacena entorno (CONTROL, SATUS, TAG y errores)Carga entornoSalvaguarda todos los registros de coprocesadorRestaura todos los registrosIncrementa el puntero de pilaDecrementa el puntero de pilaLibera un registro (anota vacío en TAG)No operaciónInstrucción WAIT de la CPU

Page 15: Coprocesador

EL COPROCESADOR MATEMÁTICO

Las excepciones en el coprocesador

Existen 6 excepciones diferentes:

• El coprocesador lanza una interrupción a través de FERR.

• La rutina de atención debe tomar la acción que considere en función de la excepción activada.

• Si la excepción está enmascarada, el coprocesador toma una acción por defecto.

OPERACIÓNINVÁLIDA

OPERANDOFUERA DENORMA

DIVISIÓN POR CERO

OVERFLOW

UNDERFLOW

RESULTADOINEXACTO

Operando con formato no soportado, no se identifica como número, es indeterminado, etc...

Cualquiera de los operandos no se ajusta a la norma de representación de números en punto flotante.

El divisor de una división es 0 y el dividendo no es 0 ni infinito

El resultado es demasiado grande para ser representado en el formato de trabajo

El resultado no es cero, pero es demasiado pequeño para serrepresentado en el formato de trabajo.

El resultado no es representable en el formato de trabajo y por tanto se produce redondeo.

Adopta un formato especialindefinido que reconoceel procesador

Ninguno. Continúa el proceso normal

Se anota resultado INFINITO

Se pone el número más grande representable en ese formato

Se pone el resultado 0

Ninguno. Continúa el proceso Normal

EXCEPCIÓN Causa que la origina Acción por defecto

Page 16: Coprocesador

EL COPROCESADOR MATEMÁTICO

El registro de control

IC RC RC PC PC M PM UM OM ZM DM IM

Permite:

• Enmascarar las interrupciones• Controlar la precisión• Controlar el redondeo• Controlar otros parámetros de funcionamiento

PM

UM

OM

ZM

DM

IM OPERACIÓN INVÁLIDA

OPERANDO FUERA DE NORMA

DIVISIÓN POR CERO

OVERFLOW

UNDERFLOW

RESULTADO INEXACTO

Máscaras individuales de excepción

RC RC Redondeo

0 00 11 01 1

Hacia el valor más próximoHacia abajo (-∞)Hacia arriba (+∞)Truncar hacia cero

Precisión

0 00 11 01 1

24 bitsreservado53 bits64 bits

PC PC

No se gana en velocidad por reducir la precisión

Page 17: Coprocesador

EL COPROCESADOR MATEMÁTICO

El registro de estado (STATUS)

• Contiene el puntero de la pila

• Contiene los códigos de condición

• Indica las causas de excepción

C3 T T T C2 C1 C0 ES SF PE UE OE ZE DE IE

C3

T T T

C2 C1 C0 Códigos de condición de las operaciones de comparación

Puntero de la pila

SF STACK FAULT

PE

UE

OE

ZE

DE

IE OPERACIÓN INVÁLIDA

OPERANDO FUERA DE NORMA

DIVISIÓN POR CERO

OVERFLOW

UNDERFLOW

RESULTADO INEXACTO

Indicadores de excepción

ES Indicador general de excepción

Page 18: Coprocesador

EL COPROCESADOR MATEMÁTICO

Otros registros

El registro TAG

Los punteros de instruccíón y dato

S EXP MANTISA

1 15 64

R0R1R2R3R4R5R6R7

TAG

2

TAG Significado

0 0 Contenido válido0 1 Contenido CERO1 0 Contenido especial (infinito, fuera de norma)1 1 Registro vacío

• Almacenan la dirección de memoria y el dato que han producido la última excepción

• También almacenan información de depuración

• Ocupan un total de 28 bytes