El coprocesador matemático 80287

 

Introducción

La interfaz coprocesador-CPU es totalmente diferente que en el caso del 8087. Como el 80286 implementa protección de memoria a través de un MMU basado en segmentación, hubiera sido demasiado caro duplicar esta lógica en el coprocesador, que una solución como la interfaz 8086/8088 a 8087 hubiera demandado. En vez de ello, en un sistema con 80286 y 80287 la CPU busca y almacena todos los códigos de operación para el coprocesador. La información se pasa a través de los puertos F8h-FFh del CPU. Como estos puertos son accesibles bajo el control del programa, se debe tener cuidado en los programas que no se escriban datos en dichos puertos, ya que esto podría corromper datos en el coprocesador.

La combinación 8087/8088 se puede caracterizar como una cooperación de compañeros, mientras que el 80286/287 es más una relación amo/esclavo. Esto hace más fácil la sincronización, ya que la instrucción completa y el flujo de datos del coprocesador pasa a través de la CPU. Antes de ejecutar la mayoría de las instrucciones del coprocesador, el 80286 verifica su pin /BUSY, que está conectado al 80287 y señala si aún está ejecutando una instrucción previa o encontró una excepción. Por lo tanto la instrucción WAIT antes de las instrucciones del coprocesador está permitida pero no es necesaria.

La unidad de ejecución del 80287 es prácticamente idéntica al del 8087, esto es, casi todas las instrucciones se ejecutan en la misma cantidad de ciclos de reloj en ambos coprocesadores. Sin embargo debido a la comunicación que debe realizar el 80287 con la CPU (alrededor de 40 ciclos de reloj), una combinación 80286/80287 puede tener menor rendimiento de punto flotante que un sistema 8086/8087 corriendo a la misma velocidad de reloj.

Versiones del 80287: El 80287 fue el coprocesador original para el procesador 80286 y se introdujo en 1983. Usa la misma unidad de ejecución interna que el 8087 y tiene la misma velocidad (a veces es más lento debido al tiempo que tarda la comunicación con el 80286). Como el 8087, no provee compatibilidad completa con la norma IEEE-754 de punto flotante que apareció en 1985. El 80287 fue realizado en tecnología NMOS con el formato externo CERDIP de 40 pines. La frecuencia máxima era de 10 MHz. El consumo de potencia era el mismo que el del 8087 (2,4 watt máximo).

El 80287 ha sido reemplazado pon su sucesor más rápido, el 287XL, basado en tecnología CMOS e introducido en 1990. Como tiene la misma unidad de ejecución que el 80387, cumple con la norma IEEE-754 y ejecuta bastante más rápido que su antecesor. A 12,5 MHz consume 675 mW (la cuarta parte que su antecesor).

Nuevas instrucciones del 80287

Aparte de las instrucciones que existen en el 8087, el 80287 posee las siguientes instrucciones: FSTSW AX: Almacena el registro de estado del 80287 en el registro AX.

FSETPM: Sirve para indicarle al coprocesador que la CPU entró en modo protegido y, que por lo tanto, las direcciones se tratan de una manera diferente que en modo real.