Synthèse Haut Niveau de Circuits Présenté par: Betânia STEFFEN ABDALLAH GONÇALVES Articles: Scheduling Algorithms For High-Level Synthesis Using Global Code Motions to Improve the Quality of Results for High-Level synthesis
Synthèse Haut Niveau de Circuits Plan Scheduling Algorithms For High-Level Synthesis Introduction Ordonnancemment Classification des Algorithmes d’ordonnancement Considération Importantes Future de la Synthèse Haut Niveau Using Global Code Motions to Improve the Quality of Results for High-Level synthesis Spark Mouvements de Code L’Algorithme d’ordonnancement Résultats Experimentaux Conclusion Critique Synthèse Haut Niveau de Circuits
Scheduling Algorithms For High-Level Sysnthesis Auteurs Sriram Govindarajan
“Design” des Systèmes Digitaux Introduction “Design” des Systèmes Digitaux Niveau transistor Ou Niveau Logique Réduire la Complexité Niveau abstract: Synthèse Haut Niveau Synthèse Haut Niveau de Circuits
Qu’est-ce “Synthèse Haut Niveau“? Introduction Qu’est-ce “Synthèse Haut Niveau“? Description Comportamental Description Structural Description Structural Compilation Partage S Allocation Génération du Contrôle Chemin de Données Ordonnancement Contrôlleur Synthèse Haut Niveau de Circuits
Representation Intermediaire Ordonnancement “L’ordonnancement est une tâche important dans la synthèse haut niveau parce qu’il va impacter l’équilibre entre design et performance" Representation Intermediaire Etats et Pas de Contrôle Modèle FSMD Diviser Synthétiser Mapping Temporel FSMD: Finite State Machine with Data-Path Synthèse Haut Niveau de Circuits
Synthèse Haut Niveau de Circuits Ordonnancement Synthèse Haut Niveau de Circuits
Classification des Algorithmes d’ordonnancement Synthèse Haut Niveau de Circuits
Classification des Algorithmes d’ordonnancement Les Algorithmes Basiques Synthèse Haut Niveau de Circuits
Classification des Algorithmes d’ordonnancement Ordonnancement avec des Contraintes de Temps Systèmes en temps réels minimiser coût du hardware Programation Mathematique (Integer Linear Programming) Minimiser les FUs Garantir l’éxecution de l’opération entre les limites ASAP et ALAP et Garantir la dépendence de données Ek ASAP et Lk ALAP Nk nombre de FUs Ck coût de chaque FU xi,j =1 si l’opération i se passe dans le pas de contrôle j, sinon xi,j =0 p et q sont des pas de contrôle des opérations xi et xj Synthèse Haut Niveau de Circuits
Classification des Algorithmes d’ordonnancement Ordonnancement avec des Contraintes de Temps Heuristiques Constructive (Force directed Scheduling) Réduire le nombre de FUs utilisés Prob = 1/ Mobilité Force α Prob + Force successeur + Force prédécesseur Synthèse Haut Niveau de Circuits
Classification des Algorithmes d’ordonnancement Ordonnancement avec des Contraintes de Temps Iterative Refinement (Réordonnancement Iteratif) Les mouvements possibles sont determinés Une position aléatoire est pris pour chaque opération Les coûts sont calculés est les opérations avec les coût plus petits restent dans la position Pour les autres opérations, la procédure se repète La qualité de la solution dépend de la solution inicial Synthèse Haut Niveau de Circuits
Classification des Algorithmes d’ordonnancement Ordonnancement avec des Contraintes de Resources Contrainte de design surface de silicium List-Based Scheduling ASAP + contraintes de resources Liste de priorité dynamique ↑mobilité ↓priorité Liste des noeuds qui ont ses prédécesseurs déjà ordonnancés Static List Scheduling GCS (clé primaire) et LCS (clé secondaire) ASAP et ALAP Liste de priorité statique GCS: greatest control step LCS: least control step Synthèse Haut Niveau de Circuits
Classification des Algorithmes d’ordonnancement Miscellaneous Simulated Annealing Table de 2 dimensions : Les Pas de Contrôle Versus FU (Unités Fonctionnels) 1 opération 1 pas de contrôle et 1 FU Modification iteratif de la table Coût du déplacement de l’operation Path-Based Scheduling Minimisation du nombre de Pas de Contrôle Les chemins d’éxecution sont ordonnancés indépendamment Les ordonnancements de chaque chemin sont combinés pour générer l’ordonnancement final Synthèse Haut Niveau de Circuits
Considérations Importantes Unités Fonctionnels (FU) avec différents delays Cycle d’horloge déterminé par l’unité la plus lente Unité Multi Fonctionnels Il y a des unités foctionnels qui peuvent éxecuter plusiers opérations Description Comportammental Constructions conditionnels: l’ordonnanceur doit être capable de partager les resources entre les opérations qui s’éxcluent. Boucles: peuvent contenir parallelism entre les iterations Synthèse Haut Niveau de Circuits
Future de la Synthèse Haut-Niveau Problèmes à Solutionner L’ordonnancement Pipeliné Coût du Contrôleur (il faut le considerer) Contraints de Surface (prendre en compte) Réalisme (constructions spéciales de langage) Synthèse Haut Niveau de Circuits
Auteurs: Sumit Gupta Nick Savoiu Nikil Dutt Rajesh Gupta Alex Nicolau Using Global Code Motions to Improve the Quality of Results for High-Level Synthesis Auteurs: Sumit Gupta Nick Savoiu Nikil Dutt Rajesh Gupta Alex Nicolau
Synthèse Haut Niveau de Circuits Introduction Nécessités Trasformations de haut niveau pour optimiser la synthèse indépendamment du flux de contrôle de la description d’entrée. Propositions de Solution Algorithmes d’ordonnancement qui utilisent des techniques de mouvement de code Extraire parallelisme Spéculation Augmenter l’utilisation des resources Synthèse Haut Niveau de Circuits
Spark: Framework de Synthèse de Haut Niveau Optimisation de la qualité de la synthèse haut niveau delays et surface Synthèse Haut Niveau de Circuits
Spark – Description du Modèle ANSI-C: Description Comportamental Pas de pointers Pas de gotos Pas de fonctions recursifs Répresentation Intermédiaire: HTG, CFG et DFG HTG: mantient les constructions de contrôle et de boucle Exécute les pasages d’analyse de dépendence de données Fait l’ordonnancement du design Mouvement de Code Héuristiques d’ordonnancement Modification des transformations de compilation de parallelisme Fait la liaison des resources Réalise la Synthèse de Contrôle VHDL: Evaluation des optimisations Génère une sortie RTL (register transfer level) VHDL Synthèse Haut Niveau de Circuits
Spark – Description du Modèle Les Réprésentations Graphiques Code C HTG HTG avec CFG et DFG CFG: Graphique de Flux de Contrôle DFG: Graphique de Flux de Données Synthèse Haut Niveau de Circuits
Synthèse Haut Niveau de Circuits Mouvements de Code Resource idle = pas d’opération à exécuter Spéculation Respect des dépendences de données Exécuter une opération précédente ou suivante Synthèse Haut Niveau de Circuits
Mouvements de Code Spéculation: Chaîne Sequenciel d’une comparaison suivi d’une adition Parallelism de la comparaison et de l’addition Synthèse Haut Niveau de Circuits
Mouvements de Code Spéculation Inverse: Exemple Spéculation Inverse de b Spéculation de d Synthèse Haut Niveau de Circuits
Synthèse Haut Niveau de Circuits Mouvements de Code Exécution de condition au plus tôt: L’exécution du teste de condition au plus tôt va résoudre la dépendence de contrôle dans les branches IF-HTG. Opérations disponibles plus tôt pour l’ordonnancement. Design original C est scheduled au plus tôt. Les opérations avant le If sont spéculé inversement. Synthèse Haut Niveau de Circuits
Mouvements de Code Spéculation Conditionel: x et y sont spéculés. Exemple x et y sont spéculés. Les ressources dans le branche conditionel sont idle. z est spéculé conditionelement Synthèse Haut Niveau de Circuits
Synthèse Haut Niveau de Circuits Mouvement de Code Trailblazing: Technique hiérarchique de mouvement de code op se déplace de BB2 à BB1 sans passer pour les blocs intermédiaires du bloc IF Synthèse Haut Niveau de Circuits
Mouvement de Code Changement Dynamique de Nom Elimination de la dépendence de données DFG après scheduling Code C DFG (d) Maintenace du flux de dependence de données (e) Maitenance aussi du non-flux de dependence de données Importance du non-flux de données: Manutention du nom original des variables pour permettre la visualisation des effets des transformations Synthèse Haut Niveau de Circuits
L’Algorithme d’ordonnancement Priority-Based Global List Scheduling Heuristic BUT: minimiser le plus long delay Priorité α taille de la chaine de dépéndence de données Priorité = 0 opérations qui produisent des sorties Priorité = 1 opérations dont les résultats sont urilisés par les opérations de sorties Etc... Priorité maximal (IF-HTG) teste de condition Synthèse Haut Niveau de Circuits
L’Algorithme d’ordonnancement Ordonnancement des Boucles Spark peut ordonnancer tous les types de boucles Fin du boucle Condition pas satisfaite Condition satisfaite Premier état du boucle Premier état après le boucle Synthèse Haut Niveau de Circuits
L’Algorithme d’ordonnancement Heuristique pour l’application de la Spéculation Conditionnel La Spéculation Conditionnel: Peut augmenter la taille de l’ordonnancement Peut augmenter complexité à cause des duplications des opérations Synthèse Haut Niveau de Circuits
Résultats Expérimentaux OBS: Le multiplicateur (*) s’exécute en 2 cycles Le diviseur (/) s’exécute en 5 cycles Tous les autres opérations s’exécutent en 1 cycle Synthèse Haut Niveau de Circuits
Résultats Expérimentaux Effets dans la Performance et dans la Taille du Contrôlleur Spéculation Donne des meilleurs résultats Synthèse Haut Niveau de Circuits
Résultats Expérimentaux Effets dans la Surface et dans le Période de l’Horloge Delay: moitié avec mouvement de code Taille du chemin: constant Période de clock n’augmente pas Surface: augmenté par les mouvements de code Synthèse Haut Niveau de Circuits
Synthèse Haut Niveau de Circuits Conclusion Mouvements de code importants pour minimiser les effets du choix de flux de controle e style de programmation Les mouvements de code Il réduit le delays Mais... Augmente la surface!!! Spark prendre en compte de contraintes de delay e surface Contraintes de surface: pas de solution dans le premier article Pas d’améllioration en comparaison avec des autres travaux Synthèse Haut Niveau de Circuits
Synthèse Haut Niveau de Circuits Questions ? Synthèse Haut Niveau de Circuits