Telechargé par melindaberbiche

fpga

publicité
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
Téléchargement
Study collections