Академический Документы
Профессиональный Документы
Культура Документы
architecturale pour la
conception conjointe des
systèmes embarqués
Introduction
Introduction
● Raison du développement des systèmes embarqués
– cf. intro Systèmes Électroniques Embarqués
● Méthodologie d'optimisation des systèmes :
– Organisation et représentation architecturale
– Introduction à l'optimisation architecturale
– Amélioration et intégration verticale du process global de
conception conjointe
– Réf. : Function/Architecture Optimization and Co-Design of Embedded
Systems, Bassam Tabbara, Abdallah Tabarra, Alberto Sangiovanni-
Vincentelli, 2000, Kluwer Academic Publisher [ Bib. Univ. Metz : 004.16 TAB ]
Conception haut niveau
des systèmes embarqués
Conc. haut niveau des syst. emb.
● Définition informelle des systèmes embarqués :
– ensemble de blocs programmables entourés d'ASICs et d'autres
composants standards qui interagissent avec l'environnement au
travers de capteurs et d'actionneurs
● État des lieux :
– prolifération de tels systèmes
– conception de ces systèmes de façon spécifique à chaque cas
de figure
– nécessité de définir une méthodologie de conception globale
Conc. haut niveau des syst. emb.
● Conception des systèmes embarqués
Spécification
du design
Représentation
du design
Partitionnemen
Synthèse Évaluation
t HW/SW
Implantation
Conc. haut niveau des syst. emb.
● Conception des systèmes embarqués
– Conception HW/SW : nouveau concept
● réduction du time-to-market
– synthèse logique
– synthèse logicielle
– Nécessité d'une approche co-design descendante guidée
par la synthèse où l'optimisation démarre au plus haut
niveau d'abstraction
Conc. haut niveau des syst. emb.
● Validation haut niveau des systèmes embarqués
– Validation :
● pourcentage significatif des équipes de conception
– Systèmes embarqués :
● nombreux blocs fonctionnels hétérogènes, tant logiciels que
matériels
– Besoins = évaluation précise et rapide :
● des décisions de compromis
niveau
● sans synthèse systématique
Conc. haut niveau des syst. emb.
– chers à développer
– lents
● modèles fonctionnels
– timing approximatif
– communications négligées
– Solutions :
● nombreuses interventions manuelles
précédents
(modèles rapides peu précis et modèles lents très précis)
● ne repose pas sur un simulateur dédié
Matériel
Émulateu
r HW
(SW)
Logiciel
Exactitude
SW
et HW
MBF
Fonctionnel
Modèl Modèl
e e
SW HW
MBF : modèle de bus Rapidité
fonctionnel
Conc. haut niveau des syst. emb.
● Cadre de travail pour la validation de la co-simulation
– Modèles logiciels et matériels exécutés dans le même
environnement de simulation
– Code de simulation similaire au code exécuté par le
processeur
– Différents choix d'implantation concrétisés par :
● différents temps de simulation
Tâches
systèmes
Partitionnement
HW/SW
Estimation SW Estimation HW
Co-Simulation
HW/SW – Évaluation
Performance/
compromis
Conc. haut niveau des syst. emb.
● Simulation haut niveau en VHDL
– Définition d'un modèle VHDL pour
● chaque tâche
● l'ordonnanceur du RTOS
● les interfaces
VHDL
Conc. haut niveau des syst. emb.
● Simulation haut niveau en VHDL
– Performance du modèle comportemental bien meilleure que celle
du modèle de processeur RTL
● réduit le nombre d'événements de simulation
20
Méthod. de co-design fonction/archi
● Designs au niveau système
– composé de matériels hétérogènes (tant numériques
qu'analogiques) et de composants logiciels
– Méthode traditionnelle (développement de blocs logiciels ou
matériels) inadaptée aux besoins actuels
● difficile, voire impossible, de changer d'échelle de complexité
– matériel
– logiciel
– interfaces
● itérations de conception coûteuses
Méthod. de co-design fonction/archi
● Méthodologie top-down (synthèse) bottom-up (contraintes)
HW Compromis SW
Méthod. de co-design fonction/archi
● Méthodologie basée sur trois concepts
– 1 – Décomposition
● découpage de la fonction en unités
Bibliothèques Bibliothèques
comportementales d'architectures
Niveau
Capture du
comportement
Vérification du
comportement
Capture de
l'architecture
Vérification de
l'architecture
fonctionnel
Liaison vers la
Raffinement HW/SW
vérification de la
de la µArchitecture
µArchitecture
Niveau
Liaison vers
l'implantation
architectural
HW/SW
Méthod. de co-design fonction/archi
● Description de la méthode
– plus le choix correct d'une architecture sera effectué tôt, plus le
nombre d'itérations de la conception sera faible
– Travailler a un haut niveau d'abstraction augmente la flexibilité :
le design peut facilement être reciblé sur une nouvelle plateforme
l'organisation architecturale
Co-synthèse réactive de systèmes
● Défaut des techniques de co-design actuelles :
– utilisées à un niveau d'abstraction relativement bas
– médiocre qualité de synthèse
– stratégies de synthèse conjointe SW/HW :
● implantation d'un processus de décision réactif efficace
Conception
Représentation HW/SW
orientée Représentation
CDFG
contrôle EFSM
● synthèse du matériel
correctement évalué
● limite les optimisations des flots de données et du contrôle
BEGIN
S0
Case
a:=5 Mapping (état)
S0 S1 S2
émet(a) a := 5 a := a+1
S1
S2
a:=a+ état := 1 état := 2
1
END
EFSM CDFG
Co-synthèse réactive de systèmes
● Défaut des techniques de co-design actuelles :
BEGIN
S1
Case
a:=6 Mapping (état)
S0 S1 S2
émet(a) a := 5 a := a+1
S2
état := 1 état := 2
END
EFSM CDFG
Co-synthèse réactive de systèmes
● Point clef
– compilateurs logiciels et matériels : ne peuvent pas effectuer en
statique de telles optimisations (décision au moment de
l'exécution)
– représentation au niveau implantation : barrage aux techniques
d'analyse visant à de telles optimisations potentielles
● optimisation
Design
Décomposition
fonctionnelle
Dépendant de l'architecture
Cont
raint
S es H
W W
Représentation des systèmes
● Applications et plate-formes
Espace application
Spécification
de la Instances de l'application
plate-forme
Exploration
de l'espace
plate-forme
Instance de la plateforme
Espace architecture
Repr. des systèmes : contexte
● Modèles de calcul
– Modèles orientés état :
● courants dans les systèmes orientés contrôle
C=>G
G
F^(G==1)
C=>A
C
CFSM1 CFMS2
C
C=>B
A B
C=>B
(A==0)=>B
CFSM3
Repr. des systèmes : contexte
● Langage de spécification des systèmes
– applications : systèmes embarquées hétérogènes orientés
contrôle
– conception :
● décomposition fonctionnelle
données
● comportement : langage réactif basé FSM (ex.: Esterel)
– Le FFG décrit aussi bien les fonctions des tâches que leur
interaction avec l'environnement :
● quand la tâche lit des entrées
modèles
– Après décomposition, sémantiques des tâches capturées par le
FFG
● capable de décrire les flots de données et de contrôle d'un
logiciel
● capture d'un comportement réactif : notion de sémantique des
E/S
Représentation des systèmes
● Représentation intermédiaire
– FFG : niveau d'abstraction initial où l'on peut effectuer nombre
d'optimisations de fonctions
– Niveau d'abstraction suivant raffine le précédent en y ajoutant
des contraintes : imposition de sémantique EFSM sur le modèle
– Application de l'ordonnancement calculé par le front-end* pour
obtenir un AFFG (Attributed Function Flow Graph)
– L'AFFG s'élabore sur la base du FFG par l'addition d'attributs, ce
qui étend le CFG classique
– Domaine orienté contrôle, utilisation de la sémantique EFSM
pour former le FFG (qui reste général)
Représentation des systèmes
● Représentation intermédiaire
Design
Raffinement Restriction
Décomposition
fonctionnelle
IDR
AFFG
SW HW
Représentation des systèmes
● Représentation intermédiaire : Graphe de Flot de Fonctions
– Définition 1 : graphe de flot de fonction
l'environnement externe
Représentation des systèmes
● Représentation intermédiaire : Graphe de Flot de Fonctions
– Le comportement de la tâche est capturé par le front-end est
représenté par un FFG
– Chaque ensemble d'opérations est un nœud
– Un branchement (conditionnel ou saut) nécessite la présence
d'un nœud cible pour le branchement
– La représentation FFG est basée sur le graphe de flot de contrôle
classique (graphe cyclique) où les deux flots de contrôle et de
données peuvent être représentés
– Les arêtes dans un FFG représentent le flot de contrôle entre les
nœuds
Représentation des systèmes
● Représentation intermédiaire : Graphe de Flot de Fonctions
– Les nœuds des FFG sont multi-entrées (à l'exception de N0 qui
ne possède qu'une seule entrée)
– L'ordre initial d'exécution des opérations n'est pas fixé dans la
représentation du FFG
– N'importe quel ordre d'opérations dans un nœud de FFG est
acceptable tant qu'il est valide d'après la définition suivante
Représentation des systèmes
● Représentation intermédiaire : Graphe de Flot de Fonctions
– Définition 2 :
● un ordre d'exécution o pour les opérations dans un nœud de
d'assignation
– instruction d'assignation :
dest = unop(src1)
dest = src1 binop src2
dest = func (arg1, arg2, ...)
– instruction de test :
[ if (condition) ] goto label
Représentation des systèmes
● Représentation intermédiaire :
– C-like Interchange Format
● Le format d'échange d'un FFG est appelé C-like Intermediate
d'assignation
– instruction d'assignation :
dest = unop(src1)
dest = src1 binop src2
saut conditionnel
dest = func (arg1, arg2, ...) absent lors d'un saut
inconditionnel
– instruction de test :
[ if (condition) ] goto label
Représentation des systèmes
● Représentation intermédiaire :
– C-like Interchange Format
● Toutes les variables sont des registres : elles conservent leur
(cond2==1) (cond2==0)
Représentation des systèmes
● Représentation intermédiaire :
– Formes structurelles des FFG
● Le FFG est un CFG qui capture le comportement des tâches
d'EFSM
● Chaque état de l'EFSM est représenté dans le FFG comme
● tout les noeuds au sein d'un même état sont des noeuds à
S1
N4
N3
S0
N5
N1
N0
S2
N2
N6 N7
N9 N8
Représentation des systèmes
● Représentation intermédiaire :
– FFG en forme d'arbre
● les nœuds N se réfèrent aux nœuds du FFG, alors que les
𝑛 =1+& (1 + 2×𝑐' )
'∈ (..*
unique
● Les boucles ne peuvent avoir lieu qu'entre états : depuis une
S1
N2
N1 S3
N3 D7
N6
S2 N4
N5
Représentation des systèmes
● Preuve du concept
description comportementale
● impossible de déterminer le résultat exact de l'exécution de ce
1 2 3
{d1} {d2} {d3,d4}
ordre Lattice
4 5 6
{d1,d2} {d1,d3,d4} {d2,d3,d4}
7
MFP : {d1,d2,d3,d4}
Reaching definitions = ?
? JOP : {d1,d2,d3}
Élevé (large)
Optim. de fonctions : cadre mathém.
● Solutions exactes ou approximées
– on cherche à trouver les définitions à atteindre (reaching
definitions) du nœud 7
– pendant une itération, on obtient la solution {d1,d2,d3,d4} (le MFP
de cette itération)
– la procédure d'analyse n'a pas encore réalisé que la définition de
d4 est inutile parce que cette définition sera éliminée avant
d'atteindre le nœud 7.
– Cette solution est plus grande que le JOP :
{d1,d2,d3,d4} ≥ {d1,d2,d3}
Optim. de fonctions : cadre mathém.
● Solutions exactes ou approximées
– une solution sûre au problème de reaching definitions inclurait
toutes les définitions de la solution puisque cette surestimation
résulterait en des opportunités d'optimisation moins nombreuses
mais n'invaliderait pas le résultat
– on utilisera toujours le MFP comme la solution la plus large, tout
en cherchant des solutions plus petites jusqu'à ce que le JOP
soit atteint.
– le MFP est l'approximation normalement découverte lors d'une
itération
● plus la solution est large (ou d'ordre élevé) plus elle est sûre
● plus la solution est petite (ou d'ordre faible) meilleure elle est
Optim. de fonctions : cadre mathém.
● Algorithme itératif pour les instances MDFA
– L'algorithme itératif est typiquement l'algorithme utilisé pour
optimiser les compilateurs de logiciel, afin d'optimiser la solution
optimale :
● il est général
restriction
– D'autres approches comme « l'approche itérative par
élimination », ou « l'approche par recherche d'intervalle »
nécessitent que le graphe soit réductible
Optim. de fonctions : cadre mathém.
● Algorithme itératif pour les instances MDFA
– Un graphe de données G est dit réductible si l'entrée de chacune
des boucles de G se fait par l'en-tête de la boucle uniquement
N0
N1 N2
Graphe
irréductible
Optim. de fonctions : cadre mathém.
● Définition : semilattice
– une intersection semilattice est un ensemble L associé à une
opération intersection ∧ tel que pour tout a,b,c ∈ L :
a∧ a ≡ a (idempotence)
a∧ b ≡ b∧a (commutativité)
a∧ (b∧c) ≡ (a∧b)∧ a (associativité)
Optim. de fonctions : cadre mathém.
● Définition : monotone
– soit une semilattice bornée L avec intersection ∧, un ensemble
de fonctions F sur L est dit monotone si les conditions suivantes
sont remplies :
1. Chaque f ∈ F satisfait la condition de monotonicité suivante :
∀ x,y ∈ L, f(x∧y) ≤ f(x) ∧ f(y)
2. Il existe une fonction identité i dans F telle que :
∀ x ∈ L, i(x) = x
1. F est fermée par la composition (o), c.à.d pour 2 fonctions f et
g de F :
f,g ∈ F ⇒ f o g(x) ≤ f(x) ∧ f(y)
FD FFG & algo de contrôle de l'optim.
● Algorithme de contrôle de l'optimisation
– Proposition : Objectif de l'optimisation indépendant de
l'architecture
● l'objectif de l'optimisation à un niveau indépendant de
● DFS order
Reachability Analysis
● Unreachable Node Elimination
Normalisation
Available Elimination
● Available computation determination
suivies
● toutes les interactions avec l'environnement sont gérées
– Exemple :
● a = b + c définit a et utilise b et c
FD FFG & algo de contrôle de l'optim.
● Construction du FFG
– étape de construction du graphe de flot de fonction :
● initialement à partir de la description comportementale
FFG
● table d'instructions contenant les instructions du FFG
AE=𝜙 AE= 𝜙
N1 N2
t1:=a+1
t:=a+1 t2:=b+2
N3
a:=a*5
t3:=a+2
AE={a+2}
FD FFG & algo de contrôle de l'optim.
● Élimination d'expressions disponibles
– Fonctions de transfert de l'Information
∀𝑛 ∈ 𝐺, 𝑓: (𝑅𝑒𝑎𝑐ℎ 𝑛 ) = (𝑅𝑒𝑎𝑐ℎ 𝑛 − 𝐾𝑖𝑙𝑙 𝑛 ) ∪ 𝐺𝑒𝑛(𝑛)
où
● 𝑅𝑒𝑎𝑐ℎ(𝑛) est l'information atteignant le nœud n
branche
● technique d'ajout de redondance : les étapes de propagation
...
False True
T1==True
False True
T1==True c=d+e;
a=b+c;
FD FFG & algo de contrôle de l'optim
● Taille des faux branchements
...
False True
T1==True
T1=False T1=True
False True
T1==True c=d+e;
T1=False T1=True
a=b+c;
FD FFG & algo de contrôle de l'optim
● Propagation de copie
– Processus de substitution des variables équivalentes
– Implanté par un scan linéaire des nœuds du FFG
– Utile pour éliminer les calculs intermédiaires ainsi que leurs
variables
– Peut simplifier les opérations en substituant des constantes aux
variables, et permettre d'autres simplifications ultérieures
– Exemples :
fonction
● pas de déplacement de calculs vers ou hors de la fonction
mémoire
– Compromis :
● taille des nœuds + faible, optimisations de chaque état –
efficaces
● plus d'arcs sur les nœuds partagés, donc plus de choix,
Contraintes Spécifications
architecturales fonctionnelles
Organisation Décomposition
Architecturale Fonctionnelle
Représentation
Matériel Fonction/Architecture Matériel
Optim. de fonctions/architectures
● Introduction : deux classes d'algorithmes d'optimisation
– Niveau indépendant de l'architecture :
● FFG analysé et optimisé comme un ensemble d'opérations
● E/S préservées
et multiplication)
– Les attributs : coûts qui vont guider ou contraindre les
algorithmes d'optimisation exécutés à ce niveau
Co-design fonctions/architectures
● Objectifs de l'optimisation dépendant de l'architecture
– L'objectif au niveau dépendant de l'architecture :
– optimiser la représentation de la tâche de l'AFFG,
● tout d'abord pour la vitesse d'exécution,
candidates simultanément
● analyse et optimisation des autres flots de données et de
contrôles
Déplacement d'op. dans l'AFFG
● Relaxed Operation Motion (ROM)
– déplacement d'opérations relâché
– accomplit ses objectifs indirectement
– spécialisé dans le domaine de l'embarqué
● contraintes de préservation de l'ordonnancement des E/S
● comportement prédictible
Déplacement d'op. dans l'AFFG
● Exemple de Knoop :
– a, b, c : variables internes : initialisées à l'étape S1
– x, y, z : sorties : fixées à leurs états respectifs pour préserver les
traces des E/S avant et après l'optimisation
– But : éliminer les réévaluations redondantes et inutiles de
l’opération a+b
– On insiste sur les nœuds S8 et S9, plus coûteux que leur voisins
– On essaiera de réallouer l'addition vers d'autres nœuds moins
coûteux
Déplacement d'op. dans l'AFFG
● Exemple de Knoop S1
S2 y = a+b
a=c
x = a+b
S3
S6
Boucle
réactive
S4 y = a+b S5 S7 y = a+b
z = a+b
S8 S9 x = a+b
a=c
S10
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût
– 4 étapes principales
– a) Optimisation des flots de données et de contrôle
● séquence d'étapes qui optimisent le FFG (ou l'AFFG)
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût
– 4 étapes principales
– b) Progression inverse
● étape d'optimisation principale : réallocation de code d'un ou
est linéaire (O(n)) car la ROM sera dominée par l'étape b.i.
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût : résultat après l'ajout des op. mortes
S7:
_T30 = a+b ;
y = T30 ;
_T30 = a+b ;
Étape d'optimisation Ajout des op. mortes
_T29 = c+b ;
_T30 = a+b ;
goto S8 ;
S8:
_T30 = a+b ; S8: S9:
z = _T30 ; _T30 = a+b ; _T30 = a+b ;
a=c; z = _T30 ; x = _T30 ;
goto S9 ; a=c; _T30 = a+b ;
_T30 = a+b ; a = c;
S9: _T29 = c+b ; _T29 = c+b ;
_T30 = a+b ; _T30 = a+b ; _T30 = a+b ;
x = _T30 ; goto S9 ; a=c;
goto S10 ; goto S10 ;
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût : résultat après l'ajout des op. mortes
S7:
_T30 = a+b ;
y = T30 ;
_T30 = a+b ;
Étape d'optimisation Ajout des op. mortes
_T29 = c+b ;
_T30 = a+b ;
goto S8 ;
S8:
_T30 = a+b ; S8: S9:
z = _T30 ; _T30 = a+b ; _T30 = a+b ;
a=c; z = _T30 ; x = _T30 ;
goto S9 ; a=c; _T30 = a+b ;
_T30 = a+b ; a = c;
S9: _T29 = c+b ; _T29 = c+b ;
_T30 = a+b ; _T30 = a+b ; _T30 = a+b ;
x = _T30 ; goto S9 ; a=c;
goto S10 ; goto S10 ;
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût : résultat après l'ajout des op. mortes
S8: S9:
_T30 = a+b ; _T30 = a+b ;
z = _T30 ; x = _T30 ;
a=c; _T30 = a+b ;
_T30 = a+b ; a = c;
_T29 = c+b ; _T29 = c+b ;
_T30 = a+b ; _T30 = a+b ;
goto S9 ; a=c;
goto S10 ;
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût : résultat après l'ajout des op. mortes
S8: S9:
_T30 = a+b ; _T30 = a+b ;
z = _T30 ; x = _T30 ;
a=c; _T30 = a+b ;
_T30 = a+b ; a = c;
_T29 = c+b ; _T29 = c+b ;
_T30 = a+b ; _T30 = a+b ;
goto S9 ; a=c;
goto S10 ;
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût : résultat après l'ajout des op. mortes
S8: S9:
z = _T30 ; x = _T30 ;
a=c; a = c;
_T30 = a+b ; _T30 = a+b ;
goto S9 ; goto S10 ;
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût : résultat après l'ajout des op. mortes
_T30 = a+b ;
...
S8: S9:
z = _T30 ; x = _T30 ;
a=c; a = c;
_T30 = c+b ; _T30 = c+b ;
goto S9 ; goto S10 ;
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût : résultat après l'ajout des op. mortes
S1:
_T31 = a+b ;
H = _T31 ;
_T29 = c+b ;
...
S8: S9:
z = _T30 ; x = _T30 ;
a=c; a = c;
_T30 = a+b ; _T30 = a+b ;
goto S9 ; goto S10 ;
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût : résultat après l'ajout des op. mortes
S1:
_T31 = a+b ;
H = _T31 ;
_T29 = c+b ;
...
S8: S9:
z = _T30 ; x = _T30 ;
a=c; a = c;
_T30 = a+b ; _T30 = a+b ;
goto S9 ; goto S10 ;
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût : résultat après l'ajout des op. mortes
S1:
_T31 = a+b ;
H = _T31 ;
_T29 = c+b ;
...
S8: S9:
z=H; x=H;
H = _T29 ; goto S10 ;
goto S9 ;
Déplacement d'op. dans l'AFFG
● ROM guidée par le coût
– Résulat final
● seulement deux opérations « a+b » et « b+c »
● tous les autres calculs peuvent s'y référer par des copies et
des assignations
● exemple : H
Déplacement d'op. dans l'AFFG
● Estimation de coût
– Le nombre de fois qu'une partie du programme est exécuté peut
être déterminé dès que la probabilité de chaque branche est
connue
– ce nombre peut être calculé par résolution d'un système de n
équations linéaires, où n est le nombre de blocs (ou par analogie
le nombre de nœuds de l'(A)FFG)
– Généralisation de la prédiction de branchement
– Utilisation d'une approche similaire aux chaînes de Markov, mais
basée sur les réseaux bayésiens
Déplacement d'op. dans l'AFFG
● Réseau bayésien (Bayesian Belief Network)
– Un réseau bayésien est un graphe acyclique direct composé de
noeuds chacun associés avec une table de probabilité du noeud
(NPT : Node Probability Table).
– Les noeuds représentent des variables discrètes aléatoires, alors
que les arcs connectant ces noeuds représentent les influences
causales
Déplacement d'op. dans l'AFFG
● Réseau bayésien
– L'avantage d'un RB est qu'il autorise la capture :
● Des probabilités subjectives basées sur l'expérience ou la la
connaissance de l'utilisateur
● Des probabilités basées sur les données statistiques dans un
cadre unifié
– Exemple de RB : où organiser une réception
Invités Météo
Réception
Déplacement d'op. dans l'AFFG
● Réseau bayésien
– 3 nœuds de décision
● Invités qui a pour valeurs (beaucoup, peu)
Entrées
utilisateur
Profiling FFG
FFG
attribué
Moteur
d'inférence
ROM
Autres techniques d'optimisation
● Techniques d'optimisation guidées par des contraintes
– La plupart des techniques d'optimisation
● sont orientées contrôle,
● on sait où il s'arrête