37
ILP Multiple-issue Speculation Static Multiple-issue Organizaci´ on de Computadores Cap´ ıtulo II: Paralelismo a Nivel de Instrucciones Erika Rosas Olivos [email protected] Departamento de Ingenier´ ıa Inform´ atica Universidad de Santiago de Chile Primer Semestre 2014 Organizaci´on de Computadores 1 / 36

Paralelismo a Nivel de Instrucciones

Embed Size (px)

DESCRIPTION

apunte sobre paralelismo a nivel de instrucciones

Citation preview

Page 1: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Organizacion de ComputadoresCapıtulo II: Paralelismo a Nivel de

Instrucciones

Erika Rosas [email protected]

Departamento de Ingenierıa InformaticaUniversidad de Santiago de Chile

Primer Semestre 2014

Organizacion de Computadores 1 / 36

Page 2: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Paralelismo a nivel de instrucciones

• Pipeline explota el paralelismo a nivel de instrucciones (ILP).

• Incrementar la profundidad del pipeline para traslapar masinstrucciones.

• Replicar componentes internos del computador para lanzarmultiples instrucciones en cada etapa del pipeline.

Organizacion de Computadores 2 / 36

Page 3: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Multiple issue

Esquema donde multiples instrucciones son lanzadas en un ciclo dereloj.

• CPI puede ser menor a 1.

• Metrica IPC (Instructions per clock cycle).

• Ej. un microprocesador de 4GHz con un multiple issue de 4instrucciones puede ejecutar un maximo de 16 billones deinstrucciones por segundo. IPC es 4 y CPI 0.25.

• Actualmente se intenta de 3 a 6 instrucciones por ciclo dereloj.

Organizacion de Computadores 3 / 36

Page 4: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Multiple issue

Hay dos formas principales de implementar procesadores demultiple-issue.La diferencia principal es la division de trabajo entre el compiladory el hardware.

• Decisiones estaticas, hechas por el compilador: StaticMultiple-issue.

• Decisiones dinamicas, hechas durante la ejecucion: DynamicMultiple-issue.

Organizacion de Computadores 4 / 36

Page 5: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Multiple issue

Problemas:

1 Las instrucciones deben ser empaquetadas: Cuantas? Cualesse pueden empaquetar juntas?

2 Se debe lidiar con hazard de datos y de control.

Organizacion de Computadores 5 / 36

Page 6: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Issue slots

Issue slots se llama a las posiciones desde las cuales lasinstrucciones pueden emitirse en un ciclo de reloj dado.

Organizacion de Computadores 6 / 36

Page 7: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Especulacion

Tecnica donde el compilador o procesador adivina la salida de unainstruccion para removerla como una dependencia al ejecutar otrasinstrucciones.

• Especular sobre un branch, para que las instrucciones que lesiguen puedan ejecutarse antes.

• Especular que un store que precede un load no se refiere a lamisma direccion. Lo que permitirıa ejecutar el load antes queel store.

Organizacion de Computadores 7 / 36

Page 8: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Especulacion

• La especulacion puede fallar.

• Metodo para chequear is la especulacion fue correcta.

• Metodo para retractar los efectos de las instruccionesejecutadas de manera especulativa.

• Especulacion puede hacerse a nivel del compilador o delhardware.

Organizacion de Computadores 8 / 36

Page 9: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Especulacion

• Compilador: se insertan otras instrucciones para chequearvalidez, con una rutina para arreglar en caso de falla.

• Hardware: Los resultados especulados son almacenados en unbuffer y el contenido escrito cuando se verifique que laespeculacion es correcta.

• Se pueden introducir excepciones.

Organizacion de Computadores 9 / 36

Page 10: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Very Long Instruction Word

Issue packet

Conjunto de instrucciones que pueden ser emitidas juntas en unciclo de reloj, el paquete puede ser determinado estaticamente porel compilador o dinamicamente por el procesador.

VLIW

Un estilo de arquitectura de conjunto de instrucciones que lanzamuchas operaciones que son definidas independientes en una so-la instruccion larga, generalmente con muchos campos de opcodeseparados.

Organizacion de Computadores 10 / 36

Page 11: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Simple multiple issue code scheduling

Simple two-issue MIPS processor

Organizacion de Computadores 11 / 36

Page 12: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Simple multiple issue code scheduling

Organizacion de Computadores 12 / 36

Page 13: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Organizacion de Computadores 13 / 36

Page 14: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Code SchedulingLoop: lw $t0, 0($s1)

addu $t0, $t0, $s2

sw $t0, 0($s1)

addi $s1, $s1, -4

bne $s1, $zero, Loop

Reordenar

Organizacion de Computadores 14 / 36

Page 15: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Code SchedulingLoop: lw $t0, 0($s1)

addu $t0, $t0, $s2

sw $t0, 0($s1)

addi $s1, $s1, -4

bne $s1, $zero, LoopReordenar

Organizacion de Computadores 14 / 36

Page 16: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Loop unrolling for Multiple-issue pipelines

Tecnica para obtener mejor rendimiento de loops que acceden arre-glos en los cuales multiples copias del cuerpo del loop son hechas einstrucciones de distintas iteraciones son planificadas juntas.

Organizacion de Computadores 15 / 36

Page 17: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Loop unrolling for Multiple-issue pipelines

• 4 copias de cada instruccion.• Renombrar registros ($t1, $t2, $t3) para eliminar

dependencias de nombre.• Dependencia de nombre o antidependencia: Orden forzado

por rehusar un nombre de un registro (no hay flujo real entreinstrucciones).

Organizacion de Computadores 16 / 36

Page 18: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Dynamic Multiple-issue Processors

Superscalar

Tecnica de pipeline avanzada que permite al procesador ejecutarmas de una instruccion por ciclo de reloj seleccionandolo durante laejecucion.

• Se garantiza por hardware la ejecucion correcta.

Organizacion de Computadores 17 / 36

Page 19: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Dynamic pipeline scheduling

• Division 3 unidades: Instruction Fetch and Issue Unit,Unidades Funcionales (12 o mas), y una unidad de Commit.

• Cada unidad funcional tiene buffers.

• Unidad de Commit: Decide si es seguro el resultado de unaoperacion y hacerla visible en los registros y memoria (bufferde reorden).

Organizacion de Computadores 18 / 36

Page 20: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Dynamic pipeline scheduling

Organizacion de Computadores 19 / 36

Page 21: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Orden instrucciones

Out-of-order execution

Una situacion de la ejecucion del pipeline cuando una instruccionbloqueada no causa la espera de la instruccion siguiente.

In-Orden Commit

Un commit donde los resultados de la ejecucion en pipeline tiene unestado visible en el mismo orden que las instrucciones son buscadas.

Organizacion de Computadores 20 / 36

Page 22: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Power efficiency

Organizacion de Computadores 21 / 36

Page 23: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

AMD Opteron X4 (Barcelona)

• Traduce instrucciones en operaciones RISC (Rops) omicro-operaciones.

• Rops son ejecutadas en un pipeline planificado dinamicamentey con especulacion.

• Soporta hasta 3 Rops por ciclo de reloj.

• Microarchitectura: La organizacion del procesador, incluyendolas principales unidades funcionales, su interconeccion ycontrol.

Organizacion de Computadores 22 / 36

Page 24: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

AMD Opteron X4 (Barcelona)

Organizacion de Computadores 23 / 36

Page 25: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

AMD Opteron X4 (Barcelona)

Organizacion de Computadores 24 / 36

Page 26: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

AMD Opteron X4 (Barcelona)

Organizacion de Computadores 25 / 36

Page 27: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Performance

Problemas de rendimiento se dan por:

• Uso de instrucciones que no se traduzcan en operacionesRISC.

• Branches que son difıciles de predecir llevan a esperas yreinicio cuando falla.

• Dependencias largas, causadas tıpicamente por instrucciones omiss de cache que llevan a esperas.

• Esperas que son causadas por acceso a memoria.

Organizacion de Computadores 26 / 36

Page 28: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Problema 1

Codigo C:

for i:=1 to 100

Y[i]:=a*X[i]+Y[i];

Ejemplo DAXPY Double-precision aX plus Y:

foo: LD F2, 0(R1) ; load X[i]

MULTD F4,F2,F0 ; multiplicar a*X[i]

LD F6, 0(R2) ; load Y[i]

ADDD F6,F4,F6 ; suma aX[i] + Y[i]

SD 0(R2),F6 ; store Y[i]

ADDI R1,R1,8 ; incrementar ındice X

ADDI R2,R2,8 ; incrementar ındice Y

SGTI R3,R1,done ; test si termino (R3 := (R1>done))

BEQZ R3,foo ; loop no terminado.

Organizacion de Computadores 27 / 36

Page 29: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Problema 1

Supuestos:

• Operaciones con enteros se completan en un ciclo de reloj.

• No hay esperas por el sistema de memoria.

• No hay esperas por branch.

• Sumas de FP toman 2 ciclos, multiplicaciones FP toman 5 ciclos,divisiones FP toman 19 ciclos.

• Asumir forwarding.

Considerar pipeline de 5 etapas de enteros con unidad de punto flotante, unapara suma y resta y otra para multiplicacion y division.

• Instrucciones de punto flotante (FP) operan solo con registros de puntoflotante.

• Despues de la decodificacion, las instrucciones FP son pasadas a unarama separada del pipeline que maneja solo aritmetica de punto flotante(no accesos a memoria).

• Despues de la ejecucion, las instrucciones FP tienen una etapa de WriteBack para actualizar los registros de punto flotante. Los registros FPpueden ser actualizados en el mismo ciclo que los registros de enteros.

Organizacion de Computadores 28 / 36

Page 30: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Problema 1: Pipeline estatico

Muestre un diagrama de tiempo del loop. ¿Cuantos ciclos de relojtoma cada iteracion del loop?

Clock 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

LD IF ID EX M WBMULTD IF ID stall EX EX EX EX EX WB

LD IF stall ID EX M WBADDD IF ID stall stall stall EX EX WB

SD IF stall stall stall ID EX MADDI IF ID EX M WBADDI IF ID EX M WBSGTI IF ID EX M WBBEQZ IF ID EX M WB

13 ciclos hasta el siguiente loop.

Organizacion de Computadores 29 / 36

Page 31: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Problema 1: Loop unrolling

Desenrollar el loop 3 veces. No reusar registros. Eliminar computacion

redundante.foo: LD F2, 0(R1) ; load X[i]

MULTD F4,F2,F0 ; multiplicar a*X[i]

LD F6, 0(R2) ; load Y[i]

ADDD F6,F4,F6 ; sumar aX[i] + Y[i]

SD 0(R2),F6 ; store Y[i]

LD F12, 8(R1) ; load X[i+1]

MULTD F14,F12,F0 ; multiplicar a*X[i+1]

LD F16, 8(R2) ; load Y[i+1]

ADDD F16,F14,F16 ; sumar aX[i+1] + Y[i+1]

SD 8(R2),F16 ; store Y[i+1]

LD F22, 16(R1) ; load X[i+2]

MULTD F24,F22,F0 ; multiplicar a*X[i+2]

LD F26, 16(R2) ; load Y[i+2]

ADDD F26,F24,F26 ; sumar aX[i+1] + Y[i+1]

SD 16(R2),F26 ; store Y[i+1]

ADDI R1,R1,24 ; incrementar ındice X para las 3 iteraciones

ADDI R2,R2,24 ; incrementar ındice Y para las 3 iteraciones

SGTI R3,R1,done ; test si terminado (R3 := (R1>done))

BEQZ R3,foo ; loop no terminado.

Organizacion de Computadores 30 / 36

Page 32: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Problema 1: Loop unrolling

Cada loop toma 3× 10 + 4 = 34, en promedio 11,33 ciclos poriteracion original.Vea si puede modificar la secuencia de instrucciones para reducir elnumero de esperas (stall). ¿Cuantos ciclos de reloj toma cadaiteracion?

Organizacion de Computadores 31 / 36

Page 33: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Problema 1: Loop unrollingfoo: LD F2, 0(R1) ;

ADDI R1,R1,24 ; Hecho en el tiempo del stall. Ajustar direcciones.

MULTD F4,F2,F0 ;

LD F6, 0(R2) ;

ADDD F6,F4,F6 ;

LD F12, -16(R1) ; Direcciones ajustadas. Swap entre LD y SD.

SD 0(R2),F6 ; 2 stalls, asumiendo que la memoria toma 1 ciclo

MULTD F14,F12,F0 ;

LD F16, 8(R2) ;

ADDD F16,F14,F16 ;

LD F22, -8(R1) ; Direcciones ajustadas. Swap entre LD y SD.

SD 8(R2),F16 ;

MULTD F24,F22,F0 ;

LD F26, 16(R2) ;

ADDD F26,F24,F26 ;

ADDI R2,R2,24 ; Hecho en el tiempo del stall de ADDD

SD -8(R2),F26 ; Direcciones ajustadas

SGTI R3,R1,done ;

BEQZ R3,foo ;

Promedio de 8.67 ciclos por iteracion. Todavıa se pueden eliminar mas stall,

con mas unrolling se pueden eliminar los innecesarios. Los que son hazard

estructurales pueden eliminarse al adicionar mas unidades funcionales.

Organizacion de Computadores 32 / 36

Page 34: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Problema 2: Planificacion en maquinas VLIW

Codigo C:

#define N 1024

float A[N], B[N], C[N], D[N];

... inicializacion arreglos...

for(int i = 0; i > N; i++)

C[i] = A[i] + B[i];

D[i] = A[i] * C[i];

Organizacion de Computadores 33 / 36

Page 35: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Problema 2: Planificacion en maquinas VLIW

Traduccion:

addi $n, $0, 1024

addi $i, $0, 0

loop:

flw $a, A($i) #load word para FP

flw $b, B($i)

fadd $c, $a, $b #sumar word FP

fmul $d, $a, $c #multiplicar word FP

fsw $c, C($i) #store word para FP

fsw $d, D($i)

addi $i, $i, 4

addi $n, $n, -1

bnez $n, loop

Organizacion de Computadores 34 / 36

Page 36: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Problema 2: Planificacion en maquinas VLIW

Maquina VLIW:Int Op1 Int Op 2 Mem Op 1 Mem Op 2 FP Suma FP Multiplicacion

• 2 ALU con 1 ciclo de latencia (branch tambien).

• 2 unidades de memoria, con 3 ciclos de latencia, con pipeline.

• 2 unidades para FP, con 4 ciclos de latencia, con pipeline.

Aplicar loop unrolling una vez, reordenamiento, renombramiento deregistros, agregar o quitar instrucciones y finalmente empaquetarlasen instrucciones de tipo VLIW.

Organizacion de Computadores 35 / 36

Page 37: Paralelismo a Nivel de Instrucciones

ILP Multiple-issue Speculation Static Multiple-issue

Problema 2: Planificacion en maquinas VLIWClock Int1 Int2 Mem1 Mem2 FP Sum FP Mult

1 addi $n addi $i

2 flw $a0 flw $b0

3 flw $a1 flw $b1

4

5 fadd $c0

6 fadd $c1

7

8

9 fsw $c0 fmul $d0

10 fsw $c1 fmul $d1

11

12

13 add $n fsw $d0

14 addi $i bnez (ins2) fsw $d1

Organizacion de Computadores 36 / 36