Written by Guillermo Acevedo
 
Diapositivas:
 Procedimiento en base a la practica de ece31289upb2015:
 
 

Pipeline - DE0-NANO-SOC

  • Suponga lo siguiente: su maquina de estados recibe un dato(in) cada start y realiza la siguiente operación matemática a=in*3 y luego a=a+3, para realizar esta operación suponga que su FSM utilizo 4 estados, IDLE, MULT, SUM y READY, ahora suponga que su FSM trabaja a 50MHz y que el start esta en 1'b1 y responda:
    • ¿Cuantas ciclos de reloj necesito para realizar la operación?
      • Se necesitan 4 ciclos de reloj
    • Cuanto tiempo requiere para dar un resultado.
      • Se requieren 80ns
    • ¿Que tendría que hacer para se genere una respuesta cada 20ns?
      • Aumentar la frecuencia de trabajo
  • Entendido el anterior concepto podemos empezar con el concepto de pipeline, para esto comparemos una FSM con un diseño pipeline.
    • Compare la FSM del anterior punto con lo siguiente:
      • Imagine una fabrica que fabrica dulces y tiene solo un trabajador que se llama wilmer el cual se encarga de toda la cadena de producción, y esta cadena de producción tiene 4 etapas.
        • 1 etapa: Recibe el dulce.
        • 2 etapa: le da forma al dulce.
        • 3 etapa: sella el dulce.
        • 4 etapa pone el dulce en una caja listo para la venta.
      • Como en la FSM se requirieron 4 etapas para llevar un dulce de una etapa inicial a una etapa final, hágase la misma pregunta de el primer punto.
      • ¿como aumentaría el numero de dulces por minuto que genera la fabrica?
        • Si usted lo pensó bien, contrataría a 3 personas mas, teniendo así 4 personas en producción.
        • veamos ahora el ciclo
          • La primera persona recibe el dulce, mientras que las otras 3 no hacen nada.
          • La segunda persona le da forma dulce mientras que la primera recibe otro dulce, y las otras 2 no hacen nada.
          • La tercera persona sella el dulce mientras que la segunda le da forma al dulce y la ultima no hace nada.
          • la cuarta persona pone el dulce en la caja listo para la venta, mientras que la tercera sella otro dulce, la segunda le da forma a otro dulce y la primera recibe otro dulce.
          • ahora todas las personas están haciendo algo y cada vez que la primera persona recibe un dulce, sale un dulce listo en una caja.
        • ¿Que diferencia tiene esto con tener una persona(FSM) y tener 4 personas(Pipeline)?
          • Con 4 personas se tendrían mas dulces en un menor tiempo que si tuviéramos una sola persona trabajando
        • ¿Que beneficios trae con respecto a la cantidad de dulces que puede hacer por minuto?
          • Cada dulce que se hace en un dulce una sola persona, se crean 4 con 4 personas, es decir, si en un minuto una persona hace un dulce, 4 personas harían 4 dulces
    • Ahora pensemos en hardware y no en personas, la misma FSM del punto 1...si lo noto bien y para aumentar la cantidad de operaciones se debe aumentar la frecuencia de reloj, lo que traer como consecuencia el aumento de potencia que consume un dispositivo electrónico, ¿no es asi?, osea que si yo necesito que mi FSM genere datos a alta velocidad necesitare aumentar frecuencia y por lo tanto la potencia que disipara la FPGA sera mayor...
    • Ahora imagine utilizar en vez de 4 estados, 4 stage (como las personas) y que cada stage es un registro que almacena lo que viene del anterior(persona) en la cadena de producción.
      • ¿Que beneficios trae esto en cuanto al consumo de potencia y la frecuencia necesaria?
        • Se utilizaría menor potencia ya que la frecuencia de reloj es menor, se necesita menor frecuencia para tener un mismo resultado que con una FSM normal
      • ¿Alguna desventaja?.
        • Se utilizan mas recursos de la FPGA en paralelo
  • Habiendo leído lo anterior usted ya tiene el concepto de pipeline y ahora necesita aplicarlo, para esto va hacer lo siguiente.
    • Diseñe una FSM como la del punto 1.
      • en la siguiente imagen podemos ver la simulación de la FSM del primer punto, el codigo esta puesto en el archivo multi.v, podemos ver que en la primera linea, en el cuadro celeste, se encuentra la entrada, la segunda linea, en el cuadro gris, es la señal de start que siempre esta activado, la tercera linea, en el cuadro rosado, son los pulsos de reloj, la cuarta, en el cuadro rojo, es la salida del idle, la cual indica cuando se encuentra en en el primer estado, la quinta señal, en el cuadro naranja, es el finish, la cual indica cuando se encuentra en el ultimo estado. por ultimo tenemos la señal de salida, en el cuadro verde, la cual da una salida cada 4 pulsos de reloj, cada vez que se activa finish da la salida correspondiente.
    • Lea la documentación siguiente desde la diapositiva #9 a la #15 y desarrolle cada circuito y problema que proponen en el.
  • en la siguiente imagen se puede observar la simulación con Pipeline del ejercicio anterior y podemos ver el archivo en los anexos como pipeline.v
    • en la imagen observamos el reloj en verde,dentro del cuadro rosado, cada flanco de subida es un pulso, en la primera linea, encerrada en el cuadro morado, vemos la entrada del sistema, 3, 5, 7, 9, etc, la linea roja después de estos números es una x de indefinido, la segunda linea son los pulsos de reloj, la tercera linea es la salida del sistema, encerrada en amarillo, podemos observar que a partir del cuarto pulso obtenemos salida en el sistema, antes de este pulso, la salida es indefinida, luego da una salida diferente cada pulso de reloj
    • encerrado con marron estan los diferentes registros de cada estado.
    • la cuarta linea tenemos el valor de la entrada guardado como memoria, llamado idle, después del ultimo dato ingresado en la entrada también es el ultimo dato en idle, luego también su valor es indefinido
    • la quinta linea tenemos el valor guardado de la multiplicación por 3 de cada numero, en el segundo pulso tenemos la primera salida en multi, en la sexta linea tenemos el valor de la suma, el valor de la multiplicación anterior mas 3, su primer valor esta en el tercer pulso de reloj, en la séptima linea tenemos la salida del sistema, este se conecta por medio de un cable a la salida y tienen el mismo valor, su primer valor esta en el cuarto pulso
  • el codigo para pipeline es el siguiente:
    •  
  • se debe crear un flip flop para cada estado, es decir, cada estado ademas es un registro y se deben conectar por medio de cables, estos registros guardan el dato y lo utilizan en el siguiente pulso de reloj para pasar el dato, es como tener registros en serie y al final se obtiene la salida de las operaciones cada flanco de reloj, esto lo podemos ver con mas detalle en la siguiente grafica
  •  
  • la primera salida en ambos se crea en el cuarto pulso, la diferencia es que con la maquina de estados finitos se tiene una salida cada 4 pulsos de reloj, en cambio con pipeline despues de tener la primera salida, se tienen salidas constantemente.
  • en 500MHz el periodo del reloj es de 2ns, es decir, con una FSM da un resultado cada 8ns, sabiendo esto, en un segundo tenemos 125 millones de resultados, con pipeline tenemos un resultado cada flanco de reloj, es decir, podemos tener un reloj de 8ns para obtener el mismo numero de resultados, es decir, un reloj de 125MHz obtendría los mismos resultados que con la FSM.
  • – Pipelines gráficos  se encuentran en la mayoría de las tarjetas graficadoras y consiste en múltiples unidades aritméticas o CPUs completas  que implementan variados escenarios de operaciones típicas, por ejemplo calculos de luz y colores  renderizado proyección de perspectiva entre otros.

  •  En software  consiste en varios  procesos ordenados de tal forma que el flujo de salida de un proceso alimenta la entrada del siguiente proceso. Como por ejemplo, los pipelines de Unix.

  • Lea los siguientes artículos y analice para ver el campo de aplicación:

Pipeline practice ece31289upb 2015

Written by: Holguer A. Becerra
  • Suponga lo siguiente: su maquina de estados recibe un dato(in) cada start y realiza la siguiente operación matemática a=in*3 y luego a=a+3, para realizar esta operación suponga que su FSM utilizo 4 estados, IDLE, MULT, SUM y READY, ahora suponga que su FSM trabaja a 50MHz y que el start esta en 1'b1 y responda:
    • ¿Cuantas ciclos de reloj necesito para realizar la operación?
    • Cuanto tiempo requiere para dar un resultado.
    • ¿Que tendría que hacer para se genere una respuesta cada 20ns?
  • Entendido el anterior concepto podemos empezar con el concepto de pipeline, para esto comparemos una FSM con un diseño pipeline.
    • Compare la FSM del anterior punto con lo siguiente:
      • Imagine una fabrica que fabrica dulces y tiene solo un trabajador que se llama wilmer el cual se encarga de toda la cadena de producción, y esta cadena de producción tiene 4 etapas.
        • 1 etapa: Recibe el dulce.
        • 2 etapa: le da forma al dulce.
        • 3 etapa: sella el dulce.
        • 4 etapa pone el dulce en una caja listo para la venta.
      • Como en la FSM se requirieron 4 etapas para llevar un dulce de una etapa inicial a una etapa final, hágase la misma pregunta de el primer punto.
      • ¿como aumentaría el numero de dulces por minuto que genera la fabrica?
        • Si usted lo pensó bien, contrataría a 3 personas mas, teniendo así 4 personas en producción.
        • veamos ahora el ciclo
          • La primera persona recibe el dulce, mientras que las otras 3 no hacen nada.
          • La segunda persona le da forma dulce mientras que la primera recibe otro dulce, y las otras 2 no hacen nada.
          • La tercera persona sella el dulce mientras que la segunda le da forma al dulce y la ultima no hace nada.
          • la cuarta persona pone el dulce en la caja listo para la venta, mientras que la tercera sella otro dulce, la segunda le da forma a otro dulce y la primera recibe otro dulce.
          • ahora todas las personas están haciendo algo y cada vez que la primera persona recibe un dulce, sale un dulce listo en una caja.
        • ¿Que diferencia tiene esto con tener una persona(FSM) y tener 4 personas(Pipeline)?
        • ¿Que beneficios trae con respecto a la cantidad de dulces que puede hacer por minuto?
    • Ahora pensemos en hardware y no en personas, la misma FSM del punto 1...si lo noto bien y para aumentar la cantidad de operaciones se debe aumentar la frecuencia de reloj, lo que traer como consecuencia el aumento de potencia que consume un dispositivo electrónico, ¿no es asi?, osea que si yo necesito que mi FSM genere datos a alta velocidad necesitare aumentar frecuencia y por lo tanto la potencia que disipara la FPGA sera mayor...
    • Ahora imagine utilizar en vez de 4 estados, 4 stage (como las personas) y que cada stage es un registro que almacena lo que viene del anterior(persona) en la cadena de producción.
      • ¿Que beneficios trae esto en cuanto al consumo de potencia y la frecuencia necesaria?
      • ¿Alguna desventaja?.
  • Habiendo leído lo anterior usted ya tiene el concepto de pipeline y ahora necesita aplicarlo, para esto va hacer lo siguiente.
    • Diseñe una FSM como la del punto 1.
    • Lea la documentación siguiente desde la diapositiva #9 a la #15 y desarrolle cada circuito y problema que proponen en el.
    • Ahora en base a la documentación diseñe en configuración Pipeline un sistema que haga lo mismo que la FSM del primer punto.
    • Simule los dos circuitos el de FSM y Pipeline.
      • ¿Cuando se produce el primer resultado en la FSM?
      • ¿Cuando se produce el primer resultado en Pipeline?
      • Suponga una frecuencia de reloj de 500MHz para el sistema de FSM
        • ¿Cuantas operaciones es capaz de realizar por segundo?
      • Ahora compare con Pipeline.
        • ¿Que frecuencia de reloj necesitaría el circuito en Pipeline para producir la misma cantidad de operaciones?
  • Haga un cuadro comparativo entre FSM y Pipeline viendo ventajas y desventajas de cada configuración, llegue a sus propias conclusiones.
  • ¿Donde se aplica este concepto en la computación?