Necesito ayuda para entender la solución del manual de la solución. La pregunta es del ejercicio 4.24.4 y 4.24.5 del capítulo 4 del libro Organización y diseño de computadoras por Patterson y Hannessey (4ª edición). La pregunta es sobre el diseño de predictor de rama.
Patrón de resultados de rama
T,NT,T,T,NT
(T
para la rama tomada,NT
para la rama no tomada)Pregunta A
Diseñe un predictor que logre una precisión perfecta si este patrón se repite para siempre. Su predictor debe ser un circuito secuencial con una salida que proporcione una predicción (1 para tomados, 0 para no tomados) y ninguna otra entrada que no sea el reloj y la señal de control que indica que la instrucción es una rama condicional.Pregunta B
¿Cuál es la precisión de su predictor de la pregunta A si se le da un patrón de repetición que es exactamente opuesto a este?
Las soluciones dadas son las siguientes:
Solución A
El predictor debe ser un registro de desplazamiento de N bits, donde N es el número de resultados de rama en el patrón objetivo. El registro de desplazamiento debe inicializarse con el patrón en sí (0 para NT, 1 para T), y la predicción es siempre el valor en el bit más a la izquierda del registro de desplazamiento. El registro se debe cambiar después de cada rama predicha.Pregunta B
Dado que la salida del predictor es siempre opuesta a la del resultado real de la instrucción de bifurcación, la precisión es cero.
Duda
Ahora tengo dudas con la solución al problema B. Si tenemos un registro de desplazamiento a la izquierda de 5 bits inicializado con el patrón T, NT, T, T, NT (T = 1, NT = 0) y si los resultados de la rama son inversos: NT, T, T, NT, T, entonces la predicción será correcta para el medio (resultado de la tercera instrucción de predicción / rama) T, ¿verdad? Así que la precisión sería de al menos el 20% (1/5). Entonces, ¿por qué el libro dice que será cero?
Sé que esta es una pregunta muy simple, pero aún no lo entiendo ...: \