La diferencia clave entre los FPGA y los microprocesadores / microcontroladores es que un µp es un circuito especializado, y un FPGA es un circuito general que puede configurarse en "tiempo de ejecución". En una comparación justa (el mismo tamaño de troquel y los parámetros de proceso) ganará un µp / µc para lo que está diseñado: ejecutar secuencias de instrucciones muy diferentes, con poca repetición y muchas decisiones y dependencias de datos. En el extremo, piense en ejecutar Linux o Windows, o un equivalente reducido para un µc más pequeño.
Un FPGA ganará cuando pueda usar su configurabilidad y paralelismo: en transformaciones simples y repetidas, que no se traducen de manera efectiva en instrucciones µc / µp.
Tomemos por ejemplo los cálculos de punto flotante de IEEE. Un µp / µc a menudo tendrá hardware dedicado para eso, que es más eficiente que un FPGA configurado para hacer lo mismo. Pero cambie algunos detalles triviales en la especificación IEEE, y el hardware µc / µp es inútil, pero el FPGA puede configurarse en consecuencia, y será tan eficiente como lo fue con las especificaciones originales.
Tenga en cuenta que un µc / µp puede intercambiar rendimiento por complejidad: si hace que la tarea sea más compleja, todavía puede hacerlo, pero tomará más tiempo. Un FPGA necesitará más bienes raíces de FPGA si el trabajo se vuelve más complejo. En otras palabras: en un FPGA, la funcionalidad se extiende (requiere más) el estado real de FPGA, en un µc / µp se extiende (requiere más) tiempo.
Resumen: un µc / µp será más eficiente para lo que está diseñado (lo que es un cómputo en serie general), un FPGA será más eficiente para una tarea "pequeña" en paralelo.