Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parDegaré Schaeffer Modifié depuis plus de 9 années
1
Compilateurs à cibles multiples et processeurs configurables
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
2
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
3
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
4
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
5
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
6
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
7
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.
8
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
9
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.
10
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
11
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
12
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
13
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
14
Partie frontale La partie frontale comporte 4 étapes:
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
15
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
16
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
17
Partie frontale La partie frontale comporte 4 étapes:
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
18
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
19
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
20
Partie frontale La partie frontale comporte 4 étapes:
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
21
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
22
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
23
Partie frontale La partie frontale comporte 4 étapes:
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel
24
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
25
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
26
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
27
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
28
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
29
Optimisation INF8505: processeurs embarqués configurables
Département de génie informatique et génie logiciel
30
« 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
31
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
32
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
33
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
34
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
35
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
36
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.
37
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.
38
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
39
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
40
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
41
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
42
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
43
Partie finale INF8505: processeurs embarqués configurables
Département de génie informatique et génie logiciel
44
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
45
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
46
Partie finale INF8505: processeurs embarqués configurables
Département de génie informatique et génie logiciel
47
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
48
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.
49
Partie finale INF8505: processeurs embarqués configurables
Département de génie informatique et génie logiciel
50
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
51
Partie finale INF8505: processeurs embarqués configurables
Département de génie informatique et génie logiciel
52
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.
53
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
54
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 ( 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
55
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
56
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
57
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
58
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
59
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
60
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, [chapitre 5]. A. Aho, M. Lam, R. Sethi et J. Ullman, Compilateurs 2e éd., Pearson, [version française: ISBN ]. R. Leupers et al., “Retargetable compilers and architecture exploration for embedded processors,” IEE Proceedings Computers and Digital Techniques, vol. 152, no. 2, pp , 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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.