J'imagines que tu pars avec une solution simple genre gros FPGA relier à une grosse mémoire, dans un slot pci express.
Tu veux que cette carte accélère gcc, histoire de prendre un exemple précis. Tu dis que synthétiser un cpu dans un fpga n'est pas performant dans l'absolu. C'est une évidence. Mais cela revient pourtant très exactement à la synthèse direct vers un bitstream. Un core, c'est en général une grosse machine d'état avec quelques opérateur. Un cpu c'est exactement ça, seulement la machine d'état est encodé dans une mémoire sous forme d'assembleur.
Donc, tu as une dualité core/cpu. Compiler directement du C est complexe (certain le font déjà cf synfora pico c), le principal problème est la faible sémantique de la mémoire qui oblige à avoir une grosse mémoire adressable (type DRAM) ce qui ne rentre pas dans un FPGA seul.
Une fois que tu as un cpu, tu peux l'optimiser à mort comme tu le veux en fonction de la tâche à faire. C'est cette optimisation qui pourra te faire gagner du temps (VLIW, multicore,...) par rapport à l'execution sur x86.
L'optimiseur de cpu dispose du code C à compiler, il peut choisir les meilleurs options.
[^] # Re: Probablement une mauvaise idée...
Posté par Nicolas Boulay (site web personnel) . En réponse au message Utiliser un FPGA pour accélérer les compilations ?. Évalué à 3.
J'imagines que tu pars avec une solution simple genre gros FPGA relier à une grosse mémoire, dans un slot pci express.
Tu veux que cette carte accélère gcc, histoire de prendre un exemple précis. Tu dis que synthétiser un cpu dans un fpga n'est pas performant dans l'absolu. C'est une évidence. Mais cela revient pourtant très exactement à la synthèse direct vers un bitstream. Un core, c'est en général une grosse machine d'état avec quelques opérateur. Un cpu c'est exactement ça, seulement la machine d'état est encodé dans une mémoire sous forme d'assembleur.
Donc, tu as une dualité core/cpu. Compiler directement du C est complexe (certain le font déjà cf synfora pico c), le principal problème est la faible sémantique de la mémoire qui oblige à avoir une grosse mémoire adressable (type DRAM) ce qui ne rentre pas dans un FPGA seul.
Une fois que tu as un cpu, tu peux l'optimiser à mort comme tu le veux en fonction de la tâche à faire. C'est cette optimisation qui pourra te faire gagner du temps (VLIW, multicore,...) par rapport à l'execution sur x86.
L'optimiseur de cpu dispose du code C à compiler, il peut choisir les meilleurs options.
"La première sécurité est la liberté"