Thèse soutenue

Contribution a la production automatique de selecteurs d'instructions optimisants fondes sur la reecriture d'arbres

FR  |  
EN
Auteur / Autrice : Philippe Canalda
Direction : Pierre Boullier
Type : Thèse de doctorat
Discipline(s) : Sciences appliquées
Date : Soutenance en 1997
Etablissement(s) : Orléans

Résumé

FR

La production automatique de generateur de code optimisant (gdco) est un des problemes majeurs dans les plates-formes de r&d des compilateurs modernes en raison de l'evolution rapide des processeurs et de l'introduction de parallelisme a grain fin entre instructions. Le systeme pagode produit un gdco a partir d'une specification appelee deriveur, du jeu d'instructions de mono-processeur cisc ou risc. Ce gdco a pour fonction de produire du code machine de bas niveau (lir) a partir d'un langage intermediaire (pmir) produit par le front-end du compilateur. Il se compose typiquement de trois taches independantes qui sont le selecteur d'instruction (si), l'allocateur de registres et le reordonnanceur de code. Nous nous sommes principalement interesses a la partie generation de si optimisant (sio) et efficace, a partir de regles de reecritures (r = g d, ou g , pmir et d , lir) issues de l'inversion des types de donnees abstraites du deriveur. A chaque type de regle d'un systeme hierarchique (i. E. Mode d'acces standard ou d'interfacage, instruction, etc. ), nous associons plusieurs couts (i. E. Nombre de cycles d'horloge, quantite d'espace memoire consomme,). Par application iteree de ces regles, nous constituons une derivation qui reecrit un terme t de profondeur finie en une sequence d'instructions assembleur. Actuellement un si est parfois efficace. Il ne calcule qu'une seule derivation. Il ne peut produire de solution optimale que pour une architecture sequentielle. Il n'existe donc pas de sio efficace. Notre but a ete d'etudier une approche rigoureuse a la production automatique de sio efficace, de la formaliser, de l'implanter dans pagode, d'integrer cette realisation a la plate-forme de compilation cosy dans le cadre du projet esprit compare, et enfin de valider l'ensemble. Nous avons d'abord re-formule des meta-regles de reecriture, qui preservent la semantique de t et qui sont independantes de toute instance de la specification du deriveur. Cela nous a revele qu'un parcours ascendant de t peut suffire a calculer toutes les derivations succes conduisant a produire du code assembleur correct. Nous avons concretise cela d'abord en realisant une fonction d'inversion ##1 de deriveur a (qui elabore, durant la phase statique de generation du gdco, un automate avec contraintes a(a) qui calcule en une passe ascendante toutes les derivations succes de t) et en realisant un sio (qui est fonde sur un algorithme de programmation dynamique guide par le a(a), par une analyse dynamique de cout et un critere de terminaison) qui produit, de maniere operationnelle, un ensemble de sequences de code correctes pour t. Nous avons ensuite formalise le systeme de reecriture srat une-passe correspondant. Nous avons identifie la propriete pup sur le srat a partir de laquelle nous avons deduit et justifie l'implantation du sio efficace recherche.