1 / 32

Speedup Prediction for Selective Compilation of Embedded Java Programs

Speedup Prediction for Selective Compilation of Embedded Java Programs. "Workshop on Embedded Software, EMSOFT'02". Grenoble, October 7-9, 2002. LNCS 2491. Analyse du Byte-code Java par instrumentation : amélioration des performances par compilation sélective. Sébastien Cros

mali
Download Presentation

Speedup Prediction for Selective Compilation of Embedded Java Programs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Speedup Prediction for Selective Compilation of Embedded Java Programs "Workshop on Embedded Software, EMSOFT'02". Grenoble, October 7-9, 2002. LNCS 2491.

  2. 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 2002au sein de l’équipe compilation du Silicomp Research Institute,sous la direction de M. Sergio Yovine du laboratoire VERIMAG.

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

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

  5. 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

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

  7. 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

  8. 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

  9. 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

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

  11. 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

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

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

  14. 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

  15. 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 new, newarray, anewarray, multianewarray, athrow, checkcast, instanceof, moniterenter, moniterexit « Forte interaction avec la machine virtuelle » faible « Appels de méthodes » Invokevirtual, invokeinterface, invokestatic, invokespecial variable (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

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

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

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

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

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

  21. 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

  22. 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

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

  24. 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

  25. Invokevirtual A.getId()I T.j() A.m() C.m() D.m() Cibles potentielles Class A { public String m(){...} } Class B extends A { } Class C extends B { public String m(){...} } Class D extends B { public String m(){...} } 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() (c) Sergio Yovine - VERIMAG - Sergio.Yovine@imag.fr

  26. 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

  27. 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

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

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

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

  31. Conclusions • Outil:13000 lignes de Java, 80 classes • 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

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

More Related