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 e๏ฌet, ยดecarter d`es le dยดebut un espace de conception peut ยดeliminer certaines architec-tures intยดeressantes.
3. Elยดement 3 : ยซ E๏ฌciently Describe and Evaluate the ASIPs ยป, dยดecrire et ยดevaluer e๏ฌcacement 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 su๏ฌsamment 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 di๏ฌยด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 e๏ฌectue 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` di๏ฌยดerents endroits. Les approches architecturales de lโintยดegration de la logique spยดecialisยดee di๏ฌ`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` di๏ฌยด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 e๏ฌet, 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 di๏ฌยด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).
|
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