Así calculaba el Intel 8087 la tangente: CORDIC, microcódigo y 90 microsegundos
Un análisis del chip de coma flotante de 1980 desvela cómo combinó CORDIC con aproximación polinómica para ejecutar FPTAN en 90 microsegundos, frente a los 13.000 del 8086.
El Intel 8087 fue el coprocesador de coma flotante que Intel lanzó en 1980 para acompañar al 8086 y acelerar los cálculos en el IBM PC. Un análisis de su circuitería y su microcódigo explica ahora cómo resolvía la instrucción FPTAN, la tangente. La cifra que resume el salto: 90 microsegundos frente a los 13.000 que necesitaba el 8086. Detrás no hay una sola fórmula, sino una mezcla de CORDIC y aproximación polinómica.
Para mirar dentro, el autor quitó la tapa con un cincel y tomó imágenes de alta resolución con un microscopio. La ROM de microcódigo ocupa la zona rectangular central del die y contiene 1648 microinstrucciones. La mitad inferior es la ruta de datos, que opera con valores de 80 bits. En ella aparecen unidades clave: la ROM de exponentes, la ROM de constantes, un desplazador de 64 bits, el sumador, los registros B y de suma, la pila de ocho registros y un registro de desplazamiento para los 16 bits de estado del CORDIC.
CORDIC, de un bombardero a un chip
El algoritmo CORDIC no nació en Intel. Jack Volder lo desarrolló en 1956 para el B-58 Hustler, el primer bombardero capaz de volar a Mach 2. La computadora de navegación analógica no daba precisión suficiente, y generar senos y cosenos digitalmente con los transistores de la época era caro. CORDIC, siglas de COordinate Rotation DIgital Computer, convierte un ángulo en un vector cuyas coordenadas dan las funciones trigonométricas. La gracia está en descomponer el ángulo en ángulos especiales, α_n = arctan(2^-n), precomputados en una tabla. Rotar por esos ángulos solo requiere sumas, restas y desplazamientos, no multiplicaciones ni divisiones. Cada iteración añade un bit de precisión.
El 8087 llevó esa idea al hardware binario, pero no se quedó ahí. Combinó CORDIC con una aproximación polinómica para conseguir a la vez exactitud y velocidad. La tangente se obtiene de la relación Y/X, así que no hace falta que el vector esté sobre la circunferencia unidad; eso simplifica el cálculo. Los detalles de microcódigo y las constantes están documentados en un repositorio que reproduce el microcódigo del chip. La huella de CORDIC en calculadoras científicas se puede seguir en este archivo sobre los algoritmos de HP.
El x87 sigue presente en los procesadores x86-64, aunque Microsoft lo marca como obsoleto en modo 64 bits. Entender cómo el 8087 resolvía FPTAN con lógica de los años setenta sirve para ver de dónde vienen las rutinas de coma flotante que aún ejecutan las CPU actuales. No hay una demo nueva ni un chip que comprar; lo que hay es una pieza de arqueología de hardware bastante bien documentada.


