Saltar al contenido

Ventajas y desventajas de los bucles en el desenrollado de VHDL

Buscamos por el mundo on line para así regalarte la respuesta a tu dilema, si tienes alguna inquietud deja tu comentario y te contestaremos porque estamos para ayudarte.

Solución:

Del resumen de su segundo enlace:

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

Para mí, esto responde directamente a tu pregunta. La idea es básicamente esta: si tiene un proceso que debe iterar durante muchos ciclos, puede emplear el desenrollado de bucles para paralelizar el algoritmo y reducir la cantidad de ciclos de reloj requeridos.

Pero esto tiene el costo de una huella de estructura más grande (más área de FPGA), lo que a su vez complica el enrutamiento del reloj y conduce 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 desenrollar.

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

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.

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

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

‘Loop Unrolling’ 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 a un nivel progresivamente más alto y dejar que un proceso automático se encargara 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 programamos manualmente su operación, los datos de canalización, para que funcionen. Expresar nuestra intención como un bucle de alto nivel y luego dejar que un proceso automático genere el tiempo 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 a alto nivel.

Desventajas: los humanos tienen la molesta sensación de que debido a que ‘este bit aquí’ parece ineficiente, podrían hacerlo mejor. Eso suele ser correcto, con herramientas de primera generación. Se necesita tiempo para que la interfaz de las herramientas se vuelva fácil de usar, para que las herramientas se vuelvan confiables y para que su rendimiento mejore hasta el punto de que no queden rincones donde los ajustes humanos aún puedan justificarse.

Nos encantaría que puedieras recomendar este post si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *