Pipeline logiciel
Institution:
Versailles-St Quentin en YvelinesDisciplines:
Directors:
Abstract EN:
Pas de résumé disponible.
Abstract FR:
Dans cette thèse nous nous intéressons à l'exploitation du parallélisme à grain fin, dit aussi parallélisme d'instructions dans les processeurs vliw et super scalaires. Plus particulièrement, nous traitons le problème de l'optimisation des boucles par pipeline logiciel. Ces portions de code répétitives dominent largement le temps d'exécution des programmes scientifiques, d'où l'intérêt crucial de maîtriser leur optimisation dans la course actuelle à la performance. Dans un premier temps, nous étudions formellement le problème du découplage des contraintes de ressources et des contraintes de dépendances. Le but en est de ramener le problème d'ordonnancement des boucles à un problème d'ordonnancement classique où les méthodes d'optimisation sont mieux maîtrisées. Nous pressentons un cadre commun qui nous permet de comparer notre approche desp à deux autres techniques procédant suivant la même philosophie. Nous concluons cette partie en proposant une amélioration à l'ensemble de ces techniques, ce qui a pu être valide expérimentalement. Ces algorithmes sont développés et disponibles dans une boite à outils pilo. Cependant, le parallélisme d'instructions accroît la pression sur les registres du processeur, ce qui explique l'importance de prendre en compte cette contrainte supplémentaire, afin d'éviter une dégradation du code produit. Cette problématique nous a conduit à proposer une formulation par programmation linéaire en variables bivalentes qui permet de définir un modèle global, dans lequel, nous pouvons contrôler le nombre exact de registres requis pendant la phase d'ordonnancement. Nos expériences nous ont permis de valider notre approche et de situer les temps de résolution des programmes linéaires génèrés. L'enjeu est ici de produire un code optimal qui puisse intégrer des librairies spécialisées, être micro-programme dans des processeurs embarqués, ou servir comme base de comparaison pour les différentes heuristiques.