« Sinon, tu travailles sur quoi exactement ? »
J'aime bien cette question, savoir que quelqu'un s'intéresse à mon travail est très gratifiant, pourtant, je la redoute : comment vulgariser suffisamment sans trop simplifier, ou comment donner assez de détails sans se perdre dans des périphrases incompréhensibles.
L'exercice est périlleux, alors je me lance.
Du régulateur de James Watt à ma thèse.
Un peu d'histoire
Pour réguler automatiquement la vitesse de sa machine a vapeur et ainsi avoir une vitesse la plus constante possible, James Watt (1), a inventé un système très ingénieux : il fixa à une tige, entrainée par la machine, deux boules en métal au bout de bras. Ainsi, plus la tige va vite, plus les deux boules s'écartent. Les bras maintenant les boules étant reliés au robinet d'alimentation en vapeur, la hauteur des boules fait varier l'arrivée en vapeur : la vitesse agit sur l'arrivée de vapeur, il y a rétroaction.
Le régulateur à boules de James Watt.
Aujourd'hui, cette science de la régulation (ou contrôle) s'appelle l'automatique. On parler alors d'actionneur (le robinet), de capteur (les deux boules en métal pour capter la vitesse) et une boucle de rétroaction : la machine a vapeur qui fait varier sa vitesse en fonction du débit de vapeur.
Bien sûr, les systèmes entièrement mécaniques sont rares et l'invention de l'électronique, puis de l'informatique ont permis des systèmes beaucoup plus complexes et performants. Il existe donc des programmes (logiciels) de contrôle.
(1) Cet exemple vient de l'article From Control Loops to Real-Time Programs de Paul Caspi and Oded Maler (Verimag-CNRS, 2005).
Les systèmes critiques, temps réel dur
Certains systèmes contrôlés sont très critiques : un fonctionnement anormal peut avoir des conséquences graves (humaines, écologiques, etc). Les exemples souvent cités sont les commandes de vol d'un avion, ou les systèmes de sécurité d'une centrale nucléaire, mais aussi dans les voitures (que dire de la voiture « autonome » ?).
Dans le cas d'un avion, les actionneurs sont les ailerons et les élévateurs de l'avion, des capteurs mesurent l'altitude, ou les commandes du pilote par exemple. Entre ces capteurs et ces actionneurs, il n'y a plus de systèmes à boules, mais un ordinateur qui calcule la position des actionneurs en fonction de la valeur des capteurs (après numérisation) : la position de l'élévateur, en fonction des entrées.
Une caractéristique de ces systèmes critiques est que le temps fait partie intégrante du cahier des charges : on imagine difficilement le système de contrôle demander au pilote d'attendre la fin du chargement pour rétablir la trajectoire de l'aéronef (!) ou que l'altitude de l'avion soit momentanément traitée 10 secondes plus tard.
Les langages synchrones
Peu après 1989, le besoin d'avoir un langage permettant de rendre le développement de programmes de contrôle plus facile s'est fait sentir. Il fallait un langage pouvant être compris par les automaticiens et qui intègre une notion de temps pour faciliter le développement de tels programmes.
Entre 1991 et 1992, trois langages sont apparus : Lustre, Signal et Esterel.
« Bien. Et donc, tu travailles sur quoi exactement ? »
Les langages synchrones sont très utilisés actuellement pour la programmation de systèmes de contrôle. Cependant, pour rendre les systèmes plus performants, plus confortables, plus complets, etc, ces programmes se complexifient.
Depuis une dizaine d'années, les processeurs arrivent à leurs limites : il n'est plus possible d'augmenter la performance sans augmenter énormément la consommation. Ainsi, sont apparus les processeurs multi-cœurs (contenant plusieurs processeurs) offrant de meilleurs performances pour une consommation moindre.
Cependant, ces processeurs récents sont très complexes et rendent les temps de calculs très difficiles à prévoir (certains comportements sont même aléatoires) : alors que justement, le temps est très important pour le contrôle !
L'entreprise Kalray conçoit un processeur many-cœurs qui permet de prévoir (de manière pas trop pessimiste) ces temps de calcul.
Mon sujet de thèse est donc : comment faire tourner ces programmes de contrôle sur le Kalray MPPA.