Arquitectura de Computadores - UCM

134
Arquitectura de Computadores TEMA 4 ILP, Panificación dinámica, Predicción de saltos, Especulación Curso 2010-2011

Transcript of Arquitectura de Computadores - UCM

Page 1: Arquitectura de Computadores - UCM

Arquitectura de Computadores

TEMA 4ILP, Panificación dinámica,

Predicción de saltos, Especulación

Curso 2010-2011

Page 2: Arquitectura de Computadores - UCM

Contenidos

Introducción: ILP Introducción: ILP Técnicas SW: Compilador Planificación dinámica. Algoritmo de Tomasulo.lan f cac ón d nám ca. lgor tmo de omasulo. Tratamiento de dependencias de control: Predicción de

saltosT i d lTratamiento de saltosTécnicas de predicción: Estáticas y dinámicas

Especulación Especulación Bibliografía

o Cap 2 [HePa07]o Cap [HePa07]

o Capítulos 4 , 7 y 8 de [SiFK97]

o Simulador DLXview

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

R1

Page 3: Arquitectura de Computadores - UCM

Diapositiva 2

R1 He actualizado la referencia de HePaRomán; 26/09/2007

Page 4: Arquitectura de Computadores - UCM

Introducción OBJETIVO: Ejecutar el mayor numero de instrucciones por ciclo 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”)

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

Conflictos de recursos - Riesgos estructurales Replicación/segmentaciónDependencias de datos CortocircuitosDependencias de datos CortocircuitosDependencias 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, IBMToda la información disponible en ejecuciónCódigo independiente de la implementación

Basados en SW en tiempo de compilación (estáticos). Ej ItaniumDependencias de memoria muy difíciles de determinar

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

Dependencias de memoria muy difíciles de determinar

Page 5: Arquitectura de Computadores - UCM

Introducción

Paralelismo a nivel de instrucción ILP

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

próximas en la secuencia

El bloque básico es muy pequeño 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 l LP BB El camino es explotar ILP entre varios BB

El caso más simple: paralelismo a nivel de buclefor ( i =1; i<=1000; i++)for ( i =1; i<=1000; i++)

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

Todas las iteraciones son independientes (saltos)

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

p ( )

Page 6: Arquitectura de Computadores - UCM

Introducción

Técnicas para explotar ILP

Técnica Reduce

Técnicas para explotar ILP

Planificación Dinámica Paradas por riesgos de datos Predicción dinámica de saltos Paradas por riesgos de control Lanzamiento múltiple CPI Ideal m m p Varias instrucciones por ciclo Especulación Riesgos de datos y control Dynamic memory disambiguation Paradas por riesgos de datos

Dinámicas

Dynamic memory disambiguation Paradas por riesgos de datos en memoria

Desenrollado de bucles Paradas por riesgos de control Pl ifi ió l m il d P d s i s s d d t s Planificación por el compilador Paradas por riesgos de datos Software pipelining CPI Ideal y Paradas por

riesgos de datos Estáticas

Predicción estática y Especulación por el Compilador

CPI Ideal, paradas por riesgos de datos y control

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

R3

Page 7: Arquitectura de Computadores - UCM

Diapositiva 5

R3 Quito "trace scheduling" ya que no se estudiaRomán; 26/09/2007

Page 8: Arquitectura de Computadores - UCM

Dependencias

D t i l s d d i s s íti bt l á i Determinar las dependencias es crítico para obtener el máximo paralelismo

¿ C ál h ? ¿ A é f t ? ¿ Cuáles hay ? , ¿ A qué recursos afectan?

L d d d l Las dependencias son propias de los programaso La presencia de una dependencia indica la posibilidad de aparición de un

riesgo, pero la aparición de éste y la posible parada depende de las g p p y p p pcaracterísticas del “pipe”

o La dependencias Indican la posibilidad de un riesgo 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

Page 9: Arquitectura de Computadores - UCM

Dependencias

Tipos de Dependencias

Dependencias de datos Dependencia verdadera (LDE) Dependencias de nombre

- Antidependencia (EDL)D d i d lid (EDE)- Dependencia de salida (EDE)

Dependencias de control

Dependencia verdadera (LDE)

o La instrucción i depende de jp 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

R4

Page 10: Arquitectura de Computadores - UCM

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

Sugiero unificar la nomenclatura, tal como queda en la transparenciaRomán; 26/09/2007

Page 11: Arquitectura de Computadores - UCM

Dependencias

Dependencias de nombre ( Reutilización de los registros )

o Dos instrucciones i y j donde i precede a j presentan dependencias de nombre o Dos instrucciones i y j donde i precede a j presentan dependencias de nombre en las siguientes situaciones:

o Antidependencia WAR (EDL)L i t ió j ib ( R i ) t d i lLa instrucción j escribe ( Reg o memoria) antes de que i lea.

ADDD F4,F0,F2LD F0,-8(R1)

o Dependencia de salida WAW (EDE) Las instrucciones i y j escriben el mismo reg. o memoria

ADDD F4,F0,F2SUBD F4 F3 F2SUBD F4,F3,F2

ILP y Dependencias de datoso Los mecanismos de ejecución deben preservar el orden del programa. Mismo resultado que en ejecución secuencialo Explotar todo el paralelismo posible sin afectar al resultado de la ejecución

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

o Para las dependencias de nombre eliminar la dependencia usando otros “nombres”

Page 12: Arquitectura de Computadores - UCM

Dependencias

Dependencias de control

o Cada instrucción depende de un conjunto de saltos y en general esta dependencia debep j y g ppreservarse para preservar el orden del programa

If P1 (S1;S1;

);if P2 (

S2;))

S1 depende de P1 ; S2 depende de P2

L d d d l d l d Las dependencias de control pueden violarse. Se pueden 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

Page 13: Arquitectura de Computadores - UCM

Dependencias

Dependencias de control y Excepciones

o Comportamiento de excepciones se debe preservar. Cualquier cambio en el orden p p p qde ejecución no debe cambiar como las excepciones son atendidas en la ejecución.

DADDU R2,R3,R4BEQZ R2,L1LW R1 0(R2)LW 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 productoras y j p yconsumidoras de datos.

DADDU R1,R2,R3BEQZ R4,L1DSUBU R1 R5 R6DSUBU R1,R5,R6

L1: --- ---OR R7,R1,R8

o OR usa el valor de DADDU o DSUBU dependiendo del comportamiento del salto.

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

p pEl flujo de datos se debe preservar.

Page 14: Arquitectura de Computadores - UCM

Dependencias

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

Dependencias de datos Dependencias de datos

Fáciles de determinar para registros Difíciles para direcciones de memoria

¿S l i d 100( R4 ) 20( R6 )?¿Son el mismo dato 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ónDebe conocer dependencias entre load y stores para permitir su reordenaciónMá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 saltoUna 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

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

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

Page 15: Arquitectura de Computadores - UCM

Técnicas SW para explotar ILP

Un programa: Bucle simple 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 F2ADDD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 L pBNEZ R1,Loop

Instrucción que produce resultado

Instrucción que usa el

Latencia de uso

resultado FP ALU FP ALU 3

FP ALU STORE FP 2 Datos de la etapa F ALU S ORE F

LOAD FP FP ALU 1

LOAD FP STORE FP 0

pde ejecución

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

Entera Entera 0

R5

Page 16: Arquitectura de Computadores - UCM

Diapositiva 12

R5 Utilizo el término "latencia de uso" por coherencia con los términos usados en el Tema 2 y en los problemasRomán; 26/09/2007

Page 17: Arquitectura de Computadores - UCM

Técnicas SW para explotar ILP

Un programa: Bucle simple Un programa: Bucle simple

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

E ó l dEjecución en el procesador

Loop LD F0,0(R1) Ciclo 1p , ( )Espera 2ADDD F4,F0,F2 3Espera 4Espera 5pSD 0(R1),F4 6SUBI R1,R1,#8 7Espera 8BNEZ R1,Loop 9, pEspera 10

Una instrucción cada 2 ciclos

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

Page 18: Arquitectura de Computadores - UCM

Planificación de instruccionesTécnicas SW para explotar ILP

f

Loop LD F0,0(R1) Ciclo1 Reordenamiento para ocultar latenciasSUBI R1,R1,#8 2ADDD F4,F0,F2 3 6 ciclos 1 instrucción por cicloEspera 4BNEZ R1,Loop 5 2 ciclos de overhead por el saltoSD #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 saltosSD 0(R1),F4LD F6,-8(R1)( )ADDD F8,F6,F2 Se elimina 3 saltos y 3 decrementosSD -8(R1),F8LD F10,-16(R1)ADDD F12,F10,F2 Permanecen dependencias y paradasp y pSD -16(R1), F12LD F14,-24(R1)ADDD F16,F14,F2SD -24(R1),F16 MÁS REGITROS = Renombrado por el Compilador

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

( ), p pSUBI R1,R1,#32 (Imprescindible ??)BNEZ R1,Loop

Page 19: Arquitectura de Computadores - UCM

D s ll d Pl ifi ió

Técnicas SW para explotar ILP

Desenrollado + PlanificaciónLoop LD F0,0(R1)

LD F6,-8(R1), ( )LD F10,-16(R1)LD F14,-24(R1)ADDD F4,F0,F2ADDD F8,F6,F2, ,ADDD F12,F10,F2ADDD F16,F14,F2SD 0(R1),F4SD -8(R1),F8( ),SD -16(R1),F12SUBI R1,R1,#32BNEZ R1,LoopSD 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 yli i l d d l “ i ”

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

eliminar las paradas del “pipe”

R20

Page 20: Arquitectura de Computadores - UCM

Diapositiva 15

R20 Corregido error en nº registroRomán; 21/11/2007

Page 21: Arquitectura de Computadores - UCM

Técnicas SW para explotar ILP

S ft “ i li i ” Software “pipelining”

• Idea:

Si las diferentes iteraciones de un bucle son independientes, tomemosinstrucciones de diferentes iteraciones para aumentar el ILPR i l b l d d i t ió t Reorganiza los bucles de manera que cada instrucción pertenece a una iteración diferente

Iteración 1Iteración 2

Iteración 3Iteración 4

Iteración 5

Iteración SWPipelened

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

Page 22: Arquitectura de Computadores - UCM

Técnicas SW para explotar ILP

Software “pipelining”Software pipeliningAntes: Unrolled 3 veces1 LD F0,0(R1)2 ADDD F4 F0 F2

Después: Software Pipelined1 SD 0(R1),F4 ; Stores M[i]2 ADDD F4 F0 F2 Add M[i 1]2 ADDD F4,F0,F2

3 SD 0(R1),F44 LD F6,-8(R1)5 ADDD F8 F6 F2

2 ADDD F4,F0,F2 ; Adds to M[i-1]3 LD F0,-16(R1); Loads M[i-2]4 SUBI R1,R1,#85 BNEZ R1,LOOP5 ADDD F8,F6,F2

6 SD -8(R1),F87 LD F10,-16(R1)8 ADDD F12,F10,F29 SD 16(R1) F12

5 BNEZ R1,LOOP

SW Pipeline9 SD -16(R1),F1210 SUBI R1,R1,#2411 BNEZ R1,LOOP

d op

s

Time

Loop unrolling simbólicoLoop Unrolled

erla

pped Time

•Maximiza la distancia resultado-uso•Menor tamaño del código•Llenado y vaciado del pipe solo una vez

ove

Time

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

Time

Page 23: Arquitectura de Computadores - UCM

Ej ió SW i li d ( i ió R1 1000)

Técnicas SW para explotar ILP

F0 M(1000)F4 F0 + F2 ; M(1000)+F2

Ejecución SW pipelined (suposición R1=1000)

C bLD F0, 0(R1) ADDD F4 F0 F2F4 F0 + F2 ; M(1000)+F2

F0 M(992)-----------------------------------------------------------------M(1000) F4 ; M(1000)+F2F4 F0 + F2 ; M(992)+F2

SD 0(R1),F4 ; Stores M[i]ADDD F4 F0 F2 Add t M[i 1]

Cabecera ADDD F4,F0,F2LD F0,-8(R1)

F4 F0 + F2 ; M(992)+F2F0 M(984)R1 992----------------------------------------M(992) F4 ; M(992) F2

ADDD F4,F0,F2 ; Adds to M[i-1]LD F0,-16(R1); Loads M[i-2]

Iteración 1

M(992) F4 ; M(992)+F2F4 F0 + F2 ; M(984)+F2F0 M(976)R1 984

Iteración 2SD 0(R1),F4ADDD F4,F0,F2LD F0,-16(R1)

---------------------------------------……

F0 M(0) ; Ahora R1=16R1 8

Iteración nR1 8-----------------------------------------------------------------M(8) F4 ; M(8)+F2F4 F0 + F2 ; M(0)+F2 Cola

SD 0(R1),F4ADDD F4,F0,F2

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

M(0) F4 ; M(0)+F2, ,

SD -8(R1),F4

Page 24: Arquitectura de Computadores - UCM

Técnicas SW para explotar ILP

ó Comparación

• Bloque grande para planificar Loop Unrolling

Bloque grande para planificar• Reduce el numero de saltos• Incrementa el tamaño del código• Tiene que incluir iteraciones extran qu nc u r t rac on s tra• Presión sobre el uso de registros

Software Pipelining • No hay dependencias en el cuerpo del bucle• No reduce el numero de saltos• Necesita inicio y finalización especial• Necesita inicio y finalización especial

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

Page 25: Arquitectura de Computadores - UCM

Tratamiento de dependencias de datos en ejecución

Planificación dinámica : Procesador Planificación dinámica : Procesador.

Modifica la secuencia de instrucciones resolviendo las dependencias en tiempo de ejecución Disponibilidad de más unidades funcionales Código valido para diferentes ejecución. Disponibilidad de más unidades funcionales. Código valido para diferentes implementaciones

Problema : Lanzamiento de instrucciones en orden.

DIVD F0,F2,F4 S1 S2 depende de S1ADDD F10,F0,F8 S2SUBD F12,F8,F14 S3 S3 es independiente de la demásSUBD 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 Debe implementarse para Lectura de operandos : Chequea disponibilidad de 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

Page 26: Arquitectura de Computadores - UCM

Planificación Dinámica : Tomasulo

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

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

Motivación:Arquitectura 360, 4 registros FP( Pocos registros, muchas dependencias )Arquitectura RMUF segmentadas Add(3), Mul(2), Load (6), Stores (3)

l id l i d PF l li ió Solo consideraremos las operaciones de PF en la explicación

Casi todos los procesadores actuales usan mecanismo basados en este l italgoritmoAlpha 21264, HP 8000, MIPS 10000, Pentium III-4-Core, PowerPC 604, …

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

R6

Page 27: Arquitectura de Computadores - UCM

Diapositiva 21

R6 He eliminado el párrafo dedicado a diferencias con ScoreboardRomán; 26/09/2007

Page 28: Arquitectura de Computadores - UCM

Planificación Dinámica : Tomasulo

De Memoria Registros FPCola

de Ope FPDir Valor Busy

Qi Vi

Load Buffers

Load1Load2Load3Load4Load5 Qi Dir Vi Busy

TAGs

Add1

Store Buffers

Load5Load6

TAGs

Qi Dir Vi Busy

Add1Add2Add3

Mult1Mult2

Estaciones D R

A MemoriaOp Qj Valorj Qk Valork Busy

TAGs

SumadorFP MultiplicadorFPDe Reserva

Common Data Bus (CDB)

Excepciones imprecisas

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

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

Page 29: Arquitectura de Computadores - UCM

Planificación Dinámica : Tomasulo Tres estados para una instrucción en el algoritmo1 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 En load/store si hay buffer libreUF que los generara. En load/store si hay buffer 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ónMonitoriza 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 “ va a “Bus normal: dato + destino, va a CDB: dato + fuente, “ viene de”

No chequea riesgo EDE ni EDL (renombrado dinámico)

Componentes de las ER Componentes de las EROp: Operación a realizarVj, Vk: Valores de los operandos fuente

Store buffers tienen un campo V para el resultado que debe ser almacenado.p p qQj, Qk: ER produciendo los operandos fuente Notar: Qj,Qk=0 => ready

Store buffers tienen Qi para ER produciendo el resultadoBusy: Indica ER ocupadaE d d i l d I di l FU d i l l d l R i E

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

Estado de registro resultado—Indica la FU que producira el resultado para el Registro. En blanco ninguna intrucción esta pendiente de escribir en el registro.

Page 30: Arquitectura de Computadores - UCM

Planificación Dinámica : Tomasulo

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

Suposiciones: S1 y S2 ya lanzadas a ejecución S3 se va a lanzarSuposiciones: S1 y S2 ya lanzadas a 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

Page 31: Arquitectura de Computadores - UCM

Planificación Dinámica : Tomasulo

Ej mpl : Ej u ión d l s u n i : Ejemplo: Ejecución de la secuencia:(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 Paso 1: Lanzamiento de ADD a la ER X (X es una ER libre de la UF de Suma/Resta de Punto Flotante)

TAG VALOR

F0 X ??

Estado de registrosEstación de reserva

Busy OP TAGj Valorj TAGk ValorkF2 Y ??

F4 Z ??

y j jX yes + Y ?? Z ??

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

Page 32: Arquitectura de Computadores - UCM

Planificación Dinámica : Tomasulo

Ej mpl : Ej u ión d l s u n i : Ejemplo: Ejecución de la secuencia:(S1): COD1 F2, ---, ---(S2): COD2 F4, ---, ---( )(S3): ADDD F0, F2, F4Paso 2: Esperar a que se generen los operandosa) Escritura del resultado de S1 sobr el CDB:a) Escritura del resultado de S1 sobr el CDB:

TAG VALOREstado de registros

Estación de reservaF0 X ??

F2 0 22.57

F4 Z ??

Estación de reservaBusy OP TAGj Valorj TAGk Valork

X yes + 0 22.57 Z ??

b) Escritura del resultado de S2 sobre el CDB:

F4 Z ??

Estado de registrosTAG VALOR

F0 X ??

F2 0 22 57

Estado de registrosEstación de reserva

Busy OP TAGj Valorj TAGk Valork

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

F2 0 22.57

F4 0 3.2X yes + 0 22.57 0 3.2

Page 33: Arquitectura de Computadores - UCM

Planificación Dinámica : Tomasulo

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

TAG VALOREstado de registrosUF

F0 0 25.77

F2 0 22.57

F4 0 3 2

(X,25.77)

F4 0 3.2CDB

A todas las ER, Store Buffers y Registros que tengan la marca X

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

Page 34: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Ejemplo EjemploLD 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 LD F2 45+ R3MULT F0 F2 F4

Ocupada DirecciónLoad1 Load2 Load3

SUBD F8 F6 F2DIVD F10 F0 F6ADDD F6 F8 F2

Estado de EROperaciónQj y Qk ER produciendo

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Qj y Qk ER produc endooperandosVj y Vk valores de los operandos

Add2Add3Mul1Mul2

Estado de REGQué FU escribirá en el Reg

F0 F2 F4 F6 F8 F10 F12

FU

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

Q g FU

Page 35: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Ciclo 1

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

LD F6 34+ R2 1LD F2 45+ R3MULT F0 F2 F4

Ocupada DirecciónLoad1 SI 34+R2Load2 NOLoad3 NO

SUBD F8 F6 F2DIVD F10 F0 F6ADDD F6 F8 F2

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1 NOAdd2 NO

Estado de ERAdd2 NOAdd3 NOMul1 NOMul2 NO

Estado de REG F0 F2 F4 F6 F8 F10 F12

FU Load1

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

FU Load1

Page 36: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Ciclo 2 Ciclo 2

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

LD F6 34+ R2 1LD F2 45+ R3 2MULT F0 F2 F4

Ocupada DirecciónLoad1 SI 34+R2Load2 SI 45+R3Load3 NO

SUBD F8 F6 F2DIVD F10 F0 F6ADDD F6 F8 F2

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1 NONo hay bloqueo

Estado de ERAdd2 NOAdd3 NOMul1 NOMul2 NO

Estado de REG F0 F2 F4 F6 F8 F10 F12

FU Load2 Load1

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

FU Load2 Load1

Page 37: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

l Ciclo 3

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

LD F6 34+ R2 1 2-3LD F2 45+ R3 2MULT F0 F2 F4 3

Ocupada DirecciónLoad1 SI 34+R2Load2 SI 45+R3Load3 NO

SUBD F8 F6 F2DIVD F10 F0 F6ADDD F6 F8 F2

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1 NO

Estado de ERAdd2 NOAdd3 NOMul1 SI Mult R(F4) Load2Mul2 NO

Estado de REG F0 F2 F4 F6 F8 F10 F12

FU Mult1 Load2 Load1

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

FU Mult1 Load2 Load1

Page 38: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

l Ciclo 4

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

LD F6 34+ R2 1 2-3 4 LD F2 45+ R3 2 3-4MULT F0 F2 F4 3

Ocupada DirecciónLoad1 NO Load2 SI 45+R3Load3 NO

SUBD F8 F6 F2 4DIVD F10 F0 F6ADDD F6 F8 F2

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1 SI Subd M(34+R2) Load2

Estado de ERAdd2 NOAdd3 NOMul1 SI Mult R(F4) Load2Mul2 NO

Estado de REG F0 F2 F4 F6 F8 F10 F12

FU Mult1 Load2 M(34+R2) Add1

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

FU Mult1 Load2 M(34+R2) Add1

Page 39: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Ciclo 6 Ciclo 6

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

LD F6 34+ R2 1 2-3 4 LD F2 45+ R3 2 3-4 5MULT F0 F2 F4 3

Ocupada DirecciónLoad1 NO Load2 NO Load3 NO

SUBD F8 F6 F2 4DIVD F10 F0 F6 5ADDD F6 F8 F2 6

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

2 Add1 SI Subd M(34+R2) M(45+R3) Ningún bloqueo

Estado de ERAdd2 SI Addd M(45+R3) Add1Add3 NO

10 Mul1 SI Mult M(45+R3) R(F4)Mul2 SI Divd M(34+R2) Mult1

Estado de REG F0 F2 F4 F6 F8 F10 F12

FU Mul1 M(45+R3) Add2 Add1 Mul2

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

FU Mul1 M(45+R3) Add2 Add1 Mul2

F6 reasignado

Page 40: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Ciclo 8 Ciclo 8

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

LD F6 34+ R2 1 2-3 4 LD F2 45+ R3 2 3-4 5MULT F0 F2 F4 3

Ocupada DirecciónLoad1 NO Load2 NO Load3 NO

SUBD F8 F6 F2 4 6-7 8DIVD F10 F0 F6 5ADDD F6 F8 F2 6

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1 NO

Estado de ER2 Add2 SI Addd M()-M() M(45+R3)

Add3 NO7 Mul1 SI Mult M(45+R3) R(F4)

Mul2 SI Divd M(34+R2) Mult1

Estado de REG F0 F2 F4 F6 F8 F10 F12

FU Mul1 M(45+R3) Add2 M() M() Mul2

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

FU Mul1 M(45+R3) Add2 M()-M() Mul2

Page 41: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

l Ciclo 13

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

LD F6 34+ R2 1 2-3 4 LD F2 45+ R3 2 3-4 5MULT F0 F2 F4 3

Ocupada DirecciónLoad1 NO Load2 NO Load3 NO

SUBD F8 F6 F2 4 6-7 8DIVD F10 F0 F6 5ADDD F6 F8 F2 6 9-10 11

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1 NO

Estado de ERAdd2 NOAdd3 NO

3 Mul1 SI Mult M(45+R3) R(F4)Mul2 SI Divd M(34+R2) Mult1

Estado de REG F0 F2 F4 F6 F8 F10 F12

FU Mul1 M(45+R3) F8+M() M() M() Mul2

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

FU Mul1 M(45+R3) F8+M() M()-M() Mul2

Page 42: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Ciclo 16 Ciclo 16

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

LD F6 34+ R2 1 2-3 4 LD F2 45+ R3 2 3-4 5MULT F0 F2 F4 3 6-15 16

Ocupada DirecciónLoad1 NO Load2 NO Load3 NO

SUBD F8 F6 F2 4 6-7 8DIVD F10 F0 F6 5ADDD F6 F8 F2 6 9-10 11

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1 NO

Estado de ERAdd2 NOAdd3 NOMul1 NO

40 Mul2 SI Divd M*F4 M(34+R2)

Estado de REG F0 F2 F4 F6 F8 F10 F12

FU M*F4 M(45+R3) F8+M() M() M() Mul2

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

FU M F4 M(45+R3) F8+M() M()-M() Mul2

Page 43: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Ciclo 57 Fi li ió d d E i Ciclo 57

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

Finalización en desorden Excepciones

LD F6 34+ R2 1 2-3 4 LD F2 45+ R3 2 3-4 5MULT F0 F2 F4 3 6-15 16

Ocupada DirecciónLoad1 NO Load2 NO Load3 NO

SUBD F8 F6 F2 4 6-7 8DIVD F10 F0 F6 5 17-56 57ADDD F6 F8 F2 6 9-10 11

Estado de ER

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1 NOEstado de ER Add2 NO

Add3 NOMul1 NOMul2 SI Divd M*F4 M(34+R2)

Estado de REG F0 F2 F4 F6 F8 F10 F12

FU M*F4 M(45+R3) F8+M() M() M() Mul2

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

FU M F4 M(45+R3) F8+M() M()-M() Mul2

Page 44: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Renombrado dinámico en un unrolling

Loop LD F0,0(R1)MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1,Loop

Operación: vector F0 * escalar F2

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

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

Page 45: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

l Bucle

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

LD F0 0 R1 MULT F4 F0 F2SD F4 0 R1

Load1 NOload2 NOload3 NO Qistore1 NOSD F4 0 R1

LD F0 0 R1MULT F4 F0 F2SD F4 0 R1

store1 NOstore2 NOstore3 NO

Estado de ER

Loop LD F0 0(R1)

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Loop LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 Loop

Add2Add3Mul1Mul2

Estado de REG

BNEZ R1,Loop

F0 F2 F4 F6 F8 F10 F12

FU

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

FU

Page 46: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Ciclo 1

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

LD F0 0 R1 1MULT F4 F0 F2SD F4 0 R1

Load1 SI 80load2 NOload3 NO QiQistore1 NOSD F4 0 R1

LD F0 0 R1MULT F4 F0 F2SD F4 0 R1

store1 NOstore2 NOstore3 NO

Estado de ER

Loop LD F0 0(R1)

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Loop LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 Loop

Add2Add3Mul1Mul2

Estado de REGR1=80

BNEZ R1,Loop

F0 F2 F4 F6 F8 F10 F12

FU Load1

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

R 80 FU Load1Ojo latencia del primer load

Page 47: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Ciclo 2

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

LD F0 0 R1 1MULT F4 F0 F2 2SD F4 0 R1

Load1 SI 80load2 NOload3 NO Qistore1 NOSD F4 0 R1

LD F0 0 R1MULT F4 F0 F2SD F4 0 R1

store1 NOstore2 NOstore3 NO

Estado de ER

Loop LD F0 0(R1)

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Loop LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 Loop

Add2Add3Mul1 SI MULT R(F2) Load1Mul2

Estado de REGR1=80

BNEZ R1,Loop

F0 F2 F4 F6 F8 F10 F12

FU Load1 Mul1

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

R 80 FU Load1 Mul1Ojo latencia del 1 load

Page 48: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

l Ciclo 3

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

LD F0 0 R1 1MULT F4 F0 F2 2SD F4 0 R1 3

Load1 SI 80load2 NOload3 NO Qistore1 SI 80 Mult1SD F4 0 R1 3

LD F0 0 R1MULT F4 F0 F2SD F4 0 R1

store1 SI 80 Mult1store2 NOstore3 NO

Estado de ER

Loop LD F0 0(R1)

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Loop LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 Loop

Add2Add3Mul1 SI MULT R(F2) Load1Mul2

Estado de REGR1=80

BNEZ R1,Loop

F0 F2 F4 F6 F8 F10 F12

FU Load1 Mul1

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

R 80 FU Load1 Mul1Ojo latencia del 1er load

Page 49: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Ciclo 6 Ciclo 6

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

Cierre del bucle

LD F0 0 R1 1MULT F4 F0 F2 2SD F4 0 R1 3

Load1 SI 80load2 SI 72load3 NO Qistore1 SI 80 Mult1SD F4 0 R1 3

LD F0 0 R1 6MULT F4 F0 F2SD F4 0 R1

store1 SI 80 Mult1store2 NOstore3 NO

Estado de ER

Loop LD F0 0(R1)

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Loop LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 Loop

Add2Add3Mul1 SI MULT R(F2) Load1Mul2

Estado de REGR1=72

BNEZ R1,Loop

F0 F2 F4 F6 F8 F10 F12

FU Load2 Mul1

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

R 7 FU Load2 Mul1Ojo latencia del 1 load Renombrado

Page 50: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

l Ciclo 7

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

LD F0 0 R1 1MULT F4 F0 F2 2SD F4 0 R1 3

Load1 SI 80load2 SI 72load3 NO Qistore1 SI 80 Mult1SD F4 0 R1 3

LD F0 0 R1 6MULT F4 F0 F2 7SD F4 0 R1

store1 SI 80 Mult1store2 NOstore3 NO

Estado de ER

Loop LD F0 0(R1)

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Loop LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 Loop

Add2Add3Mul1 SI MULT R(F2) Load1Mul2 SI MULT R(F2) Load2

Estado de REGR1=72

BNEZ R1,Loop

F0 F2 F4 F6 F8 F10 F12

FU Load2 Mul2

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

R 7 FU Load2 Mul2

RenombradoOjo latencia del 1 load

Page 51: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

l Ciclo 10

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

LD F0 0 R1 1 2- 9 10MULT F4 F0 F2 2SD F4 0 R1 3

Load1 NO load2 SI 72load3 NO Qistore1 SI 80 Mult1SD F4 0 R1 3

LD F0 0 R1 6 7-10MULT F4 F0 F2 7SD F4 0 R1 8

store1 SI 80 Mult1store2 SI 72 Mult2store3 NO

Estado de ER

Loop LD F0 0(R1)

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Loop LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 Loop

Add2Add3

4 Mul1 SI MULT M(80) R(F2) Mul2 SI MULT R(F2) Load2

Estado de REGR1=64

BNEZ R1,Loop

F0 F2 F4 F6 F8 F10 F12

FU Load2 Mul2

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

R 64 FU Load2 Mul2Ojo latencia del 1 load

Page 52: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

l Ciclo 11

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

LD F0 0 R1 1 2-9 10MULT F4 F0 F2 2SD F4 0 R1 3

Load1 NO load2 NOload3 SI 64 Qistore1 SI 80 Mult1SD F4 0 R1 3

LD F0 0 R1 6 7-10 11 MULT F4 F0 F2 7SD F4 0 R1 8

store1 SI 80 Mult1store2 SI 72 Mult2store3 NO

Estado de ER

Loop LD F0 0(R1)

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Loop LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 Loop

Add2Add3

3 Mul1 SI MULT M(80) R(F2) 4 Mul2 SI MULT M(72) R(F2)

Estado de REGR1=64

BNEZ R1,Loop

F0 F2 F4 F6 F8 F10 F12

FU Mul2

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

R 64 FU Mul2

Page 53: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

Ciclo 15

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

LD F0 0 R1 1 2- 9 10MULT F4 F0 F2 2 11-14 15SD F4 0 R1 3

Load1 NO load2 NOload3 SI 64 Qistore1 SI 80 M()*F2SD F4 0 R1 3

LD F0 0 R1 6 7-10 11 MULT F4 F0 F2 7 12-15SD F4 0 R1 8

store1 SI 80 M() F2store2 SI 72 Mult2store3 NO

Estado de ER

Loop LD F0 0(R1)

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Loop LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 Loop

Add2Add3Mul1 Mul2 SI MULT M(72) R(F2)

Estado de REGR1=64

BNEZ R1,Loop

F0 F2 F4 F6 F8 F10 F12

FU Mul2

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

6 FU Mul2

Page 54: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

l Ciclo 16

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

LD F0 0 R1 1 2- 9 10MULT F4 F0 F2 2 11-14 15SD F4 0 R1 3 16

Load1 NO load2 NOload3 SI 64 Qistore1 NOSD F4 0 R1 3 16 --

LD F0 0 R1 6 7-10 11 MULT F4 F0 F2 7 12-15 16SD F4 0 R1 8

store1 NOstore2 SI 72 M()*F2store3 NO

Estado de ER

Loop LD F0 0(R1)

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Loop LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 Loop

Add2Add3Mul1 Mul2

Estado de REGR1=64

BNEZ R1,Loop

F0 F2 F4 F6 F8 F10 F12

FU

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

R 64 FU

Page 55: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

l Ciclo 17

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

LD F0 0 R1 1 2-9 10MULT F4 F0 F2 2 11-14 15SD F4 0 R1 3 16

Load1 NO load2 NOload3 SI 64 Qistore1 NOSD F4 0 R1 3 16 --

LD F0 0 R1 6 7-10 11 MULT F4 F0 F2 7 12-15 16SD F4 0 R1 8 17 --

store1 NOstore2 NOstore3 NO

Estado de ER

Loop LD F0 0(R1)

Tiempo FU Ocupada Operación S1 S2 ER.P.J ER.P:KVj Vk Qj Qk

Add1Loop LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 Loop

Add2Add3Mul1 Mul2

Estado de REGR1=64

BNEZ R1,Loop

F0 F2 F4 F6 F8 F10 F12

FU

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

R 64 FU

Page 56: Arquitectura de Computadores - UCM

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 Do 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”Almacena el contenido del registro S en la posición de memoria Dirección

o Estación de reserva x: ER(x)(Busy, OP, Qj , Vj , Qk , Vk)R ist x: R (x)( Qi Vi )o Registro x: Reg(x)( Qi , Vi )

o Load Buffer x: LB(x)(Busy, Dir)o Store Buffer x: SB(x)( Busy, Dir, Qi , Vi )

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

R19

Page 57: Arquitectura de Computadores - UCM

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

Page 58: Arquitectura de Computadores - UCM

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

Fase Issue Fase Issue

Tipo de instrucción Esperar hasta que … Hacer …

Aritmética:D ← OP (S1, S2)

La estación de reserva ER(x) está libre y es capaz de ejecutar OP

ER(x).Busy ← YesER(x).OP ← OPER(x).Qj ← Reg(S1).QiER(x) V ← Reg(S1) VER(x).Vj ← Reg(S1).ViER(x).Qk ← Reg(S2).QiER(x).Vk ← Reg(S2).Vi

Reg(D).Qi ← x

Load:D ← Mem[Dirección]

El Load Buffer LB(x) está libre

LB(x).Busy ← YesLB(x) Dir ← DirecciónD ← Mem[Dirección] libre LB(x).Dir ← Dirección

Reg(D).Qi ← x

Store:Mem[Dirección] ← S

El Store Buffer SB(x) está libre

SB(x).Busy ← YesSB(x).Dir ← DirecciónSB(x).Qi ← Reg(S).QiSB(x) V ← Reg(S) V

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

SB(x).Vi ← Reg(S).Vi

Page 59: Arquitectura de Computadores - UCM

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

Fase Ejecución Fase EjecuciónTipo de instrucción Esperar hasta que … Hacer …

Aritmética: (ER( ) Q 0) Y (ER( ) Q 0) Ejec tar cálc lo OP sobre la UFAritmética:D ← OP (S1, S2)

(ER(x).Qj = 0) Y (ER(x).Qk = 0) Ejecutar cálculo OP sobre la UF usando operandos Vj y Vk

Generar RESULTADO

Load:D ← Mem[Dirección]

(La dirección efectiva está disponible) Y

(LB(x).Dir no tiene d d i t d

RESULTADO ← Mem[LB(x).Dir]

dependencias respecto de Stores lanzados antes)

(Uso de cola de Load / Store: explicación posterior)

Store:Mem[Dirección] ← S

(La dirección efectiva está disponible) Y

(SB( ) Di i

Mem[SB(x).Dir] ← SB(x).ViSB(x).Busy ← No

(SB(x).Dir no tiene depenedencias con Load ni Sores previos) Y

(SB(x).Qi) = 0)

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

(SB(x).Qi) 0)

Page 60: Arquitectura de Computadores - UCM

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

Fase Write Fase WriteTipo de instrucción

Esperar hasta que …

Hacer …

Aritmética:D ← OP (S1, S2)

(Ejecución completa en ER(x)) Y

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)

(CDB disponible)

j j jz (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[Dirección]

(Acceso a memoria completo en

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)[ ] p

LB(x)) Y (CDB disponible)

( ( ) Qj) ) ( ( ) Qj ) ( ( ) j )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 = NoLB(x).Busy No

Store:Mem[Dirección] ← S

Nada Nada

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

← S

Page 61: Arquitectura de Computadores - UCM

Planificación Dinámica:TOMASULO

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

Evita EDL y EDE

Permite el unrolling en HW

No esta limitado a bloques básicos si existe predicción de saltosq p

Complejidad

Muchos cargas de registros asociativas por ciclo

CDB limita el rendimiento CDB limita el rendimiento

Excepciones imprecisas

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

Page 62: Arquitectura de Computadores - UCM

Reduciendo la penalización de los saltos

d l E díTipos de saltos: Estadísticas

• Instrucciones de salto

En promedio• Instrucciones de salto

1 de cada 5 instrucc.• Saltos condicionales

2 de cada 3 saltos• Saltos incondicionales• Saltos incondicionales

1 de cada 3 saltos• Saltos tomados

5 de cada 6 saltos• Saltos condicionales tomados• 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 1 de cada 8 instrucciones

es un salto condicional• 1 de cada 10 instrucciones

es un salto condicional y tomado

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

Programas enteros una de cada 4-5 instrucciones. Flotantes 1 de cada 10-20 instrucciones

Page 63: Arquitectura de Computadores - UCM

Reduciendo la penalización de los saltos

Tipos de saltos: Estadísticas

Frcuencia diámica de saltos Frcuencia de saltos tomados

greep30

35lloops fft

gdiffgawk

80

90

100

TeX

spice3

gdiff

gcpp

gccl

gawk

espresso

compress

20

25

%

TeX

spice3

greep

gcppgccl espressocompress

50

60

70

80

%

lloopsfft

5

10

15%

20

30

40

%

lloops

0

5

0

10

Conclusión• 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

El comportamiento depende del tipo de programa

Page 64: Arquitectura de Computadores - UCM

P di ió

Reduciendo la penalización de los saltos

PredicciónIdea BásicaCuando 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 predice como tomado se predice la dirección destino del salto

i l di ió f

p p• La ejecución continúa de forma especulativa a lo largo del camino supuesto

Cuando se resuelve la condición• Si la predicción fue correcta

La ejecución se confirma y continúa normalmente• Si la predicción fue incorrecta (fallo de predicción o “misprediction”)

S d t t d l i t i j t d l ti t Se descartan todas las instrucciones ejecutadas especulativamente 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)

Problemas a resolver en instrucciones de salto

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

UNTAKEN (No Tomado)2) Predecir la dirección de la instrucción destino del salto con un retardo mínimo (para saltos tomados)

Page 65: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción

Consideraciones generales

1) Predecir el camino que tomará el salto1) Predecir el camino que tomará el salto

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

t2 t3 t4 t5 t6 t7t1Pt2 t3 t4 t5 t6 t7t1

I1I2BR Target

Programa I1

2 3 4 5 6 7

TABRI2

F D EF D E

F D E

1

M WM W

I1I2BR Target

Programa I1

TABRI

I2

F D EF D E

F D EF

M WM W

Target: Itarget

BR TargetI4••

TAI4I5It

F DF

It+1

F D E M WF D E M WTarget: Itarget

I4••

TAI4ItIt+1

F

F D E M WF D E M W

g target

Itarget+1 Retardo(2 ciclos)

t 1Itarget+1 Retardo(1 ciclo)

Ojo retardo

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

Ojo retardo mínimo

Page 66: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción

Consideraciones generales2) Predecir la dirección de la instrucción destino del salto )con un retardo mínimo (para saltos tomados)

I1

Programa I1

t2 t3 t4 t5 t6 t7

I2

F D EF D E

t1

M WM W

I2BR TargetI4••

TA

BRItIt+1

I2

I

F D EM W

F D E M W

F D E M W

Target: Itarget

Itarget+1 Retardo(0 ciclo)

It+2

• 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

Page 67: Arquitectura de Computadores - UCM

Acceso a la instrucción destino del salto ITratamiento de Saltos: Predicción

Acceso a la instrucción destino del salto I

• Cache que almacena la dirección destino de los últimos saltos tomados

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

+1Actualización de la BTACDirecciónde la Instrucción

Tag

Direccióndestinodel salto Taken / Not Taken

L a BTAC se actualiza cuando se ejecuta la instrucción de salto y se conoce:

• Si el salto fue tomado o no

MU

X

Dirección

• La dirección destino del salto

Sí el salto fue tomado Sí el salto no fue tomado

de la siguienteinstrucción

Si no estaba en la BTAC

Si ya estaba en la BTAC

Si estaba en la BTAC

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

BTACSe introduce en la BTAC

Se actualiza su dirección destino en la BTAC

Se elimina de la BTAC

Page 68: Arquitectura de Computadores - UCM

Acceso a la instrucción destino del salto IITratamiento de Saltos: Predicción

Alternativas de diseño de la BTAC

Acceso a la instrucción destino del salto II

Cache de Acceso DirectoCache Totalmente

AsociativaCache Asociativa por

conjuntos

Ventaja: Menor costeDesventaja: “Aliasing”

Ventaja: menos AliasingDesventaja: Mayor coste HW

Solución intermedia

(destrucción de información si dos saltos compiten por la misma entrada)

Desventaja: Mayor coste HW

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

Page 69: Arquitectura de Computadores - UCM

Cl ifi ió d é i d di ió d l

Tratamiento de Saltos: Predicción

Clasificación de técnicas de predicción de saltos

Predicción de saltos

Estática Dinámica

Fija Basada enOpcode

Basada enDesplaz

Dirigida por Compilador

Historia HíbridosHistoriaGlobalOpcodeDesplaz. Compilador Local Global

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

Page 70: Arquitectura de Computadores - UCM

Predicción estática

Tratamiento de Saltos: Predicción

Predicción estáticaPredicción Fija

ALWAYS TAKEN

• Predecir todos los saltos como no tomados

ALWAYS NOT TAKEN

• Predecir todos los saltos como tomados Predecir todos los saltos como no tomados• Menor número de aciertos de predicción (sólo 1 de cada 4 saltos cond. es no tomado)

• Menor coste hardware

• Mayor número de aciertos de predicción (3 de cada 4 saltos cond. son tomados)

• Mayor coste hardware (necesita almacenar la dirección destino del salto)la dirección destino del salto)

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 delante E E E

La mayoría de saltos hacia atrás d b l

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

corresponden a IF-THEN-ELSEcorresponden a bucles

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

Page 71: Arquitectura de Computadores - UCM

Predicción estáticaTratamiento de Saltos: Predicción

Predicción estáticaPredicción basada en el OPCODE de la instrucción de salto

El salto es tomado para ciertos códigos de operación y no tomado para otrosFundamento: La probabilidad de que un salto sea tomado depende del tipo de salto

Predicción dirigida por el COMPILADOR

Basada en el tipode CONSTRUCCIÓN

Basada en PROFILING

Especificado por el PROGRAMADOR

El compilador predice si el salto será tomado o no

dependiendo del tipo de construcción de control

El compilador predice en funcióndel comportamiento de esainstrucción en ejecuciones

previas del programa

El programador indica al compilador si el salto debe

ser tomado o no (mediante directivas específicas)

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

de construcc ón de control prev as del programa (med ante d rect vas espec f cas)

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

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

R7

Page 72: Arquitectura de Computadores - UCM

Diapositiva 64

R7 He eliminado la transparencia anterior. Paco: supongo que querías eliminarla porque también hablaba de predicción basada en OpCodeRomán; 26/09/2007

Page 73: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción

Predictores Dinámicos Idea básica La predicción se realiza observando el comportamiento de las instrucciones de salto

Predictores Dinámicos

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 1 bit de historia

Predictores de 2 bits de historia (bimodal)

Predictores de 3 bits de historia

EJEMPLOS EJEMPLOS • PA 8500 (1999) EJEMPLOSEJEMPLOS• Gmicro 100 (1991)• Alpha 21064 (1992)• R8000 (1994)

EJEMPLOS• MC68060 (1993) • Pentium (1994) • Alpha 21064A (1994)• Alpha 21164 (1995)

• PA 8500 (1999)• UltraSparc (1995)• PowerPC 604 (1995)• PowerPC 620 (1996)• R10000 (1996)

EJEMPLOS

• PA 8000 (1996)

• Alpha 21164 (1995) • R10000 (1996)

Evolución Predictores correlacionados

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

Predictores correlacionadosPredictores híbridos

Page 74: Arquitectura de Computadores - UCM

Predictores DinámicosTratamiento de Saltos: Predicción

Predictor de un BIT• Utilizan un bit de predicción por cada instrucción de salto

Predictores Dinámicos

• 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

• 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

Predicción

FUNCIONAMIENTO• Máquina de dos estados:

– Not taken (0)T k (1) Taken Not taken NT

NT Inicio

– Taken (1)• Registro de historia

– Contador saturado de 1 bit• Predicción

V l d l i t d hi t i

Taken(1)

Not taken(0)T NT

T

– Valor del registro de historia

Predicción: Taken Predicción: Not taken

Cambios de estado:

LIMITACIÓN• Sólo se registra el comportamientode la última ejecución del salto

Más Bits

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

T: el salto ha sido tomadoNT: el salto no ha sido tomado

de la última ejecución del salto• Dos malas predicciones en los cambios

RH1

Page 75: Arquitectura de Computadores - UCM

Diapositiva 66

RH1 Corregidos los bitsRH; 17/11/2008

Page 76: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción Predictores DinámicosPredictor de dos bits (BIMODAL)

• Utilizan dos bits de predicción por cada instrucción de salto

Predictores Dinámicos

• 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 i i tMáquina de cuatro estados:

– Strongly not taken (00) – Weakly not taken (01)

• Registro de historia– Contador saturado de 2 bits

• Predicción

Funcionamiento

y ( )– Weakly taken (10)– Strongly taken (11)

– bit más significativo del registro de historia

TInicio TT

Stronglynot taken

(0 0)

Weaklynot taken

(0 1)

NT

NT

Weaklytaken(1 0)

Stronglytaken(1 1)

T

NTNTT: el salto ha sido tomadoNT: el salto no ha sido tomado

Cambios de estado:

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

Predicción:Not taken

Predicción:Not taken

Predicción:Taken

Predicción:Taken

Page 77: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción Predictores Dinámicos

Implementación de los bits de predicción

Predictores Dinámicos

mp m p

2) Tabla de historia de saltos (BHT)

Utiliza una tabla especial distinta de

1) Branch Target Buffer (BTB)Añade los bits de predicción a las

t d d l BTAC L BTAC Utiliza una tabla especial, distinta de la BTAC para almacenar los bits de predicción

entradas de la BTAC. La BTAC con bits de predicción se denomina BTB

EJEMPLOS• Gmicro 100 256 x 1 bit• PowerPC 604 512 x 2 bit• R10000 512 x 2 bit

EJEMPLOS• MC 68060 256 x 2 bit• Pentium 256 x 2 bit• R8000 1K x 1 bit • PowerPC 620 2K x 2 bit

• PA 8000 256 x 3 bit• Alpha 21164A 2K x 2 bit• AMD64 16Kx2bits

• R8000 1K x 1 bit• PM1 1K x 2 bit• Pentium II 512x2 bit• Pentium 4 4kx2bits

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

Page 78: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción Predictores Dinámicos: Implementación1) Branch Target Buffer (BTB): bits acoplados

La BTB almacena

Predictores Dinámicos Implementación

• La dirección destino de los últimos saltos tomados• Los bits de predicción de ese salto

Dirección de la Tag

Direccióndestino

Bits depredicción

La BTB almacena

Los campos de la BTB se actualizan después de ejecutar el salto y se conoce:

• Si el salto fue tomado o no

instrucciónde salto

gdel salto

predicciónActualización de la BTB

Si el salto fue tomado o no Actualizar bits de predicción

• La dirección destino del salto Actualizar BTA

MU

X

Taken /

Lógica de PredicciónBTA

Aplicable con un sólo bit de predicción• Sí la instrucción de salto está en la BTB

Taken / Not Taken

BTB

Predicción Implícita (sin bits de predicción)

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

El salto se predice como no tomado

BTB

+1

MU

X

Direcciónde la siguienteinstrucción

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

Sólo se pueden predecir aquellas instrucciones de salto que están en la BTBDESVENTAJA:

instrucción

Page 79: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción Predictores Dinámicos: Implementación2) Tabla de historia de saltos (BHT): bits desacoplados

Existen dos tablas distintas:

Predictores Dinámicos Implementación

• 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

Existen dos tablas distintas:

Dirección de lainstrucción de salto

TagBits de

predicción

Puede predecir instruc.que no están en la BTAC (más entradas en BHT que en BTAC)

Ventaja

TagDireccióndestinodel salto

predicción

X

Taken / Not Taken

Aumenta el hardware necesario 2 tablas asociativas

Desventaja

Acceso a la BHT

BTA

MU

Lógica de Predicción

+1 BTA

• Usando los bits menos significativos de la dirección– Sin TAGs Menor coste (opción + habitual)– Compartición de entradas

Acceso a la BHT

Dirección de

MUX

BTACompartición de entradas Se degrada el rendimiento

• Asociativa por conjuntos– Mayor coste Tablas pequeñas– Para un mismo coste hardware

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

BTAC BHT

Dirección de la siguienteinstrucción

Peor comportamiento

Page 80: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción

Predictores Dinámicos Predictores DinámicosComportamiento

18%18%18% 18%18%

14%

16%

18%

9% % 9% %

12%

11%10%10%10%

12%

14%

5%5%

9%9% 9%9%

5%5%6%

8%

1% 1%

5% 5%

2%

4%

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

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

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

Page 81: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción

Predictores Dinámicos 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 últimossaltos afecta a la predicción actual. Almacenar el comportamiento de los últimosn saltos y usarlo en la selección de la predicción.

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

0 = Not Taken

Si conocemos el comportamiento del salto en las 3 últimas ejecuciones podemos predecir como

Historia111

Predicción0 (NT)3 últimas ejecuciones podemos predecir como

se comportará en la siguiente ejecución Predicción basada en historia LOCAL

111011101110

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

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

Page 82: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción Predictores Dinámicos

2. Muchas instrucciones de salto dependen del comportamiento deotros saltos recientes ( historia global)

Predictores Dinámicos

BNEZ R1, L1 ; salto b1 (Salto si d ≠ 0)DD R1 R0 #1 C d 0 h d 1

Ejemplo:

b1: if (d = 0) then d = 1

b2: if (d =1) then

ADDI R1, R0, #1 ; Como d=0, hacer d=1 L1: SUBI R3, R1, #1 ; R3=d(R1)-1

BNEZ R3, L2 ; salto b2 (Salto si d≠ 1)..........

L2f ( )

L2:

R3=0 d=1R3≠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 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

R8

Page 83: Arquitectura de Computadores - UCM

Diapositiva 73

R8 Rehago comentariosRomán; 26/09/2007

Page 84: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción

Predictores Dinámicos Ejemplo ( continua )

Predictores Dinámicos

Relación entre los dos saltos

C 1 d 0 1 2BNEZ 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 1: d=0,1,2,…L1: SUBI R3, R1, #1 ; R3=d(R1)-1BNEZ R3, L2 ; salto b2 (Salto si d≠ 1)..........

L2:

Valor de d

d 0? b1 d antes de b2

d1? b2

0 no NT 1 no NT

1 i T 1 NT1 si T 1 no NT

2 si T 2 si T

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

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

Page 85: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción

Predictores Dinámicos Predictores DinámicosEjemplo ( continua )

C t i t d l di t d bit ( t d i i i l “ t t k ” NT)

Caso 2: d=2 0 2 0

Comportamiento del predictor de un bit. ( 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,…L1: SUBI R3, R1, #1 ; R3=d(R1)-1BNEZ R3, L2 ; salto b2 (Salto si d≠ 1)..........

L2:

Valor de d

Predicción de b1

b1 Nueva predicción de b1

Predicción de b2

b2 Nueva predicción de b2

2 NT T T NT T T

0 T NT NT T NT NT0 T NT NT T NT NT

2 NT T T NT T T

0 T NT NT T NT NT

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

0 T NT NT T NT NT

Muchos fallos de predicción

Page 86: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción

Predictores Dinámicos Solución• Predictor de dos niveles (1 1):

Predictores Dinámicos

• Predictor de dos niveles (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)Predictor de dos niveles (m,n)Para cada salto existen 2m predictores de n bits. El comportamiento de los últimos m saltos determinan el predictor que se usa

Significado de los bit de predicción en un predictor (1,1)g p p ( )Bits depredicción

Predicción si elultimo salto notomado

Predicción siel ultimo saltotomado

NT/NT NT NT

NT/T NT T

/Dos predictores d bi T/NT T NT

T/T T T

de un bit

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

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

Page 87: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción

Predictores Dinámicos Predictores DinámicosEjemplo ( continua )Comportamiento del predictor de dos niveles (1,1). ( estado inicial “not taken” NT)

Caso 2: d=2 0 2 0

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)-1BNEZ R3, L2 ; salto b2 (Salto si d≠ 1)

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

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

d ? P di ió b1 N P di ió b2 N

..........L2:

d = ? Predicción de b1

b1 Nueva predicción de b1

Predicción de b2

b2 Nueva predicción 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

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

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

Page 88: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción

P di Di á i Predictores DinámicosDirección(4 bits)

Implementación paraPredictor de dos niveles (2,2)

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

con 16 entradasPredicciónPredicción11 11

00 01 10 11

2-bits de historia Global de saltos (2 Saltos anteriores)(E l 1 “ k ” “ k ”)

0 1

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

(Ejemplo: 01 = “not taken” Y “taken”)

R9

Page 89: Arquitectura de Computadores - UCM

Diapositiva 78

R9 Añado "de 2 niveles" ¿De acuerdo? Nos hemos referido a "2 niveles" muchas veces en problemas y exámenesRomán; 26/09/2007

Page 90: Arquitectura de Computadores - UCM

Tratamiento de Saltos: Predicción

Predictores Dinámicos

0,2

Predictores DinámicosComportamiento

0,16

0,18

0 110,12

0,14

edic

tions

0,11

0,08

0,1

uenc

y of

Mis

pre

0,05

0,06 0,06

0,04

0,06

0,05

0,04

0,06Freq

u

0

0,010,01

0

0,02

7 t i 300 t t d d d i f t tt li

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

nasa7 matrix300 tomcatv doducd spice fpppp gcc espresso eqntott li

4,096 entries: 2-bits per entry Unlimited entries: 2-bits/entry 1,024 entries (2,2)

Page 91: Arquitectura de Computadores - UCM

Predictores híbridos Tratamiento de Saltos: Predicción

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 Combinando el uso de distintos predictores y aplicando uno o otro según convenga, se pueden obtener predicciones mucho más correctas

Mezcla varios predictores y añade un Predictor híbrido Instrucción captada

Tabla deMezcla varios predictores y añade un mecanismo de selección del predictor

Mecanismo de selección

Dirección

Tabla de Selección

edic

tor 1

edic

tor 2

Mecanismo de selecciónElige, en cada caso, el predictor que haya dado mejores resultados hasta el momento

MUX

Pre

Pre

Predicción(Taken/Not taken)

Implementación del mecanismo de selecciónPara combinar dos predictores, P1 y P2, se utiliza una tabla de contadores saturados de dos bits indexada por la dirección de la instrucción de salto

Actualiz. del contadorFalloFallo

P2P1FalloAcierto

Cont no varíaCont = Cont +1 P1

Predictor seleccionado

Bit más signif.del contador

0

• Si P2 acierta más que P1 Cont aumenta

• Si P1 acierta más que P2C t di i

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

FAciertoAcierto

FalloAcierto

Cont = Cont -1Cont no varía P2

P1

1

0 Cont disminuye

Page 92: Arquitectura de Computadores - UCM

Ejemplo: Alpha 21264

Predictor competitivo (Tournament Predictor) Predictor competitivo (Tournament Predictor)

Predictor Local: Predicción de un salto en función del comportamiento previo de ese mismo saltocomportamiento previo de ese mismo salto

o Considera las 10 últimas ejecuciones del salto Predictor global: Predicción de un salto en función del

mp t mi nt d l s últim s 12 s lt s j ut d scomportamiento de los últimos 12 saltos ejecutados Juez: Decide cuál de las dos predicciones se aplica

o Selecciona el predictor que esté manifestando el mejor t i tcomportamiento

Actualización: al resolver cada saltoo Se actualizan los predictores en función de su acierto o fallo

Si l d di t hi i di ió di ti t o Si los dos predictores hicieron una predicción distinta, 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)(hasta 80 instrucciones en la ventana)

Tasas de predicción correcta (benchmarks): 90-100%

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

Page 93: Arquitectura de Computadores - UCM

Tournament predictor del Alpha 21264

Comportamiento de las 10 últimas ejecuciones de 1024 saltos

(IEEE Micro, Marzo 1999)

Tabla de Historia

Local

Predicción Local Predicción

Global10

Local(1024x10) (1024x3) (4096x2)

12MSB

PC Juez

10

120 1

MSB

PC Juez(4096x2)

0 1

MSB

Historia Global (12 bits)T/NT

Juez: Acierto global y fallo local = incrementa

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

Juez: Acierto global y fallo local = incrementaFallo global y acierto local = decrementa

Page 94: Arquitectura de Computadores - UCM

Ejemplos de funcionamiento (1)

Programa con dos saltos que tiene el comportamiento descrito

Si (a=0)TNTN ...

Si (b=0)NNNN ... (nunca se toma)

(se toma alternativamente)

TH Local Pred Local“Si(a=0)” se ha tomado:

PC de “Si (b=0)”0000000000

000

PC de “Si (a=0)”0101010101

000

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

0101010101000

Page 95: Arquitectura de Computadores - UCM

Ejemplos de funcionamiento (2)

Programa con dos saltos que tiene el comportamiento descrito

Si (a=0)TNTN ...

Si (b=0)NNNN ... (nunca se toma)

(se toma alternativamente)

TH Local Pred Local“Si(a=0)” no se ha tomado:

PC de “Si (b=0)”0000000000

000

111

PC de “Si (a=0)”1010101010

000

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

1010101010000

Page 96: Arquitectura de Computadores - UCM

Ejemplos de funcionamiento (3)

Programa con tres saltos que tiene el comportamiento descrito

Si (a=0)T

Pred Global

11

4095

Si (b=0)

11

T

0Comportamiento últimos 12 saltos

Si (a=b)Predecir T

últimos 12 saltos

Historia Global (12 bits)

11x xxx xxx xxx

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

Page 97: Arquitectura de Computadores - UCM

Predictores: Comportamiento Tratamiento de Saltos: Predicción

Predictores Comportamiento

100%99%99%

tomcatv

97%

100%

84%95%

doduc

98%82%

88%

86%fpppp Profile-based

BimodalHíbrido

96%

98%

82%

77%

86%espresso

li Híbrido

94%

96%

70%88%

gcc

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

Precisión de la predicción

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

Profile_based- Predictor estático

Page 98: Arquitectura de Computadores - UCM

Predictores: Comportamiento Tratamiento de Saltos: Predicción

Predictores Comportamiento La ventaja del predictor hibrido es su capacidad de seleccionar el predictor correcto para un determinado salto Muy importante para programas enteros

10%

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

8%

9%

ión

Local

5%

6%

7%

de p

redi

cci Local

3%

4%

% d

e fa

llos Dos niveles

Híbrido

0%

1%

2% Híbrido

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

0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128

Tamaño del Predictor (Kbits)

Page 99: Arquitectura de Computadores - UCM

Pentium 4 : tasa de fallos de predicción ( por 1000 instrucciones, Tratamiento de Saltos: Predicción

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)

13

1213

14

2% de tasa de fallos SPECfp ( 5% instrucciones FP son saltos, 48 de 1000)

11

10

11

12

Inst

ruct

ion

s

7

9

7

8

9

on

s p

er

10

00

5

4

5

6

h m

isp

red

icti

o

10 0 0

1

2

3

Bra

nc

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

0

164.gzip

175.vpr

176.gcc

181.mcf

186.cra

fty

168.wupwise

171.swim

172.mgrid

173.applu

177.mesa

SPECint2000 SPECfp2000

R10

FT1

Page 100: Arquitectura de Computadores - UCM

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

Page 101: Arquitectura de Computadores - UCM

P di ió d l

Tratamiento de Saltos: Predicción

Predicción de los retornos

• La precisión de los predictores con los retornos es muy baja: La dirección deretorno es diferente en función de la llamada• Solución : Pila de direcciones de retorno( 8 a 16 entradas )Solución : Pila de direcciones de retorno( 8 a 16 entradas )

EJEMPLOS

• UltraSparc I, II 4 entradasP ti P 16 t d• Pemtium Pro 16 entradas

• R10000 1 entrada

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

Page 102: Arquitectura de Computadores - UCM

Detección de la instrucción de saltoTratamiento de Saltos: Predicción

Detección de la instrucción de saltoRetardos en la detección del salto• Para poder aplicar el mecanismo de predicción es necesario

F DTipo de instrucción

Si es salto Aplicar predicción

• Para poder aplicar el mecanismo de predicción es necesario saber que se trata de una instrucción de salto

• Problema: el tipo de instrucción no se conoce hasta que no finaliza la etapa de DECODIFICACIÓN

Varios ciclos de retardo en cada salto

Alternativas al esquema básico

Varios ciclos de retardo en cada salto

Detección Durante la etapa de Fetch

Detecta las instrucciones de

Detección en paralelo con la Decodificación

Utiliza un decodificador de saltos

Detección después de la etapa de Fetch

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

dedicado capaz de detectar las instrucciones de salto antes del final de la etapa decodificación

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

F D F DF D

Detección de saltos

F DDetección de saltos

F DDetección de saltos

EJEMPLOS EJEMPLOS EJEMPLOS

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

• Alpha 21064• Alpha 21064A

• Alpha 21164• PowerPC601

• Power1• Power2

• PowerPC 603 • PowerPC 604• PowerPC 620

• R8000• PA8000

Page 103: Arquitectura de Computadores - UCM

R ió d f ll d di ió ( i di i )

Tratamiento de Saltos: Predicción

Recuperación de fallos de predicción (misprediction)

Tareas básicas1) Descartar los resultados de las instrucciones ejecutadas especulativamente2) Reanudar la ejecución por el camino correcto con un retardo mínimo) j p

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

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

Se descartan los resultados de los registros temporales

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

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

la arquitectura y/o la memoria los registros temporales

Page 104: Arquitectura de Computadores - UCM

Recuperación de fallos de predicción (misprediction)

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 al menos la dirección de comienzo del camino alternativoEl procesador debe guardar, al menos, la dirección de comienzo del camino alternativo

Si la predicción fue “Taken”Si la predicción fue “Not taken”El procesador debe almacenar la dirección

de la instrucción siguiente al saltoEl procesador debe calcular y almacenar

la dirección destino del salto

Ejemplos: PowerPC 601 – 603 - 605

Reducción de los retardos en la recuperación de fallosEl procesador puede guardar, no solo la dirección del camino alternativo, sino prebuscar y almacenar algunas instrucciones de este camino

j p

sino prebuscar y almacenar algunas instrucciones de este camino

• El procesador calcula y almacena Si la predicción fue “Taken” Si la predicción fue “Not taken”

• El procesador almacena la dirección El procesador calcula y almacena la dirección destino del salto

• El procesador prebusca y almacena las primeras instrucciones del destino del salto

El procesador almacena la dirección del camino secuencial

• El procesador prebusca y almacena las primeras instrucciones secuenciales

Ej l 2 b ff P 1 P 2 P ti Ult S ( 16 ) R10000 (256 bit )

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

Ejemplos: 2 buffer Power1, Power2, Pemtium, UltraSparc( 16 ), R10000 (256 bits)3 buffer Nx586 ( 2 pendientes )

Page 105: Arquitectura de Computadores - UCM

Ejecución condicional de instrucciones

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• 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, LMOV R2, R3

LCMOVZ R2, R3, R1

Ventaja: Buena solución para implementar alternativas simples de controlDesventaja: Consumen tiempo en todos los casos. Más lentas que las incondicionalesEjemplos: Alpha, Hp-Pa, MIPS, Sparc

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

Page 106: Arquitectura de Computadores - UCM

Ejecución con predicados

Tratamiento de Saltos: Otras alternativas

Idea básica

Ejecución con predicados

• Transformar todos las instrucciones en condicionales• Una instrucción de ejecución condicional está formada por:

• Una parte de condición, denominada predicado o guardaU t d ió• Una parte de operación

• 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

pred_lt p1(U),p2(U),a,10

EjemploBlt a,10,L1

T Fadd c,c,1 (p2)

pred_gt p3(U), p4(U),b,20 (p1)

If ( a< 10)c = c+1

elseif ( b>20)

add c,c,1 Bgt b,20, L2

F

T Fp2 p1

add d,d,1 (p4)

add e,e,1 (p3)

( )d = d+1

elsee = e+1

Add d,d,1 Add e,e,1T

p4 p3

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

Page 107: Arquitectura de Computadores - UCM

Predicción de saltos

Resumen

Predictor bimodal bueno para Loop (programas FP )

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

Predicción de la dirección destino importantemp

Ejecución condicional y predicada reduce el numero de saltos

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

Page 108: Arquitectura de Computadores - UCM

Especulación

L p di ión d s lt s int du ESPECULACION La predicción de saltos introduce ESPECULACIONo Dos tipos de instrucciones en el procesador

Las independientesp Las que dependen de una predición de salto. Su

finalización depende del acierto o fallo en la predicción.p

¿ Como podemos implementar esta distinción con un modelo de ejecución con finalización Fuera de orden?modelo de ejecución con finalización Fuera de orden?

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

ALGORITMO DE TOMASULO CON ESPECULACION

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

Page 109: Arquitectura de Computadores - UCM

Especulación

l d Algoritmo de TOMASULO

De Memoria Registros FPCola De Memoria Cola de Ope

FP

L d Load1 Load Buffers

Store B ff

Load2Load3Load4Load5Load6

Add1Add2dd3

Mult1M lt2

Buffers

SumadorFP

Add3

MultiplicadorFP

Mult2

Estaciones De Reserva

A Memoria

SumadorFP MultiplicadorFP

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

Common Data Bus (CDB)

Page 110: Arquitectura de Computadores - UCM

Especulación

l d l óBuffer de Reordenamiento

Algoritmo de TOMASULO con especulación

De Memoria Cola de Ope

Registrosde Ope

FP

Load Buffers

Load1Load2Load3

A MemoriaReg

DatoBuffersLoad3Load4Load5Load6

Dato

Add1Add2Add3

Mult1Mult2

E i

SumadorFP MultiplicadorFP

Estaciones De Reserva

AC — Tema 4 F. Tirado / R. Hermida (2010-11) 98Common Data Bus (CDB)

Page 111: Arquitectura de Computadores - UCM

Especulación

El Buffer de Reordenamiento (ROB) El Buffer de Reordenamiento (ROB)o Almacena resultados de instrucciones cuya ejecución ha

finalizado, pero…stán l sp d ctu li ist s m m i están a la espera de actualizar registros o memoria

(finalización en orden) son dependientes de un salto (ejecución especulativa)

o Permite el paso de operandos entre instrucciones o Permite el paso de operandos entre instrucciones especuladas con dependencia LDE.

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

o Registros (la instrucción que genera el operando ha fi li d l )finalizado completamente)

o ROB (la instrucción que genera el operando se ha ejecutado, pero no ha actualizado el banco de registros)CBD (l i ió l d d í h o CBD (la instrucción que genera el operando todavía no ha realizado la fase de escritura)

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

R13

Page 112: Arquitectura de Computadores - UCM

Diapositiva 99

R13 Transparencia insertadaRomán; 28/09/2007

Page 113: Arquitectura de Computadores - UCM

Especulación

Est u tu d l ROB: d nt d nti n 4 mp s Estructura del ROB: cada entrada contiene 4 camposo Tipo de instrucción

Salto (sin reg destino), Store (destino en memoria), ( g ) ( )Aritmética/Load (con destino en registro)

o Destino Número de registro (Aritmética/Load)Número de registro (Aritmética/Load) Dirección de memoria (Store)

o ValorR l d d l j ió d l i ió G d l Resultado de la ejecución de la instrucción. Guarda el 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

R14

Page 114: Arquitectura de Computadores - UCM

Diapositiva 100

R14 Transparencia insertadaRomán; 28/09/2007

Page 115: Arquitectura de Computadores - UCM

Especulación: fases

l d l ó Algoritmo de TOMASULO con especulación

•Los 4 estados del algoritmo de Tomasulo especulativoIssue: Toma la instrucción de la cola

Es necesario: ER con entrada libre y Buffer de Reordenamiento (ROB) con entrada libre. Toma operandos de registros o de resultados almacenados en ROB por Toma operandos de registros o de resultados almacenados en ROB por instrucciones previas.

Marca R. Destino con nº de ROB asignadoMarca ER asignada con nº de ROB asignadog g

Ejecución: Opera sobre los operandosEspera hasta que los operandos estén disponibles. Chequea CDB.

Escribe resultados: Finaliza ejecuciónEscribe resultados: Finaliza ejecuciónEscribe 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 por CDB resultado + nº de ROB al que se dirigep g

Commit: Actualiza registros desde el ROBCuando 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.

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

Tratamiento de saltos y Excepciones

R12

R15

RH2

RH3

Page 116: Arquitectura de Computadores - UCM

Diapositiva 101

R12 He reescrito descripción de estadosRomán; 26/09/2007

R15 Tratamiento de saltos y excepcionesOrden de LD/ST

Merecen unas transp aparteRomán; 28/09/2007

RH2 NuevoRH; 23/11/2008

RH3 NuevoRH; 23/11/2008

Page 117: Arquitectura de Computadores - UCM

Especulación: Ejemplo

Buffer de ReordenamientoDest Valor Tipo Listo Se lanza: LD F0,10(R2)

567

Nº de ROB

De MemoriaCola

de OpeFP RegistrosLD F0,10(R2) NF0 1

234

Dest FP

Load Buffers

A Memoria

Reg

Dato

1 10+R2

2468

10

1 02

ValorDestD st

Estaciones

Nº de ROB que producirá el valor

Dest

SumadorFP MultiplicadorFPDe Reserva

Common Data Bus (CDB)

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

Common Data Bus (CDB)

R16

Page 118: Arquitectura de Computadores - UCM

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 instrucciones2. He metido el campo de "Nº ROB" de los registros3. He indicado explícitamente la instrucción que se lanza, ejecuta o finaliza.Román; 01/10/2007

Page 119: Arquitectura de Computadores - UCM

Especulación: Ejemplo

Buffer de ReordenamientoDest Valor Tipo Listo Se lanza: ADDD F10,F4,F0

567

Nº de ROB

De MemoriaCola

de OpeFP RegistrosLD F0,10(R2) NF0 1

234

DestADDD F10,F4,F0 NF10

FP

Load Buffers

A Memoria

Reg

Dato

1 10+R2

2468

102

02

1

DestD st

Estaciones

2 ADDD R(F4), ROB1 Dest

SumadorFP MultiplicadorFPDe Reserva

Common Data Bus (CDB)

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

Common Data Bus (CDB)

Page 120: Arquitectura de Computadores - UCM

Especulación: Ejemplo

Buffer de ReordenamientoDest Valor Tipo Listo Se lanza: DIVD F2,F10,F6

567

Nº de ROB

De MemoriaCola

de OpeFP RegistrosLD F0,10(R2) NF0 1

234

DestADDD F10,F4,F0 NF10DIVD F2,F10,F6 NF2

FP

Load Buffers

A Memoria

Reg

Dato

1 10+R2

2468

102

302

1

DestD st

Estaciones

2 ADDD R(F4), ROB13 DIVD ROB2,R(F6)

Dest

SumadorFP MultiplicadorFPDe Reserva

Common Data Bus (CDB)

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

Common Data Bus (CDB)

Page 121: Arquitectura de Computadores - UCM

Especulación: Ejemplo

Buffer de ReordenamientoDest Valor Tipo Listo Se lanza: BNE F2, ---

LD F4, 0(R3)ADDD F0,F4,F6

567

Nº de ROB

LD F4,0(R3) NF4ADDD F0,F4,F6 NF0

De MemoriaCola

de OpeFP RegistrosLD F0,10(R2) NF0 1

234

DestADDD F10,F4,F0 NF10DIVD F2,F10,F6 NF2BNE F2,--- N---

, ( )

FP

Load Buffers

A Memoria

Reg

Dato

1 10+R25 0+R3

2

35

2468

10

DestD st

6 02

Estaciones

2 ADDD R(F4), ROB13 DIVD ROB2,R(F6)6 ADDD ROB5, R(F6)

Dest

SumadorFP MultiplicadorFPDe Reserva

Common Data Bus (CDB)

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

Common Data Bus (CDB)

Page 122: Arquitectura de Computadores - UCM

Especulación: Ejemplo

Buffer de ReordenamientoDest Valor Tipo Listo Se lanza: ST 0(R3), F4

(sup R3=10)

567

Nº de ROB

LD F4,0(R3) NF4ADDD F0,F4,F6 NF0ST 0(R3),F4 N10 ROB5

De MemoriaCola

de OpeFP RegistrosLD F0,10(R2) NF0 1

234

DestADDD F10,F4,F0 NF10DIVD F2,F10,F6 NF2BNE F2,--- N---

, ( )

FP

Load Buffers

A Memoria

Reg

Dato

1 10+R25 0+R3

2468

102

53

02

DestD st

6

Estaciones

2 ADDD R(F4), ROB13 DIVD ROB2,R(F6)6 ADDD ROB5, R(F6)

Dest

SumadorFP MultiplicadorFPDe Reserva

Common Data Bus (CDB)

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

Common Data Bus (CDB)

Page 123: Arquitectura de Computadores - UCM

Especulación: Ejemplo

Buffer de ReordenamientoDest Valor Tipo Listo Se ejecuta: LD F4,0(R3)

567

Nº de ROB

LD F4,0(R3) YF4 M[10]ADDD F0,F4,F6 NF0

10 M[10] ST 0(R3),F4 Y

De MemoriaCola

de OpeFP RegistrosLD F0,10(R2) NF0 1

234

DestADDD F10,F4,F0 NF10DIVD F2,F10,F6 NF2BNE F2,--- N---

, ( )[ ]

FP

Load Buffers

A Memoria

Reg

Dato

1 10+R2

2468

102

53

02

DestD st

6

Estaciones

2 ADDD R(F4), ROB13 DIVD ROB2,R(F6)6 ADDD M[10], R(F6)

Resultado a ROB5 y todo

Dest

SumadorFP MultiplicadorFPDe Reserva

Common Data Bus (CDB)

ROB5 y todo ROB o ER con“marca” ROB5

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

Common Data Bus (CDB)

Page 124: Arquitectura de Computadores - UCM

Especulación: Ejemplo

Buffer de ReordenamientoDest Valor Tipo Listo Se ejecuta: ADDD F0,F4,F6

567

Nº de ROB

LD F4,0(R3) YF4 M[10]ADDD F0,F4,F6 YF0 F4+F6

10 M[10] ST 0(R3),F4 Y

De MemoriaCola

de OpeFP RegistrosLD F0,10(R2) NF0 1

234

DestADDD F10,F4,F0 NF10DIVD F2,F10,F6 NF2BNE F2,--- N---

, ( )[ ]

FP

Load Buffers

A Memoria

Reg

Dato

1 10+R2

2468

102

53

02

DestD st

6

Estaciones

2 ADDD R(F4), ROB13 DIVD ROB2,R(F6)

Dest

Resultado a ROB6 y todo

SumadorFP MultiplicadorFP

De Reserva

Common Data Bus (CDB)

ROB6 y todo ROB o ER con“marca” ROB6

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

Common Data Bus (CDB)

Page 125: Arquitectura de Computadores - UCM

Especulación: Ejemplo

Buffer de ReordenamientoDest Valor Tipo Listo Se ejecuta: LD F0,10(R2)

sup R2=10

567

Nº de ROB

LD F4,0(R3) YF4 M[10]ADDD F0,F4,F6 YF0 F4+F6

10 M[10] ST 0(R3),F4 Y

De MemoriaCola

de OpeFP RegistrosLD F0,10(R2) YF0 M[20] 1

234

DestADDD F10,F4,F0 NF10DIVD F2,F10,F6 NF2BNE F2,--- N---

, ( )[ ]

FP

Load Buffers

A Memoria

Reg

Dato2468

102

53

02

DestD st

6

Estaciones

2 ADDD R(F4),M[20]3 DIVD ROB2,R(F6)

Dest

SumadorFP MultiplicadorFP

De Reserva

Common Data Bus (CDB)

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

Common Data Bus (CDB)

Page 126: Arquitectura de Computadores - UCM

Especulación: Ejemplo

Buffer de ReordenamientoDest Valor Tipo Listo Se ejecuta: ADDD F10,F4,F0

567

Nº de ROB

LD F4,0(R3) YF4 M[10]ADDD F0,F4,F6 YF0 F4+F6

10 M[10] ST 0(R3),F4 Y

De MemoriaCola

de OpeFP RegistrosLD F0,10(R2) YF0 M[20] 1

234

DestADDD F10,F4,F0 YF10 *DIVD F2,F10,F6 NF2BNE F2,--- N---

, ( )[ ]

FP

Load Buffers

A Memoria

Reg

Dato2468

102

53

02

DestD st

6

Estaciones

3 DIVD * ,R(F6)Dest

SumadorFP MultiplicadorFP

De Reserva

Common Data Bus (CDB)

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

Common Data Bus (CDB)

* = R(F4)+M[20]

Page 127: Arquitectura de Computadores - UCM

Especulación: Ejemplo

Buffer de ReordenamientoDest Valor Tipo Listo Finaliza (Commit): LD F0,10(R2)

567

Nº de ROB

LD F4,0(R3) YF4 M[10]ADDD F0,F4,F6 YF0 F4+F6

10 M[10] ST 0(R3),F4 Y

De MemoriaCola

de OpeFP Registros1

234

DestADDD F10,F4,F0 YF10 *DIVD F2,F10,F6 NF2BNE F2,--- N---

, ( )[ ]

FP

Load Buffers

A Memoria

Reg

Dato2468

102

53

02

DestD st

6 M[20]

Estaciones

3 DIVD * ,R(F6)Dest

SumadorFP MultiplicadorFP

De Reserva

Common Data Bus (CDB)

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

Common Data Bus (CDB)

* = R(F4)+M[20]

Page 128: Arquitectura de Computadores - UCM

Especulación: Ejemplo

Buffer de ReordenamientoDest Valor Tipo Listo Finaliza (Commit):

ADDD F10,F4,F0

567

Nº de ROB

LD F4,0(R3) YF4 M[10]ADDD F0,F4,F6 YF0 F4+F6

10 M[10] ST 0(R3),F4 Y

De MemoriaCola

de OpeFP Registros1

234

Dest

DIVD F2,F10,F6 NF2BNE F2,--- N---

, ( )[ ]

FP

Load Buffers

A Memoria

Reg

Dato2468

10

53

*

02

DestD st

6 M[20]

Estaciones

3 DIVD * ,R(F6)Dest

SumadorFP MultiplicadorFP

De Reserva

Common Data Bus (CDB)

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

Common Data Bus (CDB)

* = R(F4)+M[20]

Page 129: Arquitectura de Computadores - UCM

Especulación: Riesgos a través de memoria

Ri s s EDE EDL: n pu d n p d d u l Riesgos EDE y EDL: no pueden aparecer dado que la actualización de memoria se hace en orden.

o Esperar hasta que la instrucción ST se halle en la cabecera de p qROB => Todos los LD y ST anteriores se han completado.

Riesgos LDE: Podrían producirse si un LD accede a la 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.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

R17

Page 130: Arquitectura de Computadores - UCM

Diapositiva 113

R17 Esta y la siguiente son nuevas. Por favor, revisar.Román; 01/10/2007

Page 131: Arquitectura de Computadores - UCM

Especulación: Saltos e interrupciones

El ROB p mit up s d s lt s m l p di h s El ROB permite recuperarse de saltos mal predichos e implementar un modelo de excepciones precisas

Si una instrucción de salto bien predicha llega a 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 ROBo Borrar contenido del ROBo 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 ROBo Si la instrucción llega a la cabecera del ROB (no especulada) o Si la instrucción llega a la cabecera del ROB (no especulada),

entonces reconocer la interrupción.o Cualquier instrucción anterior habrá finalizado. Por tanto

ninguna instrucción anterior puede provocar una excepción

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

ninguna instrucción anterior puede provocar una excepción.

Page 132: Arquitectura de Computadores - UCM

Especulación: más ejemplos

Algoritmo de TOMASULO con especulación

Estado Opera Vj Vk Qj Qk Nº ROB Destino

Estaciones de Reserva Algoritmo de TOMASULO con especulación

Un ejemplo ADD1 Libre ADD2 Libre ADD3 Libre MUL1 Libre MULT M(45+(R3)) F4 #3LD F6,34(R2)

LD F2,45(R3)MULTD F0,F2,F4SUBD F8 F6 F2

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

E t d I t ió E t d D ti V l

Buffer de ReordenamientoSUBD F8,F6,F2DIVD F10,F0,F6ADDD F6,F8,F2

Estado Instrucción Estado Destino Valor

1 libre LD F6,34(R2 Commit F6 M(34+(R2))2 libre LD F2,45(R3) Commit F2 M(45+R3))3 O d MULTD F0 F2 F4 E i R F0 #2 (F4)3 Ocupada MULTD F0,F2,F4 Escri. Res F0 #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 F8 F2 Escri Res F6 #4 + #26 Ocupada ADDD F6,F8,F2 Escri. Res. F6 #4 + #2

F0 F2 F4 F6 F8 F10 F12 …Buffer Nº 3 6 4 5Estado de los registros FP

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

Ocupado si no no si si si noEstado de los registros FP

Page 133: Arquitectura de Computadores - UCM

Especulación: más ejemplos

l d l ó

Un j mpl

Estado Opera Vj Vk Qj Qk Nº ROB Destino

MUL1 Libre MULT M(0+(R1)) F2 #2

Algoritmo de TOMASULO con especulación

Un ejemplo

LOOP LD F0 0(R1)

( ( ))MUL2 Libre MULT M(0+(R1)) F2 #7

Estado Instrucción Estado Destino ValorLOOP LD F0,0(R1)

MULTD F4,F0,F2SD 0(R1),F4SUBI R1,R1,#8BNEZ R1 LOOP

1 libre LD F0,0(R1) Commit F0 M(0+(R1))2 libre MULTD F4,F0,F2 Commit F4 F0 x F23 Ocupada SD 0(R1),F4 Escri. Res 0+R1 #2

BNEZ R1,LOOP 4 Ocupada SUBI R1,R1,#8 Escri. Res. R1 R1-85 Ocupada BNEZ R1, loop Escri. Res

6 Ocupada LD F0,0(R1) Escri. Res. F0 M(#4)ES

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

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

10 O d BNEZ R1 L E i R

PECULA

DA

F0 F2 F4 F6 F8 F10 F12 …

Buffer Nº 6 7Estado de los registros FP

10 Ocupada BNEZ R1,Loop Escri. Res.

AS

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

Ocupado si no si no no no no

Estado de los registros FP

R18

Page 134: Arquitectura de Computadores - UCM

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