En este gráfico, ¿podemos simplemente eliminar la etapa de escritura hacia atrás, ya que el mux es empujado de nuevo a la etapa de acceso a memoria y no hay lógica en la etapa de escritura hacia atrás. ¿Es debido al archivo de registro que no puede ser leído y escrito simultáneamente, tenemos que esperar un reloj extra para dejar que la escritura termine? ¿Qué pasa si el archivo de registro tiene reenvío interno, puedo eliminar la etapa de escritura?
Respuesta
¿Demasiados anuncios?Sí, se podría eliminar la etapa WB.
De hecho, si realmente quieres cambiar complejidad por rendimiento, derivarías la salida de la ALU (etapa EX) de vuelta a la entrada de la etapa EX y te saltarías las etapas MEM y WB.
El pipeline mostrado en el post original es dramáticamente sub-óptimo -- desperdicia dos ticks en muchas instrucciones.
Por ejemplo, un ADD seguido de un AND. Tan pronto como el resultado de la suma sale de la etapa EX, está listo para ser utilizado en la siguiente instrucción. Pero la tubería anterior lo envía a través de dos etapas más. Así que si esto fuera un procesador real, tendrías que meter al menos otra instrucción entre la ADD y la AND. Cuando Babbage era un niño, vi un estudio que decía que la mayoría de los operandos de entrada se generaban en las dos últimas instrucciones.
Así que todos los diseños de procesadores que he visto han implementado una ruta de bypass de EX out a EX in. Tal vez haya diseños de menor potencia/rendimiento que omitan el bypass, pero parece un mal negocio.