Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso 2010-2011
Contenidos
Introduccin: ILP Tcnicas SW: Compilador Planificacin dinmica. Algoritmo de Tomasulo. lan f cac n d nm ca. lgor tmo omasulo. Tratamiento de dependencias de control: Prediccin de saltos Tratamiento de saltos T i d l Tcnicas de prediccin: Estticas y dinmicas Especulacin Bibliografa
R1
AC Tema 4
Introduccin
OBJETIVO: Ejecutar el mayor numero de instrucciones por ciclo OBJETIVO
Obtener el mximo numero de instrucciones independientes
CPI = CPI ideal + Penaliz. Media por Instr. (paradas pipe)
Introduccin
Paralelismo a nivel de instruccin ILP
Es la tcnica consistente en explotar paralelismo entre instrucciones prximas en la secuencia El bloque bsico es muy pequeo
Un bloque bsico (BB) es una secuencia de cdigo sin saltos. Un solo punto de entrada y salida Solo de 4 a 7 instrucciones Fuertes dependencias entre ellas
El camino es explotar ILP entre varios BB l LP El caso ms simple: paralelismo a nivel de bucle
for ( i =1; i<=1000; i++) x (i) = x (i) + s ; p ( ) Todas las iteraciones son independientes (saltos)
AC Tema 4
Introduccin
Tcnicas para explotar ILP
Tcnica
Planificacin Dinmica Prediccin dinmica de saltos Lanzamiento mltiple m m p Varias instrucciones por ciclo Especulacin Dynamic memory disambiguation Desenrollado de bucles Planificacin por el compilador Pl ifi i l m il d Software pipelining R3 Prediccin esttica y Especulacin por el Compilador
Reduce
Paradas por riesgos de datos Paradas por riesgos de control CPI Ideal Riesgos de datos y control Paradas por riesgos de datos en memoria Paradas por riesgos de control Paradas por riesgos d d t s P d s i s s de datos CPI Ideal y Paradas por riesgos de datos CPI Ideal, paradas por riesgos de datos y control
Dinmicas
Estticas
AC Tema 4
Dependencias
D t Determinar l s dependencias es crtico para obtener el mximo i las d d i s s ti bt l i paralelismo Cules hay ? , A qu recursos afectan? C l h f t ?
Las d L dependencias son propias d l programas d de los o La presencia de una dependencia indica la posibilidad de aparicin de un riesgo, pero la aparicin de ste y la posible parada depende de las g p p p p p caractersticas del pipe o La dependencias Indican la posibilidad de un riesgo Determinan el orden de clculo de los resultados Imponen un lmite al paralelismo que es posible obtener
AC Tema 4
Dependencias
Tipos de Dependencias
R4
Dependencias de datos Dependencia verdadera (LDE) Dependencias de nombre - Antidependencia (EDL) -D Dependencia d salida (EDE) d i de lid Dependencias de control Dependencia verdadera (LDE)
o La instruccin i depende de j p
AC Tema 4
Diapositiva 7 R4 Desde siempre, aqu hay una inconsistencia con el Tema 2. All se llama depedencia de datos a las LDE, EDL y EDE, mientras que aqu se llama dependencias de datos slo a las LDE. Sugiero unificar la nomenclatura, tal como queda en la transparencia
Romn; 26/09/2007
Dependencias
Dependencias de nombre ( Reutilizacin de los registros )
o Dos instrucciones i y j donde i precede a j presentan dependencias de nombre en las siguientes situaciones: o Antidependencia WAR (EDL) La i t L instruccin j escribe ( Reg o memoria) antes d que i l i ib R i ) t de lea. ADDD F4,F0,F2 LD F0,-8(R1) o Dependencia de salida WAW (EDE) Las instrucciones i y j escriben el mismo reg. o memoria ADDD F4,F0,F2 SUBD F4,F3,F2 F4 F3 F2 ILP
y Dependencias de datos
o Los mecanismos de ejecucin deben preservar el orden del programa. Mismo resultado que en ejecucin secuencial o Explotar todo el paralelismo posible sin afectar al resultado de la ejecucin o Para las dependencias de nombre eliminar la dependencia usando otros nombres
AC Tema 4
F. Tirado / R. Hermida (2010-11) 8
Dependencias
Dependencias de control
o Cada instruccin depende de un conjunto de saltos y en general esta dependencia debe p j g p preservarse para preservar el orden del programa
If P1 ( S1; ); if P2 ( S2; )
S1 depende de P1 ; S2 depende de P2 Las d L dependencias d control pueden violarse. Se pueden ejecutar instrucciones no d de l d l d debidas si esto no afecta al resultado correcto del programa
AC Tema 4
Dependencias
Dependencias de control y Excepciones
o Comportamiento de excepciones se debe preservar. Cualquier cambio en el orden p p p q de ejecucin no debe cambiar como las excepciones son atendidas en la ejecucin. DADDU R2,R3,R4 BEQZ R2,L1 LW R1,0(R2) R1 0(R2) L1: ----o LW no se puede mover antes de BEQZ ( posible fallo de pagina )
Dependencias
El compilador se concentra en dependencias del programa no en riesgos programa, de un pipe determinado Dependencias de datos
Fciles de determinar para registros Difciles para direcciones de memoria Son l i S el mismo dato 100( R4 ) y 20( R6 )? d En dos iteraciones diferentes 20(R6) y 20(R6) son el mismo dato? Debe conocer dependencias entre load y stores para permitir su reordenacin Ms registros para evitar dependencias de nombre
Dependencias de control
En general: Una instruccin dependiente de un salto no puede moverse antes del salto Una instruccin no dependiente de un salto no puede moverse despus del salto Efecto de las dependencias de control sobre el orden de las excepciones y el flujo de datos
R5
Instruccin que usa el resultado FP ALU S ORE FP STORE F FP ALU STORE FP Entera
Latencia de uso 3 2 1 0 0
12
AC Tema 4
Diapositiva 12 R5 Utilizo el trmino "latencia de uso" por coherencia con los trminos usados en el Tema 2 y en los problemas
Romn; 26/09/2007
Ejecucin en el procesador E l d
Loop p LD Espera ADDD Espera Espera p SD SUBI Espera BNEZ Espera F0,0(R1) , ( ) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop , p Ciclo 1 2 3 4 5 6 7 8 9 10
AC Tema 4
13
(Imprescindible ??)
F. Tirado / R. Hermida (2010-11)
AC Tema 4
14
3.5 ciclos por iteracin Ms registros (Imprescindible !!) Mover SD despus de SUBI, valor de R1
El compilador planifica para minimizar los riesgos y eliminar l paradas d l i li i las d del pipe
AC Tema 4
F. Tirado / R. Hermida (2010-11) 15
S ft Software i li i pipelining
Idea: Si las diferentes iteraciones de un bucle son independientes, tomemos instrucciones de diferentes iteraciones para aumentar el ILP Reorganiza l b l d manera que cada i t R i los bucles de d instruccin pertenece a una i t iteracin diferente
Iteracin 1 Iteracin 2 Iteracin 3 Iteracin 4 Iteracin 5
Iteracin SW Pipelened
AC Tema 4
16
Loop unrolling simblico Maximiza la distancia resultado-uso Menor tamao del cdigo Llenado y vaciado del pipe solo una vez
Time
AC Tema 4
F. Tirado / R. Hermida (2010-11) 17
Comparacin
Loop Unrolling
Bloque grande para planificar Reduce el numero de saltos Incrementa el tamao del cdigo Tiene qu incluir iteraciones extra n que nc u r t rac on s tra Presin sobre el uso de registros
Software Pipelining
No hay dependencias en el cuerpo del bucle No reduce el numero de saltos Necesita inicio y finalizacin especial
AC Tema 4
19
La etapa ID bloquea la ejecucin en S2 hasta que se resuelve la dependencia ( F0 disponible) y SUBD no puede ejecutarse.
(IBM 360/91, ao 1967) ( BM 6 /9 , 967) Elimina dinmicamente los riesgos EDE y EDL mediante el renombrado de registros g Motivacin: Arquitectura 360, 4 registros FP( Pocos registros, muchas dependencias ) Arquitectura RM UF segmentadas Add(3), Mul(2), Load (6), Stores (3) Solo consideraremos l operaciones de PF en la explicacin l id las i d l li i Casi todos los procesadores actuales usan mecanismo basados en este algoritmo l it Alpha 21264, HP 8000, MIPS 10000, Pentium III-4-Core, PowerPC 604,
R6
AC Tema 4
21
Registros FP
Qi
Vi
TAGs
Store Buffers
Add1 Add2 Add3 Mult1 Mult2
Qi Dir
Vi
Busy
TAGs
SumadorFP
Estaciones De R D Reserva
A Memoria MultiplicadorFP
AC Tema 4
24
AC Tema 4
25
TAG X 0 0
UF
(X,25.77) CDB
A todas las ER, Store Buffers y Registros que tengan la marca X
F0 F2 F4
Estado de registros
TAG 0 0 0 VALOR 25.77 22.57 3.2 32
AC Tema 4
27
Planificacin Dinmica:TOMASULO
Ejemplo
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 LD 2 ciclos, ADDD y SUBD 2 ciclos, MULT 10 ciclos, DIVD 40 ciclos K R2 R3 F4 F2 F6 F2
Tiempo FU Add1 Add2 Add3 Mul1 Mul2 Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
F0 FU
F2
F4
F6
F8
F10
F12
AC Tema 4
28
Planificacin Dinmica:TOMASULO
Ciclo 1
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1
Ocupada Load1 SI Load2 NO Load3 NO Direccin 34+R2
Tiempo
Ocupada Operacin NO NO NO NO NO
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
Estado de ER
Estado de REG FU
F0
F2
F4
F6 Load1
F8
F10
F12
AC Tema 4
29
Planificacin Dinmica:TOMASULO
Ciclo 2
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2
Ocupada Load1 SI Load2 SI Load3 NO Direccin 34+R2 45+R3
Tiempo
Ocupada Operacin NO NO NO NO NO
No hay bloqueo
Estado de ER
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
Estado de REG FU
F0
F2 Load2
F4
F6 Load1
F8
F10
F12
AC Tema 4
30
Planificacin Dinmica:TOMASULO
Ciclo 3 l
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 2-3
Ocupada Load1 SI Load2 SI Load3 NO Direccin 34+R2 45+R3
Tiempo
Ocupada Operacin NO NO NO SI NO
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
Estado de ER
Mult
R(F4)
Load2
Estado de REG FU
F0
F2
F4
F6 Load1
F8
F10
F12
Mult1 Load2
AC Tema 4
31
Planificacin Dinmica:TOMASULO
Ciclo 4 l
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 4 2-3 3-4 4
Ocupada Load1 NO Load2 SI Load3 NO Direccin 45+R3
Tiempo
S1 Vj M(34+R2)
S2 Vk
ER.P.J Qj
ER.P:K Qk Load2
Estado de ER
Mult
R(F4)
Load2
Estado de REG FU
F0
F2
F4
F6
M(34+R2)
F8 Add1
F10
F12
Mult1 Load2
AC Tema 4
32
Planificacin Dinmica:TOMASULO
Ciclo 6
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 4 5 6 2-3 3-4 4 5
Ocupada Load1 NO Load2 NO Load3 NO Direccin
Ningn bloqueo
Estado de ER
Tiempo 2
S1 Vj M(34+R2)
ER.P.J Qj Add1
ER.P:K Qk
10
M(45+R3)
Mult1
Estado de REG FU
F0 Mul1
F2
M(45+R3)
F4
F6 Add2
F8 Add1
F10 Mul2
F12
F6 reasignado
AC Tema 4
F. Tirado / R. Hermida (2010-11) 33
Planificacin Dinmica:TOMASULO
Ciclo 8
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 4 5 6 2-3 3-4 6-7 4 5 8
Ocupada Load1 NO Load2 NO Load3 NO Direccin
Tiempo
Ocupada Operacin NO SI NO SI SI
S1 Vj M()-M() M(45+R3)
ER.P.J Qj
ER.P:K Qk
Estado de ER
2 7
Mult1
Estado de REG FU
F0 Mul1
F2
M(45+R3)
F4
F6
F8
F10
F12
AC Tema 4
34
Planificacin Dinmica:TOMASULO
Ciclo 13 l
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 4 5 6 2-3 3-4 6-7 9-10
Tiempo FU Add1 Add2 Add3 Mul1 Mul2 Ocupada Load1 NO Load2 NO Load3 NO Direccin
4 5 8 11
Ocupada Operacin NO NO NO SI SI
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
Estado de ER
3
Mult Divd
M(45+R3)
R(F4) M(34+R2)
Mult1
Estado de REG FU
F0 Mul1
F2
M(45+R3)
F4
F6
F8
F10
F12
AC Tema 4
35
Planificacin Dinmica:TOMASULO
Ciclo 16
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 4 5 6 2-3 3-4 6-15 6-7 9-10
Tiempo FU Add1 Add2 Add3 Mul1 Mul2 Ocupada Load1 NO Load2 NO Load3 NO Direccin
4 5 16 8 11
Ocupada Operacin NO NO NO NO SI
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
Estado de ER
40
Divd
M*F4
M(34+R2)
Estado de REG FU
F0 M F4 M*F4
F2
M(45+R3)
F4
F6
F8
F10
F12
AC Tema 4
36
Planificacin Dinmica:TOMASULO
Ciclo 57
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2
4 5 16 8 57 11
Ocupada Operacin NO NO NO NO SI
Direccin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
Estado de ER
Divd
M*F4
M(34+R2)
Estado de REG FU
F0 M F4 M*F4
F2
M(45+R3)
F4
F6
F8
F10
F12
AC Tema 4
37
Planificacin Dinmica:TOMASULO
Operacin: vector F0 * escalar F2 Suposiciones: MULT 4 ciclos En 1 iter Load 8 ciclos ( fallo ), en 2 1 ciclo (acierto) iter. ) Mostraremos dos iteraciones
AC Tema 4
38
Planificacin Dinmica:TOMASULO
Bucle l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1
Tiempo FU Add1 Add2 Add3 Mul1 Mul2
Ocupada NO NO NO NO NO NO
Direccin
Qi
Estado de ER
Loop LD MULTD SD SUBI BNEZ F0 0(R1) F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop R1 Loop
Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
Estado de REG
F0 FU
F2
F4
F6
F8
F10
F12
AC Tema 4
39
Planificacin Dinmica:TOMASULO
Ciclo 1
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue ejecucin escritura
Load1 Ocupada SI NO NO NO NO NO Qi load2 load3 store1 store2 store3 Direccin 80
Estado de ER
Loop LD MULTD SD SUBI BNEZ F0 0(R1) F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop R1 Loop
Tiempo
Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
F0 FU Load1
F2
F4
F6
F8
F10
F12
Planificacin Dinmica:TOMASULO
Ciclo 2
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada SI NO NO NO NO NO Qi load2 load3 store1 store2 store3 Direccin 80
1 2
Estado de ER
Loop LD MULTD SD SUBI BNEZ F0 0(R1) F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop R1 Loop
Tiempo
Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
SI
MULT
R(F2)
Load1
F0 FU Load1
F2
F4 Mul1
F6
F8
F10
F12
41
Planificacin Dinmica:TOMASULO
Ciclo 3 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada SI NO NO SI NO NO 80 Qi Mult1 load2 load3 store1 store2 store3 Direccin 80
1 2 3
Estado de ER
Loop LD MULTD SD SUBI BNEZ F0 0(R1) F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop R1 Loop
Tiempo
Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
SI
MULT
R(F2)
Load1
F0 FU Load1
F2
F4 Mul1
F6
F8
F10
F12
42
Planificacin Dinmica:TOMASULO
Ciclo 6
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1
1 2 3 6
Estado de ER
Loop LD MULTD SD SUBI BNEZ F0 0(R1) F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop R1 Loop
Tiempo
Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
SI
MULT
R(F2)
Load1
F0 FU Load2
F2
F4 Mul1
F6
F8
F10
F12
Renombrado
F. Tirado / R. Hermida (2010-11) 43
Planificacin Dinmica:TOMASULO
Ciclo 7 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada SI SI NO SI NO NO 80 load2 load3 store1 store2 store3 Direccin 80 72 Qi Mult1
1 2 3 6 7
Tiempo FU Add1 Add2 Add3 Mul1 Mul2
Estado de ER
Loop LD MULTD SD SUBI BNEZ F0 0(R1) F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop R1 Loop
Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
SI SI
MULT MULT
R(F2) R(F2)
Load1 Load2
F0 FU Load2
F2
F4 Mul2
F6
F8
F10
F12
Renombrado
F. Tirado / R. Hermida (2010-11) 44
Planificacin Dinmica:TOMASULO
Ciclo 10 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada NO SI NO SI SI NO 80 72 72 Qi Mult1 Mult2 load2 load3 store1 Direccin
1 2 3 6 7 8
2- 9
10
7-10
store2 store3
Estado de ER
Loop LD MULTD SD SUBI BNEZ F0 0(R1) F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop R1 Loop
Tiempo
Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
SI SI
MULT MULT
M(80)
R(F2) R(F2)
Load2
F0 FU Load2
F2
F4 Mul2
F6
F8
F10
F12
45
Planificacin Dinmica:TOMASULO
Ciclo 11 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada NO NO SI SI SI NO 64 80 72 Qi Mult1 Mult2 load2 load3 store1 Direccin
1 2 3 6 7 8
2-9
10
7-10
11
store2 store3
Estado de ER
Loop LD MULTD SD SUBI BNEZ F0 0(R1) F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop R1 Loop
Tiempo
Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
3 4
SI SI
MULT MULT
M(80) M(72)
R(F2) R(F2)
F0 FU
F2
F4 Mul2
F6
F8
F10
F12
AC Tema 4
46
Planificacin Dinmica:TOMASULO
Ciclo 15
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada NO NO SI SI SI NO 64 80 72 Qi M() F2 M()*F2 Mult2 load2 load3 store1 store2 store3 Direccin
1 2 3 6 7 8
10 15 11
Estado de ER
Loop LD MULTD SD SUBI BNEZ F0 0(R1) F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop R1 Loop
Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
SI
MULT
M(72)
R(F2)
F0 FU
F2
F4 Mul2
F6
F8
F10
F12
AC Tema 4
47
Planificacin Dinmica:TOMASULO
Ciclo 16 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada NO NO SI NO SI NO 72 M()*F2 64 Qi load2 load3 store1 store2 store3 Direccin
1 2 3 6 7 8
10 15 -11 16
Estado de ER
Loop LD MULTD SD SUBI BNEZ F0 0(R1) F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop R1 Loop
Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
F0 FU
F2
F4
F6
F8
F10
F12
AC Tema 4
48
Planificacin Dinmica:TOMASULO
Ciclo 17 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada NO NO SI NO NO NO 64 Qi load2 load3 store1 store2 store3 Direccin
1 2 3 6 7 8
10 15 -11 16 --
Estado de ER
Loop LD MULTD SD SUBI BNEZ F0 0(R1) F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop R1 Loop
Ocupada Operacin
S1 Vj
S2 Vk
ER.P.J Qj
ER.P:K Qk
F0 FU
F2
F4
F6
F8
F10
F12
AC Tema 4
49
Nomenclatura: N m n l tu :
o Instruccin aritmtica: D OP (S1, S2) ( )
Instruccin aritmtica que realiza la operacin OP sobre el contenido de los registros S1 y S2, y deposita el resultado en el registro D
ER(x)(Busy, OP, Qj , Vj , Qk , Vk) Reg(x)( R (x)( Qi , Vi ) LB(x)(Busy, Dir) SB(x)( Busy, Dir, Qi , Vi )
AC Tema 4
50
Diapositiva 50 R19 Nota 1: se intenta obviar el clculo de la direccin efectiva que se contempla en H&P 4 edicin por las siguientes razones: 1. Los ejemplos que tenemos en las transparencias previas lo ignoran. 2. Las soluciones que explicamos a los problemas propuestos tb lo ignoran (no se contempla ningn ciclo de reloj para ello). 3. Aade complejidad innecesaria para comprender el concepto. 4. Los ejemplos de las transparencias que usa Patterson en Berkely tampoco lo usan. 5. El simulador DLXView tampoco funciona segn lo descrito en el libro. Nota 2: En la fase Issue se mejora la explicacin de H&P, al sustituir un condicional (if ) por unos movimientos de datos y tags que son los realmente implicados en la operacin.
Romn; 01/10/2007
AC Tema 4
Load: D Mem[Direccin]
(La direccin efectiva est disponible) Y (LB(x).Dir no tiene dependencias respecto de d d i t d Stores lanzados antes) (Uso de cola de Load / Store: explicacin posterior)
Store: Mem[Direccin] S
(La direccin efectiva est disponible) Y (SB(x).Dir (SB( ) Di no tiene i depenedencias con Load ni Sores previos) Y (SB(x).Qi) = 0)
AC Tema 4
52
Nada
Nada
53
Planificacin Dinmica:TOMASULO
AC Tema 4
54
Programas enteros una de cada 4-5 instrucciones. Flotantes 1 de cada 10-20 instrucciones
AC Tema 4
F. Tirado / R. Hermida (2010-11) 55
30
90 80 70 60
25
spi ce3
20
TeX
50 40 30
15
10
lloops
fft
20 10
Conclusin
Frecuencia de los saltos depende del tipo de programa El comportamiento depende del tipo de programa
AC Tema 4
56
P di i Prediccin
Idea Bsica
Cuando se detecta una instruccin de salto condicional sin resolver
Se supone o predice el camino del salto: tomado o no tomado (Taken - Untaken) Si el salto se predice como tomado se predice la direccin destino del salto p p La ejecucin contina de forma especulativa a lo largo del camino supuesto
Consideraciones generales
1) Predecir el camino que tomar el salto
TAKEN (Tomado) PREDICCIN CORRECTA TAKEN (Tomado) PREDICCIN INCORRECTA
t1 t2 t3 t4 t5 t6 t7 Programa P I1 I2 BR Target I4 Target: Itarget Itarget+1 F D E M W F D E M W I2 F D E BR F TA I4 It F D E M W It+1 F D E M W Retardo (1 ciclo) I1 Programa I1 I2 BR Target I4 Target: Itarget g Itarget+1 I1
AC Tema 4
58
Consideraciones generales
2) Predecir la direccin de la instruccin destino del salto ) con un retardo mnimo (para saltos tomados)
t2 D F
t3 E D F
t4 M E D
t5 W M E
t6
t7
W E D M E W M W
F D TA F
Retardo (0 ciclo)
Detectar lo ms pronto posible el salto: En buffer de instrucciones, al buscarla en la cache. Ms importante para pipes de ms etapas (frecuencia)
AC Tema 4
59
Actualizacin de la BTAC
L a BTAC se actualiza cuando se ejecuta la instruccin de salto y se conoce: Si el salto fue tomado o no La direccin destino del salto
S el salto fue tomado
Si no estaba en la BTAC
Se introduce en la BTAC Direccin de la Instruccin Tag Direccin destino del salto
+1
MUX
Si ya estaba en la BTAC
Se actualiza su direccin destino en la BTAC
Direccin de la siguiente
instruccin
BTAC
60
AC Tema 4
Solucin intermedia
Almacenar la instruccin ms ventajassi tempo de acceso a las instrucciones es alto Ejemplos: AMD K6,K7, NexGen Nx586
AC Tema 4
61
Fija
Historia Local
Historia Global
Hbridos
AC Tema 4
62
Prediccin esttica
Prediccin Fija
ALWAYS TAKEN
Predecir todos los saltos como tomados Mayor nmero de aciertos de prediccin (3 de cada 4 saltos cond. son tomados) Mayor coste hardware (necesita almacenar la direccin destino del salto)
AC Tema 4
63
Prediccin esttica
Prediccin basada en el OPCODE de la instruccin de salto
R7
Fundamento: La probabilidad de que un salto sea tomado depende del tipo de salto
Basada en PROFILING
El compilador predice en funcin del comportamiento de esa instruccin en ejecuciones prev as previas del programa
Se aade un Bit de Prediccin al opcode de la instruccin El compilador activa o desactiva este bit para indicar su prediccin
AC Tema 4
F. Tirado / R. Hermida (2010-11) 64
Diapositiva 64 R7 He eliminado la transparencia anterior. Paco: supongo que queras eliminarla porque tambin hablaba de prediccin basada en OpCode
Romn; 26/09/2007
Predictores Dinmicos
Idea bsica
La prediccin se realiza observando el comportamiento de las instrucciones de salto en las ltimas ejecuciones ( Historia )
Evolucin
AC Tema 4
NT
Inicio
Registro de historia Contador saturado de 1 bit Prediccin V l del registro d hi t i Valor d l i t de historia
Taken (1) T
NT
LIMITACIN
de la ltima ejecucin del salto Dos malas predicciones en los cambios AC Tema 4
Ms Bits
Prediccin: Taken
Funcionamiento F i i t
Mquina de cuatro estados:
Strongly not taken (00) Weakly not taken (01) y ( ) Weakly taken (10) Strongly taken (11)
T
Weakly not taken (0 1)
Registro de historia Contador saturado de 2 bits Prediccin bit ms significativo del registro de historia
T
Weakly taken (1 0)
Inicio NT
Strongly not taken (0 0)
T
Strongly taken (1 1)
Cambios de estado:
T: el salto ha sido tomado NT: el salto no ha sido tomado
NT Prediccin:
NT Prediccin:
NT Prediccin:
Not taken
Not taken
Taken
Prediccin:
Taken
AC Tema 4
67
Predictores Dinmicos
Implementacin de los bits de prediccin mp m p
256 x 1 bit 512 x 2 bit 512 x 2 bit 2K x 2 bit 256 x 3 bit 2K x 2 bit 16Kx2bits
AC Tema 4
68
Actualizacin de la BTB
Los campos de la BTB se actualizan despus de ejecutar el salto y se conoce:
Si el salto fue tomado o no Actualizar bits de prediccin La direccin destino del salto Actualizar BTA
Tag g
BTA
MUX MUX
Lgica de Prediccin
Taken / Not Taken
BTB
Direccin de la siguiente instruccin
+1
DESVENTAJA:
AC Tema 4
Ventaja
Puede predecir instruc.que no estn en la BTAC (ms entradas en BHT que en BTAC)
Direccin de la instruccin de salto Direccin Tag destino del salto MUX Bits de Tag prediccin
Taken / Not Taken Lgica de Prediccin
Desventaja
Aumenta el hardware necesario 2 tablas asociativas
Acceso a la BHT
Usando los bits menos significativos de la direccin Sin TAGs Menor coste (opcin + habitual) Comparticin de entradas Se degrada el rendimiento Asociativa por conjuntos Mayor coste Tablas pequeas Para un mismo coste hardware Peor comportamiento
BTA
+1
BTA
BTAC
AC Tema 4
F. Tirado / R. Hermida (2010-11)
BHT
Predictores Dinmicos
Comportamiento
18% 16% 14% 12% 10% 8% 6% 4% 2% 0%
1%
0%
nasa7
18% % 18
12%
11%
9%9% %
9%9% %
10% 10%
5%5%
5% 5%
1% 0%0%
matrix300
0%
tomcatv doducd spice fpppp gcc espresso eqntott li
Predictores Dinmicos
Otras formas de gestionar la historia
1. Muchas instrucciones de salto ejecutan patrones repetitivos
saltos afecta a la prediccin actual. Almacenar el comportamiento de los ltimos n saltos y usarlo en la seleccin de la prediccin.
1 = Taken 0 = Not Taken
Patrn: {1110}
Si conocemos el comportamiento del salto en las 3 ltimas ejecuciones podemos predecir como se comportar en la siguiente ejecucin Prediccin basada en historia LOCAL
AC Tema 4
72
Predictores Dinmicos
2. Muchas instrucciones de salto dependen del comportamiento de otros saltos recientes ( historia global) Ejemplo:
b1: if (d = 0) then d=1 b2: if ( =1) then f (d )
L1: L2: L2 BNEZ R1, L1 ; salto b1 (Salto si d 0) R8 ADDI R1, R0, #1 ; Como d=0, hacer d=1 DD R1 R0 C d 0 h d 1 SUBI R3, R1, #1 ; R3=d(R1)-1 BNEZ R3, L2 ; salto b2 (Salto si d 1) .......... R3=0 d=1 R30 d1
AC Tema 4
73
Predictores Dinmicos
Ejemplo ( continua )
Relacin entre los dos saltos
BNEZ R1, L1 ; salto b1 (Salto si d 0) ADDI R1, R0, #1 ; Como d=0, hacer d=1 SUBI R3 R1, #1 ; R3=d(R1)-1 R3, R1 R3 d(R1) 1 BNEZ R3, L2 ; salto b2 (Salto si d 1) ..........
L1: L1 L2:
Caso 1: d=0,1,2, C 1 d 0 1 2
Valor de d
d 0?
b1
d antes de b2
d1?
b2
0 1 2
no si i si
NT T T
1 1 2
no no si
NT NT T
Predictores Dinmicos
Ejemplo ( continua )
Comportamiento del predictor d un bit ( estado i i i l t t k NT) C t i t d l di t de bit. t d inicial not taken
BNEZ R1, L1 ; salto b1 (Salto si d 0) ADDI R1, R0, #1 ; Como d=0, hacer d=1 SUBI R3 R1, #1 ; R3=d(R1)-1 R3, R1 BNEZ R3, L2 ; salto b2 (Salto si d 1) ..........
L1: L2:
Valor de d
Prediccin de b1
b1
b2
Nueva prediccin de b2 T NT T NT
75
2 0 2 0
AC Tema 4
NT T NT T
T NT T NT
T NT T NT
Predictores Dinmicos
Solucin
Predictor de dos niveles (1 1): (1,1): Predictor de dos niveles (m n) (m,n)
Para cada salto existen 21 predictores de 1 bit. El comportamiento ltimo salto (1) determina el predictor que se usa. Para cada salto existen 2m predictores de n bits. El comportamiento de los ltimos m saltos determinan el predictor que se usa g p p ( ) Significado de los bit de prediccin en un predictor (1,1)
Bits de prediccin Prediccin si el ultimo salto no tomado NT NT T T Prediccin si el ultimo salto tomado NT T NT T
NT/NT
Dos predictores de d un bi bit
Predictores Dinmicos
Ejemplo ( continua )
Comportamiento del predictor de dos niveles (1,1). ( estado inicial not taken NT)
L1: L2: BNEZ R1, L1 ; salto b1 (Salto si d 0) ADDI R1, R0, #1 ; Como d=0, hacer d=1 SUBI R3, R1, #1 ; R3=d(R1)-1 BNEZ R3, L2 ; salto b2 (Salto si d 1) ..........
2 0 2 0
T NT T NT
T NT T NT
(Subrayado en rojo: Bit de prediccin seleccionado en cada caso, en funcin del comportamiento del salto anterior)
AC Tema 4
77
P di Predictores Di i Dinmicos
Direccin(4 bits)
11
Prediccin
00
01
10
11
2-bits de historia Global de saltos (2 Saltos anteriores) (Ejemplo: 01 = not taken Y taken) (E l 1 k k )
AC Tema 4
F. Tirado / R. Hermida (2010-11) 78
Diapositiva 78 R9 Aado "de 2 niveles" De acuerdo? Nos hemos referido a "2 niveles" muchas veces en problemas y exmenes
Romn; 26/09/2007
Predictores Dinmicos
Comportamiento
0,2 0,18
0,16
0,14
0,12
0,11 0 11
0,1
0,02
0,01 0
0,01
0 nasa7 7 matrix300 t i 300 tomcatv t t doducd d d d spice i fpppp f gcc espresso eqntott t tt li
AC Tema 4
Predictor hbrido
Mezcla varios predictores y aade un mecanismo de seleccin del predictor
Instruccin captada
Direccin
Mecanismo de seleccin
Elige, en cada caso, el predictor que haya dado mejores resultados hasta el momento
Pre edictor 1
MUX Prediccin
Para combinar dos predictores, P1 y P2, se utiliza una tabla de contadores saturados (Taken/Not taken) de dos bits indexada por la direccin de la instruccin de salto P1 Fallo F Fallo Acierto Acierto P2 Fallo Acierto Fallo Acierto Actualiz. del contador Cont no vara Cont = Cont +1 Cont = Cont -1 Cont no vara Si P2 acierta ms que P1 Cont aumenta Si P1 acierta ms que P2 C t di i Cont disminuye
Bit ms signif. del contador 0 1
F. Tirado / R. Hermida (2010-11)
Predictor seleccionado P1 P2
80
AC Tema 4
Pre edictor 2
Tabla de Seleccin
Gran importancia para la ejecucin especulativa en 21264 (hasta 80 instrucciones en la ventana) Tasas de prediccin correcta (benchmarks): 90-100%
o Se actualizan los predictores en funcin de su acierto o fallo o Si los dos predictores hicieron una prediccin di ti t se l d di t hi i di i distinta, actualiza el juez para que favorezca al que acert
AC Tema 4
81
10
PC
Juez (4096x2)
MSB
12
T/NT
AC Tema 4
82
Si(a=0) se ha tomado:
TH Local PC de Si (b=0) PC de Si (a=0) 0000000000 000 0101010101
F. Tirado / R. Hermida (2010-11)
Pred Local
000
83
AC Tema 4
Si(a=0) no se ha tomado:
TH Local PC de Si (b=0) PC de Si (a=0) 0000000000 Pred Local 111 000 1010101010
F. Tirado / R. Hermida (2010-11)
000
84
AC Tema 4
Pred Global 11
Si (b=0)
Predecir T
Si (a=b)
AC Tema 4
85
doduc
fpppp
98%
li
77%
espresso
86% 82%
96%
70% 80%
Precisin de la prediccin
Local
FT1
13 12
11
9 7
0
es 17 7. m a
AC Tema 4
16 8.
SPECint2000
17 18
SPECfp2000
2. m 17 17
16
17
18
17
88
No entiendo estos datos. tienen relacin con la grfica? se pueden escribir las frases de otra forma? Como 48 de cada mil son saltos y 1 de cada mil en media falla la tasa de fallos es 2%
Francisco Tirado; 10/10/2007
AC Tema 4
89
F D
Tipo de instruccin Si es salto Aplicar prediccin
F D
Deteccin de saltos EJEMPLOS Alpha 21064 Alpha 21164 Alpha 21064A PowerPC601 AC Tema 4
F D
Deteccin de saltos EJEMPLOS Power1 Power2 PowerPC 603
F D
Deteccin de saltos EJEMPLOS PowerPC 604 PowerPC 620
R8000 PA8000
90
AC Tema 4
91
El procesador almacena la direccin del camino secuencial El procesador prebusca y almacena las primeras instrucciones secuenciales
El procesador calcula y almacena la direccin destino del salto El procesador prebusca y almacena las primeras instrucciones del destino del salto
Ejemplos: 2 buffer Power1, Power2, P ti Ej l b ff P 1 P 2 Pemtium, UltraSparc( 16 ) R10000 (256 bit ) Ult S ( ), bits) 3 buffer Nx586 ( 2 pendientes ) AC Tema 4
F. Tirado / R. Hermida (2010-11) 92
Ejemplo
BNEZ MOV R1, L R2, R3 CMOVZ R2, R3, R1
Ventaja: Buena solucin para implementar alternativas simples de control Desventaja: Consumen tiempo en todos los casos. Ms lentas que las incondicionales Ejemplos: Alpha, Hp-Pa, MIPS, Sparc
AC Tema 4
93
Ejemplo
If ( a< 10) c = c+1 else if ( b>20) ) d = d+1 else e = e+1 T p2 add c,c,1 p4 Add d,d,1 Blt a,10,L1 F Bgt b,20, L2 T F Add e,e,1 p3 p1 pred_lt p1(U),p2(U),a,10 add c,c,1 (p2) pred_gt p3(U), p4(U),b,20 (p1) add d,d,1 (p4) add e,e,1 (p3)
AC Tema 4
94
Prediccin de saltos
Resumen
Predictor bimodal bueno para Loop (programas FP ) Predict res de dos niveles buen s para IF then else Predictores d s buenos Prediccin de la direccin destino importante mp Ejecucin condicional y predicada reduce el numero de saltos
AC Tema 4
95
Especulacin
L p di in d s lt s int du ESPECULACION La prediccin de saltos introduce
o Dos tipos de instrucciones en el procesador Las independientes p Las que dependen de una predicin de salto. Su finalizacin depende del acierto o fallo en la p prediccin. Como podemos implementar esta distincin con un modelo de ejecucin con finalizacin Fuera de orden? Modificando el Algoritmo de Tomasulo para forzar finalizacin en orden g p ALGORITMO DE TOMASULO CON ESPECULACION
AC Tema 4
96
Especulacin
Algoritmo de TOMASULO l d
De Memoria Cola de Ope FP Load L d Buffers Store Buffers B ff
Add1 Add2 Add3 dd3 Mult1 Mult2 M lt2
Registros FP
SumadorFP
Estaciones De Reserva
A Memoria MultiplicadorFP
Especulacin
Algoritmo de TOMASULO con especulacin l d l
Buffer de Reordenamiento
De Memoria
Registros
SumadorFP
AC Tema 4
98
Especulacin
El Buffer de Reordenamiento (ROB)
R13
o Almacena resultados de instrucciones cuya ejecucin ha finalizado, pero estn a l espera d actualizar registros o memoria stn la sp de ctu li ist s m m i (finalizacin en orden) son dependientes de un salto (ejecucin especulativa) o Permite el paso de operandos entre instrucciones especuladas con dependencia LDE.
AC Tema 4
99
Especulacin
Est u tu del ROB: cada entrada contiene 4 campos Estructura d l d nt d nti n mp s
R14
o Tipo de instruccin Salto (sin reg destino), Store ( ( g ) (destino en memoria), ) Aritmtica/Load (con destino en registro) o Destino Nmero de registro (Aritmtica/Load) Direccin de memoria (Store) o Valor R Resultado d l ejecucin d l i l d de la j i de la instruccin. G i Guarda el d l valor hasta que se actualiza registro destino o memoria. o Listo La instruccin ha completado la fase de ejecucin y el resultado est disponible en el campo Valor
AC Tema 4
100
Especulacin: fases
Algoritmo de TOMASULO con especulacin l d l Los 4 estados del algoritmo de Tomasulo especulativo
Issue: Toma la instruccin de la cola Es necesario: ER con entrada libre y Buffer de Reordenamiento (ROB) con R12 entrada libre. Toma operandos de registros o de resultados almacenados en ROB por instrucciones previas. Marca R. Destino con n de ROB asignado Marca ER asignada con n de ROB asignadoRH2 g g Ejecucin: Opera sobre los operandos Espera hasta que los operandos estn disponibles. Chequea CDB. Escribe resultados: Finaliza ejecucin Escribe a travs de CDB en todas las ER de Fus y entradas del ROB que estn a la espera del resultado. Libera ER. No escribe en registros, ni memoria. Enva por CDB resultado + n de ROB al que se dirige RH3 p g Commit: Actualiza registros desde el ROB Cuando la Instruccin esta en la cabecera del ROB y resultado presente: Actualiza Registro (o escribe en memoria) y elimina la instruccin del ROB.
R15 AC Tema 4
RH2 RH3
Nuevo Nuevo
R16
Especulacin: Ejemplo
Buffer de Reordenamiento Dest Valor Tipo Listo
Se lanza: LD F0,10(R2)
N de ROB
7 6 5 4 3 2 1
Cola de Ope FP
F0
LD F0,10(R2)
N Reg
Registros 10 8 6 4 2 0
Valor N de ROB que producir el valor
Load Buffers
A Memoria
Dato 1
Dest
Dest D st
SumadorFP
AC Tema 4
102
Diapositiva 102 R16 He insertado transparencias de la 98 a la 108. Repasar por favor, dado que las he rehecho a partir del ejemplo de Patterson: 1. He metido transp adicionales para ve la fase commit de dos instrucciones 2. He metido el campo de "N ROB" de los registros 3. He indicado explcitamente la instruccin que se lanza, ejecuta o finaliza.
Romn; 01/10/2007
Especulacin: Ejemplo
Buffer de Reordenamiento
Dest Valor
Tipo
Listo
N de ROB
7 6 5 4 3 2 1 2
Cola de Ope FP
F10 F0
N N Reg
Registros 10 8 6 4 2 0
Load Buffers
A Memoria
Dato 1
Dest D st
SumadorFP
AC Tema 4
103
Especulacin: Ejemplo
Buffer de Reordenamiento
Dest Valor
Tipo
Listo
N de ROB
7 6 5 4 3 2 1 2
Cola de Ope FP
F2 F10 F0
N N N Reg
Registros 10 8 6 4 2 0
Load Buffers
A Memoria
Dato
3 1
ROB2,R(F6)
SumadorFP
AC Tema 4
104
Especulacin: Ejemplo
Buffer de Reordenamiento
Tipo ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0 LD F0,10(R2)
Listo N N N N N N Reg
N de ROB
7 6 5 4 3 2 1 2
Registros 10 8 6 4 2 0
A Memoria
Dato
5 3
6
Dest 2 ADDD R(F4), ROB1 6 ADDD ROB5, R(F6)
ROB2,R(F6)
SumadorFP
AC Tema 4
105
Especulacin: Ejemplo
Buffer de Reordenamiento
Se lanza: ST 0(R3), F4
(sup R3=10)
Dest Valor
Tipo
Listo N N N N N N N Reg
N de ROB
7 6 5 4 3 2 1 2
Cola de Ope FP
10 ROB5 ST 0(R3),F4 ADDD F0,F4,F6 F0 LD F4,0(R3) , ( ) F4 BNE F2,----DIVD F2,F10,F6 F2 ADDD F10,F4,F0 F10 LD F0,10(R2) F0
Registros 10 8 6 4 2 0
Load Buffers
A Memoria
Dato
5 3
6
Dest 2 ADDD R(F4), ROB1 6 ADDD ROB5, R(F6)
ROB2,R(F6)
SumadorFP
AC Tema 4
106
Especulacin: Ejemplo
Buffer de Reordenamiento
Se ejecuta: LD F4,0(R3)
Tipo ST 0(R3),F4 ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0 LD F0,10(R2)
Listo Y N Y N N N N Reg
N de ROB
7 6 5 4 3 2 1 2
Cola de Ope FP
Registros 10 8 6 4 2 0
Load Buffers
A Memoria
Dato
5 3
6
Dest 2 ADDD R(F4), ROB1 6 ADDD M[10], R(F6)
Resultado a ROB5 y todo ROB o ER con marca ROB5
ROB2,R(F6)
SumadorFP
AC Tema 4
107
Especulacin: Ejemplo
Buffer de Reordenamiento
Tipo ST 0(R3),F4 ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0 LD F0,10(R2)
Listo Y Y Y N N N N Reg
N de ROB
7 6 5 4 3 2 1 2
Cola de Ope FP
Registros 10 8 6 4 2 0
Load Buffers
A Memoria
Dato
5 3
6
Dest 2 ADDD R(F4), ROB1
ROB2,R(F6)
SumadorFP
AC Tema 4
108
Especulacin: Ejemplo
Buffer de Reordenamiento
Se ejecuta: LD F0,10(R2)
sup R2=10
Tipo ST 0(R3),F4 ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0 LD F0,10(R2)
Listo Y Y Y N N N Y Reg
N de ROB
7 6 5 4 3 2 1 2
De Memoria Dest
Cola de Ope FP
Registros 10 8 6 4 2 0
Load Buffers
A Memoria
Dato
5 3
6
Dest 2 ADDD R(F4),M[20]
ROB2,R(F6)
SumadorFP
AC Tema 4
109
Especulacin: Ejemplo
Buffer de Reordenamiento
Tipo ST 0(R3),F4 ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0 LD F0,10(R2)
Listo Y Y Y N N Y Y Reg
N de ROB
7 6 5 4 3 2 1 2
De Memoria Dest
Cola de Ope FP
Registros 10 8 6 4 2 0
Load Buffers
A Memoria
Dato
5 3
6
Dest
,R(F6)
* = R(F4)+M[20]
AC Tema 4
F. Tirado / R. Hermida (2010-11) 110
Especulacin: Ejemplo
Buffer de Reordenamiento
Tipo ST 0(R3),F4 ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0
Listo Y Y Y N N Y
N de ROB
7 6 5 4 3 2 1 2
De Memoria Dest
Cola de Ope FP
Registros 10 8 6 4 2 0
6
Dest
M[20]
,R(F6)
* = R(F4)+M[20]
AC Tema 4
F. Tirado / R. Hermida (2010-11) 111
Especulacin: Ejemplo
Buffer de Reordenamiento
Listo Y Y Y N N
N de ROB
7 6 5 4 3 2 1
De Memoria Dest
Cola de Ope FP
Registros * 10 8 6 5 4 3 2 6 M[20] 0
Dest
,R(F6)
* = R(F4)+M[20]
AC Tema 4
F. Tirado / R. Hermida (2010-11) 112
R17
Ri s s EDE y EDL: n pueden aparecer dado que la Riesgos no pu d n p d d u l actualizacin de memoria se hace en orden.
o Esperar hasta que la instruccin ST se halle en la cabecera de p q ROB => Todos los LD y ST anteriores se han completado.
Riesgos LDE: Podran producirse si un LD accede a la posicin de memoria A, habiendo en el ROB un ST previo que almacena el resultado en A. Se evitan mediante el siguiente mecanismo:
o Un LD no ejecuta el acceso a memoria si hay un ST previo en el ROB con la misma direccin de memoria. o Tampoco se ejecuta el LD si est pendiente el clculo de la direccin efectiva de algn ST del ROB
AC Tema 4
113
Diapositiva 113 R17 Esta y la siguiente son nuevas. Por favor, revisar.
Romn; 01/10/2007
El ROB permite recuperarse de saltos mal predichos e p mit up s d s lt s m l p di h s implementar un modelo de excepciones precisas Si una instruccin de salto bien predicha llega a cabecera de ROB =>
o Eliminarla de ROB
Especulacin: ms ejemplos
Algoritmo de TOMASULO con especulacin
Estado Opera Vj
Estaciones de Reserva
Vk Qj Qk N ROB Destino
Un
ejemplo
F6,34(R2) F2,45(R3) F0,F2,F4 F8,F6,F2 F8 F6 F2 F10,F0,F6 F6,F8,F2
Buffer de Reordenamiento
Estado E t d 1 2 3 4 5 6 libre libre Ocupada O d Ocupada Ocupada Ocupada Instruccin I t i LD F6,34(R2 Estado E t d Commit Commit Escri. R E i Res Escri. Res. Ejecuta Escri. Res. Escri Res Destino D ti F6 F2 F0 F8 F10 F6 #4 + #2 Valor V l M(34+(R2)) M(45+R3)) #2x(F4) #2 (F4) #1 - #2
F0
F2 no
F4 no
F6 6 si
F8 4 si
F10 5 si
F12 no
Buffer N Ocupado
3 si
AC Tema 4
115
Especulacin: ms ejemplos
Algoritmo de TOMASULO con especulacin l d l
Estado Opera MULT MULT Vj M(0+(R1)) ( ( )) M(0+(R1)) Vk F2 F2 Qj Qk
R18
Un LOOP
ejemplo j mpl
LD F0 0(R1) F0,0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1 LOOP R1,LOOP
ESPECULADA AS
MUL1 MUL2
Libre Libre
N ROB Destino #2 #7
Estado 1 2 3 4 5 6 7 8 9 10 libre libre Ocupada Ocupada Ocupada Ocupada Ocupada Ocupada Ocupada
Instruccin LD F0,0(R1)
Estado Commit Commit Escri. Res Escri. Res. Escri. Res Escri. Res. Escri. Res Escri. Res Escri. Res
MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1, loop LD F0,0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop R1 L
Ocupada O d
F0
F2
Buffer N Ocupado
6 si no
si
no
no
no
no
116
AC Tema 4
Diapositiva 116 R18 Se podra hacer unas tablas con el "Detalle de las fases" como el que hice para Tomasulo, pero es bastante ms complicado. Vale la pena?
Romn; 01/10/2007