Enfin tout dépend de ce que tu veux veux faire, et j'ai l'impression que tu n'as pas forcément les idées super claires. Ce n'est pas un mal, c'est en exposant ces idées et en débattant qu'on apprend.
On ne "programme" pas vraiment un FPGA. Un FPGA c'est (en approximation à 10000 mètres d'altitude), un circuit électronique configurable. Tu peux voir ça comme un ensemble de portes logiques (des AND, des OR, des horloges, de la mémoire), dont tu peux changer le "cablage". Un sacré ensemble de portes logiques, les FPGA moyenne gamme ayant des centaines de milliers à des millions de portes. Mieux encore, tu n'as pas besoin de décrire le cablage des portes logiques fil par fil, mais tu peux faire une description plus haut niveau en VHDL ou en Verilog. On utilise ensuite un espèce de compilateur (ou synthériseur) qui tansforme le VHDL en description de cablage. Le FPGA est capable de changer de cablage tout seul. Programmer un FPGA, c'est changer son cablage interne.
Voila pour la description "physique" d'un FPGA. Alors qu'est-ce qu'on peut faire avec ce genre de bestiau ? Hé bien on peut décrire n'importe quel circuit électronique ! Une simple porte AND, par exemple. Plus complexe, on peut décrire le circuit électronique d'un radio-réveil. Ou un filtre passe-bas. Beaucoup plus complexe, on peut décrire un circuit électronique qui fait de l'encodage MPEG4.
Tu seras peut-être alors tenté de comparer un FPGA à microcontroleur (comme un Atmega, Arduino) ou a un SoC (comme le Rapsberry Pi). Après tout, je peux faire un radio-réveil, un filtre passe bas, ou encodeur MPEG4 avec un Rapsberry Pi (ou un Arduino). La différence est que dans le Rapsberry Pi ou l'Arduino, tu charges un programme qui executé. Tu ne modifies par le cablage interne (= les liens entre les portes logiques) du Rapsberry Pi.
Pour revenir un peu vers ton idée, tu voudrais faire un FPGA qui peut "exécuter" 40 instances de gcc en parallèle. gcc est un programme en C, que tu voudrais "compiler" pour le mettre dans le FPGA (en 40 exemplaires j'imagine). Or pour l'instant on ne sait pas transformer un programme C en cablage de FPGA (je suis même pas certain que ce soit théoriquement faisable). D'ailleurs si tu commences à comprendre ce qu'est un FPGA, tu dois commencer à te rendre compte de ce que ça représente, transformer un logiciel en C en une série d'instructions de cablage.
Ce qu'on commence à faire au niveau de la recherche académique (à vérifier, je suis pas vraiment au courant des dernière avancées), c'est transformer des kernels OpenCL en cablage de FPGA. Mais pour l'instant implémenter gcc dans un FPGA ça semble pas faisable.
# Probablement une mauvaise idée...
Posté par X345 . En réponse au message Utiliser un FPGA pour accélérer les compilations ?. Évalué à 5.
Enfin tout dépend de ce que tu veux veux faire, et j'ai l'impression que tu n'as pas forcément les idées super claires. Ce n'est pas un mal, c'est en exposant ces idées et en débattant qu'on apprend.
On ne "programme" pas vraiment un FPGA. Un FPGA c'est (en approximation à 10000 mètres d'altitude), un circuit électronique configurable. Tu peux voir ça comme un ensemble de portes logiques (des AND, des OR, des horloges, de la mémoire), dont tu peux changer le "cablage". Un sacré ensemble de portes logiques, les FPGA moyenne gamme ayant des centaines de milliers à des millions de portes. Mieux encore, tu n'as pas besoin de décrire le cablage des portes logiques fil par fil, mais tu peux faire une description plus haut niveau en VHDL ou en Verilog. On utilise ensuite un espèce de compilateur (ou synthériseur) qui tansforme le VHDL en description de cablage. Le FPGA est capable de changer de cablage tout seul. Programmer un FPGA, c'est changer son cablage interne.
Voila pour la description "physique" d'un FPGA. Alors qu'est-ce qu'on peut faire avec ce genre de bestiau ? Hé bien on peut décrire n'importe quel circuit électronique ! Une simple porte AND, par exemple. Plus complexe, on peut décrire le circuit électronique d'un radio-réveil. Ou un filtre passe-bas. Beaucoup plus complexe, on peut décrire un circuit électronique qui fait de l'encodage MPEG4.
Tu seras peut-être alors tenté de comparer un FPGA à microcontroleur (comme un Atmega, Arduino) ou a un SoC (comme le Rapsberry Pi). Après tout, je peux faire un radio-réveil, un filtre passe bas, ou encodeur MPEG4 avec un Rapsberry Pi (ou un Arduino). La différence est que dans le Rapsberry Pi ou l'Arduino, tu charges un programme qui executé. Tu ne modifies par le cablage interne (= les liens entre les portes logiques) du Rapsberry Pi.
Pour revenir un peu vers ton idée, tu voudrais faire un FPGA qui peut "exécuter" 40 instances de gcc en parallèle. gcc est un programme en C, que tu voudrais "compiler" pour le mettre dans le FPGA (en 40 exemplaires j'imagine). Or pour l'instant on ne sait pas transformer un programme C en cablage de FPGA (je suis même pas certain que ce soit théoriquement faisable). D'ailleurs si tu commences à comprendre ce qu'est un FPGA, tu dois commencer à te rendre compte de ce que ça représente, transformer un logiciel en C en une série d'instructions de cablage.
Ce qu'on commence à faire au niveau de la recherche académique (à vérifier, je suis pas vraiment au courant des dernière avancées), c'est transformer des kernels OpenCL en cablage de FPGA. Mais pour l'instant implémenter gcc dans un FPGA ça semble pas faisable.