Architectures reconfigurables FPGA par Olivier SENTIEYS Professeur à l’École nationale supérieure des sciences appliquées et de technologie (ENSSAT) de l’Université de Rennes 1 à Lannion Chercheur et responsable du département architecture et de l’équipe-projet CAIRN commune au laboratoire IRISA et au Centre de recherche INRIA Rennes – Bretagne Atlantique et Arnaud TISSERAND Chercheur au Centre national de la recherche scientifique (CNRS) dans le laboratoire IRISA et l’équipe-projet CAIRN à Lannion Enseignant vacataire à l’École nationale supérieure des sciences appliquées et de technologie (ENSSAT) et l’École normale supérieure de Rennes 1. Historique et terminologie..................................................................... 2. 2.1 2.2 2.3 2.4 2.5 2.6 Architecture générique d’un FPGA ..................................................... Blocs logiques configurables ...................................................................... Interconnexions programmables ............................................................... Blocs matériels dédiés................................................................................. Processeurs dans les FPGA ......................................................................... Blocs entrées/sorties et horloges programmables ................................... Configuration des FPGA .............................................................................. — — — — — — — 3 4 4 5 6 6 6 3. 3.1 3.2 3.3 3.4 3.5 3.6 3.7 Exemples de familles de FPGA ............................................................. FPGA Altera .................................................................................................. FPGA Xilinx................................................................................................... FPGA Actel/Microsemi ................................................................................. FPGA Achronix ............................................................................................. Autres types de FPGA .................................................................................. Cartes de développement et d’accélération .............................................. Conversion de technologies FPGA vers ASIC ........................................... — — — — — — — — 7 7 10 15 15 15 16 16 4. 4.1 4.2 4.3 4.4 4.5 Outils de développement ....................................................................... Langages de description ............................................................................. Synthèse logique ......................................................................................... Synthèse de haut niveau ............................................................................. Placement/routage ....................................................................................... Bibliothèques et macrogénérateurs de blocs IP ........................................ — — — — — — 16 17 17 17 18 19 5. Applications ............................................................................................... — 19 6. Conclusion.................................................................................................. — 20 Pour en savoir plus ........................................................................................... H 1 196 - 3 Doc. H 1 196 L es FPGA (Field Programmable Gate Arrays) sont des circuits intégrés dont la fonctionnalité est entièrement programmable par l’utilisateur après fabrication. Ils constituent une alternative aux circuits ASIC (Application Specific Integrated Circuits) dont la fonctionnalité est totalement figée en fonderie. Les FPGA sont un type particulier d’architecture reconfigurable. On parle de configuration pour leur processus de programmation. Différents types d’architectures reconfigurables se distinguent par le niveau de granularité des éléments programmables internes. Dans les FPGA, les éléments ont une fonctionnalité programmable à grain fin, c’est-à-dire pour chaque bit individuellement. Il existe des architectures reconfigurables à grain épais où la fonctionnalité est programmable au niveau des mots (par exemple 16 ou 32 bits). Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 H 1 196 – 1 Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________ Les FPGA utilisent les technologies les plus avancées disponibles à un moment donné (gravure 28 nm en 2012). Concevoir un ASIC dans ces technologies permettrait d’obtenir un système extrêmement performant, mais au prix d’un investissement colossal. Il faut, en effet, une équipe de conception importante, des outils coûteux et complexes, plusieurs mois de conception et enfin un budget important pour la fabrication. De plus, les délais de fabrication chez le fondeur peuvent être importants (quelques mois). Le temps de conception et vérification d’une solution FPGA est beaucoup plus court qu’en ASIC et nécessite moins d’efforts et de personnel. Bon nombre de détails techniques sont réglés par le fabricant du FPGA. Les FPGA sont fabriqués en grands volumes, ce qui permet de partager les coûts de conception par tous les clients. Un FPGA coûte quelques euros, pour les plus simples, à quelques centaines (voire milliers) pour les plus complexes. Pour des petites séries, les FPGA sont bien plus accessibles que des ASIC. Bien entendu, pour des grands volumes, une solution ASIC est plus rentable. Les mécanismes de configuration des FPGA réduisent les performances par rapport à des solutions ASIC. La vitesse est moindre et la consommation d’énergie supérieure. Mais le caractère reconfigurable permet d’optimiser le système dans le temps. On peut imaginer de mettre rapidement sur le marché une première solution, puis de l’améliorer dans le temps (Time-To-Market réduit) ou bien de supporter des nouveaux standards dans le temps sans devoir les « émuler » en logiciel. Les FPGA fournissent les très hautes performances du matériel mais avec une utilisation simple et rapide par configuration logicielle. Ainsi, on les retrouve dans de nombreux domaines d’applications : calcul à hautes performances, systèmes embarqués, télécommunications, routeurs de réseaux, réseaux sans fil, traitement du signal et des images, imagerie médicale, vision par ordinateur, cryptologie, dispositifs de sécurité, capteurs biomédicaux, bioinformatique, prototypage de circuits, etc. Les FPGA sont devenus le support matériel de base de systèmes sur puce complets ou SoC (System on Chip). Toutes les fonctionnalités sont alors intégrées dans le FPGA. Liste des acronymes en anglais (suite) Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 Liste des acronymes en anglais tiwekacontentpdf_h1196 ADC Analog to Digital Converter IP Intellectual Property AES Advanced Encryption Standard ISP In System Programming ALM Adaptive Logic Module LAB Logic Array Block ASIC Application Specific Integrated Circuit LE Logic Element BRAM Block RAM LUT Look-Up Table CLB Configurable Logic Block MAC Multiply and Accumulate CMOS Complementary Metal Oxide Semiconductor CPA Carry Propagation Adder NMOS Negative Metal Oxide Semiconductor Transistor CPLD Complex Programmable Logic Device PLA Programmable Logic Array DAC Digital to Analog Converter PMOS Positive Metal Oxide Semiconductor Transistor DSP Digital Signal Processing OTP One Time Programming P&R Place and Route RAM Random Access Memory FIFO First-In First-Out FPGA Field Programmable Gate Array FSM Finite State Machine RISC Reduced Instruction Set Computer GMAC Giga Multiply and Accumulate SoC System on Chip IO Input/Output SRAM Static Random Access Memory H 1 196 − 2 Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. − © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ______________________________________________________________________________________________ ARCHITECTURES RECONFIGURABLES FPGA 1. Historique et terminologie Les circuits intégrés permettent d’atteindre des très hautes performances pour une faible consommation d’énergie comparativement à des solutions logicielles. Cela s’explique par la spécialisation des fonctionnalités intégrées dans le circuit. Par contre, un circuit intégré est dédié à une tâche, ou un petit ensemble de tâches, alors qu’un processeur a une flexibilité quasiment sans limite. Les architectures reconfigurables, en particulier les FPGA, offrent, dans une certaine mesure, des compromis entre flexibilité, coût et performances inaccessibles aux ASIC et aux processeurs. Très tôt dans l’histoire de la micro-électronique, plusieurs dispositifs ont été proposés pour rendre les circuits intégrés plus flexibles par programmation ou configuration. Deux niveaux de programmation ont été proposés : une programmation directe et totale par l’utilisateur et une programmation partielle en fonderie. ■ Les premiers à apparaître furent les PLA (Programmable Logic Arrays ), des dispositifs très simples et totalement programmables par l’utilisateur. L’apparition de ces circuits date du début des années 1970. Leur principe est illustré en figure 1. Le « plan ET » est composé de deux réseaux de fils qui se croisent (sans contact avant configuration) : celui des fils des entrées xi (et leurs complémentaires x i ), et celui des fils en entrée des six portes ET. Le « plan OU » est composé de deux réseaux de fils : celui des produits pi et celui des entrées des deux portes OU. La configuration se fait en créant un contact électrique entre les fils des plans aux bons endroits (les petits carrés noirs sur la figure). La figure 1 illustre une configuration avec les produits : (p1, p2 , p3 , p4 ) = (x 1 x 2 , x 2 x 3 , x 1 x 3 , x 1 x 2 x 3 ) et les sorties : y1 = x1 x 2 + x 2 x 3 + x1 x 3 et y 2 = x 2 x 3 + x 1 x 2 x 3 En pratique, on utilise des portes NON-ET, NON-OU et des inverseurs à la place des portes ET et OU, car ces dernières sont moins efficaces en technologie CMOS (Complementary Metal Oxide Semiconductor ). ■ Les circuits prédiffusés (Gate Array ) sont des circuits dont la fonc- tionnalité est définie par l’utilisateur mais « configurée » par le fondeur. Dans ces circuits, il y a deux types de masques pour la fabrication : les masques communs et les masques personnalisables. Les masques communs sont identiques pour tous les circuits et clients. Ils sont utilisés pour les couches basses du circuit (dopages, isolants et grilles des transistors). Ce sont les couches les plus coûteuses à la fabrication. Des plaquettes (Wafers ) sont produites en grands volumes pour ces masques communs afin de réduire les coûts par mutualisation. Les masques personnalisables correspondent aux couches supérieures du circuit (niveaux de métallisation, connexions et isolants). Ces masques dépendent du circuit et du client (qui les spécifie). Le nombre d’étapes, et donc le coût, pour la fabrication est réduit car les étapes de réalisation des plaquettes « prédiffusées » sont faites pour des grands volumes. Le temps de fabrication est donc plus court pour le client. Bien entendu, la flexibilité est limitée. ■ Les circuits CPLD (Complex Programmable Logic Device ) sont une évolution des PLA. Ces circuits contiennent des portes logiques programmables et du routage, lui aussi programmable. Des bascules sont disponibles mais uniquement sur les entrées/sorties du circuit. Ils sont beaucoup utilisés comme interfaces logiques entre différents circuits. Nous donnons le vocabulaire technique principal en français et en anglais quand la traduction n’est pas immédiate, par exemple : bascule (Flip-Flop ). Nous avons pris le parti de ne pas traduire en français les acronymes ou abréviations en anglais du fait de leur très large utilisation dans les documents en français. Les différentes informations quantitatives données sont tirées d’analyses personnelles des auteurs. Elles sont potentiellement erronées et ne représentent en rien les informations officielles fournies par les fabricants. 2. Architecture générique d’un FPGA Un FPGA est un circuit intégré dont la fonctionnalité peut être « imprimée » dans le matériel grâce à une configuration chargée dans une mémoire. x1 Plan ET x2 x3 Plan OU y1 y2 p1 p2 p3 p4 p5 p6 Figure 1 – Exemple de PLA (Programmable Logic Arrays ) Cette mémoire, qu’elle soit de type volatile ou non-volatile, peut être programmée directement par l’utilisateur (d’où le terme Field Programmable ) sans nécessiter un passage coûteux en fonderie. D’une façon générale, un FPGA peut être vu comme un tableau d’éléments logiques élémentaires (d’où le terme Gate Array ) dont la fonctionnalité d’un élément et sa connexion avec un sous-ensemble d’éléments, voisins ou distants, dépendent de la configuration chargée dans le plan mémoire. La figure 2 donne une vue générique de l’architecture d’un FPGA. On y voit une zone homogène prenant la forme d’une large matrice connectant : – des blocs logiques (BL) ; – des blocs d’entrée/sortie (E/S) ; – des blocs de routage (R) selon des motifs variant selon les familles et les fabricants (§ 3). La taille de cette matrice dépasse maintenant facilement les 105 BL. À cette architecture très régulière s’ajoutent depuis quelques années différents éléments permettant de rendre le système implanté dans le FPGA beaucoup plus efficace en termes de performance ou d’énergie consommée. On trouve par exemple : – des blocs mémoire (RAM) de tailles diverses ; – des blocs arithmétiques optimisés pour les principales fonctions du traitement du signal ou de l’image (DSP) ; Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 H 1 196 – 3 Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________ Cin E/S Reset BL R A0 A1 R A M LUT A2 PROC CL FF S A3 Clock LUT : Look-Up Table Cout CL : Carry Logic FF : Flip-Flop Figure 3 – Vue générique d’un bloc logique (BL) de FPGA D S P PERI Horloge BL : R : E/S : RAM : DSP : Horloge : PERI : PROC : bloc logique bloc de routage bloc d'entrée/sortie bloc mémoire bloc arithmétique de traitement du signal bloc de génération d'horloges bloc contenant un périphérique spécifique processeur enfoui dans le FPGA 2.1 Blocs logiques configurables L’élément de calcul de base présent depuis les premiers FPGA est un bloc logique (BL) programmable. La figure 3 montre un exemple représentatif de BL. Celui-ci comprend en général une petite mémoire programmable que l’on appelle une LUT (Look-Up Table ) associée à une bascule (FF). Celle-ci peut être utilisée ou non selon la position (programmable par la configuration) du multiplexeur en sortie de la cellule. La LUT (ici une LUT à quatre entrées) permet de réaliser n’importe quelle fonction logique à quatre entrées et une sortie. Exemple : on peut configurer : S = A 0 ⋅ A1+ A2 ⋅ A 3 ou S = A 0 ⋅ A1⋅ A2 ⋅ A 3 Figure 2 – Vue générique d’un FPGA – des blocs de génération d’horloges programmables par l’utilisateur (horloge) ; – des blocs contenant un périphérique spécifique (PERI) ; – ou, de plus en plus, des processeurs enfouis dans le FPGA (PROC). Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 Ces derniers peuvent être présents en plusieurs exemplaires dans la puce et permettent de contrôler, de façon très efficace, le système complet. Il est donc maintenant possible de réaliser de véritables systèmes multiprocesseurs au sein de certains gros FPGA. tiwekacontentpdf_h1196 La reconfiguration matérielle du FPGA a cependant un coût puisqu’elle ajoute de nombreux composants d’interconnexion (R dans la figure 2) qui impliquent des pertes importantes en termes de surface et de performances (fréquence d’horloge, consommation d’énergie). On estime par exemple à plus de 90 % de la surface totale celle occupée par les éléments servant aux interconnexions et à mémoriser la configuration. De même, les fréquences de fonctionnement typiques des FPGA n’atteignent que quelques centaines de MHz tandis que les microprocesseurs peuvent fonctionner à quelques GHz. Une opération arithmétique implantée en dur dans un microprocesseur ou un ASIC peut donc être environ 10 fois plus efficace que sur un FPGA. Cependant, grâce au parallélisme massif disponible dans les FPGA récents, ceux-ci peuvent contrebalancer ces inconvénients au niveau de l’exécution de l’application complète et dépasse ainsi souvent les performances des microprocesseurs pour de nombreuses applications. De plus, la flexibilité de grain très fin permet par exemple d’implanter des contrôleurs très efficaces en comparaison d’un processeur complexe, ou de tirer partie des tailles de données de façon ad hoc. Exemple : un filtre sur 7 bits est bien plus efficace sur un FPGA car configuré pour cette largeur, alors qu’un processeur 32 bits est largement surdimensionné. H 1 196 – 4 Comme les fonctions arithmétiques sont souvent critiques dans les applications ciblées, un chemin spécifique pour la propagation de la retenue (CL) est prévu dans le BL afin de calculer la retenue sortante Cout en fonction des entrées Ai et de la retenue entrante Cin. Cela permet donc de réaliser efficacement des structures d’additions à propagation de la retenue CPA (Carry Propagate Adder ) car celle-ci est propagée directement aux BL voisins sans passer par des blocs de routage généraux, ce qui serait pénalisant en termes de performance. Un additionneur 16 bits à propagation de la retenue peut donc être réalisé à l’aide de 16 BL de façon assez efficace et très régulière dans une colonne de la matrice de BL. La configuration d’un BL est donc constituée d’un ensemble de bits permettant de spécifier : – la fonction de la LUT ; Exemple : 24 = 16 bits pour une LUT 4 → 1 – la présence ou non de la bascule ; – la provenance des signaux de reset et d’horloge (Clock) ; – l’utilisation ou non du bloc logique de propagation de la retenue (CL) ; – et bien d’autres fonctionnalités pour les BL des FPGA récents. On voit donc que plus de 20 bits sont nécessaires pour configurer un BL très simple, ce qui représente une taille mémoire importante pour les gros FPGA de plus de 105 BL. 2.2 Interconnexions programmables Afin de programmer une fonctionnalité spécifique dans un FPGA, il est nécessaire de connecter les BL entre eux et les BL avec d’autres blocs du FPGA (par exemple, des blocs DSP, des mémoires ou des Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ______________________________________________________________________________________________ ARCHITECTURES RECONFIGURABLES FPGA entrées/sorties du composant). Pour cela, un FPGA s’appuie sur une structure d’interconnexions programmables dont l’objectif est de créer un chemin qui soit le plus court possible entre deux points du FPGA (par exemple, la sortie d’un BL avec l’entrée d’un autre BL). La figure 4 représente une structure possible d’un bloc d’interconnexion programmable d’un FPGA. La figure 4a représente un exemple de structure élémentaire permettant de connecter quatre signaux (notés nord, sud, est et ouest) entre eux. Les losanges sont des bits de configuration qui permettent de configurer le schéma de connexions entre les quatre entrées/sorties. Grâce aux interrupteurs représentés sur la figure par deux transistors NMOS et PMOS en parallèle, il est donc possible de connecter n’importe quel signal à un, deux ou trois de ses voisins (par exemple, le signal issu de l’entrée nord peut être connecté vers les sorties sud et est). Il est important de noter que chaque signal peut être considéré soit comme une entrée, soit comme une sortie. La figure 4b prolonge la structure élémentaire (représentée ici par un point noir) afin de connecter quatre blocs de quatre signaux entre eux. Cette structure, appelée SB (Switch Box ) dans la littérature, peut prendre diverses formes selon la complexité du routage envisagé. On voit sur cet exemple que 6 bits sont nécessaires pour configurer un commutateur élémentaire et donc 96 bits pour le commutateur 4 × 4 de la figure 4a. À nouveau, cela représente une taille mémoire très importante pour les gros FPGA actuels de plus de 105 blocs logiques. Nord (i) Bits de configuration Ouest (i) Est (i) La structure pour les interconnexions programmables dans les circuits FPGA est donc principalement composée de Switch Box (SB) réparties sur la totalité du circuit. Celles-ci sont interconnectées entre elles et connectées aux différents BL à l’aide de fils métallisés. Parallèlement à ces lignes, nous trouvons des matrices programmables horizontalement et verticalement entre les divers BL. Le rôle de cette structure d’interconnexions est de relier avec un maximum d’efficacité les blocs logiques et les entrées/sorties afin que le taux d’utilisation dans un circuit donné soit le plus élevé possible. La plupart du temps, cette structure n’est pas homogène mais hiérarchique et contient différents motifs de connexion. – Tout d’abord, un ensemble limité de BL peut être regroupé au sein d’un cluster à l’aide d’un réseau d’interconnexion totalement connecté, ce qui permet ainsi de réaliser des fonctions logiques de type table à un plus grand nombre d’entrées sans utiliser des ressources de routage qui pénalisent les performances. Exemple : les circuits Altera regroupent 8 BL au sein d’un bloc appelée LAB. – Les connexions les plus classiques sont les interconnexions directes entre une SB et une autre SB voisine, un BL voisin ou un bloc d’entrée/sortie, selon une topologie matricielle régulière proche de celle de la figure 2. Grâce à cette structure, il est par exemple possible de connecter la sortie d’un BL à l’entrée d’un autre BL plus ou moins proche en passant à travers un nombre faible de SB. – Enfin, il existe des lignes métallisées plus longues qui parcourent toute la longueur et la largeur du FPGA et qui permettent de transmettre, avec un temps de propagation plus faible, les signaux entre différents éléments plus éloignés. On peut citer par exemple le routage des horloges, mais aussi les connexions aux mémoires, aux blocs DSP ou aux entrées/sorties. Ces longues lignes, bien que plus performantes, sont en nombre limité et doivent donc être utilisées en priorité pour les signaux critiques par les outils de routage du circuit FPGA. 2.3 Blocs matériels dédiés La réalisation d’éléments de mémoire est primordiale dans bon nombre d’applications soit pour stocker temporairement des petites quantités données, soit pour augmenter le débit en utilisant des techniques de pipeline. Dans les FPGA des premières générations, les mémoires pouvaient être réalisées à l’aide de deux éléments : les bascules et les LUT des blocs logiques. L’utilisation massive des bascules permet de réaliser des mémoires synchrones tels que des régistres, des bancs de registres, ou encore des FIFO (First-In First-Out ), tandis que les LUT peuvent être configurées en structures de type SRAM. L’utilisation des bascules ou des LUT pose deux problèmes majeurs pour faire des blocs mémoires : leur nombre limité et l’important délai engendré par le passage dans le routage programmable. Ainsi, la plupart des fabricants de FPGA a intégré des petites mémoires câblées directement dans la matrice de blocs logiques de leurs circuits. Ces blocs sont des mémoires très denses en termes de nombres de bits par unité de surface de silicium. Cet ajout de blocs dédiés à la mémorisation permet à la fois d’augmenter significativement les performances et la quantité de mémoire utilisable. Des petits blocs de mémoires, regroupés en colonnes, sont insérés régulièrement dans la matrice. L’architecture du FPGA est alors un peu moins homogène, ce qui peut compliquer un peu la tâche des outils de CAO (§ 4). Dans la plupart des cas, ces blocs mémoire sont configurables selon plusieurs tailles (par exemple, des blocs de 1 024 × 8 bits ou de 256 × 32 bits pour un bloc RAM de 8 Ko). Sud (i) a commutateur élémentaire Est Ouest Nord Sud b commutateur d'interconnexion Figure 4 – Bloc d’interconnexion programmable d’un FPGA La très grande flexibilité permise par les blocs logiques configurables des FPGA se paye en terme de vitesse. En effet, le passage des signaux électriques de l’utilisateur à travers la logique de configuration (même une fois celle-ci configurée) engendre des Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 H 1 196 – 5 Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________ délais supplémentaires (par rapport à des simples fils de routage dans le cas de circuits ASIC). Très rapidement, les fabricants de FPGA ont proposé des blocs dédiés directement câblés « en dur » pour augmenter les performances de certaines fonctionnalités très souvent utilisées. En premier, ce sont des petits blocs de mémoires (quelques Ko au maximum) qui ont été intégrés, ce qui permet d’éviter l’utilisation de nombreuses LUT des blocs logiques et du routage configurable (assez lent) entre ces blocs. Ensuite, des blocs dédiés pour effectuer des petites multiplications (par exemple, 9 × 9 bits ou 18 × 18 bits) ont été intégrés tant cette opération est présente dans de très nombreuses applications. Des blocs spécifiques, et particulièrement performants, pour certains types d’entrées/sorties et de communications sont maintenant courants dans de très nombreux FPGA. Dans certaines familles de FPGA, on a vu aussi arriver des blocs plus spécifiques, mais impossibles à réaliser avec les structures configurables classiques, comme des convertisseurs analogique/numérique. Pour les fabricants de FPGA les plus représentatifs, les structures spécifiques des blocs matériels dédiés seront détaillées dans le paragraphe 3. 2.4 Processeurs dans les FPGA Dans la plupart des applications intégrées sur FPGA, il faut un processeur pour la gestion de haut niveau. Deux types de bloc de processeur existent dans les FPGA : les processeurs matériels et les processeurs logiciels. Les processeurs matériels sont des blocs totalement câblés par le fabricant du FPGA. Ces processeurs offrent des très bonnes performances car ils sont optimisés au niveau transistor. Les fabricants de FPGA utilisent des processeurs connus dans leurs blocs câblés afin de bénéficier des outils de développement et des bases applicatives. Chez Xilinx, par exemple, ce sont des blocs de processeurs PowerPC qui ont été intégrés dans certains FPGA Virtex (§ 3.2). Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 Il semble que les prochaines générations de FPGA vont intégrer des processeurs câblés de plus en plus fréquemment. En effet, des partenariats ont été signés entre la société ARM et certains fabricants de FPGA comme Altera et Xilinx. tiwekacontentpdf_h1196 Si les blocs de processeurs matériels offrent de très bonnes performances, ils compliquent aussi beaucoup la structure du FPGA. Ils « brisent » en effet la structure très régulière du FPGA, ce qui augmente le coût de conception et de validation du FPGA (et donc le coût à la vente). De plus, dans bon nombre d’applications, la puissance de calcul d’un processeur évolué, comme un PowerPC, n’est pas nécessaire. Ainsi, très rapidement, les fabricants de FPGA ont proposé des solutions purement logicielles pour faire des blocs de processeur dans leur FPGA. Les processeurs logiciels SCP, Soft-Core Processors, sont des descriptions de processeurs qui peuvent être totalement réalisées dans la structure configurable du FPGA. Les différents éléments du processeur logiciel sont alors réalisés en utlisant des LUT, des bascules, des blocs mémoires et le routage programmable du FPGA. Il existe des processeurs logiciels de plusieurs « tailles » et niveaux de performances. On trouve souvent des processeurs 8 et 32 bits. Certains sont synthétisables, c’est-à-dire que l’on a la description du processeur. D’autres sont intégrés à la conception comme des blocs de propriété intellectuelle (§ 4.5). Pour certains processeurs logiciels, il est possible d’étendre les jeux instructions originels avec ses propres instructions. Cela est souvent utilisé pour adjoindre au processeur un coprocesseur ou accélérateur de calcul spécialisé qui augmente beaucoup l’efficacité du système implanté sur le FPGA. Certains fabricants de FPGA offrent ainsi des processeurs logiciels facilement extensibles et avec les outils logiciels pour prendre en compte l’extension dans les développements applicatifs. H 1 196 – 6 2.5 Blocs entrées/sorties et horloges programmables ■ Les entrées/sorties sont d’autres éléments importants pour une utilisation efficace des circuits FPGA. Les blocs d’entrée/sortie se doivent d’être très performants et flexibles. Le nombre de ces blocs dépend de la taille du circuit et du type de boîtier utilisé. De nombreuses configurations sont possibles pour s’adapter aux caractéristiques physiques (plages de tensions et de fréquences, adaptation d’impédance, limitations en courant, etc.) et aux caractéristiques logiques (codage, primitives de certains protocoles, etc.). Ici aussi, les FPGA fournissent des solutions très performantes et très facilement utilisables en pratique (par simple configuration). Obtenir les mêmes performances pour ces entrées/sorties dans un circuit ASIC demande, là aussi, une grande expertise technique. Il existe différents types d’entrées/sorties. Un grand nombre sont des blocs assez universels, mais d’autres sont dédiés à certaines fonctions ou dispositifs particuliers. On trouve, par exemple : – des blocs spécifiques pour les entrées/sorties à très haut débit (sur des liens sériels) ; – d’autres dédiés pour les interfaces vers des mémoires externes (DDR, DDR-2, DDR-3, QDR, RLDRAM, etc.) ; – d’autres pour des interfaces telles que PCI Express ou Ethernet. Les blocs émetteurs/récepteurs dédiés Transceivers (pour la contraction de Trans-mitters et de Re-ceivers ) sont devenus des éléments importants des circuits FPGA récents. Ils sont notamment utiles dès lors que l’on veut interfacer le FPGA avec le monde « physique », par exemple grâce à des convertisseurs analogique-numérique (ADC) ou numérique-analogique (DAC) rapides. Les Transceivers disponibles dans les dernières générations de FPGA offrent des débits très importants (jusqu’à 28 GHz pour les Stratix V). Leur nombre est un critère de comparaison entre différents FPGA pour beaucoup d’applications. Certaines variantes d’une famille ont été optimisées pour les communications en intégrant plus de Transceivers. ■ La distribution d’une grande variété de signaux d’horloges de bonne qualité est probablement l’un des points les plus importants pour l’utilisateur de FPGA. Dans un circuit ASIC, gérer des horloges avec des hautes fréquences est très complexe, et demande une solide expertise technique. Dans un circuit FPGA, l’utilisateur peut configurer plusieurs horloges avec des fréquences jusqu’à 500 ou 700 MHz pour les meilleurs circuits très simplement, grâce à l’utilisation de structures programmables pour la distribution des signaux d’horloge. Leurs spécificités sont détaillées par famille dans le paragraphe 3. 2.6 Configuration des FPGA La configuration d’un FPGA se fait en plusieurs étapes : – la première consiste à alimenter certaines broches du circuit ; – la deuxième étape est la remise à zéro du circuit (reset ) ; – la troisième est la prise en compte du fichier de configuration (Bitstream ), ce qui signifie lecture de ce fichier depuis l’extérieur et écriture de chacun des points de configuration en interne. La configuration peut être vérifiée après ou en cours de route. Une fois la configuration effectuée, et vérifiée, les horloges du circuit vont être démarées (ce qui nécessite un certain nombre de cycles pour avoir des horloges stables) ; – enfin, dans la dernière étape, le circuit est placé en mode utilisateur. La configuration stockée à l’extérieur du FPGA est en général compressée pour limiter le coût de son stockage et les temps de transfert depuis des mémoires non volatiles souvent assez lentes (comme des mémoires de type flash ). La décompression est faite à la volée lors du processus de configuration. Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ______________________________________________________________________________________________ ARCHITECTURES RECONFIGURABLES FPGA Plusieurs types de configuration sont possibles. La plupart des FPGA sont reconfigurables, on peut les programmer plusieurs fois. Il existe des FPGA configurables une seule fois (OTP One Time Programming ) où la configuration, irréversible, peut être obtenue par claquage électrique de couches isolantes, ce qui va permettre d’établir définitivement certains contacts (§ 3.3). De plus, dans les architectures reconfigurables, il existe deux types de configuration : statique et dynamique. La configuration statique se fait uniquement à la mise sous tension du circuit. La configuration reste figée tant que l’alimentation du circuit est maintenue. La configuration dynamique peut se faire en cours de fonctionnement (sans devoir arrêter le circuit). La configuration peut être sécurisée, dans une certaine mesure, en utilisant un système interne de chiffrement. Un bloc de chiffrement AES (Advanced Encryption Standard ) avec des clés de 256 bits peut par exemple être intégré dans un FPGA. Il y a aussi deux mécanismes internes pour stocker des clés de chiffrement/déchiffrement : – des petites mémoires volatiles pour stocker des clés temporaires, ce qui nécessite une batterie pour préserver leur contenu mais ces mémoires peuvent être écrites plusieurs fois ; – une mémoire non volatile pour les clés sans aucun besoin de batterie, mais programmable une seule fois dans toute la vie du circuit. Une fois programmées, ces clés ne sont plus lisibles depuis l’extérieur du dispositif de sécurité du FPGA. Connaissant la clé secrète programmée dans un FPGA particulier, il est possible de chiffrer le fichier Bitstream pour que la configuration ne soit possible que sur ce FPGA particulier. Selon le système de chiffrement/déchiffrement associé aux clés stockées (définitivement ou temporairement) dans le FPGA, différentes protections peuvent être envisagées : – la protection contre la copie ; – la protection contre la rétro-ingénierie (Reverse Engineering ) ; – ou bien la protection contre la modification. Ici encore, les FPGA offrent des dispositifs performants et aisément utilisables par le plus grand nombre. Concevoir de telles protections lors de la conception d’un circuit ASIC est assez complexe et coûteux. 3. Exemples de familles de FPGA Chez la plupart des fabricants, les circuits FPGA se déclinent en différentes famillles. Tous les circuits d’une même famille disposent de caractéristiques physiques et de fonctionnalités identiques, c’est le nombre d’éléments disponibles qui varie. Au sein d’une famille, plusieurs tailles de FPGA sont proposées. Dans un petit circuit, les différents blocs ne sont présents qu’en petit nombre sur la surface du circuit, alors qu’ils sont massivement répliqués sur un circuit de plus grande taille. La capacité de traitement (calcul, mémorisation et communication), mais aussi le coût des circuits augmente, souvent non linéairement pour le coût, avec la taille. Chaque famille possède des caractéristiques propres qui la rendent particulièrement bien adaptée à certains types d’applications. On trouve, par exemple, des familles pour les hautes performances de traitement (High-End Family ) et d’autres pour les dispositifs à bas coût et à faible consommation d’énergie (Low-Cost and Low-Power Family). Les familles pour les hautes performances offrent des capacités de traitement très élevées (jusqu’à 2 millions de portes équivalentes et 1 à 6 GMAC · s–1 ou milliards de multiplications-accumulations par seconde). Le prix de ces circuits est très élevé (plusieurs centaines d’euros l’unité). Pour les applications où le coût de production est important, des familles à bas coût existent avec des capacités de traitement plus modestes (quelques centaines de milliers de portes équivalentes) et des prix bien plus faibles (de quelques euros pour les circuits les plus petits à quelques dizaines d’euros pour les plus gros). De plus en plus, il existe des familles intermédiaires (Mid-Range Family) qui permettent d’affiner les choix entre performances et prix des circuits. Au sein d’une même famille, plusieurs variantes sont souvent disponibles. Chaque variante privilégie une catégorie particulière d’applications en intégrant plus de blocs d’un certain type. Il existe des variantes avec plus de blocs logiques configurables, d’autres variantes avec plus de blocs de calcul DSP, ou bien des variantes qui offrent un plus grand nombre de blocs d’entrée/sortie (par exemple pour des applications de télécommunication). Enfin, certains fabricants proposent des variantes spécifiques pour des domaines très particuliers comme le secteur aéronautique, le spatial ou le marché automobile. Les fabricants de FPGA proposent différentes générations de leurs familles dans le temps. Exemple : chez Altera, il y a eu, jusqu’à maintenant, 5 générations de la famille Stratix, Stratix II, Stratix III, Stratix IV et Stratix V. Chez Xilinx, il y a eu 6 générations de la famille Virtex, Virtex II, Virtex 4, Virtex 5, Virtex 6 et Virtex 7. La structure générale est en partie conservée au fil des générations, mais la technologie de fabrication change avec la diminution de la finesse de gravure, ce qui permet d’avoir les meilleures performances tout en simplifiant la migration d’une génération à une suivante. En pratique, chaque nouvelle génération apporte son lot d’optimisations et de petites nouveautés. Le choix du bon FPGA (famille, variante, taille) est une étape importante lors de la conception de l’architecture d’un système. Comme pour d’autres domaines de la micro-électronique, des nouvelles familles de circuits FPGA arrivent assez souvent sur le marché. Il convient donc de bien étudier les différents produits proposés à un instant donné. Nous présentons quelques exemples de familles actuelles de FPGA de différents fabricants. Afin de mieux cerner l’évolution de ce type de circuits, nous donnons aussi quelques informations sur des familles de FPGA et des exemples simples et synthétiques. Nous essayons de présenter un panorama de techniques et de solutions. Il n’y a aucun caractère exhaustif dans les informations données. Les fabricants offrent des gammes très variées, il convient de se rapporter à leur site web pour obtenir des informations plus précises et plus complètes. Les informations de prix de FPGA différents sont assez difficiles à obtenir. Il est possible de trouver le prix de quelques FPGA chez différents revendeurs de matériels électroniques (souvent avec les microcontrôleurs et microprocesseurs). 3.1 FPGA Altera 3.1.1 Évolution des architectures La société Altera fut l’une des premières à proposer, dès 1983, des circuits FPGA. Aujourd’hui, Altera est l’un des leaders du marché et propose principalement trois familles de FPGA : – la famille Stratix, commercialisée depuis 2002, vise les hautes performances ; – la famille Cyclone, aussi commercialisée en 2002, vise les dispositifs à bas coût et à basse consommation d’énergie ; – enfin, la famille Arria, apparue en 2007, propose des circuits FPGA intermédiaires. Au cours du temps, les générations utilisent les meilleures technologies disponibles pour la fabrication des FPGA. La figure 5 donne l’évolution de la finesse de gravure depuis 1992 pour les FPGA Altera. La cinquième génération de certaines familles est aujourd’hui disponible avec les Stratix V et Cyclone V. Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 H 1 196 – 7 Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 Technologie ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________ 0,4 µm IO 0,3 µm IO IO IO 0,22 µm 90 nm 180 nm 150 nm 65 nm 40 nm 28 nm LAB 130 nm 1992 1994 1996 1998 2000 2002 2004 2006 2008 2010 IO Année Figure 5 – Évolution de la finesse de gravure dans les FPGA Altera LE Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 L’architecture globale des FPGA d’une famille historique (Flex 8K introduite en 1992) et celle de la dernière génération de la famille Stratix (Stratix V en 2010) sont représentées, de façon synthétique, en figure 6. Les blocs logiques, ou LAB (Logic Array Block), sont disposés dans une matrice plus ou moins régulière. Entre les différentes lignes et colonnes de LAB, il y a du routage programmable. Sur les bords de la matrice, on trouve les blocs d’entrées/sorties ou IO (Input/Output ). Dans les familles actuelles, il y a régulièrement dans la matrice de LAB et de routage programmable, des colonnes avec des blocs spécifiques câblés. On trouve essentiellement deux types de blocs spécifiques : les blocs DSP et les blocs mémoire. Les deux familles représentées en figure 6 ne sont pas du tout à la même échelle de surface. La diminution de la finesse de gravure des circuits (0,42 µm pour les Flex 8K et 28 nm pour les Stratix V) et les nombreuses optimisations permettent d’intégrer toujours plus d’éléments dans les circuits à chaque nouvelle technologie de fabrication. L’équivalent de l’intégralité des LAB et du routage programmable d’un Flex 8K ne représenterait qu’une petite fraction de la surface d’un Stratix V. tiwekacontentpdf_h1196 IO IO blocs logiques blocs mémoire blocs DSP blocs logiques blocs mémoire blocs DSP La matrice était très uniforme pour la famille Flex 8K. Un LAB était alors composé de 8 éléments logiques LE (Logic Element ). Chaque LE contenait une LUT à 4 entrées, une bascule, de la logique câblée pour la propagation de retenues et de la logique de configuration. La logique câblée de propagation de retenue permet d’implanter des additionneurs (ou soustracteurs) à propagation séquentielle de la retenue sur toute une colonne de LE dans un LAB. Avec 8 LE par LAB, on a donc facilement des opérateurs arithmétiques simples (addition, soustraction, comparateur ou certaines fonctions logiques) sur 8 bits. Il existe de la logique de configuration spécifique qui relie plusieurs LAB consécutifs d’une même colonne pour réaliser des opérations sur 16, 24 ou 32 bits, voire plus, au prix d’un délai de plus en plus important. blocs logiques IO a Flex 8K b Stratix V Figure 6 – Architecture globale de certains FPGA Altera 3.1.2 Architecture des Stratix V Dans les nouvelles familles, le contenu des blocs logiques LAB s’est compliqué pour augmenter les performances. Dans un Stratix V, il y a 10 éléments logiques ou ALM (Adaptive Logic Module), une amélioration des LE des familles précédentes. Il y a 2 LUT à 6 entrées et deux sorties, de la logique câblée et optimisée pour effectuer des additions/soustractions et certaines fonctions logiques, 4 bascules et enfin tout un ensemble de logique de configuration. Quatre modes de fonctionnement principaux sont possibles : – le mode général qui permet d’implanter des fonctions logiques (avec différentes sous-configurations comme 2 LUT-4, 1 LUT-5 + 1 LUT-3 ou 1 LUT-6) ; – le mode LUT étendu qui permet de faire une fonction logique de type LUT-7 ; – le mode arithmétique qui permet de faire des additions/soustractions, accumulateurs, compteurs ou bien des comparateurs ; H 1 196 – 8 – le mode arithmétique partagé qui permet de faire des opérateurs arithmétiques, du même type, mais sur plusieurs opérandes (3 et plus) en partageant les ressources de plusieurs ALM consécutifs dans une colonne. Dans la famille la plus récente de FPGA Altera, les Stratix V, deux types de blocs mémoire sont présents : des petits blocs de 640 bits (MLAB) ou des plus grands blocs avec 20 480 bits (M20K). Ces deux types de blocs mémoire peuvent fonctionner à des fréquences jusqu’à 600 MHz. Même si ces blocs ne contiennent pas de logique de reconfiguration entre les points mémoire, ils peuvent être utilisés selon différentes configurations d’un point de vue de l’utilisateur. Les principales configurations sont présentées dans le tableau 1. Ces différentes configurations sont obtenues par différentes formes d’utilisation de l’adresse en entrée et du multiplexage de la ligne mémoire (de taille fixe dans le circuit) pour produire le mot en sortie. Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ______________________________________________________________________________________________ ARCHITECTURES RECONFIGURABLES FPGA Tableau 1 – Configurations des blocs mémoire de la famille Stratix V (format : nombre de lignes ؋ taille des mots en bits) MLAB (640 bits) M20K (20 480 bits) 64 × 8 16 K × 1 2 K × 10 64 × 9 8K×2 1 K × 16 64 × 10 4K×4 1 K × 20 32 × 16 4K×5 512 × 32 32 × 18 2K×8 512 × 40 32 × 20 3.1.3 Autres éléments K = 210 Tableau 2 – Exemples de configurations des multiplieurs de blocs DSP Stratix V 1 bloc DSP Nb. op. 3 2 1 Aujourd’hui, d’un point de vue pratique, il faut écrire simplement la description du calcul à effectuer dans un langage de haut niveau et laisser faire les outils de conception du fabricant. On obtient de très bons résultats pour des tailles jusqu’à 32 bits (voire 64 dans certains cas) et les opérations prévues pour être implantées directement sur ces blocs DSP. Cela signifie que pour bon nombre d’applications, les opérations d’addition, soustraction, multiplication, carré, accumulation, etc., sont très bien supportées par les outils des fabricants pour des représentations entières ou en virgule fixe. Pour des opérations plus complexes (par exemple, division et racine carrée) et des représentations plus évoluées (comme pour le calcul flottant), le support est encore très limité. Cela est vrai pour l’ensemble des fabricants de FPGA. 2 blocs DSP contigus Opération Nb. op. Opération 9 ×y 9 3 x 18 ×y 18 x 16 ×y 16 2 x 27 ×y 27 x 18 ×y 18 x 36 ×y 36 27 ×y 27 36 ×y 18 x x x 1 x 18 × ރy 18 x n signifie l’opérande x de n bits de largeur et × ރune multiplication complexe de la forme (a + ib ) × (c + id ), où i est la notation de la partie imaginaire des complexes, c’est-à-dire i2 = – 1. L’utilisation de blocs logiques élémentaires, comme les ALM, pour faire des multiplications limite sensiblement les performances (vitesse et nombre de multiplications possibles en même temps dans un FPGA). En effet, il faut beaucoup de routage programmable entre les blocs logiques pour faire un multiplieur complet. Dans les familles Stratix (et Cyclone mais seulement à partir de la deuxième génération), Altera a intégré des blocs câblés dédiés à la multiplication. Rapidement, les spécifications de ces blocs ont été étendues pour effectuer de façon très optimisée des fonctions classiques de traitement du signal (Digital Signal Processing ), d’où le nom bloc DSP. Des colonnes de blocs DSP sont assez régulièrement disposées dans la matrice du FPGA (figure 6). Dans les FPGA de la famille Stratix V, un bloc DSP, appelé Variable Precision DSP Bloc, se compose de plusieurs éléments câblés. Il y a deux multiplieurs 18 × 18 bits, des préadditionneurs/soustracteurs sur les opérandes des multiplieurs (pour des opérations du type [(a ± b ) × (c ± d )], un additioneur/soustracteur pour les deux produits en sortie des multiplieurs (pour des opérations du type [(a × b ) ± (c × d )], et enfin un accumulateur programmable sur 64 bits. Ces différents éléments peuvent être configurés pour accepter des opérandes de différentes tailles jusqu’à leur taille maximale. Dans certains cas, ces éléments peuvent effectuer plusieurs calculs en même temps sur des tailles plus petites. Par exemple, l’accumulateur 64 bits peut être utilisé pour effectuer deux accumulations sur 32 bits en même temps (par configuration). Autour des ces éléments câblés, il y a une logique de configuration pour permettre le support d’une grande variété d’opérations. Le tableau 2 précise quelques unes des configurations possibles pour les multiplieurs des blocs DSP Stratix V. Les FPGA Altera intègrent des structures programmables pour la distribution des signaux d’horloge. La structure est hiérarchique avec un niveau global (pour des grosses parties du circuit), un niveau régional (pour des petites parties du circuit) et enfin un niveau ou zone périphérique pour les entrées/sorties. De nombreuses zones d’horloges sont configurables en même temps. Dans un Stratix V, on trouve jusqu’à 16 horloges globales, 92 horloges régionales et 309 horloges périphériques pour les plus gros circuits. Il y a des dispositifs spécifiques qui peuvent permettre de configurer des comportements particuliers sur les signaux d’horloge (par exemple, multiplication ou division de fréquence, décalage de phase, réglage du rapport cyclique). En ce qui concerne les entrées/sorties rapides, pour la famille Stratix V, on trouve quatre variantes (ou sous-familles) avec des possibilités de communications différentes : – Stratix V GS : jusqu’à 48 Transceivers à 14,1 GHz ; – Stratix V GT : jusqu’à 4 Transceivers à 28 GHz et 32 à 14,1 GHz ; – Stratix V GX : jusqu’à 66 Transceivers à 14,1 GHz ; – Stratix V E : il n’y a pas de Transceiver dans cette sous-famille optimisée pour la haute performance de traitement en logique programmable. La configuration d’un circuit Altera est stockée à l’extérieur du FPGA de façon compressée afin de limiter le coût de son stockage et les temps de transfert depuis des mémoires non volatiles externes. La décompression est faite à la volée lors du processus de configuration. Selon les tailles et variantes de la famille Stratix V, la taille du fichier de configuration décompressé peut aller de 93 Mb à 387 Mb. On se rend bien compte de la flexibilité offerte par ces circuits lorsque l’on considère le nombre d’éléments configurés et la combinatoire possible. Le tableau 3 donne un aperçu de l’évolution de quelques caractéristiques des générations de la famille Stratix (FPGA pour les hautes performances). Les caractéristiques données dans ce tableau correspondent aux plus gros FPGA disponibles dans les différentes variantes. L’ensemble de ces valeurs n’est pas toujours possible dans un même FPGA. Par exemple, dans un Stratix V, il y a au maximum 66 Transceivers (à 14,1 Gb/s), seuls 4 peuvent atteindre 28 Gb/s. La ligne dmt correspond au débit maximal des Transceivers (il peut y avoir plusieurs types de Transceivers et donc de débits disponibles). Le nombre de blocs DSP n’est pas donné directement, mais uniquement le nombre de multiplieurs configurés en mode 18 × 18 bits qui sont implantables en même temps dans le plus gros circuit. Pour les horloges, nous ne reportons que les nombres des horloges globales et des horloges régionales. Altera propose aussi : – toute une gamme d’outils de conception et de mise au point pour ses circuits. L’environnement de conception Quartus (dont les versions se succèdent régulièrement) permet d’effectuer la synthèse, le Floorplan, le placement/routage et la configuration (cf. [Doc. H 1 196]) ; Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 H 1 196 – 9 Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________ Tableau 3 – Évolution des caractéristiques principales de FPGA Altera de la famille Stratix Stratix Caractéristique I II III IV V Année 2002 2004 2006 2008 2010 Technologie................................................. (nm) 130 90 65 40 28 Vdd ....................................................................(V) 1,5 1,2 1,1 0,9 0,85 Fréquence maximale................................ (MHz) 350 450 550 600 700 Blocs logiques..................................................... 80 180 338 813 950 Blocs DSP (18 × 18 bits) ..................................... 88 384 768 1 288 4 096 Blocs RAM................................................... (Mb) 7 9 18 23 33 Transceivers ........................................................ 20 20 – 48 66 Débit maximal des Transceivers........ (Gb · s–1) 3,18 6,37 – 11,3 28 Horloges globale/régionale ............................... 16/22 16/32 16/88 16/88 16/92 – différents processeurs logiciels pour intégration dans ses FPGA : ARM Cortex A9 et M1, Freescale ColdFire, MIPS, NIOS II. Différents compromis sont alors possibles entre performances et surface. Un bon couplage entre les outils de CAO du FPGA et de compilation du processeur permet d’intégrer des processeurs dans des systèmes assez complexes ; – des cartes de développement et de test (§ 3.6) comme bien d’autres fabricants de circuits FPGA ; – une technologie de conversion d’un circuit FPGA configuré vers un circuit ASIC nommée hardcopy. Une description générale de ce genre de technologie est donnée dans le paragraphe 3.7. 3.2 FPGA Xilinx Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 3.2.1 Présentation des différentes familles tiwekacontentpdf_h1196 Xilinx fut l’une des sociétés pionnières sur le marché des FPGA en 1984. Aujourd’hui, elle est leader du marché et propose trois familles de FPGA : – la famille Virtex pour les hautes performances ; – la famille Artix pour les bas coûts et la basse consommation d’énergie ; – la famille Kintex pour des solutions intermédiaires. Les FPGA Xilinx sont basés sur des matrices de blocs logiques configurables ou CLB (Configurable Logic Block ). Chaque CLB est composé : – de petites mémoires, aussi appelées tables programmables ou LUT (Look-up Table) ; – de bascules (Flip-Flop) ou registres programmables ; – de ressources logiques spécifiques câblées (par exemple pour propager des retenues dans des additionneurs/soustracteurs) ; – de ressources de configuration. Le contenu des CLB évolue avec les générations de FPGA. La figure 7 illustre les principales ressources présentes dans différents CLB. Cette figure donne une vue des ressources disponibles pour l’utilisateur : des LUT, de la logique spécifique câblée pour optimiser certaines opérations et des éléments de mémoire (bascules). H 1 196 – 10 Dans un XC 2000 (1985), un CLB contient une LUT à 4 entrées et une sortie, ou LUT-4, ainsi qu’une bascule reconfigurable. Il y a toute une logique de configuration autour de ces éléments (non représentée en figure 7). Par exemple, on peut choisir d’envoyer directement la sortie de la LUT-4 hors du CLB, ou bien de la faire passer par la bascule avant. Dans un XC 3000 (1988), un CLB contient une LUT-5 avec 2 sorties et 2 bascules. C’est un fonctionnellement équivalent à celui d’une 2 LUT-4 (à une seule sortie) et 2 bascules, ce qui est la structure d’un CLB de XC 4000 (1991). L’arrivée des familles Virtex amène deux nouveautés importantes dans les CLB : les tranches ou Slices et la logique câblée pour effectuer des additions/soustractions de façon optimisée. Les Slices d’un CLB permettent de réaliser des fonctions logiques et des petits automates d’états localement et donc sans devoir utiliser le routage programmable entre les CLB. Dans les familles précédentes, bon nombre de CLB étaient systématiquement utilisés pour implanter des opérations d’addition et de soustraction. À partir de la famille Virtex, Xilinx, comme d’autres fabricants de FPGA, intègre des dispositifs logiques câblés pour pouvoir effectuer directement ces opérations de façon très optimisée tout en conservant une architecture très simple. La logique câblée permet de propager très rapidement des retenues (Fast Carry Chain ). Un additionneur/soustracteur à propagation séquentielle de la retenue est alors configuré en combinant les LUT et cette logique câblée. Le câblage de la propagation de retenue et du routage spécifique entre les Slices d’une même colonne, font de cette solution une structure d’additionneur/soustracteur très rapide. La complexité théorique de l’additionneur à propagation séquentielle est loin d’être la meilleure (elle est linéaire en la taille des opérandes). Mais le fait d’avoir intégré une logique dédiée et optimisée au niveau du circuit permet d’obtenir en pratique, des délais très faibles pour ces opérations arithmétiques (même en comparant avec des solutions algorithmiquement meilleures au niveau théorique). Le tableau 4 illustre l’évolution de la capacité de traitement, en nombre de CLB, de quelques familles de FPGA Xilinx. Nous reportons, dans ce tableau, les nombres minimal et maximal de CLB disponibles par famille. Il convient de noter que le contenu des CLB n’est pas du tout le même entre les différentes familles (figure 7). Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ______________________________________________________________________________________________ ARCHITECTURES RECONFIGURABLES FPGA LUT D Q D Q D Q b XC 2000 LUT XC 3000 c Slice Slice D Q LUT LUT D Q LUT D Q LUT d Propagation LUT Propagation Slice D Q D Q VIRTEX LUT LUT Propagation + logique LUT Slice XC 4000 D Q LUT D Q LUT D Q e D Q LUT LUT Propagation + logique a LUT D Q LUT D Q D Q D Q D Q VIRTEX 7 Figure 7 – Principales ressources disponibles pour l’utilisateur dans les CLB de certaines familles de FPGA Xilinx Tableau 4 – Évolution du nombre de CLB dans les FPGA Xilinx Famille Année Nb. CLB min. Nb. CLB max. XC 2000 1988 64 100 XC 3000 1988 64 484 XC 4000 1991 64 3 136 Virtex 1998 384 6 144 Virtex II 2001 64 11 648 Virtex 4 2005 1 535 22 272 Virtex 5 2006 1 560 25 920 Virtex 6 2009 5 820 59 280 152 700 Virtex 7 2011 25 500 Spartan 1998 100 784 Spartan II 2000 96 1 176 Spartan 3 2005 192 8 320 Spartan 6 2009 300 11 519 Artix 7 2011 625 27 225 Kintex 7 2011 5 125 37 325 Exemple : un CLB XC 2000 contient 1 LUT-4 (1 sortie) et 1 bascule, alors qu’un CLB Virtex 7 contient 8 LUT-6 (2 sorties) et 8 bascules. 3.2.2 Configuration des CLB Les LUT des CLB peuvent être configurées en registre à décalage (Shift Register) afin d’éviter l’utilisation de nombreuses bascules des CLB. Dans un registre à décalage classique (figure 8a ), il faut n bascules en série pour retarder un signal de n cycles (ici n = 4). La configuration en registre à décalage de la LUT (figure 8b) permet de retarder un signal directement de n cycles, avec n entre 1 et 31, via le démultiplexeur en sortie. Les CLB peuvent aussi être configurés en toutes petites mémoires. On parle alors de mémoires distribuées par opposition aux blocs mémoire décrits plus loin. Le tableau 5 présente certaines configurations des LUT de Virtex 7 en petite mémoire. Les @i sont les adresses. Plusieurs configurations sont possibles pour la taille des mots, le nombre de mots, les ports de lecture et d’écriture : simple port (S), double port (D), quadruple port (Q) et simple double port (SDP). Les CLB peuvent être configurés en multiplexeurs de n entrées vers une sortie ou MUX (n → 1). Les configurations possibles dans chaque Slice CLB dépendent du nombre d’entrées n. Dans chaque Slice, on a : 4 MUX (4 → 1) qui utilisent chacun 1 LUT, ou bien 2 MUX (8 → 1) qui utilisent chacun 2 LUT ou enfin 1 MUX (16 → 1) qui utilise alors les 4 LUT. Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 H 1 196 – 11 Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________ n D D Q D Q D Q D Q Qn clk a registre à décalage classique D Q31 LUT clk n Démultiplexeur Qn b registre par configuration d’une LUT de Virtex-6 Figure 8 – Registres a Tableau 5 – Configurations d’un CLB Virtex 7 en petite mémoire Nb. mots ؋ taille mot (en bits) Ports Configuration Lecture Écriture Nb. LUT 32 × 1 32 × 1 S D @1 @ 1 , @2 @ 1 , @2, @3 , @4 @1 @1 @ 1 , @2 @ 1 , @2, @3 , @4 @1 @1 @ 1 , @2 @ 1 , @2, @3 , @4 @1 @1 1 2 @1 4 @2 @1 @1 4 1 2 @1 4 @2 @1 @1 4 2 4 @1 4 32 × 2 Q 32 × 6 64 × 1 64 × 1 SDP S D 64 × 1 Q 64 × 3 128 × 1 128 × 1 SDP S D 256 × 1 Q Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 3.2.3 Routage programmable tiwekacontentpdf_h1196 La grande flexibilité des FPGA Xilinx, comme pour d’autres fabricants est liée au très grand nombre de configurations possibles du routage programmable. Chaque CLB peut être connecté, plus ou moins directement, à de nombreux CLB autour de lui. La figure 9 représente les CLB accessibles depuis un CLB central, avec 1 seul lien programmable, 2 liens programmables et 3 liens programmables. Un lien programmable est un fil de routage que l’on décide d’utiliser ou pas par configuration. Bien entendu, pour aller de plus en plus loin de la source du signal, il faut prendre plusieurs liens programmables successifs. Cela se traduit par un délai de plus en plus grand. Le routage des signaux est donc un point complexe de la configuration du FPGA dans les outils de CAO (§ 4). Depuis un CLB de Virtex 4, on peut atteindre un total de 280 CLB du voisinage (12 via 1 lien, 68 via 2 liens successifs et 200 via 3 liens successifs). Dans un Virtex 5, le total est de 288 CLB (12 en 1, 96 en 2 et 180 en 3 liens successifs). L’optimisation du plus grand nombre de CLB atteignables en 2 liens successifs permet de réduire les délais. Le routage disponible dans les Virtex 4 et 5 ne se limite pas à ce qui est indiqué ci-dessus. H 1 196 – 12 Virtex 4 CLB 1 lien 2 liens b Virtex 5 3 liens Figure 9 – Routages depuis un CLB central vers le voisinage (doc. Xilinx, revue Xcell no 59 p. 25) Figure 10 – Exemples de routages dans un Virtex II Dans les FPGA plus anciens, le routage était déjà abondant. Par exemple, dans le Virtex II (2001), il y a différentes structures de routage entre CLB. La figure 10 en présente quelques exemples. Ces structures ne sont illustrées que pour une seule direction (vers la droite des CLB noirs), mais il y en a dans les trois autres directions. Il y a aussi des lignes de routage (appelées Long Lines ) qui relient les CLB d’une même ligne (ou colonne). Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ______________________________________________________________________________________________ ARCHITECTURES RECONFIGURABLES FPGA Tableau 6 – Blocs mémoire de 36 Kbits dans des Kintex 7 FPGA XC7K70T Blocs (nb) Colonnes (nb) Blocs/Colonne (nb) 135 4 40 XC7K160T 325 7 50 XC7K325T 445 7 70 XC7K355T 715 12 60 XC7K410T 795 12 70 XC7K420T 835 12 70 XC7K480T 955 12 80 3.2.4 Blocs spécialisés Pour les mêmes raisons que les autres fabricants, Xilinx a intégré des blocs de mémoire câblée dans ses FPGA. Cela permet d’augmenter les performances (moins de routage programmable pour configurer ces blocs dédiés) et d’augmenter la quantité de mémoire utilisable. Dans ses derniers FPGA (Virtex 7, Artix 7 et Kintex 7), Xilinx propose des blocs mémoire, appelée Block RAM, de 36 Kbits (la taille était de 18 Kbits dans certaines anciennes générations). Chaque bloc de 36 Kbits peut être configuré en deux blocs indépendants de 18 Kbits. De nombreuses configurations (nombre de mots × taille des mots en bits) de ces blocs mémoire sont possibles. Pour chaque bloc de 36 Kbits, on a : 32 K × 1, 16 K × 2, 8 K × 4, 4 K × 9, 2 K × 18 ou 1 K × 36. La configuration 512 × 72 est possible en mode simple double port (SDP). En connectant en cascade deux blocs d’une même colonne, on peut obtenir une configuration 64 K × 1. Pour un bloc de 18 Kbits, on a : 16 K × 1, 8 K × 2, 4 K × 4, 2 K × 9, 1 K × 18. La configuration 512 × 36 est possible en mode SDP. Le tableau 6 présente le nombre de blocs mémoire de 36 Kbits, et leur organisation géométrique dans la matrice, pour des FPGA Kintex 7. Le plus gros Kintex 7 comporte 955 blocs soit environ 33 Mb. Pour la famille Artix 7, le nombre de blocs 36 Kbits se situe entre 20 et 515 (18 Mb au maximum) selon les circuits. Pour la famille Virtex 7, ce nombre se situe entre 470 et 1 880 blocs (66 Mb au maximum). Il est possible de configurer les blocs de mémoire 36 Kbits avec un système de code correcteur d’erreur ECC (Error Correction Code) en configuration 512 × 72. Dans chaque mot mémoire, il y a 64 bits de données et 8 bits de redondance (64 + 8 = 72). Tout le mécanisme de codage/décodage et de vérification est intégré dans le circuit et utilisable par configuration. Le même genre d’évolution, par ajout de blocs spécialisés, s’est produit pour l’augmentation des performances de l’opération de multiplication. Avant l’arrivée des blocs multiplieurs câblés, il fallait utiliser un grand nombre de CLB et de routage programmable entre ces CLB. Le délai dans le routage augmente, souvent de façon importante, le délai des opérateurs. À partir de la famille Virtex II, il y a des blocs multiplieurs 18 × 18 bits câblés (sans aucune logique de configuration interne). Aujourd’hui, on trouve des blocs spécialisés pour des fonctions de base en traitement numérique du signal ou DSP (Digital Signal Processing ) basées sur des additions/soustractions et multiplications. Les opérations supportées sont du type 18 × 18 ± 48 → 48 ou 25 × 18 ± 48 → 48 selon les familles (les nombres représentent les tailles des différents opérandes et résultats). Dans les toutes dernières familles de FPGA Xilinx, on trouve aussi des pré-additionneurs/soustracteurs sur le chemin des opérandes qui arrivent au multiplieur câblé (pour des opérations du type [(a ± b ) × (c ± d )]. Dans ces blocs DSP, l’accumulation est aussi faite avec des ressources dédiées pour éviter de devoir utiliser un important routage vers les CLB qui implanteraient l’accumulateur. CLKIN CLK0 CLK90 C T R L CLK180 CLK270 CLKX2 CLK180X2 CLKDIV Figure 11 – Exemples d’horloges en sortie d’un DCM de Virtex II Des blocs dédiés à la génération des signaux d’horloge sont présents dans les FPGA Xilinx. Une des fonctions principales de ces blocs est l’amplification des horloges qui sont distribuées aux nombreuses cellules de mémorisation (bascules et blocs mémoire). Cette amplification se fait en utilisant des dispositifs particuliers appelés Buffers. La distribution d’horloges à haute fréquence pour un grand nombre de bascules ou blocs mémoire est très complexe en pratique. Dans les Virtex II, les blocs DCM (Digital Clock Manager ) permettent de générer différentes variantes d’une horloge avec d’éventuelles modifications de la fréquence ou de la phase. La figure 11 illustre des modifications possibles sur les horloges en sortie. Le facteur de division, spécifié par un codage des entrées CTRL du DCM, peut prendre les valeurs suivantes : 1,5 ; 2 ; 2,5 ; 3 ; 3,5 ; 4 ; 4,5 ; 5 ; 5,5 ; 6 ; 6,5 ; 7 ; 7,5 ; 8 ; 9 ; 10 ; 11 ; 12 ; 13 ; 14 ; 15 et 16. L’horloge en sortie CLKDIV a alors une fréquence égale à celle d’entrée sur CLKIN divisée par le facteur. La sortie CLKX2 donne une horloge de fréquence double. Les autres donnent des horloges avec des décalages de phase de 0, 90, 180 et 270 degrés. Dans les FPGA récents, les blocs d’horloge sont bien plus évolués. Les Virtex 7 contiennent des blocs appelés MMCM (Mixed-Mode Clock Manager ). Ces blocs permettent d’effectuer de nombreuses modifications d’un signal d’horloge en entrée. Après la sortie du MMCM, l’horloge modifiée est amplifiée puis distribuée dans une région du FPGA via du routage spécialisé. Parmi les modifications possibles dans un MMCM Virtex 7, on trouve : – décalage de phase par pas de 1/8 de cycle (soit 0, 45, 90, 135, 180, 225, 270 ou 315 degrés) ; – signal inversé avec décalage de phase (pas de 1/8 de cycle) ; – division ou multiplication de fréquence avec un rapport fractionnaire programmable représenté sur 16 bits ; – décalage de phase fin (statique ou dynamique) avec un pas programmable de 0,125 degré. Le nombre de blocs MMCM par FPGA varie entre 6 et 24 pour les Virtex 7, entre 6 et 10 pour les Kintex 7, et enfin entre 2 et 12 pour les Artix 7. Comme pour les autres fabricants de FPGA, Xilinx supporte une très large palette d’entrées/sorties (tensions, codages, bandes passantes, protocoles, etc.) dans ses FPGA. Une idée du nombre de ces entrées/sorties est donnée dans le tableau 8. Les dernières générations de FPGA Xilinx intègrent un bloc d’interface analogique qui utilise un convertisseur pour transformer un signal analogique en une valeur numérique ADC (Analog to Digital Converter). Cela permet d’interfacer assez directement des capteurs en entrée du FPGA. Dans les Virtex, Kintex ou Artix 7, le bloc ADC fonctionne avec une résolution de 12 bits (précision de la mesure) et une fréquence maximale de 1 million d’échantillons par seconde. L’entrée du bloc ADC peut être reliée à des capteurs internes du FPGA qui mesurent la température et la tension d’alimentation de la puce. Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 H 1 196 – 13 Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________ Tableau 7 – Processeurs câblés dans certains FPGA Xilinx Virtex Caractéristique Zynq 7 II Pro 4 5 Processeur.................................................... PowerPC 405 PowerPC 405 PowerPC 440 ARM Cortex A9 Nb. de processeurs ..................................... 1 ou 2 1 ou 2 1 ou 2 1 double cœur Fréquence.......................................... (MHz) 300 450 550 800 nep ................................................................ 5 5 7 8 L1........................................................... (Ko) 16I + 16D 16I + 16D 32I + 32D 32I + 32D L2........................................................... (Ko) – – – 512 edd ................................................................ non non oui oui FPU................................................................ non non non 32/64 bits nep : nombre d’étages du pipeline. edd : exécution dans le désordre. L1 et L2 cadres niveau 1 et 2 I instructions et D données Tableau 8 – Évolution des caractéristiques principales des FPGA de la famille Virtex Xilinx Virtex Caractéristique – II 4 5 6 7 Année............................................................. 1998 2001 2005 2006 2009 2011 Technologie........................................... (nm) 220 130 90 65 40 28 Vdd ............................................................. (V) 2,5 1,5 1,2 1,0 1,0 0,9 Fréquence........................................... (MHz) 200 400 500 550 600 650 Slices.............................................................. 12 k 44 k 89 k 51 k 118 k 178 k Blocs DSP ...................................................... – 444 512 1 056 2 016 3 600 Blocs RAM............................................ (Mb) 0,13 7,9 9,9 18 38 84 Transceivers .................................................. – – 24 48 48 96 dmt..................................................(Gb · s–1) Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 I/O................................................................... tiwekacontentpdf_h1196 – – 6,5 6,5 11 28 512 1 164 960 1 200 1 200 1 200 Les FPGA Xilinx comportent un mécanisme sophistiqué de configuration avec décompression au vol du Bitstream et vérification de l’intégrité de la configuration. Il y a aussi un bloc cryptographique avec chiffrement/déchiffrement symétrique AES 256 bits, une fonction de hachage cryptographique, et des stockages sécurisés pour des clés secrètes (temporaires ou permanentes). Ce bloc assure la protection contre la copie ou le clonage d’un FPGA configuré, la modification de la configuration ou contre la rétro-ingénierie. Il y a aussi un numéro de série unique et propre à chaque circuit sur 57 bits fixés définitivement à la fabrication. Xilinx propose des cœurs de processeurs logiciels pour ses FPGA et aussi des FPGA qui intègrent « en dur » des cœurs câblés. Pour les solutions logicielles (Soft-core ), Xilinx propose le processeur MicroBlaze, de type RISC 32 bits, avec les outils nécessaires pour son implantation sur les ressources programmables du FPGA et son utilisation. Il y a aussi le cœur logiciel PicoBlaze de type RISC 8 bits. Depuis longtemps, Xilinx propose des FPGA avec un cœur de processeur câblé dans le circuit. Le tableau 7 résume les caractéristiques principales de ces processeurs câblés. Parmi ces H 1 196 – 14 caractéristiques, on trouve le nombre d’étages de pipeline (nep), le fait de supporter ou pas l’exécution dans le désordre (edd) et la présence d’unités flottantes ou FPU (Floating-Point Unit). 3.2.5 Caractéristiques des FPGA Le tableau 8 résume les caractéristiques principales de différentes générations de FPGA Virtex. La fréquence correspond à la vitesse maximale de certains blocs (mémoire ou DSP). Des petites structures dans des CLB fonctionnent à des fréquences supérieures. Le nombre de Slices des différentes générations n’est pas directement comparable (figure 7). Dans un Virtex 4, chaque Slice contient 2 LUT-4 et 2 bascules alors qu’un Virtex 5 contient 4 LUT-6 et 4 bascules. Le nombre de blocs DSP est lui aussi dépendant du type de bloc (simple multiplieur 18 × 18 bits d’un Virtex II à des blocs DSP bien plus complexes pour les générations suivantes). Le nombre de Transceivers est le maximum possible dans un même circuit, mais où ils ne sont pas tous utilisables au débit maximal dmt. Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ______________________________________________________________________________________________ ARCHITECTURES RECONFIGURABLES FPGA Xilinx propose aussi une gamme de CPLD avec les générations de circuits CoolRunner et 9500XL. programmés directement dans le système ISP (In System Programming) sans appareil spécifique. Xilinx propose une technologie de conversion d’un circuit FPGA configuré vers un circuit ASIC nommée EasyPath. Une description générale de ce genre de technologie est donnée dans le paragraphe 3.7. Les plus gros FPGA Igloo permettent de réaliser des systèmes jusqu’à 3 millions de portes équivalentes avec au plus 504 Kbits de mémoire SRAM (avec au maximum 112 blocs de mémoires de 4 608 bits en configuration simple ou double port). Les FPGA Igloo sont constitués d’une matrice de blocs logiques et de blocs de mémoire. Les blocs logiques, appelés Versatiles, peuvent être configurés en LUT-3 ou en bascules (mais pas en même temps). Suivant les tailles, il y a entre 384 et 24 576 Versatiles par FPGA. Il y a aussi des blocs de génération d’horloge, de nombreuses entrées/sorties et un système de cryptographie AES 128 bits pour protéger la configuration. La tension d’alimentation de la matrice programmable permet d’adapter la vitesse du système : 250 MHz pour 1,5 V et 160 MHz pour 1,2 V. Certains FPGA Igloo sont optimisés pour accueillir un cœur logiciel de processeur ARM Cortex M1 (RISC 32 bits, 60 MHz). Enfin, la société Xilinx publie sur le web, souvent entre trois ou quatre numéros par an, le magazine XCELL avec beaucoup d’illustrations et d’explications très complètes sur leurs produits et outils (cf. [Doc. H 1 196]). 3.3 FPGA Actel/Microsemi La société Microsemi a acheté, en novembre 2010, la société Actel qui produisait des FPGA depuis 1985. Elle propose des FPGA à configuration non volatile avec deux solutions différentes : – la technologie antifusible ; – la technologie flash. La plupart des autres fabricants de FPGA utilisent des technologies volatiles à base de SRAM (Static RAM ). La configuration est perdue lors de la perte d’alimentation du circuit. Les technologies non volatiles antifusible et flash sont particulièrement intéressantes pour certaines applications. Ces technologies sont bien plus robustes aux radiations que la technologie SRAM. Des neutrons ou des particules α peuvent faire changer la valeur stockée dans un point de mémoire SRAM (ce qui modifie la configuration). On parle alors de Soft Error. Au niveau de la mer, les taux d’occurrence de ces radiations sont très faibles. Mais pour des applications d’aviation ou spatiales, la technologie antifusible est très utilisée. Dans les FPGA SRAM, il faut recharger la configuration (Bitstream) à chaque mise sous tension, ce qui prend du temps et consomme de l’énergie. Avec les technologies non volatiles, il est possible de passer le FPGA en mode de repos ou sommeil pour limiter la consommation. Le retour en activité est très rapide. Enfin, comme il n’y a pas de configuration à stocker, la protection contre la copie et le clonage est plus simple. ■ Pour la technologie antifusible, la configuration étant figée une fois pour toutes (OTP), il n’est pas possible de modifier la fonctionnalité du circuit. Cela peut être très intéressant dans certaines applications avec une sécurité importante. La famille de FPGA Axcelerator utilise une technologie antifusible 0,15 µm qui permet d’intégrer des systèmes jusqu’à 2 millions de portes équivalentes. Les fréquences internes peuvent atteindre 500 MHz en local pour des systèmes fonctionnant à 350 MHz globalement. Ces FPGA intègrent des blocs mémoire de 4 608 bits configurables selon plusieurs modes : 128 × 36, 256 × 18, 519 × 9, 1 K × 4, 2 K × 2 ou bien 4 K × 1. Il y a aussi des blocs de génération d’horloges, de nombreuses entrées/sorties, etc. La configuration des FPGA à technologie antifusible est un peu particulière. Il faut utiliser un appareil spécifique dans lequel le FPGA est inséré et dont la commande se fait avec le logiciel du fabricant. La maîtrise des courants et des durées à appliquer pour faire fondre les points de configuration antifusibles est assez complexe. Des erreurs importantes sont possibles, ce qui entraîne la perte du circuit. Pour la programmation de gros ou de nombreux FPGA, il existe des centres spécialisés très efficaces. ■ Les FPGA de la famille Igloo (avec plusieurs variantes disponibles) utilisent actuellement une technologie flash CMOS 130 nm. La configuration est stockée en interne dans le boîtier du FPGA. Au lieu d’avoir les éléments de configuration qui sont stockés dans des points SRAM classiques, ils sont stockés dans des points de mémoire flash et sont donc non volatiles. Un avantage important est d’avoir un FPGA reconfigurable (et pas programmable une « seule » fois en technologie antifusible). De plus, les FPGA flash peuvent être 3.4 FPGA Achronix Certaines sociétés ont fait le choix de proposer des FPGA avec des dispositifs assez différents de ce qui se fait chez les principaux fabricants. La société Achronix, fondée en 2004, propose des FPGA pouvant atteindre des cadences de traitement de 1,5 GHz alors que ses concurrents dépassent tout juste 700 MHz. La solution retenue par Achronix est basée sur des structures asynchrones et très fortement pipelinées. Un bloc logique Achronix, appelé picoPIPE, offre non seulement la fonctionnalité logique reconfigurable mais aussi un dispositif de communication par requête/acquittement. Il n’y a plus d’horloge globale pour cadencer les communications entre les différents blocs (seuls les blocs d’entrée/sortie sont synchrones). Les données traitées et produites dans chaque bloc sont codées selon un mécanisme permettant de savoir si une donnée est valide ou pas. L’information de validité des données, spécifiée par le signal d’horloge dans les circuits synchrones, est ici encodée dans les données. Un bloc logique attend que les entrées nécessaires au calcul de la fonction souhaitée soient valides. Il calcule alors la valeur de la sortie attendue. Une fois cette sortie calculée, il indique que cette sortie est valide (alors qu’elle était invalide avant). Les informations de validité peuvent ainsi se propager aussi vite que possible dans le reste du circuit. Dans un FPGA (ou circuit) synchrone, la fréquence de traitement est déterminée par la chaîne des éléments les plus lents. On parle de temps de calcul dans le pire cas. Dans le cas des FPGA Achronix, la vitesse de traitement est la meilleure possible pour chaque combinaison des entrées. On parle alors de temps de calcul en temps moyen. Le seul véritable frein à cette technologie est la prise en compte de l’asynchronisme lors de la conception. Les formations n’intègrent pas souvent ce type de circuit. De plus, il reste encore du travail sur les outils avant d’arriver au même niveau de productivité que les FPGA classiques. C’est une technique assez nouvelle dans le monde des FPGA dont les résultats semblent prometteurs. 3.5 Autres types de FPGA Il existe un grand nombre de recherches autour du domaine des architectures reconfigurables et de FPGA particuliers ou dédiés à des domaines d’applications. Les FPAA (Field Programmable Analog Array ) sont des circuits où ce sont des fonctions analogiques qui sont reconfigurables. Ces circuits sont basés sur des matrices de blocs de traitement analogique configurables et sur des ressources de routages programmables entre les blocs. Les blocs sont souvent basés sur des amplificateurs opérationnels configurables et des capacités commutées. Ces circuits permettent d’effectuer différentes opérations sur des signaux analogiques comme l’addition, la soustraction, la multiplication, l’intégra- Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 H 1 196 – 15 Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________ tion, la différenciation, etc. On va aussi trouver des réseaux de capacités et de résistances configurables. Certains traitements, comme l’intégration ou la différenciation de signaux, sont très simplement réalisables en analogique. Un des points critiques est la dégradation de la qualité des signaux dans le routage programmable. 3.6 Cartes de développement et d’accélération Il existe sur le marché un très grand nombre de cartes qui intègrent au moins un circuit FPGA. Les fabricants de FPGA proposent souvent leurs propres cartes mais on trouve aussi beaucoup de sociétés qui conçoivent et proposent leurs cartes FPGA pour différents types d’applications et de domaines. Très tôt, certaines sociétés ont proposé des cartes de prototypage pour pouvoir émuler un circuit intégré ASIC, dans son environnement final, avant même sa conception et sa fabrication. Les premières générations de FPGA ont tout d’abord été cantonnées à l’émulation de petits circuits ASIC. Puis avec l’augmentation très importante du nombre de portes configurables et des performances, les FPGA sont devenus des supports d’émulation très efficaces pour des gros circuits. Par exemple, les fabricants de processeurs à hautes performances comme Intel ont pu effectuer l’implantation complète d’un processeur sur des systèmes à base de plusieurs FPGA. Du fait du fonctionnement sur plusieurs FPGA, la fréquence obtenue est assez faible, mais elle reste bien meilleure que les vitesses que l’on peut obtenir en faisant des simulations logicielles au niveau électrique et même au niveau porte logique. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 Les FPGA étant de plus en plus performants au cours du temps, ils sont devenus une alternative à la fabrication de circuits ASIC dans certains cas. Lorsque l’on désire produire un petit nombre de pièces d’un système, il n’est pas envisageable de fondre un ASIC. Les coûts de conception et de fabrication seraient alors bien trop importants. Le temps de conception est aussi bien plus important en ASIC qu’en FPGA. Les FPGA ont donc remplacé les ASIC dans certains petits (mais assez nombreux) marchés spécifiques. C’est ainsi que l’on trouve aujourd’hui une multitude de cartes FPGA avec différents autres circuits (interfaces, convertisseurs analogiques-numériques et numériques-analogiques, mémoires, etc.) pour essayer de répondre à ces besoins. tiwekacontentpdf_h1196 duction du fait de la plus faible surface silicium, ce qui est important pour des productions de volume. D’autre part, une plus grande sécurité de conception par rapport à une conception ASIC entièrement à la charge du concepteur. Les différents blocs utilisés dans la technologie easypath sont totalement maîtrisés par Xilinx. Xilinx annonce même une conversion en six semaines. Ce qui est sans commune mesure avec les temps de conception d’un circuit ASIC traditionnel. Bien entendu, les performances sont moins bonnes que ce l’on pourrait envisager avec la conception et l’optimisation complète d’un circuit ASIC mais avec des temps et coûts de conception bien plus grands. 4. Outils de développement La programmation d’un FPGA est réalisée via un nombre important de points mémoire permettant de configurer la structure matérielle de la fonctionnalité réalisée. Cette configuration permet notamment de programmer : – le contenu des LUT et les autres paramètres des blocs logiques (présence d’une bascule, état au reset, utilisation de la chaîne de retenue, etc.) ; – les connexions dans les blocs de routage ; – l’initialisation du contenu des mémoires ; – la taille et le chemin de données des blocs arithmétiques ; – les autres structures programmables telles que les entrées/sorties, les générateurs d’horloge, etc. Les outils de CAO (conception assistée par ordinateur) pour les FPGA permettent de transformer le Design, spécifié à l’aide de schémas ou d’un langage de description du matériel, en une suite de données binaires (Bitstream) permettant de programmer le FPGA lorsque celui-ci est en mode configuration. La figure 12 montre un exemple typique de flot de CAO pour FPGA depuis la spécification de la fonctionnalité au fichier de configuration du FPGA en passant par les étapes de synthèse, de placement et de routage. Les cartes à base de FPGA sont encore aujourd’hui extrêmement prisées pour le prototypage de systèmes, la vérification de circuits ou bien le développement de petits nombres de pièces d’un système. Mais on trouve aussi des cartes spécifiques pour l’accélération de calculs dans certaines applications. On parle alors de cartes d’accélération à base de FPGA. Les cartes FPGA sont souvent utilisées en enseignement de la micro-électronique. Elles permettent de concevoir et de tester dans des conditions réelles des véritables solutions matérielles. Spécification du cirucuit VHDL, Verilog C/C++, Matlab/Simulink Synthèse de haut-niveau 3.7 Conversion de technologies FPGA vers ASIC Xilinx propose une solution de conversion FPGA vers ASIC avec la technologie easypath. Un circuit intégré de type ASIC (Application Specific Integrated Circuit ) sera conçu à partir d’une version FPGA. Dans un circuit FPGA, une très grande surface de silicium est utilisée pour la configuration. Si le FPGA n’est jamais reconfiguré en utilisation, cette surface est un surcoût important. L’idée de la conversion FPGA vers ASIC, qui existe aussi chez d’autres fabricants, est de faire un circuit à partir de la description complète FPGA en simplifiant toute la logique de configuration fixée une fois pour toutes. Seules les parties non reliées à des points de configuration sont conservées et ajustées à la bonne valeur utilisée dans la configuration. Deux types d’avantages sont cités pour cette technologie. D’une part, un plus faible coût de pro- H 1 196 – 16 Synthèse logique Placement Routage Fichier de configuration du FPGA Figure 12 – Flot typique de CAO pour FPGA Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ______________________________________________________________________________________________ ARCHITECTURES RECONFIGURABLES FPGA 4.1 Langages de description Depuis le milieu des années 1990, il est devenu tout à fait classique d’utiliser des langages de description matérielle HDL (Hardware Description Language) tels que VHDL ou Verilog pour spécifier une fonctionnalité dans un circuit intégré ou dans un FPGA. On parle alors de spécification de niveau RTL (Register Transfer Level ) et le concepteur décrit son système par un ensemble de fonctions de base qui sont soit combinatoires (logique, arithmétique, aiguillage), soit synchrones (bascules, registres, mémoire), ainsi que par les signaux qui les connectent entre elles. Des langages de ce type permettent en outre d’exprimer le parallélisme très facilement puisque leur description est intrinsèquement concurrente et prend la forme d’un ensemble de processus ou d’instructions flots de données communicants. Une machine d’états de Moore sera par exemple spécifiée par un processus synchrone décrivant le registre d’états associé à un ou plusieurs processus pour décrire les fonctions logiques combinatoires de décodage de l’état courant fournissant les valeurs des sorties et l’état suivant en fonction des valeurs des entrées. Décrire précisément de tels langages est en dehors de la portée de ce paragraphe ; aussi nous donnons un exemple de code VHDL de niveau RTL spécifiant un multiplieur accumulateur associé à un banc de registres. Exemple : spécification VHDL d’un MAC réalisant la fonction Y = Y + R (i ) × R (j ) avec R un banc de 16 registres de 16 bits et Y un accumulateur sur 32 bits. entity MAC is port(clk,asynch_reset: in bit; i,j: in integer range 0 to 15; Rin: in integer range –32768 to 32767; write, ZACC: in bit; Y: out integer range –32768 to 32767); end MAC; architecture RTL of MAC is subtype int16 is integer range –32768 to 32767; type RegFile is array (0 to 15) of int16; signal R: RegFile := (others => 0); -- R: banc de registres 16x16 bits signal outMult, outAdd: integer; signal acc: integer; begin Plus récemment, une tendance forte venant de la forte complexité offerte par les circuits intégrés et FPGA actuels est de spécifier la fonctionnalité à un niveau d’abstraction plus élevé. Aussi, sont apparus récemment des flots de conception permettant de décrire la fonctionnalité avec des langages tels que C ou C++, voire avec des descriptions de type flot de données dans des outils tels que Simulink de MathWorks. Dans le paragraphe 4.3, on revient sur cette évolution récente des méthodes de conception. 4.2 Synthèse logique La synthèse logique, ou synthèse RTL, permet de convertir la description du circuit en une liste de portes logiques de base et de leurs interconnexions : on parle alors de Netlist. Cette phase est typiquement divisée en trois étapes : – synthèse arithmétique ; – optimisation logique ; – transformation (Mapping) technologique. La figure 13 montre le résultat de la synthèse logique du circuit spécifié par le code de l’exemple du paragraphe 4.1 sur l’outil ISE de Xilinx. La synthèse arithmétique permet de traiter de façon spécifique les blocs arithmétiques, ce qui permet de mettre en œuvre des techniques optimisées pour, en particulier, l’addition et la multiplication. On peut alors instancier les blocs logiques de propagation de la retenue ou encore les blocs arithmétiques embarqués pour des opérateurs arithmétiques plus performants que s’ils n’etaient traités qu’à partir de leurs équations logiques. L’optimisation logique est un étage indépendant de la cible technologique qui simplifie les équations logiques obtenues à partir de la description RTL du Design. Cette phase d’optimisation permet de réduire la logique redondante (optimisation orientée surface) ou de diminuer le temps de propagation (optimisation orientée performance). Le résultat de l’optimisation logique est ensuite transformé (Mapping ) sur un ensemble de LUT à k entrées et de bascules dans la phase de transformation technologique (Technology Mapping). Cette étape résout le problème de découverte d’une découpe incluant tous les nœuds du circuit en blocs logiques de taille k sur la fonction logique globale, sous contrainte de minimisation de la surface (ou du nombre de blocs), du délai ou encore de la consommation d’énergie. Ce problème est équivalent à une couverture de graphe et est donc souvent résolu à l’aide d’heuristiques. La transformation technologique dépend bien sûr du FPGA ciblé et en particulier de la taille de ses LUT et de la hiérarchie de celles-ci au sein des blocs logiques de base. outMult <= R(i) ∗ R(j); outadd <= outMult + acc; Y <= acc; BancRegistre: process(asynch_reset,clk) begin if asynch_reset ='0' then R <= (others => 0); acc <= 0; if clk'event and clk='1' then if write='1' then R(i) <= Rin; end if; if ZACC='1' then acc <= 0; else acc <= outAdd; end if; end if; end if; end process BancRegistre; end RTL; 4.3 Synthèse de haut niveau La synthèse de haut niveau HLS (High-Level Synthesis ) permet de générer automatiquement la description en HDL de niveau RTL à partir d’une description de plus haut niveau, spécifiée le plus souvent à l’aide de langages tels que C, C++ ou de la bibliothèque SystemC. Ces outils permettent un fort gain en termes de productivité puisqu’ils permettent d’exprimer directement la fonctionnalité, sans (ou avec très peu) informations liées à l’architecture. La complexité de l’architecture synthétisée dépend alors des contraintes de performances fournies à l’outil, celles-ci étant typiquement exprimées sous la forme d’une cadence d’écriture des données d’entrée et/ou de lecture des données de sortie de la fonction. Nous donnons un exemple de spécification C++ d’un filtre numérique de 32 coefficients traitant des échantillons sur 8 bits pour l’outil Catapult Synthesis de Mentor Graphics. Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 H 1 196 – 17 Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________ Figure 13 – Résultat de synthèse logique du circuit de l’exemple du § 4.1 sur un Virtex 5 XC5VLX30 à l’aide de l’outil ISE version 10.1 de Xilinx Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 Exemple : spécification C++ pour l’outil Catapult Synthesis de Mentor Graphics d’un filtre numérique de 32 coefficients traitant des échantillons sur 8 bits. #include "ac_int.h" #define NUM_TAPS 32 #pragma design top void fir_filter (ac_int<8> *input, ac_int<8> coeffs[NUM_TAPS], ac_int<8> *output){ static ac_int<8> regs[NUM_TAPS]; int temp = 0; int i ; SHIFT:for (i = NUM_TAPS-1; i>=0; i--){ if (i == 0) regs[i] = *input; else regs[i] = regs[i-1]; } MAC:for (i = NUM_TAPS-1; i>=0; i--){ temp += coeffs[i]*regs[i]; } *output = temp>>7; } tiwekacontentpdf_h1196 D’autres outils (C2S de Cadence, C2H d’Altera, AutoESL de Xilinx, etc.) permettent des spécifications proches de celle de l’exemple, mais il est vrai qu’il n’existe pas pour l’instant de norme pour la spécification de circuits intégrés ou de FPGA au niveau HLS. La synthèse de haut niveau est typiquement divisée en cinq étapes : compilation, sélection, ordonnancement, allocation et génération de code. L’étape de compilation permet de transformer la spécification de haut niveau en une représentation de graphe de données et de contrôle CDFG (Control and Data Flow Graph ) qui sert de représentation interne aux outils HLS. Afin d’améliorer les performances du circuit, des transformations peuvent être effectuées sur ce graphe. Par exemple, le déroulage partiel ou total des boucles permet d’exhiber du parallélisme à l’intérieur d’une boucle ou du pipeline entre les différentes boucles, ce qui permet d’allouer plus d’opérateurs et donc d’augmenter les performances. La sélection permet de déterminer le type et le nombre des opérateurs arithmétiques à utiliser dans l’architecture pour respecter les contraintes de cadence fournies par l’utilisateur. H 1 196 – 18 Exemple : sur le filtre de taille 32 de l’exemple précédent, si on considère que le FPGA peut réaliser une multiplication et une addition par cycle d’horloge, alors l’utilisation de quatre multiplieurs et de quatre additionneurs permet de filtrer un nouvel échantillon tous les 32/4 = 8 cycles. La fréquence d’horloge d’un cycle est déterminée en fonction du FPGA utilisé, de la taille des données et du placement/routage du filtre. L’étape de sélection permet aussi de déterminer le nombre et le type de blocs mémoire selon le même principe. Une fois le nombre d’opérateurs déterminé, l’ordonnancement permet de déterminer la date (numéro du cycle d’horloge) à laquelle chaque opération et chaque transfert de registre ou de mémoire du CDFG sont effectués. Cette étape est centrale dans le flot et les algorithmes utilisés sont souvent les mêmes que pour la compilation logicielle (ordonnancement par liste) et doivent rester peu complexes pour permettre de traiter des graphes de taille importante. Ensuite, l’allocation permet d’assigner chaque opération à un opérateur, chaque transfert de/vers un registre à un registre particulier, chaque transfert mémoire à un bus de communication et chaque donnée à un registre ou à une case mémoire. Cette étape se trouve être assez différente de celle pour la compilation logicielle puisque l’architecture est générée conjointement avec son microprogramme (et non contrainte par un processeur particulier), mais sous contrainte de ne pas générer trop de composants d’interconnexions. Ce problème revient à un coloriage de graphe sous contraintes et à nouveau, les algorithmes utilisés doivent rester de complexité limitée. Enfin, la dernière étape consiste à générer le code RTL à partir du CDFG qui a été sélectionné, ordonnancé et alloué, en prenant en compte les contraintes liées au composant ciblé et au reste du flot. Le code RTL généré devient ainsi l’entrée de l’étape de synthèse logique précédemment décrite. 4.4 Placement/routage Dans la phase de placement, les blocs logiques issus de la synthèse logique sont distribués sur les blocs physiques de la matrice du FPGA. Les algorithmes de placement doivent alors minimiser le délai sur les chemins critiques du circuit et améliorer la routabilité du circuit dans son ensemble. La plupart des outils commerciaux Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ______________________________________________________________________________________________ ARCHITECTURES RECONFIGURABLES FPGA Xilinx FPGA Editor - MAC.ncd - [Array1] File Edit View Tools Window Help exit add attrib autoroute clear delay delete drc editblock editmode find black hilite ila info probes autoprobe route route-fanout swap unroute clicking two or more layer buttons, and then clicking on the apply button again. node = INPUT (−63568, 17816) Figure 14 – Résultat de placement/routage du circuit de l’exemple du § 4.1 sur un Virtex 5 XC5VLX30 à l’aide de l’outil ISE version 10.1 de Xilinx utilisent des algorithmes basés sur le recuit simulé (Simulated Annealing ) qui donne de bons résultats tout en restant flexible. Le principe de ces algorithmes dérive du processus de recuit utilisé pour refroidir du métal en fusion. Un premier placement aléatoire et tout d’abord déterminé. Ensuite, des paires de blocs logiques sont sélectionnées aléatoirement pour être échangées avec pour objectif de réduire une fonction de coût. Si cet échange diminue le coût, alors il est validé, sinon il est autorisé avec une probabilité qui décroît au fur et à mesure que l’algorithme progresse. La phase de routage assigne les ressources de routage du FPGA aux différentes connexions entre les blocs logiques à partir du Design qui vient d’être placé. L’objectif est ici de minimiser le délai sur le chemin critique du circuit, tout en évitant les congestions dans les ressources de routage du FPGA. En lien avec les étapes de placement et de routage, une analyse des aspects temporels (Timings ) est réalisée. Celle-ci permet de guider ces algorithmes et de définir la fréquence maximale de l’horloge en fonction des délais élémentaires des blocs logiques et des blocs de routage. La figure 14 montre le résultat du placement/routage du circuit de l’exemple du paragraphe 4.1 sur l’outil ISE de Xilinx. 4.5 Bibliothèques et macrogénérateurs de blocs IP Afin d’améliorer la productivité lors de la conception des circuits intégrés et FPGA complexes, la notion de blocs de propriété intellectuelle IP (Intellectual Property ) est apparue il y a plusieurs années. Le principe est de réutiliser des blocs conçus par d’autres concepteurs dans son Design. Ces IP peuvent être (cf. [Doc. H 1 196]) : – soit achetés à des fournisseurs spécifiques ; – soit téléchargés librement sur des sites Open-source ; – soit générés automatiquement à partir d’un outil et d’un ensemble de paramètres. Dans le monde des FPGA, les fabricants de composants comme Xilinx ou Altera fournissent généralement avec leur suite d’outils une bibliothèque d’IP très fournie (interfaces, périphériques, contrôleur mémoire, opérateurs complexes, etc.) et des générateurs pour des blocs tels que la transformée de Fourier rapide (FFT) ou les filtres numériques. La recherche académique propose aussi de nombreux blocs IP et des macrogénérateurs de blocs. Par exemple, FloPoCo (flopoco.gforge.inria.fr) propose des unités flottantes optimisées pour les FPGA. On trouve aussi des blocs pour des applications audio, vidéo ou de cryptographie très optimisés pour les circuits FPGA. 5. Applications Les premiers FPGA étaient cantonnés à des applications d’interfaçage entre circuits intégrés au sein d’une carte électronique (mise en forme de signaux, gestion des entrées/sorties, fonction de décodage, retard variable de signaux, petits automates de contrôle, etc.). On parlait alors l’utilisation en Glu Logique. Aujourd’hui, l’intégration d’importantes capacités de calcul, de mémorisation et de communication dans un seul FPGA leur permet de devenir des solutions incontournables dans de nombreuses applications. Ainsi, il n’est pas rare de rencontrer des solutions entièrement basées sur un circuit FPGA comme élément actif et, éventuellement, d’un ou plusieurs circuits de mémoire. L’une des caractéristiques qui a fait, et continue de faire, le succès de FPGA est leur grande flexibilité du fait de la reconfiguration. Il est ainsi possible de corriger ou améliorer, dans une certaine mesure, un système après sa mise sur le marché. Les mises à jour du FPGA sont alors assez proches de mises à jour purement logicielles. De plus, les FPGA offrent un temps de développement et de mise sur le marché réduit par rapport à des solutions ASIC pour un investissement et un risque bien plus faibles. Cependant, ils offrent des performances moindres et une énergie consommée plus importante qu’en ASIC. Mais il est quand même possible de concevoir assez facilement des systèmes avec plusieurs milliards d’opérations par seconde (GOp · s–1) dans un FPGA récent. Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 H 1 196 – 19 Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________ Les FPGA ont toujours été très présents dans le domaine du calcul spécialisé. Les processeurs généralistes, comme ceux qui équipent nos ordinateurs domestiques et les serveurs, sont conçus pour manipuler des nombres entiers ou réels (approximation en virgule flottante) sur 32 ou 64 bits. Pour des tailles plus petites et des types de calculs particuliers, ils ne sont pas du tout efficaces. Exemple : en codage-décodage vidéo, les FPGA permettent de manipuler directement en parallèle des blocs d’images de 3 × 3 ou même 8 × 8 pixels sur 8 bits. Les différentes étapes d’un tel système peuvent être exécutées en Pipeline avec des hauts débits. Les différents blocs matériels sont optimisés pour leur tâche. Souvent un processeur logiciel (par exemple, µBlaze, NIOS) se charge de l’ordonnancement des tâches et de l’interfaçage. En bio-informatique, les FPGA ont souvent été utilisés pour exécuter certains algorithmes de recherche de motifs dans des chaînes comme l’ADN. Le codage des données n’utilise que quelques bits et des calculs de similarité assez simples. Effectuer un calcul pour différentes positions dans une chaîne est très simple en FPGA car les décalages ne coûtent que du routage contrairement aux processeurs qui doivent exécuter des instructions de décalage même pour quelques bits. Les nombreuses entrées/sorties à très haut débit disponibles dans certains FPGA permettent d’effectuer des calculs de traitement du signal très avancées pour les communications numériques. Ces grandes capacités d’entrée/sortie couplées aux nombreux blocs DSP dédiés fournissent des solutions extrêmement performantes pour lesquelles des équivalents ASIC seraient très coûteux et longs à développer. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 Le domaine de la sécurité utilise souvent des FPGA pour fournir en matériel des blocs dédiés pour effectuer des calculs cryptographiques. Ces blocs matériels sont bien plus robustes aux attaques logicielles que des programmes logiciels exécutés sur un processeur. En effet, le bloc étant dédié, il n’effectue que son calcul cryptographique et rien d’autre, ce qui rend bien plus complexe l’insertion d’instructions malveillantes. De plus, les FPGA permettent de stocker de façon totalement confinée les clés secrètes dans des registres locaux qui ne peuvent être lus que par le bloc cryptographique, on parle d’isolement physique. Cet isolement dans la mémoire d’un processeur est beaucoup plus complexe, voire même impossible. Les FPGA sont aussi utilisés pour leur performance lors de l’implantation de certains algorithmes cryptographiques. En cryptographie symétrique, comme pour l’algorithme AES (Advanced Encryption Standard ), les calculs comportent de nombreuses opérations et des manipulations sur des petits nombres de bits (représentation d’éléments de corps finis) bien plus efficaces en FPGA que dans un processeur. tiwekacontentpdf_h1196 Le secteur automobile n’est pas en reste pour ce qui est de l’utilisation des FPGA. De nombreux dispositifs de traitement peuvent être embarqués dans un petit nombre de circuits FPGA, ce qui simplifie et rend plus robuste les cartes électroniques. Dans ce domaine, on utilise des algorithmes en traitement du signal (FFT, convolution, filtrage adaptatif, etc.), en contrôle numérique (par exemple, commande de moteurs), en interface homme-machine, en traitement audio et vidéo, communications internes et externes, etc. La flexibilité permise par la reconfiguration est aussi mise en avant pour permettre le support de nouvelles fonctionnalités durant la vie du véhicule. Certains fabricants de FPGA proposent des gammes spécifiques pour le secteur automobile avec des gammes de températures plus importantes et des boîtiers robustes aux vibrations. Le calcul à haute performance est aussi utilisateur de FPGA. De nombreuses machines à base de FPGA ont été proposées dans le passé avec comme principal argument la très grande performance des FPGA pour certains types de calcul par rapport aux processeurs généralistes. Depuis quelques années, on assiste à l’utilisation de FPGA comme accélérateurs dans certains superordinateurs à côté des processeurs à haute performance classiques. H 1 196 – 20 Exemple : le CRAY XD-1 utilisait des FPGA Xilinx Virtex Pro II reliés aux processeurs Opteron par des connexions HyperTransport. Aujourd’hui de nombreuses sociétés comme IBM ou Silicon Graphics proposent des superordinateurs avec des FPGA en complément des processeurs classiques. L’un des avantages important des FPGA est leur plus grande efficacité énergétique par rapport aux processeurs. Dans un processeur, seulement 5 à 10 % de l’énergie est utilisée pour le calcul. Le reste est utilisé pour l’acheminement des instructions et des données, et la gestion du processeur (horloge à haute fréquence, mémoires caches, mécanismes de prédiction, gestion de la cohérence, etc.). La plus grande efficacité énergétique des FPGA est très utile dans les centres de calcul pour lesquels l’évacuation de la chaleur est aujourd’hui le principal problème. Dans bon nombre d’applications, il faut effectuer une séquence de tâches sur des grandes quantités de données. Pourquoi alors ne pas configurer les FPGA pour chaque tâche, effectuer les calculs du façon très optimisée, puis passer à la suivante ? On commence à voir des solutions qui intègrent dans une même puce un ou des cœurs de processeur et des zones reconfigurables de FPGA. Exemple : le processeur Intel Atom E6×5C est intégré avec un FPGA Altera Arria GX II dans un même boîtier (Multichip Package ). Le processeur est basé sur une architecture IA 32 bits avec 512 Ko de cache de second niveau, deux caches de premier niveau (32 Ko de données et 32 Ko d’instructions). Les fréquences du cœur sont de 0,6, 1,0 ou 1,3 GHz. Le FPGA contient jusqu’à 60 000 blocs logiques, 312 blocs DSP et des Transceivers jusqu’à 3,125 Gb · s–1. L’interfaçage entre le processeur et le FPGA se fait via deux liens PCI Express × 1. Cette approche est encore trop récente pour être massivement adoptée, mais il ne fait pas de doute que les FPGA sont des éléments importants des dispositifs pour le calcul haute performance généraliste et spécialisé dans l’avenir. L’intégration 3D et la diminution de la finesse de gravure dans les circuits intégrés offrent des perspectives intéressantes pour le couplage fort entre des processeurs et des zones reconfigurables dans un même circuit. 6. Conclusion Dans les années 1980, les premiers circuits FPGA étaient limités à des tâches d’interfaçage entre différents circuits intégrés sur une même carte imprimée. Les évolutions technologiques importantes des années 1990 ont permis la mise sur le marché de FPGA avec de nombreuses ressources configurables. Dès ce moment, les FPGA sont devenus des alternatives aux circuits intégrés ASIC dans bon nombre d’applications pour des petites séries et dans le prototypage. L’intégration massive de nombreuses ressources configurables, de blocs de mémoire, d’opérateurs de calcul optimisés et de processeurs embarqués dans les années 2000 a permis l’explosion de l’utilisation des FPGA dans le monde de l’électronique. Un FPGA actuel permet de réaliser des fonctionnalités de plusieurs millions de portes logiques. Il est donc possible aujourd’hui de réaliser en FPGA des systèmes sur puce complets, ou SoC, pour des applications très complexes et qu’il serait beaucoup plus coûteux ou risqué de faire en ASIC et sans la garantie de pouvoir concevoir un circuit totalement fonctionnel à la fin. Il semble qu’une tendance est l’utilisation conjointe de cœurs de calcul de processeurs (potentiellement parallèles) avec des zones reconfigurables de FPGA. Il n’est pas impossible que dans un avenir proche des circuits avec plusieurs cœurs, des zones reconfigurables et des accélérateurs dédiés soient disponibles. Les FPGA deviendront très certainement des supports pour concevoir des MPSoC (Multi-Processor System on Chip ) et des systèmes Many Core (avec de très nombreux cœurs de processeur sur une même puce). La flexibilité offerte par les FPGA a révolutionné le monde des circuits électroniques. Il est certain que cela ne s’arrêtera pas aux structures actuelles. Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 Architectures reconfigurables FPGA par Olivier SENTIEYS Professeur à l’École nationale supérieure des sciences appliquées et de technologie (ENSSAT) de l’Université de Rennes 1 à Lannion Chercheur et responsable du département architecture et de l’équipe-projet CAIRN commune au laboratoire IRISA et au Centre de recherche INRIA Rennes – Bretagne Atlantique et Arnaud TISSERAND Chercheur au Centre national de la recherche scientifique (CNRS) dans le laboratoire IRISA et l’équipe-projet CAIRN à Lannion Enseignant vacataire à l’École nationale supérieure des sciences appliquées et de technologie (ENSSAT) et l’École normale supérieure de Rennes Sources bibliographiques HAUCK (S.), DEHON (A.) et KAUFMANN (M.). – Reconfigurable computing. The theory and practice of FPGA-Based Computation. Systems on Silicon (2007). TESSIER (R.), ROSE (J.) et KUON (I.). – FPGA architecture : survey and challenges. Now Publishers Inc. (2008). JOAO (M.P.), CARDOSO et DINIZ (P.C.). – Compilation techniques for reconfigurable architectures. Springer-Verlag, 2e éd. (2010). BETZ (V.), ROSE (J.) et MARQUARDT (A.). – Architecture and CAD for deep-submicron FPGAs. Kluwer Academic Publishers (1999). WESTE (N.) et HARRIS (D.). – CMOS VLSI design : a circuits and systems perspective. Addison Wesley, 4e éd. (2010) http://www.cmosvlsi.com/ FANET (H.). – Micro et nano-électronique : bases, composants, circuits. Dunod (2006). DAVID (R.), PILLEMENT (S.) et SENTIEYS (O.). – Energy-efficient reconfigurable processors. Low-Power Electronics Design, CRC Press (2006). Outils logiciels VPR : ensemble d’outils de CAO pour FPGA fait par l’Université de Toronto. Initialement spécialisés sur les phases de placement/routage. Aujourd’hui disponibles pour d’autres phases du flot de conception FPGA http://www.eecg.utoronto.ca/vpr/ Synplify : outil de synthèse logique pour circuits FPGA commercialisé par la société Synopsys capable d’effectuer des synthèses pour différents FPGA de différents fabricants http://www.synopsys.com ISE : environnement de conception de la société Xilinx, permettant d’effectuer toutes les phases du flot de conception (synthèse, placement, routage, programmation, debug) pour les circuits FPGA Xilinx. Version limitée (webpack) disponible en téléchargement gratuit pour les petits circuits http://www.xilinx.com Quartus : environnement de conception de la société Altera, permettant d’effectuer toutes les phases du flot de conception (synthèse, placement, routage, programmation, debug) pour les circuits FPGA Altera. Version limitée disponible en téléchargement gratuit pour une utilisation pendant 30 jours http://www.altera.com OpenCores : blocs IP en open source http://opencores.org Xilinx IP core generator : blocs IP faits par le fabricant ou par des sociétés tierces http://www.xilinx.com Altera IP Cores : blocs IP faits par le fabricant ou par des sociétés tierces http://www.altera.com Événements FPGA : ACM/SIGDA International Symposium on Field-Programmable Gate Arrays http://www.isfpga.org FPL : International Conference on Field Programmable Logic and Applications. 22e édition en 2012 http://www.fpl.org/ FPT : International Conference 10e édition en 2011 on Field-Programmable Technology. FCCM : IEEE International Symposium on Field-Programmable Custom Computing Machines http://fccm.org DAC : Design Automation Conference http://www.dac.com/ DATE : Design, Automation, and Test in Europe conference http://www.date-conference.com CHES : Workshop on Cryptographic Hardware and Embedded Systems http://www.iacr.org/workshops/ches/ Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 Doc. H 1 196 – 1 P O U R E N S A V O I R P L U S Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 P O U R ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________ Annuaire Constructeurs – Fournisseurs – Distributeurs (liste non exhaustive) Xilinx http://www.xilinx.com E N Altera http://www.altera.com Actel http://www.actel.com Atmel http://www.atmel.com Achronix http://www.achronix.com Documentation - Formation – Séminaires (liste non exhaustive) Journal ACM Transactions on Reconfigurable Technology and Systems (TRETS) http://trets.cse.sc.edu/ Journal IEEE Transactions on Circuits and Systems Journal IEEE Transactions on Computers Journal IEEE Transactions on VLSI Systems Revue XCELL de la société Xilink http://www.xilinx.com S A V O I R Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5 P L U S tiwekacontentpdf_h1196 Doc. H 1 196 – 2 Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie est strictement interdite. – © Editions T.I. Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5