Un total de 277.248 puertas NAND de 2 entradas hacen funcionar un ordenador completo de 16 bits directamente en el navegador. Sin recurrir a ningún otro tipo de componente lógico, ejecuta con total fluidez una variante de Tetris a una frecuencia de reloj de 16,4 kHz. En una época repleta de lenguajes de alto nivel y densas capas de abstracción de software, NAND-16 elige reinventar la rueda de la forma más elemental posible. Solemos creer de manera intuitiva que levantar una máquina compleja exige componentes especializados con funciones bien delimitadas, como ALUs dedicadas trabajando codo a codo con chips de memoria independientes. NAND-16 demuestra una realidad contundente: el listón de entrada para la computación universal es tan bajo que basta con un único interruptor elemental.
La complejidad no requiere componentes especializados
Figura: Un circuito integrado de la serie 7400 con cuatro puertas NAND de 2 entradas. El ordenador entero se construyó únicamente con 277.248 unidades de este elemento lógico básico. Fuente: Wikimedia Commons
El proyecto NAND-16 emplea exclusivamente un tipo de unidad lógica: la puerta NAND (NO-Y). Es el equivalente arquitectónico a recibir un único tipo de bloque de Lego y tener que construir con él un rascacielos equipado con ascensor funcional. En este sistema, los sumadores, los registros y la lógica de decodificación de instrucciones nacen de la combinación interconectada de exactamente la misma pieza. Forzar todo el diseño a un único tipo de puerta lógica dota al origen de la capacidad de cómputo de una transparencia absoluta.
La visita guiada del proyecto (Genesis) consta de 15 capítulos bajo la premisa de «reinventar este ordenador a partir de una única puerta lógica». Enseña cómo construir un biestable RS combinando dos puertas NAND, y cómo a partir de ahí se ensamblan progresivamente registros y unidades aritméticas de mayor complejidad. Al recorrer este camino, el misticismo del diseño de hardware se desvanece por completo: cualquier función avanzada se reduce, en última instancia, a la simple conmutación de infinidad de interruptores.
277.000 puertas lógicas: el coste de construir la memoria desde cero
Cuando la cifra de 277.248 apareció en Hacker News, la reacción inicial de la comunidad fue de asombro. El emblemático procesador ARM1 se concibió en su día con menos de 25.000 transistores. El motivo por el cual esta máquina requiere diez veces más escala radica en que tanto la memoria ROM como la RAM están formadas exclusivamente por matrices de puertas NAND. No se utiliza ningún chip de memoria comercial.
En las arquitecturas convencionales, el procesamiento y la memoria corresponden a bloques diferenciados, donde el almacenamiento cuenta con estructuras de transistores altamente optimizadas. En NAND-16, en cambio, cada celda de memoria se ensambla a la fuerza con puertas lógicas puras. Esta necesidad de albergar código y datos en la propia lógica desata una inevitable explosión en el número de puertas.
Los datos de telemetría en el navegador indican que la máquina acumula 160.208 ciclos de reloj, unas 58.402 instrucciones ejecutadas y el contador de programa detenido en 046C. Se trata de una simulación física viva que procesa código máquina línea a línea. El motor del navegador alcanza una velocidad de evaluación de puertas de unos 23,0 M/s y una frecuencia de ejecución de instrucciones de 4,0 k/s. La realidad tras estas métricas es reveladora: la gran mayoría de las 277.000 puertas no realiza cálculo alguno, sino que funciona como celdas de almacenamiento. La computación universal puede lograrse con un solo tipo de conmutador, pero el peaje es acumular una cantidad astronómica de ellos para arañar algo de memoria.
Romper una sola pieza para ver cómo colapsa el sistema
Figura: NAND-16 ejecutándose en vivo en el navegador, con un auditor superior independiente que verifica continuamente los resultados de los circuitos. Fuente: somethingbig.ai
Al estar toda la máquina construida con un único componente, el diagnóstico y las pruebas de esfuerzo se convierten en experimentos físicos sumamente intuitivos. El proyecto incluye un laboratorio de fallos (Fault Lab) que permite fijar cualquier puerta arbitraria a 0 o 1 de forma permanente para observar cómo colapsa la máquina. Si se desconecta la segunda fase del reloj, la pantalla se congela de inmediato; si se daña una puerta en la memoria de vídeo, aparece al instante un bloque fantasma imposible de borrar en la pantalla de juego.
Los escenarios de avería predeterminados incluyen cadenas de acarreo interrumpidas, una instrucción de salto que nunca bifurca y un generador de números pseudoaleatorios degradado. Cuando una tecla deja de responder durante una partida, el origen suele ser una puerta lógica subyacente bloqueada externamente.
Todos los datos de funcionamiento se representan en tiempo real. En la parte superior de la página opera un auditor independiente que vuelve a evaluar los ciclos muestreados mediante un motor de simulación alternativo, tiñendo la interfaz de rojo si detecta discrepancias en la lista de conexiones (netlist). El analizador lógico incorporado no solo permite depurar paso a paso instrucción por instrucción, sino también grabar un ciclo completo y reproducirlo a cámara lenta con los retardos propios de cada puerta. Al hacer doble clic en cualquier píxel de la pantalla, la herramienta rastrea el circuito hasta el biestable exacto que retiene su estado. Cuando cada puerta del ordenador queda expuesta en la pestaña del navegador, la caja negra del hardware deja de existir.
Reacciones de la comunidad bajo la óptica de la era de la IA
La respuesta de la comunidad técnica se dividió en dos posturas claras. Un sector quedó maravillado ante la tenacidad de ingeniería que supone recrear toda la memoria con matrices NAND, aplaudiendo el enfoque purista de edificar un universo digital desde los cimientos. Otro grupo se mostró más distante, argumentando que si bien hace unos años habría sido asombroso, hoy en día un proyecto de tal envergadura probablemente provenga de una netlist generada por inteligencia artificial y no justifique tanta euforia. El debate generado en Hacker News pone de manifiesto el escepticismo instintivo con el que el sector tecnológico contemporáneo juzga las grandes obras.
Este prisma de época puede haber transformado nuestra percepción del esfuerzo de ingeniería, pero no altera las leyes físicas que rigen el sistema. Con independencia de si el autor recurrió o no a herramientas automáticas para generar la netlist, NAND-16 despoja al ordenador de su halo de complejidad y lo deja a la vista en el navegador para que cualquiera pueda diseccionarlo a su antojo. La computación no recurre a ningún truco de magia: con un número suficiente de interruptores idénticos interconectados según reglas fijas, el sistema cobra vida propia. Un ordenador transparente es, por definición, el mejor libro de texto de computación posible.
Enlaces de referencia:
- Página del proyecto NAND-16
- Discusión en HN
- Wikimedia Commons