mise en œuvre d'un outil d'aide au développement d'une jvm modulaire pour système...
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 PresentationTRANSCRIPT
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