Está en la página 1de 3

Problema

Considere el siguiente fragmento de seudocódigo:

for x=1 to 10
if (x es par) then // Salto S2
Operación A;
end if;
if (5*x es múltiplo de 10) then // Salto S3
Operación B;
end if;
end for;

y la máquina de estados situada a continuación para realizar la predicción de los saltos que existen en el
código. Esta máquina representa una variante de un predictor de Smith de 2 bits de historial de salto.

a) ¿Cuántos saltos hay en el código? Para evidenciar los saltos reescriba el seudocódigo utilizando
secuencias if <condición> goto <etiqueta> donde considere que hay un salto condicional.

b) ¿Cuál es la secuencia de predicciones de los saltos existentes en el código para todas las iteraciones del
bucle? Considere que el historial de salto es exclusivo de cada salto y no se debe mezclar con el historial
de otros saltos. Utilice una tabla para presentar la solución.

c) Si el historial de salto ahora es único para todos los saltos, ¿cuál es la secuencia de predicciones que
obtiene? Utilice una tabla como en el apartado anterior.

d) ¿Cuáles son los porcentajes de acierto de la predicción conjunta y de cada salto que se han obtenido en
los apartados (b) y (c)?
Solución

a) Una forma de evidenciar los saltos existentes en el seudocódigo del enunciado es reescribirlo mediante
instrucciones goto condicionadas por un if:

x:=1;
S1: if (x no es par) goto S2
Operación A;
S2: if (5*x no es múltiplo de 10) goto S3
Operación B;
S3: x:=x+1;
if (x<=10) goto S1
end for:

b) En la siguiente tabla se puede apreciar la diferencia entre la predicción que se realiza de la efectividad o
no de los saltos S1, S2 y S3 y la situación real que se produce. Se considera que cada salto tiene un historial
de salto propio, independiente de los otros saltos.

x 1 2 3 4 5 6 7 8 9 10
x>=10 10
Estado: NN NN NN NN NN NN NN NN NN NN
S1 predicho: N N N N N N N N N N
S1 real: N N N N N N N N N E
x mod 2=1 1 3 5 7 9
Estado: NN NE EN NE EN NE EN NE EN NE
S2 predicho: N E E E E E E E E E
S2 real: E N E N E N E N E N
5x mod 10=5 1 15 25 35 45
Estado: NN NE EN NE EN NE EN NE EN NE
S3 predicho: N E E E E E E E E E
S3 real: E N E N E N E N E N

c) Si se considera que el historial de salto es global para todos los saltos, se tienen los siguientes resultados.

x 1 2 3 4 5 6 7 8 9 10
x>=10 10
Estado: NN EE NN EE NN EE NN EE NN EE
S1 predicho: N E N E N E N E N E
S1 real: N N N N N N N N N E
x mod 2=1 1 3 5 7 9
Estado: NN EN NN EN NN EN NN EN NN EE
S2 predicho: N E N E N E N E N E
S2 real: E N E N E N E N E N
5x mod 10=5 5 15 25 35 45
Estado: NE NN NE NN NE NN NE NN NE EN
S3 predicho: E N E N E N E N E E
S3 real: E N E N E N E N E N
d)
% acierto Supuesto historial de salto individual Supuesto historial global
S1 9/10: 90% 6/10: 60%
S2 4/10: 40% 0/10: 0%
S3 4/10: 40% 9/10: 90%
Conjunto 17/30: 56,66% 15/30: 50%

También podría gustarte