Speedup Prediction for Selective Compilation of Embedded Java Programs

Slides:



Advertisements
Présentations similaires
Le moteur
Advertisements

1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
Produit Gammes Nomenclatures Modules Techniques Prix de Revient Prix de Vente Modules Techniques Client Marges Mise en route Temps Unitaire Prix (Ex:
Mon carnet De comportement
Koha - Greenstone Symposium Koha Miramas 28 mai 2010
LIRMM 1 Journée Deuxièmes années Département Microélectronique LIRMM.
Classe : …………… Nom : …………………………………… Date : ………………..
1/32 Forum des utilisateurs du SISMER – Novembre 2005 Le portail NAUTILUS accès en ligne aux données et nouveau site WEB du SISMER Michèle FICHAUT Mickael.
Reconnaissance de la parole
Est Ouest Sud 11 1 Nord 1 Laval Du Breuil, Adstock, Québec I-17-17ACBLScore S0417 Allez à 1 Est Allez à 4 Sud Allez à 3 Est Allez à 2 Ouest RndNE
Est Ouest Sud 11 1 Nord 1 RondeNE SO
Sud Ouest Est Nord Individuel 36 joueurs
Les Prepositions.
1 V-Ingénierie… La compétence au service de lexigence… vous présente.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
La diapo suivante pour faire des algorithmes (colorier les ampoules …à varier pour éviter le « copiage ») et dénombrer (Entoure dans la bande numérique.
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Modèle d’interaction pour les systèmes mixtes
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
CALENDRIER PLAYBOY 2020 Cliquez pour avancer.
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
le profil UML en temps réel MARTE
Les verbes auxiliaires Avoir ou être ?? Choisissez! Cest un verbe Dr Mrs Vandertrampp? Cest un verbe réfléchi?
1 SERVICE PUBLIC DE LEMPLOI REGION ILE DE France Tableau de bord Juillet- Août 2007.
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
Projet de Compilation Manuel VACELET, Jean Pierre CAURIER, Gaël COLLE,
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Développement d’application web
La Saint-Valentin Par Matt Maxwell.
Louis la grenouille Paroles et musique: Matt Maxwell.
Programmation concurrente
Notre calendrier français MARS 2014
IFT 6800 Atelier en Technologies d’information
COURS DE PROGRAMMATION ORIENTEE OBJET :
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
C'est pour bientôt.....
Les nombres.
CHARAL Calendrier 2007 Dit is wat mannen boeit!.
Veuillez trouver ci-joint
Ordonnancement de tâches
F L T R Université catholique de Louvain-la-Neuve Faculté de philosophie et lettres FLTR Faculté de Philosophie et Lettres Présentation décembre 2002 Réalisation:
SUJET D’ENTRAINEMENT n°4
Java vs. C++ Pierre-Yves ALIZON – Ingénieurs 2000.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
Stage 2A CS80 pour Origin 1/28. 1) Presentation of the internship 2) The Multi-Oscillator 3) Connection-GUI’s API Conclusion Stage 2A CS80 pour Origin.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
1 Modèle pédagogique d’un système d’apprentissage (SA)
* Source : Étude sur la consommation de la Commission européenne, indicateur de GfK Anticipations.
10 paires -. 9 séries de 3 étuis ( n° 1 à 27 ) 9 positions à jouer 5 tables Réalisé par M..Chardon.
CALENDRIER-PLAYBOY 2020.
Septembre Semaines du 2 au 13 septembre DATECOURSEXERCICESEXERCICES à fairePOUR le Jeudi 5 Vendredi 6 Lundi 9 Prise de contacts. Programme ISN. Déroulement.
LES PILES ET FILES.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Projet de stage d’année IIR4 sous le thème:
1 Nestlé – Optifibre Zones administrables via le back-office.
Les Chiffres Prêts?
Médiathèque de Chauffailles du 3 au 28 mars 2009.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Transcription de la présentation:

Speedup Prediction for Selective Compilation of Embedded Java Programs V. Colin de Verdiere, S. Cros, C. Fabre, R. Guider Silicomp Research Institute S. Yovine Verimag "Workshop on Embedded Software, EMSOFT'02". Grenoble, October 7-9, 2002. LNCS 2491.

Mémoire d’Ingénieur C.N.A.M. en Informatique Analyse du Byte-code Java par instrumentation : amélioration des performances par compilation sélective Sébastien Cros Mémoire d’Ingénieur C.N.A.M. en Informatique Grenoble, 2 juillet 2002 Travaux réalisés du 1er Février 2001 au 31 Janvier 2002 au sein de l’équipe compilation du Silicomp Research Institute, sous la direction de M. Sergio Yovine du laboratoire VERIMAG.

Plan de la présentation Projet Expresso – Java pour l’embarqué (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Java Interpreter Data Area Java Native Interface Thread Area Garbage JVM Garbage Collector Scheduler Operating System (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Real Time Operating System Java embarqué Native code Data Area Java Native Interface Thread Area JRTS Memory Allocation Synthesized Scheduler Real Time Operating System (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Expresso (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Plan de la présentation Projet Expresso – Java pour l’embarqué Génération de code natif – prédiction de l’accélération (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Génération de code natif « à la volée » - JIT « statique » - AOT Compilation du code résident et chargé Optimisations plus importantes Conserve le code compilé. Avantages Utilisation de ressources CPU & RAM Recompile à chaque exécution Sacrifie la portabilité Inconvénients Expansion de la taille du code compilé (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

TurboJ Compilateur java AOT Du bytecode vers le code natif. Utilisation du C comme langage intermédiaire. Compile une fois, conserve le code compilé. Optimisations globales. Cohabitation du bytecode et du code natif à l’exécution (exécution mixte). Compilation sélective par méthode. (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Compilation sélective Instrumentation de l ’application .class Informations collectées Exécution typique Analyse Byte-code Instrumenté Analyse de l ’application Compilation Application compilée TurboJ Liste des méthodes à compiler (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Technique naïve de partitionnement Hypothèses : Accélération constante quelque soit le type de Byte-code compilé. Nombre de Byte-codes exécutés par une méthode reflète son temps d ’exécution. Sélectionner les méthodes qui exécutent le plus grand nombre de Byte-code. (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Sélection des méthodes triées sur le nombre de Byte-codes exécutés. Nb de Byte-codes exécutés Sélection 1 2 3 4 méthodes Peut-on prédire l’accélération ? (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

(c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Plan de la présentation Projet Expresso – Java pour l’embarqué Génération de code natif Prédiction de l’accélération (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Classification du Byte-code Catégorie de Byte-code Type de Byte-code Accélération manipulation pile, branchement, variables (locales, d ’instances, classes), arithmétique, convertion de type « Calcul » importante « Forte interaction avec la machine virtuelle » new, newarray, anewarray, multianewarray, athrow, checkcast, instanceof, moniterenter, moniterexit faible « Appels de méthodes » Invokevirtual, invokeinterface, invokestatic, invokespecial variable (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Appel croisé Appel entre une méthode compilée et une méthode interprétée ou native. a e Appel Croisé Interprétée Interprétée b Appel Direct compilée c d méthode Native compilée (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Coût des appels Méthode Appelante / Appelée Accélération invokevirtual Int / Int Int / Cpl Cpl / Int Cpl / Cpl invokevirtual 1 0.3 0.6 5 invokeinterface 1 0.5 0.6 2.5 invokestatic 1 0.4 0.6 5 invokespecial 1 0.4 0.5 5 Appels croisés Appels directs (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

(c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Modèle d ’accélération Byte-codes exécutés Appels croisés Nb Byte-codes exécutés compilés Nb appels croisés R = (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

(c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Plan de la présentation Projet Expresso – Java pour l’embarqué Génération de code natif Prédiction de l’accélération Mise en œuvre (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Compilation sélective Informations collectées Application compilée .class Instrumentation de l ’application Exécution typique Analyse TurboJ Liste des méthodes à compiler Byte-code Instrumenté Analyse de l ’application Compilation (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Graphe d ’appels 1537 T.j() 8 10 5 A.m() C.m() D.m() (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Appels de méthodes invokespecial et invokestatic => Une méthode cible unique. invokevirtual et invokeinterface => Polymorphisme : Plusieurs cibles potentielles. (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Invokevirtual A.getId()I Cibles potentielles Class A { public String m(){...} } Class B extends A { Class C extends B { Class D extends B { Invokevirtual A.getId()I public Int getId(){ return 0;} public Int getId(){ return 1;} public Int getId(){ return 2;} public Int getId(){ return 3;} Invokevirtual A.toString()V T.j() ?.m() T.j() C.m() D.m() A.m() (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Techniques mises en œuvre Analyse de la hiérarchie de classes => retrouver les cibles potentielles de chaque point d ’appels. Parcours du flot d ’exécution => retrouver la référence d ’un objet sur la pile d ’opérande. Analyse de type intra-procédurale => réduire le nombre de compteurs d ’appels. (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Compilation sélective Informations collectées Application compilée .class Instrumentation de l ’application Exécution typique Analyse TurboJ Liste des méthodes à compiler Byte-code Instrumenté Analyse de l ’application Compilation (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Algorithme glouton Évaluation du ratio pour chaque candidats Ens. des méthodes sélectionnées a a 5 5 b 1 b 1 Ens. des méthodes candidates 10 50 10 50 c c e d e d 1 1 50 f 50 f g g Évaluation du ratio pour chaque candidats Sélection du candidat maximisant le ratio (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

(c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Résultats (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

Conclusions Outil: 13000 lignes de Java, 80 classes Axes d’évolution : d ’instrumentation « Tprofiler » : Collecte le graphe d ’appels Outil d ’analyse « Tselect » : Heuristique gloutonne Axes d’évolution : Analyse : sélection initiale des méthodes Modèle : raffiner la classification du Byte-code (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

(c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr