Les FPGAs (Field-Programmable Gate Arrays) sont des architectures reconfigurables qui permettent de concevoir des circuits numériques simplement en programmant des cellules mémoires qui déterminent leur fonctionnalité. Les FPGAs sont couramment utilisés pour le prototypage ou les produits de moyenne ou petite série car ils évitent le recourt à la conception complexe et couteuse d’un composant spécifique (ASIC). A cause du coût de plus en plus élevé de la conception et la fabrication d’un ASIC, les FPGAs sont utilisés pour des volumes de produits de plus en plus grands. Il existe, par exemple, des FPGAs d’entrée de gamme comme ceux de Lattice Semiconductor de la famille iCE40 destinés aux applications mobiles. Le succès des FPGAs est non seulement lié au coût élevé des ASICs mais également le haut degré d’intégration qui permet d’implémenter des fonctions complexes en rivalisant par exemple avec les DSPs. Ce haut degré d’intégration est permis grâce aux technologies avancées. En effet, les fabricants de FPGA tentent toujours de rester dans les technologies les plus avancées afin d’augmenter la densité et la rapidité des FPGAs tout en diminuant leur consommation. Ceci est très bien illustré par les startups Achronix et Tabula qui vont faire fondre leurs FPGAs par Intel dans le procédé de fabrication 22 nm.
Cependant, les nœuds technologiques avancés font face à de nombreux défis et notamment les difficultés liées au procédé de fabrication qui augmente la dispersion des caractéristiques, l’augmentation des courants de fuite qui augmente la consommation au repos des circuits, l’augmentation de la densité d’énergie des circuits qui engendre des températures élevées et menace la durée de vie des transistors et une sensibilité aux radiations accrue. Dans le domaine des circuits, les mémoires, qui constituent la majorité de la surface d’un FPGA, sont donc sujettes à ces problèmes. Pour les résoudre, une des solutions consiste à faire appel à de nouvelles technologies de mémoire et en particulier les mémoires MRAMs. Les mémoires MRAMs sont constituées de Jonctions Tunnel Magnétiques (JTMs). Elles stockent l’information sous la forme d’une aimantation. Les JTMs sont typiquement de forme sphérique ou elliptique et sont constituées d’un empilement de trois couches. Deux couches ferromagnétiques séparées par une couche isolante. Une des deux couches ferromagnétiques a une aimantation fixée dans un certaine direction (couche de référence) tandis que l’autre peut voir la sienne changer dans deux directions (couche de stockage). Ainsi, la propagation des électrons est changée suivant que les deux aimantations sont parallèles ou antiparallèles c’est-à-dire que la résistance électrique de la jonction change suivant l’orientation des aimantations. Elle est faible lorsque les aimantations sont parallèles et forte lorsqu’elles sont antiparallèles. L’écriture d’une JTM consiste donc à changer l’orientation de l’aimantation de la couche de stockage tandis que la lecture consiste à déterminer si l’on a une forte ou une faible résistance.
Les FPGAs
Un FPGA (Field-Programmable Gate Array) est un composant électronique programmable. Il permet de synthétiser n’importe quel circuit numérique (multiplieur, additionneur, processeur, …), pourvu que le FPGA soit assez complexe pour le contenir. Un FPGA est composé de centaines de cellules logiques réalisant chacune une fonction logique élémentaire programmable. Ces cellules sont organisées en une matrice et reliées entre elles par un vaste réseau d’interconnexions programmables. Une fonction logique complexe est implémentée en programmant les fonctions élémentaires de chaque cellule logique et en les reliant entre elles en programmant chaque interconnexion. Elle communique avec les composants électroniques extérieurs via des plots d’entrée/sortie également programmables. Cette flexibilité est le principal avantage des FPGAs sur les ASICs. Elle permet de réduire les coûts de fabrication d’un circuit : le coût de développement d’un ASIC peut être de plusieurs millions d’euros tandis qu’un FPGA nécessitera, au plus, quelques milliers d’euros. De plus, le temps nécessaire pour développer le circuit sera plus court pour un FPGA. Cependant cette flexibilité se paie en termes de surface, de consommation et de vitesse. En effet, pour une même fonction logique, un FPGA nécessite entre 20 et 35 fois plus de surface que la même fonction implémentée sur un ASIC [1]. Elle est également 3 à 4 fois moins rapide et consomme environ 10 fois plus qu’un ASIC [1]. Un FPGA est plus cher à l’unité qu’un ASIC en raison de sa surface plus grande. C’est pour ces raisons que les FPGAs sont utilisés pour le prototypage ou les productions en faibles ou moyens volumes tandis que les ASICs doivent être produits à des millions d’exemplaires pour être rentables.
Architectures FPGA
Un FPGA est constitué principalement de quatre composants :
– les blocs logiques configurables
– les cellules mémoires
– le réseau d’interconnexions programmables
– les blocs d’entrée/sortie .
Les blocs logiques programmables réalisent une fonction logique élémentaire (exemple : une fonction NAND à 3 entrées). En assemblant plusieurs de ces fonctions élémentaires, on obtient une fonction complexe. On peut, par exemple, réaliser un additionneur, un multiplieur ou un processeur. Le constituant principal d’un bloc logique est la LUT (Look-Up Table). Elle est constituée de plusieurs entrées (k entrées) et d’une sortie et permet de réaliser n’importe quelle fonction logique à k entrées et une sortie. Chaque LUT sera programmée de façon à réaliser la sous-fonction qui lui a été attribuée. L’architecture des blocs logiques programmables doit être choisie de façon à pouvoir réaliser une fonction complexe avec le minimum de surface (donc avec un minimum de blocs logiques) et le plus rapidement possible. La fonction réalisée par chaque bloc logique est programmable, c’est-à-dire que l’on va écrire la configuration du circuit dans des cellules mémoires. Ces cellules mémoires vont alors activer différents transistors pour accomplir la fonction désirée. Le choix des cellules mémoires est important car il détermine en partie les performances et les caractéristiques du FPGA. Les blocs logiques sont assemblés entre eux grâce à un vaste réseau d’interconnexions programmables. La configuration de ce réseau est également importante. En effet, le réseau doit être assez complexe pour pouvoir implémenter n’importe quelle fonction avec un minimum de surface et il ne doit pas utiliser une surface trop grande afin de limiter la consommation et la perte de rapidité. Il y a donc un compromis à faire entre flexibilité (surface minimum) et performances (rapidité et consommation). Puis pour communiquer avec les composants extérieurs, le FPGA est relié à des blocs d’entrée/sortie programmables. Pour une flexibilité maximum, un bloc d’entrée/sortie doit pouvoir être configuré en entrée, en sortie ou en trois-états et accepter tous les standards d’entrées/sorties (CMOS, TTL, LVDS, …).
La programmation du FPGA consiste à écrire dans les cellules mémoires de configuration. Pour déterminer la valeur à stocker dans chaque cellule mémoire, le programmeur est aidé d’un logiciel de développement. A partir d’un fichier texte écrit dans un langage de description de circuits numériques ou d’un schéma, le logiciel effectue la synthèse du circuit à implémenter. L’étape de synthèse consiste à convertir les fichiers textes (décrivant le circuit) en un fichier RTL (Register Transfer Level) (qui décrit le circuit au niveau porte logique).
Bloc logique configurable
Un bloc logique élémentaire (CLB pour configurable Logic Block) permet d’implémenter une fonction logique simple faisant partie d’un circuit réalisant une fonction plus complexe. Il est principalement composé d’une LUT (Look-Up Table). C’est ce composant qui permet d’implémenter une fonction élémentaire. Une LUT est caractérisée par le nombre d’entrées k : il correspond au nombre d’entrées de la fonction élémentaire. Par exemple, une LUT-2 (donc k = 2) possède 2 entrées et permet de programmer n’importe quelle fonction logique possédant 2 entrées et une sortie (comme une porte OU).
Le principal choix à faire lors de la conception d’un bloc logique est la taille k de la LUT. Pour cela, il faut prendre en compte deux contraintes : Plus k augmente, moins il faudra de blocs logiques pour faire une fonction complexe. Donc le design prendra de moins en moins de surface (jusqu’à un certain point expliqué ultérieurement). De plus, le chemin critique sera diminué car il y aura moins de blocs logiques sur le chemin critique. Plus k augmente, plus le nombre de cellules mémoires augmente (de façon exponentielle). Cela impliquera un nombre de lignes de plus en plus élevé pour interconnecter toutes les entrées des blocs logiques. De plus, le délai de la LUT augmente ce qui diminue la rapidité du bloc logique. Finalement, plus le bloc logique est grand plus il consomme. Il faut donc faire un compromis entre surface, rapidité et consommation. Concernant la consommation, elle dépend du nombre de LUT implémenté es et du nombre d’interconnexions utilisées ainsi que de leur longueur. De plus, la consommation dynamique dépend également de l’application. L’estimation de la consommation est donc complexe et ne sera pas développée dans le cadre de cette thèse. Etudions donc le compromis en surface. Il faut prendre en compte deux effets qui interviennent dans la surface d’un bloc logique. D’une part, plus k est grand, plus le nombre de blocs logiques pour implémenter un circuit sera réduit. Mais d’autre part, plus k est grand, plus le nombre de cellules mémoires sera élevé (augmente exponentiellement : 2k). De plus, il faudra alors complexifier le réseau d’interconnexions pour pouvoir connecter toutes ses entrées entre elles. Ce problème a déjà été étudié dans la littérature, notamment dans [9]. La figure suivante représente la surface d’un bloc logique en fonction du nombre d’entrée k d’une LUT. La surface est évaluée par rapport à la surface d’un transistor de taille minimum. La taille d’un transistor est normalisée par rapport à la taille d’un transistor minimum. De cette façon, la comparaison est indépendante du nœud technologique. La surface affichée comprend la surface d’un bloc logique et la surface du réseau d’interconnexions nécessaires pour router un bloc logique. La deuxième courbe montre le nombre moyen de blocs logiques (cluster) nécessaires pour implémenter 28 circuits de test. Chaque bloc logique contient une seule LUT.
Technologies de mémoire
Les FPGAs étant principalement constitués de cellules mémoire, il est important de connaitre les caractéristiques de ces mémoires pour comprendre les caractéristiques finales du FPGA. Il existe différentes catégories de FPGAs en fonction de la technologie de la mémoire de configuration. Trois types de mémoires sont utilisés dans les FPGAs du commerce : antifusible, FLASH et SRAM. Les paragraphes suivants décrivent donc ces mémoires. La technologie la plus utilisée est la cellule SRAM. Elle est notamment utilisée dans les FPGAs de Xilinx, Altera et Lattice.
|
Table des matières
INTRODUCTION
I. TABLE DES MATIERES
II. TABLE DES FIGURES
III. RESUME
IV. ABSTRACT
V. REMERCIEMENTS
VI. INTRODUCTION GENERALE
VI.1 CONTEXTE
VI.2 OBJECTIFS
VI.3 PLAN DU MANUSCRIT
VII. GLOSSAIRE
VIII. Les FPGAs
VIII.1 Architectures FPGA
VIII.2 Bloc logique configurable
VIII.3 Technologies de mémoire
VIII.4 Réseau d’interconnexions
VIII.4.1 Îlot logique
VIII.4.2 Logique en ligne
VIII.4.3 Mer de portes logiques
VIII.4.4 Architecture hiérarchique
VIII.4.5 Structure unidimensionnelle
VIII.5 Bloc d’entrée/sortie
VIII.6 Les FPGAs modernes
VIII.7 Placement-routage
IX. Architectures reconfigurables dynamiquement
IX.1 Types de reconfiguration
IX.1.1 Multi-contexte
IX.1.2 Reconfiguration partielle
IX.1.3 Reconfiguration en pipeline
IX.2 Catégories de reconfigurations dynamiques
IX.2.1 Algorithmique
IX.2.2 Architecturale
IX.2.3 Fonctionnelle
IX.3 Méthodes pour accélérer la reconfiguration
IX.3.1 Pré-chargement
IX.3.2 Compression
IX.3.3 Portabilité et défragmentation
IX.3.4 Configuration cache
X. Conception basse consommation
X.1 Power gating
X.2 Clock gating
X.3 DTMOS (Dynamic Threshold MOS)
X.4 Multi-Vth design
X.5 Multiple tension d’alimentation
X.6 Dynamic voltage and frequency scaling (DVFS)
XI. Les effets des radiations sur les circuits CMOS
XI.1 Source de radiation
XI.2 Total ionizing dose (TID) effects
XI.3 Déplacement d’atomes
XI.4 Single Event Effects (SEE)
XII. Méthodes de durcissement des circuits face aux radiations
XII.1 Technologie SOI
XII.2 Enclosed layout transistor (ELT)
XII.3 Redondance spatiale
XII.4 Redondance temporelle
XII.5 Dual Modular Redundancy (DMR)
XII.6 Augmentation de la capacité des nœuds
XII.7 Cellules mémoires durcies
XII.8 Code correcteurs d’erreurs (ECC)
XII.9 Mémoire
XII.10 Logiciel
XII.11 Durcissement sur un FPGA
XII.11.1 Technologie mémoire
XII.11.2 Structure du circuit
XII.11.3 Algorithme de placement-routage
XII.11.4 Scrubbing
XII.12 REFERENCES
XIII. Les MRAMs
XIII.1 Spintronique
XIII.2 La JTM
XIII.3 Lecture
XIII.4 Ecriture par champ
XIII.4.1 FIMS
XIII.4.2 TAS
XIII.5 Ecriture par courant polarisé en spin
XIII.5.1 STT planaire
XIII.5.2 MRAM Perpendiculaire
XIII.6 ETAPE DE CONCEPTION SUR MESURE D’UN CIRCUIT ELECTRONIQUE
XIII.7 KIT DE CONCEPTION MAGNETIQUE
XIII.7.1 Description du modèle
XIII.8 REFERENCES
XIV. Etat de l’art des FPGAs à base de mémoires MRAM
XIV.1 Hassoun et Black
XIV.2 Black et Das
XIV.3 Mémoire durcie aux radiations
XIV.4 LUT avec logique en mode courant
XIV.5 Logique dynamique en mode courant
XIV.6 FPGA MRAM du LIRMM
XIV.7 FPGA à base de nouvelles technologies de mémoires
XIV.7.1 Ferroelectric DPGA
XIV.7.2 PCRAM pour FPGA
XIV.8 REFERENCES
CONCLUSION