Au total, 277 248 portes NAND à deux entrées font tourner un ordinateur 16 bits complet directement dans le navigateur. Dépourvu de tout autre type d’élément logique, il exécute avec fluidité une variante de Tetris à une fréquence d’horloge de 16,4 kHz. À une époque dominée par des couches d’abstraction logicielle et des langages de haut niveau, NAND-16 fait le choix de réinventer la roue sous sa forme la plus élémentaire. Nous avons naturellement l’intuition que la construction d’une machine complexe exige des organes spécialisés aux rôles bien distincts, associant des unités arithmétiques dédiées à des puces mémoires indépendantes. NAND-16 démontre l’exact contraire : le seuil d’accès au calcul universel est si bas qu’un seul interrupteur élémentaire suffit.
La complexité ne requiert pas de composants spécialisés
Figure : Un circuit intégré de la série 7400 contenant quatre portes NAND à deux entrées. L’ordinateur tout entier n’utilise que 277 248 exemplaires de cet élément logique basique. Source : Wikimedia Commons
Le projet NAND-16 emploie exclusivement un seul modèle d’unité logique : la porte NAND (NON-ET). C’est l’équivalent architectural de ne recevoir qu’une unique forme de brique Lego et de devoir bâtir un gratte-ciel doté d’un ascenseur fonctionnel. Dans ce système, les additionneurs, les registres et la logique de décodage des instructions résultent tous de l’agencement de cette même et unique pièce. Contraindre l’ensemble du système à un seul type de porte apporte une clarté totale sur la genèse de la puissance de calcul.
La visite guidée du projet (Genesis) s’articule autour de 15 chapitres ayant pour fil conducteur « réinventer cet ordinateur à partir d’une seule porte ». Elle détaille comment assembler deux portes NAND pour former une bascule RS, puis comment empiler ces verrous pour bâtir des registres et des unités de calcul plus complexes. En suivant ce cheminement, le mystère entourant la conception matérielle s’effondre : chaque fonction évoluée se ramène in fine à la simple bascule d’une myriade d’interrupteurs.
L’ordre de grandeur des 277 000 portes : le tribut de la mémoire
Lorsque le nombre 277 248 a fait son apparition sur Hacker News, la première réaction a souvent été la stupéfaction. À son époque, le processeur historique ARM1 ne comptait pas 25 000 transistors. Si cette machine en réclame plus de dix fois plus, c’est parce que sa mémoire ROM et sa mémoire RAM sont elles aussi intégralement bâties à partir de réseaux de portes NAND. La machine ne fait appel à aucun composant de stockage du commerce.
Dans les ordinateurs traditionnels, le traitement et la mémorisation reposent sur des architectures distinctes, les composants de stockage bénéficiant de topologies de transistors optimisées pour la densité. Dans NAND-16 en revanche, chaque cellule de mémoire est assemblée à partir de portes logiques brutes. Stocker les instructions et les données de cette manière engendre inévitablement une explosion exponentielle du nombre de portes.
Les données télémétriques affichées dans le navigateur indiquent que la machine a franchi 160 208 cycles, exécuté environ 58 402 instructions et que son compteur de programme est calé sur 046C. Il s’agit d’un environnement de simulation physique bien vivant qui dévore le code machine ligne après ligne. Le moteur web atteint une vitesse d’évaluation d’environ 23,0 M/s de portes logiques et un rythme d’exécution d’environ 4,0 k/s d’instructions. La réalité derrière ces chiffres est éloquente : l’écrasante majorité de ces 277 000 portes n’effectue aucun calcul, mais sert tout simplement de mémoire. Le calcul universel peut parfaitement s’accomplir avec un seul type d’interrupteur, à condition d’en mobiliser des quantités astronomiques pour façonner le moindre octet de stockage.
Saboter un composant unique pour observer l’effondrement du système
Figure : NAND-16 en cours d’exécution dans le navigateur, doté d’un module d’audit supérieur vérifiant en continu les résultats des calculs. Source : somethingbig.ai
La machine n’étant constituée que d’un seul composant, le diagnostic et les tests de contrainte se muent en expériences physiques très concrètes. Le projet intègre un laboratoire de pannes (Fault Lab) qui permet de forcer n’importe quelle porte à l’état 0 ou 1 de manière permanente pour observer l’effondrement du système en temps réel. Débranchez la deuxième phase de l’horloge et l’affichage se fige instantanément ; corrompez une porte dans la mémoire vidéo et un bloc fantôme ineffaçable surgit sur l’écran de jeu.
Les scénarios de panne préconfigurés comprennent une chaîne de retenue interrompue, une instruction de saut qui n’effectue jamais de branchement ou encore un générateur de nombres pseudo-aléatoires défaillant. Lorsque le clavier cesse de répondre en cours de partie, la cause sous-jacente remonte souvent à une porte logique verrouillée de force par une perturbation externe.
Toutes les métriques de fonctionnement sont rendues en temps réel. En haut de l’interface veille un auditeur indépendant qui réévalue les cycles échantillonnés à l’aide d’un moteur de simulation alternatif, teintant toute la page de rouge si l’état de la netlist diverge. L’analyseur logique intégré permet non seulement le débogage au pas à pas par instruction, mais également l’enregistrement d’un cycle complet pour le rejouer au ralenti avec les délais propres à chaque porte. Un double-clic sur n’importe quel pixel de l’écran remonte immédiatement jusqu’au circuit de verrouillage élémentaire qui préserve son état. Dès lors que chaque porte de l’ordinateur s’étale dans la fenêtre du navigateur, la boîte noire du matériel s’évanouit.
Les réactions de la communauté sous le prisme de l’ère de l’IA
Les réactions au sein de la communauté technique se sont scindées en deux camps bien distincts. D’un côté, certains ont salué avec admiration la persévérance technique nécessaire pour répliquer la mémoire à partir de matrices NAND, louant la démarche puriste de bâtir un univers numérique depuis les principes fondamentaux. D’un autre côté, certains sont restés de marbre, estimant qu’un tel projet aurait forcé le respect il y a quelques années, mais qu’à l’heure actuelle, une netlist de cette dimension a de fortes chances d’avoir été générée par une intelligence artificielle, ce qui modère l’enthousiasme. Les échanges sur Hacker News mettent en lumière le scepticisme presque systématique dont fait preuve la communauté technologique d’aujourd’hui face aux chantiers d’envergure.
Le prisme de l’époque a sans doute altéré notre appréciation de la complexité technique, sans pour autant changer les lois de la physique qui animent le système. Que l’auteur ait largement eu recours ou non à des outils d’automatisation pour synthétiser la netlist, NAND-16 dépouille l’ordinateur de ses artifices et l’expose dans un onglet de navigateur afin que chacun puisse le décortiquer à sa guise. L’informatique ne relève d’aucune magie : avec suffisamment d’interrupteurs identiques reliés selon des règles immuables, un système entier prend vie. Un ordinateur transparent demeure, en soi, le plus parfait des manuels d’architecture informatique.
Liens de référence :
- Page du projet NAND-16
- Discussion sur HN
- Wikimedia Commons