Extrait de l'émission CPU release Ex0233 : FPGA, deuxième partie.
Les FPGA sont populaires pour la flexibilité que seul procure un circuit logique programmable… mais dites-donc, on appelle ça un FPGA, pas un FRGA : le P
, c’est pour Programmable
, personne n’a dit que vous pourriez REprogrammer plusieurs fois votre FPGA solidement soudé sur votre circuit imprimé.
Et ce n’est pas nouveau ! Depuis qu’on a inventé des circuits contenant de la mémoire non volatile, le choix s’est naturellement posé aux concepteurs, car programmable une fois, plusieurs fois, ou indéfiniment, tout n’a pas toujours été techniquement possible, et même quand ça l’est, il y a des compromis sur le coût, la densité et la durée de vie.
En bons ingénieurs, décomposons le problème : Quel circuit a besoin de stocker de l’information ? et comment stocker de l’information qu’on puisse récupérer dans ledit circuit électrique ? Comme notre but est de programmer une puce FPGA, concentrons-nous sur le stockage d’information directement dans une puce de silicium.
Avant l’invention du FPGA, c’était pour les processeurs qu’on avait besoin de mémoires mortes, c’est-à-dire en lecture seule : les ROM, pour Read-Only Memory
, les PROM, pour Programmable Read-Only Memory
, les EPROM, pour Erasable and Programmable ROM
, et enfin les EEPROM ou E²PROM, pour Electrically Erasable and Programmable ROM
.
Arrêtons-nous sur la première ère des mémoires REprogrammables ! Au début des années 1970s, Intel invente l’UVPROM, pour Ultra-Violet Erasable and Programmable ROM
. Le silicium est visible derrière une fenêtre de quartz dans le circuit intégré. C’est très joli !
Le secret d’une EPROM, c’est de représenter chaque bit par la charge électrique stockée dans un transistor spécial dont la grille, qui décide si le courant passe, est isolée : les électrons y sont piégés. Pour charger la grille, on applique une tension élevée, une histoire d’effet tunnel… mais pour décharger la grille, ce qu’avait trouvé Intel, c’était la lumière ! On peut choisir la longueur d’onde par la simple géométrie des transistors, ils avaient donc sélectionné l’ultra-violet afin que la mémoire ne s’efface pas trop facilement, une bonne semaine en plein soleil. Mais devinez ce qu’on obtient en faisant l’économie de la fenêtre de quartz ? Une UVPROM non effaçable, mais programmable quand même : une ROM programmable une seule fois, une One-Time Programmable ROM
ou OTPROM.
C’est donc ainsi qu’on fait une PROM non EPROM ? Et bien, pas du tout ! Enfin, pas nécessairement : si une OTPROM est bien une PROM, il existe une technologie plus ancienne d’une bonne décennie, qui consistait à intégrer des fusibles microscopiques dans le semiconducteur. Il existe plusieurs technologies mais le principe est toujours le même : appliquer un voltage élevé afin de détruire une diode ou un fil de polysilicium appelé polyfuse ou un condensateur appelé antifuse, tous éléments synthétisables directement dans la puce de silicium, afin de créer une différence mesurable par la circuiterie de lecture, par rapport à ses voisins non encore programmés.
Mais ce n’est pas tout : avant d’inventer ces technologies, les pionniers du semi-conducteur ont simplement dessiné le contenu de la mémoire : il suffit de choisir de connecter à la masse ou au 5 Volt chaque adresse décodée ! Il suffisait donc de dessiner les bons masques lors de la fabrication de puces ! Parce que ça devait être avant la prise de pouvoir par les marketeux, on appelait ça une Mask ROM
, et c’est largement tombé en désuétude sauf pour les marchés à très gros volumes. Et encore ! À condition qu’il soit réaliste de créer le contenu une fois pour toute, sans bug et sans évolution. Le prix est alors imbattable. D’ailleurs ces puces sont généralement construites en deux temps : un wafer de silicium où est gravé la logique de décodage et d’adressage, qui n’a plus qu’à recevoir une ultime couche de métallisation décidant quelle cellule lit un 0 ou un 1.
Et bien, il s’avère qu’il y a un marché pour chacune de ces technologies appliquée aux FPGA ! D’ailleurs j’ai menti par omission… le premier FPGA, le Xilinx XC2064, était incapable de mémoriser sa programmation : ses LUT étaient de la RAM statique, qu’il fallait charger à chaque mise sous tension depuis une mémoire externe. Le plus souvent le concepteur utilisait celle qui lui convenait des technologies de ROM ci-dessus, mais d’ailleurs rien n’empêchait qu’un FPGA soit initialisé par un processeur lisant une disquette…
[Da Scritch, au loin, pendant qu'un Amiga lit laborieusement son DFO:] — Et alors, le temps de démarrage, tu as vraiment le temps de te faire un café !
[Benoît au loin, sarcastique] — Pourvu que ce FPGA ne soit pas lui-même nécessaire au fonctionnement du processeur… [[de près]] la poule et l’œuf…
Expliquons rapidement la RAM statique, il existe principalement deux agencements de mémoire volatile, à accès direct, sur semi-conducteur :
- La RAM dynamique, qui, n’utilisant qu’un seul transistor par bit, est plus dense et donc moins coûteuse, mais plus lente et plus compliquée à utiliser,
- et la RAM statique qui est essentiellement l’opposé : plus simple mais moins dense donc plus chère, et accessoirement plus gourmande en énergie.
Random Access Memory, ce qui traduit bien l’accès direct, mais pas spécialement l’aspect volatile… cherchez pas, c’est juste que ROMet
RAM, ça sonnait bien. Vous voulez savoir comment on dit en Français ?
MEMet
MEV, pour
Mémoire Morteet
Mémoire Vive. Non, ça n’a aucun sens, mais ça claque !
Les FPGA RAM sont toujours d’actualité. Ce sont même les plus haut-de-gamme car en matière de temps d’accès, on n’a pas fait mieux qu’un bit de RAM statique, et ce sont aussi les FPGA les plus grands et les plus chers. Mais ça n’est pas sans inconvénient. Le talent de l’ingénieur, c’est de choisir le meilleur compromis selon l’application. Ces FPGA sont gourmands en énergie comme toute SRAM, longs à démarrer car il faut justement charger leur SRAM interne, souvent par un bus série économique en pinouilles mais peu rapide, ce qui peut prendre plus d’une seconde pour les plus grandes puces, et le tout pour un résultat même pas résistant aux rayons cosmiques ! Oubliez le spatial, même dans un avion à 30000 pieds ce n’est pas fiable.
D’ailleurs, si on attend assez longtemps, même sur le plancher des vaches cela cause des corruptions : c’est pour ça que dans les data-centers où les machines rebootent moins d’une fois par an, on met de la RAM avec code correcteur d’erreur, alors qu’on en fait l’économie dans nos i-bidules.
Alors comment fait-on quand on a besoin de démarrage instantané au fond de l’espace pour pas cher ? On fait un FPGA dont les LUT sont non-volatiles. Ça existe ! Les FPGA antifuse d’Actel sont très populaires dans le spatial et l’aviation. Oui, mais un antifuse, c’est à usage unique. C’est le prix à payer : si vous voulez mettre à jour votre Actel ProASIC3, il faut en souder un neuf. Certes, vous pourriez le monter sur support. Mais dans le spatial, ce n’est pas assez fiable, donc il ne faut pas se rater sur le VHDL, sinon on est bon pour changer la carte entière. C’est pour ce genre de raison que le spatial est légèrement coûteux [Buzz l'Éclair s'exclame Vers l'Infini et au-delà !
].
Moins cher et plus flexible alors ? Ca existe aussi, ce sont les FPGA EEPROM, généralement de petite taille et vitesse plus faible que les FPGA RAM, ils ont largement détrôné les CPLD de grand-papa parce qu’ils démarrent instantanément et ne nécessitent pas grande circuiterie externe, tout en gardant l’avantage de la reprogrammabilité in-situ par exemple par JTAG, même si le nombre de cycles de reprogrammation n’est pas infini, car appliquer un voltage élevé, ça use physiquement la grille du transistor.
[Da Scritch] — Ha ha ! tu nous as parlé de Mask ROM, mais il n’y a sûrement pas de Mask FPGA !
[Benoît] — Figure-toi que si ! Il existait par exemple le procédé Hardcopy d’Altera (maintenant Intel) consistant en la fabrication d’une matrice FPGA dont les LUT sont configurées par une ultime couche de métallisation.
[Da Scritch] — configuré… là c’est gravé dans le marbre, c’est vraiment ultime de chez figé : jamais t’ira décaper ça pour reprogrammer !
[Benoît] — exactement, c’est à la fois la force et la faiblesse de cette solution : elle nécessite un ticket d’entrée conséquent puisqu’il faut finaliser chaque wafer de silicium dans la même usine qui les a fabriqués, avant de les tronçonner en puces individuelles à souder sur un circuit imprimé. L’atout de ces puces, c’est qu’elles sont électriquement quasiment identiques aux FPGA Stratix du même constructeur, qui servent donc au prototypage avec toute la flexibilité d’un FPGA reprogrammable, mais ont ensuite quasiment tous les avantages d’un véritable ASIC : elles démarrent sans temps de chargement, sont bien moins chères, et leur programmation étant littéralement du fil de métal, elles sont immunes aux radiations et au vieillissement, ce qui n’est pas totalement vrai du contenu électrostatique d’une EEPROM.
… Au fait mon p’tit Da Scritch, savais-tu que, sans aller jusqu’à décaper un boîtier plastique, on peut modifier une puce de silicium avant empaquetage mais après fabrication, en coupant des fils au laser ? C’est vraiment utilisé chez Intel pour corriger des bugs.
[Da Scritch] — y m’énerve… t’en as d’autres ?
[Benoît] — Curieusement, alors que le stockage d’information sous forme électrique est bien postérieur au stockage magnétique, ce n’est que depuis les années 2000s qu’on a trouvé comment stocker de l’information magnétiquement directement dans un semi-conducteur, sans bande ni disque ni tores, mais en intégrant les régions magnétisées directement dans un wafer de silicium, et je ne te parle pas des bulles magnétiques, qui n’étaient guère miniaturisées. Il s’agit d’une technologie combinant les avantages d’une mémoire non volatile et d’une mémoire à accès direct, si bien que les puces sont nommées MRAM pour Magnetic Random-Access Memory
. Toutefois les domaines magnétiques n’étant pas aussi miniaturisables que les transistors stockant les charges électriques d’une EEPROM, les MRAM ne sont pas très denses et donc économiquement limitées à des applications de niche, par exemple pour leur excellente immunité aux radiations. Il n’existe donc pas de FPGA MRAM sur le marché, mais l’idée a bien été proposée depuis les années 2010 et le principal fabricant de MRAM, EverSpin, tente de pousser le concept d’un FPGA MRAM pour le marché spatial.
[Da Scritch] — Donc un FPGA, ça peut se reprogrammer zéro fois, une fois, plusieurs fois mais pas trop, ou indéfiniment ?
[Benoît] — Vu que t’as tout compris, c’est qu’on a dû bien expliquer.
Textes : Benoit
Voix complémentaire : Da Scritch
Illustration sonore : Extrait du film « Toy Story » © Pixar/Disney D.R.
Photo : Vue de la fenêtre d'effacement par UV d'une EPROM Texas Instruments 27040 (1990, 4 Mbit, gravure dans les 500 nm), CC-By-SA Benoît pour CPU, Radio <FMR>