• [^] # Re: Qu'est-ce qu'un FPGA ?

    Posté par . En réponse au journal 2019, l’année de la libération des FPGA ?. Évalué à 9. Dernière modification le 16 janvier 2019 à 19:24.

    ce n’est pas gravé dans le marbre et que tu peux regraver les portes logiques

    Techniquement, la configuration des portes logiques et de leurs interconnexions se fait en chargeant un fichier dans une zone mémoire du FPGA (SRAM le plus souvent). Ce fichier est le bitstream évoqué dans l'article.

    Les FPGA ont beaucoup évolué depuis une quinzaine d'années.
    Initialement, il n'y avait que des portes logiques (réunies sous la forme de logic cells avec une LUT et un registre), plein de fils pour les interconnecter, et plein de pattes d'entrées/sorties logiques. De plus en plus.

    Ensuite, on a rajouté des blocs mémoire (de quelques kilo-octets) et des multiplieurs. Et augmenté le nombre de portes.
    À ce moment-là (début des années 2000) on a commencé à pouvoir intégrer des composants logiques aussi complexes qu'un petit microprocesseur dans une matrice FPGA.

    Ensuite, on a complexifié les multiplieurs, qui deviennent de vrais DSP configurables et chaînables (addition-multiplication-accumulation) de manière à câbler par exemples des filtres numériques. Et augmenté la taille des mémoires.

    Ensuite, on a rajouté des périphériques "en dur" : gestion d'horloge (avec des bouts analogiques), contrôleur mémoire DDR, interfaces série hyper-rapides (pour faire par exemple du PCIe ou du SATA ou du SerialRapidIO). Et encore plus de portes logiques.

    Ensuite on a rajouté des processeurs "en dur", un peu de PowerPC mais surtout ARM, avec leur cohorte de périphériques voire GPU. Et la capacité de les coupler finement avec la logique configurable, pour faire des coprocesseurs spécialisés.

    Et maintenant, on voit apparaître des co-processeurs massivement parallèles, fortement connectés, pour des applications d'apprentissage ou d'IA de manière générale.

    Du coup, il n'y a pas que du FPGA dans les FPGA modernes, ce sont des plate-formes de plus en plus hétérogènes, adaptables à plein de besoins.

    On peut faire la même chose qu'avec un microcontrôleur mais beaucoup plus rapidement (signal à 200Mhz et plus).

    On n'est vraiment pas dans la même classe de machine. D'ailleurs, la fréquence d'horloge n'est pas le principal facteur : c'est le parallélisme massif du matériel qui donne la puissance de calcul à un FPGA.

    Par exemple, tu peux faire travailler un pipeline vidéo à la fréquence pixel (quelques dizaines de MHz en SD, quelques centaines en HD) et faire bien plus de calculs qu'un DSP qui tournerait à plusieurs GHz : les calculs sont étalés physiquement dans la matrice, un peu comme la chaîne d'assemblage d'une usine.

    Un autre exemple, les entrées-sorties série très rapides (plusieurs dizaines de Gb/s maintenant) sont fortement dé-sérialisées pour rentrer dans la matrice logique, afin de baisser drastiquement la fréquence et profiter du parallélisme.

    L'ordre de grandeur "marketing" des performances maximales des toutes dernières matrices annoncées est en TFLOPS (mille milliards d'opérations flottantes par seconde), centaine de TOPS (calculs entiers), Tb/s (IO et réseau interne).

    Un autre aspect intéressant, mais pas très développé, est la capacité à reconfigurer une partie du FPGA pendant qu'il fonctionne. On appelle ca la reconfiguration dynamique partielle, et ca permet par exemple d'adapter les traitements en fonction de l'environnement.