Je sais qu'un FPGA utilise des tables de consultation (LUT) pour synthétiser des portes logiques. Une LUT est un bloc de RAM qui est indexé par un certain nombre d'entrées. La sortie est la valeur stockée à cette adresse mémoire. La magie est que la LUT peut être programmée pour afficher tout ce que vous voulez pour une entrée particulière. Ainsi, une LUT peut être programmée avec la table de vérité de n'importe quelle porte logique afin de l'imiter! C'est ainsi qu'un FPGA synthétise les portes logiques que vous spécifiez dans votre code HDL.
Je pensais l'autre jour, comment un ordinateur normal imite-t-il les portes logiques? Pour autant que je sache (ce qui n'est pas loin), si j'écris un programme en C ++, il doit d'abord être compilé en code machine pour que le CPU puisse le lire. Ensuite, lorsque j'appuie sur "run", le code machine va en mémoire pour attendre le traitement par le CPU. Je ne suis pas très clair sur ce qui se passe ensuite, mais à un moment donné, le processeur doit avoir exécuté les opérations logiques que mon programme contient, non? Contrairement à un FGPA, le processeur ne peut pas simplement synthétiser les ressources dont il a besoin. Alors, comment exécute-t-il le programme?
Mes suppositions:
-
Le CPU a un certain nombre de portes logiques pré-construites. Lorsqu'il rencontre une instruction AND dans le code C ++ qu'il est en cours d'exécution, il utilise l'une de ses ANDgates. S'il voit une instruction OR, il utilise l'une de ses portes OR; s'il voit une instruction IF, il utilise l'une de ses portes IF; etc.
-
Ou, la logique est implémentée en mémoire d'une manière similaire à une LUT. Cela a plus de sens pour moi car cela ne repose pas sur un nombre limité de ressources de porte. Si mon programme nécessite des tonnes de logique OU par exemple, le processeur ne sera pas goulot d'étranglement par un manque de portes OU.
Alors, à quelle distance suis-je?
Edit: Merci pour les réponses à tous, j'ai beaucoup appris sur les processeurs et les ALU. En outre, la "porte IF" dans ma première hypothèse est une faute de frappe, qui devrait être "porte OU" (bien que ce ne soit qu'un exemple, n'importe quelle porte logique ferait l'affaire). Désolé pour cette confusion.