Los riesgos de control producidos por los saltos, son los que primero deben evitarse, ya que son los que más problemas causan. Existen varias técnicas que se basan en predecir si los saltos se van a tomar o no, entre las cuales explicaremos dos predictores dinámicos complejos: los predictores multinivel y los adaptativos.
Predictores Multinivel o Correlados:
A diferencia de otros predictores dinámicos, con estos predictores se tiene en cuenta el comportamiento que han tenido recientemente todos los saltos, no sólo el del salto para el que estamos haciendo la predicción.
Existen dos razones principales que pueden causar que las direcciones tomadas por dos saltos estén correlacionadas. Una es que las condiciones de los dos saltos estén basadas (total o parcialmente) en la misma información o en información relacionada. Podemos ver un ejemplo de este tipod e correlación a continuación:
Salto Y: if (condicion1)
...
Salto X: if(condicion1 AND condicion2)
Correlación debida a la relación de información
La otra razón es que la información que afecta el resultado del segundo salto es generada basandose en el resultado del primer salto. El siguiente ejemplo muestra este otro tipo de correlación:
Salto Y: if(condicion1) a=2;
...
Salto X: if(a==0)
Correlación debida a la dependencia de los resultados de un salto anterior.
Adicionalmente a la dirección tomada por un salto correlacionado, solo saber si ese salto estaba en el camino que condujo al salto actual puede dar cierta información sobre el resultado de los saltos que preceden al salto correlacionado. Esto se muestra en el ejemplo siguiente:
Salto Y: if(NOT(condicion1))...
Salto Z: else if(NOT(condicion2))...
Salto V: else if(condicion3)...
...
Salto X: if(condicion1 AND condicion2)
Correlación en camino
En este caso, si se llega al salto V, se sabe que las primeras dos condiciones eran falsas, luego entonces condicion1 y condicion2 son ambas verdaderas. Como se puede ver, la dirección del salto V no está correlacionada con la condición del salto X, pero sabiendo que el salto V está en el camino que condujo al salto X se sabe que la condición del salto X va a ser satisfecha. Esta correlación se conoce como correlación en camino.
Predictores Adaptativos:
Tener en cuenta información global de todos los saltos puede mejorar la tasa de acierto de un predcitor local, pero puede que esta mejora no sea suficiente para compensar la utilización de un hardware más complejo o incluso que no exista mejora alguna.
Por ello, los predictores adaptativos tienen la capacidad de escoger un predictor local o un predictor global según cuál se vaya a comportar mejor en un determinado salto. Estos predictores siguen una política similar a la de los predictores de dos bits. Es decir, no se cambia de predictor a no ser que falle en dos predicciones consecutivas. Por último decir que normalmente el predictor adaptativo suele escoger el predictor local.
No hay comentarios:
Publicar un comentario