Вы находитесь на странице: 1из 134

Arquitectura de Computadores

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 2


Diapositiva 2

R1 He actualizado la referencia de HePa


Román; 26/09/2007
Introducción
 OBJETIVO
OBJETIVO: Ejecutar el mayor numero de instrucciones por ciclo

 Obtener el máximo numero de instrucciones independientes

CPI = CPI ideal + Penaliz. Media por Instr. (paradas “pipe”)

¿ Que
Q técnicas
té i conocemos?
?

Conflictos de recursos - Riesgos estructurales Replicación/segmentación


Dependencias de datos Cortocircuitos
Dependencias de control ( Un salto cada 4-7 instrucciones) Saltos retardados

Mecanismos para explotar ILP

Basados en HW en tiempo de ejecución ( dinámicos). Ej Pentium, AMD, IBM


Toda la información disponible en ejecución
Código independiente de la implementación
Basados en SW en tiempo de compilación (estáticos). Ej Itanium
Dependencias de memoria muy difíciles de determinar

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 3


Introducción

 Paralelismo a nivel de instrucción ILP

 Es la técnica consistente en explotar paralelismo entre instrucciones


próximas en la secuencia
 El bloque básico es muy pequeño
 Un bloque básico (BB) es una secuencia de código sin saltos. Un solo punto
de entrada y salida
 Solo de 4 a 7 instrucciones
 Fuertes dependencias entre ellas
 El camino es explotar
l ILP
LP entre varios BB
 El caso más 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 F. Tirado / R. Hermida (2010-11) 4


Introducción

 Técnicas para explotar ILP

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 5


Diapositiva 5

R3 Quito "trace scheduling" ya que no se estudia


Román; 26/09/2007
Dependencias

 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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 6


Dependencias

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

 Dependencia verdadera (LDE)

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 7


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 sólo a las LDE.

Sugiero unificar la nomenclatura, tal como queda en la transparencia


Román; 26/09/2007
Dependencias

 Dependencias de nombre ( Reutilización 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)


L iinstrucción
La t ió j escribe
ib ( Reg
R o memoria)
i ) antes
t d de que i llea.
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 ejecución deben preservar el orden del programa. Mismo resultado
que en ejecución secuencial
o Explotar todo el paralelismo posible sin afectar al resultado de la ejecución
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 instrucción depende


p de un conjunto
j de saltos y en general
g esta dependencia
p debe
preservarse para preservar el orden del programa

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

LO IMPORTANTE: el comportamiento de las excepciones y


el flujo de datos deben preservase

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 9


Dependencias

 Dependencias de control y Excepciones

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 control y flujo de datos

o Se debe mantener el flujoj de datos entre instrucciones p


productoras y
consumidoras de datos.
DADDU R1,R2,R3
BEQZ R4,L1
DSUBU R1,R5,R6
R1 R5 R6
L1: --- ---
OR R7,R1,R8
o OR usa el valor de DADDU o DSUBU dependiendo
p del comportamiento
p del salto.
El flujo de datos se debe preservar.

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 10


Dependencias
 El compilador se concentra en dependencias del programa
programa, no en riesgos
de un “pipe determinado”

 Dependencias de datos

Fáciles de determinar para registros


Difíciles para direcciones de memoria
¿S ell mismo
¿Son i dato
d 100( R4 ) y 20( R6 )?
En dos iteraciones diferentes 20(R6) y 20(R6) ¿son el mismo dato?

Debe conocer dependencias entre load y stores para permitir su reordenación


Más registros para evitar dependencias de nombre

 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

SOLUCIÓN : HW + SW (PROCESADOR + COMPILADOR)


AC — Tema 4 F. Tirado / R. Hermida (2010-11) 11
Técnicas SW para explotar ILP

 Un programa: Bucle simple


for ( i =1; i <= 1000; i++)
x (i) = x (i) + s ;
 Código maquina DLX
Loop LD F0,0(R1)
ADDD F4 F0 F2
F4,F0,F2
SD 0(R1),F4
SUBI R1,R1,#8
BNEZ R1 L p
R1,Loop R5

Instrucción que Instrucción Latencia


produce resultado que usa el de uso
resultado
FP ALU FP ALU 3
Datos de la etapa
p FP ALU
F STORE
S ORE F
FP 2
de ejecución
LOAD FP FP ALU 1

LOAD FP STORE FP 0

Entera Entera 0

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 12


Diapositiva 12

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

 Un programa: Bucle simple

for ( i =1; i <= 1000; i++)


x (i) = x (i) + s ;

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

Una instrucción cada 2 ciclos

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 13


Técnicas SW para explotar ILP
 Planificación
f de instrucciones

Loop LD F0,0(R1) Ciclo1 Reordenamiento para ocultar latencias


SUBI R1,R1,#8 2
ADDD F4,F0,F2 3 6 ciclos 1 instrucción por ciclo
Espera 4
BNEZ R1,Loop 5 2 ciclos de overhead por el salto
SD #8(R1),F4 6

 Desenrollado 4 veces para más paralelismo (elimina saltos)

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

3.5 ciclos por iteración


 Más registros (Imprescindible !!)

Mover SD después de SUBI, valor de R1

El compilador planifica para minimizar los riesgos y


eliminar
li i llas paradas
d d dell ““pipe”
i ”

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 15


Diapositiva 15

R20 Corregido error en nº registro


Román; 21/11/2007
Técnicas SW para explotar ILP

 Software
S ft ““pipelining”
i li i ”
• Idea:

Si las diferentes iteraciones de un bucle son independientes, tomemos


instrucciones de diferentes iteraciones para aumentar el ILP
R
Reorganiza
i llos b
bucles
l d de manera que cada
d iinstrucción
t ió pertenece
t a una
iteración diferente
Iteración 1
Iteración 2
Iteración 3
Iteración 4

Iteración 5

Iteración SW
Pipelened

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 16


Técnicas SW para explotar ILP
Software “pipelining”
pipelining
Antes: Unrolled 3 veces Después: Software Pipelined
1 LD F0,0(R1) 1 SD 0(R1),F4 ; Stores M[i]
2 ADDD F4 F0 F2
F4,F0,F2 2 ADDD F4 F0 F2 ; Adds
F4,F0,F2 Add to M[i-1]
M[i 1]
3 SD 0(R1),F4 3 LD F0,-16(R1); Loads M[i-2]
4 LD F6,-8(R1) 4 SUBI R1,R1,#8
5 ADDD F8 F6 F2
F8,F6,F2 5 BNEZ R1,LOOP
6 SD -8(R1),F8
7 LD F10,-16(R1)
8 ADDD F12,F10,F2 SW Pipeline
9 SD -16(R1),F12
16(R1) F12
10 SUBI R1,R1,#24

d ops
11 BNEZ R1,LOOP
Time
erlapped Loop Unrolled
 Loop unrolling simbólico
ove

•Maximiza la distancia resultado-uso


•Menor tamaño del código
•Llenado y vaciado del pipe solo una vez
Time

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 17


Técnicas SW para explotar ILP
Ej
Ejecución
ió SW pipelined
i li d (suposición
( i ió R1=1000)
R1 1000)

F0  M(1000) LD F0, 0(R1)


F4  F0 + F2 ; M(1000)+F2 Cabecera
C b ADDD F4 F0 F2
F4,F0,F2
F0  M(992) LD F0,-8(R1)
-----------------------------------------------------------------
M(1000)  F4 ; M(1000)+F2 SD 0(R1),F4 ; Stores M[i]
F4  F0 + F2 ; M(992)+F2 ADDD F4 F0 F2 ; Adds
F4,F0,F2 Add to
t M[i-1]
M[i 1]
Iteración 1
F0  M(984) LD F0,-16(R1); Loads M[i-2]
R1  992
----------------------------------------
M(992)  F4 ; M(992)
M(992)+F2
F2
F4  F0 + F2 ; M(984)+F2 SD 0(R1),F4
Iteración 2 ADDD F4,F0,F2
F0  M(976)
R1  984 LD F0,-16(R1)
---------------------------------------


F0  M(0) ; Ahora R1=16 Iteración n
R1  8
-----------------------------------------------------------------
M(8)  F4 ; M(8)+F2 SD 0(R1),F4
F4  F0 + F2 ; M(0)+F2 Cola ADDD F4,F0,F2
, ,
M(0)  F4 ; M(0)+F2 SD -8(R1),F4

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 18


Técnicas SW para explotar ILP

 Comparación
ó

• Bloque grande para planificar


 Loop Unrolling • Reduce el numero de saltos
• Incrementa el tamaño del código
• Tiene
n qu
que incluir
nc u r iteraciones
t rac on s extra
tra
• Presión sobre el uso de registros

• No hay dependencias en el cuerpo del bucle


 Software Pipelining
• No reduce el numero de saltos
• Necesita inicio y finalización especial

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 19


Tratamiento de dependencias de datos en ejecución

 Planificación dinámica : Procesador.


Procesador

Modifica la secuencia de instrucciones resolviendo las dependencias en tiempo de


ejecución Disponibilidad de más unidades funcionales.
ejecución. funcionales Código valido para diferentes
implementaciones

 Problema : Lanzamiento de instrucciones en orden.

DIVD F0,F2,F4 S1 S2 depende de S1


ADDD F10,F0,F8 S2
SUBD F12,F8,F14 S3 S3 es independiente de la demás

La etapa ID bloquea la ejecución en S2 hasta que se resuelve la dependencia ( F0


disponible) y SUBD no puede ejecutarse.

 Solución : Dividir la etapa ID en dos etapas diferenciadas.


Issue: Decodifica y chequea riesgos estructurales.
Lectura de operandos : Chequea disponibilidad de operandos
operandos. Debe implementarse para
permitir el flujo de instrucciones.

Ejecución fuera de orden  ¿Finalización fuera de orden?

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 20


Planificación Dinámica : Tomasulo

 ((IBM
BM 360/91,
6 /9 , año 1967)
967)

 Elimina dinámicamente los riesgos EDE y EDL mediante el renombrado de


registros
g

 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ó

 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, …

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 21


Diapositiva 21

R6 He eliminado el párrafo dedicado a diferencias con Scoreboard


Román; 26/09/2007
Planificación Dinámica : Tomasulo

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

Op Qj Valorj Qk Valork Busy Estaciones A Memoria


D Reserva
De R
SumadorFP MultiplicadorFP

Common Data Bus (CDB)

Excepciones imprecisas
Issue en orden–- Ejecución fuera de orden—Finalización fuera de orden

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 22


Planificación Dinámica : Tomasulo
 Tres estados para una instrucción en el algoritmo
1 Issue
Toma la instrucción de la cola de instrucciones. Envía la instrucción a la ER
correspondiente si hay entradas disponibles. Envía los operandos si están disponibles o
UF que los generara.
generara En load/store si hay buffer libre.
libre
(Copiar “Tag+Valor” de registros fuente sobre campos “Tag+Valor” de ER)
Marca registro destino (tag) con ID de la ER que ejecutará la instrucción
2 Ejecución
Monitoriza CDB para disponibilidad de operandos. Cuando lista manda ejecutar.
3 Escritura de resultados
Vía CDB en registros y estaciones de reserva (ER) y marca ER como libre.
Bus normal: dato + destino,
destino “ va a “
CDB: dato + fuente, “ viene de”
No chequea riesgo EDE ni EDL (renombrado dinámico)

 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

Suposiciones: S1 y S2 ya lanzadas a ejecución


ejecución, S3 se va a lanzar

Estado inicial de registros:


TAG VALOR
F0 ?? ??
F2 Y ??
F4 Z ??

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 24


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

Paso 1: Lanzamiento de ADD a la ER X (X es una ER libre de


la UF de Suma/Resta de Punto Flotante)

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 ??

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 25


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
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 ??

b) Escritura del resultado de S2 sobre el CDB:


Estado de registros
TAG VALOR
Estación de reserva
F0 X ??
Busy OP TAGj Valorj TAGk Valork
X yes + 0 22.57 0 3.2 F2 0 22 57
22.57
F4 0 3.2
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 26
Planificación Dinámica : Tomasulo

Ej mpl : Ejecución


Ejemplo: Ej u ión de
d la
l secuencia:
s u n i :
(S1): COD1 F2, ---, ---
((S2):
) COD2 F4, ---, ---
(S3): ADDDF0, F2, F4
Paso 3: Ejecutar operación y escribir resultado sobre el
CDB

Estado de registros
UF TAG VALOR
F0 0 25.77
(X,25.77)
F2 0 22.57
F4 0 32
3.2
CDB

A todas las ER, Store Buffers y


Registros que tengan la marca X

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 27


Planificación Dinámica:TOMASULO
 Ejemplo
LD 2 ciclos, ADDD y SUBD 2 ciclos, MULT 10 ciclos, DIVD 40 ciclos

Instuc J K Issue Ejecución escritura


Ocupada Dirección
LD F6 34+ R2 Load1
Load2
LD F2 45+ R3
Load3
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


Estado de ER
Vj Vk Qj Qk
Operación
Add1
Qj y Qk ER produciendo
produc endo
Add2
operandos
Vj y Vk valores de los operandos Add3
Mul1
Mul2

Estado de REG F0 F2 F4 F6 F8 F10 F12


Qué FU escribirá en el Reg
Q g FU

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 28


Planificación Dinámica:TOMASULO

 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

Estado de REG F0 F2 F4 F6 F8 F10 F12


FU Load1

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 29


Planificación Dinámica:TOMASULO
 Ciclo 2

Instuc J K Issue Ejecución escritura


Ocupada Dirección
LD F6 34+ R2 1 Load1 SI 34+R2
Load2 SI 45+R3
LD F2 45+ R3 2
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

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 30


Planificación Dinámica:TOMASULO

 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

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 SI Mult R(F4) Load2
Mul2 NO

F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU Mult1 Load2 Load1

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 31


Planificación Dinámica:TOMASULO

 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

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K


Vj Vk Qj Qk
Add1 SI Subd M(34+R2) Load2
Add2 NO
Estado de ER Add3 NO
Mul1 SI Mult R(F4) Load2
Mul2 NO

F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU Mult1 Load2 M(34+R2) Add1

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 32


Planificación Dinámica:TOMASULO
 Ciclo 6

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
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K


Ningún bloqueo Vj Vk Qj Qk
2 Add1 SI Subd M(34+R2) M(45+R3)
Add2 SI Addd M(45+R3) Add1
Estado de ER Add3 NO
10 Mul1 SI Mult M(45+R3) R(F4)
Mul2 SI Divd M(34+R2) Mult1

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

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

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K


Vj Vk Qj Qk
Add1 NO
2 Add2 SI Addd M()-M() M(45+R3)
Estado de ER Add3 NO
7 Mul1 SI Mult M(45+R3) R(F4)
Mul2 SI Divd M(34+R2) Mult1

F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU Mul1 M(45+R3) Add2 M()-M()
M() M() Mul2

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 34


Planificación Dinámica:TOMASULO

 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

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
3 Mul1 SI Mult M(45+R3) R(F4)
Mul2 SI Divd M(34+R2) Mult1

F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU Mul1 M(45+R3) F8+M() M()-M()
M() M() Mul2

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 35


Planificación Dinámica:TOMASULO
 Ciclo 16

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 6-15 16
SUBD F8 F6 F2 4 6-7 8
DIVD F10 F0 F6 5
ADDD F6 F8 F2 6 9-10 11

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
40 Mul2 SI Divd M*F4 M(34+R2)

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 36


Planificación Dinámica:TOMASULO

 Ciclo 57 Fi li ió en d
Finalización desorden
d  Excepciones
E i

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 6-15 16
SUBD F8 F6 F2 4 6-7 8
DIVD F10 F0 F6 5 17-56 57
ADDD F6 F8 F2 6 9-10 11

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:K


Vj Vk Qj Qk
Add1 NO
Estado de ER Add2 NO
Add3 NO
Mul1 NO
Mul2 SI Divd M*F4 M(34+R2)

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 37


Planificación Dinámica:TOMASULO

 Renombrado dinámico en un unrolling


Loop LD F0,0(R1)
MULTD F4,F0,F2
SD 0(R1),F4
SUBI R1,R1,#8
BNEZ R1,Loop

Operación: vector F0 * escalar F2

Suposiciones:
MULT 4 ciclos
En 1ª iter
iter. Load 8 ciclos ( fallo ),
) en 2ª 1 ciclo (acierto)
Mostraremos dos iteraciones

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 38


Planificación Dinámica:TOMASULO
 Bucle
l

Instuc J K Issue Ejecución escritura Ocupada Dirección


Load1 NO
LD F0 0 R1 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

F0 F2 F4 F6 F8 F10 F12
Estado de REG
FU

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 39


Planificación Dinámica:TOMASULO

 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

Estado de REG F0 F2 F4 F6 F8 F10 F12


R1=80
R 80 FU Load1
Ojo latencia del primer load
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 40
Planificación Dinámica:TOMASULO

 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

Estado de REG F0 F2 F4 F6 F8 F10 F12


R1=80
R 80 FU Load1 Mul1
Ojo latencia del 1 load
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 41
Planificación Dinámica:TOMASULO

 Ciclo
l 3

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 3 store1 SI 80 Mult1
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

Estado de REG F0 F2 F4 F6 F8 F10 F12


R1=80
R 80 FU Load1 Mul1
Ojo latencia del 1er load
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 42
Planificación Dinámica:TOMASULO

 Ciclo 6
Cierre del bucle

Instuc J K Issue Ejecución escritura Ocupada Dirección


Load1 SI 80
LD F0 0 R1 1 load2 SI 72
MULT F4 F0 F2 2 load3 NO Qi
SD F4 0 R1 3 store1 SI 80 Mult1
LD F0 0 R1 6 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

Estado de REG F0 F2 F4 F6 F8 F10 F12


R1=72
R 7 FU Load2 Mul1
Ojo latencia del 1 load Renombrado
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 43
Planificación Dinámica:TOMASULO

 Ciclo
l 7

Instuc J K Issue Ejecución escritura Ocupada Dirección


Load1 SI 80
LD F0 0 R1 1 load2 SI 72
MULT F4 F0 F2 2 load3 NO Qi
SD F4 0 R1 3 store1 SI 80 Mult1
LD F0 0 R1 6 store2 NO
MULT F4 F0 F2 7 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 SI MULT R(F2) Load2
BNEZ R1,Loop
R1 Loop

Estado de REG F0 F2 F4 F6 F8 F10 F12


R1=72
R 7 FU Load2 Mul2
Ojo latencia del 1 load Renombrado
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 44
Planificación Dinámica:TOMASULO

 Ciclo
l 10

Instuc J K Issue Ejecución escritura Ocupada Dirección


Load1 NO
LD F0 0 R1 1 2- 9 10 load2 SI 72
MULT F4 F0 F2 2 load3 NO Qi
SD F4 0 R1 3 store1 SI 80 Mult1
LD F0 0 R1 6 7-10 store2 SI 72 Mult2
MULT F4 F0 F2 7 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
4 Mul1 SI MULT M(80) R(F2)
SUBI R1,R1,#8
Mul2 SI MULT R(F2) Load2
BNEZ R1,Loop
R1 Loop

Estado de REG F0 F2 F4 F6 F8 F10 F12


R1=64
R 64 FU Load2 Mul2
Ojo latencia del 1 load
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 45
Planificación Dinámica:TOMASULO

 Ciclo
l 11

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 load3 SI 64 Qi
SD F4 0 R1 3 store1 SI 80 Mult1
LD F0 0 R1 6 7-10 11 store2 SI 72 Mult2
MULT F4 F0 F2 7 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
3 Mul1 SI MULT M(80) R(F2)
SUBI R1,R1,#8
4 Mul2 SI MULT M(72) R(F2)
BNEZ R1,Loop
R1 Loop

Estado de REG F0 F2 F4 F6 F8 F10 F12


R1=64
R 64 FU Mul2

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 46


Planificación Dinámica:TOMASULO

 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

Estado de REG F0 F2 F4 F6 F8 F10 F12


6
R1=64 FU Mul2

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 47


Planificación Dinámica:TOMASULO

 Ciclo
l 16

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 16 -- store1 NO
LD F0 0 R1 6 7-10 11 store2 SI 72 M()*F2
MULT F4 F0 F2 7 12-15 16 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
BNEZ R1,Loop
R1 Loop

Estado de REG F0 F2 F4 F6 F8 F10 F12


R1=64
R 64 FU

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 48


Planificación Dinámica:TOMASULO

 Ciclo
l 17

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 16 -- store1 NO
LD F0 0 R1 6 7-10 11 store2 NO
MULT F4 F0 F2 7 12-15 16 store3 NO
SD F4 0 R1 8 17 --
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

Estado de REG F0 F2 F4 F6 F8 F10 F12


R1=64
R 64 FU

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 49


Planificación Dinámica:TOMASULO (detalle de las fases)

N m n l tu :
Nomenclatura:

o Instrucción aritmética: D ← OP ((S1, S2))


 Instrucción aritmética que realiza la operación OP sobre el contenido de
los registros S1 y S2, y deposita el resultado en el registro D
o Instrucción Load: D ← Mem[Dirección]
[ ]
 Carga en el registro D el contenido de la posición de memoria “Dirección”
o Instrucción Store: Mem[Dirección] ← S
 Almacena el contenido del registro S en la posición de memoria “Dirección”
Dirección

o Estación de reserva x: ER(x)(Busy, OP, Qj , Vj , Qk , Vk)


o Registro
R ist x: R (x)( Qi , Vi )
Reg(x)(
o Load Buffer x: LB(x)(Busy, Dir)
o Store Buffer x: SB(x)( Busy, Dir, Qi , Vi )
R19

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 50


Diapositiva 50

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 …

Aritmética: La estación de reserva ER(x) ER(x).Busy ← Yes


D ← OP (S1, S2) está libre y es capaz de ER(x).OP ← OP
ejecutar OP ER(x).Qj ← Reg(S1).Qi
ER(x) Vj ← Reg(S1).V
ER(x).V Reg(S1) Vi
ER(x).Qk ← Reg(S2).Qi
ER(x).Vk ← Reg(S2).Vi

Reg(D).Qi ← x

Load: El Load Buffer LB(x) está LB(x).Busy ← Yes


D ← Mem[Dirección] libre LB(x) Dir ← Dirección
LB(x).Dir

Reg(D).Qi ← x

Store: El Store Buffer SB(x) está SB(x).Busy ← Yes


Mem[Dirección] ← S libre SB(x).Dir ← Dirección
SB(x).Qi ← Reg(S).Qi
SB(x) Vi ← Reg(S).V
SB(x).V Reg(S) Vi

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 51


Planificación Dinámica:TOMASULO (detalle de las fases)

 Fase Ejecución
Tipo de instrucción Esperar hasta que … Hacer …

Aritmética: (ER( ) Qj = 0) Y (ER(


(ER(x).Q (ER(x).Q
) Qk = 0) Ejecutar
Ejec tar cálculo
cálc lo OP sobre la UF
D ← OP (S1, S2) usando operandos Vj y Vk
Generar RESULTADO

Load: (La dirección efectiva está RESULTADO ← Mem[LB(x).Dir]


D ← Mem[Dirección] disponible) Y
(LB(x).Dir no tiene
d
dependencias
d i respecto t de
d
Stores lanzados antes)

(Uso de cola de Load / Store:


explicación posterior)
Store: (La dirección efectiva está Mem[SB(x).Dir] ← SB(x).Vi
Mem[Dirección] ← S disponible) Y SB(x).Busy ← No
(SB( ) Di no tiene
(SB(x).Dir i
depenedencias con Load ni
Sores previos) Y
(SB(x).Qi) = 0)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 52


Planificación Dinámica:TOMASULO (detalle de las fases)

 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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 53


Planificación Dinámica:TOMASULO

R
Resumen de
d ventajas
t j e inconvenientes
i i t
 Elimina el cuello de botella de los registros

 Evita EDL y EDE

 Permite el unrolling en HW

 No esta limitado a bloques


q básicos si existe predicción
p de saltos

 Complejidad

 Muchos cargas de registros asociativas por ciclo

 CDB limita el rendimiento

 Excepciones imprecisas

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 54


Reduciendo la penalización de los saltos

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 55


Reduciendo la penalización de los saltos

 Tipos de saltos: Estadísticas


Frcuencia diámica de saltos Frcuencia de saltos tomados

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

• Frecuencia de los saltos depende del tipo de programa


Conclusión
• El comportamiento depende del tipo de programa

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 56


Reduciendo la penalización de los saltos

 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

Cuando se resuelve la condición


• Sii la
l predicción
di ió fue
f correcta
 La ejecución se confirma y continúa normalmente
• Si la predicción fue incorrecta (fallo de predicción o “misprediction”)
 Se
S ddescartan
t ttodas
d llas iinstrucciones
t i ejecutadas
j t d especulativamente
l ti t
 Se reanuda la ejecución a lo largo del camino correcto

Problemas a resolver en instrucciones de salto


1) Predecir el camino que tomará el salto
• TAKEN (Tomado)
• UNTAKEN (No Tomado)
2) Predecir la dirección de la instrucción destino del salto con un retardo mínimo (para saltos tomados)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 57


Tratamiento de Saltos: Predicción

 Consideraciones generales

1) Predecir el camino que tomará el salto

TAKEN (Tomado) PREDICCIÓN CORRECTA TAKEN (Tomado) PREDICCIÓN INCORRECTA

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 58


Tratamiento de Saltos: Predicción

 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)

• Detectar lo más pronto posible el salto: En buffer de instrucciones, al


buscarla en la cache…. Más importante para pipes de más etapas (frecuencia)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 59


Tratamiento de Saltos: Predicción
 Acceso a la instrucción destino del salto I
Branch Target Address Cache (BTAC)
• Cache que almacena la dirección destino de los últimos saltos tomados
• Cuando se accede a una instrucción de salto
 Se accede simultáneamente a la BTAC utilizando la dirección de la instrucción de salto
 Si la instrucción está en la BTAC y el salto se predice como tomado
 la dirección destino del salto se lee de la BTAC

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

Se introduce Se actualiza su dirección Se elimina


en la BTAC destino en la BTAC de la BTAC
BTAC
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 60
Tratamiento de Saltos: Predicción
 Acceso a la instrucción destino del salto II
Alternativas de diseño de la BTAC

Cache Totalmente Cache Asociativa por


Cache de Acceso Directo Asociativa conjuntos

Ventaja: Menor coste


Ventaja: menos Aliasing Solución intermedia
Desventaja: “Aliasing”
Desventaja: Mayor coste HW
(destrucción de información
si dos saltos compiten por
la misma entrada)

EJEMPLOS: Pentium (256) , Pentium II (512), Pentium 4 (4K) , AMD 64 (2K)

Variación Branch Target Instruction Cache


• Almacenar la instrucción “más ventajas”si tempo de acceso a las instrucciones es alto
• Ejemplos: AMD K6,K7, NexGen Nx586

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 61


Tratamiento de Saltos: Predicció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

Basada en Basada en Dirigida por Historia


Fija Historia Híbridos
Desplaz
Desplaz. Opcode Compilador Global
Local

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 62


Tratamiento de Saltos: Predicción
 Predicción estática
Predicción Fija

ALWAYS TAKEN ALWAYS NOT TAKEN


• Predecir todos los saltos como tomados • Predecir todos los saltos como no tomados
• Mayor número de aciertos de predicción • Menor número de aciertos de predicción
(3 de cada 4 saltos cond. son tomados)
(sólo 1 de cada 4 saltos cond. es no tomado)
• Mayor coste hardware (necesita almacenar
la dirección destino del salto) • Menor coste hardware

Predicción basada en la DIRECCIÓN del salto

Saltos hacia atrás : TOMADOS Saltos hacia delante: NO TOMADOS

La mayoría de saltos hacia atrás La mayoría de saltos hacia delante


corresponden
d ab bucles
l corresponden a IF-THEN-ELSE
E E E

Mal comportamiento en programas con pocos bucles y muchos IF-THEN-ELSE

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 63


Tratamiento de Saltos: Predicción
 Predicción estática
Predicción basada en el OPCODE de la instrucción de salto R7

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

Predicción dirigida por el COMPILADOR

Basada en el tipo Basada en Especificado por


de CONSTRUCCIÓN PROFILING el PROGRAMADOR

El compilador predice El compilador predice en función El programador indica al


si el salto será tomado o no del comportamiento de esa compilador si el salto debe
dependiendo del tipo instrucción en ejecuciones ser tomado o no
de construcc
construcción
ón de control previas
prev as del programa (mediante
(med ante d
directivas
rect vas espec
específicas)
f cas)

• Se añade un Bit de Predicción al opcode de la instrucción


• El compilador activa o desactiva este bit para indicar su predicción

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 64


Diapositiva 64

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 )

Necesario almacenar la historia de las ultimas ejecución del salto

Predictores de Predictores de Predictores de


1 bit de historia 2 bits de historia (bimodal) 3 bits de historia

EJEMPLOS EJEMPLOS • PA 8500 (1999) EJEMPLOS


• Gmicro 100 (1991) • MC68060 (1993) • UltraSparc (1995)
• Alpha 21064 (1992) • Pentium (1994) • PowerPC 604 (1995) • PA 8000 (1996)
• R8000 (1994) • Alpha 21064A (1994) • PowerPC 620 (1996)
• Alpha 21164 (1995) • R10000 (1996)

Evolución
Predictores correlacionados
Predictores híbridos

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 65


Tratamiento de Saltos: Predicción
 Predictores Dinámicos
Predictor de un BIT
• Utilizan un bit de predicción por cada instrucción de salto
• El bit de predicción refleja el comportamiento de la última ejecución de la instrucción
de salto
Indica si en la anterior ejecución el salto fue tomado o no
Predicción
• El salto se predice como Taken si en la última ejecución fue tomado
• El salto se predice como Not Taken si en la última ejecución no fue tomado
NT Inicio
FUNCIONAMIENTO
• Máquina de dos estados:
– Not taken (0) RH1
– Taken
T k (1) Taken Not taken NT
T
(1) (0)
• Registro de historia
– Contador saturado de 1 bit T
• Predicción
– Valor
V l del
d l registro
i t d de hi
historia
t i

LIMITACIÓN Predicción: Taken Predicción: Not taken


• Sólo se registra el comportamiento Más Bits Cambios de estado:
de la última ejecución del salto T: el salto ha sido tomado
• Dos malas predicciones en los cambios NT: el salto no ha sido tomado

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 66


Diapositiva 66

RH1 Corregidos los bits


RH; 17/11/2008
Tratamiento de Saltos: Predicción
 Predictores Dinámicos
Predictor de dos bits (BIMODAL)
• Utilizan dos bits de predicción por cada instrucción de salto
• Estos bits reflejan el comportamiento de las últimas ejecuciones de ese salto

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

Predicción: Predicción: Predicción: Predicción:


Not taken Not taken Taken Taken
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 67
Tratamiento de Saltos: Predicción
 Predictores Dinámicos

Implementación
mp m de los bits de predicción
p

1) Branch Target Buffer (BTB) 2) Tabla de historia de saltos (BHT)


Añade los bits de predicción a las
Utiliza una tabla especial
especial, distinta de
entradas
t d d de la
l BTAC.
BTAC La
L BTAC
la BTAC para almacenar los bits de
con bits de predicción se
predicción
denomina BTB

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 68


Tratamiento de Saltos: Predicción
 Predictores Dinámicos:
Dinámicos Implementación
1) Branch Target Buffer (BTB): bits acoplados
La BTB almacena
• La dirección destino de los últimos saltos tomados
• Los bits de predicción de ese salto
Dirección Dirección Bits de
de la Tag
g destino predicción
Actualización de la BTB instrucción del salto
de salto
Los campos de la BTB se actualizan después
de ejecutar el salto y se conoce:
• Si el salto fue tomado o no

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

Aplicable con un sólo bit de predicción


• Sí la instrucción de salto está en la BTB
 El salto se predice como tomado
BTB
Dirección
• Sí la instrucción de salto no está en la BTB

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 69


Tratamiento de Saltos: Predicción
 Predictores Dinámicos:
Dinámicos Implementación
2) Tabla de historia de saltos (BHT): bits desacoplados
Existen dos tablas distintas:
• La BTAC, que almacena la dirección destino de los últimos saltos tomados
• La BHT, que almacena los bits de predicción de todos las instrucciones de salto condicional

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

Muchos fallos en algunos programas (enteros) ¿ Por que?


AC — Tema 4 F. Tirado / R. Hermida (2010-11) 71
Tratamiento de Saltos: Predicción
 Predictores Dinámicos
Otras formas de gestionar la historia

1. Muchas instrucciones de salto ejecutan patrones repetitivos

Idea : Los saltos están relacionados. El comportamiento de los últimos


saltos afecta a la predicción actual. Almacenar el comportamiento de los últimos
n saltos y usarlo en la selección de la predicción.

1 = Taken
For (i=1; i<=4; i++) { } Patrón: {1110}
0 = Not Taken

Si conocemos el comportamiento del salto en las Historia Predicción


3 últimas ejecuciones podemos predecir como 111 0 (NT)
se comportará en la siguiente ejecución 011 1 (T)
 Predicción basada en historia LOCAL 101 1 (T)
110 1 (T)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 72


Tratamiento de Saltos: Predicción
 Predictores Dinámicos
2. Muchas instrucciones de salto dependen del comportamiento de
otros saltos recientes ( historia global)

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

Si conocemos el comportamiento de la última ejecución de b1 podemos predecir


el comportamiento de b2 en la siguiente ejecución

Predicción basada en historia GLOBAL

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 73


Diapositiva 73

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:

Valor d  0? b1 d antes d1? b2


de d de b2

0 no NT 1 no NT
1 sii T 1 no NT

2 si T 2 si T

Si b1 no se toma, entonces b2 tampoco: correlación entre saltos


AC — Tema 4 F. Tirado / R. Hermida (2010-11) 74
Tratamiento de Saltos: Predicción
 Predictores Dinámicos
Ejemplo ( continua )
C
Comportamiento
t i t deld l predictor
di t d de un bit
bit. ( estado
t d iinicial
i i l ““nott ttaken”
k ” NT)
BNEZ R1, L1 ; salto b1 (Salto si d ≠ 0)
ADDI R1, R0, #1 ; Como d=0, hacer d=1
L1: SUBI R3 R3, R1,
R1 #1 ; R3=d(R1)-1 Caso 2: d=2,0,2,0,…
d=2 0 2 0
BNEZ R3, L2 ; salto b2 (Salto si d≠ 1)
..........
L2:

Valor Predicción b1 Nueva Predicción b2 Nueva


de d de b1 predicción de b2 predicción
de b1 de b2

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

Ejemplo: Tamaño de un predictor (2,2) de 4k entradas 4x2x4K = 32Kb

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 76


Tratamiento de Saltos: Predicción
 Predictores Dinámicos
Ejemplo ( continua )
Comportamiento del predictor de dos niveles (1,1). ( estado inicial “not taken” NT)
BNEZ R1, L1 ; salto b1 (Salto si d ≠ 0)
ADDI R1, R0, #1 ; Como d=0, hacer d=1
L1: SUBI R3, R1, #1 ; R3=d(R1)-1

Caso 2: d=2,0,2,0,…
d=2 0 2 0
BNEZ R3, L2 ; salto b2 (Salto si d≠ 1)
..........
L2:

Sólo se predice mal la 1ª iteración (d=2)


d= ? Predicción
P di ió b1 Nueva
N Predicción
P di ió b2 Nueva
N
de b1 predicción de b2 predicción
de b1 de b2

2 NT/NT T T/NT NT/NT T NT/T


0 T/NT NT T/NT NT/T NT NT/T

2 T/NT T T/NT NT/T T NT/T


0 T /NT NT T/NT NT/T NT NT/T
(Subrayado en rojo: Bit de predicción seleccionado en cada caso, en función del comportamiento del salto anterior)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 77


Tratamiento de Saltos: Predicción

 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 ”)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 78


Diapositiva 78

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,06 0,06 0,06


0,06
0,05 0,05
0,04
0,04

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)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 79


Tratamiento de Saltos: Predicción
 Predictores híbridos
Idea básica
• Cada uno de los predictores estudiados tiene sus ventajas y sus inconvenientes
• Combinando el uso de distintos predictores y aplicando uno o otro según convenga,
convenga
se pueden obtener predicciones mucho más correctas
Predictor híbrido Instrucción captada
Mezcla varios predictores y añade un Tabla de
mecanismo de selección del predictor Selección

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 80


Ejemplo: Alpha 21264

 Predictor competitivo (Tournament Predictor)

 Predictor Local: Predicción de un salto en función del


comportamiento previo de ese mismo salto
o Considera las 10 últimas ejecuciones del salto
 Predictor global: Predicción de un salto en función del
comportamiento
mp t mi nt d de lloss últim
últimoss 12 saltos
s lt s ejecutados
j ut d s
 Juez: Decide cuál de las dos predicciones se aplica
o Selecciona el predictor que esté manifestando el mejor
comportamiento
t i t
 Actualización: al resolver cada salto
o Se actualizan los predictores en función de su acierto o fallo
o Si los
l dos
d predictores
di t hicieron
hi i una predicción
di ió didistinta,
ti t se
actualiza el juez para que favorezca al que acertó
 Gran importancia para la ejecución especulativa en 21264
(hasta 80 instrucciones en la ventana)
 Tasas de predicción correcta (benchmarks): 90-100%

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 81


Tournament predictor del Alpha 21264

Comportamiento de las 10 últimas (IEEE Micro, Marzo 1999)


ejecuciones de 1024 saltos

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

Historia Global (12 bits)


T/NT
Juez: Acierto global y fallo local = incrementa
Fallo global y acierto local = decrementa

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 82


Ejemplos de funcionamiento (1)

Programa con dos saltos que tiene el comportamiento descrito

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)

Programa con dos saltos que tiene el comportamiento descrito

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)

Programa con tres saltos que tiene el comportamiento descrito

Si (a=0) Pred Global


4095
T
11

Si (b=0)
T
Comportamiento
0
últimos 12 saltos
Si (a=b)
Predecir T

11x xxx xxx xxx

Historia Global (12 bits)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 85


Tratamiento de Saltos: Predicción
 Predictores
Predictores: Comportamiento
99%
tomcatv 99%
100%
95%
doduc 84%
97%
86%
fpppp 82% Profile-based
98%
Bimodal
88% Híbrido
li 77%
98%
86%
espresso 82%
96%

88%
gcc 70%
94%

0% 20% 40% 60% 80% 100%


Precisión de la predicción

Profile_based- Predictor estático

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 86


Tratamiento de Saltos: Predicción
 Predictores
Predictores: Comportamiento
 La ventaja del predictor hibrido es su capacidad de seleccionar el predictor
correcto para un determinado salto
 Muyy importante
p para
p programas
p g enteros
 Un predictor hibrido selecciona el global casi 40% de las veces
paraSPEC integer y menos del 15% de las veces para SPEC FP
10%
9%
8%
% de fallos de predicciión

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

Tamaño del Predictor (Kbits)


AC — Tema 4 F. Tirado / R. Hermida (2010-11) 87
Tratamiento deR10Saltos: Predicción
 Pentium 4 : tasa de fallos de predicción ( por 1000 instrucciones,
no por salto)
6% de tasa de fallos SPECint (19% instrucciones INT son saltos, 186 de 1000 )
2% de tasa de fallos SPECfp ( 5% instrucciones FP son saltos
saltos, 48 de 1000) FT1

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 88


Diapositiva 88

R10 He añadido "de predicción"


Román; 26/09/2007

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

• La precisión de los predictores con los retornos es muy baja: La dirección de


retorno es diferente en función de la llamada
• Solución : Pila de direcciones de retorno( 8 a 16 entradas )

EJEMPLOS

• UltraSparc I, II 4 entradas
• Pemtium
P ti Pro
P 16 entradas
t d
• R10000 1 entrada

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 89


Tratamiento de Saltos: Predicción
 Detección de la instrucción de salto
Retardos en la detección del salto
• Para poder aplicar el mecanismo de predicción es necesario
saber que se trata de una instrucción de salto F D
• Problema: el tipo de instrucción no se conoce hasta Tipo de instrucción
que no finaliza la etapa de DECODIFICACIÓN Si es salto  Aplicar predicción
 Varios ciclos de retardo en cada salto

Alternativas al esquema básico

Detección en paralelo Detección después Detección Durante


con la Decodificación de la etapa de Fetch la etapa de Fetch
Utiliza un decodificador de saltos Detecta las instrucciones
nstrucc ones de salto Detecta las instrucciones de
dedicado capaz de detectar las en el buffer de instrucciones, antes salto al tiempo que se leen
instrucciones de salto antes del de que sean decodificadas de la cache de instrucciones
final de la etapa decodificación

F D F D
F D
Detección de saltos
Detección de saltos Detección de saltos

EJEMPLOS EJEMPLOS EJEMPLOS


• Alpha 21064 • Alpha 21164 • Power1 • PowerPC 603 • PowerPC 604 • R8000
• Alpha 21064A • PowerPC601 • Power2 • PowerPC 620 • PA8000
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 90
Tratamiento de Saltos: Predicción

 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

1)) Descarte de los resultados

• Los resultados de estas instrucciones especulativas se almacenan en registros temporales


(registros de renombramiento o Buffer de reordenamiento)
• Estas instrucciones no modifican los contenidos de los registros de la arquitectura ni de la memoria

Si la ejecución fue correcta Si la ejecución fue incorrecta

Se actualizan los registros de Se descartan los resultados de


la arquitectura y/o la memoria los registros temporales

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 91


Tratamiento de Saltos: Predicción
 Recuperación de fallos de predicción (misprediction)
2) Reanudación de la ejecución por el camino correcto
El procesador debe guardar,
guardar al menos
menos, la dirección de comienzo del camino alternativo

Si la predicción fue “Not taken” Si la predicción fue “Taken”


El procesador debe calcular y almacenar El procesador debe almacenar la dirección
la dirección destino del salto de la instrucción siguiente al salto

Ejemplos:
j p PowerPC 601 – 603 - 605

Reducción de los retardos en la recuperación de fallos


El procesador puede guardar, no solo la dirección del camino alternativo,
sino prebuscar y almacenar algunas instrucciones de este camino

Si la predicción fue “Taken” Si la predicción fue “Not taken”


• El procesador almacena la dirección • El procesador calcula y almacena
del camino secuencial la dirección destino del salto
• El procesador prebusca y almacena las • El procesador prebusca y almacena las
primeras instrucciones secuenciales primeras instrucciones del destino del salto
Ej
Ejemplos:
l 2 buffer
b ff Power1,
P 1 Power2,
P 2 PPemtium,
ti UltraSparc(
Ult S ( 16 )), R10000 (256 bit
bits))
3 buffer Nx586 ( 2 pendientes )
AC — Tema 4 F. Tirado / R. Hermida (2010-11) 92
Tratamiento de Saltos: Otras alternativas
 Ejecución condicional de instrucciones
Idea básica
• Eliminar, parcialmente, los saltos condicionales mediante instrucciones de ejecución condicional
• Una instrucción de ejecución condicional está formada por:
• Una condición
• Una operación
• Ejecución condicional
• Si la condición es cierta  La instrucción se ejecuta
• Si la condición es falsa  La instrucción se comporta como NOP

Ejemplo

BNEZ R1, L
MOV R2, R3 CMOVZ R2, R3, R1
L

Ventaja: Buena solución para implementar alternativas simples de control


Desventaja: Consumen tiempo en todos los casos. Más lentas que las incondicionales
Ejemplos: Alpha, Hp-Pa, MIPS, Sparc

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 93


Tratamiento de Saltos: Otras alternativas

 Ejecución con predicados


Idea básica
• Transformar todos las instrucciones en condicionales
• Una instrucción de ejecución condicional está formada por:
• Una parte de condición, denominada predicado o guarda
• Una
U parte t de
d operaciónió
• Ejecución predicada:
• Si la condición es cierta  La instrucción se ejecuta
• Si la condición es falsa  La instrucción se comporta como NOP

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)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 94


Predicción de saltos

Resumen

 Predictor bimodal bueno para Loop (programas FP )

 Predictores
Predict res de dos
d s niveles buen
buenoss para IF then else

 Predicción de la dirección destino importante


mp

 Ejecución condicional y predicada reduce el numero de saltos

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 95


Especulación

 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.

¿ Como podemos implementar esta distinción con un


modelo de ejecución con finalización Fuera de orden?

Modificando el Algoritmo
g de Tomasulo para
p forzar finalización en orden

ALGORITMO DE TOMASULO CON ESPECULACION

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 96


Especulación

 Algoritmo
l de
d TOMASULO

De Memoria Cola Registros FP


de Ope
FP

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

Common Data Bus (CDB)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 97


Especulación

 Algoritmo
l de
d TOMASULO con especulación
l ó
Buffer de Reordenamiento

De Memoria Cola Registros


de Ope
FP

Load1 Reg
Load A Memoria
Load2
Load3 Buffers Dato
Load4
Load5
Load6

Add1
Add2 Mult1
Add3 Mult2

E
Estaciones
i
De Reserva
SumadorFP MultiplicadorFP

Common Data Bus (CDB)


AC — Tema 4 F. Tirado / R. Hermida (2010-11) 98
Especulación

 El Buffer de Reordenamiento (ROB)


o Almacena resultados de instrucciones cuya ejecución ha
R13
finalizado, pero…
 están
stán a lla espera
sp d
de actualizar
ctu li registros
ist s o memoria
m m i
(finalización en orden)
 son dependientes de un salto (ejecución especulativa)
o Permite el paso de operandos entre instrucciones
especuladas con dependencia LDE.

 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)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 99


Diapositiva 99

R13 Transparencia insertada


Román; 28/09/2007
Especulación

 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”

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 100


Diapositiva 100

R14 Transparencia insertada


Román; 28/09/2007
Especulación: fases

 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

R12 He reescrito descripción de estados


Román; 26/09/2007

R15 Tratamiento de saltos y excepciones


Orden de LD/ST

Merecen unas transp aparte


Román; 28/09/2007

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

Common Data Bus (CDB)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 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 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

Common Data Bus (CDB)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 103


Especulación: Ejemplo

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

Common Data Bus (CDB)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 104


Especulación: Ejemplo

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

Common Data Bus (CDB)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 105


Especulación: Ejemplo

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

Common Data Bus (CDB)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 106


Especulación: Ejemplo

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

Common Data Bus (CDB)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 107


Especulación: Ejemplo

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

Common Data Bus (CDB)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 108


Especulación: Ejemplo

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

Common Data Bus (CDB)

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 109


Especulación: Ejemplo

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

Common Data Bus (CDB)

* = 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

Common Data Bus (CDB)

* = 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

Common Data Bus (CDB)

* = 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.

 Riesgos LDE: Podrían producirse si un LD accede a la


posición 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 dirección de memoria.
o Tampoco se ejecuta el LD si está pendiente el cálculo de la
dirección efectiva de algún ST del ROB

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 113


Diapositiva 113

R17 Esta y la siguiente son nuevas. Por favor, revisar.


Román; 01/10/2007
Especulación: Saltos e interrupciones

 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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 114


Especulación: más ejemplos
 Algoritmo de TOMASULO con especulación
Estaciones de Reserva
Estado Opera Vj Vk Qj Qk Nº ROB
Destino

 Un ejemplo ADD1 Libre


ADD2 Libre
ADD3 Libre
MUL1 Libre MULT M(45+(R3)) F4 #3
LD F6,34(R2)
MUL2 Ocup. DIV M(34+(R2)) #3 #5
LD F2,45(R3)
MULTD F0,F2,F4 Buffer de Reordenamiento
SUBD F8 F6 F2
F8,F6,F2 E t d
Estado I t
Instrucción
ió E t d
Estado D ti
Destino V l
Valor
DIVD F10,F0,F6
ADDD F6,F8,F2 1 libre LD F6,34(R2 Commit F6 M(34+(R2))
2 libre LD F2,45(R3) Commit F2 M(45+R3))
3 O
Ocupada
d MULTD F0
F0,F2,F4
F2 F4 E
Escri.
i RRes F0 #2 (F4)
#2x(F4)
4 Ocupada SUB F8,F6,F2 Escri. Res. F8 #1 - #2
5 Ocupada DIVD F10,F0,F6 Ejecuta F10
6 Ocupada ADDD F6
F6,F8,F2
F8 F2 Escri Res
Escri. Res. F6 #4 + #2

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

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 115


Especulación: más ejemplos
R18
 Algoritmo
l de
d TOMASULO con especulación
l ó
Estado Opera Vj Vk Qj Qk Nº ROB
Destino

 Un ejemplo
j mpl
MUL1 Libre MULT M(0+(R1))
( ( )) F2 #2
MUL2 Libre MULT M(0+(R1)) F2 #7

Estado Instrucción Estado Destino Valor


LOOP LD F0
F0,0(R1)
0(R1)
MULTD F4,F0,F2 1 libre LD F0,0(R1) Commit F0 M(0+(R1))
SD 0(R1),F4 2 libre MULTD F4,F0,F2 Commit F4 F0 x F2
SUBI R1,R1,#8 3 Ocupada SD 0(R1),F4 Escri. Res 0+R1 #2
BNEZ R1
R1,LOOP
LOOP 4 Ocupada SUBI R1,R1,#8 Escri. Res. R1 R1-8
5 Ocupada BNEZ R1, loop Escri. Res
6 Ocupada LD F0,0(R1) Escri. Res. F0 M(#4)
ESPECULADA

7 Ocupada MULTD F4,F0,F2 Escri. Res F4 #6xF2


8 Ocupada SD 0(R1),F4 Escri. Res 0+R1 #7
9 Ocupada SUBI R1,R1,#8 Escri. Res R1 #4 - #8
AS

10 Ocupada
O d BNEZ R1,Loop
R1 L Escri.
E i R Res.

F0 F2 F4 F6 F8 F10 F12 …

Estado de los registros FP Buffer Nº 6 7


Ocupado si no si no no no no

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 116


Diapositiva 116

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

Вам также может понравиться