Las diferencias intrínsecas entre las tareas H / W (ejecutables en FPGA) y las tareas S / W (ejecutables en la CPU)

1

En plataformas híbridas que contienen CPU y FPGA, hay algunos modelos para tareas. Por ejemplo, en un modelo de tarea, se considera que cada tarea se puede ejecutar en FPGA o CPU (es decir, hay dos versiones H / W y S / W para cualquier tarea). Sin embargo, en otro modelo de tarea, algunas tareas deben ejecutarse solo en FPGA (o CPU). Mi pregunta muy importante es: ¿qué diferencias hay entre las tareas que podemos ejecutar algunas de ellas en S / W o H / W o nos limitan a ejecutarlas solo en un elemento de procesamiento (solo en FPGA o CPU)? ¿Hay alguna aplicación real en nuestro mundo con estos modelos de tareas también? Gracias.

    
pregunta A.Gh

1 respuesta

2

Casi cualquier cálculo que pueda hacer en un FPGA en hardware que puede hacer en una CPU en software, es por supuesto que las herramientas de simulación pueden simular su diseño. De manera similar, cualquier cosa que pueda hacer en una CPU también puede hacer en un FPGA (incluso si eso es simplemente construyendo una CPU de software).

La única diferencia entre ellos es el tiempo y la eficiencia. Como ejemplo rápido, puede ejecutar un algoritmo CRC en una CPU, pero casi siempre es más rápido usar una implementación de hardware para realizar el cálculo, sin embargo, dependiendo del tamaño que utilice más potencia (podría usar menos) y espacio.

Sin embargo, no se puede decir lo mismo cuando se trata de interactuar con otro hardware. Cuando se trata de conectarse a dispositivos externos, como ADC / DAC de alta velocidad o PCIe, el FPGA es el rey. Con las interfaces en serie y paralelas de alta velocidad, es imposible interactuar directamente con una CPU, ya que simplemente es incapaz de golpear las interfaces a menos que se ejecute a una velocidad increíblemente alta. (Como parte, el hardware no dedicado incluye los PLL, pero para las CPU de baja velocidad puede eliminarlos mediante el gran impacto del software).

Hay otro caso cuando el FPGA es el rey y eso se reduce a eventos críticos muy importantes. Si su CPU principal está ocupada manejando cosas como una interfaz de usuario u otros bits de hardware, podría perder fácilmente un evento o no poder procesarlo en tiempo real. Esto incluso podría ser, por ejemplo, algún desencadenante crítico de tiempo para comenzar a grabar datos desde un ADC o enviar datos a un DAC. Para este tipo de casos, dedicar mucho tiempo a un FPGA esperando el evento y luego manejarlo de manera inmediata permitiría que las cosas sucedieran exactamente en el punto en el que deberían, incluso si la CPU está ocupada haciendo muchas otras cosas.

Así que realmente se trata de cronometrar crítico vs no. Si tiene una tarea que debe realizarse en un punto exacto en el tiempo, o una interfaz que tenga una velocidad mayor de la que la CPU puede manejar, o incluso un cálculo muy grande que consumiría demasiado tiempo de CPU, entonces hardware dedicado en un FPGA puede resolver eso.

    
respondido por el Tom Carpenter

Lea otras preguntas en las etiquetas