J'imagines que tu pars avec une solution simple genre gros FPGA relier à une grosse mémoire, dans un slot pci express.
Oui, enfin pas forcément dans un slot PCI-Express (mais peu importe)
seulement la machine d'état est encodé dans une mémoire sous forme d'assembleur.
Un programme informatique n'est pas forcément une machine d'état. C'est plutôt assimilable à une machine de Turing (qui permet de faire beaucoup plus de chose qu'une machine d'état). En particulier, GCC n'est pas exprimable sous forme d'une machine d'état puisqu'il sait parser autre chose que des languages réguliers (Chomsky Hierarchy).
Mais cela revient pourtant très exactement à la synthèse direct vers un bitstream.
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.
Tout dépend de ce qu'on appelle un CPU. Un "CPU optimisé à mort", ça devient plus un CPU ça devient un circuit dédié à une tache spécifique. Un GPU n'est pas un CPU. Un encodeur MPEG4 n'est pas un CPU non plus. Même si l'encodeur MPEG4, le CPU et le GPU partagent le fait qu'ils vont transiter entre différents états, qu'ils vont éventuellement exécuter des instructions, qu'ils vont tous probablement avoir une horloge etc. Un CPU c'est Turing complet, un circuit dédié pas forcément.
Ici on voudrait transformer GCC (le code source de GCC) en un circuit dédié à la compilation. On voit bien que (i) CPU + assembleur de GCC et (ii) circuit à une instruction qui fait de la compilation, ça forme les deux extrémités d'un continuum.
[^] # Re: Probablement une mauvaise idée...
Posté par X345 . En réponse au message Utiliser un FPGA pour accélérer les compilations ?. Évalué à 2.
Oui, enfin pas forcément dans un slot PCI-Express (mais peu importe)
Un programme informatique n'est pas forcément une machine d'état. C'est plutôt assimilable à une machine de Turing (qui permet de faire beaucoup plus de chose qu'une machine d'état). En particulier, GCC n'est pas exprimable sous forme d'une machine d'état puisqu'il sait parser autre chose que des languages réguliers (Chomsky Hierarchy).
Tout dépend de ce qu'on appelle un CPU. Un "CPU optimisé à mort", ça devient plus un CPU ça devient un circuit dédié à une tache spécifique. Un GPU n'est pas un CPU. Un encodeur MPEG4 n'est pas un CPU non plus. Même si l'encodeur MPEG4, le CPU et le GPU partagent le fait qu'ils vont transiter entre différents états, qu'ils vont éventuellement exécuter des instructions, qu'ils vont tous probablement avoir une horloge etc. Un CPU c'est Turing complet, un circuit dédié pas forcément.
Ici on voudrait transformer GCC (le code source de GCC) en un circuit dédié à la compilation. On voit bien que (i) CPU + assembleur de GCC et (ii) circuit à une instruction qui fait de la compilation, ça forme les deux extrémités d'un continuum.