Los FPGA en realidad no tienen "puertas" per se. Por lo general, tienen tablas de consulta (LUT). Las LUT generalmente se implementan utilizando SRAM. Por ejemplo, los FPGA Spartan 3 usan 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, por ejemplo, para 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 en realidad tienen muchas, muchas puertas adicionales e innecesarias para realizar la misma función lógica. Si necesita FPGA para la reprogramabilidad y la 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 se trasladan a un ASIC, que será más pequeño, más rápido y consumirá menos energía, todo mientras hace lo mismo que hace el FPGA.
Los microprocesadores modernos también están canalizados. Por ejemplo, en un programa simple de FPGA, un cálculo muy grande que involucra varias adiciones 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 a menudo se usa para lograr el cierre de temporización), el gran cálculo se divide en partes, y cada pieza se ejecuta en un ciclo de reloj mucho más corto. Todavía lleva aproximadamente la misma cantidad de tiempo hacer el cálculo, pero la ventaja es que después de que se calcula la primera pieza y el primer dato parcial se ha movido a la segunda pieza, la primera pieza puede comenzar inmediatamente a procesar el segundo dato. El primer cálculo aún tardará muchos ciclos en completarse,
En pocas palabras, los FPGA tienen una lógica genérica, mientras que la CPU tiene una lógica específica. FPGA tiene un enrutamiento genérico mientras que la CPU tiene un enrutamiento específico. FPGA puede estar canalizado, pero la CPU definitivamente está canalizada.