Académique Documents
Professionnel Documents
Culture Documents
Sistemas Computacionales
Ejecucin Secuencial de Instrucciones
Instrucciones se ejecutan en varias etapas
Lectura de instruccin
Decodificacin
Ejecucin de operacin
Escritura de resultados
Recursos ociosos
Ejecucin Secuencial de
Instrucciones
Lavanderia secuencial: mal negocio!!!
6 PM 7 8 9 10 11 12
Tiempo
O 30 40 20 30 40 20 30 40 20 30 40 20
r
d
A
e
n
B
L
a
v C
a
d
o D
Principios de pipelining
I1 A B C
Latencia = 360 ps
I2 A B C
I3 A B C
Throughput = 8.33 GOPS
Tiempo
Pipelining en detalle (1)
I1 A B C
I2 A B C
I3 A B C
Tiempo
0 120 240 360 480 600
j k
l
m
Pipelining en detalle (2)
j Tiempo = 239 (justo antes del flanco de subida del reloj en el tiempo 240ps)
100 ps 20 ps 100 ps 20 ps 100 ps 20 ps
Reloj
k Tiempo = 241 (justo despus del flanco de subida del reloj en el tiempo 240ps)
100 ps 20 ps 100 ps 20 ps 100 ps 20 ps
Reloj
l Tiempo = 300
100 ps 20 ps 100 ps 20 ps 100 ps 20 ps
Reloj
Reloj
I1 A B C
I2 A B C
Latencia = 510 ps
I3 A B C
Throughput = 5.88 GIPS
Time
Pipelining no uniforme
50 ps 20 ps 50 ps 20 ps 50 ps 20 ps 50 ps 20 ps 50 ps 20 ps 50 ps 20 ps
R R R R R R
Logica Logica Logica Logica Logica Logica
Comb. e Comb. e Comb. e Comb. e Comb. e Comb. e
g g g g g g
N 1
Tpipe 1 m 1
N
Pipeline con realimentacin
Dependencia de datos
Dependencia de control
La instruccin jne crea una
dependencia de control
R
Lgica combinacional e
g
OP1
OP2
OP3
Tiempo
Pipeline con realimentacin
Utilizando el ejemplo anterior con hardware con pipeline
de 3 etapas y realimentacin
I1 A B C Error! Resultado de I1
I2 A B C debe ser entrada a I2
I3 A B C
I4 A B C No se puede ir contra
Tiempo el tiempo!
Pipeline con realimentacin
Utilizando el ejemplo anterior con hardware con pipeline
de 3 etapas y realimentacin
Diagrama de tiempo
Para convertirlo
correctamente a un
sistema pipeline
tenemos que hacer que
el resultado de I1 sea la
entrada de I4
Procesador simple con pipeline
Execute (E)
Se usa la ALU para
Operaciones aritmticas entre registros
Clculo de direcciones efectivas
Memory (M)
Se accede a la memoria para lectura y/o escritura
de datos
Write-Back (W)
Se escribe en registros los resultados de
operaciones aritmticos datos ledos de memoria
Procesador simple con pipeline
Flujo de instrucciones
1 2 3 4 5 6 7 8 9
I1 F D E M W
I2 F D E M W
I3 F D E M W
I4 F D E M W
I5 F D E M W
Ciclo 5
W
I1
M
En un ciclo dado, hay 5 I2
instrucciones en ejecucin E
I3
Cada una en una etapa D
diferente I4
F
I5
Ejecucin sin control de pipeline
(pipeline hazards)
1 2 3 4 5 6 7 8 9 10 11
Cdigo prog 1 I1 F D E M W
I1: movl $10, %edx I2 F D E M W
I3 F D E M W
I2: movl $3, %eax
I4 F D E M W
I3: nop I5 F D E M W
I4: nop I6 F D E M W
I5: nop
Dependencia de
I6: addl %edx, %eax datos sin peligros
Ciclo 6
de datos debido a
Instruccin nop: no operation W los retrasos
Nuevo valor de %eax R[%eax] f 3 producidos por la
instruccin nop
disponible al final del ciclo 6
Ciclo 7
Etapa Writeback de I2
D
I3 lo necesita en el ciclo 7 R[%edx] = 10
Etapa Decode de I6 R[%eax] = 3
Ejecucin sin control de pipeline
(pipeline hazards)
1 2 3 4 5 6 7 8 9 10
Cdigo prog 2 I1 F D E M W
I1: movl $10, %edx I2 F D E M W
I3 F D E M W
I2: movl $3, %eax
I4 F D E M W
I3: nop I5 F D E M W
I4: nop
I5: addl %edx, %eax
Ciclo 6
Se elimina una instruccin nop W
Error! , peligro de datos R[%eax] f 3
Cdigo prog 3 I1 F D E M W
I2 F D E M W
I1: movl $10, %edx
I3 F D E M W
I2: movl $3, %eax I4 F D E M W
I3: nop
I4: addl %edx, %eax Ciclo 5
Error! Peligro de Datos W
Cdigo prog 4 I1 F D E M W
I1: movl $10, %edx I2 F D E M W
I3 F D E M W
I2: movl $3, %eax
I3: addl %edx, %eax
Error! Peligro de Datos Ciclo 4
Nuevo valor de %edx M
disponible al final del ciclo 5
Nuevo valor de %eax
E
disponible al final del ciclo 6
Valores necesarios en ciclo 4
Etapa Decode de I4 D
Error
R[%edx] = 0
R[%eax] = 0
Peligros en pipelines
(pipeline hazards)
Errores en pipelines son causados por peligros
de datos (data hazards) y peligros de control
(control hazards)
Peligros de datos
Instruccin modifica el estado del procesador
Estado es ledo por una instruccin siguiente
Estado del procesador
Registros
Flags de condicin
Memoria
Peligros en pipelines
(pipeline hazards)
Etapas en conflicto potencial
Registros
Ledos en etapa Decode
Escritos en etapa WriteBack
Flags de condicin
Escritos y ledos en etapa Execute por mov condicionales.
Ledos por jump condicional en el estado de Memoria.
Cuando un mov o jump condicional alcanza la etapa
Execute cualquier operacin anterior se habra ejecutado.
No generan peligros.
Peligros en pipelines
(pipeline hazards)
Etapas en conflicto potencial
Memoria
Memoria de datos es escrita y leda en etapa Memory
Memoria de instrucciones es leda en etapa Fetch
Evitando peligros en pipelines
Burbujas (stalling)
Redireccin (Forwarding)
Burbujas (Stalling)
1 2 3 4 5 6 7 8 9 10 11
Cdigo prog 2 I1 F D E M W
I1: movl $10, %edx I2 F D E M W
I2: movl $3, %eax I3 F D E M W
I3: nop I4 F D E M W
E M W
I4: nop
I5 F D D E M W
burbuja
I6 F F D E M W
I5: addl %edx, %eax
No hay problemas!
Se pierde un ciclo
En el ciclo decode se detecta el peligro de
datos
I5 repite etapa Decode 2 veces
I6 repite etapa Fetch 2 veces
Prog 3 con burbujas
1 2 3 4 5 6 7 8 9 10 11
Cdigo prog 3 I1 F D E M W
I2 F D E M W
I1: movl $10, %edx
I3 F D E M W
I2: movl $3, %eax E M W
I3: nop E M W
burbuja I4 F D D D E M W
burbuja I5 F F F D E M W
1 2 3 4 5 6 7 8 9 10 11
Cdigo prog 4 I1 F D E M W
I1: movl $10, %edx I2 F D E M W
I2: movl $3, %eax E M W
burbuja E M W
E M W
burbuja
I3 F D D D D E M W
burbuja
I4 F F F F D E M W
I3: addl %edx, %eax
No hay problemas!
Se pierden tres ciclos
I3 repite etapa Decode 4 veces
I4 repite etapa Fetch 4 veces
Redireccin (Forwarding)
I1 F D E M W
Cdigo prog 2 I2 F D E M W
I1: movl $10, %edx I3 F D E M W
I2: movl $3, %eax I4 F D E M W
I5 F D E M W
I3: nop
I6 F D E M W
I4: nop
I5: addl %edx, %eax Ciclo 6
W
En ciclo 6, detectar la escritura
Escribe $3 a registro %eax
pendiente al registro %eax, y
usar ese valor en vez de leer
%eax desde el banco de
registros D
Lee %edx del banco de registros
Lee valor pendiente de %eax
Forwarding y peligros de datos
Cdigo prog 5 I1 F D E M W
I1: movl $128, %edx I2 F D E M W
I3 F D E M W
I2: movl $3, %ecx
I4 F D E M W
I3: movl %ecx, 0(%edx) I5 F D E M W
I4: movl $10, %ebx I6 F D E M W
I5: movl 0(%edx), %eax
I6: addl %ebx, %eax Ciclo 7 Ciclo 8
En ciclo 7, se leen %ebx y %eax M
Cdigo prog 5 I1 F D E M W
I2 F D E M W
I1: movl $128, %edx
I3 F D E M W
I2: movl $3, %ecx I4 F D E M W
I3: movl %ecx, 0(%edx) I5 F D E M W
I4: movl $10, %ebx E M W
Combinacin de burbuja y W
Escribe $10 en %ebx
redireccin asegura la
ejecucin correcta
M
Lee desde memoria al
registro %eax
D
Lee valor pendiente de %eax
Lee valor pendiente de %edx
Prioridades de forwarding
1 2 3 4 5 6 7 8 9 10 11
I1 F D E M W
I2 F D E M W
I5 F D E M W
I6 F D E M W
I1: movl pila, %esp I7 F D E M W
I8 F D E M W
I2: call proc I3 F D E M W
I5: ret
burbuja
burbuja
burbuja
I3: movl $10, %edx
Pipeline instruccin ret
1 2 3 4 5 6 7 8 9 10 11
I1 F D E M W
I2 F D E M W
I1: movl pila, %esp I5 F D E M W
I2: call proc I6 F
D E M W
I5: ret I6 F
I6: movl %edx, %ebx D E M W
burbuja I6 F
D E M W
I6: movl %edx, %ebx I3 F D E M W
burbuja
I6: movl %edx, %ebx
burbuja
I3: movl $10, %edx
Peligros de control (II)
1 2 3 4 5 6 7 8 9 10
burbuja I3 F D E M W
I4 F D E M W
I3: movl $1, %edx
I4: halt
Anlisis de desempeo
Ci instrucciones y Cb burbujas
CPI=(Ci+Cb)/Ci
CPI = 1.0 + Cb/Ci