El coprocesador matem�tico 80387

Por Dario Alejandro Alpern

Introducci�n

La interfaz en los sistemas 80386/80387 es muy similar a la de los sistemas 80286/80287. Sin embargo, para prevenir la corrupci�n de datos del coprocesador debido a errores de los programas que corren en la CPU, se utilizan los puertos de entrada/salida 800000F8h-800000FFh que no son accesibles a los programas. La comunicaci�n ha sido optimizada ya que, al utilizar transferencias de 32 bits, se necesitan de 14 a 20 ciclos de reloj. La �nica manera de eliminar esta p�rdida de tiempo consiste en integrar el coprocesador y la CPU en un �nico chip, como se hizo posteriormente en el microprocesador 80486.

Versiones del 80387

El 80387 fue la primera generaci�n de coprocesadores espec�ficamente dise�ados para la CPU 80386. Fue introducido en 1986, un a�o despu�s que el CPU 80386.

El 80387 fue superado por el 387DX, que fue introducido en 1989. El viejo 80387 era 20% m�s lento que el 387DX. El 80387 est�ba empaquetado en el formato PGA de 68 pines y estaba manufacturado con la tecnolog�a CHMOS III de 1,5 micrones. La m�xima velocidad del 80387 fue de 20 MHz. El 387DX es la segunda generaci�n. Esta versi�n est� realizada en un proceso CMOS m�s avanzado (tecnolog�a CHMOS IV) que permite una frecuencia de 33 MHz. Algunas instrucciones se han mejorado mucho m�s que el 20% de promedio. Por ejemplo, la instrucci�n FBSTP es 3,64 veces m�s r�pido que en el 80387.

El 387SX es el coprocesador que se aparea con el 386SX con un bus de datos de 16 bits, en vez de los 32 que tienen los anteriores. El 387SX tiene la misma unidad de ejecuci�n que el 80387 original. Viene en formato PLCC (Plastic Leaded Chip Carrier) de 68 pines con una frecuencia m�xima de 20 MHz.

El 387SL (que se introdujo en 1992) se dise�� para ser utilizado en sistemas junto con el 386SL en notebooks y laptops. Est� realizado con la tecnolog�a CHMOS IV est�tica (no se pierden los datos internos si se detiene el reloj) y tiene la misma unidad de ejecuci�n que el 387DX.

Nuevas instrucciones del 80387

FSIN: Calcula el seno del valor en ST. El resultado reemplaza el valor anterior de ST.

FCOS: Calcula el coseno del valor en ST. El resultado reemplaza el valor anterior de ST.

FSINCOS: Calcula el seno y el coseno del valor en ST. Cuando se completa la instrucci�n, el valor de ST es el coseno del ST original, mientras que en ST(1) se encuentra el seno. Como se realiza una introducci�n en la pila, el valor que antes se encontaba en ST(1) ahora estar� en ST(2).

FUCOM ST(i): Realiza una comparaci�n entre el operando y ST. Si no se especifica par�metro se asume ST(1). Actualiza los indicadores de punto flotante como sigue:

Relaci�nC3, C2, C0
No comparables111
ST > Fuente000
ST < Fuente001
ST = Fuente100

FUCOMP ST(i): Hace lo mismo que FUCOM ST(i) y luego elimina el elemento que est� en el tope de la pila ST.

FUCOMPP: Hace lo mismo que FUCOM ST(1) y luego retira los dos elementos de la pila.

FPREM1: Es similar al instrucci�n FPREM del coprocesador 8087, pero cumple con la norma IEEE 754.

Las instrucciones FLENV y F[N]STENV necesitan ahora un espacio de 18 bytes de memoria y FRSTOR y F[N]SAVE necesitan 98 bytes en memoria. Esto se debe a que las direcciones que maneja el 80387 son de 32 bits (los anteriores manejan direcciones de 16 bits).

Nedstat Counter