lunes, 9 de noviembre de 2009

Predictores de salto multinivel y adaptativos

Los predictores de saltos son recursos hardware para reducir ciclos de paradas de la ejecución. Concretamente paradas provocadas por tener que evaluar una condición antes de decidir cual será la siguiente instrucción. Para poder crear predictores funcionales hay que estudiar el comportamiento de los programas. Hoy voy a analizar dos tipos de predictores en concreto:

Predictores de Salto Multinivel
Los predictores multinivel se caracterizan por utilizar información del salto para el que se realiza la predicción, junto a información del resto de saltos del programa.
Un ejemplo sencillo para entender esta clase de predictores es el paso del preditor 1-1. Su nombre viene de utilizar el comportamiento del último salto para seleccionar un predictor de 1 bit para el salto que estamos evaluando. El predictor que queda es el siguiente:
  1. El primer bit denomina la predicción si el último salto del programa no se había tomado.
  2. El segundo bit denomina la predicción en el caso contrario, si se ha tomado el último salto.
Los predictores multinivel se denominan M-N, es decir, utilizan el funcionamiento de los m últimos saltos tomados para escoger un predictor de n bits para el salto que se está evaluando.
Si tenemos la información de los saltos anteriores del programa podemos mejorar la tasa de aciertos de la predicción del salto actual. Pero tiene una pega grande, la gran complejidad del hardware que hace falta para tener encuentra la predicción de todos estos saltos.

Predictores Adaptativos
Estos predictores pueden seleccionar si trabajan con predictores que trabajen con información exclusivamente del salto con el que estamos trabajando o con información los n saltos anteriores (como los predictores multinivel).
Un ejemplo de predictor adaptativo trabajaría de la siguiente manera: Si las dos últimas predicciones de salto han fallado con un predictor que evalúa la información local, se cambia la siguiente predicción, para que se escoja teniendo en cuenta la información de otros saltos del código del programa.

No hay comentarios:

Publicar un comentario