Los FPGAs en realidad no tienen "puertas" per se. Normalmente tienen tablas de consulta (LUT). Las LUT se implementan normalmente utilizando SRAM. Por ejemplo, los FPGA de Spartan 3 utilizan SRAM de 16 bits; es decir, cuatro entradas de dirección producen una señal de salida. La "programación" se realiza cargando la SRAM con un patrón de bits que representa la tabla de verdad, de manera que, por ejemplo, XOR de 2 entradas, tiene la dirección 00 = salida 0, dirección 01 = salida 1, dirección 10 = salida 1, dirección 11 = salida 0.
Todo esto significa que los FPGA realmente tienen muchas, muchas puertas adicionales e innecesarias para realizar la misma función lógica. Si necesita FPGA para reprogramación y creación rápida de prototipos, ¡esto es genial! De hecho, algunas personas implementan el diseño primero en el FPGA, lo depuran y luego pasan a un ASIC, que será más pequeño, más rápido y consumirá menos energía, al mismo tiempo que hace lo mismo que hace el FPGA.
Los microprocesadores modernos también están segmentados. Por ejemplo, en un programa FPGA simple, un cálculo muy grande que involucra varias sumas y quizás algunas multiplicaciones y una comparación puede llevarse a cabo en el mismo ciclo de reloj. Hacer todo este trabajo en un ciclo de reloj significa que el ciclo de reloj debe ser largo. En una implementación canalizada (que es posible implementar en FPGA y se usa a menudo para lograr el cierre de tiempo), el cálculo grande se divide en partes, y cada pieza se ejecuta en un ciclo de reloj mucho más corto. Todavía toma aproximadamente la misma cantidad de tiempo para hacer el cálculo, pero la ventaja es que después de que se calcula la primera parte y el primer dato parcial se ha movido a la segunda pieza, la primera parte puede comenzar inmediatamente a procesar el segundo dato. El primer cálculo todavía tardará muchos ciclos en completarse, pero una vez que se realiza, se completará un nuevo cálculo durante cada ciclo de reloj.
Entonces, en pocas palabras, los FPGA tienen una lógica genérica, mientras que la CPU tiene una lógica específica. FPGA tiene enrutamiento genérico, mientras que la CPU tiene enrutamiento específico. FPGA puede ser canalizado, pero la CPU definitivamente está canalizada.