Il y a 50 ans, dans la nuit du 20 au 21 juillet 1969, deux astronautes de la mission Apollo 11, Neil Armstrong et Buzz Aldrin, étaient les premiers hommes à poser le pied sur le sol lunaire. La NASA, remplissait ainsi l’objectif fixé en 1961 par le président John F. Kennedy de poser un équipage sain et sauf sur la Lune avant la fin des années 1960. Cette première concrétisait un rêve universel et symbolisait les exploits à la fois humains et technologiques qui permettent à l’humanité de repousser les frontières de la connaissance.

Les programmes spatiaux des années 1960 se sont développés au moment où l’informatique progressait à grands pas. Grâce à elle, les techniques de guidage et de navigation ont fait un bond considérable, ainsi que la programmation, la conduite et la transmission de tâches téléguidées puis automatisées. Et pour cause, sans l’aide des ordinateurs embarqués de navigation et de pilotage, le succès de la mission Apollo 11 aurait été impossible.rec

Au démarrage des missions Apollo, il était essentiel pour la NASA de disposer d’un ordinateur extrêmement puissant qui pourrait être intégrer aux vaisseaux spatiaux. En 1961, le MIT a été désigné pour concevoir et construire un ordinateur embarqué de navigation et de pilotage, et qui deviendra l’AGC : Apollo Guidance Computer, le premier ordinateur à utiliser des circuits intégrés.

Fait intéressant, le contrat établit par la NASA ne contenait aucune spécification quant à la manière de concevoir une telle machine pour la bonne et simple raison que, à ce stade, la NASA ne savait pas vraiment ce que devaient être les spécifications de l’ordinateur des programmes Apollo ! C’est en 1963 que le MIT définit de façon plus précise ce que devrait être l’AGC, à savoir d’une part, un ordinateur conçu pour contrôler, tester et exploiter un système de guidage ; et d’autre part, déterminer et appliquer des modifications de la vitesse d’un véhicule spatial afin d’optimiser ses performances dans le cadre d’une mission lunaire. Pour autant, les logiciels et les techniques de programmation nécessaires n’existaient pas et il a donc fallu les concevoir à partir de rien.

Apollo Guidance Computer

En réalité, le MIT a développé 2 AGC : l’un était situé dans le module de commande et constituait le centre du système de guidage, de navigation et de contrôle du vaisseau. Le second était situé dans le module lunaire et permettait notamment de contrôler l’alunissage et l’ascension retour jusqu’au module de commande ainsi que l’amarrage.

L’AGC reçoit ses principales informations du système inertiel ainsi que de deux radars, lorsque ceux-ci sont activés. Utilisant des programmes de navigation pour chacune des phases de la mission, il est ainsi capable de piloter en direction et en poussée les moteurs principaux ainsi que les moteurs d’orientation, afin que le vaisseau suive la trajectoire qui a été calculée. Les astronautes utilisent une console pour entrer les différentes instructions : lancement de programme de navigation, demande d’information, réinitialisation de la position, saisie des paramètres de vol à exécuter, etc.

Figure 1 : À gauche l’interface utilisateur de l’AGC. À droite le clavier et l’écran de l’AGC installé dans le module de commande d’Apollo (source : https://images.nasa.gov/).

L’AGC était structuré en deux parties contenant différents modules. Une première partie contenait notamment un module de mémoire volatile (actuelle mémoire RAM) et un module de mémoire non volatile (actuelle mémoire ROM). La seconde partie de l’AGC contenait 24 modules logiques, 5 modules d’interface et 2 alimentations.

La mémoire non volatile de l’AGC était une mémoire cordes à tores magnétiques. Ce type de mémoire fut la forme dominante de mémoire vive des ordinateurs durant une vingtaine d’année (de 1955 à 1975). En synthèse, cette mémoire était composée des petits tores (anneaux) de ferrite traversés par des fils conducteurs. Le sens du courant électrique passant à travers ces fils permettait de magnétiser les tores et d’y écrire et d’y lire des informations¹. Cette mémoire étant tissée à la main, l’écriture et l’assemblage d’un programme prenait plusieurs mois…

Figure 2 : Tores câblés constituants une mémoire à tores magnétiques dans les années 1960. À gauche, vue d’une mémoire à tores magnétiques : on visualise les tores et les fils de lecture/écriture qui les traversent (source : Wikipedia). À droite, le tissage du logiciel dans cette mémoire corde (source : documentaire Moon machines).

La mémoire volatile de l’AGC possédait une capacité de 4 kilooctets et la mémoire non volatile (sur laquelle était écrit les programmes de vols notamment) possédait une capacité d’environ 36 000 mots soit 72 kilooctets. Par comparaison, nos ordinateurs familiaux actuels possèdent une capacité de mémoire RAM près de 10 000 fois supérieure² et une capacité de mémoire ROM près de 1 milliard de fois plus grande³.

Des progrès remarquables

Nous sommes aujourd’hui entourés d’ordinateurs extrêmement puissants. Il est difficile pour la plupart des gens, qui ne sont pas ingénieurs ou développeurs informatiques, d’imaginer qu’il soit possible de faire quoi que ce soit avec des ressources aussi limitées que celles disponibles alors. Mais il ne faut pas oublier qu’à l’époque de la conception de l’AGC, cet appareil fût le premier ordinateur embarqué. Ce fût une avancée considérable dans la miniaturisation : l’AGC ne mesurant que 61x32x17 cm pour un poids de 32 kilos, à une époque où l’ordinateur était une machine occupant un espace de plusieurs mètres cubes (comparable à une grande pièce).

Par ailleurs, l’AGC fut le premier ordinateur à utiliser des circuits intégrés et fut également une grande avancée dans la programmation logicielle car ce fût la première fois qu’un logiciel était utilisé pour résoudre des problèmes en temps réel.

Les principes de conception développés pour l’AGC dans le cadre des missions Apollo sont ainsi devenus des fondamentaux du secteur du génie logiciel, et en particulier pour la conception de systèmes fiables reposant sur des logiciels asynchrones, la planification des priorités, les tests et l’intégration des aptitudes proprement humaines au sein d’une boucle d’exécution.

Ainsi, l’AGC incorporait un système d’exploitation unique en son genre. Celui-ci opérait une planification de tâches dite « planification préemptive à priorité fixe ». Grâce à ce type de planification, l’ordonnanceur de l’ordinateur veillait à ce que le processeur exécute à tout moment la tâche ayant la priorité la plus haute parmi toutes les tâches qui doivent être exécutées. En cas d’urgence, l’ordonnanceur de l’AGC allouait un plus grand temps d’exécution aux tâches ayant la plus haute priorité. Les opérations non essentielles étaient abandonnées afin de libérer les ressources. Ce type de fonctionnement devint la base des systèmes critiques pour tous les vols habités par la suite.

L’ordinateur a donc joué un rôle essentiel dans le cadre des missions Apollo, permettant le contrôle des moteurs et la gestion de nombreux sous-systèmes, ce qui lui a valu le surnom de « quatrième homme de l’équipage ». Sans l’ordinateur, les astronautes n’auraient pu poser le module lunaire sur la Lune, car lui seul pouvait à la fois intégrer les nombreuses tâches inhérentes aux différentes phases du vol et optimiser suffisamment la consommation de carburant pour se contenter des faibles marges de manœuvres disponibles.

Alarme 1202

Lors de la délicate phase de la descente vers le sol sélénite, l’AGC du module lunaire devait travailler communément avec le radar dit « d’atterrissage » et les astronautes afin d’opérer un alunissage réussi. Un autre radar, le radar de « rendez-vous » devait servir en cas d’annulation de l’alunissage et de retour immédiat vers le module de commande, resté en orbite lunaire.

Durant la phase de descente, l’équipage a été gêné par une alarme « 1202 ». Sur le moment, le centre de contrôle de Houston a déterminé que l’alarme correspondait à une saturation des capacités de l’ordinateur, ce qui aurait pu amener à l’annulation de la poursuite de la mission, voire même à une catastrophe. Cependant, de par la conception même de l’AGC, cet imprévu est resté sans conséquence. C’est pourquoi, après 30 longues secondes, le centre de contrôle de Houston a notifié aux deux astronautes que cette alarme pouvait être ignorée et que la mission pouvait se poursuivre (Figure 3).

L’enquête effectuée par la suite révélera que la surcharge mémoire de l’ordinateur était due à l’envoi continue de signaux en provenance du radar de rendez-vous vers l’ordinateur. En réalité, cette alarme était consécutive à deux erreurs : d’une part la procédure d’alunissage fournie aux astronautes indiquait à tort de laisser le radar de rendez-vous allumé, et d’autre part il existait un défaut de conception dans l’interface entre l’ordinateur et le radar de rendez-vous. Les simulations réalisées sur terre n’avaient pas permis de détecter ces erreurs, car lors des entrainements, l’ordinateur de rendez-vous n’était pas branché pour les alunissages simulés.

Néanmoins, et grâce à sa conception, l’AGC ne se bloqua ni ne se verrouilla malgré cette alarme. Celui-ci stoppa toutes les tâches à l’exception des tâches ayant la plus haute priorité, avant de se redémarrer lui-même. Ce mode de fonctionnement n’était pas une erreur, mais bel et bien une « protection par redémarrage ». L’AGC avait en effet été conçu de manière à ce que toutes les données sur lesquelles il travaille fussent stockées, ce qui signifie qu’il pouvait être éteint et rallumé ou redémarrer à tout moment et être capable de reprendre le travail là où il l’avait laissé. Ces caractéristiques propres ont sauvé la mission et permis à Armstrong de commander l’orientation de l’atterrisseur tandis que l’AGC contrôlait la descente pour un alunissage réussi !

Et c’est ainsi qu’un ordinateur à peu près aussi puissant que le microcontrôleur d’un grille-pain actuel amena les hommes sur la Lune en toute sécurité, et six fois de plus par la suite…

Figure 3 : L’alunissage historique de la mission Apollo 11 en vidéo (lien cliquable). À 7:00 de la vidéo, on peut entendre Neil Armstrong signalant au centre de contrôle l’apparition de la fameuse alarme « 1202 ».

Contact : Pascal BallyVincent Weber

¹ Dans une mémoire à tores magnétique chaque tore correspond à un bit de donnée. Les tores peuvent être magnétisés dans deux directions différentes (sens horaire et antihoraire). Le bit enregistré dans le tore est zéro ou un selon le sens du champ magnétique. Les fils traversant les tores sont arrangés pour permettre de magnétiser les tores et de lire le sens des champs magnétiques en envoyant des courants électriques dans les fils.

² Comparativement à un standard de 32 Go de mémoire ram actuel.

³ Comparativement à un disque dur standard de capacité de 1 To actuel.

Le circuit intégré (ou puce électronique), est un composant électronique, basé sur un semi-conducteur, intégrant souvent plusieurs types de composants électroniques de base dans un volume réduit (sur une petite plaque), rendant le circuit facile à mettre en œuvre.

À l’époque de la mission Apollo 11, les ingénieurs du MIT n’avaient pas jugé utile d’incorporer l’utilisation du radar de rendez-vous durant l’alunissage, tandis que les astronautes avaient eu le raisonnement inverse. En effet, en cas d’alunissage avorté, il eut été vital pour eux d’être en mesure de récupérer le module de commande sur la bonne trajectoire !

 

Financement de l’innovation

Fusions & acquisitions

Contact

77 rue La Boétie – 75008 Paris, France

+ 33 (0) 9 86 29 70 19

contact@inneance.fr

risus neque. ut adipiscing mi, libero