Recompilation et optimisation dynamique de code pdfauthor

Transcription

Recompilation et optimisation dynamique de code pdfauthor
Recompilation et optimisation dynamique de code
Florent Bouchez
Présentation du Lundi 31 janvier 2005
Recompilation et optimisation dynamique de code
Florent Bouchez
Plan
1
Introduction
2
CrusoeTM
3
Dynamo
Principe de fonctionnement
Exemple
4
Deli
5
État de l’art
Problèmes dynamiques
Perspectives
6
Conclusion
Recompilation et optimisation dynamique de code
Section
Florent Bouchez
Plan
1
Introduction
2
CrusoeTM
3
Dynamo
Principe de fonctionnement
Exemple
4
Deli
5
État de l’art
Problèmes dynamiques
Perspectives
6
Conclusion
Recompilation et optimisation dynamique de code
Introduction
Florent Bouchez
Présentation
Optimisation de code : à la compilation.
Mais il existe aussi des méthodes dynamiques, pendant l’exécution :
techniques matérielles (exécution dans le désordre, prédiction
de branches)
optimisations dynamiques logicielles (utilisation de traces pour
créer du code linéaire)
compilation dynamique (compilateurs JIT, CrusoeTM )
Seule la première est utilisée industriellement.
Recompilation et optimisation dynamique de code
Introduction
Florent Bouchez
Présentation
Optimisation de code : à la compilation.
Mais il existe aussi des méthodes dynamiques, pendant l’exécution :
techniques matérielles (exécution dans le désordre, prédiction
de branches)
optimisations dynamiques logicielles (utilisation de traces pour
créer du code linéaire)
compilation dynamique (compilateurs JIT, CrusoeTM )
Seule la première est utilisée industriellement.
Recompilation et optimisation dynamique de code
Introduction
Florent Bouchez
Présentation
Optimisation de code : à la compilation.
Mais il existe aussi des méthodes dynamiques, pendant l’exécution :
techniques matérielles (exécution dans le désordre, prédiction
de branches)
optimisations dynamiques logicielles (utilisation de traces pour
créer du code linéaire)
compilation dynamique (compilateurs JIT, CrusoeTM )
Seule la première est utilisée industriellement.
Recompilation et optimisation dynamique de code
Introduction
Florent Bouchez
Plan
1
Introduction
2
CrusoeTM
3
Dynamo
Principe de fonctionnement
Exemple
4
Deli
5
État de l’art
Problèmes dynamiques
Perspectives
6
Conclusion
Recompilation et optimisation dynamique de code
CrusoeTM
Florent Bouchez
Principe
Les processeurs Crusoe sont performants et faibles consommateurs.
un assembleur compatible x86
mais un CPU de type VLIW avec quatre unités parallèles
Floating-Point Integer ALU Load/Store Branch
unit
unit
unit
unit
CodeMorphingTM + mémoire cache
Recompilation et optimisation dynamique de code
CrusoeTM
Florent Bouchez
Principe
Les processeurs Crusoe sont performants et faibles consommateurs.
un assembleur compatible x86
mais un CPU de type VLIW avec quatre unités parallèles
Floating-Point Integer ALU Load/Store Branch
unit
unit
unit
unit
CodeMorphingTM + mémoire cache
Recompilation et optimisation dynamique de code
CrusoeTM
Florent Bouchez
CodeMorphing
Recompilation et optimisation dynamique de code
CrusoeTM
Florent Bouchez
Avantages
changement d’architecture ne nécessite que le changement du
logiciel
mais cycles « perdus » pour exécuter le logiciel
et permet les optimisations dynamiques
Recompilation et optimisation dynamique de code
CrusoeTM
Florent Bouchez
Plan
1
Introduction
2
CrusoeTM
3
Dynamo
Principe de fonctionnement
Exemple
4
Deli
5
État de l’art
Problèmes dynamiques
Perspectives
6
Conclusion
Recompilation et optimisation dynamique de code
Dynamo
Florent Bouchez
Dynamo
Dynamo est un projet d’optimisation dynamique de code (1996).
Entrée : code natif PA-8000
Sortie : code natif PA-8000
Interprétation de code. Lent.
Recompilation et optimisation dynamique de code
Dynamo
Florent Bouchez
Dynamo
Dynamo est un projet d’optimisation dynamique de code (1996).
Entrée : code natif PA-8000
Sortie : code natif PA-8000
Interprétation de code. Lent.
Recompilation et optimisation dynamique de code
Dynamo
Florent Bouchez
Schéma
Recompilation et optimisation dynamique de code
Dynamo
Principe de fonctionnement
Florent Bouchez
(b)
J
I
H
G
E
D
C
B
A
appel
Exemple
retour
Code natif initial.
Recompilation et optimisation dynamique de code
Dynamo
Exemple
Florent Bouchez
retour
appel
H
J
G
I
Exemple
E
D
B
A
(a)
C
Graphe de
contrôle.
Recompilation et optimisation dynamique de code
Dynamo
Exemple
Florent Bouchez
flot
de
(c)
I
Fragment optimisé.
vers
Dynamo
B
E
J
H
G
D
C
A
Exemple
Recompilation et optimisation dynamique de code
Dynamo
Exemple
Florent Bouchez
Plan
1
Introduction
2
CrusoeTM
3
Dynamo
Principe de fonctionnement
Exemple
4
Deli
5
État de l’art
Problèmes dynamiques
Perspectives
6
Conclusion
Recompilation et optimisation dynamique de code
Deli
Florent Bouchez
Deli
Deli un un projet plus récent (2002). (HP encore)
Pas d’interprétation mais points de contrôle.
Fournit une API pour l’observation et la modification des
instructions.
Recompilation et optimisation dynamique de code
Deli
Florent Bouchez
Plan
1
Introduction
2
CrusoeTM
3
Dynamo
Principe de fonctionnement
Exemple
4
Deli
5
État de l’art
Problèmes dynamiques
Perspectives
6
Conclusion
Recompilation et optimisation dynamique de code
État de l’art
Florent Bouchez
Problèmes
Seules les techniques matérielles sont utilisées industriellement.
1.
2.
3.
4.
problème
sur-coût
décisions
fiabilité
Optimisation dynamique
interprétation
faibles
optimisation aggressive
bogues non-reproductibles
Recompilation et optimisation dynamique de code
État de l’art
Problèmes dynamiques
Florent Bouchez
Compilation dynamique
spécialisation du code
annotations
code source disponible
bogues
Problèmes
Seules les techniques matérielles sont utilisées industriellement.
1.
2.
3.
4.
problème
sur-coût
décisions
fiabilité
Optimisation dynamique
interprétation
faibles
optimisation aggressive
bogues non-reproductibles
Recompilation et optimisation dynamique de code
État de l’art
Problèmes dynamiques
Florent Bouchez
Compilation dynamique
spécialisation du code
annotations
code source disponible
bogues
Problèmes
Seules les techniques matérielles sont utilisées industriellement.
1.
2.
3.
4.
problème
sur-coût
décisions
fiabilité
Optimisation dynamique
interprétation
faibles
optimisation aggressive
bogues non-reproductibles
Recompilation et optimisation dynamique de code
État de l’art
Problèmes dynamiques
Florent Bouchez
Compilation dynamique
spécialisation du code
annotations
code source disponible
bogues
Problèmes
Seules les techniques matérielles sont utilisées industriellement.
1.
2.
3.
4.
problème
sur-coût
décisions
fiabilité
Optimisation dynamique
interprétation
faibles
optimisation aggressive
bogues non-reproductibles
Recompilation et optimisation dynamique de code
État de l’art
Problèmes dynamiques
Florent Bouchez
Compilation dynamique
spécialisation du code
annotations
code source disponible
bogues
Problèmes
Seules les techniques matérielles sont utilisées industriellement.
1.
2.
3.
4.
problème
sur-coût
décisions
fiabilité
Optimisation dynamique
interprétation
faibles
optimisation aggressive
bogues non-reproductibles
Recompilation et optimisation dynamique de code
État de l’art
Problèmes dynamiques
Florent Bouchez
Compilation dynamique
spécialisation du code
annotations
code source disponible
bogues
Améliorations
David Hodgdon avance l’idée de la coopération :
1
le compilateur statique sait mais partiellement ;
2
le dynamisme n’a pas de vue d’ensemble.
Le compilateur peut alors laisser des « notes » à l’optimiseur
dynamique.
Recompilation et optimisation dynamique de code
État de l’art
Perspectives
Florent Bouchez
Améliorations
David Hodgdon avance l’idée de la coopération :
1
le compilateur statique sait mais partiellement ;
2
le dynamisme n’a pas de vue d’ensemble.
Le compilateur peut alors laisser des « notes » à l’optimiseur
dynamique.
Recompilation et optimisation dynamique de code
État de l’art
Perspectives
Florent Bouchez
Améliorations
1
Constantes à l’exécution : définies une fois pour toutes, mais à
l’exécution.
2
Accès mémoire : ordonner plus tôt les load.
3
Limites : bound-checking évite les bogues incompréhensibles,
mais sur-coût.
4
Environnements distribués : calculs similaires sur plusieurs
processus : partage des traces.
Recompilation et optimisation dynamique de code
État de l’art
Perspectives
Florent Bouchez
Améliorations
1
Constantes à l’exécution : définies une fois pour toutes, mais à
l’exécution.
2
Accès mémoire : ordonner plus tôt les load.
3
Limites : bound-checking évite les bogues incompréhensibles,
mais sur-coût.
4
Environnements distribués : calculs similaires sur plusieurs
processus : partage des traces.
Recompilation et optimisation dynamique de code
État de l’art
Perspectives
Florent Bouchez
Améliorations
1
Constantes à l’exécution : définies une fois pour toutes, mais à
l’exécution.
2
Accès mémoire : ordonner plus tôt les load.
3
Limites : bound-checking évite les bogues incompréhensibles,
mais sur-coût.
4
Environnements distribués : calculs similaires sur plusieurs
processus : partage des traces.
Recompilation et optimisation dynamique de code
État de l’art
Perspectives
Florent Bouchez
Améliorations
1
Constantes à l’exécution : définies une fois pour toutes, mais à
l’exécution.
2
Accès mémoire : ordonner plus tôt les load.
3
Limites : bound-checking évite les bogues incompréhensibles,
mais sur-coût.
4
Environnements distribués : calculs similaires sur plusieurs
processus : partage des traces.
Recompilation et optimisation dynamique de code
État de l’art
Perspectives
Florent Bouchez
Plan
1
Introduction
2
CrusoeTM
3
Dynamo
Principe de fonctionnement
Exemple
4
Deli
5
État de l’art
Problèmes dynamiques
Perspectives
6
Conclusion
Recompilation et optimisation dynamique de code
Conclusion
Florent Bouchez
Conclusion
Compilateurs et optimiseurs dynamiques améliorent
l’exécution du code.
Utilisation de traces importante.
Coopération statique/dynamique mènerait à plus
d’améliorations.
Influence du matériel nécessaire (mémoire cache) sur le
processeur ?
Recompilation et optimisation dynamique de code
Conclusion
Florent Bouchez