31
3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO

3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Embed Size (px)

Citation preview

Page 1: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO

Page 2: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones. Sin embargo no se ha abordado el problema delas dependencias de control entre instrucciones.

Esta sección se dedica precisamente al estudio del

procesamiento eficiente de las instrucciones de salto en un procesador súper escalar.

El efecto de los saltos en los procesadores superescalares es muy grave dado que al captarse, decodificarse, y emitirse varias instrucciones por ciclo puede ocurrir que, en determinados códigos , prácticamente en cada ciclo haya una instrucción de salto , además aumenta el numero de instrucciones que podrían introducirse incorrectamente en el cauce y dar lugar a un uso ineficiente de los recursos.

Page 3: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Estudio de los saltos en el ámbito de los procesadores segmentados:

Detección de la instrucción de salto: - Se busca la rápida detección de una instrucción de salto

para procesarse.- Si se produce en IF (en lugar de ID) y se determina la

dirección de - destino de salto al siguiente ciclo se pueden captar

instrucciones a partir de la dirección adecuada sin penalización

early branch detection

Detección de bifurcación temprana (o salto)

Posibilidades

Page 4: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

En la decodificación

1.- Detección paralela: etapa especifica que opera en paralelo con una etapa común de decodificación. Procesadores Alpha

Page 5: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

2.- Detección anticipada: se analizan las ultimas líneas de la cola de instrucciones captadas antes de que pasen a la unidad de decodificación.(PowerPC 603)

3.- Detección integrada en la captación: En el momento en que se captan las instrucciones se detecta si la instrucción es de salto o no. (PowerPC 640)

Page 6: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Gestión de saltos condicionales no resueltos:

Si la instrucción de salto no termina de evaluar la condición de salto se dice que el salto o la condición de salto no se ha resuelto.

Los uP escalares suelen usar el procesamiento especulativo de sato

Resumen alternativas establecimiento condición de salto

Page 7: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Bits de estado Comprobación directaExisten bits de estado que se modifican al realizar operaciones o mediante operaciones que actúan específicamente sobre el valor de registro de bits de estado

Los resultados de las operaciones se comprueban directamente respecto a las condiciones especificas mediantes instrucciones especificas

 Dos instrucciones Una instrucción

add r1,r2,r3 add r1,r2,r3 add r1,r2,r3

beq cero cmpeq r7,r1,0 beq r1, cero

div r5,r4,r1 beq r7, cero div r5,r4,r1

… div r5,r4,r1 …

cero … cero

  cero  

IBM/360 Am 29000 Cray

PDP_11 VAX   MIPS, MC881X0

x-86, Pentium   HP PA

PowerPC, Sparc   DEC Alpha

Page 8: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Acceso a las instrucciones de salto: Hay que implementar procedimientos que permitan un acceso mas rápido a la secuencia de instrucciones a la que se produce el salto.( ir a la dirección de instrucciones del salto)

3.4.1 Alternativas para la gestión de los saltos condicionales Detectada una instrucción de salto y determinado la dirección de

destino se debe verificar la condición se salto Si se verifica la condición de salto se realiza el salto. Estas

operaciones son esenciales para reducir la penalización que ocasionan los salto condicionales

Posibilidades para gestionar los saltos condicionales no resueltos para minimizar la penalización en el posible retardo de la condición de salto.

Page 9: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones
Page 10: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

bloquear la instrucción de salto, que no puede progresar en el cauce hasta que no se haya terminado de evaluar la condición de salto. (situación mas desfavorable)

procesamiento especulativo a los saltos.

Procesamiento especulativo a los saltos.

estimar o especular el camino mas probable que seguirá la

ejecución cuando se determine la condición de saltoo múltiples caminos. Se procesan los dos caminos. Opción

mas demandante del procesador

Page 11: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

3.4.1.1 Alternativas para la predicción de saltos La predicción de saltos se basa en la idea de que el

comportamiento de una instrucción de salto condicional presenta una cierta regularidad, y por tanto puede predecirse con una tasa de aciertos suficientemente elevada. En el momento que se identifica una condición de salto condicional se sigue una estrategia para predecir si se producirá o no el salto antes que se complete la evaluación de la condición de salto. Por lo tanto la captación de instrucciones puede continuar a partir de la dirección de destino de salto o continua en las instrucciones que siguen a la instrucción de salto.

Page 12: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

En caso de que se produzca un error en la predicción, habrá por tanto una penalización que será tanto mayor cuanto más se tarde en recuperar la situación de ejecución correcta. Así, como en cualquier otra técnica de procesamiento especulativo(predicciones), interesa disponer de un procedimiento de predicción con una tasa de aciertos lo más elevada posible y una implementación que permita la recuperación rápida de los errores. Se describirá alternativas para la predicción:

predice salto entonces dirección de destino del saltono predice salto entonces continua con instrucciones

Page 13: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Técnicas predicción fija, son aquellas en las que el procesador toma siempre la misma decisión ante cualquier instrucción de salto condicional empieza a ejecutar instrucciones a partir de la dirección de destino del salto, o sigue captando las instrucciones que siguen a la instrucción de salto.

predicción verdadera, la decisión depende de las características propias de la instrucción de salto condicional concreta que se esté ejecutando por eso se dice que son de predicción verdadera en contraposición a los anteriores. Esas características propias de la instrucción de salto pueden ser atributos que no cambian a lo largo de las posibles ejecuciones sucesivas de la instrucción. En este caso se habla de predicción estática. también puede tenerse en cuenta el perfil de saltos/no saltos que se han ido produciendo en las sucesivas ejecuciones anteriores de la instrucción de salto, o incluso de otras instrucciones de salto próximas en este caso, si se considera la historia de la instrucción de salto se trata de un procedimiento de predicción dinámica

Page 14: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Predicción fijataken or not taken salta o no salta

 

Predicción verdadera

predicción estática

atributos de la instrucción de salto - Código de operación- desplazamiento en el salto- Compilador

predicción dinámica

resultado de ejecuciones pasadas de la instrucción- Implícita- Explicita

Page 15: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Esquemas de predicción fija. Sólo hay dos alternativas posibles para los esquemas de predicción fija: la aproximación de salto siempre no tomado y la de salto siempre tomado. salto siempre no_ tomada, instrucción de salto con

condición de salto no resuelta no se toma el salto

salto siempre tomado, instrucción de salto con condición de salto no resuelta se toma el salto

En previsión de que se pueda producir un error en la predicción, se guarda el valor del contador de programa PC que apunta a la instrucción siguiente a la instrucción de salto condicional.

Page 16: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Esquemas de predicción estática. Esta relaciona con ciertos atributos de la instrucción de salto que ocasionan que dichas instrucciones ocasiones un salto

ejemplo: opcode, desplazamiento de salto, compilador Predicción basada en el código de operación: según el tipo

de instrucción de salto condicional se considero más probable que se produce el salto o que no. Este tipo de esquemas se utiliza en el MC88110 (1993) y en el PowerPC (1993).

Page 17: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Predicción basada en el desplazamiento del salto: si el desplazamiento es positivo (se trata de un salto hacia adelante, a direcciones mayores que la de la instrucción de salto) se predice, usualmente, que el salto no se producirá, y si el desplazamiento es negativo (salto hacia atrás) se predice, usualmente, que el salto se producirá. En los procesadores Alpha 21064 (1992) y PowerPC 603 (1993) se utiliza . este esquema de predicción.

 

Predicción Estática en el MC88110

Condicion de salto Predicción

=0 No salto

≠0 Salto

>0 No salto

<0 Salto

≥0 No salto

≤0 Salto

Page 18: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Predicción dirigida por el compilador: a través de una serie de bits que existen en las instrucciones de salto (bits de predicción), el compilador puede fijar Ia predicción que se va a realizar para la instrucción. Para fijar esos bits el compilador puede tener en cuenta resultados obtenidos a partir de ejecución de trazas del programa que indiquen qué tipo de comportamiento es el más probable para cada instrucción de salto. Entre los procesadores que implementan esta posibilidad están el PowerPC 603 (1993) y el PA8000 (1996).

Page 19: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Esquemas de predicción dinámica se pretende utilizar el comportamiento observado de salto/no salto de cada instrucción de salto condicional, para establecer la predicción a realizar cuando esa instrucción vuelva a captarse. El presupuesto básico de la predicción dinámica es que lo más probable es que el resultado de salto/no salto de una instrucción sea similar al que se tuvo en las ejecuciones pasadas de dicha instrucción (en la anterior o en las n ejecuciones anteriores). En este esquema, para cada instrucción de salto condicional debe guardarse algún tipo de información que condense el comportamiento pasado y permita realizar la predicción.

Comparado con la predicción fija y la predicción estática, este esquema es el que suele presentar las mejores prestaciones, a costa de una implementación más costosa. A su vez, los esquemas de predicción dinámica se pueden clasificar en función de la forma de almacenar el comportamiento pasado de la instrucción de salto. Así, se habla de:

Page 20: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Predicción dinámica implícita: Se almacena únicamente la dirección de la instrucción que se ejecutó tras la instrucción de salto la última vez que se captó esta. La dirección puede ser la dirección de destino del sal to, lo que equivale a predecir que se produce el salto, o bien la dirección de la instrucción siguiente a la de salto, con lo que se predice que el salto no se produce.

Predicción dinámica explícita: para cada instrucción de salto condicional, existe un conjunto de bits que codifican la información relativa al comportamiento pasado de la instrucción en cuestión. Estos bits se denominan bits de historia. El número de bits de historia que se guardan para cada instrucción depende del tipo de esquema de predicción dinámica explícita que se haga.

Page 21: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

EJEMPLOS DE PROCEDIMIENTOS DE PREDICCIÓN DINÁMICA EXPLICITA CON DISTINTO NUMERO DE BITS DE HISTORIA

Predicción con 1 bit de historia La designación del estado(S, saltar, o NS, no saltar) indica lo que se predice, y las flechas indican transiciones de estado según lo que se produce al ejecutarse la instrucción (T, salto tomado, o NT, salto no tomado)Predicción con 2 bit de historia Existen cuatro posibles estados dos de ellos corresponden a una predicción de realizar el salto (S) y otros dos a no realizar el salto (NS)

Predicción con 3 bit de historia La predicción viene determinada por el bit mayoritario (si hay mayoría de unos se predice salto, por ejemplo) los bits se desplazan a la derecha introduciéndose un 0 o un 1 según el resultado de la instrucción de salto

Page 22: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

El porcentaje de aciertos en la predicción es fundamental para mantener un promedio elevado de instrucciones procesadas por ciclo

Esquemas de predicción de dos niveles, estos esquemas utilizan dos niveles de información para realizar la predicción, por un lado se guarda información del comportamiento de salto/no salto, además se utiliza información adicional que establece los bit de historia para realizar la predicción.

La información relativa al comportamiento pasado de las instrucciones en la denominada tabla de historia de salto (BHT) y los bits de historia que se utilizan para realizar la predicción están en la tabla de patrones (PHT).

Page 23: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

COMPARACIÓN ENTRE UN ESQUEMA DE PREDICCIÓN DE UN NIVEL A) Y DOS ESQUEMAS DE DOS NIVELES B) Y C)

Page 24: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Existe la posibilidad de definir esquemas de predicción a partir de la hibridación de otros, un ejemplo de este tipo de esquemas de predicción híbridos son los predictores por torneo, estos predictores utilizan un esquema de predicción local y otro global y seleccionan la predicción de uno de ellos según el estado de un contador de dos bits de saturado.

Predictor 1 correcto Predictor 2 correcto Acción (sobre el contador de dos

bits)

No No -

No Si -1

Si No +1

Si Si -

Page 25: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

A medida que se usan mas recursos hardware para implementar un esquema de predicción se pueden conseguir mejores porcentajes de aciertos en la predicción debido por un lado a que es posible utilizar mas bits para representar la historia de cada instrucción de salto y por otro a que se pueden almacenar las historias de mas instrucciones de salto y se evitan problemas de colisión entre instrucciones de salto distintas.

Existen distintas alternativas para guardar la información de la historia de saltos/no saltos de cada instrucción de salto condicional. Una posibilidad es utilizar la caché de instrucciones. En este caso, en cada línea de caché se dispone de una serie de bits adicionales que se utilizan para los bits de historia de las instrucciones de salto que existan en la línea.

Page 26: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Hay dos características importantes del procesamiento especulativo de instrucciones de salto:

El nivel de especulación.- es el numero de instrucciones de salto condicional que pueden ejecutarse especulativamente. En el caso de que se permita le ejecución especulativa simultanea de varias instrucciones de salto no resueltas habrá que guardar los correspondientes estados de ejecución.

El grado de especulación.- indica la etapa hasta la que se procesan las instrucciones que constituyen el camino especulativo después del salto condicional.

Page 27: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

Acceso a la secuencia de salto y recuperación de una predicción incorrecta

los saltos condicionales que da lugar a un salto son mas probables que los que no dan lugar a salto por eso seria interesante reducir al máximo el tiempo de acceso a la secuencia de instrucciones a partir de la dirección de salto y reducir la penalización para las predicciones incorrectas.

hay que tener en cuenta que una vez detectada una instrucción de salto debe calcularse la dirección de destino de salto (BTA) lo antes posible. En el caso de que se produzca el salto, es precisamente la BTA la que debe cargarse en el contador de programa para captar la instrucción correspondiente

Page 28: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

ACELERACIÓN DEL ACCESO A LA SECUENCIA DE SALTO MEDIANTE BTAC

Se muestran los elementos que intervienen en la captación de la instrucción de la secuencia de salto cuando se utiliza la denominada caché de direcciones de destino de salto (BTAC), cada uno de los elementos de la (BTAC) esta constituido por la dirección de la instrucción de salto (BA) y la dirección de destino de salto (BTA)

Page 29: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

ACELERACIÓN DEL ACCESO A LA SECUENCIA DE SALTO MEDIANTE BTIC

Para mejorar la velocidad de acceso a la secuencia de salto, se tiene directamente una o varias de las instrucciones que se deben ejecutar si se produce el salto, el numero de instrucciones que se incluirán en cada elemento dependerá del tamaño de este. En este caso, la caché que contiene la información para acelerar el acceso a las instrucciones de destino de salto se denomina BTIC.

Page 30: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

ACELERACIÓN DEL ACCESO A LA SECUENCIA DE SALTO MEDIANTE EL USO DE ÍNDICES SUCESORES EN LA CACHE DE INSTRUCCIONES(CACHE 1)

Otra alternativa se basa en el uso de índices sucesores en la propia caché de instrucciones en este caso en cada línea caché se añade unan una serie de bits para almacenar un índice que apunta a la siguiente instrucción que se debe ejecutar tras la instrucción de salto condicional incluida en esa línea.

Page 31: 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO. Se ha estudiado las dependencias de datos RAW,WAR y WAW en el procesamiento superescalar de instrucciones

EVOLUCION DE LOS ESQUEMAS DE ACCESO RAPIDO A LA SECUENCIA DE SALTO EN DISTINTOS PROCESADORES

Sin esquema para acelerara

el proceso

BTIC BTAC Índice sucesor en

caché

I486(1989) Pentium(1993)

MC68040(1990)

MC68060(1994)

AMD 29000 (1988)

AMD 29000 Superescalar

(1995)

R4000(1992) R8000(1994)

Super Sparc (1991)

UltraSparc (1995)

Power PC (1993)

Power PC604(1994) Power PC620(1996)