Coprocesador
Click here to load reader
-
Upload
henry-chavez -
Category
Documents
-
view
40 -
download
0
Transcript of Coprocesador
![Page 1: Coprocesador](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/1.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/2.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/3.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/4.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/5.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/6.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/7.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/8.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/9.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/10.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/11.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/12.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/13.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/14.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/15.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/16.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/17.jpg)
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](https://reader038.fdocumento.com/reader038/viewer/2022100420/557202454979599169a33e4a/html5/thumbnails/18.jpg)
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