L’analyse temporelle des systèmes embarqués

bannière systèmes embarqués analyse IRT Saint Exupéry

Graphique évolution microprocesseurs data
Figure 1. Évolution des microprocesseurs
(extrait de https://www.karlrupp.net/2018/02/42-years-of-microprocessor-trend-data/ )

analyse systèmes embarqués complexes
Graphique architecture System Software Xilinx Versal ACAP Developers Guide
Figure 2. Architecture du Xilinx Versal ACAP  (extrait de Versal ACAP System Software Developers Guide (UG1304))

Un système temps-réel est ainsi soumis à des contraintes temporelles strictes, telles que les temps de réponse, les débits, la fraîcheur des données. Garantir et prouver que ces contraintes sont bien respectées est un sujet complexe, mobilisant des expertises en informatique théorique et en ingénierie du matériel et du logiciel.

Au cours des quinze dernières années, cette complexité s’est accrue significativement avec l’émergence de plateformes de calcul intégrant diverses formes de parallélisme matériel : coeurs de traitement multiples et hybrides, accélérateurs matériels (unités SIMD, GPUs, accélérateurs IA), etc.

Les pratiques de développement, de vérification, de validation, et de certification (par ex. CAST 32 ou AMC 20-189 dans le domaine aéronautique) ont dû évoluer pour maintenir la capacité à garantir la satisfaction des contraintes temporelles.

Prenons en exemple le sujet de l’analyse des pires temps d’exécution (ou WCET pour Worst-Case Execution Times). Autrefois, des méthodes simples et empiriques, comme la technique du high water mark (consistant à mesurer le temps d’exécution maximal mesuré sur un jeu de tests), étaient largement utilisés. Aujourd’hui, on recourt à des approches bien plus sophistiquées, telles que l’approche d’interprétation abstraite ou la statistique des événements rares.

analyse d'interférences LNT et réseau de Petri
Figure 2. Modèles d’analyse d’interférences (LNT et réseau de Petri)

La conformité du temps de réponse d’un système ainsi que son délai doivent être garantis dès la conception et être vérifiés avec autant de rigueur que les résultats produits par le système. Lorsque le système est totalement ou partiellement implémenté dans un logiciel, démontrer ses « propriétés temps réel » revient à estimer les pires-temps d’exécution des composants logiciels (ou WCET pour Worst-Case Execution Times) réalisés. Le WCET représente ainsi la borne supérieure des temps d’exécution de la fonction observables en opération.

Sur des architectures matérielles simples où le temps d’exécution d’une instruction dépend uniquement de l’instruction elle-même et non de l’état du processeur au moment de l’exécution, l’estimation du WCET est conceptuellement simple. Il suffit de rechercher le chemin d’exécution dont la durée totale, calculée comme la somme des durées de chaque instruction, est maximale.

Cependant, cette tâche n’est pas facile à réaliser pour des logiciels complexes puisque tous les chemins d’exécution doivent être considérés. Heureusement cela peut être largement automatisé. La difficulté s’accroît davantage sur des architectures plus complexes où le temps d’exécution d’une instruction varie en fonction du contexte d’exécution. Cette dépendance entre le temps d’exécution et l’état du processeur provient de plusieurs sources, la plupart étant liées aux fonctionnalités introduites dans les processeurs afin d’améliorer les temps moyens d’exécution des logiciels. Parmi elles, on peut citer les mécanismes de prédiction de branchement, d’exécution spéculative ou encore les caches.

Avec tous les mécanismes de microarchitecture subtils et complexes implémentés dans les processeurs haut de gamme, l’estimation des WCET avec le niveau de confiance requis par les systèmes critiques devient un défi majeur. Mais les difficultés ne s’arrêtent pas là. Si l’on considère non plus une unité de traitement unique, ou cœur, mais des plateformes de traitement composées de plusieurs de ces unités, les problèmes se multiplient.  

Chacune de ces unités peut exécuter un logiciel distinct sur des ressources matérielles privées (pipeline, mémoire, etc.) mais elles partagent généralement une partie des ressources matérielles. Ce partage engendre des phénomènes de contention et, plus largement, de dépendances de diverses natures, sources d’interférences temporelles.  

Pourquoi la prise en compte de ces interférences est un défi majeur pour l’analyse temporelle ?

  1. L’identification des sources d’interférences : il est nécessaire de recenser toutes les manières possibles dont l’exécution d’un code sur un cœur peut affecter le temps d’exécution d’un autre code sur un autre cœur. Assurer l’exhaustivité de cette analyse est un défi en raison de la sophistication des architectures et, parfois, du manque de documentation.
  2. L’estimation des effets des interférences : une fois identifiées, il faut évaluer et borner les interférences en évitant des estimations trop pessimistes.
  3. La combinaison des résultats : les résultats de l’analyse WCET « en isolation » doivent être combinés à ceux de l’analyse d’interférences pour obtenir une estimation du WCET « en situation de contention ».

Une partie significative des travaux réalisés par l’équipe CSEC de l’IRT Saint Exupéry a porté et porte encore aujourd’hui sur l’analyse temporelles des systèmes afin de garantir, notamment, la tenue des échéances.

Au fil des ans et des projets, nous avons abordé de nombreuses dimensions du problème :

  • Micro-architecturale, avec des travaux sur la mise en œuvre de microarchitectures facilitant les analyses temporelles (travaux sur l’architecture RiscV FlexPret développée par Berkeley), sur l’analyse d’interférences (travaux sur l’outil et l’approche PhyLog de l’ONERA), etc.
  • Logicielle, avec des travaux sur l’analyse de pire-temps d’exécution (WCET pour Worst-Case Execution Times) selon des techniques d’interprétation abstraite (avec l’IRIT sur l’outil OTAWA) et empiriques (avec l’ONERA et RocqStat), travaux avec Asterios Technologies et Rapita System sur l’instrumentation du code, sur la mise en œuvre de langages synchrones (Lustre et ForeC, avec l’INRIA).
  • Système avec des travaux sur la mise en œuvre du modèle synchrone d’Asterios à l’échelle d’un système distribué.
  • Réseau, avec des travaux sur l’analyse et la configuration de réseaux de communication basés sur la technologie TSN (Time Sentitive Network).

In fine, tous ces travaux convergent vers un seul et unique but : permettre la réalisation de fonctions de plus en plus complexes en exploitant au mieux des capacités de traitement croissantes et assurant les propriétés temporelles requises pour nous nos systèmes.


W.-T. Sun, E. Jenn, et H. Cassé, « Construisez votre propre analyseur statique WCET : le cas du processeur automobile AURIX TC275 », présenté lors du 10e Congrès Européen sur les Logiciels et Systèmes Temps Réel Embarqués (ERTS 2020), Toulouse, France, janvier 2020.

G. Brau, E. Jenn, E. Courty, K. Delmas, et F. Boniol, « Une méthode pour l’analyse des interférences utilisant le langage de modélisation PHYLOG », présenté lors du 12e Congrès Européen sur les Logiciels et Systèmes Temps Réel Embarqués (ERTS 2024), Toulouse, France, juin 2024.

Damien Chabrol, Jean Guyomarc’H, Fabien Siron, Guillaume Phavorin, Sam Thompson, et al., « Séparation des préoccupations fonctionnelles et des interférences temporelles pour une conformité efficace à la norme AMC 20-193 », présenté lors du Congrès Européen sur les Logiciels et Systèmes Temps Réel Embarqués (ERTS 2024), Toulouse, France, juin 2024.

L’analyse temporelle des systèmes embarqués
Retour en haut