4 votos

Explicación del gráfico de rendimiento del diseño FPGA

Después de implementar una función matemática en un chip FPGA. El siguiente gráfico muestra, para ~40 entradas, la respuesta en el tiempo, es decir, cuánto tardó en calcularse la salida. Estos datos forman parte de los resultados de la simulación, que tomó cada entrada de \$0\$ a \$2^{32}-1\$ (la entrada y la salida son números enteros), así que para enfatizar la pregunta, sólo se puso una parte en la imagen.

enter image description here

El eje y son los tiempos de ejecución en ns, el eje x son los valores de entrada. Ahora bien, ¿alguien puede explicar los picos en el gráfico, es decir, la alternancia de subidas y bajadas? ¿Qué puede influir en ese comportamiento?

La función que implementa este chip es de la forma $$f(x) = \sum_{k=0}^x{\frac{g(k)}{h(k)}}$$ para la entrada x, donde tanto g(k) como h(k) son funciones polinómicas. La complejidad total de la operación es $$O(x \log x)$$

PD: La FPGA es Altera Cyclone II, por si influye en la respuesta.

1 votos

Tendrás que mirar los detalles de la implementación, pero en general la división tarda una cantidad variable de tiempo en completarse.

0 votos

Me han dicho lo mismo, también que la multiplicación es una operación de tiempo constante. Pero no he podido encontrar ningún artículo técnico/científico que desarrolle el asunto con cierto detalle, ¿por casualidad conoces alguno?

3 votos

¿Por qué tarda un tiempo variable en dividirse? Recuerda la división larga. Intenta dividir 1 entre 2 utilizando la técnica de la división larga. Convergerá a 0,5 después de una iteración (rápida). Ahora intenta dividir 1 entre 3 con el mismo método, suponiendo que puedes parar después de 20 dígitos. Te llevará mucho más tiempo, ¿verdad?

1voto

Janos Puntos 8

Al echar un vistazo a la Arquitectura del ciclón II descripción Creo que no hay divisor de hardware en la arquitectura. Esto significaría que la división se implementa de alguna manera en software, potencialmente en tiempo no constante; mientras que en hardware debería haber sido en tiempo constante.

He intentado averiguar cómo se implementa la división en las placas Altera pero no he podido. Esto puede depender de si megafunciones o si se trata de un bloque como estos .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X