Ventajas y desventajas de los bucles en el desarrollo de VHDL

3

La pregunta es la siguiente:

  

Identifique y explique dos ventajas y desventajas potenciales del "desenrollado" del bucle

Mientras buscaba en Internet encontré estos dos recursos:

  1. Resource One
  2. Recurso Dos

Pero todo lo que realmente pude discernir de ellos es que el desenrollamiento del bucle permite que ocurra un paralelismo en el sistema y no realmente por qué esto es algo bueno o malo. Aunque sé que el objetivo principal de un FPGA es permitir que las cosas se ejecuten en paralelo, una característica (desenrollado de bucle) que hace esto posible no parece ser una ventaja.

PS: No sabía si publicar esto en el intercambio de pila eléctrica o el desbordamiento de pila. ¿Son las preguntas VHDL apropiadas aquí?

    
pregunta S.Ramjit

3 respuestas

5

Del resumen de su segundo enlace:

  

El desenrollamiento de bucles es la técnica principal del compilador que permite arquitecturas reconfigurables [para] lograr grandes grados de paralelismo. Sin embargo, el desenrollamiento del bucle aumenta el área y puede tener un impacto negativo en el tiempo del ciclo del reloj. En la mayoría de las aplicaciones integradas, el parámetro crítico es el rendimiento. El desenrollado de bucle puede tener efectos contradictorios en el rendimiento. Como consecuencia, existe, en general, un grado de desenrollamiento que maximiza el rendimiento por unidad de área.

Para mí, esto responde directamente a tu pregunta. La idea es básicamente la siguiente: si tiene un proceso que debe repetirse durante muchos ciclos, puede emplear el desenrollado de bucle para paralelizar el algoritmo para reducir el número de ciclos de reloj requeridos.

Pero esto conlleva el costo de una huella de tejido más grande (más área de FPGA), lo que a su vez complica el enrutamiento del reloj, lo que lleva a un cierre de tiempo más difícil.

Si no se puede obtener el cierre de tiempo, el sistema se ve obligado a utilizar una frecuencia de reloj más lenta, lo que entra en conflicto con el objetivo de desenrollarse.

Por lo tanto, debe encontrar un equilibrio entre los dos para maximizar la ganancia de rendimiento.

    
respondido por el Blair Fonville
3

Es la única forma en que una herramienta de síntesis puede implementar un bucle completo, ya sea en un solo ciclo de reloj (en un proceso cronometrado) o en combinación.

Por lo tanto, las ventajas y desventajas sobre otros métodos (inexistentes) de traducir un bucle son un punto discutible.

Puede, como ya se ha dicho, generar hardware bastante grande. Si ese es un problema, necesita encontrar otro enfoque de codificación, por ejemplo, repostar el ciclo con una máquina de estados para ejecutar una iteración por ciclo de reloj, para hardware más pequeño (pero más lento).

    
respondido por el Brian Drummond
2

'Desenrollamiento de bucle' es un método sistemático para lograr el paralelismo que se puede automatizar.

En los viejos tiempos, escribimos código de máquina, luego ensamblador, luego lenguajes compilados simples, luego lenguajes ricos con bibliotecas útiles. Esto nos permitió escribir en un nivel superior progresivamente, y permitir que un proceso automático se encargue de la traducción a un nivel bajo.

En los viejos tiempos, escribíamos VHDL y luego poníamos manualmente varios bloques en paralelo para obtener el rendimiento y programábamos manualmente su operación, datos de tuberías, para que funcionaran. Expresar nuestra intención como un bucle de alto nivel y luego permitir que un proceso automático genere la sincronización de bajo nivel y el orden de dependencia es simplemente aplicar el mismo principio de automatización al diseño de hardware.

Ventajas: velocidad, precisión, a los humanos les gusta pensar en un nivel alto.

Desventajas: los humanos tienen esta sensación molesta de que porque 'este bit aquí' parece ineficiente, podrían hacerlo mejor. Eso es a menudo correcto, con herramientas de generación temprana. Se necesita tiempo para que la interfaz con las herramientas sea fácil de usar, para que las herramientas sean confiables y para que su rendimiento mejore hasta el punto de que no haya rincones donde aún se puedan justificar ajustes humanos.

    
respondido por el Neil_UK

Lea otras preguntas en las etiquetas