Академический Документы
Профессиональный Документы
Культура Документы
TEMA 4
ILP, Panificación dinámica,
Predicción de saltos, Especulación
Curso 2010-2011
Contenidos
Introducción: ILP
Técnicas SW: Compilador
Planificación
lan f cac ón dinámica.
d nám ca. Algoritmo
lgor tmo de Tomasulo.
omasulo.
Tratamiento de dependencias de control: Predicción de
saltos
T i
Tratamiento de
d saltos
l
Técnicas de predicción: Estáticas y dinámicas
Especulación
Bibliografía
R1
o Cap 2 [HePa07]
o Capítulos 4 , 7 y 8 de [SiFK97]
o Simulador DLXview
¿ Que
Q técnicas
té i conocemos?
?
Técnica Reduce
Planificación Dinámica Paradas por riesgos de datos
Predicción dinámica de saltos Paradas por riesgos de control
Lanzamiento
m múltiple
m p CPI Ideal
Dinámicas Varias instrucciones por ciclo
Especulación Riesgos de datos y control
Dynamic memory disambiguation Paradas por riesgos de datos
en memoria
Desenrollado de bucles Paradas por riesgos de control
Pl ifi
Planificación
ió por ell compilador
m il d P
Paradas
d s por riesgos
i s s de
d ddatos
t s
Software pipelining R3 CPI Ideal y Paradas por
Estáticas riesgos de datos
Predicción estática y Especulación CPI Ideal, paradas por riesgos
por el Compilador de datos y control
D
Determinar
t i llass dependencias
d d i s ess crítico
íti para obtener
bt ell máximo
á i
paralelismo
¿ Cuáles
C ál hay
h ? , ¿ A qué
é recursos afectan?
f t ?
L dependencias
Las d d son propias d de llos programas
o La presencia de una dependencia indica la posibilidad de aparición de un
riesgo,
g pero
p la aparición
p de éste y la posible
p parada
p depende
p de las
características del “pipe”
o La dependencias
Indican la posibilidad de un riesgo
Determinan el orden de cálculo de los resultados
Imponen un límite al paralelismo que es posible obtener
Tipos de Dependencias
R4
Dependencias de datos
Dependencia verdadera (LDE)
Dependencias de nombre
- Antidependencia (EDL)
- Dependencia
D d i d
de salida
lid (EDE)
Dependencias de control
o La instrucción i depende
p de j
i produce un resultado que usa j
j depende de k y k depende de i
LD F0,0(R1)
ADDD F4,F0,F2
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 sólo a las LDE.
Dependencias de control
If P1 (
S1;
);
if P2 (
S2;
)
S1 depende de P1 ; S2 depende de P2
Las dependencias
L d d d
de controll pueden
d violarse.
l Se pueden
d ejecutar instrucciones no
debidas si esto no afecta al resultado correcto del programa
o Comportamiento
p de excepciones
p se debe preservar.
p Cualquier
q cambio en el orden
de ejecución no debe cambiar como las excepciones son atendidas en la ejecución.
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 de datos
Dependencias de control
En general:
• Una instrucción dependiente de un salto no puede moverse antes del salto
• Una instrucción no dependiente de un salto no puede moverse después del salto
Efecto de las dependencias de control sobre el orden de las excepciones
y el flujo de datos
LOAD FP STORE FP 0
Entera Entera 0
R5 Utilizo el término "latencia de uso" por coherencia con los términos usados en el Tema 2 y en los problemas
Román; 26/09/2007
Técnicas SW para explotar ILP
E ó en ell procesador
Ejecución d
Loop
p LD F0,0(R1)
, ( ) Ciclo 1
Espera 2
ADDD F4,F0,F2 3
Espera 4
Espera
p 5
SD 0(R1),F4 6
SUBI R1,R1,#8 7
Espera 8
BNEZ R1,Loop
, p 9
Espera 10
Loop LD F0,0(R1)
ADDD F4,F0,F2 Expone más paralelismo y elimina saltos
SD 0(R1),F4
LD F6,-8(R1)
( )
ADDD F8,F6,F2 Se elimina 3 saltos y 3 decrementos
SD -8(R1),F8
LD F10,-16(R1)
ADDD F12,F10,F2 Permanecen dependencias
p y paradas
p
SD -16(R1), F12
LD F14,-24(R1)
ADDD F16,F14,F2
SD ( ),
-24(R1),F16 MÁS REGITROS = Renombrado p
por el Compilador
p
SUBI R1,R1,#32 (Imprescindible ??)
BNEZ R1,Loop
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 14
Técnicas SW para explotar ILP
Desenrollado
D s ll d + Planificación
Pl ifi ió
Loop LD F0,0(R1)
LD F6,-8(R1)
, ( )
LD F10,-16(R1)
LD F14,-24(R1)
ADDD F4,F0,F2
ADDD F8,F6,F2
, ,
ADDD F12,F10,F2
ADDD F16,F14,F2
SD 0(R1),F4
SD -8(R1),F8
( ), R20
SD -16(R1),F12
SUBI R1,R1,#32
BNEZ R1,Loop
SD 8(R1),F16;
( ) 8-32 = -24
Software
S ft ““pipelining”
i li i ”
• Idea:
Iteración 5
Iteración SW
Pipelened
d ops
11 BNEZ R1,LOOP
Time
erlapped Loop Unrolled
Loop unrolling simbólico
ove
Comparación
ó
((IBM
BM 360/91,
6 /9 , año 1967)
967)
Motivación:
Arquitectura 360, 4 registros FP( Pocos registros, muchas dependencias )
Arquitectura RM
UF segmentadas Add(3), Mul(2), Load (6), Stores (3)
R6
Solo
l consideraremos
id llas operaciones
i de
d PF en la
l explicación
li ió
De Memoria Registros FP
Cola Qi Vi
de Ope FP
Dir Valor Busy
TAGs
Load1
Load2 Load
Load3 Buffers
Load4
Load5 Qi Dir Vi Busy
Load6 Store
Buffers
TAGs Add1
Add2 Mult1
Add3 Mult2
Excepciones imprecisas
Issue en orden–- Ejecución fuera de orden—Finalización fuera de orden
Componentes de las ER
Op: Operación a realizar
Vj, Vk: Valores de los operandos fuente
Store buffers tienen un campo
p V para
p el resultado que
q debe ser almacenado.
Qj, Qk: ER produciendo los operandos fuente Notar: Qj,Qk=0 => ready
Store buffers tienen Qi para ER produciendo el resultado
Busy: Indica ER ocupada
E d de
Estado d registro
i resultado—Indica
l d I di lla FU que producira
d i ell resultado
l d para ell R
Registro.
i E
En
blanco ninguna intrucción esta pendiente de escribir en el registro.
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 23
Planificación Dinámica : Tomasulo
Ejemplo:
Ej mpl : Ejecución
Ej u ión de
d la
l secuencia:
s u n i :
(S1): COD1 F2, ---, ---
((S2):
) COD2 F4, ---, ---
(S3): ADDD F0, F2, F4
Ejemplo:
Ej mpl : Ejecución
Ej u ión de
d la
l secuencia:
s u n i :
(S1): COD1 F2, ---, ---
((S2):
) COD2 F4, ---, ---
(S3): ADDD F0, F2, F4
Estado de registros
TAG VALOR
Estación de reserva
F0 X ??
Busy
y OP TAGjj Valorjj TAGk Valork
X yes + Y ?? Z ?? F2 Y ??
F4 Z ??
Ejemplo:
Ej mpl : Ejecución
Ej u ión de
d la
l secuencia:
s u n i :
(S1): COD1 F2, ---, ---
((S2):
) COD2 F4, ---, ---
(S3): ADDD F0, F2, F4
Paso 2: Esperar a que se generen los operandos
a) Escritura del resultado de S1 sobr el CDB:
Estado de registros
TAG VALOR
Estación de reserva
F0 X ??
Busy OP TAGj Valorj TAGk Valork
X yes + 0 22.57 Z ?? F2 0 22.57
F4 Z ??
Estado de registros
UF TAG VALOR
F0 0 25.77
(X,25.77)
F2 0 22.57
F4 0 32
3.2
CDB
Ciclo 1
Instuc J K Issue Ejecución escritura
Ocupada Dirección
LD F6 34+ R2 1 Load1 SI 34+R2
Load2 NO
LD F2 45+ R3
Load3 NO
MULT F0 F2 F4
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K
Vj Vk Qj Qk
Add1 NO
Add2 NO
Estado de ER Add3 NO
Mul1 NO
Mul2 NO
No hay bloqueo
Vj Vk Qj Qk
Add1 NO
Add2 NO
Estado de ER Add3 NO
Mul1 NO
Mul2 NO
F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU Load2 Load1
Ciclo
l 3
Instuc J K Issue Ejecución escritura
Ocupada Dirección
LD F6 34+ R2 1 2-3 Load1 SI 34+R2
Load2 SI 45+R3
LD F2 45+ R3 2
Load3 NO
MULT F0 F2 F4 3
SUBD F8 F6 F2
DIVD F10 F0 F6
ADDD F6 F8 F2
F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU Mult1 Load2 Load1
Ciclo
l 4
Instuc J K Issue Ejecución escritura
Ocupada Dirección
LD F6 34+ R2 1 2-3 4 Load1 NO
Load2 SI 45+R3
LD F2 45+ R3 2 3-4
Load3 NO
MULT F0 F2 F4 3
SUBD F8 F6 F2 4
DIVD F10 F0 F6
ADDD F6 F8 F2
F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU Mult1 Load2 M(34+R2) Add1
F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU Mul1 M(45+R3) Add2 Add1 Mul2
F6 reasignado
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 33
Planificación Dinámica:TOMASULO
Ciclo 8
F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU Mul1 M(45+R3) Add2 M()-M()
M() M() Mul2
Ciclo
l 13
Instuc J K Issue Ejecución escritura
Ocupada Dirección
LD F6 34+ R2 1 2-3 4 Load1 NO
Load2 NO
LD F2 45+ R3 2 3-4 5
Load3 NO
MULT F0 F2 F4 3
SUBD F8 F6 F2 4 6-7 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6 9-10 11
F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU Mul1 M(45+R3) F8+M() M()-M()
M() M() Mul2
F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU M
M*F4
F4 M(45+R3) F8+M() M()-M()
M() M() Mul2
Ciclo 57 Fi li ió en d
Finalización desorden
d Excepciones
E i
Estado de REG
F0 F2 F4 F6 F8 F10 F12
FU M
M*F4
F4 M(45+R3) F8+M() M()-M()
M() M() Mul2
Suposiciones:
MULT 4 ciclos
En 1ª iter
iter. Load 8 ciclos ( fallo ),
) en 2ª 1 ciclo (acierto)
Mostraremos dos iteraciones
F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU
Ciclo 1
Instuc J K Issue ejecución escritura Ocupada Dirección
Load1 SI 80
LD F0 0 R1 1 load2 NO
MULT F4 F0 F2 load3 NO Qi
SD F4 0 R1 store1 NO
LD F0 0 R1 store2 NO
MULT F4 F0 F2 store3 NO
SD F4 0 R1
Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K
Estado de ER Vj Vk Qj Qk
Add1
Loop LD F0
F0,0(R1)
0(R1) Add2
MULTD F4,F0,F2
Add3
SD 0(R1),F4
Mul1
SUBI R1,R1,#8
Mul2
BNEZ R1,Loop
R1 Loop
Ciclo 2
Instuc J K Issue Ejecución escritura Ocupada Dirección
Load1 SI 80
LD F0 0 R1 1 load2 NO
MULT F4 F0 F2 2 load3 NO Qi
SD F4 0 R1 store1 NO
LD F0 0 R1 store2 NO
MULT F4 F0 F2 store3 NO
SD F4 0 R1
Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K
Estado de ER Vj Vk Qj Qk
Add1
Loop LD F0
F0,0(R1)
0(R1) Add2
MULTD F4,F0,F2
Add3
SD 0(R1),F4
Mul1 SI MULT R(F2) Load1
SUBI R1,R1,#8
Mul2
BNEZ R1,Loop
R1 Loop
Ciclo
l 3
Ciclo 6
Cierre del bucle
Ciclo
l 7
Ciclo
l 10
Ciclo
l 11
Ciclo 15
Instuc J K Issue Ejecución escritura Ocupada Dirección
Load1 NO
LD F0 0 R1 1 2- 9 10 load2 NO
MULT F4 F0 F2 2 11-14 15 load3 SI 64 Qi
SD F4 0 R1 3 store1 SI 80 M()
M()*F2
F2
LD F0 0 R1 6 7-10 11 store2 SI 72 Mult2
MULT F4 F0 F2 7 12-15 store3 NO
SD F4 0 R1 8
Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K
Estado de ER Vj Vk Qj Qk
Add1
Loop LD F0
F0,0(R1)
0(R1) Add2
MULTD F4,F0,F2
Add3
SD 0(R1),F4
Mul1
SUBI R1,R1,#8
Mul2 SI MULT M(72) R(F2)
BNEZ R1,Loop
R1 Loop
Ciclo
l 16
Ciclo
l 17
N m n l tu :
Nomenclatura:
R19
Nota 1: se intenta obviar el cálculo de la dirección efectiva que se contempla en H&P 4ª edición 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 ningún ciclo de reloj para ello).
3. Añade 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 según lo descrito en el libro.
Nota 2: En la fase Issue se mejora la explicación de H&P, al sustituir un condicional (if …) por unos movimientos de datos y tags que son los
realmente implicados en la operación.
Román; 01/10/2007
Planificación Dinámica:TOMASULO (detalle de las fases)
Fase Issue
Tipo de instrucción Esperar hasta que … Hacer …
Reg(D).Qi ← x
Reg(D).Qi ← x
Fase Ejecución
Tipo de instrucción Esperar hasta que … Hacer …
Fase Write
Tipo de Esperar hasta Hacer …
instrucción que …
Aritmética: (Ejecución Escribir sobre CDB: (x, RESUL)
D ← OP (S1, S2) completa en z (Si Reg(z).Qi) = x ) (Reg(z).Qi = 0) Y (Reg(z).Vi = RESUL)
ER(x)) Y z (Si ER(z).Qj) = x ) (ER(z).Qj = 0) Y (ER(z).Vj = RESUL)
(CDB z (Si ER(z).Qk) = x ) (ER(z).Qk = 0) Y (ER(z).Vk = RESUL)
disponible) z (Si SB(z).Qi) = x ) (SB(z).Qi = 0) Y (SB(z).Vi = RESUL)
ER(x).Busy
( ) y = No
Load: (Acceso a Escribir sobre CDB: (x, RESUL)
D← memoria z (Si Reg(z).Qi) = x ) (Reg(z).Qi = 0) Y (Reg(z).Vi = RESUL)
Mem[Dirección]
[ ] completo
p en z ((Si ER(z).Q
( ) Qj) = x ) ((ER(z).Q
( ) Qj = 0)) Y (ER(z).V
( ( ) j = RESUL))
LB(x)) Y (CDB z (Si ER(z).Qk) = x ) (ER(z).Qk = 0) Y (ER(z).Vk = RESUL)
disponible) z (Si SB(z).Qi) = x ) (SB(z).Qi = 0) Y (SB(z).Vi = RESUL)
LB(x) Busy = No
LB(x).Busy
Store:
Mem[Dirección] Nada Nada
←S
R
Resumen de
d ventajas
t j e inconvenientes
i i t
Elimina el cuello de botella de los registros
Permite el unrolling en HW
Complejidad
Excepciones imprecisas
Tipos de
d saltos:
l Estadísticas
E dí
En promedio
• Instrucciones de salto
1 de cada 5 instrucc.
• Saltos condicionales
2 de cada 3 saltos
• Saltos incondicionales
1 de cada 3 saltos
• Saltos tomados
5 de cada 6 saltos
• Saltos condicionales tomados
3 de cada 4 saltos condic.
• Saltos incondicionales tomados
Todos
Conclusión (en promedio)
• 1 de cada 6 instrucciones
es un salto tomado
• 1 de cada 8 instrucciones
es un salto condicional
• 1 de cada 10 instrucciones
es un salto condicional y tomado
Programas enteros una de cada 4-5 instrucciones. Flotantes 1 de cada 10-20 instrucciones
lloops fft
35 10 0
greep 90
gdi ff
30
gaw k
80
gcpp gaw k TeX
greep gccl
25 70 compress
espresso
compress gcpp
spi ce3 gccl
60
20 spi ce3
TeX espresso
gdi ff
% 50
%
15
40
10 30
20
fft
5 lloops
10
0 0
Predicción
P di ió
Idea Básica
Cuando se detecta una instrucción de salto condicional sin resolver
• Se supone o predice el camino del salto: tomado o no tomado (Taken - Untaken)
• Si el salto se p
predice como tomado se predice
p la dirección destino del salto
• La ejecución continúa de forma especulativa a lo largo del camino supuesto
Consideraciones generales
t1 t2 t3 t4 t5 t6 t7 t1 t2 t3 t4 t5 t6 t7
P
Programa
I1 F D E M W Programa
I1 F D E M W
I1
I2 F D E M W I1
I2 I2 F D E M W
BR F D E I2
BR Target BR F D E
I4 F TA BR Target
I4 I4 F D TA
It F D E M W I4
• I5 F
• It+1 •
F D E M W • It F D E M W
Target: Itarget F D E M W
Target:
g Itarget Itt+11
Itarget+1 Retardo Itarget+1 Retardo
(1 ciclo) (2 ciclos)
Ojo retardo
mínimo
Consideraciones generales
2)) Predecir la dirección de la instrucción destino del salto
con un retardo mínimo (para saltos tomados)
t1 t2 t3 t4 t5 t6 t7
Programa
I1 F D E M W
I1
I2 F D E M W
I2
BR F D E
BR Target
It F D E M W
I4 TA
It+1
• F D E M W
• It+2
Target: Itarget
Itarget+1 Retardo
(0 ciclo)
Actualización de la BTAC +1
Dirección
L a BTAC se actualiza cuando se ejecuta Dirección
destino
de la Tag
la instrucción de salto y se conoce: Instrucción
del salto Taken / Not Taken
• Si el salto fue tomado o no
• La dirección destino del salto
MUX
Sí el salto fue tomado
Sí el salto no fue tomado Dirección
de la
Si no estaba Si ya estaba Si estaba siguiente
en la BTAC en la BTAC en la BTAC instrucción
Clasificación
Cl ifi ió dde técnicas
é i d
de predicción
di ió d de saltos
l
Predicción de saltos
Estática Dinámica
Fundamento: La probabilidad de que un salto sea tomado depende del tipo de salto
El salto es tomado para ciertos códigos de operación y no tomado para otros
R7 He eliminado la transparencia anterior. Paco: supongo que querías eliminarla porque también hablaba de predicción basada en OpCode
Román; 26/09/2007
Tratamiento de Saltos: Predicción
Predictores Dinámicos
Idea básica
La predicción se realiza observando el comportamiento de las instrucciones de salto
en las últimas ejecuciones ( Historia )
Evolución
Predictores correlacionados
Predictores híbridos
Predicción
• Un salto que se toma repetidamente se predice como Taken
• Un salto que no se toma repetidamente se predice como Not taken
• Si un salto toma una dirección inusual una sola vez, el predictor mantiene la predicción usual
F
Funcionamiento
i i t
Máquina de cuatro estados: • Registro de historia
– Strongly not taken (00) – Contador saturado de 2 bits
– Weakly
y not taken (01)
( ) • Predicción
– Weakly taken (10) – bit más significativo del registro de historia
– Strongly taken (11)
Inicio T T
T
NT Weakly
Strongly Weakly Strongly
not taken not taken taken T Cambios de estado:
taken
(0 0) (0 1) (1 0) (1 1) T: el salto ha sido tomado
NT NT NT NT: el salto no ha sido tomado
Implementación
mp m de los bits de predicción
p
EJEMPLOS
EJEMPLOS
• Gmicro 100 256 x 1 bit
• MC 68060 256 x 2 bit
• PowerPC 604 512 x 2 bit
• Pentium 256 x 2 bit
• R10000 512 x 2 bit
• R8000 1K x 1 bit
• PowerPC 620 2K x 2 bit
• PM1 1K x 2 bit
• PA 8000 256 x 3 bit
• Pentium II 512x2 bit
• Alpha 21164A 2K x 2 bit
• Pentium 4 4kx2bits
• AMD64 16Kx2bits
MUX
Actualizar bits de predicción
Lógica de
• La dirección destino del salto BTA
Predicción
Actualizar BTA
Taken /
Predicción Implícita (sin bits de predicción) Not Taken
MUX
de la
El salto se predice como no tomado siguiente
+1 instrucción
DESVENTAJA: Sólo se pueden predecir aquellas instrucciones de salto que están en la BTB
Ventaja
Puede predecir instruc.que no están en la Dirección de la
BTAC (más entradas en BHT que en BTAC) instrucción de salto Bits de
Tag predicción
Desventaja Dirección
Aumenta el hardware necesario Tag destino
Taken /
del salto
2 tablas asociativas Not Taken
Acceso a la BHT
MUX
Lógica de
Predicción
• Usando los bits menos significativos de la dirección
– Sin TAGs Menor coste (opción + habitual)
BTA
– Compartición de entradas +1 BTA
Se degrada el rendimiento
• Asociativa por conjuntos MUX
– Mayor coste Tablas pequeñas
– Para un mismo coste hardware
Dirección de
Peor comportamiento la siguiente
BTAC BHT instrucción
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 70
Tratamiento de Saltos: Predicción
Predictores Dinámicos
Comportamiento
18% 18%18%
16%
14%
12% 12%
11%
10% 10%10%
9%9%
% 9%9%
%
8%
6%
5%5% 5% 5%
4%
2%
1% 1%
0% 0% 0%0% 0%
nasa7 matrix300 tomcatv doducd spice fpppp gcc espresso eqntott li
4096 entrdas. 2bits por entrdada Entrdas ilimitadas. 2bits por entrada
1 = Taken
For (i=1; i<=4; i++) { } Patrón: {1110}
0 = Not Taken
Ejemplo:
BNEZ R1, L1 ; salto b1 (Salto si d ≠ 0) R8
ADDI
DD R1,
R1 R0,
R0 #1 ; Como
C d=0,
d 0 hacer
h d=1
d 1
b1: if (d = 0) then L1: SUBI R3, R1, #1 ; R3=d(R1)-1
d=1 BNEZ R3, L2 ; salto b2 (Salto si d≠ 1)
b2: if
f ((d =1)) then ..........
L2
L2:
R3=0 d=1
R3≠0 d≠1
R8 Rehago comentarios
Román; 26/09/2007
Tratamiento de Saltos: Predicción
Predictores Dinámicos
Ejemplo ( continua )
Relación entre los dos saltos
BNEZ R1, L1 ; salto b1 (Salto si d ≠ 0)
ADDI R1, R0, #1 ; Como d=0, hacer d=1
L1
L1: SUBI R3 R3, R1,
R1 #1 ; R3=d(R1)-1
R3 d(R1) 1 C
Caso 1:
1 d=0,1,2,…
d 0 1 2
BNEZ R3, L2 ; salto b2 (Salto si d≠ 1)
..........
L2:
0 no NT 1 no NT
1 sii T 1 no NT
2 si T 2 si T
2 NT T T NT T T
0 T NT NT T NT NT
2 NT T T NT T T
0 T NT NT T NT NT
Muchos fallos de predicción
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 75
Tratamiento de Saltos: Predicción
Predictores Dinámicos
Solución
• Predictor de dos niveles (1,1):
(1 1):
Para cada salto existen 21 predictores de 1 bit. El comportamiento último salto
(1) determina el predictor que se usa.
• Predictor de dos niveles (m,n)
(m n)
Para cada salto existen 2m predictores de n bits. El comportamiento de los últimos
m saltos determinan el predictor que se usa
g
Significado de los bit de predicción
p en un predictor
p (1,1)
( )
Bits de Predicción si el Predicción si
predicción ultimo salto no el ultimo salto
tomado tomado
NT/NT NT NT
NT/T NT T
Dos predictores
d un bi
de bit T/NT
/ T NT
T/T T T
Caso 2: d=2,0,2,0,…
d=2 0 2 0
BNEZ R3, L2 ; salto b2 (Salto si d≠ 1)
..........
L2:
Predictores
P di Di
Dinámicos
á i
Dirección(4 bits)
4 predictores de 2-bits
Implementación para por salto (predictor
local)
Predictor de dos niveles (2,2)
R9 con 16 entradas
11 11 Predicción
00 01 10 11
0 1
2-bits de historia Global de saltos (2 Saltos anteriores)
(E
(Ejemplo:
l 011 = “not
“ taken”
k ” Y “taken”)
“ k ”)
R9 Añado "de 2 niveles" ¿De acuerdo? Nos hemos referido a "2 niveles" muchas veces en problemas y exámenes
Román; 26/09/2007
Tratamiento de Saltos: Predicción
Predictores Dinámicos
Comportamiento
0,2
0,18
0,16
0,14
edictions
0,12
0 11
0,11
uency of Mispre
0,1
0,08
Frequ
0,02
0,01 0,01
0
0
nasa7
7 matrix300
t i 300 t
tomcatv
t d d d
doducd spice
i f
fpppp gcc espresso eqntott
t tt li
4,096 entries: 2-bits per entry Unlimited entries: 2-bits/entry 1,024 entries (2,2)
edictor 2
edictor 1
Dirección
Mecanismo de selección
Pre
Pre
Elige, en cada caso, el predictor que haya
dado mejores resultados hasta el momento
MUX
Implementación del mecanismo de selección
Predicción
Para combinar dos predictores, P1 y P2, se utiliza una tabla de contadores saturados (Taken/Not taken)
de dos bits indexada por la dirección de la instrucción de salto
P1 P2 Actualiz. del contador • Si P2 acierta más que P1 Bit más signif. Predictor
seleccionado
Cont aumenta del contador
Fallo Fallo Cont no varía
• Si P1 acierta más que P2
Fallo
F Acierto Cont = Cont +1
Cont
C t disminuye
di i 0 P1
Acierto Fallo Cont = Cont -1
Acierto Acierto Cont no varía 1 P2
Tabla de Predicción
10 Predicción
Historia Local
Global
Local
(1024x10) (1024x3)
(4096x2)
MSB 12
MSB
10
PC 12
0 1 Juez
(4096x2)
MSB
Si (a=0)
TNTN ...
(se toma alternativamente)
Si (b=0)
NNNN ... (nunca se toma)
“Si(a=0)” se ha tomado:
TH Local Pred Local
0000000000
PC de “Si (b=0)”
000
PC de “Si (a=0)”
0101010101
000
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 83
Ejemplos de funcionamiento (2)
Si (a=0)
TNTN ...
(se toma alternativamente)
Si (b=0)
NNNN ... (nunca se toma)
“Si(a=0)” no se ha tomado:
TH Local Pred Local
0000000000 111
PC de “Si (b=0)”
000
PC de “Si (a=0)”
1010101010
000
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 84
Ejemplos de funcionamiento (3)
Si (b=0)
T
Comportamiento
0
últimos 12 saltos
Si (a=b)
Predecir T
88%
gcc 70%
94%
7%
Local
6%
5%
Dos niveles
4%
3%
2%
Híbrido
1%
0%
0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128
14
13
13
12
12
ons per 1000 Instructions
11
11
10
9 9
8
7
7
Branch mispredictio
6
5
5
1 1
0 0 0
0
id
u
r
ip
e
c
ty
im
a
cf
vp
gc
is
es
pl
m
gr
gz
af
sw
w
ap
5.
6.
m
SPECint2000 SPECfp2000
1.
cr
m
4.
up
1.
17
17
7.
3.
18
6.
2.
16
17
17
17
18
17
8.
16
FT1 No entiendo estos datos. ¿tienen relación con la gráfica? ¿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
Tratamiento de Saltos: Predicción
Predicción
P di ió d de llos retornos
EJEMPLOS
• UltraSparc I, II 4 entradas
• Pemtium
P ti Pro
P 16 entradas
t d
• R10000 1 entrada
F D F D
F D
Detección de saltos
Detección de saltos Detección de saltos
Recuperación
R ió dde f
fallos
ll d de predicción
di ió ((misprediction)
i di i )
Tareas básicas
1) Descartar los resultados de las instrucciones ejecutadas especulativamente
2)) Reanudar la ejecución
j p
por el camino correcto con un retardo mínimo
Ejemplos:
j p PowerPC 601 – 603 - 605
Ejemplo
BNEZ R1, L
MOV R2, R3 CMOVZ R2, R3, R1
L
Ejemplo
Blt a,10,L1
T pred_lt p1(U),p2(U),a,10
F
If ( a< 10)
c = c+1 add c,c,1 (p2)
p2 add c,c,1 Bgt b,20, L2 p1
else
if ( b>20)) F pred_gt p3(U), p4(U),b,20 (p1)
T
d = d+1 p4 Add d,d,1
else Add e,e,1 p3 add d,d,1 (p4)
e = e+1
add e,e,1 (p3)
Resumen
Predictores
Predict res de dos
d s niveles buen
buenoss para IF then else
La
L ppredicción
di ión dde ssaltos
lt s int
introduce
du ESPECULACION
o Dos tipos de instrucciones en el procesador
Las independientes
p
Las que dependen de una predición de salto. Su
finalización depende del acierto o fallo en la
p
predicción.
Modificando el Algoritmo
g de Tomasulo para
p forzar finalización en orden
Algoritmo
l de
d TOMASULO
Load1
Load2 Load
L d
Load3 Buffers
Load4
Load5
Load6 Store
B ff
Buffers
Add1
Add2 Mult1
Add3
dd3 M lt2
Mult2
Estaciones A Memoria
De Reserva
SumadorFP MultiplicadorFP
Algoritmo
l de
d TOMASULO con especulación
l ó
Buffer de Reordenamiento
Load1 Reg
Load A Memoria
Load2
Load3 Buffers Dato
Load4
Load5
Load6
Add1
Add2 Mult1
Add3 Mult2
E
Estaciones
i
De Reserva
SumadorFP MultiplicadorFP
L
Los operandos
d d de una iinstrucción
t ió pueden
d llllegar h
hasta
t
la ER desde:
o Registros (la instrucción que genera el operando ha
fi li d completamente)
finalizado l )
o ROB (la instrucción que genera el operando se ha
ejecutado, pero no ha actualizado el banco de registros)
o CBD (la
(l instrucción
i ió que genera ell operando
d todavía
d í no ha
h
realizado la fase de escritura)
Estructura
Est u tu del
d l ROB: cada
d entrada
nt d contiene
nti n 4 campos
mp s
o Tipo de instrucción
R14 Salto ((sin reg
g destino),
) Store ((destino en memoria), )
Aritmética/Load (con destino en registro)
o Destino
Número de registro (Aritmética/Load)
Dirección de memoria (Store)
o Valor
Resultado
R l d d de lla ejecución
j ió dde lla iinstrucción.
ió G Guarda
d ell
valor hasta que se actualiza registro destino o
memoria.
o Listo
La instrucción ha completado la fase de ejecución y el
resultado está disponible en el campo “Valor”
Algoritmo
l de
d TOMASULO con especulación
l ó
•Los 4 estados del algoritmo de Tomasulo especulativo
Issue: Toma la instrucción 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
RH2
Marca ER asignada
g con nº de ROB asignado
g
Ejecución: Opera sobre los operandos
Espera hasta que los operandos estén disponibles. Chequea CDB.
Escribe resultados: Finaliza ejecución
Escribe a través de CDB en todas las ER de Fus y entradas del ROB que estén a
la espera del resultado. Libera ER. No escribe en registros, ni memoria.
Envía p
por CDB resultado + nº de ROB al que se dirige
g RH3
Commit: Actualiza registros desde el ROB
Cuando la Instrucción esta en la cabecera del ROB y resultado presente:
Actualiza Registro (o escribe en memoria) y elimina la instrucción del ROB.
R15
Tratamiento de saltos y Excepciones
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 101
Diapositiva 101
RH2 Nuevo
RH; 23/11/2008
RH3 Nuevo
RH; 23/11/2008
R16 Especulación: Ejemplo
Buffer de Reordenamiento
Se lanza: LD F0,10(R2) Dest Valor Tipo Listo Nº de ROB
7
6
5
4
De Memoria
3
Cola
2
de Ope
Dest FP
F0 LD F0,10(R2) N 1 Registros
1 10+R2 10
Reg 8
6
Load A Memoria Dato 4
Buffers 2
1 0
Dest Valor
D st
Dest
Nº de ROB
que producirá
el valor
Estaciones
De Reserva
SumadorFP MultiplicadorFP
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 explícitamente la instrucción que se lanza, ejecuta o finaliza.
Román; 01/10/2007
Especulación: Ejemplo
Buffer de Reordenamiento
Se lanza: ADDD F10,F4,F0 Dest Valor Tipo Listo Nº de ROB
7
6
5
4
De Memoria
3
Cola F10 ADDD F10,F4,F0 N 2
de Ope
Dest FP
F0 LD F0,10(R2) N 1 Registros
1 10+R2 2 10
Reg 8
6
Load A Memoria Dato 4
Buffers 2
1 0
Dest
2 ADDD R(F4), ROB1 D st
Dest
Estaciones
De Reserva
SumadorFP MultiplicadorFP
Buffer de Reordenamiento
Se lanza: DIVD F2,F10,F6 Dest Valor Tipo Listo Nº de ROB
7
6
5
4
De Memoria F2 DIVD F2,F10,F6 N 3
Cola F10 ADDD F10,F4,F0 N 2
de Ope
Dest FP
F0 LD F0,10(R2) N 1 Registros
1 10+R2 2 10
Reg 8
6
Load A Memoria Dato 4
Buffers 3 2
1 0
Dest
2 ADDD R(F4), ROB1 Dest
D st
3 DIVD ROB2,R(F6)
Estaciones
De Reserva
SumadorFP MultiplicadorFP
Buffer de Reordenamiento
Se lanza: BNE F2, --- Dest Valor Tipo Listo Nº de ROB
LD F4, 0(R3) 7
ADDD F0,F4,F6 F0 ADDD F0,F4,F6 N 6
F4 LD F4,0(R3)
, ( ) N 5
--- BNE F2,--- N 4
De Memoria F2 DIVD F2,F10,F6 N 3
Cola F10 ADDD F10,F4,F0 N 2
de Ope
Dest FP
F0 LD F0,10(R2) N 1 Registros
1 10+R2 2 10
5 0+R3 Reg 8
6
Load A Memoria Dato
5 4
Buffers 3 2
6 0
Dest
2 ADDD R(F4), ROB1 Dest
D st
6 ADDD ROB5, R(F6) 3 DIVD ROB2,R(F6)
Estaciones
De Reserva
SumadorFP MultiplicadorFP
Buffer de Reordenamiento
Se lanza: ST 0(R3), F4 Dest Valor Tipo Listo Nº de ROB
(sup R3=10) 10 ROB5 ST 0(R3),F4 N 7
F0 ADDD F0,F4,F6 N 6
F4 LD F4,0(R3)
, ( ) N 5
--- BNE F2,--- N 4
De Memoria F2 DIVD F2,F10,F6 N 3
Cola F10 ADDD F10,F4,F0 N 2
de Ope
Dest FP
F0 LD F0,10(R2) N 1 Registros
1 10+R2 2 10
5 0+R3 Reg 8
6
Load A Memoria Dato
5 4
Buffers 3 2
6 0
Dest
2 ADDD R(F4), ROB1 Dest
D st
6 ADDD ROB5, R(F6) 3 DIVD ROB2,R(F6)
Estaciones
De Reserva
SumadorFP MultiplicadorFP
Buffer de Reordenamiento
Se ejecuta: LD F4,0(R3) Dest Valor Tipo Listo Nº de ROB
10 M[10] ST 0(R3),F4 Y 7
F0 ADDD F0,F4,F6 N 6
F4 M[10]
[ ] LD F4,0(R3)
, ( ) Y 5
--- BNE F2,--- N 4
De Memoria F2 DIVD F2,F10,F6 N 3
Cola F10 ADDD F10,F4,F0 N 2
de Ope
Dest FP
F0 LD F0,10(R2) N 1 Registros
1 10+R2 2 10
Reg 8
6
Load A Memoria Dato
5 4
Buffers 3 2
6 0
Dest
2 ADDD R(F4), ROB1 Dest
D st
6 ADDD M[10], R(F6) 3 DIVD ROB2,R(F6)
Resultado a
ROB5 y todo Estaciones
ROB o ER con De Reserva
“marca” ROB5 SumadorFP MultiplicadorFP
Buffer de Reordenamiento
Se ejecuta: ADDD F0,F4,F6 Dest Valor Tipo Listo Nº de ROB
10 M[10] ST 0(R3),F4 Y 7
F0 F4+F6 ADDD F0,F4,F6 Y 6
F4 M[10]
[ ] LD F4,0(R3)
, ( ) Y 5
--- BNE F2,--- N 4
De Memoria F2 DIVD F2,F10,F6 N 3
Cola F10 ADDD F10,F4,F0 N 2
de Ope
Dest FP
F0 LD F0,10(R2) N 1 Registros
1 10+R2 2 10
Reg 8
6
Load A Memoria Dato
5 4
Buffers 3 2
6 0
Dest
2 ADDD R(F4), ROB1 Dest
D st
3 DIVD ROB2,R(F6)
Resultado a Estaciones
ROB6 y todo
ROB o ER con
De Reserva
“marca” ROB6 SumadorFP MultiplicadorFP
Buffer de Reordenamiento
Se ejecuta: LD F0,10(R2) Dest Valor Tipo Listo Nº de ROB
sup R2=10 10 M[10] ST 0(R3),F4 Y 7
F0 F4+F6 ADDD F0,F4,F6 Y 6
F4 M[10]
[ ] LD F4,0(R3)
, ( ) Y 5
--- BNE F2,--- N 4
De Memoria F2 DIVD F2,F10,F6 N 3
Cola F10 ADDD F10,F4,F0 N 2
de Ope
Dest FP
F0 M[20] LD F0,10(R2) Y 1 Registros
2 10
Reg 8
6
Load A Memoria Dato
5 4
Buffers 3 2
6 0
Dest
2 ADDD R(F4),M[20] Dest
D st
3 DIVD ROB2,R(F6)
Estaciones
De Reserva
SumadorFP MultiplicadorFP
Buffer de Reordenamiento
Se ejecuta: ADDD F10,F4,F0 Dest Valor Tipo Listo Nº de ROB
10 M[10] ST 0(R3),F4 Y 7
F0 F4+F6 ADDD F0,F4,F6 Y 6
F4 M[10]
[ ] LD F4,0(R3)
, ( ) Y 5
--- BNE F2,--- N 4
De Memoria F2 DIVD F2,F10,F6 N 3
Cola F10 * ADDD F10,F4,F0 Y 2
de Ope
Dest FP
F0 M[20] LD F0,10(R2) Y 1 Registros
2 10
Reg 8
6
Load A Memoria Dato
5 4
Buffers 3 2
6 0
Dest
Dest
D st
3 DIVD * ,R(F6)
Estaciones
De Reserva
SumadorFP MultiplicadorFP
* = R(F4)+M[20]
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 110
Especulación: Ejemplo
Buffer de Reordenamiento
Finaliza (Commit): LD F0,10(R2) Dest Valor Tipo Listo Nº de ROB
10 M[10] ST 0(R3),F4 Y 7
F0 F4+F6 ADDD F0,F4,F6 Y 6
F4 M[10]
[ ] LD F4,0(R3)
, ( ) Y 5
--- BNE F2,--- N 4
De Memoria F2 DIVD F2,F10,F6 N 3
Cola F10 * ADDD F10,F4,F0 Y 2
de Ope
Dest FP 1 Registros
2 10
Reg 8
6
Load A Memoria Dato
5 4
Buffers 3 2
6 M[20] 0
Dest
Dest
D st
3 DIVD * ,R(F6)
Estaciones
De Reserva
SumadorFP MultiplicadorFP
* = R(F4)+M[20]
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 111
Especulación: Ejemplo
Buffer de Reordenamiento
Finaliza (Commit): Dest Valor Tipo Listo Nº de ROB
ADDD F10,F4,F0 10 M[10] ST 0(R3),F4 Y 7
F0 F4+F6 ADDD F0,F4,F6 Y 6
F4 M[10]
[ ] LD F4,0(R3)
, ( ) Y 5
--- BNE F2,--- N 4
De Memoria F2 DIVD F2,F10,F6 N 3
Cola
2
de Ope
Dest FP 1 Registros
* 10
Reg 8
6
Load A Memoria Dato
5 4
Buffers 3 2
6 M[20] 0
Dest
Dest
D st
3 DIVD * ,R(F6)
Estaciones
De Reserva
SumadorFP MultiplicadorFP
* = R(F4)+M[20]
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 112
R17
Especulación: Riesgos a través de memoria
Ri
Riesgos
s s EDE y EDL: nno pueden
pu d n aparecer
p dado
d d que
u la
l
actualización de memoria se hace en orden.
o Esperar
p hasta que
q la instrucción ST se halle en la cabecera de
ROB => Todos los LD y ST anteriores se han completado.
El ROB permite
p mit recuperarse
up s de
d saltos
s lt s mal
m l predichos
p di h s e
implementar un modelo de excepciones precisas
Si una instrucción de salto bien predicha llega a
cabecera de ROB =>
o Eliminarla de ROB
Si una instrucción de salto mal predicha llega a
cabecera de ROB =>
o Borrar contenido del ROB
o Borrar marcas (campo “Nº de ROB)” de todos los registros.
o Buscar instrucción correcta.
Si una instrucción genera una interrupción =>
o Registrar la petición en el ROB
o Si la instrucción llega a la cabecera del ROB (no especulada),
especulada)
entonces reconocer la interrupción.
o Cualquier instrucción anterior habrá finalizado. Por tanto
ninguna instrucción anterior puede provocar una excepción.
excepción
F0 F2 F4 F6 F8 F10 F12 …
Estado de los registros FP Buffer Nº 3 6 4 5
Ocupado si no no si si si no
Un ejemplo
j mpl
MUL1 Libre MULT M(0+(R1))
( ( )) F2 #2
MUL2 Libre MULT M(0+(R1)) F2 #7
10 Ocupada
O d BNEZ R1,Loop
R1 L Escri.
E i R Res.
F0 F2 F4 F6 F8 F10 F12 …
R18 Se podría hacer unas tablas con el "Detalle de las fases" como el que hice para Tomasulo, pero es bastante más complicado.
¿Vale la pena?
Román; 01/10/2007