Pipeline

Pipeline

de Cristian Andres Bauza Silva -
Número de respuestas: 2

Hola, 

Supongo que dependerá de la arquitectura, pero por ejemplo en

el caso del MIPS visto en el teórico, cuando hay una instrucción de salto, 

y que el salto se predice como tomado, el FETCH de la siguiente instrucción (a la 

que se salta) no puede comenzar hasta el fin de la etapa DECODE de la instrucción

de salto o de la etapa de EXECUTE? 

 

Saludos!

En respuesta a Cristian Andres Bauza Silva

Re: Pipeline

de Federico Rivero -

Estimado:

Cómo estás? Ese punto se discutió durante el práctico. La conclusión fue que depende de en qué etapa del pipeline se desee colocar el predictor. Por ejemplo, se podría colocar el predictor en la etapa de FETCH, tomando como input la instrucción leida desde memoria, que esta sea decodificada y si resulta ser un salto, que se realice la predicción, dejando las líneas de control que lo indican prontas para ser utilizadas durante el siguiente fetch. Con esta solución se obtiene delay cero para los saltos, pero en consecuencia se estaría aumentando el ciclo de reloj, pues sobrecargamos la etapa fetch! Por otro lado el predictor podría estar en la etapa de decodificación, se podría obtener la instrucción de la rama predicha en el siguiente ciclo. Con esta solución se estaría perdiendo sólo un ciclo por cada branch.

Para el pipelilne MIPS visto en teórico, la solución que propone el libro es no utilizar predictores y agregar más hardware en la etapa de decodificación para que ya se determine el resultado del salto en ese momento. Ver apéndice A del Hennessy y Patterson.

Cualquier cosa volvé a preguntar o lo vemos en el práctico.

Saludos,

      Federico