Вы находитесь на странице: 1из 19

ARQUITECTURA Y ORGANIZACIN DE COMPUTADORAS

Tema 4:Introduccin al paralelismo a nivel de instruccin

Paralelismo a nivel de instruccin (ILP)

Al paralelismo potencial que introduce la segmentacin se le denomina paralelismo a nivel de instruccin (Instruction-level Parallelism) Para mejorar el nivel de ILP existen dos estrategias:

Aumentar la profundidad del pipeline ( mas etapas) Replicar componentes en cada etapa de forma que se puedan ejecutar mltiples instrucciones dentro de cada etapa. A esta tcnica se la llama ejecucin mltiple (multiple issue). El inconveniente de esta tcnica es la necesidad de un trabajo adicional para mantener ocupadas todas las unidades y para transferir los trabajos entre etapas.
AOC. 2 ING. INFORMATICA

Paralelismo a nivel de instruccin

Si ejecuta mas de una instruccin por etapa tenemos que la frecuencia de instrucciones ejecutadas puede ser mayor que la frecuencia del reloj. O sea que CPI <1 Tambin se usa como medida las instrucciones por ciclo IPC. Por ejemplo un procesador con ejecucin mltiple de hasta 4 instrucciones por etapa que funciona a 4 GHz podr ejecutar 16.10**9 instrucciones/seg con CPI = 0,25 e IPC = 4. Si tiene 5 etapas, el procesador tendr 20 instrucciones ejecutndose Lo normal es que existan restricciones sobre el tipo de instrucciones que se pueden ejecutar a la vez
3 AOC. 2 ING. INFORMATICA

Implementacin de la ejecucin mltiple

Ejecucin mltiple con planificacin esttica (static multiple issue): estrategia de implementacin de un procesador con ejecucin mltiple en la que el compilador toma muchas decisiones antes de la ejecucin del programa Ejecucin mltiple con planificacin dinmica (dynamic multiple issue) : estrategia de implementacin de un procesador con ejecucin mltiple en la que el propio procesador toma muchas decisiones durante la ejecucin del programa

AOC. 2 ING. INFORMATICA

Tareas principales

Un pipeline con ejecucin mltiple debe responsabilizarse de dos tareas principales:


Empaquetar instrucciones en ranuras de ejecucin (issue slots) Gestionar los riesgos de datos y de control

Ranuras de ejecucin son las posiciones desde las que las instrucciones pueden ser enviadas a ejecutar en cada ciclo de reloj El compilador o el hardware ( o ambos) tienen que gestionar qu y cuntas instrucciones se pueden lanzar en cada ciclo de reloj.
5 AOC. 2 ING. INFORMATICA

Especulacin

Es una estrategia utilizada para predecir el resultado de una instruccin y de ese modo poder eliminar la dependencia que esa instruccin genera en la ejecucin de otras instrucciones. Ejemplos:

El resultado de una instruccin de salto Que una instruccin de almacenamiento que precede a una de carga no hace referencia a la misma direccin y por tanto pueden invertir el orden de ejecucin

Puede ser errnea: lo que implica la necesidad de verificar si fue correcta y mtodos para deshacer los efectos de las instrucciones ejecutadas especulativamente.
6 AOC. 2 ING. INFORMATICA

Quin decide la especulacin?


El compilador ( reordenando instrucciones ) El hardware en tiempo de ejecucin. La recuperacin del estado anterior a una especulacin errnea depende del mtodo empleado. En el caso del hardware los resultados especulativos se guardan en buffer hasta comprobar que son vlidos, entonces se copian en registros, en caso contrario se descartan y se vuelven a ejecutar las instrucciones En caso del compilador se insertan instrucciones adicionales para verificar la validad de lo especulado y se proporcionan rutinas para el caso de fallo.
7 AOC. 2 ING. INFORMATICA

La especulacin y las excepciones


Como consecuencia de la especulacin pueden aparecer excepciones que antes no existan. Por ejemplo : una carga adelantada puede generar una excepcin de direccin no vlida en caso de fallo de especulacin. Aparece un excepcin que no debera haberse producido. La solucin es ignorar las excepciones hasta comprobar si la especulacin es cierta, entonces se recuperan las excepciones . La especulacin es una tcnica arriesgada, puede mejorar o empeorar el rendimiento de una mquina.
8 AOC. 2 ING. INFORMATICA

Ejecucin mltiple con planificacin esttica.


Estrategia VLIW ( Very long instruction word). Consiste en interpretar que el conjunto de instrucciones que comienzan en un ciclo de reloj (llamadas paquete de instruccin) son una instruccin larga con mltiples operaciones. El procesador restringe las combinaciones de instrucciones que pueden ser iniciadas en un ciclo. El compilador gestiona los riesgos de control mediante prediccin esttica de saltos y los riesgos de datos mediante reordenacin del cdigo.
9 AOC. 2 ING. INFORMATICA

Ejemplo MIPS bsico

Procesador MIPS con 5 etapas de segmentacin y capaz de ejecutar dos instrucciones por ciclo.

Paquete de ejecucin:

Una instruccin aritmtica de salto Una instruccin de carga almacenamiento

Se necesita que pueda buscar y decodificar 64 bits ( 2 instrucciones por ciclo) La pareja de instrucciones tiene que estar alineada en bloques de 64 bits. La instruccin aritmtica o de salto precede a la de memoria. Si una de las instrucciones no se puede utilizar se sustituye por una instruccin nop.
AOC. 2 ING. INFORMATICA

10

Modificaciones del camino de datos

Para evitar riesgos estructurales necesitamos:


La memoria de instrucciones tiene que leer 64 bits El banco de registros debe disponer de dos puertos de lectura y de uno de escritura adicionales (Total 4 de lectura y 2 de escritura) En la etapa EX necesitamos una ALU adicional para el clculo de direcciones Los registros de segmentacin tienen que adecuarse a los nuevos valores.

11

AOC. 2 ING. INFORMATICA

Camino de datos modificado

12

AOC. 2 ING. INFORMATICA

Funcionamiento del pipeline

13

AOC. 2 ING. INFORMATICA

Gestin de riesgos

Los bloqueos afectan a todo el paquete de instruccin. Los riesgos de datos se resuelven con la inclusin de instrucciones de nop Las tcnicas de gestin tienen que ser mas agresivas para no disminuir el rendimiento. Ejemplo:

14

Antes una instruccin de carga tiene una latencia de 1 ciclo Ahora la latencia no cambia pero afecta al siguiente paquete de instruccin entero, o sea a dos instrucciones. Antes las instrucciones ALU tenan latencia cero Ahora afectan a la segunda instruccin del paquete
AOC. 2 ING. INFORMATICA

Ejemplo

lw $t0, 0($s1) addu $t0,$t0,$s2 sw $t0, 0($s1) addi $s1,$s1,-4 bne $s1,$zero, loop El programa suma un escalar almacenado en $s2 a un vector . Reordenar el cdigo para evitar el mximo nmero de bloqueos. Los saltos son predichos de modo que los riesgos de control los gestiona el hardware.
15 AOC. 2 ING. INFORMATICA

Sea el lazo: loop:

Ejemplo

Vemos que las tres primeras instrucciones tienen dependencias de datos

Los huecos vacos se rellenan con instrucciones nop Se tardan 4 ciclos por iteracin

CPI = 4/5 = 0,8 IPC= 5/4 = 1,25 El valor mximo de IPC sera 2.
AOC. 2 ING. INFORMATICA

16

Desenrollado de bucles

El compilador aplica esta tcnica para mejorar el rendimiento. Consiste en realizar mltiples copias del cuerpo del bucle. As se dispone de mas ILP para poder solapar la ejecucin de instrucciones que pertenecen a distintas iteraciones. Aplicamos esta tcnica al ejemplo anterior

Suponemos que N es mltiplo de 4

17

AOC. 2 ING. INFORMATICA

Desenrollado de bucles

Hacemos 4 copias del cuerpo del bucle Eliminamos las instrucciones no necesarias Nos quedan cuatro copias de lw, addu, sw y una copia de addi y bne Introducimos nuevos registros $t1, $t2, $t3 para evitar las dependencias de datos evitables o antidependencias A esta tcnica se la llama renombrado de registros

18

AOC. 2 ING. INFORMATICA

Desenrollado de bucles

Ahora tenemos CPI = 8/14 = 0,57 IPC = 14/8 = 1,75

19

AOC. 2 ING. INFORMATICA

Вам также может понравиться