La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE

Présentations similaires


Présentation au sujet: "Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE"— Transcription de la présentation:

1 Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE
Mise en œuvre d'un outil d'aide au développement d'une JVM modulaire pour système embarqué Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE Projet Solidor

2 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion

3 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion

4 Introduction (1/3) Les systèmes embarqués : un monde en plein essor
- Applications multimédia - Télécommunications - Chargement dynamique d’applications

5 Introduction (2/3) La solution : le mécanisme de la JVM
- supporte le chargement dynamique d’applications - nouveau standard dans l’industrie - nombreuses applications déjà disponibles

6 Optimisation des ressources
Introduction (3/3) Mais l’embarqué impose ses contraintes : Optimisation des ressources CPU Mémoire Énergie impose JVM adaptée

7 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion

8 1 - Présentation (1/5) Fonctionnement Général C Implémentation
SDE Gestionnaire de types Projection en C Implémentation Spécification Source & Glue Fonctionnement Général Langage C

9 1 - Présentation (2/5) Interface de SDE
Utilisation de SDE à travers deux types de fichiers : fichiers de spécification fichiers d’ implémentation Modularité

10 Fichiers de spécification
1 - Présentation (3/5) Fichiers de spécification typedef thread{…} typedef fork{…} service init_thread(…) service start_thread(…) service stop_thread(…) service wait_thread(…) service get_parent_fork(…) service wait_fork(…) process.idl typedef integer{…} typedef float{…} typedef double{…} service addition_integer(...) service addition_float(...) service addition_double(...) service multiplication_integer(...) ... operations.idl

11 Fichiers d ’implémentation
1 - Présentation (4/5) Fichiers d ’implémentation type integer { opaque(2) } type float { opaque(4) } type double { opaque(8) } service addition_integer { addition_2_octets } service addition_float { addition_4_octets } service addition_double { addition_8_octets } service multiplication_integer { multiplication_2_octets } operation_16_bits.imp type integer { opaque(4) } type float { opaque(8) } type double { opaque(16) } service addition_integer { addition_4_octets } service addition_float { addition_8_octets } service addition_double { addition_16_octets } service multiplication_integer { multiplication_4_octets } operation_32_bits.imp

12 Fichiers d ’implémentation
1 - Présentation (5/5) Fichiers d ’implémentation type thread { opaque(1024) } type fork { opaque(4096) } service init_thread { init_thread_X } service start_thread { start_thread_X } service stop_thread { stop_thread_X } service wait_fork { wait_fork_X } ... Process_X.imp type thread { opaque(4096) } type fork { opaque(8192) } service init_thread { init_thread_Y } service start_thread { start_thread_Y } service stop_thread { stop_thread_Y } service wait_fork { wait_fork_Y } ... Process_Y.imp

13 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion

14 2 - Objectifs du projet Implémentation d’un gestionnaire de types
- types fixes - types variables Optimisation de la mémoire - en taille de l’espace utilisé par les objets - en temps d ’accès aux objets Allocation mémoire des types créés

15 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion

16 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion Types statiques introduits par SDE Analyse de types statiques Optimisation mémoire Types dynamiques introduits par SDE Analyse de types dynamiques

17 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion Types statiques introduits par SDE Analyse de types statiques Optimisation mémoire Types dynamiques introduits par SDE Analyse de types dynamiques

18 Types statiques introduits par SDE
Opaque Externe Composé

19 Types statiques introduits par SDE
Opaque Externe Composé

20 Types statiques introduits par SDE
Type opaque (1/2) Utilisé dans les fichiers d’ implémentation Un espace mémoire contigu Définit les types de base

21 Types statiques introduits par SDE
Type opaque (2/2) Typedef int {} int.idl Type int { private : opaque(2); } int_2.imp

22 Types statiques introduits par SDE
Opaque Externe Composé

23 Types statiques introduits par SDE
Type Externe correspond à un type déclaré par l ’utilisateur : soit dans le même fichier de spécification, soit dans un autre fichier de spécification.

24 Types statiques introduits par SDE
Opaque Externe Composé

25 Types statiques introduits par SDE
Type Composé un type composé est : soit une structure soit une union soit un tableau

26 Types statiques introduits par SDE
Type Structure Type frame { private : struct integer size; string color; }; } frame_X.imp Typedef frame{} components.idl

27 Types statiques introduits par SDE
Type Composé un type composé est : soit une structure soit une union soit un tableau

28 Types statiques introduits par SDE
Type Union type Object { private : union Byte b; Double d; Short s; Int i; }; } Object.imp typedef Object{} typedef Byte{} typedef Double{} typedef Short{} typedef Int{} types.idl

29 Types statiques introduits par SDE
Type Composé un type composé est : soit une structure soit une union soit un tableau

30 Types statiques introduits par SDE
Type Tableau type IP_addr { private: Char [4]; } Type Char opaque(1); protocols_v4.imp type IP_addr { private: Char[4]; } Type Char opaque(4); protocols_v6.imp typedef IP_addr{} typedef Char{} protocols.idl

31 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion Types statiques introduits par SDE Analyse de types statiques Optimisation mémoire Types dynamiques introduits par SDE Analyse de types dynamiques

32 Analyse des types statiques
3 étapes : Parcours des types définis dans les fichiers de spécification et d ’implémentation Génération de macros permettant l ’utilisation des types Allocation mémoire du type

33 Macros générées par SDE
Analyse des types statiques Macros générées par SDE Les noms des macros ont la forme suivante : (global | <module_name>) [_<var_name_1> [_… [_<var_name_N>]] Macros spécifiques aux Tableaux Macros spécifiques aux autres types

34 Macros des types statiques
Analyse des types statiques Macros des types statiques Type integer{ private: opaque(4) ; } types_X.imp Typedef integer { } types.idl #define types_X_integer(ref) ( (char *) (ref)+OFFSET )

35 Macros des types Tableaux statiques
Analyse des types statiques Macros des types Tableaux statiques Type matrice{ private : opaque(4) [5][2]; } types_X.imp Typedef matrice { } types.idl #define types_matrice(ref,i0,i1) ( (char *)(ref)+i0*5*4+i1*4+OFFSET )

36 Allocation mémoire statique
Analyse des types statiques Allocation mémoire statique une fonction d ’allocation mémoire par type : localité spatiale des champs du type : rapidité d ’accès aux champs indispensable dans un contexte multitâche : mémoire moins fragmentée  processus plus rapides retourne une référence

37 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion Types statiques introduits par SDE Analyse de types statiques Optimisation mémoire Types dynamiques introduits par SDE Analyse de types dynamiques

38 Optimisation mémoire (1/9)
État initial du SDE : Placement Mémoire Pas d ’optimisation

39 Optimisation mémoire (2/9)
1- Le placement mémoire : Alignement 1 : Accepté par processeur X Refusé par processeur Y Alignement 2 : Accepté par processeur X Accepté par processeur Y

40 Optimisation mémoire (3/9)
1- Le placement mémoire : Règle 1 : l’adresse allouée à un objet placé en mémoire doit satisfaire l’alignement dicté par le processeur utilisé.

41 Optimisation mémoire (4/9)
2- L’optimisation de l ’espace utilisé : Alignement Mémoire non optimisée Mémoire optimisée 1 2 4 8 Gain de place mémoire : 30%

42 Optimisation mémoire (5/9)
2- L’optimisation de l’espace utilisé : Optimisation 1 : l’espace restant entre 2 objets placés en mémoire doit être minimal.

43 Optimisation mémoire (6/9)
3- L’alignement des types : Les structures Les tableaux Les unions Gestions différentes de l’alignement

44 Optimisation mémoire (7/9)
Les structures : Emplacement des objets Objets à placer 3 x ( 2 ) 1 x ( 4 ) 2 x ( 8 )

45 Optimisation mémoire (8/9)
Contrainte de spécification : la localité mémoire.  Les éléments doivent être placés consécutivement Les tableaux : Tableau à 2 éléments Élément de tableau Objets d’un élément 1 x ( 2 ) 1 x ( 4 ) 1 x ( 8 )

46 Optimisation mémoire (9/9)
Les unions : Union composée des 3 structures : , , En hachuré, les emplacements laissés libres par les structures : , ,

47 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion Types statiques introduits par SDE Analyse de types statiques Optimisation mémoire Types dynamiques introduits par SDE Analyse de types dynamiques

48 Types dynamiques introduits par SDE
Taille du type connue à l’exécution. Deux sortes de type dynamique : type composé Union type composé Tableau

49 Types Unions dynamiques
Types dynamiques introduits par SDE Types Unions dynamiques type Object { private : union <selection_function> Byte b; Double d; Short s; Boolean i; }; } Object.imp typedef Object{} typedef Byte{} typedef Double{} typedef Short{} typedef Boolean{} types.idl

50 Types dynamiques introduits par SDE
Types Tableaux dynamiques type Object { private : union Byte b; Double d; Short s; Boolean bo; }[dimension_function]; } Object.imp typedef Object{} typedef Byte{} typedef Double{} typedef Short{} typedef Boolean{} types.idl

51 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion Types statiques introduits par SDE Analyse de types statiques Optimisation mémoire Types dynamiques introduits par SDE Analyse de types dynamiques

52 Analyse des types dynamiques
3 étapes : Parcours des types définis dans les fichiers de spécification et d’implémentation Génération de macros permettant l’utilisation des types Allocation mémoire du type

53 Macros des types Tableaux dynamiques
Analyse des types dynamiques Macros des types Tableaux dynamiques Type array{ private : opaque(4) [<dim>]; } types_X.imp Typedef array { } types.idl #define meta1(ref) ((char *)(ref)+OFFSET) #define types_array(ref,i0) ( (char *) (ref) +*meta1(ref)+i0*4+OFFSET)

54 Allocation mémoire des types dynamiques
Analyse des types dynamiques Allocation mémoire des types dynamiques Problème : Taille du type connue à l’exécution Solution : Définition de pointeurs Réservation d’emplacements pour les adresses Mise à jour de ces emplacements Localité mémoire Retourne une référence

55 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion

56 4 - Perspectives Pour les types
- interface graphique - génération de Makefile - séparation entre les classes Java et le langage d’implémentation Pour l’alignement des objets en mémoire - algorithme de recherche par arbres - optimisation de la vitesse d’accès mémoire

57 Plan de la présentation
Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion

58 Conclusion Objectifs atteints Critiques - gestionnaire de type réalisé
- optimisation de la taille mémoire utilisée Critiques - fichiers générés - travail modulaire

59 Questions et commentaires

60 Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE
Mise en œuvre d'un outil d'aide au développement d'une JVM modulaire pour système embarqué FIN Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE Projet Solidor


Télécharger ppt "Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE"

Présentations similaires


Annonces Google