Intel 8087: cómo descifra sus instrucciones

Fuentes: Instruction decoding in the Intel 8087 floating-point chip

Este artículo profundiza en el complejo proceso de decodificación de instrucciones en el chip de punto flotante Intel 8087, un componente crucial en las primeras computadoras personales. Para entender cómo el 8087 determina si una instrucción es para él o para la CPU principal (8086/8088), y cómo interpreta esas instrucciones, es necesario comprender su arquitectura interna y su peculiar método de cooperación.

El 8087, actuando como un coprocesador, no recibe instrucciones directamente de la CPU principal. En lugar de eso, utiliza una técnica ingeniosa: el 8086, al encontrar un 'ESCAPE' opcode (un código especial), comienza a ejecutar la instrucción, calcula la dirección de memoria referenciada y la lee, ignorando el resultado. Simultáneamente, el 8087 (a través de su Unidad de Interfaz de Bus - BIU) observa el bus de memoria para capturar esa dirección, que luego utiliza para leer y escribir datos. Esto permite al 8087 'delegar' el cálculo de la dirección de memoria a la CPU principal.

La estructura de las instrucciones 8087 es también compleja. Se basan en el formato de instrucciones 8086, incluyendo un 'ModR/M' byte que especifica los registros o la dirección de memoria a utilizar. El 'ESCAPE' opcode inicial, seguido del 'ModR/M' byte, define la instrucción. La flexibilidad del 'ModR/M' byte permite una variedad de operaciones, tanto con memoria como con registros, y el 8087 utiliza una combinación de lógica y arreglos lógicos programables (PLAs) para decodificar estas instrucciones de manera eficiente, evitando la necesidad de una ROM de gran tamaño.

El artículo también explica cómo las instrucciones se ejecutan a través de microcódigo, una serie de micro-instrucciones almacenadas en una ROM. Un 'micro-engine' dentro del 8087 ejecuta estas micro-instrucciones, y un sistema de decodificación complejo determina el punto de inicio en la ROM de microcódigo para cada instrucción.

Casos de uso/Aplicaciones: El 8087 fue esencial para aplicaciones que requerían cálculos de punto flotante, como gráficos, simulación científica y finanzas. Cualquier programa que necesitara precisión en cálculos con números decimales se beneficiaba de su uso.

Consideraciones: La arquitectura del 8087, aunque innovadora, es compleja y dependiente de la CPU principal para ciertas tareas. La comunicación a través de memoria es relativamente lenta. Alternativas modernas incluyen coprocesadores integrados directamente en la CPU, eliminando la necesidad de un chip externo y mejorando el rendimiento.