¿Por qué se requiere usar un registro en la salida de la etapa final de una tubería?

1

Sigo el curso MIT 6.004x, donde en la sección de tubería, se afirma que "nuestra convención de tubería requiere que cada etapa de tubería tenga un registro en su salida". Entiendo perfectamente la razón para agregar un registro en la etapa intermedia, pero por qué usarlo en el cable de salida final. Quiero decir, ¿no podemos simplemente canalizar la salida directamente, cuál es el propósito de agregar un registro para recordar el resultado de la salida?

Por ejemplo, tengo la siguiente canalización conforme a la convención mencionada anteriormente:

¿porquénopuedoeliminarelúltimoregistroygenerarelresultadodirectamente?

¿Alguien podría dar alguna explicación? Gracias por cualquier ayuda!

    
pregunta user123

4 respuestas

2

Usted puede usar su propia convención si lo desea, pero en su OP dice que el MIT 6.004x dice que su convención es tener una salida de tubería registrada.

Pero hay mejores razones que "es su convención".

¿Por qué está agregando un registro de tubería en la lógica aleatoria de las puertas F, G y H? Porque no son lo suficientemente rápidos. ¿No lo suficientemente rápido para qué? No lo suficientemente rápido como para recibir entradas en este ciclo de reloj, y tener el resultado listo para ser usado en el próximo ciclo. Entonces, al agregar el registro de salida, estamos siendo explícitos acerca de donde el tiempo debe ser correcto.

Cuando se diseña una tubería, lo fácil de la sincronización es "¿se puede registrar una unidad, en un período de reloj?". El bit duro es "¿se puede registrar una ondulación de salida a través de la lógica combinatoria aleatoria que tengo entre etapas, en un período de reloj?" El uso de un registro de salida significa que todo el tiempo difícil está bajo el control del diseñador de ese módulo (o el estudiante que responde la pregunta), y las interfaces son solo de tiempo fácil.

El uso de un registro puro al principio o al final de un proceso canalizado le proporciona la sincronización de E / S más limpia con respecto al reloj. Si necesita conectar su proceso a algo, eso es importante ya que permite un cálculo más sencillo de las configuraciones y las reservas, y la tolerancia para demoras adicionales y la inclinación del reloj entre procesos. Si voy al catálogo de módulos, es más probable que pueda usar con éxito el diseño con la sincronización de la interfaz más limpia.

Si encuentra que ha conectado dos procesos y que hay dos registros entre ellos cuando solo tiene que haber uno, es trivial eliminar uno de ellos. Entonces, cuando los dos procesos se encuentran, generalmente tiene un registro al que puede llamar la salida del proceso anterior o la entrada al siguiente. La convención del MIT es que llame a ese registro parte del anterior.

    
respondido por el Neil_UK
2

Si no usa un registro después de su última etapa, está fusionando efectivamente la última etapa con cualquier lógica siguiente. Su diagrama no mostrará la tubería completa y será inútil para verificar las restricciones de tiempo.

Desde una perspectiva técnica, perfectamente podría conectar su última etapa a un controlador de salida e incluso enrutarlo fuera del chip sin ningún registro. Pero en la vista de diseño (al menos para la temporización), toda la lógica hasta el siguiente registro debe considerarse como parte de esa etapa.

    
respondido por el Andreas
1

Lo que te falta con la pregunta es que esta canalización es solo una parte de un diseño más grande. Algo siempre consumirá el resultado de la tubería, con frecuencia otra unidad que puede tratarse como una tubería. Si observa el fragmento que ha dibujado, puede tomar varios de estos fragmentos y apilarlos de extremo a extremo para hacer una tubería más larga, esto también sigue el mismo patrón. Si omitió el flop final, pero conectó dos pequeñas tuberías, encontrará el doble de profundidad lógica en una etapa. De ahí la convención que hace que sea un elemento fácil de transformar.

Una convención más del mundo real podría insistir en 3 flops para un pipeline de 2 etapas (añadiendo un flop de captura de entrada redundante). Esto agregaría un margen de tiempo para el escenario en el que tiene una separación física entre las dos tuberías, pero ahora no es tan trivial dividir, por lo que esta segunda convención no es tan bueno para enseñar. Obviamente, en un escenario del mundo real, esta convención es solo un punto de partida, puede realizar optimizaciones en algunas o en todas las interfaces (como ya ha identificado, una vez que toda la imagen se junte)

    
respondido por el Sean Houlihane
-1

Los fallos debidos a errores de software pueden actuar como un elemento disuasorio importante para las operaciones de circuitos asíncronos. Un registro mejora el funcionamiento básico para la latencia variable.

Una canalización envía comandos o datos sin tener que esperar una respuesta. Un registro es un apretón de manos de 2 vías en el registro, por lo que el extremo receptor puede controlar el flujo. Una vez leído por el receptor, el remitente puede actualizar el registro. Lo mismo sucede en la ráfaga de respuestas con el control del lado del cliente.

El servidor siempre es "el oyente" y el cliente el "solicitante" original

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas