El sumador de 69 bits del coprocesador Intel 8087 explicado a fondo

Fuentes: righto.com, The 69-bit adder that powered the Intel 8087 floating-point coprocessor

En 1980, Intel lanzó el coprocesador matemático 8087, un chip capaz de acelerar cálculos hasta 100 veces respecto al procesador principal 8086. Más allá de la aritmética básica y las raíces cuadradas, el 8087 calculaba funciones trascendentales como tangentes, exponenciales y logaritmos. Toda esa potencia dependía de un único componente: un sumador (adder) de 69 bits, descrito en la propia patente del芯片 como "el corazón nanomáquina de la unidad de ejecución de punto flotante".

El sumador se sitúa en el centro del datapath de la fracción del芯片, la mitad inferior del dado que gestiona la parte fraccionaria (significando) de los números en coma flotante. Para sumar exponentes, estos deben copiarse al datapath de la fracción, lo que da una idea de la centralidad de este circuito en la arquitectura del 8087.

La dificultad técnica de un sumador no reside en sumar, sino en hacerlo rápido. El problema clásico es el arrastre (carry): en una suma binaria, cada bit puede generar un acarreo que depende de todos los bits inferiores, lo que obliga a esperar a que la señal se propague secuencialmente, como ocurre al sumar 999.999 + 1 a mano. En 69 bits, ese retardo sería inaceptable.

La solución del 8087 combina varias técnicas clásicas. En primer lugar, divide el sumador en bloques de 4 bits, reduciendo las etapas de propagación de acarreo por un factor de cuatro. Dentro de cada bloque, emplea la llamada Manchester carry chain, una técnica desarrollada en 1959 por investigadores de la Universidad de Mánchester para el computador Atlas. Esta técnica se basa en los conceptos de Generar (Generate), Propagar (Propagate) y Eliminar (Delete o Kill) que aparecen al sumar dos bits y un acarreo de entrada.

En el 8087, las señales Generate, Propagate y Delete se precalculan en paralelo para todas las posiciones de bit en tiempo constante. Luego, una cadena de transistores NMOS que actúan como interruptores deja que la señal de acarreo fluya como una onda eléctrica por un cable, sin la penalización de puertas lógicas intermedias. El truco reside en que para la generación (1+1) el bit de entrada F es 1, lo que fuerza el acarreo de salida a activo, mientras que para la eliminación (0+0) F es 0, lo que lo fuerza a inactivo. Un multiplexor controlado por la señal Propagate elige entre propagar el acarreo de entrada o sustituirlo por el valor de F.

Sin embargo, los transistores de paso no son interruptores perfectos: pierden algo de voltaje en cada etapa. Por ello, la cadena se divide en bloques de 4 bits y cada bloque genera un acarreo "fresco" gracias a un circuito de carry-skip. Este detecta si todas las posiciones del bloque están en modo Propagate; en ese caso, el acarreo de salida será idéntico al de entrada, evitando esperar a la propagación interna.

El diseño del 8087 introduce optimizaciones eléctricas adicionales. Al usar transistores NMOS, tirar de una señal a nivel bajo es mucho más rápido que elevarla. Para aprovecharlo, las líneas de acarreo se pre-cargan a 5 V al inicio de cada suma, y el circuito las baja a masa solo cuando es necesario. Para que el estado inicial de 5 V represente "no hay acarreo", todas las señales de carry se almacenan negadas. Además, el multiplexor final de cada bloque tiene cuatro entradas en lugar de dos: una para el caso de carry-skip y otra para la señal de pre-carga, que durante el pre-carga se ve reforzada al forzar la señal Propagate a nivel alto, conectando así todas las líneas de acarreo entre sí.

El análisis técnico del sumador, documentado en detalle por Ken Shirriff en su blog righto.com a partir de fotografías microscópicas del dado y de la patente original, revela la sofisticación de un componente que, aunque invisible para el programador, fue determinante para que el 8087 se convirtiera en un estándar de la computación de punto flotante de su época. En una época en la que los microprocesadores aún no integraban unidades de coma flotante, un circuito de apenas 69 bits definía el rendimiento de hojas de cálculo, software científico y CAD.

En definitiva, el sumador de 69 bits del Intel 8087 es un ejemplo paradigmático de cómo las técnicas teóricas desarrolladas en los años cincuenta y sesenta —como la Manchester carry chain— se materializaron en silicio NMOS con optimizaciones eléctricas cuidadosamente calibradas. Su legado se extiende a la propia ISA de las unidades de punto flotante x87, que Intel mantuvo vigente hasta mucho después de que el 8087 dejara de fabricarse.