Sei sulla pagina 1di 37

ILP

Multiple-issue

Speculation

Static Multiple-issue

Organizacion de Computadores
Captulo II: Paralelismo a Nivel de
Instrucciones
Erika Rosas Olivos
erika.rosas@usach.cl
Departamento de Ingeniera Inform
atica
Universidad de Santiago de Chile

Primer Semestre 2014

Organizaci
on de Computadores

1 / 36

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 m
as

instrucciones.
Replicar componentes internos del computador para lanzar

m
ultiples instrucciones en cada etapa del pipeline.

Organizaci
on de Computadores

2 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Multiple issue
Esquema donde m
ultiples instrucciones son lanzadas en un ciclo de
reloj.
CPI puede ser menor a 1.
M
etrica IPC (Instructions per clock cycle).
Ej. un microprocesador de 4GHz con un multiple issue de 4

instrucciones puede ejecutar un maximo de 16 billones de


instrucciones por segundo. IPC es 4 y CPI 0.25.
Actualmente se intenta de 3 a 6 instrucciones por ciclo de

reloj.

Organizaci
on de Computadores

3 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Multiple issue
Hay dos formas principales de implementar procesadores de
multiple-issue.
La diferencia principal es la divisi
on de trabajo entre el compilador
y el hardware.
Decisiones est
aticas, hechas por el compilador: Static

Multiple-issue.
Decisiones din
amicas, hechas durante la ejecucion: Dynamic

Multiple-issue.

Organizaci
on de Computadores

4 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Multiple issue
Problemas:
1

Las instrucciones deben ser empaquetadas: Cuantas? Cuales


se pueden empaquetar juntas?

Se debe lidiar con hazard de datos y de control.

Organizaci
on de Computadores

5 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

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

Organizaci
on de Computadores

6 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Especulacion
Tecnica donde el compilador o procesador adivina la salida de una
instruccion para removerla como una dependencia al ejecutar otras
instrucciones.
Especular sobre un branch, para que las instrucciones que le

siguen puedan ejecutarse antes.


Especular que un store que precede un load no se refiere a la

misma direccion. Lo que permitira ejecutar el load antes que


el store.

Organizaci
on de Computadores

7 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Especulacion
La especulaci
on puede fallar.
M
etodo para chequear is la especulaci
on fue correcta.
M
etodo para retractar los efectos de las instrucciones

ejecutadas de manera especulativa.


Especulaci
on puede hacerse a nivel del compilador o del

hardware.

Organizaci
on de Computadores

8 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Especulacion
Compilador: se insertan otras instrucciones para chequear

validez, con una rutina para arreglar en caso de falla.


Hardware: Los resultados especulados son almacenados en un

buffer y el contenido escrito cuando se verifique que la


especulacion es correcta.
Se pueden introducir excepciones.

Organizaci
on de Computadores

9 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Very Long Instruction Word


Issue packet
Conjunto de instrucciones que pueden ser emitidas juntas en un
ciclo de reloj, el paquete puede ser determinado estaticamente por
el compilador o dinamicamente por el procesador.

VLIW
Un estilo de arquitectura de conjunto de instrucciones que lanza
muchas operaciones que son definidas independientes en una sola instruccion larga, generalmente con muchos campos de opcode
separados.

Organizaci
on de Computadores

10 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Simple multiple issue code scheduling


Simple two-issue MIPS processor

Organizaci
on de Computadores

11 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Simple multiple issue code scheduling

Organizaci
on de Computadores

12 / 36

ILP

Multiple-issue

Organizaci
on de Computadores

Speculation

Static Multiple-issue

13 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Code Scheduling
Loop:

lw
addu
sw
addi
bne

Organizaci
on de Computadores

$t0,
$t0,
$t0,
$s1,
$s1,

0($s1)
$t0, $s2
0($s1)
$s1, -4
$zero, Loop

14 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Code Scheduling
Loop:

lw
addu
sw
addi
bne

$t0,
$t0,
$t0,
$s1,
$s1,

0($s1)
$t0, $s2
0($s1)
$s1, -4
$zero, Loop

Reordenar

Organizaci
on de Computadores

14 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Loop unrolling for Multiple-issue pipelines


Tecnica para obtener mejor rendimiento de loops que acceden arreglos en los cuales m
ultiples copias del cuerpo del loop son hechas e
instrucciones de distintas iteraciones son planificadas juntas.

Organizaci
on de Computadores

15 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Loop unrolling for Multiple-issue pipelines


4 copias de cada instrucci
on.
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 entre


instrucciones).

Organizaci
on de Computadores

16 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Dynamic Multiple-issue Processors


Superscalar
Tecnica de pipeline avanzada que permite al procesador ejecutar
mas de una instruccion por ciclo de reloj seleccionandolo durante la
ejecucion.
Se garantiza por hardware la ejecuci
on correcta.

Organizaci
on de Computadores

17 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Dynamic pipeline scheduling


Divisi
on 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 una

operacion y hacerla visible en los registros y memoria (buffer


de reorden).

Organizaci
on de Computadores

18 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Dynamic pipeline scheduling

Organizaci
on de Computadores

19 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Orden instrucciones
Out-of-order execution
Una situacion de la ejecuci
on del pipeline cuando una instruccion
bloqueada no causa la espera de la instrucci
on siguiente.
In-Orden Commit
Un commit donde los resultados de la ejecuci
on en pipeline tiene un
estado visible en el mismo orden que las instrucciones son buscadas.

Organizaci
on de Computadores

20 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Power efficiency

Organizaci
on de Computadores

21 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

AMD Opteron X4 (Barcelona)


Traduce instrucciones en operaciones RISC (Rops) o

micro-operaciones.
Rops son ejecutadas en un pipeline planificado din
amicamente

y con especulacion.
Soporta hasta 3 Rops por ciclo de reloj.
Microarchitectura: La organizaci
on del procesador, incluyendo

las principales unidades funcionales, su interconeccion y


control.

Organizaci
on de Computadores

22 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

AMD Opteron X4 (Barcelona)

Organizaci
on de Computadores

23 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

AMD Opteron X4 (Barcelona)

Organizaci
on de Computadores

24 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

AMD Opteron X4 (Barcelona)

Organizaci
on de Computadores

25 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Performance
Problemas de rendimiento se dan por:
Uso de instrucciones que no se traduzcan en operaciones

RISC.
Branches que son difciles de predecir llevan a esperas y

reinicio cuando falla.


Dependencias largas, causadas tpicamente por instrucciones o

miss de cache que llevan a esperas.


Esperas que son causadas por acceso a memoria.

Organizaci
on de Computadores

26 / 36

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)
MULTD F4,F2,F0
LD F6, 0(R2)
ADDD F6,F4,F6
SD 0(R2),F6
ADDI R1,R1,8
ADDI R2,R2,8
SGTI R3,R1,done
BEQZ R3,foo

Organizaci
on de Computadores

;
;
;
;
;
;
;
;
;

load X[i]
multiplicar a*X[i]
load Y[i]
suma aX[i] + Y[i]
store Y[i]
incrementar
ndice X
incrementar
ndice Y
test si termino (R3 := (R1>done))
loop no terminado.

27 / 36

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, una
para suma y resta y otra para multiplicaci
on y divisi
on.

Instrucciones de punto flotante (FP) operan solo con registros de punto


flotante.

Despues de la decodificacion, las instrucciones FP son pasadas a una


rama 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 Write
Back para actualizar los registros de punto flotante. Los registros FP
pueden ser actualizados en el mismo ciclo que los registros de enteros.
Organizaci
on de Computadores

28 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Problema 1: Pipeline estatico


Muestre un diagrama de tiempo del loop. Cuantos ciclos de reloj
toma cada iteracion del loop?
Clock

LD
MULTD
LD
ADDD
SD
ADDI
ADDI
SGTI
BEQZ

IF

ID
IF

EX
ID
IF

M
stall
stall

WB
EX
ID
IF

10

EX
EX
ID
IF

EX
M
stall
stall

EX
WB
stall
stall

EX

WB

stall
stall

EX
ID
IF

11

12

EX
EX
ID
IF

WB
M
EX
ID
IF

13

14

M
EX
ID
IF

WB
M
EX
ID

13 ciclos hasta el siguiente loop.

Organizaci
on de Computadores

29 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Problema 1: Loop unrolling


Desenrollar el loop 3 veces. No reusar registros. Eliminar computaci
on
redundante.
foo: LD F2, 0(R1)
MULTD F4,F2,F0
LD F6, 0(R2)
ADDD F6,F4,F6
SD 0(R2),F6
LD F12, 8(R1)
MULTD F14,F12,F0
LD F16, 8(R2)
ADDD F16,F14,F16
SD 8(R2),F16
LD F22, 16(R1)
MULTD F24,F22,F0
LD F26, 16(R2)
ADDD F26,F24,F26
SD 16(R2),F26
ADDI R1,R1,24
ADDI R2,R2,24
SGTI R3,R1,done
BEQZ R3,foo

Organizaci
on de Computadores

; load X[i]
; multiplicar a*X[i]
; load Y[i]
; sumar aX[i] + Y[i]
; store Y[i]
; load X[i+1]
; multiplicar a*X[i+1]
; load Y[i+1]
; sumar aX[i+1] + Y[i+1]
; store Y[i+1]
; load X[i+2]
; multiplicar a*X[i+2]
; load Y[i+2]
; sumar aX[i+1] + Y[i+1]
; store Y[i+1]
; incrementar
ndice X para las 3 iteraciones
; incrementar
ndice Y para las 3 iteraciones
; test si terminado (R3 := (R1>done))
; loop no terminado.

30 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Problema 1: Loop unrolling


Cada loop toma 3 10 + 4 = 34, en promedio 11,33 ciclos por
iteracion original.
Vea si puede modificar la secuencia de instrucciones para reducir el
n
umero de esperas (stall). Cuantos ciclos de reloj toma cada
iteracion?

Organizaci
on de Computadores

31 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Problema 1: Loop unrolling


foo: LD F2, 0(R1)
ADDI R1,R1,24
MULTD F4,F2,F0
LD F6, 0(R2)
ADDD F6,F4,F6
LD F12, -16(R1)
SD 0(R2),F6
MULTD F14,F12,F0
LD F16, 8(R2)
ADDD F16,F14,F16
LD F22, -8(R1)
SD 8(R2),F16
MULTD F24,F22,F0
LD F26, 16(R2)
ADDD F26,F24,F26
ADDI R2,R2,24
SD -8(R2),F26
SGTI R3,R1,done
BEQZ R3,foo

;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;

Hecho en el tiempo del stall. Ajustar direcciones.

Direcciones ajustadas. Swap entre LD y SD.


2 stalls, asumiendo que la memoria toma 1 ciclo

Direcciones ajustadas. Swap entre LD y SD.

Hecho en el tiempo del stall de ADDD


Direcciones ajustadas

Promedio de 8.67 ciclos por iteraci


on. Todava se pueden eliminar m
as stall,
con m
as unrolling se pueden eliminar los innecesarios. Los que son hazard
estructurales pueden eliminarse al adicionar m
as unidades funcionales.

Organizaci
on de Computadores

32 / 36

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];
... inicializaci
on arreglos...
for(int i = 0; i > N; i++)
C[i] = A[i] + B[i];
D[i] = A[i] * C[i];

Organizaci
on de Computadores

33 / 36

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)
flw $b, B($i)
fadd $c, $a, $b
fmul $d, $a, $c
fsw $c, C($i)
fsw $d, D($i)
addi $i, $i, 4
addi $n, $n, -1
bnez $n, loop

Organizaci
on de Computadores

#load word para FP


#sumar word FP
#multiplicar word FP
#store word para FP

34 / 36

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 Multiplicaci
on

2 ALU con 1 ciclo de latencia (branch tambi


en).
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 de


registros, agregar o quitar instrucciones y finalmente empaquetarlas
en instrucciones de tipo VLIW.

Organizaci
on de Computadores

35 / 36

ILP

Multiple-issue

Speculation

Static Multiple-issue

Problema 2: Planificacion en maquinas VLIW


Clock

Int1

Int2

1
2
3
4
5
6
7
8
9
10
11
12
13
14

addi $n

addi $i

Mem1

Mem2

flw $a0
flw $a1

flw $b0
flw $b1

FP Sum

FP Mult

fadd $c0
fadd $c1

fsw $c0
fsw $c1

add $n
addi $i

Organizaci
on de Computadores

bnez (ins2)

fmul $d0
fmul $d1

fsw $d0
fsw $d1

36 / 36

Potrebbero piacerti anche