Simulation et émulation 2D ou 3D : l’avenir de la médiation numérique en calcul et informatique
Publié par ACONIT (Association pour un Conservatoire de l'Informatique et de la Télématique), le 10 septembre 2022 1.4k
Article de synthèse récapitulatif présenté par l’ACONIT
Dans le prolongement de l’article d’Alain Guyot du mois de juillet dernier présentant la simulation (phase 2 – voir plus bas) d’un calculateur électronique Gamma 3, l’ACONIT présente un récapitulatif de ses travaux conjoints ou menés en autonomie concernant des simulateurs/émulateurs, qui sont appelés à devenir, surtout depuis la crise du Covid-19 et l’émergence d’une approche tout numérique, une des façons les plus attrayantes et ludiques d’appréhender le fonctionnement de machines anciennes, issues d’un patrimoine pour la plupart non accessible au grand public.
(Remarque/définition : Un simulateur simule le comportement physique (mécanique, électrique ou électronique) d'une machine, d'un mécanisme... Un émulateur, quant à lui, convertit un langage machine (du code) vers un autre, permettant de répliquer un ordinateur au niveau fonctionnel / logiciel, plutôt que physique).
Simulation 3D d'un arithmomètre par les étudiants de l'IMAG
(voir l'illustration d'en-tête)
L’arithmomètre, ou arithmomètre de Thomas, fut au début du XIXè siècle la première machine à calculer commercialisée au monde et, pendant près de quarante ans, il sera le seul type de machine à calculer disponible à la vente. Ce calculateur permettait d’additionner et de soustraire deux nombres d’une façon directe, et pouvait faciliter les opérations de multiplication et de division grâce à une platine de résultat mobile.
Inventé en France par Thomas de Colmar en 1820, il fut commercialisé de 1851 à 1915. Sa simplicité, sa fiabilité et à sa robustesse lui permirent d’être la première machine à calculer utilisée quotidiennement dans des bureaux et donc, pour la première fois à partir de 1851, dans des banques, des compagnies d’assurances et même les administrations du gouvernement commencèrent à utiliser cette machine à calculer pour leurs opérations journalières (source : Wikipédia).
Cette simulation a été créée dans le cadre d’un projet universitaire par les étudiants de troisième année de licence mathématique et informatique de l’année 2015-2016. L’équipe était constituée de : Clémence Barbier, Mama Dembele, Julien Dides, Thomas Gerspacher, Julien Girard, Gwendal Le Quellenec, Noah Lee, Corentin Moirant et Mathilde Sapet.
Pour faire vos additions, soustractions, multiplications et divisions, n’hésitez pas et venez vous aussi utiliser cet arithmomètre en ligne. Ôtez le capot et regardez-le fonctionner sous tous les angles. Une superbe réalisation des étudiants L3 Maths-Info IMAG 2015-2016.
>> Chargez ici l’arithmomètre <<
(laissez-lui quand même un peu de temps pour se charger – barre verte - avant d’actionner les commandes… !)
Dès 1840, la concurrence s’organise en Dauphiné avec l’Arithmaurel
A cette époque, deux dauphinois, Timoléon Maurel et Jean Jaillet, inventaient et fabriquaient une horloge à calcul très en avance sur son temps.
Cet Arithmaurel exécutait automatiquement, en 1850, les 4 opérations arithmétiques, comme l’unité arithmétique de tous les ordinateurs. Cette automatisation totale avait un demi-siècle d’avance sur son temps. De plus, l’Arithmaurel ne possédait ni manivelle, ni moteur, ni pile. Le secret est dans les gros boutons à oreilles qu’il faut tourner pour afficher des nombres (diviseur ou quotient) sur les cadrans à aiguille. Cette machine a été conçue et prototypée à Voiron.
Notre application permet de manipuler un Arithmaurel virtuel. Cette application peut lui faire exécuter des additions, soustractions, multiplications, divisions et sommes de produits sur des valeurs tirées au hasard. L’ACONIT ne possède pas d’Arithmaurel physique car ils sont extrêmement rares (seulement 5 musées en possèdent), et probablement plus aucun n’est en état de calculer. Il semble par ailleurs qu’aucune trace de l’atelier de Maurel et Jaillet à Voiron ne nous soit parvenue.
Phase 1 de la simulation machine Gamma 3
(le module central de la machine telle qu'elle se présente dans nos collections)
Ce projet d’histoire de l’informatique a été mené par Lucas Trampal et José Maillard en 2017-18. Un simulateur web complet a été établi à cette occasion pour la machine Bull Gamma 3, commercialisée durant les années 1950. L’objectif du projet était de réaliser son modèle 3D complet, dans le but de reprendre une partie de ce projet pour l’intégrer ensuite à une simulation du panneau de programmation de la machine (cette partie ne sera réalisée qu’ultérieurement – voir Programmation du Gamma 3, plus bas).
Le simulateur inclut l’extension tambour, qui permet notamment de compiler du code déca (fonctionnalité non active).
III. Outils utilisés
- Blender : Blender est un logiciel libre principalement orienté vers le modélisme et l’animation. Dans ce projet, tous les modèles ont étés réalisés sous Blender, puis exportés au format COLLADA.
- Godot : Godot est un moteur de jeu vidéo libre et multi-plateformes. Il dispose d’un langage de script fortement inspiré de Python.
- Node.js : Le framework utilisé pour développer cet émulateur est Angular.js. Il permet de développer de belles applications en javascript, avec du code proprement découpé.
- Modèles 3D : Les composants sur lesquels le plus d’attention a été portée sont le panneau de programmation et les tiroirs contenant la mémoire vive de 12 chiffres décimaux. Malgré un usage de textures simples, on se rapprocher de la vraie structure des composants. Au final, certaines libertés d’aspect ont été prises, dans le but d’unifier les variations observées sur les photos (certains tubes à vides manquants sur des tiroirs ainsi que l’arrangement des diodes).
Pour visualiser quelques rendus des pièces modélisées avec le moteur ray-tracing de Blender, il faut se reporter au rapport cité ci-dessus ; les programmes sont accessibles grâce aux liens dirigeant vers le github :
https://www.aconit.org/histoire/Gamma-3/Articles/rapport%20projet%20ENSIMAG-18.pdf
https://github.com/lutrampal/bullgammator
Phase 2 de la simulation machine Gamma 3
En 2022, des étudiants ont développé une simulation plus complète. Il est possible de manipuler le modèle 3D de ce précurseur d’ordinateurs, le Bull Gamma 3 (qui faisait la jonction entre les calculateurs analogiques, la mécanographie et les ordinateurs à processeurs que nous connaissons aujourd'hui). Il est lui aussi disponible sur Internet, et en cliquant sur les divers organes de ce modèle vous ferez apparaître une fenêtre d’explication de leur fonctionnement.
(https://www.aconit.org/histoire/Gamma-3/Simulateur 3D/, travail en cours)
Simulation de la programmation du Bull Gamma 3
La première moitié du 20e siècle a vu s’opérer une véritable révolution via les machines à calculer électromécaniques : la transmission électrique des chiffres. Ainsi est née la tabulatrice configurée par un tableau de connexions. Comme son nom l’indique, une tabulatrice imprimait des tables, comme des factures, des livres de comptes, des fiches de paye, etc. Chaque ligne de la table imprimée est calculée suivant la même méthode que la précédente, méthode définie par le tableau de connexions. Puis on a substitué de l’électronique aux engrenages, des lampes dans un premier temps. C’était infiniment plus rapide, mais le paradigme restait le même : une machine qui exécutait répétitivement la même méthode câblée dans le tableau de connexions. Enfin, John von Neumann ajouta à ce type de dispositif un compteur permettant d’activer, ou au contraire d’inhiber successivement certaines lignes des tableaux de connexions. La programmation était enfin née.
(exemple d'un panneau de connexions en cours de construction)
En complément des deux phases de simulateur d’aspect, il est possible d’appréhender un élément fondamental de son fonctionnement : la programmation. Le Bull Gamma 3 étant un ordinateur très archaïque, pour disposer d’un programme, il fallait le "câbler" manuellement sur un panneau de connexions.
Il était difficile d’écrire un programme pour le Gamma 3, car on ne disposait d’aucun outil de mise au point. Mais était-il difficile de transcrire ce programme, une fois « écrit » sous forme de connexions de tableau ? Essayez vous-même en cliquant sur ce lien pour ouvrir l’application.
(cette application ouvre un tableau de connexions virtuel pour le Gamma 3. Un exemple de programme/connexions vous est fourni : une extraction de racine carrée en virgule flottante.)
Cette application possède 4 niveaux de difficulté : connexion de couleur ou connexion grise, pose assistée (automatique) ou manuelle. En mode automatique, on clique là où va la connexion ; en mode manuel, il faut cliquer d’où la connexion vient, puis là où elle se poursuit. Cliquer sur les figures pour les agrandir.
Le simulateur/émulateur PDP-8 interactif
Enfin, un projet nommé POP (PDP-8/P pédagogique) a conduit l’ACONIT à développer un simulateur virtuel de PDP-8, mini-ordinateur de conception plus récente, disponible sur le Web, avec panneau de commande, consoles, disques simulés....
Espace simulateur : https://pop.aconit.org
L’écran Web comporte en haut un bandeau avec 3 boutons :
- configuration
- documentation (Tous les documents et programmes collectés par ACONIT)
- Aide (Prise en main, manuel d’utilisation du simulateur)
Fenêtres
PDP-8/p ouvre un grand nombre de fenêtres et vous offre un environnement de travail complet… Vous pouvez les réorganiser sur l’écran en tirant le cadre avec votre souris. Certaines d’entre elles (log, TTY, listing) contiennent un cadre intérieur pour recevoir du texte. Vous pouvez en changer la taille en tirant sur le coin droit inférieur (zone hachurée).
Face avant PDP-8
Tous les registres et les bascules d’état sont affichés du fait que cette face avant est pleinement interactive. Vous pouvez ainsi positionner tous les interrupteurs (juste sous le registre MQ) à 1 ou à 0 simplement en cliquant dessus ; vous pouvez également appuyer sur les boutons de commande en ligne basse, mais vous pouvez aussi positionner à 1 ou 0 chacun des bits de chaque registre. C’est une facilité du simulateur, mais c’est impossible à réaliser sur un PDP-8 réel !
Tous les registres et toutes les bascules portent leur nom anglais d’origine. Nous avons fait le choix de ne traduire que le nom des boutons de commande. Une liste de tous ces noms est donnée dans la documentation annexée à la page web.
À droite de chaque registre se trouve la traduction du code binaire en octal (base 8) et décimal. À droite de la ligne la plus haute (Voyants d’état CPU), quand le simulateur est en fonctionnement, vous trouvez une indication du temps de cycle PDP-8 simulé (ordinairement de l’ordre de 1,5µs).
Chargement de programmes en mémoire : vous pouvez charger des programmes en format assembleur ou binaire directement dans la mémoire. Pour ce faire, sur votre ordinateur, glissez directement le fichier contenant le code source (PAL) ou le code binaire (BIN) sur les registres MA-MB du panneau de commande (partie centrale marquée par une ligne pointillée).
Le fichier sera assemblé (PAL) ou désassemblé (! BIN), et vous pouvez voir apparaitre le résultat dans une nouvelle fenêtre. Vous pouvez même modifier le code symbolique et presser "Reload"...
Ce simulateur PDP-8 a été réalisé dans le cadre de l’association ACONIT par Edgar Bonet, pour le cœur du simulateur et de l’assembleur, et par Hans Pufal, pour les fonctions E/S et la mise en forme web.