Été 1944, un quai de gare à Aberdeen, Maryland. Un capitaine de trente ans attend le train de Philadelphie. Herman Goldstine, mathématicien, fait le lien pour l'armée entre son polygone de tir et une université qui construit en secret une machine à calculer de trente tonnes. Sur le même quai, un homme en costume, le front dégarni, la quarantaine : John von Neumann, l'un des mathématiciens les plus célèbres d'Amérique, consultant d'un projet dont personne ne prononce le nom. Goldstine ne l'a jamais rencontré. Il s'approche quand même.
La conversation est aimable, jusqu'à ce que Goldstine lâche un chiffre : la machine de Philadelphie fera 333 multiplications par seconde. La suite, dans ses mémoires :
Toute l'atmosphère de notre conversation passa d'une bonne humeur détendue à quelque chose qui ressemblait davantage à l'examen oral du doctorat de mathématiques.
Peu après, Goldstine l'emmène voir l'ENIAC en chantier à la Moore School. En août 1944, ses concepteurs, John Mauchly et J. Presper Eckert, proposent déjà la machine suivante, l'EDVAC. Von Neumann se joint aux réunions, écoute, questionne et prend le train.
Un mémo écrit dans le train
Entre février et juin 1945, von Neumann fait la navette entre Princeton, Philadelphie et Los Alamos, où il calcule les lentilles d'explosif de la bombe à implosion. Dans le wagon, il écrit à la main et poste les feuillets à Philadelphie. À la Moore School, on les tape sans relecture : le texte garde ses coquilles, ses renvois vers des sections jamais écrites, dont celle sur la programmation. Le manuscrit, lui, a disparu.
Le document fait 101 pages. Sa couverture porte la date du 30 juin 1945, un titre prudent, First Draft of a Report on the EDVAC, et un seul nom d'auteur. Le 25 juin, Goldstine en fait ronéotyper des exemplaires pour au moins trente-deux destinataires. Seize jours après la date imprimée, à 5 h 29, la bombe de Trinity explose sur le polygone d'Alamogordo. L'auteur du brouillon avait autre chose en tête.
Cinq organes et une seule mémoire
Première phrase du rapport : « Les considérations qui suivent traitent de la structure d'un système de calcul numérique automatique à très grande vitesse, et en particulier de son contrôle logique. » Puis von Neumann découpe la machine en organes, comme un anatomiste : une unité arithmétique, CA ; un contrôle central, CC, qui lit et enchaîne les instructions ; une mémoire, M ; une entrée et une sortie. CA, CC et M « correspondent aux neurones associatifs du système nerveux humain », écrit-il, en empruntant sa notation à un article de 1943 de Warren McCulloch et Walter Pitts, seule référence bibliographique des 101 pages.
Tout part d'une décision de rangement. Un nombre occupe 30 unités binaires (30 chiffres qui valent 0 ou 1), plus une pour le signe, plus une dernière « pour le distinguer d'un ordre ». Ce paquet de 32 chiffres, von Neumann l'appelle un cycle mineur. Une instruction doit tenir dans le même gabarit. Et la mémoire ne fait pas la différence : tout y est rangé pareil, les nombres et les ordres qui disent quoi en faire.
Les ordres que reçoit CC viennent de M, c'est-à-dire du même endroit où est rangé le matériel numérique.
Une phrase de la section 14.1, et le programme devient une donnée. Écrit en 0 et en 1, chaque ordre se range, se copie et se modifie comme un nombre. Pour changer de calcul, on écrit un autre programme en mémoire ; sur l'ENIAC, il fallait rebrancher des câbles et régler des commutateurs, parfois pendant des jours. Un ordre de saut envoie même CC chercher l'instruction suivante ailleurs dans M, ce qui permet la boucle et le choix.
Von Neumann dimensionne cette mémoire à 8 192 cycles mineurs, « environ un quart de million d'unités ! », et y voit « la vraie difficulté, le principal goulot d'étranglement » de la machine : le calcul et le contrôle sont simples à construire, une mémoire aussi grande ne l'est pas.
Un seul nom sur la couverture
Le problème, c'est que ces idées n'étaient pas toutes les siennes. En janvier 1944, sept mois avant le quai d'Aberdeen, Eckert avait décrit dans une note une mémoire à disques magnétiques capable de stocker les données et le programme. Les réunions sur l'EDVAC avaient commencé sans lui. Pour Eckert et Mauchly, le rapport traduisait en langage logique un travail d'équipe, et la couverture n'en gardait qu'un nom. Eckert soutiendra que l'« architecture de von Neumann » aurait dû s'appeler architecture d'Eckert ; Jean Bartik, l'une des programmeuses de l'ENIAC, lui donnera raison.
Goldstine ne s'arrête pas à cette première liste : des dizaines, peut-être des centaines de ronéos partent vers les universités américaines et britanniques. À Cambridge, Maurice Wilkes en lit une et traverse l'Atlantique pour suivre les cours de la Moore School à l'été 1946 ; son EDSAC calcule le 6 mai 1949. À Manchester, la « Baby » a exécuté son premier programme enregistré le 21 juin 1948. L'EDVAC lui-même ne fonctionne qu'en 1951 : la notice a devancé sa machine, et ses lecteurs l'ont doublée.
Le brevet qui n'a jamais tenu
En mars 1946, Eckert et Mauchly quittent la Moore School plutôt que de céder leurs brevets à l'université. Le 8 avril 1947, un avocat en brevets leur apprend la nouvelle : le First Draft a circulé plus d'un an avant tout dépôt, et, pour la loi américaine, c'est une publication. Ils déposent quand même, le 26 juin 1947, un brevet large sur le calculateur électronique. Il est accordé le 4 février 1964, sous le numéro 3 120 606, et tient moins de dix ans.
Le 19 octobre 1973, après 135 jours d'audience, 77 témoins et 20 667 pages de transcription, le juge Earl R. Larson l'annule. Parmi ses motifs : Eckert et Mauchly avaient, selon lui, emprunté à John Atanasoff, et la diffusion du rapport par Goldstine au plus tard le 30 juin 1945 constituait une publication au sens de la loi et une divulgation suffisante de l'ENIAC. Von Neumann n'en a rien su : il est mort d'un cancer le 8 février 1957, sept ans avant que le brevet ne soit seulement délivré.
Le texte qui a confisqué le crédit à deux ingénieurs est aussi celui qui a empêché quiconque de posséder l'idée.
La dette envers Turing
Reste l'idée elle-même. En 1936, Alan Turing avait décrit une machine imaginaire dont le ruban contenait à la fois les données et la description de la machine à imiter. Il passa ensuite deux ans à Princeton, où von Neumann avait tenté de l'embaucher comme assistant. En 1972, Stanley Frankel, collègue de von Neumann à Los Alamos, écrira que, dès 1943 ou 1944, von Neumann « était parfaitement conscient de l'importance fondamentale de l'article de Turing de 1936 » et soulignait que « la conception fondamentale revient à Turing ». Le rapport, lui, ne cite pas Turing. Certains historiens n'y voient aucune preuve d'influence directe ; d'autres rappellent que l'article de 1936 était lecture obligatoire dans son équipe de Princeton après la guerre.
Quand Turing rédige à son tour le plan de l'ACE, présenté le 19 février 1946, il cite le First Draft comme la source à lire, et son directeur John Womersley note qu'il « contient un certain nombre d'idées qui sont celles du Dr Turing ». Chacun avait lu l'autre.
Quatre-vingts ans de cycles mineurs
Le programme est toujours une donnée : une application se télécharge comme un fichier. John Backus, le père du Fortran, a nommé la limite de ce schéma dans sa conférence du prix Turing 1977. Entre processeur et mémoire passe, écrit-il, « un tube de liaison qui peut transmettre un seul mot » : un paquet de 0 et de 1 à la fois. Il l'appelle « le goulot d'étranglement de von Neumann ». Instructions et données y passent une à une, et le processeur, plus rapide que la mémoire, attend souvent.
Les caches, petites mémoires rapides placées près du processeur, atténuent l'obstacle sans le supprimer. L'écart grandit : en vingt ans, selon une étude de Berkeley parue en 2024, la puissance de calcul maximale des serveurs a été multipliée par 60 000, le débit de leur mémoire par 100. Pour un modèle de langage, la mémoire peut devenir la première limite.
Sur le quai d'Aberdeen, un capitaine a adressé la parole à un homme célèbre parce qu'ils attendaient le même train. Il en est sorti un brouillon de 101 pages, jamais relu, jamais terminé, qui n'a gardé qu'un nom et a donné sa forme à toutes les machines. Le manuscrit est perdu. La dactylographie, avec ses coquilles, tourne encore dans chaque poche.