PROGRAMACION Instrucciones Salto

28
3.4 PROCESAMIENTO DE LAS PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO INSTRUCCIONES DE SALTO

description

PROGRAMACION Instrucciones Salto

Transcript of PROGRAMACION Instrucciones Salto

  • 3.4 PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO

  • Problema de las dependencias de control entre instruccionesEsta seccin se dedica al estudio del procesamiento eficiente de las instrucciones de salto en un procesador superescalar.

    Un procesador superescalar sufre una reduccin de prestaciones considerable como consecuencia de las cambios en la secuencia de instrucciones

  • Para el estudio del procesamiento de los saltos en el mbito de los procesadores segmentados empezaremos recordando los aspectos que encierra dicho procesamiento:

    Deteccin de la instruccin de salto

    Gestin de saltos condicionales no resueltos

    Acceso a las instrucciones destino de saltoPROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO

  • Deteccin de la instruccin de salto cuanto antes se detecte que una instruccin es de salto antes puede empezar a procesarse como tal. Por ejemplo inicindose el clculo de destino del salto.

    De esta forma se puede reducir la posible penalizacin que ocasionan estas instrucciones si se produjese el salto. As, si se identifica que una instruccin es de salto condicional en el momento de la captacin, en lugar de esperar a la etapa de decodificacin

  • Existen varias posibilidades para la deteccin temprana de las instrucciones de salto:

    Deteccin paralela. Deteccin anticipadaDeteccin integrada en la captacin

    Posibilidades para la deteccin temprana de las instrucciones de salto

  • Deteccin paralela. Hay una etapa especfica para detectar instrucciones de salto que opera en paralelo con una etapa comn de decodificacin. Esta alternativa se utiliza en los procesadores Alpha.

  • 2. Deteccin anticipada Adems de utilizarse la decodificacin paralela, se analizan las ltimas lneas de la cola de instrucciones captadas antes de que pasen a la unidad de decodificacin. El PowerPC 603 usa esta estrategia.

  • 3. Deteccin integrada en la captacin.En el momento en que se captan las instrucciones se detecta si la instruccin es de salto o no (para eso se pueden utilizar los bits de predecodificacin, como hemos indicado antes). Esta opcin se utiliza, por ejemplo, en el PowerPC 640.

  • B. Gestin de saltos condicionales no resueltos:

    Si en el momento en que la instruccin de salto evala la condicin de salto, sta no se ha terminado de evaluar todava, se dice que el salto o la condicin de salto no se ha resuelto, Para resolver este problema, los procesadores superescalares suelen utilizar el procesamiento especulativo del salto.

  • La instruccin de salto condicional comprueba el valor de los bits de estado adecuados segn sea la condicin que determine el salto. Esta forma de realizar los saltos condicionales establece una dependencia entre las instrucciones que viene determinada por la ubicacin de dichas instrucciones, en lugar de aparecer explcitamente a travs de los operandos de cada instruccin. Registro de estado

  • Registro de estado y comprobacin directa

  • Bits de estadoComprobacin DirectaExisten bits de estado que se modifican al realizar operaciones, o mediante operaciones que actan especficamente sobre el valor del registro de bits de estadoadd r1, r2, r3beq cerodiv r5, r4, r1Los resultados de las operaciones se comprueban directamente respecto a las condiciones especificas mediante instrucciones especificasDos instruccionesadd r1, r2, r3cmpeq r7,r1,0beq r7,cerodiv r5, r4Una instruccin add r1, r2, r3beq r1,cerodiv r5, r4, r1cero

  • C. Acceso a las instrucciones de destino del salto:

    hay que implementar procedimientos que permitan el acceso ms rpido posible a la secuencia de instrucciones a la que se produce el salto, una vez resuelta la condicin de salto.

  • 3.4.1 Alternativas para la gestin de los saltos condicionales Una vez que se ha detectado una instruccin de salto y se ha determinado la direccin de destino, interesa conocer cuanto antes si se verifica la condicin de salto para empezar a captar lo ms pronto posible las instrucciones desde la direccin de destino del salto, si finalmente hay que realizar el salto, y evitar que se introduzcan en el cauce instrucciones que no deben procesarse.

  • bloquear la instruccin de salto que no puede progresar en el cauce hasta que no se haya terminado de evaluar la condicin. Esta alternativa corresponde, realmente, a la situacin ms desfavorable desde el punto de vista de las prestaciones.

  • Tabla 3.8. Alternativas para la gestin de saltos condicionales no resueltos en procesadores superescalaresGestin de saltos condicionales no resueltos(La condicin de salto no se ha terminado)Bloqueo del procesamiento de saltoSe Bloque las instrucciones de salto hasta que la condicin est disponible (68020,68030, 80386)Procesamiento especulativo de saltoLa ejecucin prosigue por el camino ms probable. Si se ha errado en la prediccin hay que recuperar el camino correcto.Mltiples caminosSe ejecutan los dos caminos posibles despus de un salto hasta la condicin de salto se evala. En ese momento se cancela el comino incorrecto

  • 2. procesamiento especulativo a los saltos. El procedimiento se basa en estimar de alguna forma el camino que, con ms probabilidad, va a seguir la ejecucin cuando se haya evaluado la condicin de salto. 3. mltiples caminos. En este caso si cada vez que llega una instruccin de salto, el procesador empezara a captar y procesar instrucciones de los dos caminos alternativos. Esta opcin es la ms costosa en cuanto a demanda de recursos en el procesador

  • 3.4.1.1 Alternativa para la prediccin de saltos

    La prediccin de saltos se basa en la idea de que el comportamiento de una instruccin de salto condicional presenta una cierta regularidad, y por tanto puede predecirse con una cosa de aciertos suficientemente elevada. En caso de que se produzca un error en la prediccin, habr por tanto una penalizacin que ser tanto mayor cuanto ms se tarde en recuperar la situacin de ejecucin correcta.

  • Clasificacin de los procedimientos de la prediccin de saltos.Interesa disponer de un procedimiento de prediccin con una tasa de aciertos lo ms elevada posible y una implementacin que permita la recuperacin rpida de los errores. Se describir alternativas para la prediccin:

  • Prediccin Fija Se toma siempre la misma decisin: El salto siempre se realiza , > o Prediccin Verdadera La decisin de si se realiza o no el salto se toma medianteprediccin esttica Segn los atributos de la instruccin de salto( El cdigo de operacin, el desplazamiento, la decisin del compilador)Prediccin Dinmica .- Segn el resultado de ejecuciones pasadas de la instruccin (historia de la instruccin de salto)

  • prediccin fija, que son aquellas en las que el procesador toma siempre la misma decisin ante cualquier instruccin de salto condicional empieza a ejecutar instrucciones a partir de la direccin de destino del salto, o sigue captando las instrucciones que siguen a la instruccin de salto. prediccin verdadera, la decisin depende de las caractersticas propias de la instruccin de salto condicional concreta que se est ejecutando por eso se dice que son de prediccin verdadera en contraposicin a los anteriores. Esas caractersticas propias de la instruccin de salto pueden ser atributos que no cambian a lo largo de las posibles ejecuciones sucesivas de la instruccin. En este caso se habla de prediccin esttica. tambin puede tenerse en cuenta el perfil de saltos/no saltos que se han ido produciendo en las sucesivas ejecuciones anteriores de la instruccin de salto, o incluso de otras instrucciones de salto prximas en este caso, si se considera la historia de la instruccin de salto se trata de un procedimiento de prediccin dinmica

  • Esquemas de prediccin fija. Slo hay dos alternativas posibles para los esquemas de prediccin fija: la aproximacin de salto siempre no tomado y la de salto siempre tomado.salto siempre no_ tomada, para toda instruccin de salto cuya condicin no est resuelta se considera que lo ms probable es que no se produzca el salto. Por lo tanto, el procesador contina captando instrucciones por donde iba. salto siempre tomado, se considera que toda instruccin de salto condicional no resuelta da lugar a un salto, por lo que se empiezan a captar instrucciones a partir de la direccin de destino del salto, En previsin de que se pueda producir un error en la prediccin, se guarda el valor del contador de programa PC que apunta a la instruccin siguiente a la instruccin de salto condicional.

  • Esquemas de prediccin esttica. El presupuesto bsico de estos esquemas es que ciertos atributos de la instruccin de salto estn relacionados con la probabilidad de que dicha instruccin ocasione o no un salto. Por tanto, la prediccin se hace sobre la base de dichos atributos. Se habla de prediccin esttica porque se trata de caractersticas que no cambian al ejecutar el cdigo. Algunos ejemplos de esquemas de prediccin esttica son los siguientes:Prediccin basada en el cdigo de operacin: segn el tipo de instruccin de salto condicional se considero ms probable que se produce el salto o que no. Este tipo de esquemas se utiliza en el MC88110 (1993) y en el PowerPC (1993).

  • Prediccin 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 instruccin de salto) se predice, usualmente, que el salto no se producir, y si el desplazamiento es negativo (salto hacia atrs) se predice, usualmente, que el salto se producir. En los procesadores Alpha 21064 (1992) y PowerPC 603 (1993) se utiliza . este esquema de prediccin.

    Prediccin dirigida por el compilador: a travs de una serie de bits que existen en las instrucciones de salto (bits de prediccin), el compilador puede fijar Ia prediccin que se va a realizar para la instruccin. Para fijar esos bits el compilador puede tener en cuenta resultados obtenidos a partir de ejecucin de trazas del programa que indiquen qu tipo de comportamiento es el ms probable para cada instruccin de salto. Entre los procesadores que implementan esta posibilidad estn el PowerPC 603 (1993) y el PA8000 (1996).

  • Esquemas reprediccin dinmica se pretende utilizar el comportamiento observado de salto/no salto de cada instruccin de salto condicional, para establecer la prediccin a realizar cuando esa instruccin vuelva a captarse. El presupuesto bsico de la prediccin dinmica es que lo ms probable es que el resultado de salto/no salto de una instruccin sea similar al que se tuvo en las ejecuciones pasadas de dicha instruccin (en la anterior o en las n ejecuciones anteriores). En este esquema, para cada instruccin de salto condicional debe guardarse algn tipo de informacin que condense el comportamiento pasado y permita realizar la prediccin.

    Comparado con la prediccin fija y la prediccin esttica, este esquema es el que suele presentar las mejores prestaciones, a costa de una implementacin ms costosa. A su vez, los esquemas de prediccin dinmica se pueden clasificar en funcin de la forma de almacenar el comportamiento pasado de la instruccin de salto. As, se habla de:

  • Prediccin dinmica implcita: Se almacena nicamente la direccin de la instruccin que se ejecut tras la instruccin de salto la ltima vez que se capt esta. La direccin puede ser la direccin de destino del salto, lo que equivale a predecir que se produce el salto, o bien la direccin de la instruccin siguiente a la de salto, con lo que se predice que el salto no se produce. Prediccin dinmica explcita: para cada instruccin de salto condicional, existe un conjunto de bits que codifican la informacin relativa al comportamiento pasado de la instruccin en cuestin. Estos bits se denominan bits de historia. El nmero de bits de historia que se guardan para cada instruccin depende del tipo de esquema de prediccin dinmica explcita que se haga.