• Aucun résultat trouvé

1.2 Classification

1.4.3 Architectures à Petit Grain

Les architectures reconfigurables à petit grain sont des dispositifs contenant des composants logiques et un réseau d’interconnexion programmable. Les unités logiques sont programmables afin d’émuler les fonctions logiques tels que AND, OR, XOR, NOT, ou même des fonctions plus complexes comme des decodeurs. Dans la plupart des dispositifs à petit grain, notamment les FPGAs, ces éléments programmables (blocs logiques) incluent des éléments de mémoire, qui vont des simples bascules jusqu’à des blocs complets de mémoire.

La hiérarchie d’interconnexion permet au concepteur de circuits une flexibilité très importante. Dans le cas des FPGAs, cette flexibilité reste au-delà de la manufacture du dispositif, et pour cela il est utilisé le terme "reconfigurable" à ce genre de dispositifs.

Les dispositifs reconfigurables à petit grain, comme les FPGAs sont généralement plus lents que les ASICs ou que les architectures à gros grain, et aussi ils consomment plus d’énergie. Cependant, ils offrent des avantages intéressants. Par rapport aux ASICs, les FPGAs ont un temps plus court pour arriver sur le marché, coûtent moins cher pour faibles quantités, et restent flexibles après la fabrication. En comparaison avec les architectures à gros grain, les FPGAs offrent un ensemble d’outils de configuration et de programmation beaucoup plus mûr que les premiers.

Les FPGAs ont été conçus au départ pour substituer les CPLDs comme "logique de colle"6

pour les PCBs. Toutefois, due à l’évolution des technologies de synthèse de silicium, la taille et

6

1.4. État de l’art 27

la complexité des FPGAs ont augmenté, les menant au rôle de compétiteurs sur le marché des systèmes sur puce. Aujourd’hui le domaine d’applications des architectures à petit grain s’étend aux algorithmes pour l’industrie spatial, imagerie médicale, vision par ordinateur, cryptographie, au delà d’une vaste étendue d’autres domains de recherche et de développement.

Dans la suite deux architectures à petit grain représentatives du marché industriel actuel sont présentées. Les FPGAs Virtex et FPSLIC ont été choisis pour ses capacités de reconfiguration dynamique, implantées de manière différent en chacun.

FPSLIC

Le FPSLIC [4] est une combinaison d’un FPGA de la famille AT40k fabriquée par ATMEL avec le processeur AVR (architecture RISC) et quelques ressources d’entrées et sortie et de mémoire, comme il peut être observé sur la Figure 1.13. Il s’agit donc d’une approche SoC (System-on-Chip), dont la flexibilité matérielle est garantie par un FPGA dynamiquement reconfigurable.

Etat et Test

Bus de Données 8−bit

32 x 8 registres ULA + Multiplieur Unité serial Unité 2 UARTs Deux Compteurs Watchdog Contrôle d’Interruptions 2 lignes en série Programmable Registres de à 8−bit Compteur PWM à 16−bit Timer 16 lignes E/S E/S E/S E/S 4 lignes Lignes d’interruption Adressage indirecte Adressage directe Lignes de contrôle AT40k FPGA Decodeur d’Adresses 16k x 16 mémoire de Programme Registre d’Instructions Decodeur d’Instructions Compteur de Programme (PC) 16k x 8 mémoire de Données E/S Programmable d’Interruption

Fig. 1.13: Vue d’ensemble du SoC FPSLIC

La famille AT40K est composée par une matrice symétrique de cellules basées sur des LUTs à petit grain. Cette symétrie facilite la ré-allocation de ressources en cas de reconfiguration dyna- mique. La Figure 1.14 montre que chaque cellule peut communiquer soit par des liaisons directes (orthogonaux et diagonaux) aux cellules voisines (a) ; soit à travers de cinq bus horizontaux et cinq

28 Architectures Reconfigurables bus verticaux (b). CELL CELL CELL CELL CELL CELL CELL CELL CELL WXYZL WXYZL CELL

(a) Connexions cellule à cellule (b) Connexions bus à bus

Fig. 1.14: Ressources de routage du FPSLIC

Des unités de connexion, dites répéteurs, sont placées après chaque quatre cellules, et ont pour but diviser les bus locaux dans des segments. Ces bus et cellules fonctionnent en deux dimensions. Une matrice 4 × 4 de cellules encadrée par ces répéteurs est appelée secteur. Dix bus locaux (cinq horizontaux et cinq verticaux) servent chaque ensemble de quatre cellules. Les deux bus par plan séparent deux secteurs. Ainsi, il existent quarante bus qui passent à travers des secteurs, fournissant des vastes ressources de routage.

LES FPGAs AT40k contiennent des blocs de mémoire SRAM Static Random Access Memory qui sont distribués au sein de la matrice. Les blocs de SRAM 32 × 4-bit sont localisés à l’intersection des secteurs et sont programmables pour fonctionner de façon synchrone ou asynchrone. De plus, ces blocs peuvent être utilisés comme des mémoires simples ou double ports.

Par rapport à la reconfiguration dynamique, les FPGAs de la famille AT40k sont reconfigurables via la commutation de contexte. Dans ce genre de reconfiguration l’application est découpée en des modules logiques que sont stockés dans une mémoire de configuration. En supposant qu’à chaque instant il y a juste une portion du FPGA qui réalise des opérations, la portion non-utilisée peut servir à recevoir des nouveaux modules de l’application (Figure 1.15).

La commutation de contexte dans la famille AT40k est implantée comme le cache dans les systèmes numériques tels que les ordinateurs. Dans ces systèmes, les données les plus utilisées sont stockées dans des mémoires plus rapides (cache), pendant que les données moins souvent nécessaires sont gardées dans des mémoires plus lentes, tels que la DRAM. Dans le cas de la famille AT40k, seulement une partie de la logique est implantée dans le FPGA, pendant que les fonctions les moins utilisées restent dans une mémoire auxiliaire (dite cache logic). Au fur et à mesure que nouvelles fonctions se font nécessaires, elles sont chargées dans la cache logic, pouvant compléter, modifier ou substituer les fonctions déjà implantées dans le FPGA.

La possibilité de réaliser la reconfiguration par la commutation de contexte permet l’utilisa- tion de ce FPGA pour des applications nécessitant un matériel "évolutif", comme des réseaux de neurones et algorithmes génétiques.

1.4. État de l’art 29 Modules actifs Modules inactifs Ressources non−utilisés

FPGA AT40K

Mémoire de configurations

Fig.1.15: Schéma de reconfiguration par commutation de contexte du FPGA AT40k

Virtex

Les dispositifs Virtex-4 [101] sont des FPGAs à petit grain (LUTs à 4 entrées organisés dans des CLBs), avec des éléments de calcul à gros grain embarqués (DSP, processeur PowerPC), en plus des blocs de mémoire et ressources d’entrée et de sortie (avec un transceiver à 11-Gigabit inclus), ce qui fait de cette architecture aussi un SoC, conforme la Figure 1.16. Ce dispositif comporte aussi un système de sécurisation du vecteur de configuration basé sur l’algorithme AES (Advanced Encryption Standard). d’Entrée/Sortie Ressources d’Horloge Arbre et contrôle et FIFO BlockRam Transceiver jusqu’à 11−Gigabit du Bitstream Chiffrement PowerPC µprocessor Logique Reconfigurable Programmable DSP

Fig. 1.16: Vue d’ensemble du FPGA Virtex-4

La fonctionnalité des circuits Virtex est déterminée à travers un vecteur de configuration, appelé bitstream. Les fichiers de configuration contiennent un mélange de commandes et de données qui peuvent être lues et écrites par l’interface de configuration.

30 Architectures Reconfigurables

L’organisation interne des FPGAs Virtex est en colonnes, qui peuvent être lues ou écrites individuellement. Cette caractéristique permet la reconfiguration partielle du dispositif, puisque la modification d’une colonne n’entraîne pas forcément le changement dans les colonnes adjacentes.

Cette régularité dans la distribution des éléments de calcul qui composent l’architecture du FPGA Virtex permet des actions de ré-allocation et defragmentation, opérations essentielles pour la reconfiguration dynamique [23].

Étant l’élément reconfigurable de base, les CLBs pourvoient la logique synchrone et combi- natoire, mais aussi peuvent fonctionner comme des mémoires (LUTRAM ) ou encore comme des registres à décalage. Chaque CLB possède deux ensembles de fonctions identiques, dénommés slices. La Figure 1.17 exhibe la structure interne d’une CLB, où chaque slice contient deux LUTs (F et G), deux bascules, un buffer à trois états, un circuit de propagation rapide (carry), en plus de ressources de routage. Chaque LUT à quatre entrées est composée par 16 bits de configuration.

F4 F2 F1 LUT Contrôle F3 BX Carry & G4 G3 G2 G1 LUT Contrôle BY Carry & YB Y XB X XQ CIN COUT SP D Q C R SP D Q C R F4 F2 F1 LUT Contrôle F3 BX Carry & G4 G3 G2 G1 LUT Contrôle BY Carry & YB Y XB X XQ CIN COUT SP D Q C R SP D Q C R

Fig. 1.17: Architecture interne simplifiée d’une CLB

Les blocs d’entrée et sortie (plus souvent appelés IOBs - Input / Output Blocks) sont l’interface entre les broches et la logique configurable interne. Les IOBs sont optimisées pour des applications synchrones. Ces optimisations comprennent deskewing, sérialisation et de-sérialisation de données, division d’horloge, et ressources pour les horloges locaux dédiés.

En ce qui concerne la mémoire embarquée (BlockRAM ), il existent des modules de 18K-bit double-ports. De plus, les BlockRAMs contiennent des FIFOs Firs In-First Out - queues program- mables.

Un système de gestion d’horloge facilite les solutions pour compenser les retards dans la distri- bution de l’horloge. Le FPGA contient aussi des ressources pour multiplier ou diviser l’horloge.

Puisqu s’agit d’un Soc, le circuit possède aussi des éléments de calcul avec différents tailles de grain. En plus des LUTs (petit grain), les Virtex ont :

• grain moyen : Multiplieurs à 18-bit, additioneur intégré, et un accumulateur à 48-bit. • gros grain : DSPs et deux processeurs PowerPC.

Pour conclure, tous les composants dans la Virtex-4 utilisent le même schéma d’interconnexion et le même accès à la matrice de routage globale. Les modèles de timing sont partagés, augmentant la possibilité de prévision de performance pour les systèmes opérant à grande vitesse.

1.4. État de l’art 31

ARDOISE

Le projet ARDOISE (Architecture Reconfigurable Dynamiquement Orientée Image Signal Em- barquable) vise à démontrer l’intérêt des architectures matérielles à reconfiguration dynamique (RD) dans les systèmes associant contraintes temps réel fortes et versatilité des traitements. À l’heure actuelle, ARDOISE est la seule architecture développée en France, dont un prototype a effectivement été réalisé et testé en situation réelle, qui mette en oeuvre ce concept [34].

L’idée de base de cette architecture est d’enchaîner des algorithmes nécessaires au traitement d’images dans la même structure matérielle, en utilisant la reconfiguration à petit grain à quelques reprises, pendant le calcul d’une seule image. Cela équivaut à s’en servir d’un FPGA afin d’exé- cuter une séquence d’algorithmes selon un agenda pre-établi. Ce concept permet l’implantation d’applications sur FPGA avec une performance raisonnable, tout en gardant la flexibilité d’un microprocesseur.

L’architecture d’ARDOISE est basée sur trois modules identiques (Figure 1.18). Chacun contient un FPGA à 45k portes connectés à deux mémoires locales qui stockent les résultats intermédiaires. Ces blocs identiques sont appelés MARD (Modules ARDoises) et sont contrôlés par le module GCC (Gestion des Configurations et des Communications). Le GCC permet à ARDOISE de fonctionner soit en stand alone, soit en liaison avec un DSP. Le FPGA, la mémoire et la connexion à une liaison en série autorisent la configuration du FPGA et le chargement de la mémoire flash à partir d’un PC. Mémoire 256kx32 GTI1 FPGA Mémoire 256kx32 GCC FPGA Mémoire 256kx32 GTI2 FPGA Mémoire 256kx32 Mémoire 256kx32 Mémoire 256kx32 Calcul MARD MARD MARD Flash FPGAGCC PC DSP 40bits E/S

40bits 40bits 40bits

E/S

Fig. 1.18: Vue d’ensemble de l’architecture ARDOISE

Chaque module MARD possède les composants suivants :

• Deux bus de 40 bits qui assurent les échanges entre modules MARD et les entrées et sorties ; • Deux bus d’accès aux blocs mémoires de 32 bits de données ;

32 Architectures Reconfigurables

• Un bus de configuration connecté au module GCC ; • Un bus connecté à l’ensemble des modules.

Les MARDS GTI1 et GTI2 pourvoient une interface avec les entrées et sorties du système, ce qui permet la de-synchronisation du module central de calcul (TGV) et le système d’acquisition d’images. Les différents traitements sont changés dans le module central. Les résultats partiels sont stockés dans les mémoires locales dans différents modèles, selon l’action de reconfiguration ou de calcul.

Bien que cette approche permet l’extension des modules pour augmenter la puissance de calcul, l’intérêt de ses auteurs est de plutôt exécuter l’ensemble des traitements dans un module unique, afin qu’ils puissent étudier la validité d’utilisation de la reconfiguration dynamique.