Architecture des processeurs extensibles

Télécharger le fichier pdf d’un mémoire de fin d’études

M´ethodologie MESCAL

La m´ethodologie MESCAL [94, 109] propose de concevoir un ASIP autour de cinq el´ements essentiels.
1. El´ement 1 : « Judiciously Using Benchmarking », utiliser les applications de mani`ere judicieuse. Le d´eveloppement d’un ASIP est par d´efinition dirig´e par les applications cibles. La conception est souvent guid´ee par un ensemble d’applications de r´ef´erence, qui doivent ˆetre repr´esentatives du domaine d’applications vis´e.
2. El´ement 2 : « Inclusively Identify the Architectural Space », identifier l’es-pace architectural complet. L’espace de conception d’un ASIP consiste en un large ´eventail de possibilit´es selon plusieurs dimensions. Si l’espace entier n’a pas besoin d’ˆetre consid´er´ pour un domaine d’applications pr´ecis, il est important que la base de conception initiale puisse inclure une large gamme de d´eclinaisons possibles. En effet, ´ecarter d`es le d´ebut un espace de conception peut ´eliminer certaines architec-tures int´eressantes.
3. El´ement 3 : « Efficiently Describe and Evaluate the ASIPs », d´ecrire et ´evaluer efficacement l’ASIP. Pour consid´erer une gamme de d´eclinaisons de l’archi-tecture la plus large possible, il est important de pouvoir d´ecrire et ´evaluer l’ASIP pour les applications consid´er´ees. Les outils logiciels correspondants a` l’ASIP doivent donc ˆetre disponibles.
4. El´ement 4 : « Comprehensively Explore the Design Space », explorer l’espace de conception de mani`ere approfondie. L’exploration de l’espace de conception est un processus it´eratif avec asservissement o`u chaque point de conception est evalu´ selon une m´etrique. L’exploration est r´ealis´ee grˆace a` un environnement qui permet de compiler l’application pour l’architecture et de simuler l’ex´ecution pour obtenir des r´esultats quantitatifs et appr´ecier les performances. L’aspect cl´e est de pouvoir recibler rapidement les outils pour chaque point de conception.
5. El´ement 5 : « Successfully Deploy the ASIP », d´eployer l’ASIP avec succ`es. Un ASIP peut ˆetre ultra performant en proposant une ad´equation excellente entre l’application et l’architecture et a` la fois compl`etement sous exploit´ si il est mal programm´e. Programmer un ASIP directement en assembleur est impensable au-jourd’hui ´etant donn´ee la complexit´ des applications et les temps de d´eveloppement tr`es limit´es. Il est donc important de disposer d’un compilateur suffisamment puis-sant pour exploiter au maximum les capacit´es d’une architecture.
De la mˆeme fa¸con, un compilateur puissant est sous exploit´ si l’architecture est peu adapt´ee a` l’application, et un compilateur et une architecture ne peuvent que faible-ment am´eliorer les performances d’une application mal d´ecrite. La conception d’un ASIP conduit id´ealement a` une ad´equation parfaite entre l’algorithme, l’architecture, et le com-pilateur.
La m´ethode de conception compl`ete propose de g´en´erer un processeur et sa suite d’ou-tils associ´es `a partir d’un mˆeme mod`ele du processeur pour garantir l’ad´equation entre l’architecture et le compilateur. L’application est g´en´eralement d´ecrite dans un langage de haut niveau. Nous avons vu `a travers l’exemple du langage LISA que le processus n’est pas enti`erement automatis´e et qu’il faut toujours mettre en œuvre manuellement certaines parties critiques du processeur pour aboutir `a un processeur optimis´e. Chaque nouveau processeur doit ˆetre v´erifi´ et optimis´e, ce qui entraˆıne des coˆuts d’ing´enierie non r´ecurrents.
Pour r´eduire ces coˆuts, une autre approche de conception d’ASIP vise `a consid´erer un processeur existant et `a concevoir seulement la partie d´edi´ee, c’est la conception partielle qui est maintenant d´ecrite.

Conception partielle d’ASIP

La conception partielle consiste a` partir d’un processeur existant, v´erifi´ et optimis´e, qui poss`ede sa suite d’outils associ´es (compilateur, simulateur, etc), a` le configurer, et a` ´etendre son jeu d’instructions pour le sp´ecialiser en regard des exigences d’une application ou d’un domaine d’applications. Ce type de processeur est configurable a` travers des el´ements comme la file de registres, la profondeur du pipeline, la pr´esence ou non de multiplieurs, etc. Par ailleurs, ce type de processeur dispose de m´ecanismes pour ajouter facilement une nouvelle instruction au jeu d’instructions, et pour qu’elle soit prise en compte par le compilateur. En g´en´eral, cette technique demande au concepteur de fournir une description architecturale de la nouvelle instruction et de modifier manuellement le code applicatif qui fait appel a` la nouvelle instruction. Dans un premier temps, nous donnons un exemple de processeur configurable et extensible, puis nous passons en revue les autres architectures existantes. Ensuite, nous d´ecrivons les m´ethodologies et techniques de compilation qui permettent d’automatiser le processus d’extension de jeu d’instructions.

Exemple

Pour illustrer ce qu’est un processeur configurable et extensible, nous proposons d’´etu-dier le processeur NIOSII. C’est le processeur que nous avons choisi d’utiliser pour valider notre m´ethodologie et nos outils d´evelopp´es pendant cette th`ese. Pr´esenter ce processeur en d´etail permet de bien comprendre les aspects d´ecrits tout au long du document.
Le processeur NIOSII est un processeur RISC (Reduced Instruction Set Computer ) 32 bits d´eclin´ en trois versions : une premi`ere version dite « ´economique », une deuxi`eme dite « standard », et une troisi`eme dite « rapide » (Nios2Fast ). La grande diff´erence entre les trois versions se situe au niveau du nombre d’´etages de pipeline. La d´eclinaison ´economique du NIOSII est un processeur qui poss`ede un seul ´etage de pipeline, et chaque instruction n´ecessite 6 cycles pour ˆetre ex´ecut´ee. Un NIOSII standard a cinq ´etages de pi-peline. Le Nios2Fast en a six. Un processeur NIOSII a une file de registres de 32 registres de 32 bits. Une liste non exhaustive des aspects configurables du processeur NIOSII est donn´ee :
– pr´esence de multiplieurs ou non,
– unit´e de gestion m´emoire (MMU),
– taille du cache et des m´emoires,
– vecteur d’interruptions,
– module de debug JTAG,
– etc.

Architecture des processeurs extensibles

Le processeur NIOSII est un exemple de processeur extensible, mais il existe d’autres solutions architecturales. Nous proposons une classification de ces ASIP a` travers trois crit`eres : le mod`ele d’ex´ecution, le couplage, et la technologie.

Mod`ele d’ex´ecution

Un processeur peut exploiter deux formes de parall´elisme pour acc´el´erer les traite-ments : le parall´elisme temporel, et le parall´elisme spatial. Ces deux formes de parall´elisme sont illustr´ees par la figure 1.11.
Pour ex´ecuter une instruction, un processeur effectue une s´erie de tˆaches : r´ecup´erer l’instruction dans la m´emoire et la charger dans le registre d’instruction, modifier la valeur du compteur ordinal (compteur d’instruction), d´eterminer le genre d’instruction venant d’ˆetre charg´ee, ex´ecuter l’instruction, retourner a` la premi`ere ´etape pour ex´ecuter l’ins-truction suivante. Impl´ementer un chemin de donn´ee qui r´ealise toutes ces tˆaches en un cycle r´esulte en un chemin critique tr`es long qui contraint la vitesse d’horloge du proces-seur. Le parall´elisme temporel, connu sous le nom de technique du pipeline (pipelining ), consiste a` casser le chemin critique en d´ecomposant les instructions en de nombreuses sec-tions el´ementaires, chacune pouvant ˆetre ex´ecut´ee en parall`ele par un composant mat´eriel sp´ecifique. L’architecture ICORE illustr´ee par la figure 1.3 est compos´ee de quatre ´etages de pipeline.
Le parall´elisme spatial est l’ex´ecution en parall`ele et au mˆeme instant de plusieurs instructions non d´ependantes en donn´ees. L’exemple de la figure 1.11 met en exergue l’ex´ecution de deux additions et une multiplication au mˆeme moment, puis de deux mul-tiplications. C’est le parall´elisme au niveau instruction.
Un processeur peut suivre plusieurs mod`eles d’ex´ecution que nous ne d´etaillons pas ici, et un ASIP suit en g´en´eral deux mod`eles d’ex´ecution tr`es r´epandus : le mod`ele d’ex´ecution RISC, et le mod`ele VLIW.
Mod`ele d’ex´ecution RISC. Un processeur RISC (Reduced Instruction Set Compu-ter ) est un processeur poss´edant un jeu d’instructions r´eduit. Son mode d’ex´ecution, aussi appel´ single-issue, est le mode d’ex´ecution le plus simple. Il correspond au mode de fonc-tionnement SISD (Single Instruction Single Data) selon la taxonomie d´efinie par Flynn [76] et est bas´e sur une architecture de Von Neumann. Dans ce mode d’ex´ecution, une seule instruction est ex´ecut´ee a` la fois. De nombreux ASIP suivent ce mode d’ex´ecution : Garp [175], Chimaera [212], OneChip [204], etc. L’exemple de la figure 1.11 illustre ce fonctionnement o`u les instructions sont ex´ecut´ees une par une, et se partagent l’unique unit´e fonctionnelle du processeur.
Mod`ele d’ex´ecution VLIW. Un processeur VLIW (Very Long Instruction Word ) est un processeur comprenant plusieurs slots d’ex´ecution, c’est-a`-dire plusieurs unit´es fonction-nelles capables de s’ex´ecuter en parall`ele. Un processeur VLIW est donc capable d’ex´ecuter en mˆeme temps plusieurs instructions sur plusieurs donn´ees. Pour pouvoir encoder toutes ses informations (instructions a` ex´ecuter et registres op´erandes), le mot de l’instruction doit ˆetre tr`es long, d’o`u le nom de processeur a` mot d’instructions tr`es long (128 bits par exemple au lieu de 32 bits pour un processeur RISC). Un processeur VLIW permet d’exploiter le parall´elisme au niveau instruction. C’est le compilateur qui a la charge de d´etecter le parall´elisme et de g´en´erer le code capable d’exploiter les unit´es fonctionnelles. De nombreux processeurs DSP s’appuient sur ce type de mod`ele d’ex´ecution, comme par exemple le TCI6487 de Texas Instruments [191]. Le nombre de slots d’ex´ecution varie selon l’architecture. Par exemple, le nombre de slots de l’architecture ADRES [151] est param´etrable.
Dans [118], les auteurs pr´esentent une architecture bas´ee sur un processeur VLIW a` quatre PE (Processing Element ), enti`erement mise en œuvre dans un FPGA. Chaque PE contient une UAL et un module qui peut accueillir des instructions sp´ecialis´ees. L’archi-tecture PADDI [213] pr´esente ´egalement un mod`ele d’ex´ecution VLIW o`u chaque slot d’ex´ecution est un nanoprocesseur.

Couplage

La sp´ecialisation partielle consiste a` ajouter un module qui met en œuvre les instruc-tions sp´ecialis´ees. Ce module sp´ecialis´ peut ˆetre int´egr´ a` diff´erents endroits. Les approches architecturales de l’int´egration de la logique sp´ecialis´ee diff`erent selon le degr´ de couplage entre la logique sp´ecialis´ee et le processeur a` usage g´en´eral. Nous distinguons trois degr´es de couplage, illustr´es par la figure 1.12 :
1. Unit´es fonctionnelles – couplage fort
2. Co-processeurs – couplage lˆache
3. Unit´es de traitement attach´ees ou externes – couplage tr`es lˆache
Unit´es fonctionnelles. Dans ce cas de figure, la logique sp´ecialis´ee est fortement coupl´ee au chemin de donn´ees du processeur, en parall`ele de l’UAL du processeur. Cette unit´e est accessible a` travers des instructions sp´ecialis´ees du jeu d’instructions du processeur. Ces ar-chitectures font partie de la classe DEMETER d’apr`es la classification propos´ee par [172]. Un des pionniers en la mati`ere est l’architecture PRISC [175, 174], qui combine un processeur RISC avec des PFU (Programmable Functionnal Unit ). Chaque PFU met en œuvre une fonction combinatoire a` deux entr´ees et produit un r´esultat. L’architecture OneChip [204]

M´ethodologie

L’exemple de l’extension du jeu d’instructions du processeur NIOSII a mis en ´evidence les ´etapes manuelles r´ealis´ees par le concepteur (description de l’architecture de l’instruc-tion et adaptation du code applicatif ). Pour des applications complexes, ce processus est fastidieux et sujet a` erreur. C’est pourquoi il est important de disposer d’une m´ethodologie pour d´etecter automatiquement les portions de code a` d´eporter en mat´eriel, et des outils pour la g´en´eration automatique de l’architecture des instructions sp´ecialis´ees et du code applicatif qui exploite ces instructions.

Granularit´e

La sp´ecialisation peut avoir lieu a` diff´erents niveaux de granularit´e2. Nous distinguons deux niveaux : grain fin et gros grain. La sp´ecialisation a` grain fin op`ere au niveau ins-truction et met en œuvre mat´eriellement un petit ensemble d’op´erations [25, 28, 55]. La sp´ecialisation a` gros grain op`ere au niveau boucle ou proc´edure, et d´eporte une boucle ou une proc´edure enti`ere sur du mat´eriel d´edi´ [31, 90, 101, 174, 203]. Le compilateur C2H d’Altera [17] et l’outil Cascade de CriticalBlue [65] comptent parmi les outils commerciaux qui proposent une solution automatis´ee de synth`ese de co-processeur a` partir d’une fonc-tion ´ecrite en langage C. La communication entre le processeur et le co-processeur ne fait pas appel au m´ecanisme d’extension de jeu d’instructions.
Chacune de ces granularit´es pr´esente des avantages et des inconv´enients. Si la sp´eciali-sation a` gros grain permet d’obtenir d’importantes acc´el´erations, sa flexibilit´ est limit´ee. En effet, il est peu probable que plusieurs applications poss`edent exactement le mˆeme cœur de boucle ou la mˆeme proc´edure. A l’inverse, plus la sp´ecialisation est fine et plus la probabilit´e de trouver une mˆeme suite d’op´erations, dans un ensemble d’algorithmes, est grande. Par exemple, l’op´eration MAC (Multiply-ACcumulate) est tr`es pr´esente dans les applications du traitement du signal.

Automatisation

La figure 1.15 illustre une m´ethodologie g´en´erique appliqu´ee lors d’un processus clas-sique d’extension de jeux d’instructions. Cette m´ethodologie se distingue de la m´ethodologie de conception compl`ete au niveau de l’´etape de g´en´eration du jeu d’instructions. L’exten-sion d’un jeu d’instructions consiste `a g´en´erer un ensemble d’instructions sp´ecialis´ees candi-dates, puis `a s´electionner un sous-ensemble de ces instructions. Comme pour la conception compl`ete, le processus peut ˆetre it´eratif, et le jeu d’instructions est progressivement enrichi de nouvelles instructions. Lorsque le processus n’est pas it´eratif, il s’agit de g´en´erer, en une seule passe, la meilleure architecture possible avec les contraintes de conception appliqu´ees en entr´ee.

Motifs g´en´er´es vs motifs pr´ed´efinis

Un motif est un groupe d’op´erations el´ementaires. L’op´eration MAC (Multiply-Accu-mulate), tr`es pr´esente dans les applications du traitement du signal est un exemple typique de motif.
Les techniques de sp´ecialisation de processeur s’appuient sur deux approches diff´erentes : soit il existe une biblioth`eque de motifs pr´ed´efinis (comme par exemple le MAC), soit cette biblioth`eque est g´en´er´ee a` partir de l’application cible.
Dans le cas o`u une biblioth`eque de motifs est utilis´ee, le processus se r´esume a` l’´etape de s´election d’instructions. Il faut alors analyser l’application pour trouver quelles instructions de la biblioth`eque sont n´ecessaires, c’est-a`-dire trouver les occurrences des motifs dans le graphe d’application. C’est le probl`eme de l’isomorphisme de sous-graphes. Plusieurs approches s’appuient sur l’existence d’une biblioth`eque de motifs [57, 173, 142].
Cependant, afin de disposer d’instructions vraiment adapt´ees a` l’application cible et gagner en performance, la plupart des approches construisent la biblioth`eque en g´en´erant les instructions candidates [29, 44, 48, 86, 167, 217, 219].
Dans le cadre de nos travaux, c’est l’approche qui est retenue.

G´en´eration d’instructions

La g´en´eration d’instructions, l’identification d’instructions, ou la d´ecouverte d’instruc-tions d´esignent le mˆeme processus : la d´etermination des sous-graphes, a` partir d’un graphe d’application cible, candidats potentiels a` une mise en œuvre en mat´eriel. Elle constitue la premi`ere ´etape du processus d’extension de jeu d’instructions. Pour des raisons li´ees a` la prise en compte de l’architecture et de la technologie, cette ´etape est souvent sujette a` des contraintes. Les contraintes les plus courantes concernent le nombre d’entr´ees et de sorties des motifs, la surface, et la consommation d’´energie. De plus, certaines instructions de l’application ne sont pas appropri´ees a` une mise en œuvre mat´erielle. Par exemple, les ins-tructions de contrˆole sont en g´en´eral exclues. Ces nœuds ind´esirables sont appel´es nœuds interdits. De la mˆeme fa¸con, de nombreux travaux excluent les instructions de chargement et de rangement (load,store) [30, 57, 186, 166].

Complexit´ de l’exploration

L’application ´etant repr´esent´ee sous forme de graphe, la g´en´eration d’instructions s’ap-parente au probl`eme de g´en´eration de sous-graphes ou motifs, o`u chaque sous-graphe est un candidat. Dans le cas g´en´eral, chaque nœud du graphe peut faire partie ou non d’un candidat, ce qui entraˆıne un nombre de combinaisons en O(2n), o`u n est le nombre de nœuds du graphe.
L’´enum´eration exhaustive de tous les sous-graphes est en temps exponentiel, et n’est donc pas applicable pour des exemples r´ealistes. Cette complexit´ rend le probl`eme in-traitable. Beaucoup de techniques ont et´e propos´ees pour r´esoudre ce probl`eme, elles sont d´etaill´ees dans la section 2.3. Nous verrons qu’en imposant des contraintes sur les motifs, l’espace de recherche peut ˆetre grandement r´eduit. Une des premi`eres contraintes est la contrainte de connexit´ : un motif peut ˆetre connexe ou non-connexe.

Motif connexe vs non-connexe

Un motif connexe est un motif tel que pour toute paire de nœuds, il existe un chemin entre les deux nœuds. Un motif non-connexe est un motif qui ne satisfait pas cette condi-tion. Les motifs non-connexes font apparaˆıtre plus de parall´elisme au niveau instructions, donc potentiellement de meilleurs gains. Malgr´e les possibilit´es de meilleures acc´el´erations, la plupart des auteurs se limitent a` la g´en´eration de motifs connexes [25, 57, 62]. La fi-gure 2.2 illustre deux motifs, le premier est connexe 2.2(a), et le second non-connexe 2.2(b).

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela chatpfe.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières

Introduction
1 Conception d’ASIP : m´ethodologies et outils 
1.1 Conception compl`ete d’ASIP
1.1.1 Exemple du langage LISA
1.1.2 M´ethodologie
1.2 Conception partielle d’ASIP
1.2.1 Exemple
1.2.2 Architecture des processeurs extensibles
1.2.3 M´ethodologie
1.2.4 Compilation
1.3 Synth`ese
2 L’extension de jeu d’instructions 
2.1 Quels sont les probl`emes `a r´esoudre ?
2.1.1 Motifs g´en´er´es vs motifs pr´ed´efinis
2.1.2 G´en´eration d’instructions
2.1.3 Limites architecturales et technologiques
2.1.4 S´election d’instructions
2.1.5 Isomorphisme de graphes et de sous-graphes
2.1.6 Exploitation des nouvelles instructions
2.2 Quand les r´esoudre ?
2.2.1 A la conception
2.2.2 A la vol´ee
2.3 Comment les r´esoudre ?
2.3.1 Recherche Tabou
2.3.2 Recuit simul´e
2.3.3 Algorithme g´en´etique
2.3.4 Algorithme de colonies de fourmis
2.3.5 Programmation dynamique
2.3.6 Algorithmes gloutons
2.3.7 Heuristiques
2.3.8 S´eparation et ´evaluation
2.3.9 Programmation lin´eaire par nombres entiers
2.3.10 Programmation par contraintes
2.3.11 Comparaison des approches
2.4 Synth`ese
3 L’identification d’instructions 
3.1 D´efinitions
3.2 Algorithme de g´en´eration de motifs
3.2.1 Expansion d’un motif `a partir d’un nœud graine
3.2.2 Limitation du nombre de motifs : Smart filtering
3.2.3 La contrainte GraphMatch
3.3 Contraintes technologiques et architecturales
3.4 Formalisation pour la programmation par contraintes
3.4.1 Contrainte de connexit´e
3.4.2 Contrainte sur le nombre d’entr´ees et de sorties
3.4.3 Contrainte sur le chemin critique
3.4.4 Contrainte de ressources
3.4.5 Contrainte d’´energie
3.5 R´esultats d’exp´erimentations
3.5.1 Le processeur cible
3.5.2 Environnement d’ex´ecution
3.5.3 Benchmarks
3.5.4 Couverture maximale
3.5.5 Discussion
3.6 Conclusion
4 S´election d’instructions et ordonnancement 
4.1 S´election d’instructions
4.1.1 D´efinition d’une occurrence
4.1.2 D´efinition du probl`eme de s´election d’instructions
4.1.3 Mod´elisation du temps d’ex´ecution d’une occurrence
4.1.4 R´esultats d’exp´erimentation
4.2 Ordonnancement
4.2.1 Placement
4.2.2 Ordonnanceur
4.2.3 Ordonnancement avec recalage d’instructions
4.2.4 Optimisation sur les transferts de donn´ees
4.2.5 R´esultats d’exp´erimentation
4.3 Conclusion
5.1 Architecture de l’extension
5.1.1 Diff´erents types d’instructions sp´ecialis´ees
5.1.2 Mod`eles d’architecture
5.2 Allocation de registres
5.2.1 Contrainte Diff2
5.2.2 Allocation de registres appliqu´ee au mod`ele A
5.2.3 Allocation de registres appliqu´ee au mod`ele B
5.3 G´en´eration des codes d’op´eration et de la description de l’architecture
5.3.1 G´en´eration des codes d’op´erations
5.3.2 G´en´eration du bloc logique sp´ecialis´e
5.3.3 G´en´eration du chemin de donn´ee des instructions sp´ecialis´ees
5.3.4 Fusion du chemin de donn´ees
5.4 G´en´eration du code source modifi´e
5.5 G´en´eration pour la simulation SystemC
5.5.1 SystemC
5.5.2 SoCLib
5.5.3 G´en´eration des instructions sp´ecialis´ees pour le mod`ele du NiosII . 136
5.6 Conclusion
6 D´eroulement du flot appliqu´e `a l’algorithme GOST 139
6.1 Le flot de conception DURASE
6.1.1 Gecos
6.2 L’algorithme de chiffrement GOST
6.3 D´eroulement du flot ´etape par ´etape appliqu´e `a l’algorithme de chiffrement
GOST
6.3.1 Param`etres d’entr´ee
6.3.2 Partie frontale
6.3.3 Cr´eation d’une extension
6.3.4 G´en´eration d’architecture
6.3.5 Adaptation du code
6.3.6 Validation par simulation avec SoCLib
6.3.7 R´esum´e
6.4 Proposition d’architecture
6.5 Conclusion
Conclusion 167
Publications 171
Bibliographie 173

Télécharger le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *