Le début de cet article a paru dans NAM-Ip/Infos 2019/2 ▶
Parlons de la première piste maintenant: le plus grand problème. Il s’agissait bien sûr d’inventer cet Electronic Numerical Integrator and Computer. Ici aussi il y avait deux approches: il fallait décider du type de circuit électronique qui convenait le mieux. Et en même temps, créer l’architecture d’une machine qui n’avait pas de précurseur.
À cette époque, l’électronique était encore dans ses souliers d’enfance et on avait encore peu d’expérience préalable avec des circuits comme ceux nécessaires pour l’ENIAC. Plusieurs pistes furent explorées, et finalement on choisit un decade counter conçu par l’équipe, mais dérivé des compteurs déjà utilisés dans la recherche des particules élémentaires. C’est l’équivalent d’une roue utilisée dans les machines mécaniques: ce compteur avait dix positions distinctes, chacune représentant un nombre de 0 à 9. Surtout il fonctionnait de façon fiable à la fréquence qu’on voulait obtenir. Au début, on décide que huit de ces décades vont former un module appelé accumulator.
L’accumulator contenait aussi un compteur binaire pour enregistrer le signe. Un nombre négatif était enregistré par complément de 10, avec le compteur de signe dans la position M, pour moins. Le module avait deux sorties, une pour la valeur positive, l’autre pour le complément. Le module avait huit lignes (dix par la suite) à l’entrée, appelées digit lines. Par exemple, pour enregistrer le nombre 192 dans un accumulateur on envoyait deux impulsions sur la ligne des unités, neuf sur celle des dizaines et une sur les centaines. Pour additionner un nombre au nombre déjà enregistré, le même scénario se répétait, un circuit prenant soin du report. Ou bien on additionnait le contenu de deux accumulateurs en envoyant le nombre enregistré dans l’un vers l’autre. Ce qui est semblable à la façon dont on enregistre un nombre sur une de ces machines de Burroughs ou sur un Comptometer de Felt&Terrant du Computer Museum NAM-IP. Pour soustraire, le complément sortant d’un accumulateur sera envoyé vers un autre qui contenait le deuxième opérand. La machine finale aura vingt de ces accumulateurs.
Il y aura aussi trois modules contenant le multiplicateur (high speed multipler) et plusieurs de ces vingt accumulateurs formaient un module qui divisait et calculait la racine carré (divide and square root). Les accumulateurs étaient utilisés comme registre de travail, mais aussi comme mémoire tampon. D’autres accumulateurs servaient comme registre d’entrée ou de sortie vers les périphériques, qui étaient des lecteurs et perforateurs de cartes fournis par IBM. L’impression se faisait sur des tabulatrices off line.
Bien sur, toute cette quincaillerie devait travailler ensemble et fournir les résultats attendus.
Imaginez-vous une de ces computers féminins qui calcule la trajectoire d’un projectile. On veut tracer la trajectoire d’un obus en calculant la courbe suivie en partant d’une position de l’affût du canon. Pour chaque intervalle de temps elle va obtenir une nouvelle position, qui sera le point de départ pour le calcul suivant. La précision de la position obtenue dans le premier calcul va donc influencer la deuxième position et ainsi de suite. Pour calculer chaque point, elle aura noté sur papier le résultat intermédiaire de différentes opérations mathématiques (+ - x : etc) avant d’obtenir le résultat final pour un point.
Une autre table de tir, utilisée dans le tir aérien, demandait d’obtenir la position du projectile a des distances fixes, et le temps entre ces distances n’est pas égal.
Pour tous ces calculs il faut décider quand arrêter le calcul pour garantir la précision requise et décider à quel point un arrondi sera appliqué. Calculer avec une machine électronique posait des problèmes particuliers. Comme elle serait beaucoup plus rapide qu’une machine mécanique, on pouvait se permettre d’utiliser plus d’itérations pendant les calculs.
C’était le premier problème à résoudre par l’équipe. Heureusement, ils obtenaient la collaboration d’un mathématicien de l’université qui voulait bien se pencher sur un domaine dans lequel la plupart des mathématiciens ne voulaient pas se mouiller les pieds. Finalement, ils arrivent à décider que leur accumulateur avait besoin de dix chiffres au lieu de huit.
On décide de construire deux accumulateurs comme proof of concept. Mais ces deux modules devraient aussi être capables d’agir sur des instructions leur disant quoi faire. Comment faire en sorte que ces accumulateurs fonctionnent pour produire le même résultat que la dame avec sa machine mécanique et sa feuille de papier? Chaque module sera équipé de commutateurs qui vont lui ordonner de recevoir un nombre, d’envoyer ce nombre ou son complément vers un autre accumulateur, de se remettre à zéro, de répéter jusqu’à neuf fois une opération particulière. Le module devra aussi signaler quand une opération est terminée.
Pour synchroniser les opérations entre plusieurs accumulateurs ou autre modules, un cycling unit sera conçu. Ce module va distribuer les impulsions de travail. Aujourd’hui, en langage ordinateur, on parlerait d’horloge ou clock. La fréquence était de 100 kHz. Pour injecter des constantes dans la machine, on construit trois function tables, qui sont des tableaux plein de commutateurs mis dans une certaine position pour former un nombre. Les données venant du lecteur de cartes seront injectées dans la machine par un constant transmitter.
Tout ordinateur après l’ENIAC (et même l’ENIAC par la suite) aura une mémoire dans laquelle un programme est chargé, et ce programme va commander la machine pour exécuter certaines instructions dans un ordre particulier afin d’obtenir le résultat voulu.
Mais où est le « programme » de l’ENIAC? Il n’y avait pas de mémoire, les modules pouvaient (sous commande) exécuter certaines opérations. Il fallait donc encore un chef d’orchestre, qui recevra le nom de master programmer. Cette unité va donner des impulsions sur les lignes de contrôle de chaque module. Il y a sept groupes de ligne de contrôle, chacun de ces groupes a dix fils. L’ENIAC n’avait donc pas de programme dans le sens tel qu’on le comprend aujourd’hui. Pour chaque problème à résoudre, on construisit une configuration en branchant les modules sur les lignes de digit et les lignes de contrôle.
Le master programmer dirige donc le tout, en donnant des ordres basés soit sur une séquence, soit quand un module signalait qu’il venait de terminer une opération. Comme un module pouvait recevoir l’ordre de répéter une opération un certain nombre de fois, la machine pouvait donc exécuter des boucles.
Dans un langage de programmation plus récent, cela serait écrit comme «FOR nn DO... ou i=n;i<m;i++» .
Mais bientôt l’équipe se rends compte qu’une autre fonction est aussi nécessaire. On va utiliser le fait que le compteur de signe dans un module change par exemple de + vers – pour choisir un autre série d’impulsions qui sera émise par le master programmer. Ceci est le branchement conditionnel, connu comme IF… THEN … ELSE… Cette dernière possibilité donnait à l’ENIAC les capacités d’une machine universelle.
ENIAC avait donc toutes les possibilités d’un ordinateur moderne, bien qu’il n’avait pas (encore) une mémoire et qu’il n’y avait pas un jeu d’instructions qu’aujourd’hui on appellerait machine language . Il n’avait pas non plus un programme tel qu’on le voit maintenant.
Mais fonctionnait-il et quand?
Nous avons déjà parlé du nombre de composants, notamment le nombre énorme de tubes. Le Colossus fut construit à Bletchley Park par Tommy Flowers, un ingénieur-chercheur du service de téléphone en Angleterre, pareillement le MARK I de l’université de Harvard avait été fabriqué par des ingénieurs d’IBM, très expérimentés dans les machines électromécaniques. Ainsi l’ENIAC a certainement bénéficié du fait d’être construit dans un environnement où il ne manquait pas d’ingénieurs. En plus, «Pres» Eckert était un ingénieur exceptionnel. Dès le début, la machine fut conçue avec la facilité de maintenance et la fiabilité comme objectif. Les compteurs qui constituaient un accumulateur étaient des entités séparées, afin de pouvoir rapidement remplacer un compteur défaillant. Pareillement, pour aménager les tubes, leur point d’opération était bien en-dessous des maxima possibles. Eckert décida de les faire fonctionner à 25 % du maximum. Souvent un tube montrait des défaillances dans les premières heures d’opération. Pour éliminer les plus faibles, les tubes arrivant du constructeur étaient soumis à des tests avant d’être mis en service dans l’ENIAC.
La plupart du temps, un tube défaillait au moment ou la machine était remise en service après un arrêt et les tubes devaient chauffer. Dans ce cas, il y avait généralement un grand nombre de tubes qui rendaient l’âme. Pour remédier à cette situation, on évitera donc le plus possible de couper l’alimentation de la machine. Cette durée de vie limitée des tubes sera un souci pendant toute la vie de l’ENIAC. Les relais électro-mécaniques aussi avaient leurs problèmes de fiabilité et constituaient une source de soucis pour en obtenir suffisamment. Et comme on vient de parler de l’alimentation : ce monstre avait besoin de 180 kW, dont 100 kW pour le chauffage des tubes et 60 kW pour les moteurs qui faisaient tourner les ventilateurs.
La figure suivante montre le plan complet de l’ENIAC. Le contour de la machine était de 30 mètres, elle avait 2,5 mètres en hauteur, pesait 30 tonnes et pouvait réaliser 5.000 additions par seconde.
Une année après le début du projet, mi-1944, le design était complet. À ce moment, les deux accumulateurs dont on avait décidé la construction au début étaient opérationnels et fonctionnaient comme prévu. La construction du reste la machine pouvait donc commencer. Ce chemin sera pavé de difficultés, aussi bien pour obtenir les composants nécessaires en quantité suffisante et dans les délais, que des problèmes liés à la machine elle-même (pannes, erreurs de construction etc.). Des problèmes aussi avec des sous-traitants, notamment pour obtenir assez d’acier pour les châssis, ou bien des firmes qui ne pouvaient pas fournir ce qu’elles avaient promis. Plusieurs fois, les responsables de l’université vont assurer à l’armée (BRL) que la machine sera prête «pour le mois prochain».
En été 1945, la machine approchait de sa finition et on se rend compte qu’on aura besoin de personnel pour une nouvelle tâche. Nous avons expliqué qu’il n’y avait pas un programme dans le sens qu’on le comprend aujourd’hui. Il fallait configurer la machine pour qu’elle puisse exécuter la séquence d’opérations nécessaires pour résoudre le problème qu’on voulait calculer. Pour aider l’équipe dans cette tâche, six des computers féminines sont sélectionnées. Ces jeunes dames sont d’abord envoyées au BRL pour se familiariser avec le fonctionnement, la programmation des spaghettis des panneaux de contrôle et l’opération des machines à cartes perforées, qui servent de périphériques. À leur retour, on leur demande de se familiariser avec l’ENIAC, afin de devenir ce qu’on appellera un operator. Cette fonction n’a donc pas la même signification qu’on utilisera plus tard pour un opérateur. Ce seront elles qui vont configurer la machine pour chaque nouveau problème à calculer et veiller au bon déroulement d’un «programme».
C’est aussi en septembre 1945 que le Japon signe sa capitulation, après la destruction de la ville de Nagasaki par la deuxième bombe atomique. Ceci marque officiellement la fin de la deuxième guerre mondiale, et l’ENIAC n’avait pas encore produit une seule table de tir. Pire, beaucoup de projets liés à la guerre sont abandonnés. L’ENIAC avait une deadline au 30 septembre 1945, l’investissement total était déjà supérieur à 480.000 $US. Même si cette date fut dépassée, on a continué le projet grâce notamment à John von Neumann, le grand mathématicien et savant, qui était consultant pour beaucoup de projets de l’armée. Von Neumann avait pris connaissance de l’ ENIAC quand, un soir d’août 1944, il se trouvait dans le même train que Goldstine entre Aberdeen et Philadelphie. En discutant avec Goldstine, le génial von Neumann avait directement compris l’importance de ce qui était en train de naître.
En décembre 1945, la machine était finalement prête à attaquer un «vrai» problème, après avoir passé les tests d’acceptation. Au lieu de commencer à calculer des tables de tir, la machine devra résoudre un problème qui se posait à Los Alamos, le centre de recherche nucléaire, lieu de naissance de la bombe atomique, aussi un des projets ou von Neumann était impliqué. Là, il y avait une discussion entre les savants qui travaillaient au développement de la bombe à hydrogène, à savoir quelle était la masse critique de tritium qui était nécessaire pour déclencher la bombe. Le processus de production de tritium est très lent, il fallait plusieurs années pour produire quelques centaines de grammes, et faire des tests n’était pas possible. Deux savants de Los Alamos arrivent avec un million de cartes perforées et un tas de formules. L’équipe de l’ENIAC n’a pas la cote de sécurité nécessaire pour prendre connaissance des détails. (Certains aspects de ce problème sont encore sous secret aujourd’hui). Mais les gens de Los Alamos, avec l’aide de toute l’équipe parviennent à «programmer» la machine. Les résultats, eux ne sortent pas directement. Des multiples pannes vont encore bloquer le déroulement des opérations, les operators, qui ne sont pas encore à la hauteur, mélangent parfois les cartes. Il y a encore des erreurs dans la logique, la ventilation manque et quelques centaines de tubes vont faillir, le toit coule et la machine est inondée. Mais vers la fin de janvier 1946, une grande partie de la solution est disponible. Le résultat montrait lequel des deux camps, à Los Alamos, avait la bonne théorie.
Il faut noter aussi qu’en raison des ressources limitées de la machine, les calculs étaient souvent subdivisés en plusieurs pas, avec les résultats intermédiaires perforés sur cartes.
Il était finalement temps de montrer l’ENIAC au monde. Le 1er février 1946, les journalistes sont invités à la MSEE pour faire connaissance avec la machine, afin de préparer leur article qui ne pourra paraître que le 16 février, le lendemain de la présentation officielle.
Ce jour-là, 110 dignitaires sont invités à la cérémonie, qui a lieu après un banquet. Un général est invité à pousser le bouton «pour mettre la machine en marche», mais bien sûr on n’aurait jamais pris le risque de faire cramer un grand nombre de tubes. Mais la machine produisait des tables de tir et tous les invités recevaient une table imprimée comme souvenir. Les operators couraient dans tous les sens avec des cartes vers les imprimantes et du papier vers les invités, mais elles n’étaient pas invitées au banquet. Le lendemain, les journaux publient leurs articles, ils annoncent une nouvelle ère. Un des journalistes se demande si un jour une machine pareille va pouvoir gérer la déclaration des impôts.
ENIAC reste encore à Philadelphie jusqu’à la fin de 1947, puis déménage au BRL ou il sera transformé en une tout autre machine et fera encore beaucoup des calculs pionniers jusqu’en 1955.
Eckert et Mauchly quittent l’université et forment leur compagnie, la Eckert-Mauchly Computer Company, qui produira les UNIVAC, les premiers ordinateurs commercialisés. Leur firme sera plus tard absorbée par Remington-Rand, qui lui-même va fusionner avec Sperry. Et finalement, en 1987, quand Burroughs achète Sperry-Univac, Eckert sera encore consultant pour la nouvelle entité Unisys.
Eckert et Mauchly avaient aussi obtenu des brevets sur leur invention. Ces brevets seront invalidés à la suite d’un procès dans les années 1970. Pendant le développement de l’ENIAC, l’équipe s’était déjà rendue compte du fait que leur approche n’était pas la plus optimale et ils en avaient discutés avec von Neumann, qui écrira son First draft of a report on EDVAC. Ce document séminal restera un «brouillon», mais sera distribué par son admirateur Goldstine.
Après 1955, l’ENIAC fut démantelé, il reste encore des pièces dans des musées, mais aussi au département Engineering de l’Université de Pennsylvanie (U Penn).
Pour conclure, aujourd’hui l’ENIAC est considéré, à juste titre, comme le premier des ordinateurs, l’ancêtre de tout ce qui suivra après.
En parlant de l’ENIAC, on doit ne pas oublier de dire que c’était:
le premier ordinateur,
digital,
universel,
électronique,
qui a fonctionné
et qui avait toutes les fonctionnalités d’une machine Turing: elle pouvait donc aussi simuler la machine théorique de Turing.
Ward Desmet
Sources:
• Thomas Haigh, Mark Priestley and Crispin Rope
ENIAC in Action, Making and Remaking the Modern Computer,
MIT Press, isbn 978-0-262-03398-5
• Aussi consulté :
Walter Isaacson, De Uitvinders
Spectrum Uitgeverij,
isbn 978-90-00-34307-2