Understand the FPGA

Le FPGA, un terme qui revient de plus en plus souvent ces derniers temps, tout comme le VHDL ou les GpGPU.Sous des termes techniques a rallonge et des explications souvent elitistes reservés aux initiés, se cache en fait une technologie très simple a comprendre.

Un FPGA est tout d’abord un bout de silice comme n’importe quel composant.
Il n’a rien de magique ou de hors du commun. Quand on parle de FPGA on parle en fait de “field-programmable gate array”, ce qui en français donne
réseau de portes programmables in situ. La simple analyse du nom nous permettra de comprendre directement a 75% ce que fait et ce qu’est un FPGA.
Tout d’abord, des portes programmables. Petit récapitulatif d’architecture, une porte programme est un composant qui permet d’appliquer des
fonctions logiques séquentielles (une seul entré) ou combinatoire (résultat de plusieurs portes logiques séquentielles). Pour faire l’analogie avec la programmation, la porte logique est une sorte de If(). Il y a donc des ET, OU, NON (pour les fonctions séquencielles) et des NAND, NOR, XOR et XNOR, combinations de plusieurs fonctions séquentielles,
des fonctions combinatoires. La on a défini les portes logiques, mais pas les portes programmables. En faite, une porte programmable peut être vue de manière schématique en une sorte de porte logique polymorphe qui sera tel ou tel porte logique selon la manière dont un la programme. Au final, on se retrouve avec plusieurs puces, contenant chacune des milliers et des milliers de portes logiques. Par exemple, il n’est pas rare de trouver des FPGA avec une 20éne de puces de 400 000 portes chacune (je vous laisse calculer) Passons a la suite, maintenant que l’on sait ce qu’est une porte logique/programmable, pourquoi un réseau ? Et bien c’est la que le FPGA se différencie du CPU. Dans un FPGA, on a toutes ces portes logiques, mais on peux les assembler comme on le désire. Ainsi on attribue tel nombre de portes pour la tâche X, un autre nombre pour la tache Y et pour chaque tâche on relie ces portes entre elles comme on le désire. Ainsi, on obtient un système optimisé pour la tache a effectué et parallèle ! On peux définir sur un FPGA plusieurs 10éne de taches en parallèles et ce dernier ne mouftera pas. Exécutez 400 thread sur un processeur Quad core, que ce passera-t-il au final sur le processeur ?
Ceci :
CORE-A        CORE-B        CORE-C        CORE-D
Executed       Task1           Task2          Task3           Task4
Task5           Task6           Task7          Task8
Task 11        T ask12        Task13         Task14

Donc au final, on n’a que 4 taches exécutées réellement en parallèles, les autres sont mise en queue. Sur un FPGA, aucune queue ne serait présente, on aurait un ensemble de portes/taches.
Je suis sure que maintenant les FPGA on l’air moins mystérieux. Malheureusement, les explications sur le net sont souvent élitistes avec un vocabulaire techniques très pointu pour au final quelque chose d’assez simple.
Donc pour résumé un FPGA est un ensemble de portes logiques dont on peux programmes les inter-connections et segmentable afin de proposer une exécution parralèles des tâches.

One thought on “Understand the FPGA

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s