Reconfiguration dynamique des FPGAs
La Re-configuration dynamique des FPGAs consiste à changer la programmation de ces circuits logiques programmables alors qu'ils sont en activité.
à l'origine, ces circuits logiques programmables ont été conçus pour permettre de réaliser trÚs rapidement des fonctions logiques plus ou moins complexes, c'est-à -dire directement opérées par un circuit électronique. Pour cela, le FPGA permet de définir et de redéfinir à volonté une configuration arbitraire de chemins entre des portes logiques élémentaires. Néanmoins, la redéfinition d'un circuit logique au sein du FPGA est une opération singuliÚre, supposée peu fréquente, et réalisée alors que le systÚme informatique au sein duquel il prend place est « hors-fonction ».
De nouveaux développements de cette technologie ont permis d'envisager la configuration et la re-configuration de circuits logiques programmables sans en interrompre le fonctionnement. Cette approche ouvre de nouvelles perspectives dans la réduction de la taille et de la consommation des FPGAs tout en offrant de nouvelles opportunités à leur exploitation.
Origine et Architecture des FPGAs
Les FPGAs se traduisent en français par "circuits prédiffusés programmables". Les circuits prédiffusés sont des circuits partiellement préfabriqués. Ils contiennent un ensemble d'éléments (transistors, diodes, résistances, capacités, etc.) qui ne sont pas interconnectés entre eux.
Contrairement aux circuits prédiffusés conventionnels, les circuits prédiffusés programmables ne demandent pas de fabrication spéciale en usine, ni de matériels de développement coûteux[1].
Les FPGAs ont été inventés et commercialisés la premiÚre fois par la société Xilinx en 1985. Ils sont de la famille des ASICs (Application Specific Integrated Circuit). Ils se situent entre les réseaux logiques programmables et les circuits prédiffusés. Ce sont donc des composants standard combinant la densité et les performances d'un circuit prédiffusé avec la souplesse due à la re-programmation des PLD (programmable logic device : circuit logique programmable)[1].
Sur le marché les fondateurs (Xilinx, Altera, Atmel) ont développé plusieurs familles de FPGA, concurrentes ou complémentaires, parfois moins performantes, parfois mieux adaptées. L'architecture, retenue par Xilinx se présente sous forme de deux couches :
- une couche appelée circuit configurable,
- une couche de mémoire SRAM (SelectRAM)[1].
La couche dite 'circuit configurable' est constituée d'une matrice de blocs logiques configurables CLB (Configurable Logic Block). Les CLBs permettent de réaliser des fonctions combinatoires et des fonctions séquentielles. Tout autour de ces CLBs, on trouve des blocs entrées/sorties IOB (Input/Output Block) dont le rÎle est de gérer les entrées-sorties réalisant l'interface avec les modules extérieurs.
La couche SRAM est un ensemble de blocs de mĂ©moire RAM configurables de diffĂ©rentes maniĂšres. Leur capacitĂ© est de 18KB. Les blocs de la SRAM peuvent ĂȘtre mis en cascade pour rĂ©aliser de larges zones de stockage enfouies dans le FPGA.
La mise au point de la configuration d'un FPGA consiste dans un premier temps à décrire ses données de configuration sous
forme dâune succession de bits qu'on appelle bitstream/fichier de configuration. Ce bitstream est stockĂ© dans une ROM
externe au FPGA. Ainsi à la mise sous tension du FPGA, sa mémoire SRAM est chargée à partir de cette ROM et la configuration est prise
en compte. Ensuite une vérification est effectuée pour tester si le fonctionnement réel correspond bien à l'attente du concepteur[1].
La configuration d'un FPGA permet d'établir des interconnexions entre ses CLB et ses IOB. Pour cela, ils disposent de la mémoire SRAM interne dans laquelle sera écrit le fichier de configuration[1].
Certaines architectures de FPGA en fonction des constructeurs peuvent contenir :
- des BRAM (Bloc RAM) qui représentent un module de mémoire destiné aux grands éléments de stockage
- un VersaRing qui est un rĂ©seau additionnel de lignes dâinterconnexion entre les IOB et les CLB: cela permet de changer facilement la configuration interne du circuit tout en gardant le mĂȘme brochage
- Ă chaque signal dâhorloge global il y a un DLL (Delay-locked loop) qui permet de modifier la phase du signal, pour amĂ©liorer les caractĂ©ristiques des flux des donnĂ©es en sortie.
Re-configuration dynamique
La logique re-configurable est une branche Ă©mergente de l'architecture informatique qui cherche Ă construire des systĂšmes informatiques flexibles et dynamiques. C'est-Ă -dire des systĂšmes ayant la propriĂ©tĂ© de pouvoir ĂȘtre modifiĂ©s aprĂšs leur conception et pendant leur exĂ©cution, chose qui permet atteindre des niveaux de performance trĂšs Ă©levĂ©s[2]. Au cĆur de ces systĂšmes informatiques est le FPGA, ce circuit peut ĂȘtre facilement configurĂ© et re-configurĂ© par l'utilisateur final. Le FPGA possĂšde un certain nombre d'interfaces de configuration qui sont utilisĂ©s pour tĂ©lĂ©charger les donnĂ©es de configuration afin de pouvoir changer Ă tout moment son fonctionnement[3].
Que doit-on en attendre ?
Le principal intĂ©rĂȘt dâun systĂšme reconfigurable est de pouvoir changer Ă tout moment les algorithmes exĂ©cutĂ©s par le matĂ©riel, rappelons que cela est fait depuis bien longtemps par les microprocesseurs[4]. La reconfiguration dynamique nâa donc de sens que si elle sâaccompagne de performances (Ă coĂ»ts identiques) bien supĂ©rieures Ă celles des structures programmĂ©es classiques. Or, on constate que les processeurs conventionnels ou les DSP (Pentium, c60, c80, sharc) sont capables dâexĂ©cuter un algorithme de traitement dâimages relativement complexe en temps rĂ©el. Ce qui semble discrĂ©diter quelque peu la technologie FPGA[4]. On remarque cependant que les processeurs sont alors en limite dâutilisation : boucle interne de deux ou trois cycles optimisĂ©e au cycle prĂšs ; toute modification mĂȘme minime remet en cause la faisabilitĂ© globale sous contrainte temps rĂ©el. Dâautre part, ce rĂ©sultat est obtenu pour des frĂ©quences de travail supĂ©rieures dâun facteur dix par rapport aux solutions FPGA. Cependant la re-configuration dynamique est une solution architecturale et technologique qui ne permet pas des gains en vitesse de traitement, mais qui rĂ©duit la complexitĂ© de circuit nĂ©cessaire Ă une application donnĂ©e[4].
Dans la suite on détaillera les approches de la re-configuration dynamique qui sont : la re-configuration pendant l'exécution du FPGA (run-time re-configuration), l'auto-reconfiguration.
La re-configuration pendant lâexĂ©cution (RTR)
C'est la capacitĂ© dâun FPGA Ă re-configurer ses ressources pendant lâexĂ©cution dâune application. Ce type de re-configuration devient une exigence de plus en plus importante sur les marchĂ©s de nombreux utilisateurs, en particulier les utilisateurs militaires qui doivent s'adapter rapidement Ă diffĂ©rentes menaces et l'Ă©volution des formes d'onde de communication.
La RTR peut re-configurer les FPGAs plusieurs fois pendant l'opération normale d'une seule application comme indiqué sur la figure 4[5].
Problématique propre à la RTR
La nature dynamique du matériel présente deux nouveaux problÚmes de conception, face à une RTR.
Le premier est la division de lâalgorithme de l'application (Exemple : une application de traitement d'images) en segments temporaires exclusifs qui n'ont pas besoin de sâexĂ©cuter simultanĂ©ment. Ce processus de division est appelĂ© partitionnement temporaire[6].
Typiquement, on décompose l'algorithme en phases distinctes. Pour chacune de ces phases on définit un fichier de configuration. Ces fichiers de configurations sont ensuite téléchargés dans le FPGA comme requis par l'application[6].
La division temporaire exige jusquâĂ prĂ©sent une participation ennuyeuse et prĂ©disposĂ©e aux erreurs de lâutilisateur final de lâapplication[6].
Le second problĂšme de conception consiste Ă coordonner le comportement entre les configurations des applications RTR. Ce comportement se manifeste sous la forme de communication inter-configuration, ou la transmission des rĂ©sultats intermĂ©diaires d'une configuration Ă l'autre. Cela arrive pendant la progression normale de l'application. Chaque configuration traitera des donnĂ©es et produira ensuite un certain rĂ©sultat intermĂ©diaire qui sert d'entrĂ©e Ă la configuration suivante. Cela a un effet Ă©norme sur le processus de conception, parce que toutes les configurations doivent ĂȘtre soigneusement conçues, de telle sorte qu'elles marchent Ă travers les diffĂ©rentes phases de lâapplication et communiquent des rĂ©sultats intermĂ©diaires entre elles[6].
Principe de fonctionnement de la RTR
Il existe deux approches de base qui peuvent ĂȘtre utilisĂ©es pour la mise en Ćuvre de la RTR : l'approche globale et partielle. Ces deux approches configurent toutes le FPGA lors de l'exĂ©cution de lâapplication. La principale diffĂ©rence entre elles est la façon dont le matĂ©riel dynamique est allouĂ©[7].
- RTR globale: La RTR globale alloue toutes les ressources du FPGA dans chaque Ă©tape de re-configuration. Plus prĂ©cisĂ©ment, les RTRs globales sont divisĂ©es en diffĂ©rentes phases temporaires, oĂč chaque phase est implĂ©mentĂ©e comme une configuration unique du systĂšme qui occupe toutes les ressources du FPGA. Au moment de l'exĂ©cution, Ă chaque phase d'avancement de l'application (pour laquelle la re-configuration du FPGA se fait), toutes les ressources du FPGA sont chargĂ©es avec les configurations associĂ©es Ă cette phase[7].
Comme exemple la figure 5 montre comment une seule application est crĂ©Ă©e Ă partir de 3 configurations (A, B, C). Lâapplication exĂ©cute sĂ©quentiellement les trois configurations du matĂ©riel temporairement disjointes.
Mise en Ćuvre dâun RTR globale
Dans la mise en Ćuvre de la RTR globale, la tĂąche principale de la conception est de diviser temporairement lâalgorithme de l'application en partitions Ă peu prĂšs de mĂȘme taille. Cette division permet d'utiliser efficacement des ressources re-configurables. Comme expliquĂ© dans la partie des problĂ©matiques chaque partition est associĂ© Ă un fichier de configuration. Cependant, l'Ă©tape de partitionnement temporaire est itĂ©ratif c'est-Ă -dire que le concepteur doit crĂ©er une partition initiale, puis rĂ©itĂ©rer ensuite tant sur la conception que la division, jusquâĂ ce que les tailles des partitions soient approximativement Ă©gales[7].
Le principal inconvĂ©nient de cette approche est la nĂ©cessitĂ© d'une mĂȘme taille de partitions temporaires. Sâil nâest pas possible de faire cette division Ă©quitable des partitions, il en rĂ©sultera une inefficacitĂ© dâutilisation des ressources du FPGA[7].
Une fois qu'une application a Ă©tĂ© temporairement partitionnĂ©e, un moyen doit ĂȘtre prĂ©vu pour soutenir la communication inter-configuration. Ceci parce que chaque phase occupe toutes les ressources re-configurables. Typiquement les partitions sont organisĂ©es de sorte que chaque phase de lâapplication calcule un certain rĂ©sultat intermĂ©diaire. Ce rĂ©sultat intermĂ©diaire est placĂ© dans la mĂ©moire ou un registre du FPGA. Lorsque la phase suivante est chargĂ©e commencera l'opĂ©ration en lisant ce rĂ©sultat intermĂ©diaire et continuera ensuite Ă calculer le rĂ©sultat suivant. Ce processus "chargement et exĂ©cution" continue jusqu'Ă ce que l'application soit terminĂ©e[7]. L'avantage principal de la RTR globale est sa simplicitĂ© relative. Parce que les divisions de l'application sont Ă granularitĂ© grosse[7].
- RTR partielle : est le processus de configuration d'une partie du FPGA, tandis que l'autre partie est toujours fonctionnelle. Elle est rĂ©alisĂ©e pour permettre au FPGA de s'adapter aux algorithmes de changement de matĂ©riel, amĂ©liorer la tolĂ©rance aux pannes, amĂ©liorer les performances ou de rĂ©duire la consommation d'Ă©nergie. La RTR partielle est particuliĂšrement utile certains circuits du FPGA qui ne doivent pas ĂȘtre perturbĂ©s alors que d'autres sont en cours de redĂ©finition. Les circuits ne devant pas ĂȘtre perturbĂ©s sont appelĂ©s environnement critique (mission critical)[8]
La partie du FPGA Ă redĂ©finir est divisĂ©e en rĂ©gions de re-configuration, et une nouvelle succession de bits de configuration (bitstream / fichier de configuration) doit ĂȘtre crĂ©Ă©e pour chaque rĂ©gion. Le FPGA continue Ă utiliser les fonctions essentielles Ă lâenvironnement critique et Ă rĂ©pondre aux exigences de l'interface externe tandis que les rĂ©gions de re-configuration sont reprogrammĂ©es pour fournir des fonctionnalitĂ©s diffĂ©rentes[8]
Une analogie peut ĂȘtre faite entre le changement de contexte avec un microprocesseur, oĂč l'Ă©tat actuel est conservĂ©, afin de passer Ă un processus diffĂ©rent. Cependant, dans le cas du FPGA le changement de contexte se fait au niveau matĂ©riel et non logiciel[8].
La RTR partielle prend une approche encore plus flexible que la re-configuration globale. Cette flexibilitĂ© permet Ă des ressources matĂ©rielles de sâadapter au profil d'exĂ©cution de la demande avec une granularitĂ© plus fine que celle de la RTR globale[7].
ConsidĂ©rant que la RTR globale met en Ćuvre le processus d'exĂ©cution par un chargement important des partitions, la RTR locale nâa besoin de charger que les fonctionnalitĂ©s nĂ©cessaires Ă chaque Ă©tape dans le temps. Cela peut rĂ©duire la quantitĂ© de temps consacrĂ© au tĂ©lĂ©chargement des configurations. Et peut conduire Ă une plus efficace exĂ©cution du matĂ©riel allouĂ©[9].
Mise en Ćuvre dâune RTR partielle
L'avantage principal que la RTR partielle a sur celle globale est la capacitĂ© de crĂ©er les opĂ©rateurs fonctionnels Ă une granularitĂ© fine qui font l'utilisation plus efficace des ressources du FPGA. Ceci est important pour les applications qui ne sont pas faciles Ă diviser en partitions de tailles Ă©gales. Toutefois, cet avantage peut entraĂźner une pĂ©nalitĂ© de conception trĂšs Ă©levĂ©e en raison de la flexibilitĂ© accrue et de la complexitĂ© du systĂšme. Contrairement Ă la RTR globale oĂč les interfaces de circuits restent fixes entre les configurations, la RTR partielle permet Ă ces interfaces de changer Ă chaque configuration[9].
Le PARBIT
La re-configuration partielle pendant lâexĂ©cution est une tĂąche difficile, il est nĂ©cessaire d'isoler une zone spĂ©cifique Ă l'intĂ©rieur du FPGA et tĂ©lĂ©charger les bits de configuration dedans.
L'outil PARBIT (PARtial BItfile Transformer) est un logiciel développé pour transformer les bitstreams de configuration initiale du FPGA en des bitstreams partiels. Avec cet outil. Il est possible de définir une zone partielle re-configurable à l'intérieur du FPGA et télécharger les bitstreams partiels dans cette zone[10].
Pour restructurer les bitstreams partiels de la re-configuration, l'outil utilise le flux de bits original (bitstream) et les paramĂštres donnĂ©s par l'utilisateur. Ces paramĂštres comprennent un bloc de coordonnĂ©es de la logique mise en Ćuvre sur le FPGA d'origine, les coordonnĂ©es de la zone pour la partie cible Ă programmer dans le FPGA et les options de programmation. Afin de gĂ©nĂ©rer les bitstreams partiels, le PARBIT lit les configurations du flux de bits original, copies seulement les bits relatifs Ă la zone dĂ©finie par l'utilisateur[10].
Il génÚre alors de nouvelles valeurs pour les registres de configuration de la zone de re-configuration partielle. Il existe deux modes que l'utilisateur peut utiliser pour spécification des paramÚtres utilisateur :
- Dans le premier, appelĂ© Slice mode, l'utilisateur spĂ©cifie une section contenant une ou plusieurs colonnes CLB. La section comprend les bits de contrĂŽle pour les IOBs en haut et en bas. L'outil gĂ©nĂšre le flux binaire partiel de ces colonnes, dans la mĂȘme position qu'ils ont Ă©tĂ© dans le bitstream original[10].
- Dans le second, block mode, des lignes et des colonnes d'une zone rectangulaire à l'intérieur du FPGA sont spécifiées. Le bloc est alors visé comme région cible de la re-configuration partielle[10].
- Figure 8 : Slice mode.
- Figure 9 : Block mode.
Outil de personnalisation de circuit
L'outil de personnalisation de circuit est un outil mis en Ćuvre dans lâarchitecture des circuits FPSLIC (Field Programmable System Level Integrated Circuit), qui sont des types FPGAs programmĂ©s par la sociĂ©tĂ© Atmel. Ces circuits rĂ©unissent sur une puce complexe, un cĆur de processeur standard avec ses mĂ©moires, ses pĂ©riphĂ©riques et lâhabituel rĂ©seau logique programmable des FPGAs permettant la re-configuration en fonction des besoins de lâapplication[11]. Habituellement, un circuit FPGA a un ensemble de paramĂštres dĂ©finissant son comportement, au cours de son chargement Ă partir dâune ROM externe. La fonction de cet outil est de simplifier la conception, le stockage des paramĂštres directement dans le flux binaire, sans utiliser la mĂ©moire ROM ou des micro-contrĂŽleurs externes. Les paramĂštres sont stockĂ©s en blocs de mĂ©moire (SRAM) du circuit FPSLIC, ils sont ensuite modifiĂ©s par la re-configuration locale ou distante (Ă partir d'un serveur qui stocke le fichier de configuration). Cette approche rĂ©duit le coĂ»t global du systĂšme, car il Ă©limine le besoin de dispositifs externes et / ou la logique de contrĂŽle associĂ©e pour permettre le rĂ©glage des paramĂštres pendant lâexĂ©cution[11].
Il y a trois acteurs impliqués dans cet outil : le développeur du logiciel, le concepteur du circuit FPSLIC, et l'utilisateur du circuit.
- Le dĂ©veloppeur du logiciel met en Ćuvre un logiciel layerhiding de dĂ©tails d'architecture du FPGA. Cette couche logicielle est mise en Ćuvre sous forme d'applet. L'applet communique avec un serveur. Le serveur utilise des classes Jbits pour ouvrir / Ă©crire et le flux de bits pour accĂ©der et modifier les informations contenues dans le flux binaire. Cette applet est la mĂȘme pour tous les circuits en cours d'adaptation[11].
- Le concepteur du circuit utilise des balises HTML pour passer des commandes et les paramÚtres à l'applet pour personnaliser son circuit. Dans la figure 10 : La référence à l'applet est dans la ligne 6 (BITGeneric.class). Le paramÚtre "path" (ligne 7) spécifie le nom de bitstream. Les paramÚtres "ip" et "port" (lignes 8 et 9) pour spécifier l'adresse IP du serveur et le service. Cela est nécessaire pour accéder à distance l'hÎte connecté au FPGA. nbsignals paramÚtre indique le nombre de paramÚtres configurables (ligne 10)[11].
- Enfin, l'utilisateur du circuits FPSLIC reçoit la description HTML. La page de re-configuration qui en rĂ©sulte est prĂ©sentĂ©e dans la Figure 12. Dans la page de re-configuration, les valeurs des signaux peuvent ĂȘtre modifiĂ©es, enregistrĂ©es et les fichiers partiellement tĂ©lĂ©chargĂ©s dans le dispositif FPSLIC. Par consĂ©quent, l'utilisateur peut alors rĂ©sumer tous les dĂ©tails concernant lâarchitecture, et effectuer une re-configuration Ă distance et partielle[11].
- Figure 10: ParamĂštres de l'applet.
- Figure 11:L'applet de reconfiguration.
Bénéfices de la RTR
La RTR partielle ou globale permet d'une part, une meilleure exploitation du composant, une rĂ©duction de surface de silicium employĂ© et donc du coĂ»t, et d'autre part, une Ă©volutivitĂ© assurant la possibilitĂ© de couvrir Ă terme des besoins nouveaux sans nĂ©cessairement repenser Ă l'architecture dans sa totalitĂ©. L'un des points forts de la RTR est effectivement de permettre de reconfigurer en temps rĂ©el en quelques microsecondes tout ou une partie du circuit, c'est-Ă -dire permettre de modifier la fonctionnalitĂ© d'un circuit en temps quasi rĂ©el. Ainsi le mĂȘme CLB pourra Ă un instant donnĂ© ĂȘtre intĂ©grĂ© dans un processus de filtrage numĂ©rique d'un signal et l'instant d'aprĂšs ĂȘtre utilisĂ© pour gĂ©rer une alarme. On dispose donc quasiment de la souplesse d'un systĂšme informatique qui peut exploiter successivement des programmes diffĂ©rents, mais avec la diffĂ©rence fondamentale qu'ici il ne s'agit pas de logiciel mais de configuration matĂ©rielle, ce qui est infiniment plus puissant[1].
Auto-re-configuration
Les FPGAs sont capables de se reprogrammer dynamiquement indĂ©pendamment et sans aucune interaction nĂ©cessaire de l'homme. Les mĂ©thodes ou outils utilisĂ©s pour mettre en Ćuvre cette re-programmation dĂ©pendent des types de FPGAs et de leurs concepteurs.
Une conception qui met en Ćuvre l'auto-re-configuration est une Ă©tape importante pour la rĂ©alisation d'un systĂšme qui peut dĂ©tecter des erreurs dans ses circuits et de reprogrammer les modules au besoin pour corriger ces erreurs.
La mise en Ćuvre d'un systĂšme auto-re-configurable exige un examen minutieux de plusieurs choix de conception importants. Les systĂšmes mettant en Ćuvre l'auto-re-configuration sont toujours rares dans la plupart des applications FPGA en raison de la surcharge relativement importante requise pour la phase d'analyse initiale et pour trouver un flot dâoutil de travail[12].
En 2007, Xilinx a essayĂ© de faire des systĂšmes partiellement auto-re-configurables plus faciles Ă mettre en Ćuvre. Bien qu'un flux d'outil plus standardisĂ© et convivial pour l'auto-re-configuration partielle puisse ĂȘtre disponible bientĂŽt, une grande quantitĂ© de recherche et d'essais a dĂ» ĂȘtre utilisĂ©e afin d'atteindre un systĂšme d'auto-re-configurable en utilisant les outils et la documentation actuellement disponibles[12].
Auto-reconfiguration partielle
Lâauto-re-configuration partielle est la possibilitĂ© de modifier la configuration d'une partie du FPGA par lui-mĂȘme tandis que d'autres processus continuent de fonctionner. DiffĂ©rentes mĂ©thodes ont Ă©tĂ© proposĂ©es pour mettre en Ćuvre lâauto-re-configuration partielle notamment:
- En utilisant les PowerPCs :
L'auto-re-configuration sur les FPGAs de type Xilinx Virtex est mis en Ćuvre en se servant du "Port d'AccĂšs de Configuration Interne" (ICAP). Un bitstream partiel est Ă©crit dans l'ICAP, ce bitstream reconfigure alors les parties spĂ©cifiĂ©es du FPGA avec la nouvelle logique. La communication avec l'ICAP peut ĂȘtre mise en Ćuvre par un PowerPC embarquĂ©.
Un avantage significatif Ă l'utilisation du PowerPC, est que Xilinx a fourni une IP core qui s'interface avec l'ICAP. Une IP core reprĂ©sente une unitĂ© logique rĂ©utilisable ou un schĂ©ma de configuration qui est la propriĂ©tĂ© intellectuelle (IP) d'une sociĂ©tĂ© (ici c'est Xilinx). GrĂące Ă cette interface, le PowerPC peut communiquer avec l'ICAP par de simples appels de mĂ©thodes, alors que la plupart des conceptions de l'interface de bas niveau sont cachĂ©es Ă l'utilisateur. En fait, une fois que le bitstream est chargĂ© en mĂ©moire, une seule mĂ©thode doit ĂȘtre appelĂ©e pour reprogrammer avec succĂšs un module reconfigurable sur le pĂ©riphĂ©rique[13].
- En utilisant la compression et décompression des données de configuration (bitstream):
Toujours avec les FPGAs Xilinx Virtex. Lorsqu'un systĂšme utilise cette fonctionnalitĂ© avec de nombreux bitstreams de configuration pour le remplacement des parties Ă re-configurer dans la mĂ©moire, la nĂ©cessitĂ© de la mĂ©moire sâaugmente. La somme des mĂ©moires qui doit ĂȘtre fournie pour les donnĂ©es de configuration n'est pas nĂ©gligeable. Ce fait suggĂšre l'enquĂȘte de la compression des donnĂ©es avant qu'elles ne soient stockĂ©es dans des modules de mĂ©moire d'un systĂšme. Les donnĂ©es compressĂ©es de bitstream doivent ĂȘtre dĂ©compressĂ©es avant de les transfĂ©rer vers le FPGA[14].
La dĂ©compression est assurĂ©e par un module universel qui est capable de la rĂ©aliser au moment de l'exĂ©cution. Ce module pourrait ĂȘtre une partie d'un systĂšme d'exĂ©cution qui contrĂŽle la dĂ©compression et qui reçoit les donnĂ©es pour la reconfiguration dynamique partielle. Les donnĂ©es dĂ©compressĂ©es sont ensuite transfĂ©rĂ©es Ă l'interface de configuration du FPGA.
Les signaux internes de commande générés commencent la décompression des données de configuration stockées dans la mémoire externe. En connectant la sortie du décompresseur à l'interface de la zone de reconfiguration partielle, le systÚme est capable de se reconfigurer[14].
L'impact de la re-configuration dynamique
La reconfiguration dynamique permet d'augmenter l'efficacité d'un FPGA en allouant ses ressources logiques à plusieurs tùches[15]. Ainsi, en utilisant la notion de mémoire virtuelle qui permet entre autres d'exécuter un programme de taille plus grande que la mémoire physique disponible, un FPGA reconfigurable dynamiquement peut offrir une quantité importante de ressources logiques virtuelles et les mapper au moment de l'exécution sur une quantité réduite de ressources physiquement disponibles[15].
Un autre avantage qui suscite un intĂ©rĂȘt croissant chez les chercheurs, est la flexibilitĂ© introduite par la reconfiguration dynamique des FPGA qui se manifeste Ă deux niveaux. Le premier niveau permet au concepteur, de facilement adapter son application pour faire face Ă de nouvelles contraintes ou pour remplacer un algorithme par un autre plus efficace. Cette flexibilitĂ© assure une certaine Ă©volution du systĂšme[15]. Le second niveau se situe au choix des tĂąches Ă exĂ©cuter, qui peut se faire dynamiquement, par exemple en fonction des donnĂ©es Ă traiter. On peut donc tout Ă fait imaginer que les donnĂ©es d'entrĂ©e puissent influer en temps rĂ©el sur l'enchaĂźnement des algorithmes. Le matĂ©riel devient extrĂȘmement mallĂ©able et contrĂŽlable par logiciel, il peut ĂȘtre utilisĂ© Ă des instants diffĂ©rents pour exĂ©cuter des opĂ©rations diffĂ©rentes[15].
ThĂ©oriquement, la reconfiguration dynamique n'est pas rĂ©servĂ©e Ă une catĂ©gorie particuliĂšre de FPGA. Cependant, certains sont plus adaptĂ©s que d'autres pour satisfaire les contraintes temps rĂ©el. Le FPGA idĂ©al pour construire un systĂšme reconfigurable dynamiquement doit possĂ©der une vitesse d'exĂ©cution Ă©levĂ©e et une durĂ©e de reconfiguration trĂšs faible[15]. Malheureusement, les FPGAs commercialisĂ©s Ă l'heure actuelle ne rĂ©unissent que partiellement ces deux caractĂ©ristiques. Cependant, un FPGA offrant une seule des deux caractĂ©ristiques sans que la deuxiĂšme ne soit excessivement pĂ©nalisante, peut ĂȘtre utilisĂ© efficacement pour construire un systĂšme dynamique[15].
La durée de re-configuration a aussi un impact sur les performances d'un systÚme dynamique, particuliÚrement si la modification de la fonctionnalité intervient fréquemment[15]. La meilleure utilisation d'un FPGA dans un systÚme dynamique est alors de servir de coprocesseur à une machine hÎte pour accélérer des traitements répétitifs sur un volume de données important[15].
Exemple d'application des FPGA
Ici on parle d'une architecture qui met en Ćuvre des FPGAs dans une application de traitement d'images. L'architecture s'appelle ARDOISE. Lâambition dâARDOISE est de pouvoir enchaĂźner les exĂ©cutions dâun flot dâalgorithmes de segmentation dâimages sur une mĂȘme structure physique. Tout en reconfigurant plusieurs fois les FPGA au cours du traitement dâune mĂȘme image[4].
On commence par étudier la zone re-configurable dynamiquement et son fonctionnement. Ce fonctionnement nécessite un contrÎleur ce qui justifie l'architecture finale d'ARDOISE qui est abordée dans la suite[16].
- Architecture de la zone re-configurable
La partie re-configurable dynamiquement d'ARDOISE est constituée de 3 modules (ou plus) identiques appelés cartes filles. Une carte mÚre dont l'utilité et la structure seront décrites ultérieurement s'ajoute aux cartes filles. Voir la figure 12
[16].
On peut interconnecter jusqu'à 8 cartes filles. La figure 13 illustre quatre cartes filles interconnectées. Chacune des cartes filles est constituée d'un FPGA AT40k construit par la société ATMEL et de deux SRAM de 1MB[16]
.
- Exemple de fonctionnement
Prenons trois cartes filles interconnectées pour réaliser des traitements d'image. On appelle UTGC (Unité de Traitement Grande Vitesse), la carte fille centrale. Les deux autres cartes filles sont les GTI (Gestionnaire de Tampon Image). on suppose qu'une image est présente dans la mémoire A. Une premiÚre configuration des FPGA permet de réaliser un premier traitement de cette image. Le résultat est stocké dans la mémoire C. On peut ensuite re-configurer l'architecture pour réaliser un traitement sur ce résultat. Le résultat du premier traitement est l'entrée du deuxiÚme. La deuxiÚme configuration prend donc ses entrées dans la mémoire C et stocke ses résultats dans la mémoire A. La figure 14 (à la fin de cette section) illustre cette explication. On peut réaliser plusieurs re-configurations en inversant à chaque fois le rÎle des mémoires A et C[16].
Pendant que l'architecture est reconfigurée pour réaliser des calculs entre les mémoires A et C, on réalise l'acquisition d'une nouvelle image dans la mémoire B. Voir figure 15 (à la fin de cette section).
On est aussi en mesure de communiquer le résultat, stocké dans la mémoire D, de la série de traitements réalisés sur l'image précédente. Tant que ces deux opérations ne sont pas terminées, on dispose de temps pour reconfigurer l'architecture. AprÚs cela, on dispose d'une nouvelle image dans la mémoire B, et le résultat des différentes configurations est stocké dans la mémoire C, on est alors en mesure de reprendre le processus en inversant le rÎle des mémoires nord et sud. Une fois ce processus terminé, on se retrouve dans l'état initial. Une image est stockée dans la mémoire A, un résultat dans la mémoire C. On peut recommencer le cycle[16].
Le dĂ©couplage des flux de donnĂ©es permet d'adapter la frĂ©quence de traitement Ă chaque configuration. Le temps gagnĂ© en utilisant la frĂ©quence maximum autorisĂ©e par la premiĂšre configuration permet, grĂące Ă la re-configuration dynamique, de rĂ©aliser plusieurs traitements sur les mĂȘmes matĂ©rielles[16]
.
- Description de l'architecture ARDOISE
Pour mettre en Ćuvre la re-configuration dynamique des cartes filles, il est nĂ©cessaire de se synchroniser sur le flux vidĂ©o et de sĂ©quencer les phases de re-configuration et de calcul. Ces opĂ©rations peuvent ĂȘtre intĂ©grĂ©es Ă la zone re-configurable dynamiquement en figeant une partie de cette zone. Pour le faire, on peut utiliser la re-configuration partielle des FPGA. NĂ©anmoins, il est beaucoup plus commode d'ajouter un contrĂŽleur de configuration. Le sĂ©quencement des re-configurations est donc confiĂ©, dans l'architecture ARDOISE Ă la carte mĂšre. Pour rĂ©aliser cette opĂ©ration efficacement la carte mĂšre dispose de[16]:.
- une mémoire SRAM pour stocker les fichiers de configuration de la zone re-configurable dynamiquement en attendant de la reconfigurer[16].
- un circuit d'horloges programmables afin d'adapter la fréquence de traitement à chacune des configurations qui prennent place dans la zone re-configurable [16].
- un FPGA reconfiguré statiquement qui peut soit contrÎler l'architecture entiÚre (SRAM, horloges et zone re-configurable dynamiquement) en mode autonome, soit jouer le rÎle d'interface entre ces éléments et un processeur en mode supervisé[16].
- une mémoire FLASH qui contient la configuration du FPGA de la carte mÚre ainsi que les configurations les plus utilisées des cartes filles[16].
- Figure 14: Fonctionnement de la partie reconfigurable d'ARDOISE: traitement d'une image.
- Figure 15: Fonctionnement d'ARDOISE: traitement de l'image suivante.
Annexes
Références
- Les composants FPGAs
- Marc, page 12
- Brad, page 420
- Didier, page 1
- Brad, page 422
- Brad, page 423
- Brad, page 427
- FPGA Run-Time Reconfiguration: Two Approaches
- Brad, page 428
- Self-reconfigurable platform for cryptographic application
- Daniel, page 5
- Evan, page 22
- Evan, page 23
- Michael, page 1
- Lounis, page 44
- Traitement d'images
Bibliographie
- (en) Brad L.Hutchings et Michael J.Wirthlin, « Implementation Approches for reconfigurable logic applications », 5th International Workshop, FPL '95 Oxford, United Kingdom, vol. 975,â , p. 420-431
- Lounis Kessal, Nicolas Abel et Didier Demigny, « Traitement temps rĂ©el des images en exploitant la reconfiguration dynamique : architecture et programmation », TSI,â , p. 41-58
- Marc LEGER, « FiabilitĂ© des Reconfigurations Dynamiques dans les Architectures Ă Composants », ThĂšse d'Ă©tat, vol. 192,â
- (en) Jim Burns, Adam Donlin, Jonathan Hogg, Satnam Singh et Mark de Wit, « A Dynamic Reconfiguration Run-Time System », IEEE sensors Journal, vol. 75,â
- (fr) La reconfiguration dynamique d'un FPGA
- (en) Wang Lie et Wu Feng-yan, « Dynamic partial reconfiguration in FPGAs », Third International Symposium on Intelligent Information Technology Application, vol. 2,â , p. 445-448
- (en) Miguel L. Silva et Joao Canas Ferreira, « Exploiting dynamic reconfiguration of platform FPGAs: Implementation issues », Parallel and Distributed Processing Symposium.20th International, vol. 8,â
- (en) Steve Wichman, Sammit Adyha, Rohan Ambli, Brad Alcorn, Dr.Daniel Connors et Daniel Fay, « Partial Reconfiguration Across FPGAs », International Conference on Military and Aerospace Programmable Logic Devices (MAPLD), vol. 11,â
- Didier Demigny, Ryad Bourguiba, Lounis Kessal et Michel Leclerc, « La Reconfiguration dynamique des FPGA : Que doit-on en attendre ? », Dix-septiĂšme colloque GRETSI, Vannes, vol. 4,â
- (en) Edson L.Horta, John W.Lockwood, David E.Taylor et David Parlour, « Dynamic Hardware Plugins in an FPGA with Partial Run-time Reconfiguration », 39th annual Design Automation Conference,â , p. 343-348
- (en) Vincenzo Rana, Marco Santambrogio, Donatella Sciuto, Boris Kettelhoit, Markus Koester, Mario Porrmann et Ulrich Ruckert, « Partial Dynamic Reconfiguration in a Multi-FPGA Clustered Architecture Based on Linux », Parallel and Distributed Processing Symposium.IEEE International, vol. 8,â , p. 1-8
- (en) Florent Berthelot et Fabienne Nouvel, « Partial and Dynamic Reconfiguration of FPGAs: a top down design methodology for an automatic implementation », Emerging VLSI Technologies and Architectures, 2006. IEEE Computer Society Annual Symposium on, vol. 00,â
- (en) Michael Huebner, Michael Ullmann, Florian Weissel et Juergen Becker, « Real-time Configuration Code Decompression for Dynamic FPGA Self-Reconfiguration », Parallel and Distributed Processing Symposium, 18th International, vol. 6,â
- (en) Salih Bayar et Arda Yurdakul, « Self-Reconfiguration on Spartan-III FPGAs with Compressed Partial Bitstreams via a Parallel Configuration Access Port (cPCAP) Core », Research in Microelectronics and Electronics. PRIME 2008. Ph.D.,â , p. 137-140
- (en) Daniel Mesquita, Fernando Moraes, JosĂ© Palma, Leandro Möller et Ney Calazans, « Remote and Partial Reconfiguration of FPGAs: tools and trends », Parallel and Distributed Processing Symposium, vol. 8,â
- (en) Evan Custodio et Brian Marsland, « Self-Healing Partial Reconfiguration of an FPGA », Project Number:MQP-BYK-GD07 Submitted to the Faculty of the WORCESTER POLYTECHNIC INSTITUTE in partial fulfillment of the requirements for the Degree of Bachelor of Science,â
Autres Références Bibliographiques
- (en) Tamas Raikovich, « Dynamic Reconfiguration Of FPGA Devices », 15th PhD Mini-symposium. Budapest, Hungary, vol. 2,â , p. 72-73
- (en) Neil W. Bergmann, Yi Lu et John A. Williams, « Automatic Self-Reconfiguration of System-on-Chip Peripherals », International Symposium on Field-Programmable Custom Computing Machines,â
- Ryad Bourguiba, Lounis Kessal et Didier Demigny, « ReconïŹguration dynamique des FPGA pour une segmentation dâimage adaptative et temps rĂ©el », SeiziĂšme colloque Grenoble,â
- (fr) Circuits reconfigurables : Les FPGAs
- (en) Partial Reconfiguration Across FPGAs
- (fr) Reconfiguration partielle
- (fr) Les circuits logiques programmables FPGA
- (en) FLRe: Reprogrammation partielle et dynamique de FPGA par microcontrĂŽleur