Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes IRISA - Projet Solidor Antoine COLIN
2 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Plan Problématique Analyse statique du temps d’exécution au pire-cas Réduire le pessimisme des estimations –Prise en compte de l’architecture matérielle –Identification du pire chemin d’exécution Analyse de code d’OS Conclusion et perspectives
3 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Problématique COTS - Matériel : processeur, réseau, … - Logiciel : système d’exploitation Temps-réel strict - Respect des échéances Tolérance aux fautes - Redondance des traitements - Détection d’erreurs - Vote -... Tendance actuelle (coût)
4 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Problématique : temps-réel strict Correction des applications temps-réel –Délivrer un résultat correct avant une certaine échéance Temps-réel strict : –Test d’ordonnançabilité hors-ligne –Respect des échéances de terminaison Nécessite la connaissance du temps d’exécution au pire cas (WCET) des applications
5 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Problématique : obtention du WCET Méthodes d’estimation des WCETs –Tests et mesures, problèmes : exhiber le pire comportement de l’application sûreté ? –Analyse statique du code source sûre (mais pessimiste) automatique
6 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Problématique : « COTS » Problèmes posés par l’utilisation de COTS –Système d’exploitation sur étagères disponibilité des sources du système langage source analysable ? –Matériel sur étagères complexité des architectures actuelles des processeurs (caches, pipelines, prédiction de branchements) ne pas prendre en compte ces éléments induit une sur-estimation du WCET (WCET trop pessimiste)
7 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Analyse statique (1/2) Langage adapté à l’analyse (C) –Restrictions : récursivité, appels dynamiques –Annotations : le nombre maximum d’itérations des boucles Compilation et décomposition du programme en blocs de base (code séquentiel) Représentation du programme par : –Graphe flot de contrôle –Arbre syntaxique
8 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Analyse statique (2/2) Bloc de base _facto: pushl %ebp movl %esp,%ebp subl $0x4,%esp movl $0x1,0xfffffffc(%ebp) L2: cmpl $0x1,0x8(%ebp) jg L5 jmp L3 L5: movl 0xfffffffc(%ebp),%eax imull 0x8(%ebp),%eax movl %eax,0xfffffffc(%ebp) L4: decl 0x8(%ebp) jmp L2 L3: movl 0xfffffffc(%ebp),%edx movl %edx,%eax jmp L1 L1: movl %ebp,%esp popl %ebp ret int facto10(int i) { int r; for (r=1;i>1;i--) [9] { r=r*i; } return r; } Arbre syntaxique séquence boucle Graphe flot de contrôle
9 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Estimation du WCET (1/2) Enumération implicite des chemins d’exécution –Graphe de flot de contrôle système de contraintes –Résolution par ILP (Integer Linear Programming) –Pb : complexité, temps de résolution N0 = e0 = e1 N1 = e1 + e6 = e2 + e3 N2 = e2 = e5 N3 = e3 = e4 N4 = e4 = e6 N5 = e5 = e0 e0 = 1 B1 maxiter * B0 WCET = i Ni*WCET_BBi Maximize(WCET) 1 4 e2 e1e0 e3 e6 e5 e e0 = e1 = e2 = e5 = 1 e3 = e4= e6 = maxiter WCET = WCET_BB0 + (maxiter+1)*WCET_BB1 + WCET_BB2 + (maxiter)*WCET_BB3 + (maxiter)*WCET_BB4 + WCET_BB5
10 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Estimation du WCET (2/2) Enumération explicite des chemins d’exécution –Timing schema : arbre syntaxique système d’équations Arbre syntaxique séquence boucle WCET(seq) = WCET_BB0 + WCET(boucle) + WCET_BB5 WCET(boucle) = maxiter * (WCET_BB1 +WCET_BB3 + WCET_BB4) + WCET_BB1 + WCET_BB2 WCET(SEQ)WCET(S1) + … + WCET(Sn) S1;…;Sn WCET(IF)WCET(test) + max( WCET(then), WCET(else) ) if(test) then else etc.
11 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Réduire le pessimisme 2 sources de pessimisme –Calcul des WCET des blocs de base : WCET_BB << WCET(instruction) WCET(instruction) dépend du contexte d’exécution de l’instruction (contexte = état de l’architecture matérielle) –Calcul du WCET du programme : pb d’identification du pire chemin d’exécution La prise en compte de l’architecture matérielle Une meilleure identification du pire chemin d’exécution par annotation des programmes instruction BB
12 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Réduire le pessimisme La prise en compte de l’architecture matérielle Prise en compte de certains éléments d’architecture Intel Pentium –Cache d’instructions –Pipeline double –Prédiction de branchements
13 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Réduire le pessimisme La prise en compte de l’architecture matérielle Prise en compte de certains éléments d’architecture : – Cache d’instructions : réduit le temps de chargement des instructions – Pipeline double (U/V) : permet l’exécution de 2 instructions/cycle – BTB : supprime certains délais causés par les branchements Préchargeur Cache d’instructions File B Tampon de cible de branchement (BTB) Test d’appariement U/V Pipeline U Pipeline V Cache de données File A
14 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Réduire le pessimisme Le cache d’instruction (1/2) États abstraits de cache (ACS) –Représentation de tous les états possibles du cache à tout moment de l’exécution. –Granularité : le bloc de base 2 ACS par bloc de base (in/out) –Bloc de base subdivisé en I-blocs –Calcul par itération de point fixe 0 1,13 6,14 3,7 0 1, out in pushl %ebp movl %esp,%ebp subl $0x4,%esp movl $0x1,0xfffffffc(%ebp) 22 23
15 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Réduire le pessimisme Le cache d’instruction (2/2) Classification des I-blocs –3 catégories : always hit : chaque référence à l’I-bloc est un hit dans le cache first-miss : seule la 1 ère réf. provoque un cache-miss always miss : toutes les réf. provoquent des cache-miss Influence sur le WCET –Catégories des I-blocs temps de chargement d’une instruction en fonction de : la position de l’instruction dans l’I-bloc la fragmentation de l’instruction sur plusieurs I-blocs les catégories des I-blocs concernés
16 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Réduire le pessimisme La prédiction de branchement But : prédire le résultat des instructions de saut –Control Transfer Instruction ( CTI ) Prédictions –Basées sur l’historique des CTIs (H-prediction) –Par défaut quand pas d’historique connu (D-prediction) Historiques enregistrés par le Branch Target Buffer (BTB) États abstraits de BTB (ABS) –Idem ACS Classification des CTIs en 4 catégories –always D-predicted– first unknown –first D-predicted– always unknown
17 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Réduire le pessimisme Le pipeline Pipeline –Rôle : entrelace l’exécution d’instructions consécutives –Méthode : simulation statique de l’état d’occupation du pipeline –Fusion de l’état du pipeline en cas de rupture de séquence –Pentium : pipeline double simuler l’appariement des instructions Préchargeur Décodage D1 Décodage D2 Exécution Ecriture du résultat
18 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Réduire le pessimisme Une nouvelle méthode d’annotation des boucles Annotations de boucles –Indiquent le nombre maximum d’itération de chaque boucle –Annotation = constante Boucle non-rectangulaire Améliorer la précision des annotations –Annotations des boucles par 2 expressions : [ maxiter, indice ] –Expression du WCET des boucles par des sommes finies. For ( i=1 ; i <= 128 ; i=i*2 ) [ 8 ][ 8, 2^ 1 ] For ( j=0 ; j<i ; j++) [ 128 ][ P, 2 ] 8 128 = 1024 ( 1 ) = 255 1 = 2 = 0 (2^ 1)-1 i = 0..4 j = 0..2 j i i = 0..4 j = 0..i i j
19 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Prog.c estimation WCET Calcul d’ABS CTI classif. Syntax tree Prog.asm foobar Calcul d’ACS I-blocs classif. Simulation pipeline Maple L’outils H EPTANE (Hades Embedded Processor Timing ANalyzEr) BB tree CFG
20 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Analyse logiciel «COTS» (1/2) Analyse du noyau temps-réel RTEMS Restrictions sur le langage sources réalistes –Appels dynamiques : peu nombreux fonction appelée toujours connue statiquement (sauf extension) –Pas de récursivité –Boucles annotables, mais pas toujours trivial –Peu de code non structuré (une routine assembleur, gotos restructurables)
21 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Analyse logiciel «COTS» (2/2) Annotations de boucles –Pas d'imbrication de boucles –Boucle infinie : pas de pb (tâche idle) –Nombre maximal d’itérations obtention directe : 25 % des boucles gestion des noms d’objets (chaînes C) allocation dynamique de mémoire (first-fit) boucle de l’ordonnanceur : dépend de l’environnement Profil du code système –Fort taux de réutilisation des fonctions WCET partiel Algorithmes non adaptés à l’analyse de WCET –Allocation dynamique de mémoire
22 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Conclusion H EPTANE : (Hades Embedded Processor Timing ANalyzEr) –Outil d’analyse statique de code C basée sur l ’arbre syntaxique –Prise en compte du cache d ’instruction, du pipeline et du BTB –Utilise une méthode d ’annotations plus précise des boucles Réduction significative du pessimisme du calcul de WCET Adaptation d’un noyau temps-réel (RTEMS) aux contraintes de l’analyse (restriction du langage)
23 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Perspectives Quantifier l’impact de ces méthodes (benchmark) Appliquer un calcul de WCET utilisant ces techniques à du code complexe (OS) Analyser le support d’exécution Hades Intégrer le coût du support d’exécution dans les tests de faisabilité des applications
24 Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes Pour plus d’informations Publications –[ACC + 99] Un support d'exécution flexible pour applications distribuées temps-réel dur. E. Anceaume, G. Cabillic, P. Chevochot, D. Decotigny, A. Colin, I. Puaut Première Conférence Française sur les Systèmes d'Exploitation (CFSE'1), juin 1999 –[CP99] Worst-case timing analysis of the RTEMS real-time operating system. A. Colin, I. Puaut Publication Interne IRISA No. 1277, novembre 1999 –[CP00] Worst Case Execution Time Analysis for a Processor with Branch Prediction. A. Colin, I. Puaut Real-Time Systems, Special issue on worst-case execution time analysis, may 2000, to appear –[CDCP00] Are COTS suitable for building distributed fault-tolerant real-time systems ? A. Colin, D. Decotigny, P. Chevochot, I. Puaut 2000 Workshop on parallel and distributed real-time systems, Cancun, Mexico, mai 2000.