Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada poryeferson sanchez Modificado hace 6 años
1
3.3.4. MANTENIMIENTO DE LA CONSISTENCIA. BUFFER DE REORDENAMIENTO TIENE LA FINALIDAD DE VER LA PROBLEMÁTICA DE LA FINALIZACIÓN ORDENADA O DESORDENADA DE INSTRUCCIONES EN EL MARCO DEL MANTENIMIENTO EN UN PROCESADOR SUPERESCALAR.
2
En el aprovechamiento del paralelismo de instrucciones se distingue: 1. Procesamiento de una Instrucción: Su paso por c/u de las etapas del cauce superescalar (desde que se capta hasta que se retira del cauce). - Final de la ejecución de la operación codificada en la instrucción : Se dispone de los resultados de las unidades funcionales, no se modifican registros. - Final del Procesamiento de una instrucción: Se completa la instrucción (complete o committ), se escriben los resultados de la operación en los registros
3
2. Ejecución de una instrucción: Su paso por las etapas del cauce, en las que la unidad funcional correspondiente realiza la operación codificada en la instrucción. Con el renombramiento y las estaciones de reserva se pueden emitir y ejecutar instrucciones desordenadamente evitando los problemas de los riesgos RAW, WAR, WAW. La actualización se realiza en la ultima etapa de cauce, denominada etapa de finalización o de retirada de instrucciones.
4
Se analiza la finalización de las instrucciones en el marco del mantenimiento de la consistencia secuencial de un programa en los procesadores superescalares el cual se refiere a : - El orden en que las instrucciones se completan. - El orden en que se accede a la memoria para leer (LOAD) o escribir (STORE)
5
LA CONSISTENCIA SECUENCIAL ES: El orden en que las instrucciones se completan El orden en que se accede a la memoria para leer (LOAD) o escribir (STORE) Debe existir consistencia entre el orden en que se completan las instrucciones y el orden secuencial que tiene en el código de programa Consistencia del procesador Es el orden en que se completan las instrucciones Débil: Las instrucciones se pueden completar desordenadamente siempre que no se vean afectadas las dependencias Deben detectarse y resolverse las dependencias Power1(1990) MC88110(1993) Fuerte: Las instrucciones deben completarse estrictamente en el orden en que están en el programa Se consigue mediante el uso de un ROB Power PC 620(1996) R10000(1995) Consistencia de la memoria Es el orden de los accesos a memoria Débil: Los accesos a memoria (Load/Store) pueden realizarse desordenadamente siempre que no afecten a las dependencias Deben detectarse y resolverse las dependencias de acceso a memoria MC88110(1993) R10000(1996) Fuerte: Los accesos a memoria deben realizarse estrictamente en el orden en que están en el programa Se consigue mediante el uso de un ROB Power PC(1993) E/S 9000(1992) Alternativas para la consistencia de memoria y de procesador Tendencias y prestaciones Tendencia Tipos de consistencia En el procesamiento de instrucciones
6
En el caso que no se sepa si las direcciones son iguales, y se hace un acceso a memoria se le llama Adelanto Especulativo En el caso que se confirme que son iguales se debe deshacer lo hecho, esto implica un coste o empeoramiento. La clave esta en que sea capaz de acertar con la especulación en la mayor parte de los casos.-CONSISTENCIA DE MEMORIA : UN ACCESO A MEMORIA, ES LEER LA MEMORIA, OSEA QUE LOS DATOS PASEN DE MEMORIA A REGISTROS DEL PROCESADOR (LOAD) O ESCRIBIR EN LA MEMORIA DATOS DEL REGISTRO DEL PROCESADOR (STORE), EL ACCESO A MEMORIA PUEDE SER CONSIDERABLE SI LA DIRECCIÓN A LA QUE SE ACCEDE NO ESTÁ EN CACHÉ Y HAY QUE ACCEDER A LA MEMORIA PRINCIPAL. Loop:Ld r1,0x1C(r2) Mul r1,r1,r6 St r1,0x1C(r2) Ld r3,0x2D(r2) Mul r3,r3,r6 St r3,0x2D(r2) Addi r2,r2,#1 Subi r4,r4,#1 Bnz r4,loop Desventajas de la consistencia fuerte seria que el STORE esperaría a la multiplicación, la 2da multiplicación también, etc. La consistencia débil hace que el 2do load adelante al primer store, mientras que se ejecute mult, se usan los buses de acceso a memoria para el load, dado que store espera a mult.
7
Distintas opciones de reordenamiento de instrucciones de acceso a memoria (LOADs y STOREs) para mejorar las prestaciones del procesador. Reorden debido a adelantos LOADs/STOREs STOREs adelantan a LOADs LOADs adelantan a STOREs No especulativos IBM 360/91 (1967) MC88110 (1993) Especulativos PowerPC 602 (1995) PowerPC 620 (1996) UltraSparc(1995) R10000(1995) Reorden en caso de faltas de cache LOADs adelantan a LOADs UltraSparc (1995) PowerPC 620 (1996) STOREs adelantan a STOREs
8
CONSISTENCIA DE PROCESADOR Y ROB Una vez que la operación codificada por una instrucción se ha ejecutado, la instrucción termina su procesamiento actualizando el correspondiente registro de la arquitectura y abandona el cauce. Como se ha visto, si se utiliza el renombramiento de registros para evitar los efectos de los riesgos WAW y WAR y aprovechar el máximo paralelismo entre instrucciones, al final de la ejecución de la operación, el resultado se hallará en una de las líneas de ese buffer.
9
CARACTERÍSTICAS DE UN ROB > El ROB es una estructura con un comportamiento sencillo, aunque no son simples los recursos hardware que precisaría su implementación eficaz. > El ROB permite ejecutar correctamente el procesamiento especulativo de las instrucciones de salto y las interrupciones, el ROB también se puede utilizar para implementar el renombramiento En el siguiente ejemplo se muestra : > Como el puntero de cabecera del buffer señala la siguiente posición libre y el puntero de cola a la siguiente instrucción que se retiraría del ROB cuando termine su procesamiento.
10
> Un ROB es un buffer circular en que, en cada uno de sus elementos o líneas, se va introduciendo información de las instrucciones con el mismo orden con el que dichas instrucciones han sido decodificadas. > Las instrucciones se introducen en el ROB en orden de programa estricto, marcándose como emitidas (i), en ejecución (x), o finalizada su ejecución (f), utilizando una de los campos de las líneas del ROB. > Una instrucción solo se pude retirar del ROB (y al retirarse se produce la actualización de los resultados que genera la instrucción en los registros, finalizando su procesamiento) si ha terminado la ejecución de la operación que codificaba (pasa a estar marcada con f).
12
SECUENCIA DE INSTRUCCIONES PARA ILUSTRAR CON UN EJEMPLO EL USO DEL ROB I1: mult r1,r2,r3 I2: st r1,0x1ca I3: add r1,r4,r3 I4: xor r1,r1,r3 Dependencias RAW: (I1, I2)( I3, I4) WAR: (I2, I3)( I2, I4) WAW: (I1, I3)( I1, I4)( I3, I4) I1: Se pueden empezar si se suponen disponibles r2 y r3 I2: Se pueden emitir a la unidad de almacenamiento para que empiece a ejecutarse cuando esté disponible r1. I3: Se puede empezar a ejecutar si se suponen disponibles r4 y r3 I4: Se emite a la estación de reserva de la ALU para esperar r1.
13
Secuencia de 4 instrucciones, se muestra el estado de las líneas de las estaciones de reserva en las que esperan las instrucciones I2 e I4 a que sus operandos estén disponibles. Estos operandos serán generados por las instrucciones I1 e I3, respectivamente. Que en el ciclo 7 se están ejecutando. Como se puede observar en la líneas correspondientes de las estaciones de reserva, los campos de operando cuyo bit de validez esta a 0 (es decir que no tienen datos validos) apuntan a las líneas del ROB donde se ha almacenado la instrucción I1, es decir la línea 3 (para I2), y la instrucción I3, es decir la línea 5 (para I4)
14
Evolución del ROB en el procesamiento de la secuencia de instrucciones
15
> Líneas del ROB : - Resg. dest: contiene el registro de la arquitectura en el que se va a escribir el resultado de la instrucción cuando se retire. - Unidad: codifica la unidad funcional donde se va a ejecutar la instrucción y se genera el resultado que se almacena en el campo resultado - ok: es el campo de bit de validez que indica si el contenido del campo resultado es valido o no. - Marca: permite determinar si la instrucción ha finalizado su ejecución y podría retirarse escribiendo sus resultados cuando todas las instrucciones que le anteceden en el ROB se hayan retirado
16
>La figura muestra varios ciclos de en la evolución del ROB, se supone que se pueden retirar del ROB 2 instrucciones por ciclo. >Esta característica determina el número máximo de instrucciones por ciclo que puede terminar el procesador (la velocidad pico del procesador podría estimarse a partir de este numero máximo de instrucciones multiplicado por la frecuencia del procesador) y depende de los recursos hardware que se disponga. >Es necesario que haya tantos puertos de escritura en el banco de registros como instrucciones pueden retirarse, y que cada una de esas instrucciones puede necesitar realizar una escritura en uno de los registros de la arquitectura.
17
PROCESAMIENTO DE LAS INSTRUCCIONES DE SALTO
18
> Hasta el momento se estudio problemas planteados por dependencia de datos RAW, WAR y WAW en procesamiento superescalar de instrucciones, donde cada etapa del cauce puede trabajar con mas de una instrucción por ciclo. > Esta sección se dedica al estudio del procesamiento eficiente de las instrucciones de salto de un procesador superescalar. > Un procesador superescalar, al ser un procesador segmentado también sufre una reducción de prestaciones considerable como consecuencia de los cambios en la secuencia de instrucciones que debe introducirse en el cauce cuando se produce un salto. Si cabe, el efecto de salto en los superescalares es todavía mas 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.
19
Detección de la instrucción de salto: cuanto antes se detecte que una instrucción es de salto antes puede empezar a procesarse como tal, por ejemplo iniciándose el calculo de la dirección de destino del salto lo mas pronto posible. De esta forma se puede reducir la posible penalización que ocasionan estas instrucciones si se produjese el salto. > Así si se identifica que una instrucción es de salto condicional en el momento de la captación, en lugar de esperar a la etapa de decodificación (procesador como el 80386 y el 60830) y se determina o se conoce la dirección de destino de salto en ese mismo ciclo de captación, en el siguiente ciclo se pueden empezar a captar instrucciones a partir de la dirección adecuada sin que exista penalización. > La etapa de pre-decodificación es útil para la detección rápida de la instrucción de salto.
20
1. Detección paralela: hay una etapa especifica para detectar instrucciones de salto que opera en paralelo con una etapa común de decodificación. Esta alternativa se usa en los procesadores alpha. 2. Detección anticipada: además de utilizarse la decodificación paralela, se usan las ultimas líneas de la cola de instrucciones captadas antes de que pasen a la unidad de decodificación. Lo usa el 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 (para eso pueden usa los bits de predecodificacion, como se indico antes), esta opción se usa en el PowerPC 640
22
Gestión de saltos condicionales no resueltos: si en el momento en que la instrucción de salto evalúa la condición de salto, esta no se ha terminado de evaluar todavía, se dice que el salto o la condición de salto no se ha resuelto. Para resolver este problema los procesadores superescalares suelen usar el procesamiento especulativo de salto.
23
Una vez que se ah detectado una instrucción de salto y se ha determinado la dirección de destino, interesa conocer cuanto antes si se verifica la condición de salto para empezar a captar lo más pronto posible las instrucciones desde la dirección de destino del salto, si finalmente hay que realizar el salto, y evitar que se introduzcan en el cauce instrucciones que no deben procesarse Esta técnica utilizada en las primeras arquitecturas RISC segmentadas, no es efectiva en el caso de los procesadores superescalares, como hemos indicado antes, dada la planificación dinámica de instrucciones que realiza el procesador.
24
Alternativas para la gestión de saltos condicionales no resueltos en procesadores superescalares. Bloqueo de procesamiento del salto: Es la primera alternativa consiste en bloquear la instrucción de salto, que no puede progresar en el cauce hasta que no se haya terminado de evaluar la condición. Procesamiento especulativo de los saltos: La segunda alternativa, es la mas frecuente en los procesadores superes calares y consiste en aplicar los principios del procesamiento especulativo a los saltos. Múltiples caminos: En este caso, cada vez que llega una instrucción de salto, el procesador empezaría a captar y procesar instrucciones de los dos caminos alternativos. Esta opción es la mas costosa en cuanto a demanda de recursos en el procesador.
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.