Compilateurs à cibles multiples et processeurs configurables

Slides:



Advertisements
Présentations similaires
Tests et Validation du logiciel
Advertisements

Architecture de machines Le microprocesseur
Introduction: Concepts de la programmation
Spécification et qualité du logiciel
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Chap 1 Grammaires et dérivations.
INTRODUCTION.
Introduction : Compilation et Traduction
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Principes de programmation (suite)
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Introduction : Compilation et Traduction
Algorithmes et résolution de problèmes FGE
Introduction au Génie Logiciel
Initiation à la conception de systèmes d'information
Réalisée par :Samira RAHALI
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
IFT451 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
Cours #8 Flot de conception d’un circuit numérique
Chap 4 Les bases de données et le modèle relationnel
Algorithmique et Programmation
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Systèmes Superscalaires et VLIW
Semaine #1 INF130 par Frédérick Henri.
Semaine #1 INF135 par Frédérick Henri.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
IFT Complexité et NP-complétude
Présentation du mémoire
1 CSI3525: Concepts des Languages de Programmation Notes # 3: Description Syntaxique des Languages.
CSI3525: Concepts des Languages de Programmation
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 3 Syntaxe et sémantique.
Partie II Sémantique.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Procédures et fonctions
Paradigmes des Langages de Programmation
Paradigmes des Langages de Programmation
INTRODUCTION.
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Processeurs sous-RISC et application aux réseaux Quand.
Supports de formation au SQ Unifié
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Langages de description architecturale.
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
INF8505: processeurs embarqués configurables
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Encodage du jeu d’instructions.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
L’architecture du processeur Xtensa de Tensilica
© Petko ValtchevUniversité de Montréal Février IFT 2251 Génie Logiciel Conception Hiver 2002 Petko Valtchev.
Le langage Racket (Lisp)
Programmation Système et Réseau
Extrait du Referentiel BTS Systèmes numériques Options : Informatique et réseaux et Électronique et communication S1 à S9 Définition des savoirs et savoir-faire.
Initiation à la conception des systèmes d'informations
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
Présentation AICHA REVEL INGENIEUR D’ÉTUDE STERIA DEPARTEMENT TRD
Introduction et Généralités sur l’Algorithmique
Optimisation pour la Conception de Systèmes Embarqués
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Flot de conception de.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel ASIP Design and Synthesis for Non Linear Filtering in.
Patricia Renault UPMC 2005/2006
Introduction à la compilation
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
INTRODUCTION AUX BASES DE DONNEES
Introduction au langage C
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
Transcription de la présentation:

Compilateurs à cibles multiples et processeurs configurables INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Pourquoi parler de compilateurs en INF8505? Concevoir un processeur, c’est bien. Cependant, à moins de vouloir programmer en assembleur, un compilateur est essentiel. Un compilateur permet de décupler l’efficacité des utilisateurs du processeur en augmentant grandement l’abstraction dans le développement d’applications pour le processeur, via l’utilisation de langages de haut niveau. Concevoir un compilateur pour un processeur fixe est un problème difficile. Concevoir un compilateur pour un processeur configurable est un problème plus difficile. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Survol de la présentation Introduction: compilateurs et compilation, structure d’un compilateur, besoins pour compilateurs à cibles multiples. Partie frontale: analyse lexicale, syntaxique et sémantique et production de code intermédiaire. « Optimisation » du code Partie finale: génération de code machine: sélection de code, allocation de registres, ordonnancement des instructions, autres techniques. Compilation à cibles multiples: gcc, lcc, CoSy, MIMOLA/RECORD, PEAS-III, LISA/CoSy Références INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Compilateurs et compilation Un compilateur traduit du code écrit dans un langage de programmation en langage d’assemblage spécifique à un processeur. Les compilateurs permettent l’utilisation de langages de haut niveau, ce qui augmente considérablement la productivité des programmeurs. Un compilateur a aussi une fonction de vérification de base du programme source, confirmant que les règles du langage sont respectées. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Structure d’un compilateur (1) Le processus de compilation peut être divisé en trois étapes principales. étape rôle partie frontale (frontend) analyse du programme source en ses constituants « optimisation » amélioration du programme partie finale (backend) synthèse du programme pour le processeur cible INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Structure d’un compilateur (2) Les étapes peuvent être divisées en sous-étapes: INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Compilateurs à cibles multiples (1) Pour la partie finale, le compilateur doit avoir un modèle du processeur pour lequel le code est généré. Le modèle inclut toutes les ressources pertinentes du processeur: le jeu d’instructions; les blocs de registres; les contraintes d’ordonnancement. Un compilateur à cible unique intègre ce modèle. Un compilateur à cibles multiples doit pouvoir lire le modèle du processeur désiré. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007.

Compilateurs à cibles multiples (2) Il existe plusieurs niveaux de ciblage. À un extrême, on réécrit le compilateur au complet. À l’autre, on fournit un modèle complet du processeur à cibler. Une forme intermédiaire serait un compilateur paramétrable pour lequel le cœur du processeur est fixe mais le nombre de registres et certaines instructions peuvent être choisis (e.g. Xtensa de Tensilica). INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Flot de conception: la place du compilateur (1) INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007.

Flot de conception: la place du compilateur (2) Sept niveaux dans l’exploration architecturale d’un SoC [Leupers et Marwedel, 2001]: Choix d’algorithme Options d’implémentation de l’algorithme Assignation de différentes portions de l’algorithmes à des processus et des processeurs, et partitionnement matériel/logiciel Choix des périphériques Organisation de la mémoire Jeu d’instructions Microarchitecture INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Rappel: jeu d’instructions vs microarchitecture vs réalisation Architecture du jeu d’instructions (Instruction Set Architecture – ISA) Le contrat entre le programmeur et le compilateur. Définit l’apparence fonctionnelle du processeur Opérations, types de données, modes d’adressage, registres visibles, etc. Implémentation ou microarchitecture Point de vue du concepteur du processeur Circuits logiques qui implémentent l’architecture Pipelines, unités fonctionnelles, registres physiques Réalisation Point de vue du concepteur de circuit ou de la puce Réalisation physique des circuits logiques Portes, cellules, transistors, fils, etc. Question: Comment un changement à la microarchitecture peut-il avoir un impact sur le compilateur? Réponse: Changer la microarchitecture peut changer le coût (énergie, temps) pour exécuter une instruction, donc peut influencer les choix du compilateur. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Rappel: Équation de performance (Instructions exécutées) (CPI) (période d’horloge) Architecture du jeu d’instructions Concepteurs du jeu d’instructions Concepteurs du compilateur Implémentation Concepteurs de la microarchitecture Réalisation Concepteurs de la puce INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Survol de la présentation Introduction: compilateurs et compilation, structure d’un compilateur, besoins pour compilateurs à cibles multiples. Partie frontale: analyse lexicale, syntaxique et sémantique et production de code intermédiaire. « Optimisation » du code Partie finale: génération de code machine: sélection de code, allocation de registres, ordonnancement des instructions, autres techniques. Compilation à cibles multiples: gcc, lcc, CoSy, MIMOLA/RECORD, PEAS-III, LISA/CoSy Références INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale La partie frontale comporte 4 étapes: INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale Analyse lexicale L’analyseur lexical (scanner) accepte en entrée un flux de caractères ASCII. Il forme des groupes significatifs appelés lexèmes et produit une unité lexicale (token) pour chacun. Chaque unité lexicale représente un élément primitif du langage, soit: un mot clé; un nombre littéral; un identificateur; ou, un opérateur. L’analyseur lexical laisse en général tomber les espaces, tabulations et changements de ligne et ignore les commentaires. Exemple de format d’unité lexicale: <nom d’unité lexicale, valeur d’attribut> (pour les identificateurs, la valeur d’attribut réfère à une entrée dans le tableau des symboles). INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale Analyse lexicale – exemple Pour l’énoncé en C suivant: position = initiale + vitesse * 60; L’analyseur lexical produirait la représentation suivante: <id, 1> <=> <id, 2> <+> <id, 3> <*> <const, 60> <;> Avec le tableau des symboles suivant: indice identificateur 1 position 2 initiale 3 vitesse INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale La partie frontale comporte 4 étapes: INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale Analyse syntaxique L’analyseur syntaxique (parser) accepte en entrée un flux d’unités lexicales. Il forme une représentation arborescente pour représenter la structure grammaticale du flot des unités lexicales. L’analyseur syntaxique se base sur les règles d’une grammaire non-contextuelle décrivant le langage de haut niveau utilisé. Cela lui permet de reconnaître les structures permises du langage. Par exemple, pour un sous-ensemble de C avec les symboles terminaux suivants: <id>, <+>, <->, <*>, et les règles habituelles de la préséance des opérateurs, on pourrait avoir la grammaire suivante: <expression> → <expression> <+> <terme> | <expression> <-> <terme> | <terme> <terme> → <terme> <*> <facteur> | <facteur> <facteur> → <id> INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale Analyse syntaxique – exemple Pour l’énoncé en C suivant: position = initiale + vitesse * 60; Et la représentation lexicale suivante: <id, 1> <=> <id, 2> <+> <id, 3> <*> <const, 60> <;> Et la grammaire non contextuelle suivante: <assignation> → <id> <=> <expression> <;> | <id> <;> | <const> <;> <expression> → <expression> <+> <terme> | <expression> <-> <terme> | <terme> <terme> → <terme> <*> <facteur> | <facteur> <facteur> → <id> | <const> On pourrait former l’arbre abstrait suivant: <=> <id, 1> <+> <id, 2> <*> <id, 3> <const, 60> INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale La partie frontale comporte 4 étapes: INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale Analyse sémantique L’analyseur sémantique (semantic analyzer) reçoit l’arbre abstrait et le tableau des symboles. Il vérifie que le programme source est sémantiquement correct selon la définition du langage. Par exemple: les types des opérations sont-ils compatibles? les assignations de valeurs ont-elles pour cibles des jetons valides (e.g. pas une constante ou une fonction)? les branchements (goto) sont-ils vers des étiquettes valides? INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale Analyse sémantique – exemple Pour l’arbre abstrait précédent, supposons que les identificateurs position, initiale et vitesse soient définis avec le type double. L’analyseur sémantique ajouterait alors une indication qu’une conversion de type est nécessaire pour la multiplication. <=> <id, 1> <+> <id, 2> <*> <id, 3> <const, 60> int2float INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale La partie frontale comporte 4 étapes: INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale Génération de code intermédiaire L’arbre abstrait issu de l’analyse sémantique est par définition une représentation intermédiaire du code source initial. La plupart des compilateurs convertissent l’arbre en un pseudocode spécial appelé code à trois adresses: une ‘adresse’ pour la destination; une opération; et, deux ‘adresses’ pour les opérandes. Quatre propriétés du code à trois adresses: toute instruction a au plus un opérateur; la séquence des instructions est importante et préserve le sens du code source original; le compilateur peut créer des identificateurs temporaires; certaines instructions ont moins de trois adresses. Le code à trois adresses facilite l’étape d’optimisation du code. Le code intermédiaire contient aussi les structures de contrôle. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale Génération de code intermédiaire – exemple #1 Pour l’exemple précédent, le code à trois adresses serait: <=> <id, 1> <+> <id, 2> <*> <id, 3> <const, 60> int2float t1 = int2float(60); t2 = id3 * t1; t3 = id2 + t2; id1 = t3; INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale Génération de code intermédiaire – exemple #2 P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie frontale Résumé On constate que la partie frontale dépend principalement du langage de haut niveau choisi. Le processeur cible a peu ou pas d’influence sur la partie frontale. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Survol de la présentation Introduction: compilateurs et compilation, structure d’un compilateur, besoins pour compilateurs à cibles multiples. Partie frontale: analyse lexicale, syntaxique et sémantique et production de code intermédiaire. « Optimisation » du code Partie finale: génération de code machine: sélection de code, allocation de registres, ordonnancement des instructions, autres techniques. Compilation à cibles multiples: gcc, lcc, CoSy, MIMOLA/RECORD, PEAS-III, LISA/CoSy Références INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Optimisation INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

« Optimisation » Optimal: se dit de l’état le plus favorable (Larousse) [selon une ou des métriques données] En compilation, le terme « optimisation » signifie « amélioration du code pour le rendre meilleur ». On peut vouloir améliorer le code par rapport à diverses métriques: le temps d’exécution du programme; la taille du code; ou, l’énergie consommée lors de l’exécution du programme. Il est en général impossible de prétendre que le code obtenu est optimal. Le principe de base: il est possible que le programmeur n’ait pas écrit le code de la meilleure façon! INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Rappel: Équation de performance (Instructions exécutées) (CPI) (période d’horloge) Architecture du jeu d’instructions Concepteurs du jeu d’instructions Concepteurs du compilateur Implémentation Concepteurs de la microarchitecture Réalisation Concepteurs de la puce INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Quelques contraintes pour l’optimisation Le processus d’optimisation doit: produire du code correct qui préserve le comportement du code haut niveau original; doit améliorer la performance de la plupart des programmes; et, s’effectuer dans un temps raisonnable. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Optimisation Analyse de flot À partir du code à trois adresses, il est possible et utile de faire une analyse de flot du code: analyse du flot de contrôle; et, analyse du flot de données. L’analyse du flot de contrôle identifie: les blocs constitutifs du code [un bloc est délimité par un point d’entrée et un point de sortie uniques]; et, les transferts possibles de flot entre les blocs. L’analyse du flot de données identifie les dépendances entre les calculs. L’analyse de flot peut permettre d’améliorer considérablement le code en donnant plus d’information sur celui-ci. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Optimisation Analyse de flot de contrôle – exemple P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Optimisation Analyse de flot de contrôle – question! Énumérer quelques optimisations que le diagramme de flot de contrôle pourrait permettre d’effectuer. Réponse: Identification de code qui ne peut être rejoint et qui peut donc être éliminé. Identification de boucles infinies. Élimination de sauts consécutifs. Réduction du nombre de sauts non conditionnels. etc.? P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Optimisation Analyse de flot de données – exemple INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007.

Optimisation Analyse de flot de données – question Énumérer quelques optimisations que le diagramme de flot de données pourrait permettre d’effectuer. Réponse: Identification de variables qui ont une valeur constante en un point du programme; remplacement de ces variables par la constante. Identification de variables ayant la même valeur. Identification de résultats dont les valeurs ne sont pas utilisées. Etc. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufmann, 2007.

Optimisation – principes Le processus d’optimisation peut se faire en plusieurs passes. Certaines transformations mènent à une amélioration directe. D’autres transformations servent à donner des options d’amélioration lors de passes subséquentes. Il est en général impossible de garantir que le résultat final est optimal (au vrai sens du terme). INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Optimisation – quelques techniques (1) Fonctions incorporées: remplacer un appel de fonction par une copie de celle-ci, pour éliminer les délais dus au changement de contexte. Déroulement de boucle: reproduire le code à l’intérieur d’une boucle. Réduis le nombre d’itérations. Permet de paralléliser la boucle sur plusieurs unités de calcul. Déplacement de code invariable hors d’une boucle. Modification de compteur de boucle, exemple: répéter pour i = i1 à in; j = k * i + c; a[j] = … ; i = i + 1; répéter pour j = k * i1 + c; a[j] = …; j = j + k; Remplacement d’expressions à valeur constante par leur valeur. Remplacement de variables constantes en un point du programme par leur valeur. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Optimisation – quelques techniques (2) Remplacement de variables à valeurs identiques. Réutilisation du résultat du calcul de sous-expressions. Élimination de code pour lequel les résultats ne sont pas utilisés. Décomposition et réorganisation d’expressions algébriques. Amélioration des branchements: élimination des branchements successifs; élimination des branchements redondants; réduction du nombre de branchements non conditionnels; et, élimination de code ne pouvant être rejoint. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Optimisation Résumé L’étape d’optimisation est sophistiquée. Le choix de processeur cible peut avoir une certaine influence sur cette étape. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Survol de la présentation Introduction: compilateurs et compilation, structure d’un compilateur, besoins pour compilateurs à cibles multiples. Partie frontale: analyse lexicale, syntaxique et sémantique et production de code intermédiaire. « Optimisation » du code Partie finale: génération de code machine: sélection de code, allocation de registres, ordonnancement des instructions, autres techniques. Compilation à cibles multiples: gcc, lcc, CoSy, MIMOLA/RECORD, PEAS-III, LISA/CoSy Références INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie finale INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie finale Sélection de code – approche #1 La sélection de code consiste à choisir la « meilleure » séquence d’instructions du processeur cible pour couvrir le code en représentation intermédiaire. Le modèle du processeur doit inclure des patrons d’instruction. Une approche naïve consiste à remplacer chaque ligne du code intermédiaire à trois adresses par une instruction du processeur. Cette approche ne peut pas exploiter: les instructions complexes (comme MAC); les modes d’adressage complexes (base + déplacement); les registres spéciaux. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie finale Sélection de code – approche #2 L’approche basée sur l’arbre du flot de données consiste à: représenter chaque instruction par un sous-arbre; couvrir l’arbre du flot de données avec le moins d’instructions possible. Cinq instructions du M68K Deux couvertures possibles d’un arbre de données R. Leupers et al., “Retargetable compilers and architecture exploration for embedded processors,” IEE Proceedings Computers and, Digital Techniques, March 2005. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie finale INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie finale Allocation de registres (1) L’allocation de registres consiste à allouer à chaque variable du code à trois adresses un registre physique du processeur. Sauf pour les programmes les plus simples, il y a moins de registres que de variables. Le modèle du processeur doit indiquer le nombre, le type et la largeur des registres. À chaque instant du programme, le compilateur doit déterminer combien de registres sont requis. Si plus de registres sont requis qu’il y en a de disponibles, du code de débordement doit être ajouté pour sauvegarder temporairement les valeurs en mémoire. On aimerait garder dans les registres les valeurs les plus utilisées. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie finale Allocation de registres (2) L’allocation de registre peut être faite: localement pour chaque bloc de code; ou globalement pour chaque fonction. L’allocation de registres s’apparente au coloriage de graphes. Dans l’exemple suivant, trois registres permettraient de fonctionner sans débordement, parce que le graphe est 3-coloriable. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel R. Leupers et P. Marwedel, Retargetable compiler technology for embedded systems, Kluwer, 2001.

Partie finale INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie finale Ordonnancement Le processus d’ordonnancement consiste à ordonner les instructions dans le temps. Le fonctionnement du programme ne doit pas être modifié. Le modèle du processeur doit indiquer: structure: nombre et types d’unités fonctionnelles; pipeline: profondeur et latence des instructions. Le compilateur doit tenir compte des dépendances de données du code. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie finale INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Partie finale Optimisations finales Il est possible d’effectuer une dernière passe d’optimisation après la génération du code pour le processeur cible. Une procédure typique s’appelle ‘optimisation à lucarne’. Elle consiste à inspecter le code produit par groupe de quelques lignes (la lucarne) et à effectuer des remplacements ponctuels. Les règles de remplacement peuvent être énumérées dans le modèle du processeur. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel R. Leupers et P. Marwedel, Retargetable compiler technology for embedded systems, Kluwer, 2001.

Survol de la présentation Introduction: compilateurs et compilation, structure d’un compilateur, besoins pour compilateurs à cibles multiples. Partie frontale: analyse lexicale, syntaxique et sémantique et production de code intermédiaire. « Optimisation » du code Partie finale: génération de code machine: sélection de code, allocation de registres, ordonnancement des instructions, autres techniques. Compilation à cibles multiples: gcc, lcc, CoSy, MIMOLA/RECORD, PEAS-III, LISA/CoSy Références INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Quelques compilateurs à cibles multiples gcc: La partie finale requiert une spécification des patrons d’instructions, des registres et de la synchronisation. Est relativement complexe et difficile à recibler. Cible surtout des architectures très régulières à la « RISC 32 bits ». lcc: La partie finale requiert la liste des registres disponibles et des équivalences entre des énoncés en C et les instructions du processeur, par exemple: addr: ADDP4 (reg, reg) “%%%0 + %%%1”. CoSy de ACE (www.ace.nl), générateur de compilateurs: La partie finale nécessite une description du processeur dans un format spécial qui inclut: la description des registres, les règles d’association des instructions et de synchronisation. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Comment représenter le modèle du processeur? Le modèle du processeur est essentiel pour la partie finale du compilateur. Une option consiste à utiliser un langage de description architecturale. L’information nécessaire inclut: le nombre, la taille et le type des registres; le jeu d’instructions du processeur; la structure du processeur (pipelines, unités fonctionnelles); et, l’encodage des instructions. Cette information est présente implicitement ou explicitement selon le langage de description architecturale (ADL) utilisé: classification des ADLs contenu structurel mixte comportemental objectif synthèse MIMOLA LISA, EXPRESSION ? validation compilation ISDL, nML simulation INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Exemple: MIMOLA INF8505: processeurs embarqués configurables le nombre, la taille et le type des registres; le jeu d’instructions du processeur; la structure du processeur (pipelines, unités fonctionnelles); et, l’encodage des instructions. Exemple: MIMOLA R. Leupers et al., “Retargetable compilers and architecture exploration for embedded processors,” IEE Proceedings Computers and, Digital Techniques, March 2005. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Exemple: compilateur RECORD pour processeurs décrits dans le langage MIMOLA Il est difficile d’extraire toute l’information du code MIMOLA (niveau RTL). RECORD inclut un extracteur de jeu d’instruction qui: énumère tous les chemins possibles entre registres; note les codes d’opération correspondants selon les chemins de contrôle nécessaires. RECORD ne supporte pas les instructions à multiples cycles. RECORD est uniquement la partie finale d’un compilateur. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Exemple: environnement PEAS-III La description du processeur comporte quatre parties: une spécification générale d’architecture (pipelines, nombre d’unités fonctionnelles, délais des instructions); déclaration des ressources (registres, ALUs) et leur comportement; définition du jeu d’instructions (vue hiérarchique du types d’instructions, champs et codes d’opération); et, description détaillée des micro-opérations selon les niveaux de pipeline. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Exemple: LISA/Processor Designer (CoWare)/CoSy (ACE) L’environnement Processor Designer (PD) de la compagnie CoWare utilise le langage LISA pour décrire le processeur. Le générateur de compilateurs CoSy de la compagnie ACE est intégré à PD. Certaines des informations nécessaires à la partie finale de CoSy sont extraites directement du modèle LISA, entre autres l’information sur les registres. Pour le modèle des instructions, le concepteur doit énumérer les équivalences entre le langage intermédiaire et les instructions du processeur. PD inclut une GUI pour faciliter cette tâche. Il y a un risque de perte de cohérence entre le modèle LISA (utilisé surtout pour la simulation et la génération de code HDL) et la spécification indépendante des équivalences des instructions. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel

Quelques références R. Leupers et P. Marwedel, Retargetable compiler technology for embedded systems, Kluwer, 2001. P. Ienne et R. Leupers, Customizable Embedded Processors, Morgan Kaufman, 2007. [chapitre 5]. A. Aho, M. Lam, R. Sethi et J. Ullman, Compilateurs 2e éd., Pearson, 2007. [version française: ISBN 978-2-7440-7037-2]. R. Leupers et al., “Retargetable compilers and architecture exploration for embedded processors,” IEE Proceedings Computers and Digital Techniques, vol. 152, no. 2, pp. 209-223, March 2005. R. Leupers, Retargetable Code Generation for Digital Signal Processors, Kluwer Academic Publishers, 1997. INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel