« ENIAC » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
m Ajout d’une virgule entre plusieurs références.
Damien.b (discuter | contributions)
Compléments et source
Ligne 75 : Ligne 75 :
Dans sa version de 1943, l’ENIAC est un calculateur électronique complexe, rapide, et parallèle : un train de pulses circule de façon décentralisée dans des unités largement autonomes.<ref>{{Lien web |langue=en |titre=Programming the ENIAC before its rewiring. |url=https://studylib.net/doc/8742623/programming-the-eniac-before-its-rewiring. |site=studylib.net |consulté le=2022-08-22}}</ref> En particulier, chaque accumulateur est doté de son propre [[additionneur]] ainsi que d'une mémoire électronique, onéreuse mais beaucoup plus rapide que les [[Ligne à retard (électronique)|lignes à retard]] fréquemment utilisées à l'époque.
Dans sa version de 1943, l’ENIAC est un calculateur électronique complexe, rapide, et parallèle : un train de pulses circule de façon décentralisée dans des unités largement autonomes.<ref>{{Lien web |langue=en |titre=Programming the ENIAC before its rewiring. |url=https://studylib.net/doc/8742623/programming-the-eniac-before-its-rewiring. |site=studylib.net |consulté le=2022-08-22}}</ref> En particulier, chaque accumulateur est doté de son propre [[additionneur]] ainsi que d'une mémoire électronique, onéreuse mais beaucoup plus rapide que les [[Ligne à retard (électronique)|lignes à retard]] fréquemment utilisées à l'époque.


En juin 1944, [[:en:Herman Goldstine|Herman Goldstine]] informe [[John von Neumann|John Von Neumann]] de l’existence de l’ENIAC au détour d’une conversation. <ref>{{Lien web |titre=Vonneumann's first computer program |url=https://www.amphilsoc.org/exhibits/treasures/vonneuma.htm |site=www.amphilsoc.org |consulté le=2022-08-22}}</ref> Von Neumann, alors à pied d’œuvre au sein du [[projet Manhattan]], n’est que trop conscient des besoins d’un calculateur électronique.
En juin 1944, [[:en:Herman Goldstine|Herman Goldstine]] informe [[John von Neumann|John Von Neumann]] de l’existence de l’ENIAC au détour d’une conversation.<ref>{{Lien web |titre=Vonneumann's first computer program |url=https://www.amphilsoc.org/exhibits/treasures/vonneuma.htm |site=www.amphilsoc.org |consulté le=2022-08-22}}</ref> Von Neumann, alors à pied d’œuvre au sein du [[projet Manhattan]], n’est que trop conscient des besoins d’un calculateur électronique.


Von Neumann rejoint l’équipe de l’ENIAC la même année, alors que la construction du calculateur est déjà bien entamée.<ref>{{Lien web |titre=ENIAC: The Army-Sponsored Revolution |url=https://ftp.arl.army.mil/~mike/comphist/96summary/ |site=ftp.arl.army.mil |consulté le=2022-08-22}}</ref>
Von Neumann rejoint l’équipe de l’ENIAC la même année, alors que la construction du calculateur est déjà bien entamée.<ref>{{Lien web |titre=ENIAC: The Army-Sponsored Revolution |url=https://ftp.arl.army.mil/~mike/comphist/96summary/ |site=ftp.arl.army.mil |consulté le=2022-08-22}}</ref>
Ligne 95 : Ligne 95 :
Le 10 mai 1948, l’ENIAC exécute avec succès son premier programme sous forme d'instructions : une [[Méthode de Monte-Carlo|simulation Monté Carlo]] destinée à la fission nucléaire. Le 21 juin 1948, le [[Small-Scale Experimental Machine|Manchester SSEM]] exécutera à son tour son premier programme. On notera toutefois que contrairement à l’ENIAC, le SSEM était un prototype et le programme, un simple test.
Le 10 mai 1948, l’ENIAC exécute avec succès son premier programme sous forme d'instructions : une [[Méthode de Monte-Carlo|simulation Monté Carlo]] destinée à la fission nucléaire. Le 21 juin 1948, le [[Small-Scale Experimental Machine|Manchester SSEM]] exécutera à son tour son premier programme. On notera toutefois que contrairement à l’ENIAC, le SSEM était un prototype et le programme, un simple test.


Un diagramme de la simulation Monté Carlo est aujourd'hui conservé et disponible en ligne comme témoin du premier programme informatique connu.<ref>{{Lien web |langue=en-US |titre=ENIAC Monte Carlo Poster {{!}} ENIAC In Action |url=https://eniacinaction.com/the-book/eniac-monte-carlo-poster/ |consulté le=2022-08-22}}</ref>
Un diagramme de la simulation Monté Carlo est aujourd'hui conservé et disponible en ligne comme témoin du premier programme informatique connu<ref>{{Lien web |langue=en-US |titre=ENIAC Monte Carlo Poster {{!}} ENIAC In Action |url=https://eniacinaction.com/the-book/eniac-monte-carlo-poster/ |consulté le=2022-08-22}}</ref>, accompagné de son code source.<ref>{{Article|langue=en|auteur1=Nicholas Metropolis|titre=Monte Carlo Second Run Code|périodique=Library of Congress Manuscripts Division box 12, folder 5|date=1948|lire en ligne=https://eniacinaction.com/docs/MonteCarloCode.pdf|format=pdf}}</ref>


L’ENIAC fonctionnera les sept années suivantes de sa carrière comme ordinateur à programme enregistré, où il servira tant à des calculs de fission nucléaire que de prévisions météorologiques. <ref>{{Article|langue=en|auteur1=Peter Lynch|titre=The ENIAC forecasts: A re-creation|périodique=Bulletin of the American Meteorological Society|date=Janvier 2008|lire en ligne=https://www.researchgate.net/publication/249616114_The_ENIAC_forecasts_A_re-creation}}</ref>
L’ENIAC fonctionnera les sept années suivantes de sa carrière comme ordinateur à programme enregistré, où il servira tant à des calculs de fission nucléaire que de prévisions météorologiques.<ref>{{Article|langue=en|auteur1=Peter Lynch|titre=The ENIAC forecasts: A re-creation|périodique=Bulletin of the American Meteorological Society|date=Janvier 2008|lire en ligne=https://www.researchgate.net/publication/249616114_The_ENIAC_forecasts_A_re-creation}}</ref>
[[Fichier:ARL ENIAC 01.png|vignette|L'ENIAC dans sa configuration finale. L'armoire blanche sur la droite contient la mémoire vive à tores magnétique, et le câblage des unités est permanent.]]
[[Fichier:ARL ENIAC 01.png|vignette|L'ENIAC dans sa configuration finale. L'armoire blanche sur la droite contient la mémoire vive à tores magnétique, et le câblage des unités est permanent.]]
L’ENIAC post-1948 ne possède initialement pas une architecture de Von Neumann mais de [[Architecture de type Harvard|Harvard]], car les instructions des programmes et les données ne partagent pas un espace mémoire commun. De plus, la mémoire des programmes n’est modifiable que par intervention humaine, agissant donc comme une [[mémoire morte]], ce qui empêche théoriquement l’exécution de [[code automodifiable]]. L’EDVAC, de conception minimaliste et dont l'ébauche servit de modèle à l'ENIAC recâblé, ne possédait pas d’instruction de branchement conditionnel : chaque programme devait modifier de lui-même l’adresse des branchements au fil de son exécution. Cette limitation initiale de l’ENIAC contraindra Von Neumann à revoir sa copie et implémenter les branchements conditionnels dans son jeu d'instruction, qui seront repris ensuite sur l’[[Machine IAS|IAS]].
Avant 1952, la qualification de l'ENIAC post-1948 en architecture de Von Neumann a pu être sujette à caution, car les instructions des programmes et les données ne partagent pas un espace mémoire entièrement modifiable. [[Nicholas Metropolis]], auteur de la simulation Monté Carlo, parlait ainsi de l'ENIAC comme "premier ordinateur à programme enregistré en lecture seule" ('the first computer to operate with a read-only stored program")<ref>{{Chapitre|langue=en|prénom1=B. Jack|nom1=Copeland|prénom2=Giovanni|nom2=Sommaruga|titre chapitre=The Stored-Program Universal Computer: Did Zuse Anticipate Turing and von Neumann?|titre ouvrage=Turing’s Revolution: The Impact of His Ideas about Computability|éditeur=Springer International Publishing|date=2015|isbn=978-3-319-22156-4|doi=10.1007/978-3-319-22156-4_3|lire en ligne=https://doi.org/10.1007/978-3-319-22156-4_3|consulté le=2022-08-25|passage=43–101}}</ref>, par opposition aux ordinateurs suivants permettant d'exécuter du code automodifiable. En effet, dans l'ENIAC, la mémoire des programmes n’est modifiable que par intervention humaine, agissant donc comme une [[mémoire morte]], ce qui empêche théoriquement l’exécution de [[code automodifiable]]. L’EDVAC, de conception minimaliste et dont l'ébauche servit de modèle à l'ENIAC recâblé, ne possédait pas d’instruction de branchement conditionnel : chaque programme devait modifier de lui-même l’adresse des branchements au fil de son exécution. Cette impossibilité apparente de l’ENIAC de faire fonctionner du code automodifiable contraindra Von Neumann à revoir sa copie et implémenter les branchements conditionnels dans son jeu d'instruction, qui seront repris ensuite sur l’[[Machine IAS|IAS]].


Néanmoins, il a depuis été démontré, et vérifié par émulation, que l'ENIAC dans sa configuration de 1948 supportait déjà l'adressage indirect et donc la possibilité d'utiliser des sous-routines pour enregistrer et récupérer des données depuis des adresses mémoire modifiables, permettant de fait le code automodifiable.<ref name=":0" /> Cette capacité était semblerait-il inconnue des concepteurs de l'époque ; Arthur Burks en particulier pensait l'ENIAC de 1948 d'une capacité technique inférieure à celle de l'EDVAC (une machine encore théorique), ce qui s'avérait faux.
Néanmoins, il a depuis été démontré, et vérifié par émulation, que l'ENIAC dans sa configuration de 1948 supportait déjà l'adressage indirect et donc la possibilité d'utiliser des sous-routines pour enregistrer et récupérer des données depuis des adresses mémoire modifiables, permettant de fait le code automodifiable.<ref name=":0" /> Cette capacité était semblerait-il inconnue des concepteurs de l'époque ; Arthur Burks en particulier pensait l'ENIAC de 1948 d'une capacité technique inférieure à celle de l'EDVAC (une machine encore théorique), ce qui s'avérait faux.


En 1951 apparaît la [[mémoire à tores magnétiques]], et l’ENIAC est en 1952 le premier ordinateur à en être doté.<ref>{{Article|prénom1=Isaac L.|nom1=Auerbach|titre=A static magnetic memory system for the ENIAC|périodique=Proceedings of the 1952 ACM national meeting (Pittsburgh)|série=ACM '52|éditeur=Association for Computing Machinery|date=1952-05-02|isbn=978-1-4503-7362-3|doi=10.1145/609784.609813|lire en ligne=https://doi.org/10.1145/609784.609813|consulté le=2022-08-22|pages=213–222}}</ref>{{,}}<ref>{{Lien web |titre=Computer Memory: Past and Future |url=https://www.cs.umd.edu/~meesh/cmsc411/website/projects/ramguide/pastandfuture/pastandfuture.html |site=www.cs.umd.edu |consulté le=2022-08-24}}</ref> Cette mémoire vive de 100 mots [[Décimal codé binaire|BCD]] où sont stockées tant les instructions que les données du programme classe alors définitivement l'ENIAC comme ordinateur à architecture Von Neumann.
En 1951 apparaît la [[mémoire à tores magnétiques]], et l’ENIAC est en 1952 le premier ordinateur à en être doté.<ref>{{Article|prénom1=Isaac L.|nom1=Auerbach|titre=A static magnetic memory system for the ENIAC|périodique=Proceedings of the 1952 ACM national meeting (Pittsburgh)|série=ACM '52|éditeur=Association for Computing Machinery|date=1952-05-02|isbn=978-1-4503-7362-3|doi=10.1145/609784.609813|lire en ligne=https://doi.org/10.1145/609784.609813|consulté le=2022-08-22|pages=213–222}}</ref>{{,}}<ref>{{Lien web |titre=Computer Memory: Past and Future |url=https://www.cs.umd.edu/~meesh/cmsc411/website/projects/ramguide/pastandfuture/pastandfuture.html |site=www.cs.umd.edu |consulté le=2022-08-24}}</ref> Cette mémoire vive de 100 mots [[Décimal codé binaire|BCD]] où peuvent être stockées de façon modifiable tant les instructions que les données du programme classe alors définitivement l'ENIAC comme ordinateur à architecture Von Neumann.


Avec cette ultime évolution et pour les trois années restantes de sa carrière, rien ne séparera conceptuellement l’ENIAC de l'EDVAC, et donc d'un ordinateur contemporain.
Avec cette ultime évolution et pour les trois années restantes de sa carrière, rien ne séparera conceptuellement l’ENIAC de l'EDVAC, et donc d'un ordinateur contemporain.
Ligne 182 : Ligne 182 :
|511 mots de 17 bits
|511 mots de 17 bits
(8704 bits)
(8704 bits)
|-
|Taille maximale d'un programme
|8192 instructions
|N/A
|1460 instructions
(en présumant 2.6 chiffres décimaux en moyenne par instruction)
|32 instructions
|512 instructions, dont une partie utilisée par la routine d'amorçage ("initial orders")
|-
|-
|Chargement des programmes
|Chargement des programmes
Ligne 189 : Ligne 197 :
|Par interrupteurs à bascule
|Par interrupteurs à bascule
|Par ruban perforé
|Par ruban perforé
|-
|Autre possibilité de chargement
|N/A
|N/A
|Par cartes perforées
|N/A
|N/A
|-
|-
|Programme traditionnellement exécutés depuis
|Programme traditionnellement exécutés depuis
Ligne 197 : Ligne 212 :
|Tubes de Williams
|Tubes de Williams
|Lignes à délai au mercure
|Lignes à délai au mercure
|-
|Autre possibilité de chargement
|N/A
|N/A
|Par cartes perforées
|N/A
|N/A
|-
|-
|Entrées/sorties
|Entrées/sorties

Version du 25 août 2022 à 09:58

ENIAC
L'ENIAC en 1947
Fabricant
Moore School of Electrical Engineering
Date de sortie
Date de retrait
Fonctions
Type
Calculateur électronique programmable, puis ordinateur à programme enregistré
Génération
Première génération
Caractéristiques
Alimentation
150 kW
Processeur
Circuits logiques à tubes électroniques
Mémoire
Pré-1948 : 20 accumulateurs de 10 chiffres décimaux. Post-1948 : registres et mémoire de 150 chiffres décimaux. 1952 : ajout de mémoire à tores magnétiques de 100 mots BCD
Mesures
Dimensions
170 m2
Masse
27 tonnes

L'ENIAC (acronyme de l'expression anglaise Electronic Numerical Integrator And Computer) est en 1945 le premier ordinateur entièrement électronique pouvant être Turing-complet. Il peut être reprogrammé pour résoudre, en principe, tous les problèmes calculatoires.

Il est précédé en 1941 par le Z3 allemand, une machine programmable mais encore électromécanique (utilisation de relais), et par la série de calculateurs britanniques Colossus. L'ENIAC, comme les Colossus et les ordinateurs de première génération, utilise des tubes à vide.

Histoire

Le principe de l'ENIAC vient d'une idée de John William Mauchly, professeur de physique. Participant à une conférence à l'Ursinus College, il voit des analystes produire des tables de tir, il se rend compte que ces calculs pourraient être réalisés électroniquement. J. Presper Eckert résout les problèmes d'ingénierie, le principal étant la durée de vie des tubes électroniques. C'est l'armée américaine qui va financer et construire le projet pour les besoins du laboratoire de recherche en balistique. L'ordinateur est financé le sous le nom Project PX et construit à la Moore School of Electrical Engineering (en) de l'université de Pennsylvanie à partir de mai 1944. Il est opérationnel à fin 1945, est dévoilé au public en février 1946, puis est coupé le pour être rénové et sa mémoire augmentée.

Le , il est dévoilé au public à l'université de Pennsylvanie à Philadelphie puis est transféré à Aberdeen Proving Ground, un laboratoire de l'US Army au Maryland, en 1947 où il est remis en marche le 29 juillet et commence les calculs des tables de tirs. Il continue à fonctionner jusqu'à son arrêt en 1955. Aujourd'hui, une partie de la machine est conservée à l'université de Pennsylvanie où un petit musée lui est consacré.

L'ENIAC reçut l'attention des journaux notamment à cause de sa taille imposante, mais d'une certaine manière, il n'est pas la fine fleur de son ère. Contrairement aux ordinateurs électromécaniques Z3 de Konrad Zuse (1941) ou au MARK I de Howard Aiken (1944), l'ENIAC doit initialement être recâblé pour exécuter un nouveau programme ; sa transformation en ordinateur à programme enregistré n'arrivera qu'en 1948. De plus, il utilise des registres décimaux et non binaires[1],[2].

Caractéristiques

Détail d'un panneau de contrôle de l'ENIAC.
Un technicien en train de changer un tube de l'ENIAC.

L'ENIAC utilise un compteur à anneaux à 10 positions pour enregistrer les chiffres. L'arithmétique est réalisée en comptant les pulsations avec les anneaux et en générant des pulsations lorsque le compteur fait un tour. L'idée revient en fait à émuler par l'électronique les systèmes de roue à chiffres de machines mécaniques.

Sa capacité est de 20 nombres à 10 chiffres signés permettant chacun de réaliser 5 000 additions simples chaque seconde (pour un total de 100 000 additions par seconde). Il ne peut en revanche gérer en moyenne que 357 multiplications ou 38 divisions par seconde ou trois extractions de racine par seconde. Les entrées-sorties se faisaient au moyen de cartes perforées[3].

Physiquement l'ENIAC est une grosse machine : il contient 17 468 tubes à vide, 7 200 diodes à cristal, 1 500 relais, 70 000 résistances, 10 000 condensateurs et environ 5 millions de soudures faites à la main[4]. Son poids est de 30 t pour des dimensions de 2,4 × 0,9 × 30,5 m occupant une surface de 167 m2 (1 800 pieds carrés)[5]. Sa consommation est de 150 kW.

Il utilise des tubes à vide à 8 broches, les accumulateurs décimaux sont réalisés avec des flip-flops 6SN7, alors que les fonctions logiques utilisent des 6L7, 6SJ7, 6SA7 et 6AC7. De nombreux 6L6 et 6V6 servent de relais pour acheminer les pulsations entre les différents racks d'éléments.

Certains experts en électronique prédirent que les tubes tomberaient en panne si fréquemment que la machine en serait inutilisable. La prédiction n'était que partiellement correcte, de nombreux tubes brûlaient chaque jour laissant l'ENIAC inopérant la moitié du temps. Des lampes plus fiables ne furent disponibles qu'à partir de 1948, Eckert et Mauchly durent donc utiliser des tubes de qualité standard. La plupart des problèmes liés aux tubes se produit au démarrage ou à l'arrêt de la machine car ils sont soumis à un important stress thermique. Le simple fait de ne jamais couper la machine, permet aux ingénieurs de réduire le nombre de pannes à un ou deux tubes par jour. La plus longue période de calcul sans panne est atteinte en 1954 avec 116 heures, ce qui est une prouesse compte tenu de la technologie de l'époque.

Une cause fréquente de panne était la combustion d'un insecte sur un tube chaud, provoquant un stress thermique local et la rupture de l'ampoule de verre. Le terme anglais désignant un insecte est bug. Ce terme, par extension, serait devenu synonyme de dysfonctionnement informatique[6],[7].

L'ENIAC fonctionne jusqu'au [8]. L'architecture, décidée et gelée dès 1943, ne permettait pas de résoudre certains problèmes, notamment l'incapacité d'enregistrer un programme. Toutefois les idées produites par ce travail et l'impact sur des personnes telles que John von Neumann ont profondément influé le développement des ordinateurs suivants (par exemple : EDVAC, EDSAC et SEAC (en)). Certaines améliorations ont eu lieu en 1948, notamment un système primitif permettant d'enregistrer un programme dans une mémoire en lecture seule, une idée proposée par von Neumann et rendant cet ordinateur Turing-complet[9]. Cette dernière modification, ralentissait la vitesse de calcul d'un facteur six, mais la durée de reprogrammation passait de plusieurs jours à quelques heures. Les câbles restaient en position fixe, et l'ENIAC a fonctionné dans cette configuration jusqu'à la fin de son exploitation en 1955[9].

Eckert et Mauchly fondent une société, Eckert-Mauchly Computer Corporation (en), et y produisent leur premier ordinateur en 1949 : le BINAC. La firme est rachetée l'année suivante par Remington Rand et renommée Univac.

Conversion en ordinateur à architecture Von Neumann

Dans sa version de 1943, l’ENIAC est un calculateur électronique complexe, rapide, et parallèle : un train de pulses circule de façon décentralisée dans des unités largement autonomes.[10] En particulier, chaque accumulateur est doté de son propre additionneur ainsi que d'une mémoire électronique, onéreuse mais beaucoup plus rapide que les lignes à retard fréquemment utilisées à l'époque.

En juin 1944, Herman Goldstine informe John Von Neumann de l’existence de l’ENIAC au détour d’une conversation.[11] Von Neumann, alors à pied d’œuvre au sein du projet Manhattan, n’est que trop conscient des besoins d’un calculateur électronique.

Von Neumann rejoint l’équipe de l’ENIAC la même année, alors que la construction du calculateur est déjà bien entamée.[12]

Le 30 juin 1945, Von Neumman publie le « First Draft of a Report on the EDVAC », définissant pour la première fois les caractéristiques de l’ordinateur moderne et de l’architecture éponyme. Si l’ENIAC n’y ait pas mentionné pour des raisons de confidentialité militaire, la conception de l’EDVAC en prend résolument le contrepied : une implémentation logique minimaliste avec une UAL rudimentaire (en comparaison, l’ENIAC possède même un circuit de résolution de racine carrée), un seul accumulateur plutôt que vingt, une conception centralisée plutôt que parallélisée, ou encore la possibilité d’exécuter un programme sous forme d’instructions plutôt que par câblage, et à cet effet, l’installation d’une large quantité de mémoire destinée tant aux instructions qu’aux données.

En 1947, il devient clair que l’EDVAC est encore loin de voir le jour – il ne sera terminé qu’en 1951 – et les besoins en calcul sont toujours aussi pressant. Au printemps de la même année, Von Neumann réalise que les unités de l’ENIAC constituent un « kit » permettant de concevoir un ordinateur au sens contemporain du terme, c’est-à-dire à programme enregistré (exécutant des programmes sous forme d'instructions et non en câblant ensemble des pupitres).

L'ENIAC devenu ordinateur prendrait la forme d’une machine virtuelle à architecture Von Neumann câblée de façon permanente au dessus du calculateur existant. Le recâblage définitif formerait l'interpréteur microcodé de cette machine virtuelle.[13],[14]

Avec cette conversion, certains accumulateurs seraient reconvertis pour former l’UAL. D’autres serviraient de registres pour le compteur de programme, les registres d’adresse et d’instruction, ou encore l’accumulateur principal. D’autres accumulateurs seraient sérialisés et serviraient de mémoire principale. Enfin, les autres unités seraient recâblées en séquenceur permettant le « fetch » et le décodage des instructions. Au passage, l’ENIAC devenu ordinateur à programme enregistré perdrait son parallélisme et donc une partie de sa vitesse, ainsi qu'une faible quantité de mémoire désormais allouée aux registres internes du séquenceur.

Le projet est lancé en avril 1947. Von Neumann conçoit un premier jeu de 51 instructions remarquablement similaire au jeu d’instructions de l’EDVAC, et la conversion débute.[15]

La conversion de l’ENIAC en ordinateur à programme enregistré va connaître plusieurs révisions, voyant le jeu d’instructions, alors appelées « ordres », passer de 51 à 60, puis 79, et enfin 83 instructions. La machine étant recâblable, il est possible de librement mettre à jour le jeu d'instructions à la manière des microcodes contemporains. Certaines d'entre elles tirent partie des circuits arithmétiques sophistiqués de l'ENIAC et permettent le calcul de division, racines carrées ou encore de valeur absolue,[16] ce qui permet un code plus dense et économe en mémoire vive.

La conversion se termine le 15 mars 1948, suivie d’une période de mise au point. Les problèmes de fiabilité initialement rencontrés sont résolus en réduisant la vitesse d’horloge initiale de l’ENIAC, très élevée pour l’époque, de 100 kHz à 60 kHz.[17]

Le 10 mai 1948, l’ENIAC exécute avec succès son premier programme sous forme d'instructions : une simulation Monté Carlo destinée à la fission nucléaire. Le 21 juin 1948, le Manchester SSEM exécutera à son tour son premier programme. On notera toutefois que contrairement à l’ENIAC, le SSEM était un prototype et le programme, un simple test.

Un diagramme de la simulation Monté Carlo est aujourd'hui conservé et disponible en ligne comme témoin du premier programme informatique connu[18], accompagné de son code source.[19]

L’ENIAC fonctionnera les sept années suivantes de sa carrière comme ordinateur à programme enregistré, où il servira tant à des calculs de fission nucléaire que de prévisions météorologiques.[20]

L'ENIAC dans sa configuration finale. L'armoire blanche sur la droite contient la mémoire vive à tores magnétique, et le câblage des unités est permanent.

Avant 1952, la qualification de l'ENIAC post-1948 en architecture de Von Neumann a pu être sujette à caution, car les instructions des programmes et les données ne partagent pas un espace mémoire entièrement modifiable. Nicholas Metropolis, auteur de la simulation Monté Carlo, parlait ainsi de l'ENIAC comme "premier ordinateur à programme enregistré en lecture seule" ('the first computer to operate with a read-only stored program")[21], par opposition aux ordinateurs suivants permettant d'exécuter du code automodifiable. En effet, dans l'ENIAC, la mémoire des programmes n’est modifiable que par intervention humaine, agissant donc comme une mémoire morte, ce qui empêche théoriquement l’exécution de code automodifiable. L’EDVAC, de conception minimaliste et dont l'ébauche servit de modèle à l'ENIAC recâblé, ne possédait pas d’instruction de branchement conditionnel : chaque programme devait modifier de lui-même l’adresse des branchements au fil de son exécution. Cette impossibilité apparente de l’ENIAC de faire fonctionner du code automodifiable contraindra Von Neumann à revoir sa copie et implémenter les branchements conditionnels dans son jeu d'instruction, qui seront repris ensuite sur l’IAS.

Néanmoins, il a depuis été démontré, et vérifié par émulation, que l'ENIAC dans sa configuration de 1948 supportait déjà l'adressage indirect et donc la possibilité d'utiliser des sous-routines pour enregistrer et récupérer des données depuis des adresses mémoire modifiables, permettant de fait le code automodifiable.[14] Cette capacité était semblerait-il inconnue des concepteurs de l'époque ; Arthur Burks en particulier pensait l'ENIAC de 1948 d'une capacité technique inférieure à celle de l'EDVAC (une machine encore théorique), ce qui s'avérait faux.

En 1951 apparaît la mémoire à tores magnétiques, et l’ENIAC est en 1952 le premier ordinateur à en être doté.[22],[23] Cette mémoire vive de 100 mots BCD où peuvent être stockées de façon modifiable tant les instructions que les données du programme classe alors définitivement l'ENIAC comme ordinateur à architecture Von Neumann.

Avec cette ultime évolution et pour les trois années restantes de sa carrière, rien ne séparera conceptuellement l’ENIAC de l'EDVAC, et donc d'un ordinateur contemporain.

Comparaison avec les autres ordinateurs

Arbre de parenté d'ordinateurs de première génération. On y distingue notamment l'ENIAC, l'EDVAC, la machine IAS et la famille IBM 700/7000. US Army, 1961

En 1948, l’ENIAC se distingue de plusieurs façons des ordinateurs existants :

  • Le Colossus est une machine binaire, électronique, programmable par câblage, mais ne possède pas une architecture à programme enregistré, même en lecture seule, contrairement à l’ENIAC de Von Neumann.
  • Le Zuse 3 et l’IBM SSEC sont des machines à relais, travaillant à une vitesse électromécanique et non électronique.
  • Les Manchester SSEM et l’EDSAC sont des machines électroniques, binaires, à programme enregistré et architecture Von Neumann, c’est-à-dire des ordinateurs au sens contemporain du terme.

Comparaison avec le Manchester SSEM

Le SSEM est un prototype du Manchester Mark 1 sorti en 1948, et également un test « grandeur nature » des tubes de Williams. Il est doté d’une mémoire de 32 mots de 32 bits  (1024 bits, soit 128 octets), et d’un jeu de sept instructions.

Si la conception du SSEM est résolument plus moderne que celle de l'ENIAC, l'architecture Von Neumann implique que le code et les données résident dans le même espace mémoire, et les 128 octets de la machine laissent peu de place à cet effet. Ce problème est renforcé par l’extrême minimalisme du jeu d’instruction, nécessitant l’emploi d’un grand quantité d’instructions, et donc de mémoire, pour une opération donnée. L'EDVAC prévoyait à cet effet une large quantité de mémoire vive (l'équivalent de 32 kilooctets en comparaison des 4 kilooctets de l'ENIAC). Le SSEM est donc relativement éloigné de la vision de l’EDVAC.

De même, le « First Draft of a Report on the EDVAC » est explicite sur la nécessité de pouvoir enregistrer des résultats sur un support externe, puis de pouvoir les réintégrer dans la machine. Cela était possible avec les cartes perforées de l’ENIAC, qui pouvait d’ailleurs exécuter directement une programme depuis des cartes perforée, mais pas pour le SSEM.

Ces défauts de jeunesse seront corrigés avec le Manchester Mark 1 en avril 1949.

Comparaison avec l’EDSAC

L’EDSAC est généralement reconnu comme étant le premier ordinateur à programme enregistré conçu à cet effet, et pleinement utilisable. L’EDSAC est devenu opérationnel en mai 1949, et, comme l’ENIAC, rapidement utilisé à des fins de calcul scientifique.

Le jeu d’instructions de l’ENIAC est relativement comparable à celui de l’EDSAC en capacité, et les deux sont très supérieurs aux sept instructions du Manchester SSEM. Les 83 instructions de l’ENIAC sont codées sur deux chiffres décimaux (00 à 99), contre une allocation statique d’un mot de 17 bits pour l’EDSAC. Le format d’instruction compact de l’ENIAC possède de plus des instructions relativement avancées d’arithmétique et d’entrées/sorties (multiplication et division, extraction de racine carrée, lecture et écriture des données d'une carte perforée…), qui nécessitent un plus grand nombre d’instructions sur l’EDSAC pour la même opération. A taille de mémoire égale, ceci offre le potentiel d’héberger des programmes plus complexes. Désavantagé par la moindre compacité du code, il n’est pas acquis que l’EDSAC, dont la quantité de mémoire était déjà moindre que l'ENIAC, aurait pu faire tenir en mémoire les 800 instructions de la simulation Monté Carlo de l’ENIAC, et encore moins conserver de la place pour les données.[24]

La mémoire de l’EDSAC est entièrement modifiable, tandis que la mémoire des programmes de l’ENIAC est en lecture seule. Cela reste toutefois à nuancer car sur l’ENIAC, l’adresse des branchements du code est enregistrable sur une mémoire modifiable et adressable logiciellement - les deux sont donc Turing-complet.

L’EDSAC possède une réelle avancée par rapport à l’ENIAC : la présence d’une routine d'amorçage câblée. Sur l’ENIAC, le chargement d’un programme nécessite de saisir l'ensemble de ses instructions sur un pupitre de contrôle, tandis que l’EDSAC peut les charger automatiquement. Ceci permet également la ré-allocation automatique des sous-routines en mémoire, ce dont l’ENIAC était incapable, même en chargeant le programme depuis des cartes perforées.

L’EDSAC était enfin une machine beaucoup plus simple de conception et donc plus fiable.

Comparaison synthétique

Le tableau suivant[25] permet de mettre en perspective les capacités de l'ENIAC dans ses configurations de 1945 et 1948 par rapport à l'EDVAC, l'EDSAC et le Manchester SSEM :

EDVAC ENIAC

(1945)

ENIAC

(1948)

Manchester SSEM EDSAC
Mise en service Concept : 1945

Implémentation : 1951

Décembre 1945

Janvier 1946

12 avril 1948 21 juin 1948 6 mai 1949
Vitesse d'addition N/A 200 µs,

parallélisable

1200 µs 2880 µs 1500 µs
Mémoire adressable 8192 mots de 32 bits

(262 000 bits)

4000 chiffres décimaux

(équivalent 12 800 bits). Données seulement. 200 chiffres en écriture (équivalent 640 bits)

Idem configuration de 1945 (équivalent 12 800 bits).

Mémoire partagée par les programmes et les données. Ajout d'une mémoire à tores magnétiques de 100 mots BCD en 1952

32 mots de 32 bits

(1024 bits)

511 mots de 17 bits

(8704 bits)

Taille maximale d'un programme 8192 instructions N/A 1460 instructions

(en présumant 2.6 chiffres décimaux en moyenne par instruction)

32 instructions 512 instructions, dont une partie utilisée par la routine d'amorçage ("initial orders")
Chargement des programmes Non spécifié Par câblage depuis diagramme Par boutons rotatifs Par interrupteurs à bascule Par ruban perforé
Autre possibilité de chargement N/A N/A Par cartes perforées N/A N/A
Programme traditionnellement exécutés depuis Lignes à délai au mercure Câblage ad-hoc Pupitre de commande

(table de fonctions)

Tubes de Williams Lignes à délai au mercure
Entrées/sorties Conceptuel

seulement

Cartes perforées : 133 caractères / seconde Idem configuration de 1945 Entrées par interrupteurs, sortie par visualisation sur tube de Williams
  • Ruban perforé : 6.23 caractères / seconde
Jeu d'instructions 8 instructions N/A

60 instructions, ultérieurement porté à 83 instructions

7 instructions 14 instructions
Taille de mot d'instruction 32 bits N/A 2 à 8 chiffres décimaux

(équivalent 7 à 25 bits)

16 bits 17 bits
Branchement conditionnel Par code automodifiable Câblage ad-hoc

("null program")

Instruction dédiée Instruction dédiée Instruction dédiée
Adressage indirect Par code automodifiable N/A Code en lecture seule (avant mémoire magnétique), mais adresses des branchements possibles en mémoire modifiable programmatiquement Par instruction de transfert établissant l'adresse du saut ou l'incrémentation du compteur de programme Par code automodifiable

Comparaison de vitesses de calcul

Ce tableau comparatif des vitesses de calcul[26] permet de se rendre compte de l'avancée que représente l'ENIAC par rapport aux moyens de calculs disponibles jusqu'alors.

Moyens employés Vitesses de multiplication
de nombres de 10 chiffres
Temps de calcul d'une trajectoire
d'une table de tir
Homme à la main, ou machine de Babbage 5 min 2,6 j
Homme avec calculateur de bureau 10 à 15 s 12 h
Harvard Mark I (électromécanique) 3 s 2 h
Model 5 (électromécanique) 2 s 40 min
Analyseur différentiel (analogique) 1 s 20 min
Harvard Mark II (électromécanique) 0,4 s 15 min
ENIAC (électronique) 0,001 s 3 s

En comparaison, une ALU des années 2000 met respectivement 30 nanosecondes et 36 microsecondes pour ces opérations[réf. nécessaire].

Comparaison en FLOPS

Dans un document[27], l'Institut de recherche en informatique et systèmes aléatoires (IRISA) estime à 50 kFLOPS (50 000 opérations en virgule flottante par seconde) la puissance de l'ENIAC, bien que cette information ne puisse être déterminée par définition, puisque la machine utilisait un système décimal sans virgule, elle est cependant utile dans le processus de comparaison avec les machines modernes.

Reconnaissance

Programmeuses

ENIAC-on-a-chip (ENIAC sur une puce), Université de Pennsylvanie, 1995, au Musée de l'Histoire de l'ordinateur

Entre 1944 et 1955, six femmes, Kathleen Antonelli, Jean Bartik, Betty Holberton, Marlyn Meltzer, Frances Spence et Ruth Teitelbaum sont les premières personnes à programmer l'ENIAC, pour un calcul balistique. Elles sont toutes mathématiciennes. Betty Holberton est en plus journaliste, ce qui lui permettait de voyager. Kathleen Antonelli et Frances Spence sont recrutées en 1942 par l’armée américaine pour calculer manuellement les trajectoires de tir. Marlyn Meltzer et Ruth Teitelbaum sont également calculatrices. Elles travaillent sur l'ENIAC à partir de 1944. Il s'agit d'identifier les différentes étapes du calcul et ensuite de câbler physiquement la machine. Ruth Teitelbaum, Frances Spence et Kathleen Antonelli poursuivirent leur travail sur l’Eniac lorsque celui-ci est transféré à Aberdeen en 1947[28].

Longtemps oubliées de l'histoire, le documentaire The Computers réalisé en 2013 par Kathy Kleiman leur rend hommage[29].

ENIAC-on-a-chip

En 1996, en l'honneur du cinquantième anniversaire de l'ENIAC, l'Université de Pennsylvanie, où l'ENIAC fût construit, sponsorisa un projet nommé "ENIAC-on-a-chip", consistant en la création d'un microprocesseur de 7.44 mm x 5.29 mm implémentant les fonctionnalités de l'ENIAC.[30],[31],[32]

Bien que cadencé à une vitesse de 20 MHz (contre 60 kHz pour l'original) et considérablement plus rapide que l'ENIAC, il n'avait pourtant qu'une fraction de la vitesse des microprocesseurs de la fin des années 1990.

L'ENIAC a célébré son 70ème anniversaire le 15 février 2016.[33]

Galerie

Notes et références

  1. Architecture d'un ordinateur sur le site de l'université d'Angers.
  2. Structure interne des ordinateurs sur le site d'ift de l'Université Laval, Canada.
  3. « L'ENIAC », sur Aconit.INRIA.
  4. (en) ENIAC: A Pioneering Computer sur le site de Public Broadcasting Service.
  5. Lire en ligne.
  6. A priori, il s'agirait plutôt d'un insecte dans un relais Mark I que sur un tube de l'ENIAC. En outre, ce terme a été utilisé par Edison en 1878.
  7. Passeport pour les médias de demain.
  8. (en) Edwin D. Reilly, Concise Encyclopedia of Computer Science, John Wiley & Sons, , p. 306.
  9. a et b From Calculus to Computer, édité par Amy Shell-Gellasch et Dick Jardine, édition MAA, p. 145.
  10. (en) « Programming the ENIAC before its rewiring. », sur studylib.net (consulté le )
  11. « Vonneumann's first computer program », sur www.amphilsoc.org (consulté le )
  12. « ENIAC: The Army-Sponsored Revolution », sur ftp.arl.army.mil (consulté le )
  13. (en) Thomas Haigh, « Engineering “The Miracle of the ENIAC”: Implementing the Modern Code Paradigm », ENIAC in Action,‎ (lire en ligne)
  14. a et b (en) Mark Priestley & Thomas Haigh, « How to Make ENIAC's Accumulators Addressable Using a Subroutine », ENIAC in Action,‎ (lire en ligne)
  15. « A Logical Coding System Applied to the ENIAC -- Section 3 », sur ftp.arl.army.mil (consulté le )
  16. (en) Aberdeen Proving Ground, Maryland, « Description and use of the Eniac Converter Code », Ballistic Research Laboratories Technical Note,‎ , p. 14 (lire en ligne [PDF])
  17. (en) Thomas Haigh, ENIAC in Action, The MIT Press, , 348 p. (ISBN 9780262033985), p. 164
  18. (en-US) « ENIAC Monte Carlo Poster | ENIAC In Action » (consulté le )
  19. (en) Nicholas Metropolis, « Monte Carlo Second Run Code », Library of Congress Manuscripts Division box 12, folder 5,‎ (lire en ligne [PDF])
  20. (en) Peter Lynch, « The ENIAC forecasts: A re-creation », Bulletin of the American Meteorological Society,‎ (lire en ligne)
  21. (en) B. Jack Copeland et Giovanni Sommaruga, « The Stored-Program Universal Computer: Did Zuse Anticipate Turing and von Neumann? », dans Turing’s Revolution: The Impact of His Ideas about Computability, Springer International Publishing, (ISBN 978-3-319-22156-4, DOI 10.1007/978-3-319-22156-4_3, lire en ligne), p. 43–101
  22. Isaac L. Auerbach, « A static magnetic memory system for the ENIAC », Proceedings of the 1952 ACM national meeting (Pittsburgh), Association for Computing Machinery, aCM '52,‎ , p. 213–222 (ISBN 978-1-4503-7362-3, DOI 10.1145/609784.609813, lire en ligne, consulté le )
  23. « Computer Memory: Past and Future », sur www.cs.umd.edu (consulté le )
  24. (en) Thomas Haigh, ENIAC in Action, The MIT Press, , 348 p. (ISBN 9780262033985), p. 252
  25. (en) Thomas Haigh, ENIAC in Action, The MIT Press, , 348 p. (ISBN 9780262033985), p. 248
  26. Michel Serres et Bernadette Bensaude-Vincent, Éléments d'histoire des sciences, Bordas, (ISBN 2-04-018467-8).
  27. « 1946 Le premier ordinateur » [PDF], sur irisa.fr.
  28. Béatrice Didier, Antoinette Fouque et Mireille Calle-Gruber, Le dictionnaire universel des créatrices, Paris, Des femmes-A. Fouque, , 4982 p. (ISBN 978-2-7210-0631-8, 2721006312 et 9782721006288, OCLC 864873770, lire en ligne).
  29. (en-US) « ENIAC Programmers Project », sur ENIAC Programmers Project (consulté le ).
  30. Jan Van Der Spiegel, « ENIAC-on-a-Chip », The University of Pennsylvania, vol. 12, no 4,‎ (lire en ligne [archive du ], consulté le )
  31. Jan Van Der Spiegel, « ENIAC-on-a-Chip », University of Pennsylvania, (consulté le )
  32. (en) « Looking Back At ENIAC: Commemorating A Half-Century Of Computers In The Reviewing System », sur The Scientist Magazine® (consulté le )
  33. (en) « 70 years ago, six Philly women became the world's first digital computer programmers », sur PhillyVoice, (consulté le )

Voir aussi

Sur les autres projets Wikimedia :

Articles connexes

Liens externes