Optimisation pour la Conception de Systèmes Embarqués Sélection d’architecture et ordonnancement pour flots de données synchrones Automne 2005 Jean-Marc Delosme
Vue d’ensemble – Optimisation pour la Conception des Systèmes Embarqués Optimisation des circuits VLSI Coût : surface Performances : délai Sélection de processeurs et ordonnancement de traitements périodiques sous contrainte de débit Partitionnement matériel-logiciel
Problématique pour l’implantation du logiciel Choix d’architecture pour l’exécution Coût de production minimal Contraintes de performances Logiciel sur architecture multiprocesseur Affectation et ordonnancement Problème difficile d’optimisation Flots de données synchrones Politique d’ordonnancement statique
Plan pour la présentation des outils Les algorithmes génétiques Les flots de données synchrones (SDF) Politique d’ordonnancement Graphe de communication inter-processeurs (IPC) Calcul de débit (performance) Les resynchronisations
Plan pour l’application des outils Modélisation des individus Opérations sur les gènes Population initiale Sélections Mutations et Croisements Décodage du génotype Evaluation des performances et optimisations Critère d’arrêt Exemple de résultats
Les algorithmes génétiques Individu Génotype Phénotype Population Fonction d’adaptation Opérations Décodage des solutions Evaluation des solutions Sélection des individus Croisement et Mutation Génération Convergence
SDF : Synchronous Data Flow Flots de données Multigraphe orienté Sommets (acteurs) = Traitements Arcs = FIFO Jetons
SDF : Synchronous Data Flow Flots de données synchrones Restrictions sur l’exécution des acteurs Productions et consommations connues Jetons initiaux Présence de données initiales en mémoire Dépendances de données entre itérations d’exécution Arcs = tampons mémoire Exécution répétitive Arrivée continue de données dans les tampons
SDF : Synchronous Data Flow Recherche d’un ordonnancement des tâches adapté à l’exécution répétitive
HSDFG et APEG HSDFG : SDF homogène Adaptés à l’ordonnancement sur plusieurs processeurs Les HSDFG sont notre base de travail Consommation et production de jeton = 1 Conversion d’un SDF en HSDFG APEG : graphe de précédence (acyclique) Suppression des arcs du HSDFG qui ont des jetons initiaux Simple à construire Utilisé pour donner un ordonnancement de tâches sur plusieurs processeurs
Optimisation de l’exécution Ordonnancement Resynchronisation
Politique d’ordonnancement But Affecter les tâches aux processeurs (parallélisme des tâches) Tenir compte des dépendances de données Trois étapes pour la planification de l’exécution des SDF (parallélisme des tâches) (1) Affectation des acteurs (2) Ordonnancement des acteurs : ordre des acteurs sur chaque processeur (3) Choix du moment d’exécution de chaque acteur Respect des contraintes de précédence (entre processeurs)
Politique d’ordonnancement Cas étudié : auto-synchronisé (self-timed) (1) et (2) à la compilation, (3) à l’exécution On ne connaît qu’une estimation des durées des tâches Ordonnancement entièrement statique impossible Ajout d’acteurs dédiés à la communication inter-processeur Robuste vis-à-vis des changements de durées Modélisable par un SDF homogène : graphe IPC (graphe de Communication Inter-Processeurs)
Graphe IPC Exemple
Graphe IPC Synchronisation
Graphe IPC Synchronisation
Graphe IPC Ordre d’exécution
Graphe IPC Ordre d’exécution
Graphe IPC Ordre d’exécution
Calcul de performance 8 6 4 3 A s2 r2 B s1 r1 C : (8+6+4)/2 = 9 A s2 r1 C : (8+4)/1 = 12 r2 B D : (6+3)/2 = 4.5 r2 B s1 D : (6+3)/1 = 9 8 6 4 3
Resynchronisation Objectif: une exécution plus rapide du HSDFG Méthode: une transformation du HSDFG Resynchronisation (retiming) Idée issue de ce qui se fait sur les circuits électroniques Redistribution des jetons initiaux sur les arcs sans modifier les fonctionnalités du système initial Des algorithmes existent pour trouver une « bonne » configuration des jetons Production de distributions de jetons par algorithme génétique
Exemple de resynchronisation
Plan pour l’application des outils Modélisation des individus Opérations sur les gènes Population initiale Sélections Croisements et Mutations Décodage du génotype Evaluation des performances Arrêt de l’algorithme Exemple de résultats
Modélisation des individus Trois éléments à modéliser Affectations sur les processeurs Resynchronisation Ordonnancement des tâches Trois gènes Affectation : de taille n, associe un numéro de processeur à un acteur Resynchronisation d : de taille m Ordonnancement : de taille n L’ordre du gène donne l’ordre d’exécution Associé au gène d’affectation, il donne l’ordonnancement sur chaque processeur
Opérations sur les gènes Population initiale Une centaine d’individus (au minimum) Générer des gènes ± aléatoirement Affectation Aléatoire Resynchronisation Générée à partir de d = d0 + Hv ≥ 0 Mutations successives Ordonnancement Aléatoire à partir de la resynchronisation (APEG)
Opérations sur les gènes Sélections Mutations Croisements X % des meilleurs se reproduisent entre eux Conservation Les meilleurs des nouveaux et anciens individus
Opérations sur les gènes Gène d’affectation Croisement Mutation
Opérations sur les gènes Gène de resynchronisation Opérateurs basés sur un déplacement de jetons Deux possibilités Hors d’une composante fortement connexe (pas de cycle) La position des jetons peut être quelconque Une composante fortement connexe peut être exécutée comme si elle était un simple acteur Il y a toujours des acteurs d’entrée et de sortie
Opérations sur les gènes Dans une composante fortement connexe Nombre de jetons par cycle est constant d’une resynchronisation à l’autre Toujours possible de déplacer un jeton n’importe où sur un cycle Croisement Exemples de croisement dans une composante fortement connexe Mutation Début : ajout d’un jeton Choix des arcs ayant subit le moins de mouvements
Exemple plus complexe
Exemple plus complexe d0 c1 c2 c3 d1 1
Exemple plus complexe d0 c1 c2 c3 d1 1
Exemple plus complexe d0 c1 c2 c3 d1 1
Exemple plus complexe d0 c1 c2 c3 d1 1 2
Exemple plus complexe d0 c1 c2 c3 d1 1 2
Opérations sur les gènes Gène d’ordonnancement Croisement Uniquement si les resynchronisations sont identiques
Opérations sur les gènes Mutation d’ordonnancements
Obtention d’un ordonnancement Opération importante Croisements de resynchronisations Mutation de resynchronisations Individu Population initiale Principe Prendre successivement les 1ers acteurs exécutables dans l’APEG Avec ou sans ordonnancement de référence But : rester le plus proche possible de l’ordonnancement de référence
Décodage du génotype Affectations Suivant les gènes d’affectation et d’ordonnancement Placement des jetons Phénotype = Graphe IPC Permet de représenter la politique d’ordonnancement auto-synchronisée Support de calcul du MCM Construction difficile à automatiser Minimiser le nombre d’acteurs de communications Arcs d’ordonnancement sur les processeurs Positionnement des jetons
Evaluation des performances Performance = calcul du MCM sur le graphe IPC de l’individu Le calcul n’est fait qu’une seule fois par individu Calcul très coûteux ! Algorithme de Howard
Complexité des algorithmes Gène d’affectation Croisement O(n) Mutation O(n) Gène de resynchronisation Croisement O(Δ mC) Δ = nombre total de jetons Mutation O(Δ m²C) Gène d’ordonnancement Mutation O(m + n) Obtention d’un ordonnancement O(n) Calcul du graphe IPC O(m²d²) Howard O(n²m(tmax- tmin)/ε) en moyenne O(m log(n))
Critère d’arrêt Individus comparés uniquement sur le coût et la performance Pas comparés directement sur leurs gènes Meilleur individu amélioré d’une génération à la suivante Conservé s’il n’y a pas d’amélioration Nombre de générations avant arrêt Paramètre réglable Arrêt de l’algorithme Si conservation du meilleur individu pendant N générations Plus N est grand plus l’algorithme a de chances de trouver un meilleur minimum local (grâce à la mutation) Autres critères d’arrêt testés moins efficaces
Exemple de résultats Filtre
Exemple de résultats Coût Période
Exemple de résultats Graphe IPC
Conclusion et perspectives A court terme Automatisation de la construction du graphe IPC A plus long terme Calcul du MCM grâce aux particularités du graphe IPC Ordonnancement dynamique Évaluation de performance Modélisation Conclusion