Mise en œuvre d'un outil d'aide au développement d'une JVM modulaire pour système...

Preview:

DESCRIPTION

Mise en œuvre d'un outil d'aide au développement d'une JVM modulaire pour système embarqué. Projet SOLIDOR. Rodolphe Loué. Plan de la présentation. Introduction 1 - Présentation 2 - Objectifs 3 - Mise en œuvre 4 - Perspectives Conclusion. Plan de la présentation. Introduction - PowerPoint PPT Presentation

Citation preview

1

Mise en œuvre d'un Mise en œuvre d'un outil d'aide au outil d'aide au développement d'une développement d'une JVM modulaire pour JVM modulaire pour système embarquésystème embarqué

Mise en œuvre d'un Mise en œuvre d'un outil d'aide au outil d'aide au développement d'une développement d'une JVM modulaire pour JVM modulaire pour système embarquésystème embarqué

Rodolphe LouéProjet SOLIDOR

2

Plan de la présentationPlan de la présentation

IntroductionIntroduction1 - Présentation1 - Présentation2 - Objectifs2 - Objectifs3 - Mise en œuvre3 - Mise en œuvre4 - Perspectives4 - PerspectivesConclusionConclusion

3

Plan de la présentationPlan de la présentation

IntroductionIntroduction1 - Présentation1 - Présentation2 - Objectifs2 - Objectifs3 - Mise en œuvre3 - Mise en œuvre4 - Perspectives4 - PerspectivesConclusionConclusion

4

Introduction (1/4)Introduction (1/4)

Essor des Essor des architectures architectures embarquéesembarquées

Applications multimédiaApplications multimédia télécommunicationstélécommunications

5

Introduction (2/4)Introduction (2/4)

Programme Liaison

6

Introduction (2/4)Introduction (2/4)

Programme Liaison

7

Introduction (3/4)Introduction (3/4)

Programme

AB

ST

RA

CT

ION

MA

TE

RIE

LLE Modification du programme indépendamment Modification du programme indépendamment

du matérieldu matériel Evolution du matériel indépendamment du Evolution du matériel indépendamment du

programmeprogramme

8

Introduction (4/4)Introduction (4/4)

mémoiremémoire rapidité d’exécutionrapidité d’exécutioncoût énergétiquecoût énergétique

Optimisation de l’abstraction Optimisation de l’abstraction matérielle selon les critères :matérielle selon les critères :

9

Plan de la présentationPlan de la présentation

IntroductionIntroduction1 - Présentation1 - Présentation2 - Objectifs2 - Objectifs3 - Mise en œuvre3 - Mise en œuvre4 - Perspectives4 - PerspectivesConclusionConclusion

10

1 - Présentation (1/2)1 - Présentation (1/2)

SDE

Sélecteur de module

Gestionnaire de type

Projection de

langageM1, M2

Interface utilisateur

Critères de conception

DSP C55x

Alignements requis

spécification

M1

M2

M3

M4

Implantation (modules)

Gestionnaire de type

11

1 - Présentation (2/2)1 - Présentation (2/2)

Système d’exploitation

Implantation

spécificationAlignement requis

SDElangage1 langage2

MEMOIRE <T>

Implantation1

Version1validée

Version2invalidée

<T>

Implantation2

<référence sur T>

Implantation del’allocation de T

Fonction de construction

de T

Service1 Service2 Service d’allocation

Programme utilisateur

12

Plan de la présentationPlan de la présentation

IntroductionIntroduction1 - Présentation1 - Présentation2 - Objectifs2 - Objectifs3 - Mise en œuvre3 - Mise en œuvre4 - Perspectives4 - PerspectivesConclusionConclusion

13

2 - Objectifs2 - Objectifs

Utilisation des fonctions de Utilisation des fonctions de construction de typeconstruction de type

Création d’information sur le typeCréation d’information sur le type

Rendre le gestionnaire de Rendre le gestionnaire de type polyvalenttype polyvalent

14

Plan de la présentationPlan de la présentation

IntroductionIntroduction1 - Présentation1 - Présentation2 - Objectifs2 - Objectifs3 - Mise en œuvre3 - Mise en œuvre4 - Perspectives4 - PerspectivesConclusionConclusion

15

Les types dans SDELes types dans SDE Type opaque : bloc contigu (opaque(5)) Type externe : déclaré dans la spécification Type composé

– structure : concaténation de type (struct {...})– union : superposition de type

simple : taille de sa composante la plus volumineuse (union {...}) avec sélecteur de type : fonction retournant le type de l’union

(union <sélecteur_de_type> {…})

– tableau : ensemble d’éléments indexés d’un type classique (opaque(1)[2]) dynamique : fonction retournant la taille de la dimension

(opaque(3)[<fonction_de_dimension>])

16

inversion du typeinversion du type

Propriété : un type est

– représenté par un arbre– construit par une grammaire LALR

Type ::= Type_TableauType_Tableau ::= Type Dim

Exemple : type [5][2][7]

17

inversion du typeinversion du type

Type

Type Dim

Type Dim

Type Dim

type[5][2][7]

type[5][2]

type[5]

type

[7]

[2]

[5]

Interprété par l’analyseur par :type[7][2][5]

18

inversion du typeinversion du type

1

2 17

3

4

15

5 107

11

12

8

1413

16

9

6

1918

20

21

22

23

légende

1 racine

structure ou union

tableau

opaque

3

2

8

7

11

10

22

21

20

19

19

inversion du typeinversion du type

1

3 17

2

4

15

5 118

10

12

7

1413

16

9

6

2218

21

20

19

23

légende

1 racine

structure ou union

tableau

opaque

20

Tableau dynamique versus fixeTableau dynamique versus fixe

1

2

3

Tableaufixe

Tableaudynamique

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(0,2,0)

(0,2,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

(1,2,0)

(1,2,1)

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,2,0)

(1,2,1)

(1,2,2)

(2,0,0)

(3,0,0)

Représentation spatiale Représentation mémoire

Descripteurde la dimension 1

Descripteurde la dimension 2

Tableaudynamique

Tableaufixe

21

Opaque(5) [2][3][<d3>][3]

22

Opaque(5) [2][3][<d3>][3]

23

Opaque(5) [2][3][<d3>][3]

24

Opaque(5) [2][3][<d3>][3]

d3(0,0)=1d3(0,1)=1d3(0,2)=3

d3(1,0)=2d3(1,1)=1d3(1,2)=1

d3(0,0)=1d3(0,1)=1d3(0,2)=3

d3(0,0)=1d3(0,1)=1d3(0,2)=3

d3(0,0)=1d3(0,1)=1d3(0,2)=3

d3(0,0)=1d3(0,1)=1d3(0,2)=3

d3(1,0)=2d3(1,1)=1d3(1,2)=1

d3(1,0)=2d3(1,1)=1d3(1,2)=1

d3(1,0)=2d3(1,1)=1d3(1,2)=1

25

Opaque(5) [2][3][<d3>][3]

Emplacement mémoire de taille indéfinie

Légende

26

Opaque(5) [2][3][<d3>][3]

Emplacement mémoire de taille indéfinie

Légende

27

Opaque(5) [2][3][<d3>][3]

Emplacement mémoire de la taille d’un pointeur

Légende

Emplacement mémoire de taille indéfinie

28

Opaque(5) [2][3][<d3>][3]

d3(0,0)=1d3(0,1)=1d3(0,2)=3

d3(1,0)=2d3(1,1)=1d3(1,2)=1

Emplacement mémoire de la taille d’un pointeur

Légende

Emplacement mémoire de taille indéfinie

d3(0,0)=1d3(0,1)=1d3(0,2)=3

d3(0,0)=1d3(0,1)=1d3(0,2)=3

d3(0,0)=1d3(0,1)=1d3(0,2)=3

d3(1,0)=2d3(1,1)=1d3(1,2)=1

d3(0,0)=1d3(0,1)=1d3(0,2)=3

d3(1,0)=2d3(1,1)=1d3(1,2)=1

d3(1,0)=2d3(1,1)=1d3(1,2)=1

29

Opaque(5) [2][3][<d3>][3]

d3(0,0)=1d3(0,1)=1d3(0,2)=3

d3(1,0)=2d3(1,1)=1d3(1,2)=1

Emplacement mémoire de la taille d’un pointeur

Légende

Emplacement mémoire de taille indéfinie

Emplacement mémoire de la taille d’un opaque(5) aligné

048

12162024

48

72

96

144

192

216

3240

5664

8088

104112

136

120128

160152

168176184

200208

224232

30

Unions avec sélecteur dans un tableauUnions avec sélecteur dans un tableau

Exemple :

union <sel1>{

opaque(4) o1;union <sel2>

{opaque(8) o2;opaque(16) o3;

}[2] u;}[3];

31

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

32

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

33

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

sel1=Type_usel1=Type_o1sel1=Type_u

34

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

sel1=Type_usel1=Type_o1sel1=Type_u

35

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

36

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

opaque(8) o2;

37

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

opaque(8) o2;

38

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

opaque(4) o1;

39

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

40

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

41

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

opaque(8) o2;

42

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

opaque(16) o3;

43

Légende

Emplacement mémoire de taille indéfinie

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

44

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

Emplacement mémoire de la taille d’un pointeur

Légende

Emplacement mémoire de taille indéfinie

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

45

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

Légende

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

46

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

Légende

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

47

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

48

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

u

49

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

u

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

50

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

u

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

Emplacement mémoire de la taille d’un opaque(4) aligné

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

51

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

u

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

Emplacement mémoire de la taille d’un opaque(4) aligné

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

52

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

u

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

Emplacement mémoire de la taille d’un opaque(4) aligné

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

53

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

u

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

Emplacement mémoire de la taille d’un opaque(4) aligné

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

54

sel1=Type_usel1=Type_o1sel1=Type_u

sel2=Type_o2sel2=Type_o2

sel2=Type_o2sel2=Type_o3

u

u

Emplacement mémoire de la taille d’un opaque(4) aligné

Légende

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un opaque(16) aligné

union <sel1> {

opaque(4) o1;union <sel2>

{opaque(8) o2;

opaque(16) o3;

}[2] u;}[3];

048

1216

364044

20

28

48

56

55

Tableau de structure d’opaque et de tableauTableau de structure d’opaque et de tableau

Exemple :

struct{

opaque(8) o1;opaque(4) [3][<d2>] o2;

}[2][<d1>];

56

Légende

Emplacement mémoire de taille indéfinie

struct{

opaque(8) o1;opaque(4) [3][<d2>] o2;

}[2][<d1>];

Emplacement mémoire de la taille d’un pointeur

d1(0)=2 d1(1)=1

57

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

struct{

opaque(8) o1;opaque(4) [3][<d2>] o2;

}[2][<d1>];d1(0)=2 d1(1)=1

58

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

struct{

opaque(8) o1;opaque(4) [3][<d2>] o2;

}[2][<d1>];d1(0)=2 d1(1)=1

59

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

struct{

opaque(8) o1;opaque(4) [3][<d2>] o2;

}[2][<d1>];d1(0)=2 d1(1)=1

60

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

struct{

opaque(8) o1;opaque(4) [3][<d2>] o2;

}[2][<d1>];d1(0)=2 d1(1)=1

61

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

struct{

opaque(8) o1;opaque(4) [3][<d2>] o2;

}[2][<d1>];d1(0)=2 d1(1)=1

62

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

struct{

opaque(8) o1;opaque(4) [3][<d2>] o2;

}[2][<d1>];d1(0)=2 d1(1)=1

63

Légende

Emplacement mémoire de la taille d’un opaque(8) aligné

Emplacement mémoire de la taille d’un pointeur

Emplacement mémoire de taille indéfinie

d2(0,0,0)=3d2(0,0,1)=1d2(0,0,2)=1

d2(0,1,0)=2d2(0,1,1)=1d2(0,1,2)=2

d2(1,0,0)=2d2(1,0,1)=1d2(1,0,2)=3

d1(0)=2 d1(1)=1

struct{

opaque(8) o1;opaque(4) [3][<d2>] o2;

}[2][<d1>];

Emplacement mémoire de la taille d’un opaque(4) aligné

struct{

opaque(8) o1;opaque(4) [3][<d2>] o2;

}[2][<d1>];

d2(0,0,0)=3d2(0,0,1)=1d2(0,0,2)=1

d2(0,0,0)=3d2(0,0,1)=1d2(0,0,2)=1

d2(0,0,0)=3d2(0,0,1)=1d2(0,0,2)=1

d2(0,0,0)=3d2(0,0,1)=1d2(0,0,2)=1

d2(0,1,0)=2d2(0,1,1)=1d2(0,1,2)=2

d2(0,1,0)=2d2(0,1,1)=1d2(0,1,2)=2

d2(0,1,0)=2d2(0,1,1)=1d2(0,1,2)=2

d2(0,1,0)=2d2(0,1,1)=1d2(0,1,2)=2

d2(1,0,0)=2d2(1,0,1)=1d2(1,0,2)=3

d2(1,0,0)=2d2(1,0,1)=1d2(1,0,2)=3

d2(1,0,0)=2d2(1,0,1)=1d2(1,0,2)=3

04

8

162024

36

48

60

84

108

120

28

4044

56

6468

80

7276

9288

96100104

112116

124128

64

Plan de la présentationPlan de la présentation

IntroductionIntroduction1 - Présentation1 - Présentation2 - Objectifs2 - Objectifs3 - Mise en œuvre3 - Mise en œuvre4 - Perspectives4 - PerspectivesConclusionConclusion

65

4 - Perspectives4 - Perspectives

Sélecteur de moduleSélecteur de module

–mots clefs (automatisation de la mots clefs (automatisation de la tâche)tâche)

Caractéristiques processeursCaractéristiques processeurs

66

Plan de la présentationPlan de la présentation

IntroductionIntroduction1 - Présentation1 - Présentation2 - Objectifs2 - Objectifs3 - Mise en œuvre3 - Mise en œuvre4 - Perspectives4 - PerspectivesConclusionConclusion

67

ConclusionConclusion

Objectifs atteintsObjectifs atteints type avec fonction de descriptiontype avec fonction de description transparence d’utilisation de ce typetransparence d’utilisation de ce type

CritiquesCritiques+ deux compilations distinctes nécessaires (des deux compilations distinctes nécessaires (des

fichiers d’entrée SDE et des fichiers générés par fichiers d’entrée SDE et des fichiers générés par SDE) : modularitéSDE) : modularité

– séparation des différentes stratégies dans SDEséparation des différentes stratégies dans SDE– mémoire optimisée sans tenir compte de sa mémoire optimisée sans tenir compte de sa

fréquence d’utilisationfréquence d’utilisation

68

Commentaires et questionsCommentaires et questions

69

Mise en œuvre d'un Mise en œuvre d'un outil d'aide au outil d'aide au développement d'une développement d'une JVM modulaire pour JVM modulaire pour système embarquésystème embarqué

Mise en œuvre d'un Mise en œuvre d'un outil d'aide au outil d'aide au développement d'une développement d'une JVM modulaire pour JVM modulaire pour système embarquésystème embarqué

Rodolphe LouéProjet SOLIDOR

FINFIN

Recommended