Les FPGA n'ont pas réellement de "portes" en soi. Ils ont généralement des tables de consultation (LUT). Les LUT sont généralement implémentées à l'aide de SRAM. Par exemple, les FPGA Spartan 3 utilisent des SRAM 16 bits; c'est-à-dire que quatre entrées d'adresse produisent un signal de sortie. La "programmation" se fait en chargeant la SRAM avec un motif binaire représentant la table de vérité, de telle sorte que, par exemple pour XOR à 2 entrées, vous avez l'adresse 00 = sortie 0, l'adresse 01 = sortie 1, l'adresse 10 = sortie 1, l'adresse 11 = sortie 0.
Tout cela signifie que les FPGA ont en fait de nombreuses portes supplémentaires et inutiles pour effectuer la même fonction logique. Si vous avez besoin de FPGA pour la reprogrammabilité et le prototypage rapide, c'est parfait! En fait, certaines personnes implémentent d'abord la conception dans le FPGA, la déboguent, puis passent à un ASIC, qui sera plus petit, plus rapide et consommera moins d'énergie, tout en faisant la même chose que le FPGA.
Les microprocesseurs modernes sont également pipelinés. Par exemple, dans un programme FPGA simple, un très grand calcul impliquant plusieurs ajouts et peut-être quelques multiplications et une comparaison peut être effectuée dans le même cycle d'horloge. Faire tout ce travail en un seul cycle d'horloge signifie que le cycle d'horloge doit être long. Dans une implémentation en pipeline (qui est possible à implémenter dans les FPGA et est souvent utilisée pour réaliser la fermeture de synchronisation), le gros calcul est décomposé en morceaux, et chaque morceau est exécuté en un cycle d'horloge beaucoup plus court. Il faut toujours environ le même temps pour effectuer le calcul, mais l'avantage est qu'après le calcul de la première pièce et le déplacement de la première donnée partielle vers la deuxième pièce, la première pièce peut immédiatement commencer à traiter la deuxième donnée. Le premier calcul prendra encore plusieurs cycles,
Donc, en résumé, les FPGA ont une logique générique tandis que le CPU a une logique spécifique. FPGA a un routage générique tandis que le CPU a un routage spécifique. Le FPGA peut être pipeliné, mais le CPU est définitivement pipeliné.