¿Cómo puede un microcontrolador ser más eficiente que un FPGA?

5

Si no contamos el costo de ambos (MCU, FPGA), ¿existen aplicaciones donde un microcontrolador puede ser más eficiente que un FPGA? Es más fácil programar un microcontrolador que un FPGA (C vs VHDL incrustado, por ejemplo) pero si alguien dedica tiempo e implementa el diseño de MCU dentro de un FPGA, entonces el FPGA podría usarse para la misma aplicación que el MCU pero más eficiente porque podemos implementar más de un solo MCU en un FPGA.

Me preguntaba si la única aplicación que una MCU puede ser más eficiente que una FPGA es cuando conectamos un sensor analógico a la MCU (por ejemplo, una fuente analógica que cosecha entropía en caso de producir números aleatorios, etc.). ¿Es correcto o estoy totalmente equivocado?

editar (como sugirió Gbulmer): Mis criterios de eficiencia son la velocidad de ejecución y el rendimiento / vatio

    
pregunta user29966

2 respuestas

12

Consulte ¿Cuándo puede haber FPGA? utilizado y microcontroladores / DSPs no?

Los microprocesadores casi siempre ganarán en rendimiento / vatio. Para un rendimiento total, puede obtener resultados bastante buenos con chips DSP, microcontroladores más grandes o ARM con núcleos de gráficos integrados. Aunque puede ser difícil reutilizar los núcleos gráficos para otras aplicaciones si la plataforma no es compatible con CUDA o similar.

Los FPGA ganan en latencia , especialmente si desea garantizar una respuesta de baja latencia a muchas entradas. Solo puede tener una interrupción de prioridad más alta en un microcontrolador. Los FPGA también son buenos si quieres un proceso de función fija que no use mucha RAM, como un algoritmo de compresión de algún tipo de captura de señal.

    
respondido por el pjc50
8

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.

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas