fbpx
Wikipedia

Predictor de saltos

Un predictor de saltos (branch predictor en inglés) es un circuito digital utilizado en los procesadores que utilizan segmentación de la unidad de proceso para reducir ciclos de parada en la segmentación.

Los saltos condicionales introducen retardo en estos procesadores, ya que normalmente no se evalúa la condición del salto hasta pasadas varias etapas, lo que hace que se tenga que parar el cauce, o que se puedan introducir instrucciones en la segmentación que no deben de ser ejecutadas, teniendo que convertirse posteriormente en NOP, y decrementando así el rendimiento.

La predicción es posible anotando el comportamiento del programa en saltos anteriores.

Predictor dinámico

Un predictor dinámico trabaja en tiempo de ejecución, intentando aprender el comportamiento del programa para predecir con la mínima tasa de fallos si un salto será o no tomado. Existen varios tipos dependiendo de la información que son capaces de recoger sobre el programa para hacer predicciones.

Buffer de predicción de saltos o BTB (Branch Target Buffer)

Son pequeñas memorias indexadas por la dirección del PC de la instrucción de salto.

Para almacenar todas las posibles instrucciones del PC, se necesitarían   o  (en procesadores de 64 bits) posiciones (suponiendo que las direcciones del PC fueran múltiplos de 4, los 2 bits de menos peso son siempre 00), por lo que esas memorias se harían increíblemente grandes, y lentas, además de que se desperdiciaría la mayor parte de las entradas. En vez de eso, solo se utiliza una parte de la dirección del PC, pero se produce el efecto alias[1]​ (más de una dirección puede referirse a la misma posición de la tabla).

Así, las tablas de predicción guardan unos valores que se utilizan para predecir el comportamiento del siguiente salto. Su funcionamiento consiste en incrementar o decrementar (siempre con saturación) el contador cuando un salto ha sido tomado o no respectivamente.

Predictor de 1 bit

Guarda un bit de historia que dice si el salto fue tomado o no la última vez. Dado que en un bit solo almacena el estado del salto anterior, su actualización es muy violenta, cambiando la predicción de un salto solo por un comportamiento puntual.

Predictor de 2 bits

Usa un contador de 2 bits para cada salto, con lo que puede contar hasta cuatro valores en binario (00, 01, 10 y 11, en decimal: 0, 1, 2 y 3), si el salto anteriormente fue tomado, incrementa el contador, en caso contrario lo decrementa, y predecirá que el salto es tomado si se encuentra en los valores 10 o 11, y predecirá no tomado en caso que sea 00 o 01. Con lo que consigue mayor número de aciertos que el anterior, además de un reajuste más real del comportamiento del salto, no variando la predicción por un salto puntual.

Predictor de 3 bits

Igual que el anterior, solo que ahora puede contar hasta 8 valores. Aun así, tener más de 2 bits de predicción no implica tener mayor tasa de aciertos, pues en este caso el tiempo de adaptación de la predicción a un nuevo comportamiento del salto es más alto.

Predictores con correlación

Usan información de otros saltos recientes, además de la historia del salto a predecir en si.

Tendríamos ahora varias tablas funcionando como predictores de historia independientes entre sí. Con bits adicionales, se lleva la cuenta, de forma similar a la anterior, de si los últimos saltos que ocurrieron en el programa fueron tomados o no, y dependiendo de estos, se elegirá una de las tablas de historia para hacer la predicción, que se indexan con el valor del PC y van actualizando sus valores como se hacía anteriormente.

La notación para referirse al número de bits de este predictor es (x,y), siendo x el número de bits de correlación(los utilizados para elegir cada tabla), e y el número de bits de historia que tendrá cada una de las tablas (predictor de 1 bit, predictor de 2 bits, etc.). Así, un predictor (2,2), tendría 2 bits para referirse a cada una de las 4 tablas, las cuales tendrían cada una 2 bits de historia. Un predictor (8,1) tendría 256 tablas de 1 bit de historia.

Por lo tanto, un predictor de 2 bits normal, podría considerarse como un predictor de correlación (0,2).

Predictor híbrido

Los predictores híbridos combinan las dos estrategias de predicción anteriores. Tiene un predictor de cada tipo, que se van actualizando de manera independiente, se van contando los aciertos y los fallos que tiene cada uno, y se va entonces eligiendo cual usar en cada momento.

La idea es darle más peso al predictor que más acierte.

Búfer de destino de saltos o BTB (Branch-Target Buffer)

Conocido como BTB (búfer del siguiente salto) es una caché que almacena la dirección de la siguiente instrucción que sigue a un salto.

Se accede al BTB en la etapa de captación de la instrucción (IF) usando la dirección del PC actual. Si se encuentra una entrada, se obtiene del BTB cuál es la siguiente instrucción a ejecutar, que puede ser la siguiente en el orden secuencial o la del destino del salto; la elección dependerá del valor de los bits de predicción asignados a esa entrada. Si no se encuentra la dirección en el BTB, la instrucción no es un salto, o lo es y aún no ha sido ejecutado ninguna vez (la primera vez siempre falla la predicción, puesto que dicho salto no puede estar almacenado en el BTB. Esto se conoce como fallo forzoso).

En caso de que la dirección se encuentre en el BTB pero la predicción (salto tomado o no tomado) falle, se modificará la entrada correspondiente del BTB para predecir los futuros saltos correctamente.

Referencias

  1. Monografias.com, Pablo Turmero,. «Riesgos de control y predicción de saltos (página 3) - Monografias.com». www.monografias.com. Consultado el 18 de marzo de 2017. 
  •   Datos: Q679552

predictor, saltos, este, artículo, sección, necesita, referencias, aparezcan, publicación, acreditada, este, aviso, puesto, junio, 2011, predictor, saltos, branch, predictor, inglés, circuito, digital, utilizado, procesadores, utilizan, segmentación, unidad, p. Este articulo o seccion necesita referencias que aparezcan en una publicacion acreditada Este aviso fue puesto el 13 de junio de 2011 Un predictor de saltos branch predictor en ingles es un circuito digital utilizado en los procesadores que utilizan segmentacion de la unidad de proceso para reducir ciclos de parada en la segmentacion Los saltos condicionales introducen retardo en estos procesadores ya que normalmente no se evalua la condicion del salto hasta pasadas varias etapas lo que hace que se tenga que parar el cauce o que se puedan introducir instrucciones en la segmentacion que no deben de ser ejecutadas teniendo que convertirse posteriormente en NOP y decrementando asi el rendimiento La prediccion es posible anotando el comportamiento del programa en saltos anteriores Indice 1 Predictor dinamico 1 1 Buffer de prediccion de saltos o BTB Branch Target Buffer 1 1 1 Predictor de 1 bit 1 1 2 Predictor de 2 bits 1 1 3 Predictor de 3 bits 1 2 Predictores con correlacion 1 3 Predictor hibrido 1 4 Bufer de destino de saltos o BTB Branch Target Buffer 2 ReferenciasPredictor dinamico EditarUn predictor dinamico trabaja en tiempo de ejecucion intentando aprender el comportamiento del programa para predecir con la minima tasa de fallos si un salto sera o no tomado Existen varios tipos dependiendo de la informacion que son capaces de recoger sobre el programa para hacer predicciones Buffer de prediccion de saltos o BTB Branch Target Buffer Editar Son pequenas memorias indexadas por la direccion del PC de la instruccion de salto Para almacenar todas las posibles instrucciones del PC se necesitarian 2 30 displaystyle 2 30 o 2 62 displaystyle 2 62 en procesadores de 64 bits posiciones suponiendo que las direcciones del PC fueran multiplos de 4 los 2 bits de menos peso son siempre 00 por lo que esas memorias se harian increiblemente grandes y lentas ademas de que se desperdiciaria la mayor parte de las entradas En vez de eso solo se utiliza una parte de la direccion del PC pero se produce el efecto alias 1 mas de una direccion puede referirse a la misma posicion de la tabla Asi las tablas de prediccion guardan unos valores que se utilizan para predecir el comportamiento del siguiente salto Su funcionamiento consiste en incrementar o decrementar siempre con saturacion el contador cuando un salto ha sido tomado o no respectivamente Predictor de 1 bit Editar Guarda un bit de historia que dice si el salto fue tomado o no la ultima vez Dado que en un bit solo almacena el estado del salto anterior su actualizacion es muy violenta cambiando la prediccion de un salto solo por un comportamiento puntual Predictor de 2 bits Editar Usa un contador de 2 bits para cada salto con lo que puede contar hasta cuatro valores en binario 00 01 10 y 11 en decimal 0 1 2 y 3 si el salto anteriormente fue tomado incrementa el contador en caso contrario lo decrementa y predecira que el salto es tomado si se encuentra en los valores 10 o 11 y predecira no tomado en caso que sea 00 o 01 Con lo que consigue mayor numero de aciertos que el anterior ademas de un reajuste mas real del comportamiento del salto no variando la prediccion por un salto puntual Predictor de 3 bits Editar Igual que el anterior solo que ahora puede contar hasta 8 valores Aun asi tener mas de 2 bits de prediccion no implica tener mayor tasa de aciertos pues en este caso el tiempo de adaptacion de la prediccion a un nuevo comportamiento del salto es mas alto Predictores con correlacion Editar Usan informacion de otros saltos recientes ademas de la historia del salto a predecir en si Tendriamos ahora varias tablas funcionando como predictores de historia independientes entre si Con bits adicionales se lleva la cuenta de forma similar a la anterior de si los ultimos saltos que ocurrieron en el programa fueron tomados o no y dependiendo de estos se elegira una de las tablas de historia para hacer la prediccion que se indexan con el valor del PC y van actualizando sus valores como se hacia anteriormente La notacion para referirse al numero de bits de este predictor es x y siendo x el numero de bits de correlacion los utilizados para elegir cada tabla e y el numero de bits de historia que tendra cada una de las tablas predictor de 1 bit predictor de 2 bits etc Asi un predictor 2 2 tendria 2 bits para referirse a cada una de las 4 tablas las cuales tendrian cada una 2 bits de historia Un predictor 8 1 tendria 256 tablas de 1 bit de historia Por lo tanto un predictor de 2 bits normal podria considerarse como un predictor de correlacion 0 2 Predictor hibrido Editar Los predictores hibridos combinan las dos estrategias de prediccion anteriores Tiene un predictor de cada tipo que se van actualizando de manera independiente se van contando los aciertos y los fallos que tiene cada uno y se va entonces eligiendo cual usar en cada momento La idea es darle mas peso al predictor que mas acierte Bufer de destino de saltos o BTB Branch Target Buffer Editar Conocido como BTB bufer del siguiente salto es una cache que almacena la direccion de la siguiente instruccion que sigue a un salto Se accede al BTB en la etapa de captacion de la instruccion IF usando la direccion del PC actual Si se encuentra una entrada se obtiene del BTB cual es la siguiente instruccion a ejecutar que puede ser la siguiente en el orden secuencial o la del destino del salto la eleccion dependera del valor de los bits de prediccion asignados a esa entrada Si no se encuentra la direccion en el BTB la instruccion no es un salto o lo es y aun no ha sido ejecutado ninguna vez la primera vez siempre falla la prediccion puesto que dicho salto no puede estar almacenado en el BTB Esto se conoce como fallo forzoso En caso de que la direccion se encuentre en el BTB pero la prediccion salto tomado o no tomado falle se modificara la entrada correspondiente del BTB para predecir los futuros saltos correctamente Referencias Editar Monografias com Pablo Turmero Riesgos de control y prediccion de saltos pagina 3 Monografias com www monografias com Consultado el 18 de marzo de 2017 Datos Q679552 Obtenido de https es wikipedia org w index php title Predictor de saltos amp oldid 138316591, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos