Soutenance de stage de DEA 
É valuation de la quantité de travail utile dans 
l’’exécution des programmes 
Stage encadré p...
Dé finition 
• Une instruction dynamique est utile si 
- Elle produit un résultat émis en sortie 
- Elle produit un résult...
3 
Bibliographie 
• Différentes définitions du travail inutile 
- Valeurs mortes dynamiques 
 G. Sohi & A. Butt 
ASPLOS X...
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [2] 
• Graphe de dépendance de donnée 
- Construction au cours de l’’exécution 
- Relier les instruc...
Optimisation 
• Réduction du graphe 
- Suppression des noeoeuds certifiés utiles 
 A mesure que le programme se déroule 
...
Optimisation 
5
Optimisation 
• Réduction du graphe 
- Suppression des noeoeuds certifiés utiles 
 A mesure que le programme se déroule 
...
Mise en oeoeuvre 
• Salto 
- Récupérer des informations statiques 
- Instrumenter du code assembleur 
 Insérer des instru...
Instrumentation [1] 
• Exemple simple 
7
Instrumentation [1] 
• Exemple simple 
7
Instrumentation [1] 
• Exemple simple 
7
Instrumentation [1] 
• Exemple simple 
7
Instrumentation [1] 
• Exemple simple 
7
Instrumentation [2] 
• Différentes phases 
- Sauvegarde du contexte 
- Création de la structure de donnée 
- Traitement de...
Vé rification 
• Ré-exécution du même programme avec 
les mêmes données en entrée 
- Saut des instructions inutiles 
• Vér...
Ré sultats 
• Tests effectués sur GZIP et GUNZIP 
- Sans optimisation de compilation 
 Entre 1 et 11 % de travail inutile...
Analyse [1] 
11 
GZIP sur un fichier texte de 2 Ko 
Sans optimisation de compilation 
Nombre d’instructions dynamiques 
No...
Analyse [2] 
• Phase d’’initialisation 
 ≈≈ 50 % de travail inutile 
• Coeoeur de l’’algorithme de compression 
- Sans op...
Analyse [3] 
• Exemple d’’initialisation 
prev_match = match_start; 
. . . 
if (prev_length>=MIN_MATCH && 
match_length<=p...
Analyse [4] 
• Au coeoeur de l’’algorithme 
- « Dictionnaire » 
- Insertion d’’un nouvel élément (chaî ne) 
- Recherche de...
Conclusion 
• Quantifier le travail inutile 
- Proportion non négligeable dans GZIP 
• Comprendre d’’où il provient 
- Alg...
Prochain SlideShare
Chargement dans…5
×

Evaluation de la quantité de travail (in)utile dans l’exécution des programmes

546 vues

Publié le

Soutenance de stage de DEA - sujet de recherche : Evaluation de la quantité de travail (in)utile dans l’exécution des programmes

Publié dans : Formation
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Evaluation de la quantité de travail (in)utile dans l’exécution des programmes

  1. 1. Soutenance de stage de DEA É valuation de la quantité de travail utile dans l’’exécution des programmes Stage encadré par P. Michaud et effectué par B. Vidal Projet CAPS
  2. 2. Dé finition • Une instruction dynamique est utile si - Elle produit un résultat émis en sortie - Elle produit un résultat utilisé comme opérande d’’une instruction utile - C’’est un branchement 2
  3. 3. 3 Bibliographie • Différentes définitions du travail inutile - Valeurs mortes dynamiques  G. Sohi & A. Butt ASPLOS X - oct. 2002 - É critures silencieuses  M. Lipasti, K. Lepak & G. Bell IEEE, vol. 50, No. 11 - nov. 2001 - É valuation de l’’ensemble du travail inutile après exécution
  4. 4. La mé thode utilisé e [1] • Exemple simple 3
  5. 5. La mé thode utilisé e [1] • Exemple simple 3
  6. 6. La mé thode utilisé e [1] • Exemple simple 3
  7. 7. La mé thode utilisé e [1] • Exemple simple 3
  8. 8. La mé thode utilisé e [1] • Exemple simple 3
  9. 9. La mé thode utilisé e [1] • Exemple simple 3
  10. 10. La mé thode utilisé e [1] • Exemple simple 3
  11. 11. La mé thode utilisé e [1] • Exemple simple 3
  12. 12. La mé thode utilisé e [1] • Exemple simple 3
  13. 13. La mé thode utilisé e [2] • Graphe de dépendance de donnée - Construction au cours de l’’exécution - Relier les instructions dépendantes  Registres  Mémoire • Parcours du graphe - Sources (sorties ou branchements) - Marquage des instructions utiles 4
  14. 14. Optimisation • Réduction du graphe - Suppression des noeoeuds certifiés utiles  A mesure que le programme se déroule  Un noeoeud utile ne peut devenir inutile - Suppression des noeoeuds certifiés inutiles  Une instruction n’’est accessible depuis aucune ressource  Système de ramasse-miette 5
  15. 15. Optimisation 5
  16. 16. Optimisation • Réduction du graphe - Suppression des noeoeuds certifiés utiles  A mesure que le programme se déroule  Un noeoeud utile ne peut devenir inutile - Suppression des noeoeuds certifiés inutiles  Une instruction n’’est accessible depuis aucune ressource  Système de ramasse-miette 5
  17. 17. Mise en oeoeuvre • Salto - Récupérer des informations statiques - Instrumenter du code assembleur  Insérer des instructions • Au cours de l’’exécution - Récupérer des informations dynamiques  Ordre d’’exécution  Adresses des accès à la mémoire  É tat du système 6
  18. 18. Instrumentation [1] • Exemple simple 7
  19. 19. Instrumentation [1] • Exemple simple 7
  20. 20. Instrumentation [1] • Exemple simple 7
  21. 21. Instrumentation [1] • Exemple simple 7
  22. 22. Instrumentation [1] • Exemple simple 7
  23. 23. Instrumentation [2] • Différentes phases - Sauvegarde du contexte - Création de la structure de donnée - Traitement des opérandes - Traitement des résultats - Parcours du graphe si nécessaire - Restauration du contexte 8
  24. 24. Vé rification • Ré-exécution du même programme avec les mêmes données en entrée - Saut des instructions inutiles • Vérification que les deux exécutions sont équivalentes 9
  25. 25. Ré sultats • Tests effectués sur GZIP et GUNZIP - Sans optimisation de compilation  Entre 1 et 11 % de travail inutile en moyenne - Avec optimisations de compilation  Entre 10 et 12 % de travail inutile en moyenne - Dépend du type de traitement  Compression  Décompression - Dépend du fichier traité 10
  26. 26. Analyse [1] 11 GZIP sur un fichier texte de 2 Ko Sans optimisation de compilation Nombre d’instructions dynamiques Nombre d’instructions inutiles
  27. 27. Analyse [2] • Phase d’’initialisation  ≈≈ 50 % de travail inutile • Coeoeur de l’’algorithme de compression - Sans optimisation de compilation  ≈≈ 7 % de travail inutile - Avec optimisations de compilation  ≈≈ 10 % de travail inutile 12
  28. 28. Analyse [3] • Exemple d’’initialisation prev_match = match_start; . . . if (prev_length>=MIN_MATCH && match_length<=prev_length) { check_match(strstart-1, prev_match, prev_length); . . . } Affectation inutile dans 95 % des cas 13
  29. 29. Analyse [4] • Au coeoeur de l’’algorithme - « Dictionnaire » - Insertion d’’un nouvel élément (chaî ne) - Recherche de redondance - Comparaison progressive  Lazy evaluation mechanism - Insertion d’’éléments n’’apparaissant qu’’une fois  Travail inutile 14
  30. 30. Conclusion • Quantifier le travail inutile - Proportion non négligeable dans GZIP • Comprendre d’’où il provient - Algorithme  Inhérent à l’’algorithme  Du à une implémentation « naï ve » - Compilation • É viter ce travail - Outil d’’aide au programmeur 15

×