Mémoire de 1 bit : l’atome de la RAM — et l’épilogue de notre ordinateur à relais
Construisez une cellule mémoire de 1 bit avec des relais : Write à l’état haut pour mémoriser, à l’état bas pour conserver. Retracez le chemin du relais à la RAM, avec le Z3 de Zuse, le Mark I d’Aiken et le premier véritable bug de Grace Hopper.
Dans l’article précédent, nous avons construit le verrou D : un circuit qui reçoit une entrée Data et une ligne de validation Write, puis mémorise fidèlement la valeur présente sur Data au moment où Write est activée. C’était, dans le monde des relais, l’équivalent d’un emplacement mémoire contrôlé — presque une cellule mémoire complète et réutilisable. Presque. Il ne restait qu’un petit travail d’encapsulation.
Voici l’article 18 de la série Construire un ordinateur à partir de relais — notre dernière étape. Nous allons achever cette cellule mémoire, l’appeler par son véritable nom, puis accomplir ce vers quoi les dix-sept articles précédents nous conduisaient : retracer ensemble chacun des barreaux de l’échelle que nous avons gravie, depuis un unique interrupteur qui claque jusqu’au bit mémorisé.
Bienvenue au cœur de l’atome de la RAM.
Encapsuler la cellule mémoire de 1 bit
Le verrou D effectue déjà le travail difficile. Il possède une ligne de validation d’écriture — souvent appelée EN ou WE — et une ligne de données D ; il conserve la dernière valeur de D qu’il a vue pendant que Write était à l’état haut. Mais sous sa forme brute, le verrou expose sa topologie interne — la rétroaction des relais couplés en croix et les broches de sortie directes — et invite son utilisateur à effectuer des câblages problématiques.
Une cellule mémoire de 1 bit est un verrou D encapsulé derrière un contrat d’interface clair :
- Write — une ligne de commande unique. Activez-la à l’état haut (1) pour écrire ; maintenez-la à l’état bas (0) pour lire ou simplement conserver la valeur.
- Data — le bit à mémoriser : 0 ou 1.
- Q — la sortie mémorisée. Elle reflète Data lorsque Write vaut 1 et conserve sa dernière valeur lorsque Write repasse à 0.
Tout le reste — la rétroaction couplée en croix et l’inverseur qui empêche l’état interdit — est enfermé à l’intérieur. L’utilisateur n’a jamais besoin de le voir. La table d’état de cette cellule est agréablement courte :
| Write | Data | Q (suivant) |
|---|---|---|
| 0 | — | Q (conservé) |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Le tiret de la colonne Data lorsque Write vaut 0 est précisément ce qui compte. Quand Write est à l’état bas, Data n’a aucune importance. La cellule n’écoute pas. Elle conserve ce qu’elle a entendu en dernier — et le conservera tant qu’elle restera alimentée.
Remarquez ce que la table d’état ne peut pas dire : elle ne peut indiquer la valeur actuelle de Q sans connaître la dernière valeur écrite. La mémoire possède un état. Elle n’est pas une pure fonction de ses entrées actuelles, mais une fonction de ses entrées et de son histoire. Voilà la différence profonde entre les circuits combinatoires — ET, OU, XOR, additionneur — et les circuits séquentiels — verrous, bascules, registres, RAM. Les circuits combinatoires sont sans état : on applique des entrées, on lit les sorties, et c’est terminé. Les circuits séquentiels transportent le passé jusqu’au présent. Votre verrou se souvient.
Changer d’échelle : d’un bit à un ordinateur
C’est ici que l’abstraction prend tout son sens.
Huit de ces cellules écrites ensemble mémorisent un octet — un nombre compris entre 0 et 255 que votre processeur peut charger, modifier et enregistrer en une seule opération. Mille octets forment un kilooctet. Un million d’octets forme un mégaoctet. Un milliard d’octets forme un gigaoctet. Les ordinateurs modernes regroupent des dizaines de milliards de ces cellules sur une puce de la taille d’un timbre-poste, qui alternent entre écriture et conservation des millions de fois par seconde.
Chaque cellule obéit à la même table d’état à deux lignes. Rien dans cette table ne change lorsque le relais est réduit à un transistor et que quatre milliards d’entre eux sont disposés sur un centimètre carré de silicium. L’interrupteur a rétréci. La logique n’a pas bougé.
Essayez par vous-même
Vous trouverez ci-dessous la cellule memory-bit — le verrou D encapsulé comme une cellule mémoire propre de 1 bit, exécuté dans votre navigateur sous la forme d’une véritable simulation de relais. Ce n’est pas une animation : les contacts commutent physiquement, le courant circule et Q conserve un état réel.
Parcourez cette séquence avec attention :
-
Mémorisez un 1. Réglez Data = 1, puis activez Write = 1. La cellule se verrouille et Q passe à 1. Ramenez maintenant Write à 0. Data n’a plus d’importance : faites-la varier, mettez-la à 0, imaginez même qu’elle est déconnectée. Q reste à 1. Vous venez de mémoriser un bit.
-
Remplacez-le par un 0. Réglez Data = 0, puis envoyez de nouveau une brève impulsion haute sur Write. Q tombe à 0. Relâchez Write. Q conserve 0. Vous venez d’écraser le bit.
-
Vérifiez la conservation dans le silence. Laissez Write et Data à 0. Q reste à 0. La cellule ne réagit pas aux entrées ; elle se contente de se souvenir de votre dernière instruction.
Vous venez de mémoriser un bit à la main. Imaginez-en maintenant un million — tous identiques, chacun conservant patiemment son propre 0 ou 1, chacun sourd au monde extérieur jusqu’à l’activation de sa ligne Write. Cette image, c’est la RAM.
L’échelle que vous avez gravie
Cette série avait un plan dès le premier claquement de l’article 1. Avant d’examiner les ordinateurs à relais qui fonctionnaient avec de tels circuits, retraçons ensemble chaque barreau, car l’ensemble du parcours est remarquable.
Article 1 — Le relais lui-même. Un interrupteur commandé par l’électricité. Une bobine attire une armature ; l’armature déplace un contact ; un circuit manœuvre l’interrupteur d’un autre circuit. Câblé normalement ouvert, il constitue un tampon ; câblé normalement fermé, un inverseur. Ce claquement n’était pas seulement un son agréable. Il contenait la graine de tout le reste.
Articles 2–3 — Série et parallèle. Deux interrupteurs en série : le courant ne circule que lorsque les deux sont fermés, c’est ET. Deux interrupteurs en parallèle : le courant circule dès que l’un se ferme, c’est OU. Aucun symbole de porte pour l’instant, seulement des fils et le comportement observable du courant. La logique était déjà là, écrite dans le cuivre.
Articles 4–7 — Les portes nommées. ET, OU et NON ont reçu des noms et des symboles, grâce à l’algèbre de George Boole et à la démonstration de Claude Shannon en 1937 selon laquelle les réseaux de relais et l’algèbre booléenne décrivent la même chose. Tampon, inverseur et trio de portes : autant de réalisations à partir des premiers principes dans du matériel à relais.
Articles 8–9 — Les portes universelles. NAND et NOR : chacune peut réaliser n’importe quelle fonction logique existante. Leur simplicité désoriente — un seul type de porte, câblé avec ingéniosité, permet d’obtenir toutes les autres. Puis vient la célèbre dépendance de l’ordinateur de guidage Apollo aux portes NOR : la mission lunaire volait grâce à un circuit que vous pourriez désormais construire vous-même.
Articles 10–11 — XOR et XNOR. Le détecteur de différence. XOR produit 1 lorsque ses entrées ne concordent pas — idée étonnamment puissante que l’on retrouve dans la détection d’erreurs, le chiffrement et, surtout, l’arithmétique.
Articles 12–13 — L’additionneur. XOR produit le bit de somme ; ET produit la retenue. Deux interrupteurs, deux sorties, une addition binaire. Le demi-additionneur devient ensuite un additionneur complet grâce à une retenue d’entrée — composable, chaînable, c’est l’architecture à propagation de retenue que tout processeur utilise encore en son cœur. George Stibitz démontra que cela fonctionnait en 1937 sur sa table de cuisine, à l’aide de relais et d’une boîte à tabac comme contacts.
Articles 14–16 — La rétroaction et l’horloge. Première idée purement séquentielle de la série : câblez un inverseur de sorte que sa sortie revienne sur son entrée, et le circuit oscille. Domptez cette oscillation pour en faire une onde carrée régulière et vous obtenez une horloge — le battement qui permet aux circuits séquentiels de se mettre à jour à l’unisson. Sans horloge, un ordinateur est un réseau combinatoire qui calcule une fois puis s’arrête. Avec elle, il calcule sans cesse, étape par étape, en suivant un programme.
Article 17 — Le verrou D. La rétroaction devient constructive : des relais couplés en croix conservent un état jusqu’à l’ordre de le modifier. La ligne de validation Write empêche l’état interdit, où les deux relais sont actifs. Une mémoire contrôlée dans un circuit à relais.
Article 18 — La cellule mémoire de 1 bit. Encapsulez le verrou D derrière une interface propre. Write à l’état haut pour mémoriser ; Write à l’état bas pour conserver. Empilez-en huit pour former un octet. Empilez-en des millions pour former un mégaoctet.
Et voici maintenant l’aboutissement.
Au fond, un ordinateur est constitué de quatre choses :
- Une horloge — un oscillateur régulier qui bat la mesure et indique à tous les autres circuits quand agir.
- Une UAL — une unité arithmétique et logique : additionneurs, comparateurs, opérations booléennes.
- De la mémoire — un stockage qui conserve son état entre les coups d’horloge, au fil des programmes et des cycles d’alimentation.
- Des circuits de commande et de sélection — multiplexeurs, décodeurs et logique d’instruction qui acheminent les bonnes données au bon endroit et au bon moment.
Vous avez maintenant construit chacune de ces parties avec des relais, à la main et à partir des premiers principes. L’horloge : articles 14–16. L’UAL : articles 12–14. La mémoire : articles 16–18. La commande et la sélection : articles 7 et 12 — le multiplexeur et le décodeur. La seule étape restante est la mise à l’échelle et l’organisation : câbler des milliers de ces briques sous la direction d’un programme. Mais toute la physique est là. Il ne vous manque aucune idée fondamentale. Il vous manque seulement davantage de fil.
Les machines qui ont fait exactement cela
Les véritables ordinateurs à relais des années 1940 faisaient exactement ce que vous venez de faire — à une échelle qui remplissait des salles et coûtait des millions de dollars.
Le Z3 de Konrad Zuse (1941) est largement reconnu comme la première machine de calcul entièrement programmable et commandée automatiquement. Zuse — ingénieur civil allemand qui construisit ses premiers ordinateurs dans le salon berlinois de ses parents — assembla environ 2 000 relais dans une machine capable d’exécuter un programme stocké sur une bande de film perforée. Le Z3 utilisait l’arithmétique en virgule flottante et pouvait être reprogrammé sans recâblage. Il fut détruit lors d’un bombardement allié en 1943. Zuse a été brièvement présenté dans cette série à propos de l’arithmétique, mais le Z3 mérite ici toute notre attention : c’était la première machine correspondant à l’architecture que nous avons construite. Horloge, UAL, mémoire et commande — assemblées avec les mêmes interrupteurs claquants.
Aux États-Unis, Howard Aiken, à Harvard et en collaboration avec IBM, construisit le Mark I — officiellement nommé IBM Automatic Sequence Controlled Calculator — dévoilé en 1944. Long de quinze mètres et demi, haut de deux mètres quarante et pesant environ cinq tonnes, le Mark I contenait quelque 3 300 relais au milieu d’une forêt de compteurs mécaniques, d’embrayages et d’arbres à cames. Il lui fallait de trois à cinq secondes pour multiplier deux nombres. Ses instructions arrivaient sur une bande de papier perforée, et il fonctionna sans interruption pendant des années afin de calculer des tables balistiques, des tables de logarithmes puis, plus tard, des travaux mathématiques destinés au projet Manhattan. Les visiteurs de Harvard pouvaient l’entendre depuis l’extérieur du bâtiment : le fracas rythmique d’un ordinateur à 3 300 relais au travail n’avait rien de discret.
Le Mark I fut suivi du Mark II en 1947 — une machine électromécanique comparable, elle aussi installée à Harvard. Et c’est au Mark II que nous devons l’une des histoires les plus durables de l’informatique.
Le 9 septembre 1947, une équipe d’opérateurs comprenant une jeune officier de marine et mathématicienne nommée Grace Hopper constata que le Mark II se comportait de façon erratique. Ils remontèrent la panne jusqu’au relais no 70 du panneau F. En retirant le relais, ils découvrirent un papillon de nuit — un véritable insecte — coincé entre les contacts et les empêchant de se fermer correctement. Le papillon fut soigneusement retiré à la pince, puis fixé avec du ruban adhésif dans le journal des opérations, accompagné de cette note : « Premier cas réel de bug découvert. »
La page du journal a survécu. Elle est exposée au National Museum of American History de la Smithsonian Institution. Le papillon y est toujours, sous son morceau de ruban adhésif.
Le mot anglais « bug » désignait déjà familièrement un défaut technique depuis des décennies — Thomas Edison l’utilisait dès 1878 à propos des problèmes de ses appareils —, mais chacun se souvient de ce papillon collé, tant l’anecdote est littérale. Un véritable insecte dans un véritable relais d’un véritable ordinateur. La métaphore faite chair. Et cela arriva dans un ordinateur à relais, parce que ces ordinateurs étaient assez grands et assez ouverts pour laisser entrer des papillons. Un transistor est scellé. L’insecte n’a aucune chance.
La filiation : relais → tube à vide → transistor → puce
Les ordinateurs à relais fonctionnèrent de la fin des années 1930 au début des années 1950. Ils furent ensuite remplacés — rapidement et entièrement — par les ordinateurs à tubes à vide. Ces tubes ne possédaient aucune pièce mobile : au lieu d’une armature mécanique, une électrode de grille dans une enveloppe de verre sous vide commandait le flux des électrons et assurait la même commutation en quelques microsecondes plutôt qu’en quelques millisecondes. La logique était identique. L’architecture était identique. Seul l’interrupteur avait changé.
Les tubes à vide furent à leur tour supplantés par les transistors, démontrés aux Bell Labs en 1947 et commercialisés au cours des années 1950. Un transistor est un commutateur à semi-conducteur : une faible tension appliquée à une borne de base commande un courant beaucoup plus important entre collecteur et émetteur. Aucune pièce mobile, aucune enveloppe de verre, aucun filament à brûler. Des millions d’opérations par seconde. La logique était identique. L’architecture était identique. Seul l’interrupteur avait changé.
Les transistors furent ensuite intégrés par milliards sur des tranches de silicium : le circuit intégré, né en 1958 et toujours à la base de tous vos appareils informatiques. La logique est identique. L’architecture est identique. Seul l’interrupteur est devenu microscopique.
Le relais découvert dans l’article 1, dont l’armature à ressort claquait audiblement, et le transistor qui commute silencieusement 500 000 milliards de fois par seconde dans votre téléphone font la même chose. Tous deux sont des interrupteurs commandés — l’électricité d’un circuit en gouverne un autre. L’algèbre de Shannon de 1937 décrit l’un comme l’autre avec les mêmes symboles et produit les mêmes tables de vérité.
Selon une certaine lecture, l’histoire du matériel informatique est celle du relais. Tout ce qui a suivi n’est qu’une version plus rapide, plus silencieuse et plus petite de la même idée.
Où aller maintenant ?
Voici trois recommandations sincères pour qui est arrivé au terme de cette série.
Premièrement : construisez quelque chose de plus grand. Les circuits de cette série étaient dimensionnés pour un article de blog. Que se passe-t-il lorsque vous chaînez huit additionneurs complets, câblez un registre pour conserver le résultat, ajoutez une horloge et observez une véritable opération sur 8 bits ? Le laboratoire de relais DigiSim propose exactement cette progression : une machine à additionner sur 8 bits dont on peut voir la retenue parcourir les huit étages, un compteur binaire à propagation sur 3 bits qui claque au fil de sa séquence, une bascule D déclenchée par front qui ne capture les données qu’au front montant de l’horloge, et un diviseur de fréquence qui divise un signal d’horloge par deux au moyen d’une seule bascule. Voilà les réalisations spectaculaires : de véritables programmes exécutés par une logique à relais, chaque claquement étant visible et audible. Elles ne sont pas intégrées à un article, car celui-ci est trop petit pour elles. Elles méritent toute la zone de travail.
Deuxièmement : lisez CODE de Charles Petzold. Cette série s’en inspire profondément. Le livre de Petzold part du code Morse et des lampes de poche, puis aboutit à un processeur fonctionnel, construit étape par étape à partir des premiers principes avec autant de rigueur que d’humanité. Il parcourt le même terrain que nous — puis poursuit vers le langage machine, l’assembleur et les systèmes d’exploitation. Si vous cherchez un livre qui fait pour la lecture ce que DigiSim fait pour la simulation, c’est CODE.
Troisièmement : construisez vous-même. Ouvrez la zone de travail de DigiSim, déposez un relais et câblez une idée née pendant la lecture de cette série. Passer de « suivre le circuit de quelqu’un d’autre » à « concevoir le mien » constitue le véritable diplôme. Cela n’exige aucune connaissance nouvelle. Vous avez tout ce qu’il faut. Faites claquer les relais selon vos propres règles.
Il y a dix-sept articles, vous découvriez un interrupteur manœuvré par l’électricité. Aujourd’hui, vous avez construit une cellule mémoire qui conserve un bit dans le silence, puis suivi le fil qui relie ce claquement à tous les ordinateurs jamais fabriqués. Ce fil n’a jamais été rompu.
Venez voir fonctionner un véritable ordinateur à relais : laboratoire de relais DigiSim.



