Précédent : Parallélisme d'instructions Remonter :
Parallélisme d'instructions Suivant :
Allocation de registres et déroulage
Participants : Christine Eisenbeis, Antoine Sawaya
Cette partie concerne une approche par programmation linéaire en nombres entiers (PLNE) de l'optimisation des boucles sous contraintes de registres. Une des propriétés importantes de l'allocation des registres dans les boucles sans branchement est qu'il faut et il suffit de contrôler le nombre R de variables en vie à chaque instant pour assurer a posteriori l'allocation de ces variables sur R registres. Ceci se fait au prix d'un dépliage de la boucle (paragraphe 3.2.2 ).
Notre formulation prend en compte les contraintes de dépendances, les problèmes de repliage de la boucle et la contrainte du nombre de registres. Elle permet aussi prendre en compte des contraintes de ressources complexes, comme des tables de réservation quelconques [9, 4]. Cette année, nous avons mis en évidence les avantages de cette approche par rapport à une autre approche par PLNE, basée seulement sur le nombre d'itérations de la durée de vie des variables (contraintes de buffers ) [7].
A. Sawaya a implémenté un logiciel fondé sur cette approche, qui recherche les paramètres optimaux (latence, débit) pour une configuration architecturale donnée (nombre de registres, tables de réservation). Ce logiciel sera couplé au restructureur de langage à haut niveau (paragraphe 3.2.4 ) et intégré à l'outil SALTO de l'IRISA (paragraphe 4.2.1 ).