Está en la página 1de 134

Arquitectura de Computadores

TEMA 4 ILP, Panificacin dinmica, Prediccin de saltos, Especulacin

Curso 2010-2011

Contenidos
Introduccin: ILP Tcnicas SW: Compilador Planificacin dinmica. Algoritmo de Tomasulo. lan f cac n d nm ca. lgor tmo omasulo. Tratamiento de dependencias de control: Prediccin de saltos Tratamiento de saltos T i d l Tcnicas de prediccin: Estticas y dinmicas Especulacin Bibliografa
R1

o Cap 2 [HePa07] o Captulos 4 , 7 y 8 de [SiFK97] o Simulador DLXview

AC Tema 4

F. Tirado / R. Hermida (2010-11)

Diapositiva 2 R1 He actualizado la referencia de HePa


Romn; 26/09/2007

Introduccin
OBJETIVO: Ejecutar el mayor numero de instrucciones por ciclo OBJETIVO
Obtener el mximo numero de instrucciones independientes
CPI = CPI ideal + Penaliz. Media por Instr. (paradas pipe)

Que tcnicas conocemos? Q t i ?


Conflictos de recursos - Riesgos estructurales Replicacin/segmentacin 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 ejecucin ( dinmicos). Ej Pentium, AMD, IBM Toda la informacin disponible en ejecucin Cdigo independiente de la implementacin Basados en SW en tiempo de compilacin (estticos). Ej Itanium Dependencias de memoria muy difciles de determinar
AC Tema 4
3

F. Tirado / R. Hermida (2010-11)

Introduccin
Paralelismo a nivel de instruccin ILP
Es la tcnica consistente en explotar paralelismo entre instrucciones prximas en la secuencia El bloque bsico es muy pequeo
Un bloque bsico (BB) es una secuencia de cdigo sin saltos. Un solo punto de entrada y salida Solo de 4 a 7 instrucciones Fuertes dependencias entre ellas

El camino es explotar ILP entre varios BB l LP El caso ms simple: paralelismo a nivel de bucle
for ( i =1; i<=1000; i++) x (i) = x (i) + s ; p ( ) Todas las iteraciones son independientes (saltos)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

Introduccin
Tcnicas para explotar ILP
Tcnica
Planificacin Dinmica Prediccin dinmica de saltos Lanzamiento mltiple m m p Varias instrucciones por ciclo Especulacin Dynamic memory disambiguation Desenrollado de bucles Planificacin por el compilador Pl ifi i l m il d Software pipelining R3 Prediccin esttica y Especulacin por el Compilador

Reduce
Paradas por riesgos de datos Paradas por riesgos de control CPI Ideal Riesgos de datos y control Paradas por riesgos de datos en memoria Paradas por riesgos de control Paradas por riesgos d d t s P d s i s s de datos CPI Ideal y Paradas por riesgos de datos CPI Ideal, paradas por riesgos de datos y control

Dinmicas

Estticas

AC Tema 4

F. Tirado / R. Hermida (2010-11)

Diapositiva 5 R3 Quito "trace scheduling" ya que no se estudia


Romn; 26/09/2007

Dependencias
D t Determinar l s dependencias es crtico para obtener el mximo i las d d i s s ti bt l i paralelismo Cules hay ? , A qu recursos afectan? C l h f t ?
Las d L dependencias son propias d l programas d de los o La presencia de una dependencia indica la posibilidad de aparicin de un riesgo, pero la aparicin de ste y la posible parada depende de las g p p p p p caractersticas del pipe o La dependencias Indican la posibilidad de un riesgo Determinan el orden de clculo de los resultados Imponen un lmite al paralelismo que es posible obtener

AC Tema 4

F. Tirado / R. Hermida (2010-11)

Dependencias
Tipos de Dependencias
R4

Dependencias de datos Dependencia verdadera (LDE) Dependencias de nombre - Antidependencia (EDL) -D Dependencia d salida (EDE) d i de lid Dependencias de control Dependencia verdadera (LDE)
o La instruccin i depende de j p

i produce un resultado que usa j j depende de k y k depende de i LD ADDD F0,0(R1) F4,F0,F2

AC Tema 4

F. Tirado / R. Hermida (2010-11)

Diapositiva 7 R4 Desde siempre, aqu hay una inconsistencia con el Tema 2. All se llama depedencia de datos a las LDE, EDL y EDE, mientras que aqu se llama dependencias de datos slo a las LDE. Sugiero unificar la nomenclatura, tal como queda en la transparencia
Romn; 26/09/2007

Dependencias
Dependencias de nombre ( Reutilizacin de los registros )
o Dos instrucciones i y j donde i precede a j presentan dependencias de nombre en las siguientes situaciones: o Antidependencia WAR (EDL) La i t L instruccin j escribe ( Reg o memoria) antes d que i l i ib R i ) t de lea. ADDD F4,F0,F2 LD F0,-8(R1) o Dependencia de salida WAW (EDE) Las instrucciones i y j escriben el mismo reg. o memoria ADDD F4,F0,F2 SUBD F4,F3,F2 F4 F3 F2 ILP

y Dependencias de datos

o Los mecanismos de ejecucin deben preservar el orden del programa. Mismo resultado que en ejecucin secuencial o Explotar todo el paralelismo posible sin afectar al resultado de la ejecucin o Para las dependencias de nombre eliminar la dependencia usando otros nombres
AC Tema 4
F. Tirado / R. Hermida (2010-11) 8

Dependencias
Dependencias de control
o Cada instruccin depende de un conjunto de saltos y en general esta dependencia debe p j g p preservarse para preservar el orden del programa
If P1 ( S1; ); if P2 ( S2; )

S1 depende de P1 ; S2 depende de P2 Las d L dependencias d control pueden violarse. Se pueden ejecutar instrucciones no d de l d l d debidas si esto no afecta al resultado correcto del programa

LO IMPORTANTE: el comportamiento de las excepciones y el flujo de datos deben preservase

AC Tema 4

F. Tirado / R. Hermida (2010-11)

Dependencias
Dependencias de control y Excepciones
o Comportamiento de excepciones se debe preservar. Cualquier cambio en el orden p p p q de ejecucin no debe cambiar como las excepciones son atendidas en la ejecucin. DADDU R2,R3,R4 BEQZ R2,L1 LW R1,0(R2) R1 0(R2) L1: ----o LW no se puede mover antes de BEQZ ( posible fallo de pagina )

Dependencias de control y flujo de datos


o Se debe mantener el flujo de datos entre instrucciones p j 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 del comportamiento del salto. p p 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 no en riesgos programa, de un pipe determinado Dependencias de datos
Fciles de determinar para registros Difciles para direcciones de memoria Son l i S el mismo dato 100( R4 ) y 20( R6 )? d En dos iteraciones diferentes 20(R6) y 20(R6) son el mismo dato? Debe conocer dependencias entre load y stores para permitir su reordenacin Ms registros para evitar dependencias de nombre

Dependencias de control
En general: Una instruccin dependiente de un salto no puede moverse antes del salto Una instruccin no dependiente de un salto no puede moverse despus del salto Efecto de las dependencias de control sobre el orden de las excepciones y el flujo de datos

SOLUCIN : HW + SW (PROCESADOR + COMPILADOR)


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

Tcnicas SW para explotar ILP

Un programa: Bucle simple


Cdigo maquina DLX
Loop LD ADDD SD SUBI BNEZ F0,0(R1) F4,F0,F2 F4 F0 F2 0(R1),F4 R1,R1,#8 R1,Loop R1 L p

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

R5

Instruccin que produce resultado FP ALU

Instruccin que usa el resultado FP ALU S ORE FP STORE F FP ALU STORE FP Entera

Latencia de uso 3 2 1 0 0
12

Datos de la etapa p de ejecucin

F FP ALU LOAD FP LOAD FP Entera

AC Tema 4

F. Tirado / R. Hermida (2010-11)

Diapositiva 12 R5 Utilizo el trmino "latencia de uso" por coherencia con los trminos usados en el Tema 2 y en los problemas
Romn; 26/09/2007

Tcnicas SW para explotar ILP

Un programa: Bucle simple


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

Ejecucin en el procesador E l d
Loop p LD Espera ADDD Espera Espera p SD SUBI Espera BNEZ Espera F0,0(R1) , ( ) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop , p Ciclo 1 2 3 4 5 6 7 8 9 10

Una instruccin cada 2 ciclos

AC Tema 4

F. Tirado / R. Hermida (2010-11)

13

Tcnicas SW para explotar ILP Planificacin de instrucciones f


Loop LD SUBI ADDD Espera BNEZ SD F0,0(R1) Ciclo1 R1,R1,#8 2 F4,F0,F2 3 4 R1,Loop 5 #8(R1),F4 6 Reordenamiento para ocultar latencias 6 ciclos 1 instruccin por ciclo

2 ciclos de overhead por el salto

Desenrollado 4 veces para ms paralelismo (elimina saltos)


Loop LD ADDD SD LD ADDD SD LD ADDD SD LD ADDD SD SUBI BNEZ F0,0(R1) F4,F0,F2 0(R1),F4 F6,-8(R1) ( ) F8,F6,F2 -8(R1),F8 F10,-16(R1) F12,F10,F2 -16(R1), F12 F14,-24(R1) F16,F14,F2 ( ), -24(R1),F16 R1,R1,#32 R1,Loop Expone ms paralelismo y elimina saltos Se elimina 3 saltos y 3 decrementos Permanecen dependencias y paradas p p

(Imprescindible ??)
F. Tirado / R. Hermida (2010-11)

MS REGITROS = Renombrado por el Compilador p p

AC Tema 4

14

Tcnicas SW para explotar ILP

D s Desenrollado + Pl ifi ll d Planificacin i


Loop LD LD LD LD ADDD ADDD ADDD ADDD SD SD SD SUBI BNEZ SD F0,0(R1) F6,-8(R1) , ( ) F10,-16(R1) F14,-24(R1) F4,F0,F2 F8,F6,F2 , , F12,F10,F2 F16,F14,F2 0(R1),F4 -8(R1),F8 R20 ( ), -16(R1),F12 R1,R1,#32 R1,Loop 8(R1),F16; 8-32 = -24 ( )

3.5 ciclos por iteracin Ms registros (Imprescindible !!) Mover SD despus de SUBI, valor de R1

El compilador planifica para minimizar los riesgos y eliminar l paradas d l i li i las d del pipe
AC Tema 4
F. Tirado / R. Hermida (2010-11) 15

Diapositiva 15 R20 Corregido error en n registro


Romn; 21/11/2007

Tcnicas SW para explotar ILP

S ft Software i li i pipelining
Idea: Si las diferentes iteraciones de un bucle son independientes, tomemos instrucciones de diferentes iteraciones para aumentar el ILP Reorganiza l b l d manera que cada i t R i los bucles de d instruccin pertenece a una i t iteracin diferente
Iteracin 1 Iteracin 2 Iteracin 3 Iteracin 4 Iteracin 5

Iteracin SW Pipelened

AC Tema 4

F. Tirado / R. Hermida (2010-11)

16

Tcnicas SW para explotar ILP

Software pipelining pipelining


Antes: Unrolled 3 veces 1 LD F0,0(R1) 2 ADDD F4,F0,F2 F4 F0 F2 3 SD 0(R1),F4 4 LD F6,-8(R1) 5 ADDD F8,F6,F2 F8 F6 F2 6 SD -8(R1),F8 7 LD F10,-16(R1) 8 ADDD F12,F10,F2 9 SD -16(R1),F12 16(R1) F12 10 SUBI R1,R1,#24 11 BNEZ R1,LOOP Despus: Software Pipelined 1 SD 0(R1),F4 ; Stores M[i] 2 ADDD F4,F0,F2 Add F4 F0 F2 ; Adds to M[i-1] M[i 1] 3 LD F0,-16(R1); Loads M[i-2] 4 SUBI R1,R1,#8 5 BNEZ R1,LOOP

SW Pipeline ove erlapped ops d

Time Loop Unrolled

Loop unrolling simblico Maximiza la distancia resultado-uso Menor tamao del cdigo Llenado y vaciado del pipe solo una vez

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

Tcnicas SW para explotar ILP


Ejecucin SW pipelined (suposicin R1=1000) Ej i i li d ( i i R1 1000)
F0 M(1000) LD F0, 0(R1) F4 F0 + F2 ; M(1000)+F2 C b ADDD F4,F0,F2 F4 F0 F2 Cabecera 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 Add t M[i 1] F4 F0 F2 ; Adds to M[i-1] Iteracin 1 F0 M(984) LD F0,-16(R1); Loads M[i-2] R1 992 ---------------------------------------M(992) F4 ; M(992) F2 M(992)+F2 SD 0(R1),F4 F4 F0 + F2 ; M(984)+F2 Iteracin 2 ADDD F4,F0,F2 F0 M(976) LD F0,-16(R1) R1 984 -------------------------------------- Iteracin n F0 M(0) ; Ahora R1=16 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

Tcnicas SW para explotar ILP

Comparacin
Loop Unrolling
Bloque grande para planificar Reduce el numero de saltos Incrementa el tamao del cdigo Tiene qu incluir iteraciones extra n que nc u r t rac on s tra Presin sobre el uso de registros

Software Pipelining

No hay dependencias en el cuerpo del bucle No reduce el numero de saltos Necesita inicio y finalizacin especial

AC Tema 4

F. Tirado / R. Hermida (2010-11)

19

Tratamiento de dependencias de datos en ejecucin


Planificacin dinmica : Procesador Procesador.
Modifica la secuencia de instrucciones resolviendo las dependencias en tiempo de ejecucin. ejecucin Disponibilidad de ms unidades funcionales. Cdigo valido para diferentes funcionales implementaciones

Problema : Lanzamiento de instrucciones en orden.


DIVD ADDD SUBD F0,F2,F4 F10,F0,F8 F12,F8,F14 S1 S2 depende de S1 S2 S3 S3 es independiente de la dems

La etapa ID bloquea la ejecucin en S2 hasta que se resuelve la dependencia ( F0 disponible) y SUBD no puede ejecutarse.

Solucin : Dividir la etapa ID en dos etapas diferenciadas.


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

Ejecucin fuera de orden Finalizacin fuera de orden?


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

Planificacin Dinmica : Tomasulo

(IBM 360/91, ao 1967) ( BM 6 /9 , 967) Elimina dinmicamente los riesgos EDE y EDL mediante el renombrado de registros g Motivacin: Arquitectura 360, 4 registros FP( Pocos registros, muchas dependencias ) Arquitectura RM UF segmentadas Add(3), Mul(2), Load (6), Stores (3) Solo consideraremos l operaciones de PF en la explicacin l id las i d l li i Casi todos los procesadores actuales usan mecanismo basados en este algoritmo l it Alpha 21264, HP 8000, MIPS 10000, Pentium III-4-Core, PowerPC 604,

R6

AC Tema 4

F. Tirado / R. Hermida (2010-11)

21

Diapositiva 21 R6 He eliminado el prrafo dedicado a diferencias con Scoreboard


Romn; 26/09/2007

Planificacin Dinmica : Tomasulo


De Memoria
Dir Valor Busy Load1 Load2 Load3 Load4 Load5 Load6

Cola de Ope FP Load Buffers

Registros FP

Qi

Vi

TAGs

Store Buffers
Add1 Add2 Add3 Mult1 Mult2

Qi Dir

Vi

Busy

TAGs

Op Qj Valorj Qk Valork Busy

SumadorFP

Estaciones De R D Reserva

A Memoria MultiplicadorFP

Common Data Bus (CDB)

Excepciones imprecisas Issue en orden- Ejecucin fuera de ordenFinalizacin fuera de orden


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

Planificacin Dinmica : Tomasulo


1 Issue Toma la instruccin de la cola de instrucciones. Enva la instruccin a la ER correspondiente si hay entradas disponibles. Enva los operandos si estn disponibles o UF que los generara En load/store si hay buffer libre. generara. 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 instruccin 2 Ejecucin Monitoriza CDB para disponibilidad de operandos. Cuando lista manda ejecutar. 3 Escritura de resultados Va CDB en registros y estaciones de reserva (ER) y marca ER como libre. Bus normal: dato + destino va a destino, CDB: dato + fuente, viene de No chequea riesgo EDE ni EDL (renombrado dinmico) Componentes de las ER Op: Operacin a realizar Vj, Vk: Valores de los operandos fuente Store buffers tienen un campo V para el resultado que debe ser almacenado. p p q 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 Estado d E d de registro resultadoIndica l FU que producira el resultado para el R i i l d I di la d i l l d l Registro. E En blanco ninguna intruccin esta pendiente de escribir en el registro.
AC Tema 4
F. Tirado / R. Hermida (2010-11) 23

Tres estados para una instruccin en el algoritmo

Planificacin Dinmica : Tomasulo


Ej mpl : Ejecucin de la secuencia: Ejemplo: Ej u in d l s u n i :
(S1): ( ) (S2): (S3): COD1 COD2 ADDD F2, ---, --F4, ---, --F0, F2, F4

Suposiciones: S1 y S2 ya lanzadas a ejecucin S3 se va a lanzar ejecucin, Estado inicial de registros:


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

AC Tema 4

F. Tirado / R. Hermida (2010-11)

24

Planificacin Dinmica : Tomasulo


Ej mpl : Ejecucin de la secuencia: Ejemplo: Ej u in d l s u n i :
(S1): ( ) (S2): (S3): COD1 COD2 ADDD F2, ---, --F4, ---, --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 Estacin de reserva
Busy OP TAGj Valorj TAGk y j j X yes + Y ?? Z Valork ?? F0 F2 F4 TAG X Y Z VALOR ?? ?? ??

AC Tema 4

F. Tirado / R. Hermida (2010-11)

25

Planificacin Dinmica : Tomasulo


Ej mpl : Ejecucin de la secuencia: Ejemplo: Ej u in d l 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 Estacin de reserva
Busy OP TAGj Valorj TAGk X yes + 0 22.57 Z Valork ?? F0 F2 F4 TAG X 0 Z VALOR ?? 22.57 ??

b) Escritura del resultado de S2 sobre el CDB:


Estado de registros Estacin de reserva
Busy OP TAGj Valorj TAGk X yes + 0 22.57 0 Valork 3.2 F0 F2 F4 AC Tema 4
F. Tirado / R. Hermida (2010-11)

TAG X 0 0

VALOR ?? 22.57 22 57 3.2


26

Planificacin Dinmica : Tomasulo


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

UF
(X,25.77) CDB
A todas las ER, Store Buffers y Registros que tengan la marca X
F0 F2 F4

Estado de registros
TAG 0 0 0 VALOR 25.77 22.57 3.2 32

AC Tema 4

F. Tirado / R. Hermida (2010-11)

27

Planificacin Dinmica:TOMASULO
Ejemplo
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 LD 2 ciclos, ADDD y SUBD 2 ciclos, MULT 10 ciclos, DIVD 40 ciclos K R2 R3 F4 F2 F6 F2
Tiempo FU Add1 Add2 Add3 Mul1 Mul2 Ocupada Operacin

Issue Ejecucin escritura


Ocupada Load1 Load2 Load3 Direccin

Estado de ER Operacin Qj y Qk ER produciendo produc endo operandos Vj y Vk valores de los operandos

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

Estado de REG Q Qu FU escribir en el Reg g

F0 FU

F2

F4

F6

F8

F10

F12

AC Tema 4

F. Tirado / R. Hermida (2010-11)

28

Planificacin Dinmica:TOMASULO
Ciclo 1
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1
Ocupada Load1 SI Load2 NO Load3 NO Direccin 34+R2

Tiempo

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin NO NO NO NO NO

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

Estado de ER

Estado de REG FU

F0

F2

F4

F6 Load1

F8

F10

F12

AC Tema 4

F. Tirado / R. Hermida (2010-11)

29

Planificacin Dinmica:TOMASULO
Ciclo 2
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2
Ocupada Load1 SI Load2 SI Load3 NO Direccin 34+R2 45+R3

Tiempo

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin NO NO NO NO NO

No hay bloqueo
Estado de ER

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

Estado de REG FU

F0

F2 Load2

F4

F6 Load1

F8

F10

F12

AC Tema 4

F. Tirado / R. Hermida (2010-11)

30

Planificacin Dinmica:TOMASULO
Ciclo 3 l
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 2-3
Ocupada Load1 SI Load2 SI Load3 NO Direccin 34+R2 45+R3

Tiempo

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin NO NO NO SI NO

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

Estado de ER

Mult

R(F4)

Load2

Estado de REG FU

F0

F2

F4

F6 Load1

F8

F10

F12

Mult1 Load2

AC Tema 4

F. Tirado / R. Hermida (2010-11)

31

Planificacin Dinmica:TOMASULO
Ciclo 4 l
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 4 2-3 3-4 4
Ocupada Load1 NO Load2 SI Load3 NO Direccin 45+R3

Tiempo

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin SI NO NO SI NO Subd

S1 Vj M(34+R2)

S2 Vk

ER.P.J Qj

ER.P:K Qk Load2

Estado de ER

Mult

R(F4)

Load2

Estado de REG FU

F0

F2

F4

F6
M(34+R2)

F8 Add1

F10

F12

Mult1 Load2

AC Tema 4

F. Tirado / R. Hermida (2010-11)

32

Planificacin Dinmica:TOMASULO
Ciclo 6
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 4 5 6 2-3 3-4 4 5
Ocupada Load1 NO Load2 NO Load3 NO Direccin

Ningn bloqueo
Estado de ER

Tiempo 2

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin SI SI NO SI SI Subd Addd Mult Divd

S1 Vj M(34+R2)

S2 Vk M(45+R3) M(45+R3) R(F4) M(34+R2)

ER.P.J Qj Add1

ER.P:K Qk

10

M(45+R3)

Mult1

Estado de REG FU

F0 Mul1

F2
M(45+R3)

F4

F6 Add2

F8 Add1

F10 Mul2

F12

F6 reasignado
AC Tema 4
F. Tirado / R. Hermida (2010-11) 33

Planificacin Dinmica:TOMASULO
Ciclo 8
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 4 5 6 2-3 3-4 6-7 4 5 8
Ocupada Load1 NO Load2 NO Load3 NO Direccin

Tiempo

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin NO SI NO SI SI

S1 Vj M()-M() M(45+R3)

S2 Vk M(45+R3) R(F4) M(34+R2)

ER.P.J Qj

ER.P:K Qk

Estado de ER

2 7

Addd Mult Divd

Mult1

Estado de REG FU

F0 Mul1

F2
M(45+R3)

F4

F6

F8

F10

F12

Add2 M() M() Mul2 M()-M()

AC Tema 4

F. Tirado / R. Hermida (2010-11)

34

Planificacin Dinmica:TOMASULO
Ciclo 13 l
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 4 5 6 2-3 3-4 6-7 9-10
Tiempo FU Add1 Add2 Add3 Mul1 Mul2 Ocupada Load1 NO Load2 NO Load3 NO Direccin

4 5 8 11
Ocupada Operacin NO NO NO SI SI

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

Estado de ER
3

Mult Divd

M(45+R3)

R(F4) M(34+R2)

Mult1

Estado de REG FU

F0 Mul1

F2
M(45+R3)

F4

F6

F8

F10

F12

F8+M() M() M() Mul2 M()-M()

AC Tema 4

F. Tirado / R. Hermida (2010-11)

35

Planificacin Dinmica:TOMASULO
Ciclo 16
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2 Issue Ejecucin escritura 1 2 3 4 5 6 2-3 3-4 6-15 6-7 9-10
Tiempo FU Add1 Add2 Add3 Mul1 Mul2 Ocupada Load1 NO Load2 NO Load3 NO Direccin

4 5 16 8 11
Ocupada Operacin NO NO NO NO SI

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

Estado de ER
40

Divd

M*F4

M(34+R2)

Estado de REG FU

F0 M F4 M*F4

F2
M(45+R3)

F4

F6

F8

F10

F12

F8+M() M() M() Mul2 M()-M()

AC Tema 4

F. Tirado / R. Hermida (2010-11)

36

Planificacin Dinmica:TOMASULO
Ciclo 57
Instuc LD LD MULT SUBD DIVD ADDD F6 F2 F0 F8 F10 F6 J 34+ 45+ F2 F6 F0 F8 K R2 R3 F4 F2 F6 F2

Finalizacin Fi li i en d desorden E d Excepciones i


Issue Ejecucin. escritura 1 2 3 4 5 6 2-3 3-4 6-15 6-7 17-56 9-10
Tiempo FU Add1 Add2 Add3 Mul1 Mul2

4 5 16 8 57 11
Ocupada Operacin NO NO NO NO SI

Ocupada Load1 NO Load2 NO Load3 NO

Direccin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

Estado de ER

Divd

M*F4

M(34+R2)

Estado de REG FU

F0 M F4 M*F4

F2
M(45+R3)

F4

F6

F8

F10

F12

F8+M() M() M() Mul2 M()-M()

AC Tema 4

F. Tirado / R. Hermida (2010-11)

37

Planificacin Dinmica:TOMASULO

Renombrado dinmico en un unrolling


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

Operacin: vector F0 * escalar F2 Suposiciones: MULT 4 ciclos En 1 iter Load 8 ciclos ( fallo ), en 2 1 ciclo (acierto) iter. ) Mostraremos dos iteraciones

AC Tema 4

F. Tirado / R. Hermida (2010-11)

38

Planificacin Dinmica:TOMASULO
Bucle l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1
Tiempo FU Add1 Add2 Add3 Mul1 Mul2

Issue Ejecucin escritura


Load1 load2 load3 store1 store2 store3

Ocupada NO NO NO NO NO NO

Direccin

Qi

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

Ocupada Operacin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

Estado de REG

F0 FU

F2

F4

F6

F8

F10

F12

AC Tema 4

F. Tirado / R. Hermida (2010-11)

39

Planificacin Dinmica:TOMASULO
Ciclo 1
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue ejecucin escritura
Load1 Ocupada SI NO NO NO NO NO Qi load2 load3 store1 store2 store3 Direccin 80

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

Tiempo

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

Estado de REG R 80 R1=80

F0 FU Load1

F2

F4

F6

F8

F10

F12

Ojo latencia del primer load


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

Planificacin Dinmica:TOMASULO
Ciclo 2
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada SI NO NO NO NO NO Qi load2 load3 store1 store2 store3 Direccin 80

1 2

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

Tiempo

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

SI

MULT

R(F2)

Load1

Estado de REG R 80 R1=80

F0 FU Load1

F2

F4 Mul1

F6

F8

F10

F12

Ojo latencia del 1 load


AC Tema 4

F. Tirado / R. Hermida (2010-11)

41

Planificacin Dinmica:TOMASULO
Ciclo 3 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada SI NO NO SI NO NO 80 Qi Mult1 load2 load3 store1 store2 store3 Direccin 80

1 2 3

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

Tiempo

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

SI

MULT

R(F2)

Load1

Estado de REG R 80 R1=80

F0 FU Load1

F2

F4 Mul1

F6

F8

F10

F12

Ojo latencia del 1er load


AC Tema 4

F. Tirado / R. Hermida (2010-11)

42

Planificacin Dinmica:TOMASULO
Ciclo 6
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1

Cierre del bucle


Issue Ejecucin escritura
Load1 Ocupada SI SI NO SI NO NO 80 load2 load3 store1 store2 store3 Direccin 80 72 Qi Mult1

1 2 3 6

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

Tiempo

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

SI

MULT

R(F2)

Load1

Estado de REG R 7 R1=72

F0 FU Load2

F2

F4 Mul1

F6

F8

F10

F12

Ojo latencia del 1 load


AC Tema 4

Renombrado
F. Tirado / R. Hermida (2010-11) 43

Planificacin Dinmica:TOMASULO
Ciclo 7 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada SI SI NO SI NO NO 80 load2 load3 store1 store2 store3 Direccin 80 72 Qi Mult1

1 2 3 6 7
Tiempo FU Add1 Add2 Add3 Mul1 Mul2

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

Ocupada Operacin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

SI SI

MULT MULT

R(F2) R(F2)

Load1 Load2

Estado de REG R 7 R1=72

F0 FU Load2

F2

F4 Mul2

F6

F8

F10

F12

Ojo latencia del 1 load


AC Tema 4

Renombrado
F. Tirado / R. Hermida (2010-11) 44

Planificacin Dinmica:TOMASULO
Ciclo 10 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada NO SI NO SI SI NO 80 72 72 Qi Mult1 Mult2 load2 load3 store1 Direccin

1 2 3 6 7 8

2- 9

10

7-10

store2 store3

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

Tiempo

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

SI SI

MULT MULT

M(80)

R(F2) R(F2)

Load2

Estado de REG R 64 R1=64

F0 FU Load2

F2

F4 Mul2

F6

F8

F10

F12

Ojo latencia del 1 load


AC Tema 4

F. Tirado / R. Hermida (2010-11)

45

Planificacin Dinmica:TOMASULO
Ciclo 11 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada NO NO SI SI SI NO 64 80 72 Qi Mult1 Mult2 load2 load3 store1 Direccin

1 2 3 6 7 8

2-9

10

7-10

11

store2 store3

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

Tiempo

FU Add1 Add2 Add3 Mul1 Mul2

Ocupada Operacin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

3 4

SI SI

MULT MULT

M(80) M(72)

R(F2) R(F2)

Estado de REG R 64 R1=64

F0 FU

F2

F4 Mul2

F6

F8

F10

F12

AC Tema 4

F. Tirado / R. Hermida (2010-11)

46

Planificacin Dinmica:TOMASULO
Ciclo 15
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada NO NO SI SI SI NO 64 80 72 Qi M() F2 M()*F2 Mult2 load2 load3 store1 store2 store3 Direccin

1 2 3 6 7 8

2- 9 11-14 7-10 12-15


Tiempo FU Add1 Add2 Add3 Mul1 Mul2

10 15 11

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

Ocupada Operacin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

SI

MULT

M(72)

R(F2)

Estado de REG 6 R1=64

F0 FU

F2

F4 Mul2

F6

F8

F10

F12

AC Tema 4

F. Tirado / R. Hermida (2010-11)

47

Planificacin Dinmica:TOMASULO
Ciclo 16 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada NO NO SI NO SI NO 72 M()*F2 64 Qi load2 load3 store1 store2 store3 Direccin

1 2 3 6 7 8

2- 9 11-14 16 7-10 12-15


Tiempo FU Add1 Add2 Add3 Mul1 Mul2

10 15 -11 16

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

Ocupada Operacin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

Estado de REG R 64 R1=64

F0 FU

F2

F4

F6

F8

F10

F12

AC Tema 4

F. Tirado / R. Hermida (2010-11)

48

Planificacin Dinmica:TOMASULO
Ciclo 17 l
Instuc LD MULT SD LD MULT SD F0 F4 F4 F0 F4 F4 J 0 F0 0 0 F0 0 K R1 F2 R1 R1 F2 R1 Issue Ejecucin escritura
Load1 Ocupada NO NO SI NO NO NO 64 Qi load2 load3 store1 store2 store3 Direccin

1 2 3 6 7 8

2-9 11-14 16 7-10 12-15 17


Tiempo FU Add1 Add2 Add3 Mul1 Mul2

10 15 -11 16 --

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

Ocupada Operacin

S1 Vj

S2 Vk

ER.P.J Qj

ER.P:K Qk

Estado de REG R 64 R1=64

F0 FU

F2

F4

F6

F8

F10

F12

AC Tema 4

F. Tirado / R. Hermida (2010-11)

49

Planificacin Dinmica:TOMASULO (detalle de las fases)

Nomenclatura: N m n l tu :
o Instruccin aritmtica: D OP (S1, S2) ( )
Instruccin aritmtica que realiza la operacin OP sobre el contenido de los registros S1 y S2, y deposita el resultado en el registro D

o Instruccin Load: D Mem[Direccin] [ ]


Carga en el registro D el contenido de la posicin de memoria Direccin

o Instruccin Store: Mem[Direccin] S


Almacena el contenido del registro S en la posicin de memoria Direccin Direccin

o Estacin de reserva x: o R ist x: Registro o Load Buffer x: o Store Buffer x:


R19

ER(x)(Busy, OP, Qj , Vj , Qk , Vk) Reg(x)( R (x)( Qi , Vi ) LB(x)(Busy, Dir) SB(x)( Busy, Dir, Qi , Vi )

AC Tema 4

F. Tirado / R. Hermida (2010-11)

50

Diapositiva 50 R19 Nota 1: se intenta obviar el clculo de la direccin efectiva que se contempla en H&P 4 edicin por las siguientes razones: 1. Los ejemplos que tenemos en las transparencias previas lo ignoran. 2. Las soluciones que explicamos a los problemas propuestos tb lo ignoran (no se contempla ningn ciclo de reloj para ello). 3. Aade complejidad innecesaria para comprender el concepto. 4. Los ejemplos de las transparencias que usa Patterson en Berkely tampoco lo usan. 5. El simulador DLXView tampoco funciona segn lo descrito en el libro. Nota 2: En la fase Issue se mejora la explicacin de H&P, al sustituir un condicional (if ) por unos movimientos de datos y tags que son los realmente implicados en la operacin.
Romn; 01/10/2007

Planificacin Dinmica:TOMASULO (detalle de las fases)


Fase Issue
Tipo de instruccin Aritmtica: D OP (S1, S2) Esperar hasta que La estacin de reserva ER(x) est libre y es capaz de ejecutar OP Hacer ER(x).Busy Yes ER(x).OP OP ER(x).Qj Reg(S1).Qi ER(x).V ER(x) Vj Reg(S1).Vi Reg(S1) V ER(x).Qk Reg(S2).Qi ER(x).Vk Reg(S2).Vi Reg(D).Qi x Load: D Mem[Direccin] El Load Buffer LB(x) est libre LB(x).Busy Yes LB(x).Dir LB(x) Dir Direccin Reg(D).Qi x Store: Mem[Direccin] S El Store Buffer SB(x) est libre SB(x).Busy Yes SB(x).Dir Direccin SB(x).Qi Reg(S).Qi SB(x).V SB(x) Vi Reg(S).Vi Reg(S) V
51

AC Tema 4

F. Tirado / R. Hermida (2010-11)

Planificacin Dinmica:TOMASULO (detalle de las fases)


Fase Ejecucin
Tipo de instruccin Aritmtica: D OP (S1, S2) Esperar hasta que (ER(x).Q (ER( ) Qj = 0) Y (ER( ) Qk = 0) (ER(x).Q Hacer Ejecutar clc lo Ejec tar clculo OP sobre la UF usando operandos Vj y Vk Generar RESULTADO RESULTADO Mem[LB(x).Dir]

Load: D Mem[Direccin]

(La direccin efectiva est disponible) Y (LB(x).Dir no tiene dependencias respecto de d d i t d Stores lanzados antes) (Uso de cola de Load / Store: explicacin posterior)

Store: Mem[Direccin] S

(La direccin efectiva est disponible) Y (SB(x).Dir (SB( ) Di no tiene i depenedencias con Load ni Sores previos) Y (SB(x).Qi) = 0)

Mem[SB(x).Dir] SB(x).Vi SB(x).Busy No

AC Tema 4

F. Tirado / R. Hermida (2010-11)

52

Planificacin Dinmica:TOMASULO (detalle de las fases)


Fase Write
Tipo de instruccin Aritmtica: D OP (S1, S2) Esperar hasta que (Ejecucin completa en ER(x)) Y (CDB disponible) Hacer Escribir sobre CDB: (x, RESUL) z (Si Reg(z).Qi) = x ) (Reg(z).Qi = 0) Y (Reg(z).Vi = RESUL) z (Si ER(z).Qj) = x ) (ER(z).Qj = 0) Y (ER(z).Vj = RESUL) z (Si ER(z).Qk) = x ) (ER(z).Qk = 0) Y (ER(z).Vk = RESUL) z (Si SB(z).Qi) = x ) (SB(z).Qi = 0) Y (SB(z).Vi = RESUL) ER(x).Busy = No ( ) y Load: D Mem[Direccin] [ ] (Acceso a memoria completo en p LB(x)) Y (CDB disponible) Escribir sobre CDB: (x, RESUL) z (Si Reg(z).Qi) = x ) (Reg(z).Qi = 0) Y (Reg(z).Vi = RESUL) z (Si ER(z).Qj) = x ) (ER(z).Qj = 0) Y (ER(z).Vj = RESUL) ( ( )Q ( ( )Q ) ( ( ) ) z (Si ER(z).Qk) = x ) (ER(z).Qk = 0) Y (ER(z).Vk = RESUL) z (Si SB(z).Qi) = x ) (SB(z).Qi = 0) Y (SB(z).Vi = RESUL) LB(x).Busy LB(x) Busy = No Store: Mem[Direccin] S
AC Tema 4

Nada

Nada

F. Tirado / R. Hermida (2010-11)

53

Planificacin Dinmica:TOMASULO

Resumen de ventajas e inconvenientes R d t j 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 bsicos si existe prediccin de saltos q p 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 penalizacin de los saltos


Tipos de saltos: Estadsticas d l 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

Conclusin (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 penalizacin de los saltos

Tipos de saltos: Estadsticas


Frcuencia dimica de saltos
35 10 0

Frcuencia de saltos tomados


lloops fft gdi ff TeX greep gcpp spi ce3 gaw k gccl compress espresso

30

greep gcpp gaw k gccl gdi ff compress espresso

90 80 70 60

25

spi ce3
20

TeX

50 40 30

15

10

lloops

fft

20 10

Conclusin

Frecuencia de los saltos depende del tipo de programa El comportamiento depende del tipo de programa

AC Tema 4

F. Tirado / R. Hermida (2010-11)

56

Reduciendo la penalizacin de los saltos

P di i Prediccin
Idea Bsica
Cuando se detecta una instruccin de salto condicional sin resolver
Se supone o predice el camino del salto: tomado o no tomado (Taken - Untaken) Si el salto se predice como tomado se predice la direccin destino del salto p p La ejecucin contina de forma especulativa a lo largo del camino supuesto

Cuando se resuelve la condicin


Si la prediccin fue correcta il di i f La ejecucin se confirma y contina normalmente Si la prediccin fue incorrecta (fallo de prediccin o misprediction) S d Se descartan t d l i t t todas las instrucciones ejecutadas especulativamente i j t d l ti t Se reanuda la ejecucin 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 direccin de la instruccin destino del salto con un retardo mnimo (para saltos tomados) AC Tema 4
F. Tirado / R. Hermida (2010-11) 57

Tratamiento de Saltos: Prediccin

Consideraciones generales
1) Predecir el camino que tomar el salto
TAKEN (Tomado) PREDICCIN CORRECTA TAKEN (Tomado) PREDICCIN INCORRECTA

t1 t2 t3 t4 t5 t6 t7 Programa P I1 I2 BR Target I4 Target: Itarget Itarget+1 F D E M W F D E M W I2 F D E BR F TA I4 It F D E M W It+1 F D E M W Retardo (1 ciclo) I1 Programa I1 I2 BR Target I4 Target: Itarget g Itarget+1 I1

t1 t2 t3 t4 t5 t6 t7 F D E M W F D E M W I2 F D E BR F D TA I4 F I5 F D E M W It F D E M W It+1 t 1 Retardo (2 ciclos)

Ojo retardo mnimo

AC Tema 4

F. Tirado / R. Hermida (2010-11)

58

Tratamiento de Saltos: Prediccin

Consideraciones generales
2) Predecir la direccin de la instruccin destino del salto ) con un retardo mnimo (para saltos tomados)

t1 Programa I1 I2 BR Target I4 Target: Itarget Itarget+1 I1 I2 BR It It+1 It+2 F

t2 D F

t3 E D F

t4 M E D

t5 W M E

t6

t7

W E D M E W M W

F D TA F

Retardo (0 ciclo)

Detectar lo ms pronto posible el salto: En buffer de instrucciones, al buscarla en la cache. Ms importante para pipes de ms etapas (frecuencia)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

59

Tratamiento de Saltos: Prediccin

Acceso a la instruccin destino del salto I


Branch Target Address Cache (BTAC)
Cache que almacena la direccin destino de los ltimos saltos tomados Cuando se accede a una instruccin de salto Se accede simultneamente a la BTAC utilizando la direccin de la instruccin de salto Si la instruccin est en la BTAC y el salto se predice como tomado la direccin destino del salto se lee de la BTAC

Actualizacin de la BTAC
L a BTAC se actualiza cuando se ejecuta la instruccin de salto y se conoce: Si el salto fue tomado o no La direccin destino del salto
S el salto fue tomado
Si no estaba en la BTAC
Se introduce en la BTAC Direccin de la Instruccin Tag Direccin destino del salto

+1

Taken / Not Taken

S el salto no fue tomado


Si estaba en la BTAC
Se elimina de la BTAC
F. Tirado / R. Hermida (2010-11)

MUX

Si ya estaba en la BTAC
Se actualiza su direccin destino en la BTAC

Direccin de la siguiente

instruccin

BTAC
60

AC Tema 4

Tratamiento de Saltos: Prediccin Acceso a la instruccin destino del salto II


Alternativas de diseo de la BTAC
Cache Totalmente Asociativa
Ventaja: menos Aliasing Desventaja: Mayor coste HW

Cache de Acceso Directo


Ventaja: Menor coste Desventaja: Aliasing (destruccin de informacin si dos saltos compiten por la misma entrada)

Cache Asociativa por conjuntos

Solucin intermedia

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

Variacin Branch Target Instruction Cache

Almacenar la instruccin ms ventajassi 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: Prediccin

Cl ifi Clasificacin d tcnicas d prediccin d saltos i de i de di i de l Prediccin de saltos


Esttica Dinmica

Fija

Basada en Desplaz. Desplaz

Basada en Dirigida por Opcode Compilador

Historia Local

Historia Global

Hbridos

AC Tema 4

F. Tirado / R. Hermida (2010-11)

62

Tratamiento de Saltos: Prediccin

Prediccin esttica
Prediccin Fija
ALWAYS TAKEN
Predecir todos los saltos como tomados Mayor nmero de aciertos de prediccin (3 de cada 4 saltos cond. son tomados) Mayor coste hardware (necesita almacenar la direccin destino del salto)

ALWAYS NOT TAKEN


Predecir todos los saltos como no tomados Menor nmero de aciertos de prediccin (slo 1 de cada 4 saltos cond. es no tomado) Menor coste hardware

Prediccin basada en la DIRECCIN del salto


Saltos hacia atrs : TOMADOS
La mayora de saltos hacia atrs corresponden a b l d bucles

Saltos hacia delante: NO TOMADOS


La mayora de saltos hacia delante 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: Prediccin

Prediccin esttica
Prediccin basada en el OPCODE de la instruccin de salto
R7

Fundamento: La probabilidad de que un salto sea tomado depende del tipo de salto

El salto es tomado para ciertos cdigos de operacin y no tomado para otros

Prediccin dirigida por el COMPILADOR


Basada en el tipo de CONSTRUCCIN
El compilador predice si el salto ser tomado o no dependiendo del tipo de construcc n de control construccin

Basada en PROFILING
El compilador predice en funcin del comportamiento de esa instruccin en ejecuciones prev as previas del programa

Especificado por el PROGRAMADOR


El programador indica al compilador si el salto debe ser tomado o no (med ante directivas especficas) (mediante d rect vas espec f cas)

Se aade un Bit de Prediccin al opcode de la instruccin El compilador activa o desactiva este bit para indicar su prediccin
AC Tema 4
F. Tirado / R. Hermida (2010-11) 64

Diapositiva 64 R7 He eliminado la transparencia anterior. Paco: supongo que queras eliminarla porque tambin hablaba de prediccin basada en OpCode
Romn; 26/09/2007

Tratamiento de Saltos: Prediccin

Predictores Dinmicos
Idea bsica
La prediccin se realiza observando el comportamiento de las instrucciones de salto en las ltimas ejecuciones ( Historia )

Necesario almacenar la historia de las ultimas ejecucin del salto

Predictores de 1 bit de historia


EJEMPLOS Gmicro 100 (1991) Alpha 21064 (1992) R8000 (1994)

Predictores de 2 bits de historia (bimodal)


EJEMPLOS MC68060 (1993) Pentium (1994) Alpha 21064A (1994) Alpha 21164 (1995) PA 8500 UltraSparc PowerPC 604 PowerPC 620 R10000 (1999) (1995) (1995) (1996) (1996)

Predictores de 3 bits de historia


EJEMPLOS PA 8000 (1996)

Evolucin

Predictores correlacionados Predictores hbridos


F. Tirado / R. Hermida (2010-11) 65

AC Tema 4

Tratamiento de Saltos: Prediccin Predictores Dinmicos


Predictor de un BIT
Utilizan un bit de prediccin por cada instruccin de salto El bit de prediccin refleja el comportamiento de la ltima ejecucin de la instruccin de salto Indica si en la anterior ejecucin el salto fue tomado o no Prediccin
El salto se predice como Taken si en la ltima ejecucin fue tomado El salto se predice como Not Taken si en la ltima ejecucin no fue tomado

FUNCIONAMIENTO Mquina de dos estados:

NT

Inicio

Registro de historia Contador saturado de 1 bit Prediccin V l del registro d hi t i Valor d l i t de historia

Not taken (0) RH1 T k Taken (1)

Taken (1) T

Not taken (0)

NT

LIMITACIN

Slo se registra el comportamiento

de la ltima ejecucin del salto Dos malas predicciones en los cambios AC Tema 4

Ms Bits

Prediccin: Taken

Prediccin: Not taken

Cambios de estado: T: el salto ha sido tomado NT: el salto no ha sido tomado


66

F. Tirado / R. Hermida (2010-11)

Diapositiva 66 RH1 Corregidos los bits


RH; 17/11/2008

Tratamiento de Saltos: Prediccin Predictores Dinmicos


Predictor de dos bits (BIMODAL)
Utilizan dos bits de prediccin por cada instruccin de salto Estos bits reflejan el comportamiento de las ltimas ejecuciones de ese salto Prediccin
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 direccin inusual una sola vez, el predictor mantiene la prediccin usual

Funcionamiento F i i t
Mquina de cuatro estados:
Strongly not taken (00) Weakly not taken (01) y ( ) Weakly taken (10) Strongly taken (11)
T
Weakly not taken (0 1)

Registro de historia Contador saturado de 2 bits Prediccin bit ms significativo del registro de historia
T
Weakly taken (1 0)

Inicio NT
Strongly not taken (0 0)

T
Strongly taken (1 1)

Cambios de estado:
T: el salto ha sido tomado NT: el salto no ha sido tomado

NT Prediccin:

NT Prediccin:

NT Prediccin:

Not taken

Not taken

Taken

Prediccin:

Taken

AC Tema 4

F. Tirado / R. Hermida (2010-11)

67

Tratamiento de Saltos: Prediccin

Predictores Dinmicos
Implementacin de los bits de prediccin mp m p

1) Branch Target Buffer (BTB)


Aade los bits de prediccin a las entradas d la BTAC. La BTAC t d de l BTAC L con bits de prediccin se denomina BTB EJEMPLOS MC 68060 Pentium R8000 PM1 Pentium II Pentium 4

2) Tabla de historia de saltos (BHT)


Utiliza una tabla especial distinta de especial, la BTAC para almacenar los bits de prediccin EJEMPLOS Gmicro 100 PowerPC 604 R10000 PowerPC 620 PA 8000 Alpha 21164A AMD64

256 x 2 bit 256 x 2 bit 1K x 1 bit 1K x 2 bit 512x2 bit 4kx2bits

256 x 1 bit 512 x 2 bit 512 x 2 bit 2K x 2 bit 256 x 3 bit 2K x 2 bit 16Kx2bits

AC Tema 4

F. Tirado / R. Hermida (2010-11)

68

Tratamiento de Saltos: Prediccin

Predictores Dinmicos: Implementacin Dinmicos


1) Branch Target Buffer (BTB): bits acoplados
La BTB almacena
La direccin destino de los ltimos saltos tomados Los bits de prediccin de ese salto
Direccin de la instruccin de salto Direccin Bits de destino prediccin del salto

Actualizacin de la BTB
Los campos de la BTB se actualizan despus de ejecutar el salto y se conoce:
Si el salto fue tomado o no Actualizar bits de prediccin La direccin destino del salto Actualizar BTA

Tag g

BTA

MUX MUX

Lgica de Prediccin
Taken / Not Taken

Prediccin Implcita (sin bits de prediccin)


Aplicable con un slo bit de prediccin S la instruccin de salto est en la BTB El salto se predice como tomado S la instruccin de salto no est en la BTB El salto se predice como no tomado

BTB
Direccin de la siguiente instruccin

+1

DESVENTAJA:
AC Tema 4

Slo se pueden predecir aquellas instrucciones de salto que estn en la BTB


F. Tirado / R. Hermida (2010-11) 69

Tratamiento de Saltos: Prediccin

Predictores Dinmicos: Implementacin Dinmicos


2) Tabla de historia de saltos (BHT): bits desacoplados
Existen dos tablas distintas:
La BTAC, que almacena la direccin destino de los ltimos saltos tomados
La BHT, que almacena los bits de prediccin de todos las instrucciones de salto condicional

Ventaja
Puede predecir instruc.que no estn en la BTAC (ms entradas en BHT que en BTAC)
Direccin de la instruccin de salto Direccin Tag destino del salto MUX Bits de Tag prediccin
Taken / Not Taken Lgica de Prediccin

Desventaja
Aumenta el hardware necesario 2 tablas asociativas

Acceso a la BHT
Usando los bits menos significativos de la direccin Sin TAGs Menor coste (opcin + habitual) Comparticin de entradas Se degrada el rendimiento Asociativa por conjuntos Mayor coste Tablas pequeas Para un mismo coste hardware Peor comportamiento

BTA

+1

BTA

MUX Direccin de la siguiente instruccin


70

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

BHT

Tratamiento de Saltos: Prediccin

Predictores Dinmicos
Comportamiento
18% 16% 14% 12% 10% 8% 6% 4% 2% 0%
1%
0%
nasa7

18% % 18

12%
11%

9%9% %

9%9% %

10% 10%

5%5%

5% 5%

1% 0%0%
matrix300

0%
tomcatv doducd spice fpppp gcc espresso eqntott li

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: Prediccin

Predictores Dinmicos
Otras formas de gestionar la historia
1. Muchas instrucciones de salto ejecutan patrones repetitivos

Idea : Los saltos estn relacionados. El comportamiento de los ltimos

saltos afecta a la prediccin actual. Almacenar el comportamiento de los ltimos n saltos y usarlo en la seleccin de la prediccin.
1 = Taken 0 = Not Taken

For (i=1; i<=4; i++) { }

Patrn: {1110}

Si conocemos el comportamiento del salto en las 3 ltimas ejecuciones podemos predecir como se comportar en la siguiente ejecucin Prediccin basada en historia LOCAL

Historia 111 011 101 110

Prediccin 0 (NT) 1 (T) 1 (T) 1 (T)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

72

Tratamiento de Saltos: Prediccin

Predictores Dinmicos
2. Muchas instrucciones de salto dependen del comportamiento de otros saltos recientes ( historia global) Ejemplo:
b1: if (d = 0) then d=1 b2: if ( =1) then f (d )
L1: L2: L2 BNEZ R1, L1 ; salto b1 (Salto si d 0) R8 ADDI R1, R0, #1 ; Como d=0, hacer d=1 DD R1 R0 C d 0 h d 1 SUBI R3, R1, #1 ; R3=d(R1)-1 BNEZ R3, L2 ; salto b2 (Salto si d 1) .......... R3=0 d=1 R30 d1

Si conocemos el comportamiento de la ltima ejecucin de b1 podemos predecir el comportamiento de b2 en la siguiente ejecucin

Prediccin basada en historia GLOBAL

AC Tema 4

F. Tirado / R. Hermida (2010-11)

73

Diapositiva 73 R8 Rehago comentarios


Romn; 26/09/2007

Tratamiento de Saltos: Prediccin

Predictores Dinmicos
Ejemplo ( continua )
Relacin entre los dos saltos
BNEZ R1, L1 ; salto b1 (Salto si d 0) ADDI R1, R0, #1 ; Como d=0, hacer d=1 SUBI R3 R1, #1 ; R3=d(R1)-1 R3, R1 R3 d(R1) 1 BNEZ R3, L2 ; salto b2 (Salto si d 1) ..........

L1: L1 L2:

Caso 1: d=0,1,2, C 1 d 0 1 2

Valor de d

d 0?

b1

d antes de b2

d1?

b2

0 1 2

no si i si

NT T T

1 1 2

no no si

NT NT T

Si b1 no se toma, entonces b2 tampoco: correlacin entre saltos


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

Tratamiento de Saltos: Prediccin

Predictores Dinmicos
Ejemplo ( continua )
Comportamiento del predictor d un bit ( estado i i i l t t k NT) C t i t d l di t de bit. t d inicial not taken
BNEZ R1, L1 ; salto b1 (Salto si d 0) ADDI R1, R0, #1 ; Como d=0, hacer d=1 SUBI R3 R1, #1 ; R3=d(R1)-1 R3, R1 BNEZ R3, L2 ; salto b2 (Salto si d 1) ..........

L1: L2:

Caso 2: d=2,0,2,0, d=2 0 2 0

Valor de d

Prediccin de b1

b1

Nueva Prediccin prediccin de b2 de b1 T NT T NT NT T NT T

b2

Nueva prediccin de b2 T NT T NT
75

2 0 2 0
AC Tema 4

NT T NT T

T NT T NT

T NT T NT

Muchos fallos de prediccin


F. Tirado / R. Hermida (2010-11)

Tratamiento de Saltos: Prediccin

Predictores Dinmicos
Solucin
Predictor de dos niveles (1 1): (1,1): Predictor de dos niveles (m n) (m,n)
Para cada salto existen 21 predictores de 1 bit. El comportamiento ltimo salto (1) determina el predictor que se usa. Para cada salto existen 2m predictores de n bits. El comportamiento de los ltimos m saltos determinan el predictor que se usa g p p ( ) Significado de los bit de prediccin en un predictor (1,1)
Bits de prediccin Prediccin si el ultimo salto no tomado NT NT T T Prediccin si el ultimo salto tomado NT T NT T

NT/NT
Dos predictores de d un bi bit

NT/T T/NT / T/T

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


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

Tratamiento de Saltos: Prediccin

Predictores Dinmicos
Ejemplo ( continua )
Comportamiento del predictor de dos niveles (1,1). ( estado inicial not taken NT)
L1: L2: BNEZ R1, L1 ; salto b1 (Salto si d 0) ADDI R1, R0, #1 ; Como d=0, hacer d=1 SUBI R3, R1, #1 ; R3=d(R1)-1 BNEZ R3, L2 ; salto b2 (Salto si d 1) ..........

Caso 2: d=2,0,2,0, d=2 0 2 0


Prediccin P di i de b2 b2 Nueva N prediccin de b2 NT/T NT/T NT/T NT/T

Slo se predice mal la 1 iteracin (d=2)


d= ? Prediccin P di i de b1 b1 Nueva N prediccin de b1 T/NT T/NT T/NT T/NT

2 0 2 0

NT/NT T/NT T/NT T /NT

T NT T NT

NT/NT NT/T NT/T NT/T

T NT T NT

(Subrayado en rojo: Bit de prediccin seleccionado en cada caso, en funcin del comportamiento del salto anterior)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

77

Tratamiento de Saltos: Prediccin

P di Predictores Di i Dinmicos

Direccin(4 bits)

Implementacin para Predictor de dos niveles (2,2) R9 con 16 entradas


11

4 predictores de 2-bits por salto (predictor local)

11

Prediccin

00

01

10

11

2-bits de historia Global de saltos (2 Saltos anteriores) (Ejemplo: 01 = not taken Y taken) (E l 1 k k )
AC Tema 4
F. Tirado / R. Hermida (2010-11) 78

Diapositiva 78 R9 Aado "de 2 niveles" De acuerdo? Nos hemos referido a "2 niveles" muchas veces en problemas y exmenes
Romn; 26/09/2007

Tratamiento de Saltos: Prediccin

Predictores Dinmicos
Comportamiento
0,2 0,18

0,16

Frequ uency of Mispre edictions

0,14

0,12

0,11 0 11

0,1

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

0,02

0,01 0

0,01

0 nasa7 7 matrix300 t i 300 tomcatv t t doducd d d d spice i fpppp f gcc espresso eqntott t tt li

4,096 entries: 2-bits per entry

Unlimited entries: 2-bits/entry

1,024 entries (2,2)


79

AC Tema 4

F. Tirado / R. Hermida (2010-11)

Tratamiento de Saltos: Prediccin Predictores hbridos


Idea bsica
Cada uno de los predictores estudiados tiene sus ventajas y sus inconvenientes Combinando el uso de distintos predictores y aplicando uno o otro segn convenga, convenga se pueden obtener predicciones mucho ms correctas

Predictor hbrido
Mezcla varios predictores y aade un mecanismo de seleccin del predictor

Instruccin captada

Direccin

Mecanismo de seleccin
Elige, en cada caso, el predictor que haya dado mejores resultados hasta el momento

Pre edictor 1

Implementacin del mecanismo de seleccin

MUX Prediccin

Para combinar dos predictores, P1 y P2, se utiliza una tabla de contadores saturados (Taken/Not taken) de dos bits indexada por la direccin de la instruccin de salto P1 Fallo F Fallo Acierto Acierto P2 Fallo Acierto Fallo Acierto Actualiz. del contador Cont no vara Cont = Cont +1 Cont = Cont -1 Cont no vara Si P2 acierta ms que P1 Cont aumenta Si P1 acierta ms que P2 C t di i Cont disminuye
Bit ms signif. del contador 0 1
F. Tirado / R. Hermida (2010-11)

Predictor seleccionado P1 P2
80

AC Tema 4

Pre edictor 2

Tabla de Seleccin

Ejemplo: Alpha 21264


Predictor competitivo (Tournament Predictor) Predictor Local: Prediccin de un salto en funcin del comportamiento previo de ese mismo salto Predictor global: Prediccin de un salto en funcin del comportamiento d l s ltim s 12 saltos ejecutados mp t mi nt de los ltimos s lt s j ut d s Juez: Decide cul de las dos predicciones se aplica Actualizacin: al resolver cada salto
o Selecciona el predictor que est manifestando el mejor comportamiento t i t o Considera las 10 ltimas ejecuciones del salto

Gran importancia para la ejecucin especulativa en 21264 (hasta 80 instrucciones en la ventana) Tasas de prediccin correcta (benchmarks): 90-100%

o Se actualizan los predictores en funcin de su acierto o fallo o Si los dos predictores hicieron una prediccin di ti t se l d di t hi i di i distinta, actualiza el juez para que favorezca al que acert

AC Tema 4

F. Tirado / R. Hermida (2010-11)

81

Tournament predictor del Alpha 21264


Comportamiento de las 10 ltimas ejecuciones de 1024 saltos
(IEEE Micro, Marzo 1999)

Tabla de Historia Local (1024x10)


10

10

Prediccin Local (1024x3)


MSB MSB

Prediccin Global (4096x2)


12

PC

Juez (4096x2)
MSB

12

T/NT

Historia Global (12 bits)


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 PC de Si (b=0) PC de Si (a=0) 0000000000 000 0101010101
F. Tirado / R. Hermida (2010-11)

Pred Local

000
83

AC Tema 4

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 PC de Si (b=0) PC de Si (a=0) 0000000000 Pred Local 111 000 1010101010
F. Tirado / R. Hermida (2010-11)

000
84

AC Tema 4

Ejemplos de funcionamiento (3)


Programa con tres saltos que tiene el comportamiento descrito
Si (a=0)
4095

Pred Global 11

Si (b=0)

Predecir T

Si (a=b)

Comportamiento ltimos 12 saltos

11x xxx xxx xxx Historia Global (12 bits)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

85

Tratamiento de Saltos: Prediccin

Predictores: Comportamiento Predictores


tomcatv 99% 99% 100% 84% 86% 82% 88% 98% 95% 97% Profile-based Bimodal Hbrido

doduc

fpppp

98%

li

77%

espresso

86% 82%

96%

gcc 0% 20% 40% 60%

70% 80%

88% 94% 100%

Precisin de la prediccin

Profile_based- Predictor esttico


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

Tratamiento de Saltos: Prediccin

Predictores: Comportamiento Predictores


La ventaja del predictor hibrido es su capacidad de seleccionar el predictor correcto para un determinado salto Muy importante para programas enteros y p p p g 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% % de fallos de predicci in 8% 7% 6% 5% 4% 3% 2% 1% 0%
0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128

Local

Dos niveles Hbrido

Tamao del Predictor (Kbits)


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

Pentium 4 : tasa de fallos de prediccin ( 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 48 de 1000) saltos,
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
gr id 6. cr af ty pl u r is e ip c im 5. vp 6. gc cf 4. gz 1. m 1. sw up w 3. ap

Tratamiento deR10 Saltos: Prediccin

FT1

13 12

Branch mispredictio ons per 1000 Instructions

11

9 7

0
es 17 7. m a

AC Tema 4

16 8.

SPECint2000
17 18

SPECfp2000
2. m 17 17

16

17

18

17

F. Tirado / R. Hermida (2010-11)

88

Diapositiva 88 R10 FT1 He aadido "de prediccin"


Romn; 26/09/2007

No entiendo estos datos. tienen relacin con la grfica? se pueden escribir las frases de otra forma? Como 48 de cada mil son saltos y 1 de cada mil en media falla la tasa de fallos es 2%
Francisco Tirado; 10/10/2007

Tratamiento de Saltos: Prediccin

P di i d l retornos Prediccin de los


La precisin de los predictores con los retornos es muy baja: La direccin de retorno es diferente en funcin de la llamada Solucin : Pila de direcciones de retorno( 8 a 16 entradas )

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

AC Tema 4

F. Tirado / R. Hermida (2010-11)

89

Tratamiento de Saltos: Prediccin

Deteccin de la instruccin de salto


Retardos en la deteccin del salto
Para poder aplicar el mecanismo de prediccin es necesario saber que se trata de una instruccin de salto Problema: el tipo de instruccin no se conoce hasta que no finaliza la etapa de DECODIFICACIN Varios ciclos de retardo en cada salto

F D
Tipo de instruccin Si es salto Aplicar prediccin

Alternativas al esquema bsico


Deteccin en paralelo con la Decodificacin
Utiliza un decodificador de saltos dedicado capaz de detectar las instrucciones de salto antes del final de la etapa decodificacin

Deteccin despus de la etapa de Fetch


Detecta las instrucciones de salto nstrucc ones en el buffer de instrucciones, antes de que sean decodificadas

Deteccin Durante la etapa de Fetch


Detecta las instrucciones de salto al tiempo que se leen de la cache de instrucciones

F D
Deteccin de saltos EJEMPLOS Alpha 21064 Alpha 21164 Alpha 21064A PowerPC601 AC Tema 4

F D
Deteccin de saltos EJEMPLOS Power1 Power2 PowerPC 603

F D
Deteccin de saltos EJEMPLOS PowerPC 604 PowerPC 620

R8000 PA8000
90

F. Tirado / R. Hermida (2010-11)

Tratamiento de Saltos: Prediccin

R Recuperacin d f ll d prediccin ( i i de fallos de di i (misprediction) di i )


Tareas bsicas
1) Descartar los resultados de las instrucciones ejecutadas especulativamente ) j por 2) Reanudar la ejecucin p el camino correcto con un retardo mnimo

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 ejecucin fue correcta


Se actualizan los registros de la arquitectura y/o la memoria

Si la ejecucin fue incorrecta


Se descartan los resultados de los registros temporales

AC Tema 4

F. Tirado / R. Hermida (2010-11)

91

Tratamiento de Saltos: Prediccin

Recuperacin de fallos de prediccin (misprediction)


2) Reanudacin de la ejecucin por el camino correcto
El procesador debe guardar, al menos la direccin de comienzo del camino alternativo guardar menos, Si la prediccin fue Not taken
El procesador debe calcular y almacenar la direccin destino del salto

Si la prediccin fue Taken


El procesador debe almacenar la direccin de la instruccin siguiente al salto

Ejemplos: PowerPC 601 603 - 605 j p

Reduccin de los retardos en la recuperacin de fallos


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

El procesador almacena la direccin del camino secuencial El procesador prebusca y almacena las primeras instrucciones secuenciales

Si la prediccin fue Taken

El procesador calcula y almacena la direccin destino del salto El procesador prebusca y almacena las primeras instrucciones del destino del salto

Si la prediccin fue Not taken

Ejemplos: 2 buffer Power1, Power2, P ti Ej l b ff P 1 P 2 Pemtium, UltraSparc( 16 ) R10000 (256 bit ) Ult S ( ), bits) 3 buffer Nx586 ( 2 pendientes ) AC Tema 4
F. Tirado / R. Hermida (2010-11) 92

Tratamiento de Saltos: Otras alternativas

Ejecucin condicional de instrucciones


Idea bsica
Eliminar, parcialmente, los saltos condicionales mediante instrucciones de ejecucin condicional Una instruccin de ejecucin condicional est formada por: Una condicin Una operacin Ejecucin condicional Si la condicin es cierta La instruccin se ejecuta Si la condicin es falsa La instruccin se comporta como NOP

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

Ventaja: Buena solucin para implementar alternativas simples de control Desventaja: Consumen tiempo en todos los casos. Ms lentas que las incondicionales Ejemplos: Alpha, Hp-Pa, MIPS, Sparc

AC Tema 4

F. Tirado / R. Hermida (2010-11)

93

Tratamiento de Saltos: Otras alternativas

Ejecucin con predicados


Idea bsica
Transformar todos las instrucciones en condicionales Una instruccin de ejecucin condicional est formada por: Una parte de condicin, denominada predicado o guarda U parte de operacin Una t d i Ejecucin predicada: Si la condicin es cierta La instruccin se ejecuta Si la condicin es falsa La instruccin se comporta como NOP

Ejemplo
If ( a< 10) c = c+1 else if ( b>20) ) d = d+1 else e = e+1 T p2 add c,c,1 p4 Add d,d,1 Blt a,10,L1 F Bgt b,20, L2 T F Add e,e,1 p3 p1 pred_lt p1(U),p2(U),a,10 add c,c,1 (p2) pred_gt p3(U), p4(U),b,20 (p1) add d,d,1 (p4) add e,e,1 (p3)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

94

Prediccin de saltos

Resumen
Predictor bimodal bueno para Loop (programas FP ) Predict res de dos niveles buen s para IF then else Predictores d s buenos Prediccin de la direccin destino importante mp Ejecucin condicional y predicada reduce el numero de saltos

AC Tema 4

F. Tirado / R. Hermida (2010-11)

95

Especulacin
L p di in d s lt s int du ESPECULACION La prediccin de saltos introduce
o Dos tipos de instrucciones en el procesador Las independientes p Las que dependen de una predicin de salto. Su finalizacin depende del acierto o fallo en la p prediccin. Como podemos implementar esta distincin con un modelo de ejecucin con finalizacin Fuera de orden? Modificando el Algoritmo de Tomasulo para forzar finalizacin en orden g p ALGORITMO DE TOMASULO CON ESPECULACION

AC Tema 4

F. Tirado / R. Hermida (2010-11)

96

Especulacin
Algoritmo de TOMASULO l d
De Memoria Cola de Ope FP Load L d Buffers Store Buffers B ff
Add1 Add2 Add3 dd3 Mult1 Mult2 M lt2

Registros FP

Load1 Load2 Load3 Load4 Load5 Load6

SumadorFP

Estaciones De Reserva

A Memoria MultiplicadorFP

Common Data Bus (CDB)


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

Especulacin
Algoritmo de TOMASULO con especulacin l d l
Buffer de Reordenamiento

De Memoria

Cola de Ope FP Load Buffers A Memoria Reg Dato

Registros

Load1 Load2 Load3 Load4 Load5 Load6

Add1 Add2 Add3

Mult1 Mult2 Estaciones E i De Reserva MultiplicadorFP

SumadorFP

Common Data Bus (CDB)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

98

Especulacin
El Buffer de Reordenamiento (ROB)
R13

o Almacena resultados de instrucciones cuya ejecucin ha finalizado, pero estn a l espera d actualizar registros o memoria stn la sp de ctu li ist s m m i (finalizacin en orden) son dependientes de un salto (ejecucin especulativa) o Permite el paso de operandos entre instrucciones especuladas con dependencia LDE.

L operandos d una i t Los d de instruccin pueden ll i d llegar h t hasta la ER desde:


o Registros (la instruccin que genera el operando ha finalizado fi li d completamente) l ) o ROB (la instruccin que genera el operando se ha ejecutado, pero no ha actualizado el banco de registros) o CBD (la instruccin que genera el operando todava no ha (l i i l d d h realizado la fase de escritura)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

99

Diapositiva 99 R13 Transparencia insertada


Romn; 28/09/2007

Especulacin
Est u tu del ROB: cada entrada contiene 4 campos Estructura d l d nt d nti n mp s
R14

o Tipo de instruccin Salto (sin reg destino), Store ( ( g ) (destino en memoria), ) Aritmtica/Load (con destino en registro) o Destino Nmero de registro (Aritmtica/Load) Direccin de memoria (Store) o Valor R Resultado d l ejecucin d l i l d de la j i de la instruccin. G i Guarda el d l valor hasta que se actualiza registro destino o memoria. o Listo La instruccin ha completado la fase de ejecucin y el resultado est disponible en el campo Valor

AC Tema 4

F. Tirado / R. Hermida (2010-11)

100

Diapositiva 100 R14 Transparencia insertada


Romn; 28/09/2007

Especulacin: fases
Algoritmo de TOMASULO con especulacin l d l Los 4 estados del algoritmo de Tomasulo especulativo
Issue: Toma la instruccin de la cola Es necesario: ER con entrada libre y Buffer de Reordenamiento (ROB) con R12 entrada libre. Toma operandos de registros o de resultados almacenados en ROB por instrucciones previas. Marca R. Destino con n de ROB asignado Marca ER asignada con n de ROB asignadoRH2 g g Ejecucin: Opera sobre los operandos Espera hasta que los operandos estn disponibles. Chequea CDB. Escribe resultados: Finaliza ejecucin Escribe a travs de CDB en todas las ER de Fus y entradas del ROB que estn a la espera del resultado. Libera ER. No escribe en registros, ni memoria. Enva por CDB resultado + n de ROB al que se dirige RH3 p g Commit: Actualiza registros desde el ROB Cuando la Instruccin esta en la cabecera del ROB y resultado presente: Actualiza Registro (o escribe en memoria) y elimina la instruccin del ROB.
R15 AC Tema 4

Tratamiento de saltos y Excepciones


F. Tirado / R. Hermida (2010-11) 101

Diapositiva 101 R12 R15 He reescrito descripcin de estados


Romn; 26/09/2007

Tratamiento de saltos y excepciones Orden de LD/ST Merecen unas transp aparte


Romn; 28/09/2007

RH2 RH3

Nuevo Nuevo

RH; 23/11/2008 RH; 23/11/2008

R16

Especulacin: Ejemplo
Buffer de Reordenamiento Dest Valor Tipo Listo

Se lanza: LD F0,10(R2)

N de ROB
7 6 5 4 3 2 1

De Memoria Dest 1 10+R2

Cola de Ope FP

F0

LD F0,10(R2)

N Reg

Registros 10 8 6 4 2 0
Valor N de ROB que producir el valor

Load Buffers

A Memoria

Dato 1

Dest

Dest D st

SumadorFP

Estaciones De Reserva 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 explcitamente la instruccin que se lanza, ejecuta o finaliza.
Romn; 01/10/2007

Especulacin: Ejemplo
Buffer de Reordenamiento

Se lanza: ADDD F10,F4,F0

Dest Valor

Tipo

Listo

N de ROB
7 6 5 4 3 2 1 2

De Memoria Dest 1 10+R2

Cola de Ope FP

F10 F0

ADDD F10,F4,F0 LD F0,10(R2)

N N Reg

Registros 10 8 6 4 2 0

Load Buffers

A Memoria

Dato 1

Dest 2 ADDD R(F4), ROB1

Dest D st

SumadorFP

Estaciones De Reserva MultiplicadorFP Common Data Bus (CDB)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

103

Especulacin: Ejemplo
Buffer de Reordenamiento

Se lanza: DIVD F2,F10,F6

Dest Valor

Tipo

Listo

N de ROB
7 6 5 4 3 2 1 2

De Memoria Dest 1 10+R2

Cola de Ope FP

F2 F10 F0

DIVD F2,F10,F6 ADDD F10,F4,F0 LD F0,10(R2)

N N N Reg

Registros 10 8 6 4 2 0

Load Buffers

A Memoria

Dato

3 1

Dest 2 ADDD R(F4), ROB1

Dest D st 3 DIVD Estaciones De Reserva

ROB2,R(F6)

SumadorFP

MultiplicadorFP Common Data Bus (CDB)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

104

Especulacin: Ejemplo
Buffer de Reordenamiento

Se lanza: BNE F2, --LD F4, 0(R3) ADDD F0,F4,F6


De Memoria Dest 1 5 10+R2 0+R3 Load Buffers Cola de Ope FP

Dest Valor F0 F4 --F2 F10 F0

Tipo ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0 LD F0,10(R2)

Listo N N N N N N Reg

N de ROB
7 6 5 4 3 2 1 2

Registros 10 8 6 4 2 0

A Memoria

Dato

5 3

6
Dest 2 ADDD R(F4), ROB1 6 ADDD ROB5, R(F6)

Dest D st 3 DIVD Estaciones De Reserva

ROB2,R(F6)

SumadorFP

MultiplicadorFP Common Data Bus (CDB)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

105

Especulacin: Ejemplo
Buffer de Reordenamiento

Se lanza: ST 0(R3), F4
(sup R3=10)

Dest Valor

Tipo

Listo N N N N N N N Reg

N de ROB
7 6 5 4 3 2 1 2

De Memoria Dest 1 5 10+R2 0+R3

Cola de Ope FP

10 ROB5 ST 0(R3),F4 ADDD F0,F4,F6 F0 LD F4,0(R3) , ( ) F4 BNE F2,----DIVD F2,F10,F6 F2 ADDD F10,F4,F0 F10 LD F0,10(R2) F0

Registros 10 8 6 4 2 0

Load Buffers

A Memoria

Dato

5 3

6
Dest 2 ADDD R(F4), ROB1 6 ADDD ROB5, R(F6)

Dest D st 3 DIVD Estaciones De Reserva

ROB2,R(F6)

SumadorFP

MultiplicadorFP Common Data Bus (CDB)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

106

Especulacin: Ejemplo
Buffer de Reordenamiento

Se ejecuta: LD F4,0(R3)

Dest Valor 10 M[10] F0 F4 M[10] [ ] --F2 F10 F0

Tipo ST 0(R3),F4 ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0 LD F0,10(R2)

Listo Y N Y N N N N Reg

N de ROB
7 6 5 4 3 2 1 2

De Memoria Dest 1 10+R2

Cola de Ope FP

Registros 10 8 6 4 2 0

Load Buffers

A Memoria

Dato

5 3

6
Dest 2 ADDD R(F4), ROB1 6 ADDD M[10], R(F6)
Resultado a ROB5 y todo ROB o ER con marca ROB5

Dest D st 3 DIVD Estaciones De Reserva

ROB2,R(F6)

SumadorFP

MultiplicadorFP Common Data Bus (CDB)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

107

Especulacin: Ejemplo
Buffer de Reordenamiento

Se ejecuta: ADDD F0,F4,F6

Dest Valor 10 M[10] F0 F4+F6 F4 M[10] [ ] --F2 F10 F0

Tipo ST 0(R3),F4 ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0 LD F0,10(R2)

Listo Y Y Y N N N N Reg

N de ROB
7 6 5 4 3 2 1 2

De Memoria Dest 1 10+R2

Cola de Ope FP

Registros 10 8 6 4 2 0

Load Buffers

A Memoria

Dato

5 3

6
Dest 2 ADDD R(F4), ROB1

Dest D st 3 DIVD Estaciones De Reserva

ROB2,R(F6)

Resultado a ROB6 y todo ROB o ER con marca ROB6

SumadorFP

MultiplicadorFP Common Data Bus (CDB)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

108

Especulacin: Ejemplo
Buffer de Reordenamiento

Se ejecuta: LD F0,10(R2)
sup R2=10

Dest Valor 10 M[10] F0 F4+F6 F4 M[10] [ ] --F2 F10 F0 M[20]

Tipo ST 0(R3),F4 ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0 LD F0,10(R2)

Listo Y Y Y N N N Y Reg

N de ROB
7 6 5 4 3 2 1 2

De Memoria Dest

Cola de Ope FP

Registros 10 8 6 4 2 0

Load Buffers

A Memoria

Dato

5 3

6
Dest 2 ADDD R(F4),M[20]

Dest D st 3 DIVD Estaciones De Reserva

ROB2,R(F6)

SumadorFP

MultiplicadorFP Common Data Bus (CDB)

AC Tema 4

F. Tirado / R. Hermida (2010-11)

109

Especulacin: Ejemplo
Buffer de Reordenamiento

Se ejecuta: ADDD F10,F4,F0

Dest Valor 10 M[10] F0 F4+F6 F4 M[10] [ ] --F2 F10 * F0 M[20]

Tipo ST 0(R3),F4 ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0 LD F0,10(R2)

Listo Y Y Y N N Y Y Reg

N de ROB
7 6 5 4 3 2 1 2

De Memoria Dest

Cola de Ope FP

Registros 10 8 6 4 2 0

Load Buffers

A Memoria

Dato

5 3

6
Dest

Dest D st 3 DIVD Estaciones De Reserva SumadorFP

,R(F6)

MultiplicadorFP Common Data Bus (CDB)

* = R(F4)+M[20]
AC Tema 4
F. Tirado / R. Hermida (2010-11) 110

Especulacin: Ejemplo
Buffer de Reordenamiento

Finaliza (Commit): LD F0,10(R2)

Dest Valor 10 M[10] F0 F4+F6 F4 M[10] [ ] --F2 F10 *

Tipo ST 0(R3),F4 ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6 ADDD F10,F4,F0

Listo Y Y Y N N Y

N de ROB
7 6 5 4 3 2 1 2

De Memoria Dest

Cola de Ope FP

Registros 10 8 6 4 2 0

Reg Load Buffers A Memoria Dato 5 3

6
Dest

M[20]

Dest D st 3 DIVD Estaciones De Reserva SumadorFP

,R(F6)

MultiplicadorFP Common Data Bus (CDB)

* = R(F4)+M[20]
AC Tema 4
F. Tirado / R. Hermida (2010-11) 111

Especulacin: Ejemplo
Buffer de Reordenamiento

Finaliza (Commit): ADDD F10,F4,F0

Dest Valor 10 M[10] F0 F4+F6 F4 M[10] [ ] --F2

Tipo ST 0(R3),F4 ADDD F0,F4,F6 LD F4,0(R3) , ( ) BNE F2,--DIVD F2,F10,F6

Listo Y Y Y N N

N de ROB
7 6 5 4 3 2 1

De Memoria Dest

Cola de Ope FP

Reg Load Buffers A Memoria Dato

Registros * 10 8 6 5 4 3 2 6 M[20] 0

Dest

Dest D st 3 DIVD Estaciones De Reserva SumadorFP

,R(F6)

MultiplicadorFP Common Data Bus (CDB)

* = R(F4)+M[20]
AC Tema 4
F. Tirado / R. Hermida (2010-11) 112

R17

Especulacin: Riesgos a travs de memoria

Ri s s EDE y EDL: n pueden aparecer dado que la Riesgos no pu d n p d d u l actualizacin de memoria se hace en orden.
o Esperar hasta que la instruccin ST se halle en la cabecera de p q ROB => Todos los LD y ST anteriores se han completado.

Riesgos LDE: Podran producirse si un LD accede a la posicin de memoria A, habiendo en el ROB un ST previo que almacena el resultado en A. Se evitan mediante el siguiente mecanismo:
o Un LD no ejecuta el acceso a memoria si hay un ST previo en el ROB con la misma direccin de memoria. o Tampoco se ejecuta el LD si est pendiente el clculo de la direccin efectiva de algn ST del ROB

AC Tema 4

F. Tirado / R. Hermida (2010-11)

113

Diapositiva 113 R17 Esta y la siguiente son nuevas. Por favor, revisar.
Romn; 01/10/2007

Especulacin: Saltos e interrupciones

El ROB permite recuperarse de saltos mal predichos e p mit up s d s lt s m l p di h s implementar un modelo de excepciones precisas Si una instruccin de salto bien predicha llega a cabecera de ROB =>
o Eliminarla de ROB

Si una instruccin 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 instruccin correcta.

Si una instruccin genera una interrupcin =>


o Registrar la peticin en el ROB o Si la instruccin llega a la cabecera del ROB (no especulada) especulada), entonces reconocer la interrupcin. o Cualquier instruccin anterior habr finalizado. Por tanto ninguna instruccin anterior puede provocar una excepcin excepcin.
AC Tema 4
F. Tirado / R. Hermida (2010-11) 114

Especulacin: ms ejemplos
Algoritmo de TOMASULO con especulacin
Estado Opera Vj

Estaciones de Reserva
Vk Qj Qk N ROB Destino

Un

ejemplo
F6,34(R2) F2,45(R3) F0,F2,F4 F8,F6,F2 F8 F6 F2 F10,F0,F6 F6,F8,F2

ADD1 ADD2 ADD3 MUL1 MUL2

Libre Libre Libre Libre Ocup. MULT DIV M(45+(R3)) F4 M(34+(R2)) #3 #3 #5

LD LD MULTD SUBD DIVD ADDD

Buffer de Reordenamiento
Estado E t d 1 2 3 4 5 6 libre libre Ocupada O d Ocupada Ocupada Ocupada Instruccin I t i LD F6,34(R2 Estado E t d Commit Commit Escri. R E i Res Escri. Res. Ejecuta Escri. Res. Escri Res Destino D ti F6 F2 F0 F8 F10 F6 #4 + #2 Valor V l M(34+(R2)) M(45+R3)) #2x(F4) #2 (F4) #1 - #2

LD F2,45(R3) MULTD F0 F2 F4 F0,F2,F4 SUB F8,F6,F2 DIVD F10,F0,F6 ADDD F6 F8 F2 F6,F8,F2

F0

F2 no

F4 no

F6 6 si

F8 4 si

F10 5 si

F12 no

Estado de los registros FP

Buffer N Ocupado

3 si

AC Tema 4

F. Tirado / R. Hermida (2010-11)

115

Especulacin: ms ejemplos
Algoritmo de TOMASULO con especulacin l d l
Estado Opera MULT MULT Vj M(0+(R1)) ( ( )) M(0+(R1)) Vk F2 F2 Qj Qk

R18

Un LOOP

ejemplo j mpl
LD F0 0(R1) F0,0(R1) MULTD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1 LOOP R1,LOOP
ESPECULADA AS

MUL1 MUL2

Libre Libre

N ROB Destino #2 #7

Estado 1 2 3 4 5 6 7 8 9 10 libre libre Ocupada Ocupada Ocupada Ocupada Ocupada Ocupada Ocupada

Instruccin LD F0,0(R1)

Estado Commit Commit Escri. Res Escri. Res. Escri. Res Escri. Res. Escri. Res Escri. Res Escri. Res

Destino F0 F4 0+R1 R1 F0 F4 0+R1 R1

Valor M(0+(R1)) F0 x F2 #2 R1-8 M(#4) #6xF2 #7 #4 - #8

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

Ocupada O d

Escri. Res. E i R F4 7 F6 F8 F10 F12

F0

F2

Estado de los registros FP

Buffer N Ocupado

6 si no

si

no

no

no

no
116

AC Tema 4

F. Tirado / R. Hermida (2010-11)

Diapositiva 116 R18 Se podra hacer unas tablas con el "Detalle de las fases" como el que hice para Tomasulo, pero es bastante ms complicado. Vale la pena?
Romn; 01/10/2007

También podría gustarte