AccueilđŸ‡«đŸ‡·Chercher

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].

Classement des FPGAs
Figure 1 : Classement des FPGAs

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.

Architecture des FPGAs
Figure 2 : Architecture des FPGAs

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

Re-configuration des FPGAs
Figure 3 : Re-configuration des FPGAs


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)

Re-configuration pendant l’exĂ©cution
Figure 4 : Re-configuration des FPGAs pendant l’exĂ©cution

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].

Reconfiguration globale pendant l’exĂ©cution
Figure 5 : Re-configuration globale des FPGAs pendant l’exĂ©cution
  • 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].

Reconfiguration Partielle pendant l’exĂ©cution
Figure 6 : Re-configuration Partielle des FPGAs pendant l’exĂ©cution
  • 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].

Exemple de re-configuration partiel du FPGA
Figure 7 : Exemple de re-configuration partiel des FPGAs

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 8 : Slice mode.
  • Figure 9 : Block 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 10: ParamĂštres de l'applet.
  • Figure 11:L'applet de reconfiguration.
    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]
.

L'interconnexions des cartes filles
Figure 13 : La carte mĂšre et trois cartes filles
  • 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 14: Fonctionnement de la partie reconfigurable d'ARDOISE: traitement d'une image.
  • Figure 15: Fonctionnement d'ARDOISE: traitement de l'image suivante.
    Figure 15: Fonctionnement d'ARDOISE: traitement de l'image suivante.

Annexes

Références

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

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.