Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes IRISA - Projet Solidor Antoine COLIN.

Slides:



Advertisements
Présentations similaires
Cours n° 1 Introduction à la programmation
Advertisements

Architecture de machines Le microprocesseur
Rappels C.
Initiation à la programmation et algorithmique cours 2
2002 Exploratoire ASTRÉE : Analyse Statique de logiciels Temps-RÉel Embarqués 1)Le problème considéré est de démontrer statiquement (à la compilation)
Calculs de complexité d'algorithmes
Critère d’ordonnancement en temps réel Partie II
Tolérance aux défaillances de logiciel
Cours d’Algorithmique
UML - Présentation.
Chargé de recherches au CNRS
Objectif de l’exposé.
La pile un élément essentiel
Hiérarchie mémoire Contrôle Entrées Mémoire Chemin de données Sorties.
Extensibilité Dynamique dans les Caches Web : une Approche par Aspects
Modèle de coût algorithmique intégrant des mécanismes de tolérance aux pannes Samir Jafar, Thierry Gautier, Jean Louis Roch Laboratoire ID-IMAG Equipe.
Version du 22 juin Un outil danalyse statique (synthèse de propriétés) de preuve de propriétés de logiciels écrits en langage C ANSI, utilisé dans.
Introduction aux Systèmes d’information Temps Réel
Références Bibliographiques
ALGORITHMES RECURSIFS
Quels types de problèmes en mathématiques ?
Les algorithmes: complexité et notation asymptotique
Introduction à la programmation (Java)
Modélisation causale multiphysique
Sécurité et Buffer Overflow
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
Techniques de test Boulanger Jean-Louis.
Pr. Alain Greiner (LIP6 - ASIM) Daniel Millot, Philippe Lalevee (INT)
Test et débogage Tests unitaires. Gestion d’erreurs. Notion d’état, de pré-condition et de post-condition. Assertion. Traces de programme. Débogueur et.
Structures de données IFT-10541
Systèmes Superscalaires et VLIW
Semaine #1 INF130 par Frédérick Henri.
CSI3525: Concepts des Languages de Programmation
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
Ift 2251 Introduction au Génie Logiciel
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
1 La récursion. Nous avons vu qu'un programme est constitué d'un ensemble de fonctions. Il est possible pour une fonction donnée d'appeler une autre fonction.
Parallel Programming in C with MPI and OpenMP
Partie II Sémantique.
Détection du meilleur format de compression pour une matrice creuse dans un environnement parallèle hétérogène Olfa HAMDI-LARBI.
Instructions de contrôle
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Procédures et fonctions
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
8INF856 Programmation sur architectures parallèles
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Langages de description architecturale.
Le langage Racket (Lisp)
Les processus métiers : concepts, modèles et systèmes Claude Godart Université de lorraine. Esstin
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
1 Sixième journée Éléments de C++ La programmation typée Éléments de C++ La programmation typée.
1 IFT 099 Introduction à la programmation. 2 Plan du cours (sem. 1) 1.Introduction - les ordinateurs 2.La programmation procédurale 3.La programmation.
Fonction Traiter Algorithmique et Programmation
UMR 7619 Sisyphe Avril 2012 Alexandre Pryet Le langage une introduction pragmatique Cacul itératif.
Programmation mathématique avancée
Simulation du rôle de la communication dans l’établissement d’un réseau de liens sociaux Projet GPL :
MOCK.
Simulation de jeux d’instructions à hautes performances
Optimisation pour la Conception de Systèmes Embarqués
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
La récursivité Mireille Goud HEG Vd AlgSD - Résurisivité.
UE MAREP Cours 12 : Révisions
M a s t e r 2 – i a d N I – m i n g i n g é n i e r i e o b j e t j a v a u n i v e r s i t é p a r i s 6 p i e r r e & m a r i e c u r i e u f r.
Langage de programmation
Modélisation des problèmes complexes et Optimisation
BTS IRIS Étude du référentiel. RÉCAPITULATIF PAR ACTIVITÉ DES TÂCHES réalisées en autonomie. Installation, exploitation, optimisation et maintenance T6.8Suivi.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

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.