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