Introducido por Intel en 1980, el coprocesador 8087 fue diseñado para acelerar las operaciones de punto flotante en la IBM PC y otros sistemas. Mientras que los procesadores modernos manejan estos cálculos de forma nativa, el 8087 dependía de una sofisticada combinación de circuitería dedicada y microcódigo para lograr mejoras de rendimiento de casi 100 veces sobre el procesador estándar 8086 en aritmética básica. La arquitectura del chip se divide en una ROM de microcódigo, que contiene 1,648 instrucciones, y una ruta de datos responsable de ejecutar cálculos sobre valores de 80 bits.

Diagrama de primer plano de los bloques funcionales de la ruta de datos del 8087.
Una vista detallada de la ruta de datos del 8087, resaltando los bloques funcionales utilizados para operaciones aritméticas.www.righto.com

Esta figura muestra la ruta de datos responsable de ejecutar cálculos sobre valores de 80 bits como se describe en el primer párrafo.

La aritmética de punto flotante es significativamente más compleja que la matemática de enteros porque los puntos binarios de los números deben alinearse antes de que pueda ocurrir cualquier operación. Por ejemplo, en la suma, el significando del número con el exponente más pequeño debe desplazarse a la derecha hasta que los exponentes coincidan. El 8087 facilita esto a través de un gran desplazador de bits y una circuitería de ceros iniciales, que cuenta el número de bits de cero para determinar la cantidad de desplazamiento necesaria. Para la resta, el proceso es similar pero incluye lógica adicional para manejar resultados negativos y casos en los que el resultado es cero, lo que evita la normalización estándar.

Diagrama de circuitería para detectar bits de cero iniciales.
La circuitería especializada utilizada para detectar bits de cero iniciales para determinar la cantidad de desplazamiento necesaria para la alineación.www.righto.com

Esta imagen representa la circuitería de ceros iniciales utilizada para alinear los puntos binarios durante la suma y resta de punto flotante.

Internamente, el 8087 utiliza un formato de "real temporal" de 80 bits, que cuenta con un exponente de 15 bits y un significando de 64 bits. El chip gestiona estos valores utilizando una pila de ocho registros internos, cada uno etiquetado como cero, válido, especial o vacío. El núcleo del procesamiento es un sumador de enteros de 69 bits que realiza la matemática real, mientras que el microcódigo gestiona el flujo de datos entre los registros, maneja casos especiales como infinitos y realiza los desplazamientos de normalización necesarios. Al delegar estos complejos pasos de alineación y redondeo a hardware especializado, el 8087 proporcionó un salto masivo en la capacidad de cómputo para su época.

Diagrama del formato real temporal de 80 bits y las estructuras de registros internos.
El 8087 utiliza un formato real temporal de 80 bits con un exponente de 15 bits y un significando de 64 bits.www.righto.com

Este diagrama ilustra el formato real temporal interno de 80 bits y la estructura de la pila de registros mencionada en el tercer párrafo.

Diagrama de flujo de microcódigo común para operaciones aritméticas básicas.
Un diagrama de flujo que ilustra la lógica de microcódigo utilizada para gestionar el flujo de datos y la normalización durante las operaciones aritméticas.www.righto.com

Este diagrama de flujo representa el papel del microcódigo en la gestión del flujo de datos y el manejo de casos especiales como los infinitos.