dependencias y bloqueos de control …icaro.eii.us.es/descargas/2.8 instr_control2006.pdf · •...

31
DEPENDENCIAS Y BLOQUEOS DE CONTROL (Apartado 2.8) 1. Introducción. 2. Dependencias, riesgos y bloqueos de control. 3. Consideraciones de implementación. 4. Comportamiento de los saltos condicionales. 5. Implementaciones alternativas de saltos. 6. Conclusiones.

Upload: dinhthuy

Post on 12-Oct-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

DEPENDENCIAS Y BLOQUEOS DE CONTROL (Apartado 2.8)

1. Introducción.

2. Dependencias, riesgos y bloqueos de control.

3. Consideraciones de implementación.

4. Comportamiento de los saltos condicionales.

5. Implementaciones alternativas de saltos.

6. Conclusiones.

22

Tipos de instrucciones de control

SALTO Formato RangoFrec. INT

(DLX)Frec. FP(DLX)

BEQZ/BNEZ I16 bits

con signo16% 8%

J, JAL J26 bits

con signo1%, 1% 0.5%, 1%

JR, JALR I Registro 1% 1%

Muy frecuentes (1 de cada 4 a 7 instr.)Usaremos: Fsaltos(INT) = 0.2

Fsaltos(FP) = 0.1Bucles: saltos condicionales hacia atrás muy frecuentes

CPI = CPIideal + CPIestruct + CPIdatos + CPIcontrol + CPImem

33

Definiciones y Nomenclatura

SALTOS CONDICIONALES

• Tomado/No Tomado (T/NT)

• Rama Tomada/Rama No Tomada

• Instr. de destino/Instr. siguientes

• Tras resolver ⇒ Instr. VálidasPC+4

Instr. sig.

F

V

PCdestInstr. dest

Cond

PCdestInstr. dest

SALTOS INCONDICIONALES

44

Ejemplo de ejecución de instr. salto

ADD R8, R0, R0Etiq:

... ; Instr. de destino

...ADDI R8, R8, 1SLTI R9, R8, 100BNEZ R9, Etiq

... ; Instr. SiguientesRama No Tomada

Rama Tomada

RESOLVER SALTO (Hardw.)1. PCdest =NPC +Desplaz

(SUMADOR)Salto hacia atrás: Desplaz<0Salto hacia delante: Desplaz>=0

2. Condición : R9≠0 ( Rf=0 ? )3. Actualizar el PC: (MUX)

if (Cond) PC=PC+4 ;else PC= PCdest ;

⇒ Siguiente fase IF buscará instr válidas.

55

1. Introducción.

2. Dependencias, riesgos y bloqueos de control.

3. Consideraciones de implementación.

4. Comportamiento de los saltos condicionales.

5. Implementaciones alternativas de saltos.

6. Conclusiones.

INDICEINDICE

Instr.sig.

F

V

Instr.dest

Cond¿Qué es una dependencia de control? : Uso del PC

SaltoInst sig1Inst sig2 Inst sig3Inst sig4

Fichero.exe

Dependencias de control

instr. 1Recordemos:

Dependencia

instr. 2 instr. 3

“Ve” todos los recursos ⇒ No depend.

Ejec.

Secuencial

Inst 1Inst 2Inst 3Inst 4Inst 5

Ejec.

Encaden.

77

Riesgo ⇒ Bloqueo de Control ¿Cómo afecta al rendimiento ?

lenta más1

0.61

TCPIN

TCPIN

t

tA

idealinst

realinst

ideal ejec

real ejec %60⇒

+===

PROGRAMAS INT: CPIcontrol = 3 * 0.2 = 0.6 c.bq./instr

⇒ INTENTAR MEJORAR

Saltos son muy comunes

SaltoInst sig1Inst sig2 Inst sig3

IF ID EX MEM WBIF ID EX

IF IDIF

IF ID EX MEM WBInst válida

Resuelve salto: Actualiza PC

saltossaltoscontrol FPinstrNsaltosN

saltosNcontrolbqcN

instrNcontrolbqcNCPI =×==

.ºº

º).(.º

.º).(.º

3 ciclos de bloqueo: “CONGELAR” O “VACIAR” la cadena

88

Salto Inst válida1 Inst válida2

SOLUCIÓN: Adelantar Resolución

IF ID EX MEM WBIF ID EX MEM

IF ID EX

0 c.bq.

∀salto

No hacen nada

IDEAL

(intentar acercanos a lo anterior)

• Adelantar la resolución para evitar bloqueos.• El coste hw adicional no debe ser alto.

Resuelve el salto

99

1. Introducción.

2. Dependencias, riesgos y bloqueos de control.

3. Consideraciones de implementación.

4. Comportamiento de los saltos condicionales.

5. Implementaciones alternativas de saltos.

6. Conclusiones.

INDICEINDICE

1010

Modificaciones en el esquema del DLX

PCMemoriaInstrucc. ALU

Add

4

Ficherode

registros

Ext.signo

¿Cero?

MUX

MUX

Memoriade

datos

MUX

16 32

IR

MUX

Rs1

Rs2

Rd

dato

32

IF ID EX MEM WB

NOTA: Faltan los bypasses

PCdest

+ REPLICAR

TRASLADAR

1111

DLX con saltos adelantados

PCMemoriaInstrucc. ALU

Add

4

Ficherode

registros

Ext.signo

¿Cero?

MUX

MUX

Memoriade

datos

MUX

IF ID EX MEM WB

16 32

IR

MUX

Rs1

Rs2

Rd

dato

32

Add

NOTA: Faltan los bypasses

PCdest

Se alarga la fase ID

1212

Consideraciones de la nueva implementación

• ¿Incompatible? con lectura de registros en el 2º semiciclo (WB, escritura en el 1º).

EJERC.

• Nuevos bloqueos ⇒ estudiar nuevos bloqueos de datos y nuevos bypasses que han de introducirse.Sol: ALU R1,…

BEQZ R1, etiqLoad R1, [dir]BNEZ R1, etiqLoad R1, [dir] instr sin dependenciasBEQZ R1, etiq

⇒ 1 c.bq.

⇒ 2 c.bq.

⇒ 1 c.bq.

• Mayor complejidad ⇒ Nuevo sumador, Nuevos caminos de desvío (Operando Rcond leído en fase ID).

EX MEM WBID EX MEMIF ID EX

IF ID EXIF ID

1313

CPIcontrol tras el adelantamiento

1 c.bq. ABORT

CPIcontrol = Fsaltos * Psaltos= 0.2 * (1) = 0.20 ⇒

IF ID EX MEM WBIF

IF ID EX

Salto Inst sig1

Inst válida

No hacen nada

lenta más %2010.21

tt

Aideal ejec

real ejec ⇒+

==

TÉCNICA “CONGELAR” O “VACIAR” la cadena

1414

Mejorar aún más el rendimiento

• Los saltos son instr. muy comunes (“Acelerar el caso común”).

• Muchas máquinas reales tienen muchas más fases que el DLX: Resuelven el salto en la 3ª, 4ª o más.

• MIPS R4000 (1992, 8 fases), en la 4ª fase (EX). • Pentium (1992, 5 fases), en la 4ª fase (EX). • Pentium Pro, II y III (1995-99, 10 fases), en la 8ª fase (EX). • UltraSPARC III (1999, 12 fases), en la 8ª fase (EX), etc.

• (hoy, tendencia hacia la supersegmentación o superencadenamiento ...)

Salto TInst sig1Inst sig2Inst sig3

Inst válida

Ejemplo: intentar aumentar el rendimiento por supersegmentación

¡La supersegmentación no tiene por qué ser la clave! CPIcontrol mucho mayor. Cuantificar otros bloqueos y reducción de TDLX2

IF1 IF2 ID1 ID2 EX1 EX2 M1 M2 WB1 WB2IF1 IF2 ID1

IF1IF1 IF2

IF1 IF2 ID1 ID2 EX1 EX2 M1 M2 WB1 WB2

No hacen nada

DLX2: TDLX2 → TDLX/2 (por similitud resolvería los saltos al final de ID2)

3 c.bq.

5.1(1.6)2.4

.6)0(1.2)0(12

CPITNCPITN

tt

ADLX2DLX2instr

DLXDLXinstr

DLX2ejec

DLXejec ==++×

===

CPIcontrol = 0.2 * 3= 0.6

EJERC.

1616

Principales soluciones para mejorar aún más el rendimiento

• Muchos mecanismos de reducir más el CPIcontrol:

• Estudiar su comportamiento, desde el punto de vista estático y sofisticar saltos para aprovechar ese estudio.

• Recoger su comportamiento con técnicas dinámicas(aptdo 2.9).

• Eliminándolos (si se conoce con exactitud su comportamiento, ej. bucles , se verá más adelante, tema 3).

IDEA: Si se adivinara el comportamiento de un salto (“predecir”) ⇒ intentar ejecutar instrucciones de rama predicha

1717

1. Introducción.

2. Dependencias, riesgos y bloqueos de control.

3. Consideraciones de implementación.

4. Comportamiento de los saltos condicionales.

5. Implementaciones alternativas de saltos.

• Saltos que apuestan.• Saltos retrasados.

6. Conclusiones.

INDICEINDICE

1818

Comportamiento medio de los saltos condicionales

• Programas INT: Saltos Cond: %T = 60%-70% ; %NT= 40%-30%⇒ T son el doble de frecuentes ⇒ CASO COMÚN

• Programas FP: Saltos Cond: %T = 65%-75%

En f. de PCdest: Saltos Hacia atrás (PCdest <= PCsalto) %T = 85%Saltos Hacia adelante (PCdest >PCsalto) %T = 60%

⇒ Saltos hacia atrás casi siempre se Toman (bucles).

Estas estadísticas no varían mucho con las entradas de un prog.

ÚNICA CONCLUSIÓN GENERAL (∀ salto):

TOMADO ES EL CASO COMÚN

1919

Comportamiento individualizado de los saltos (“profiling”)

Estadísticas de ejecuciones previas ⇒ Cada salto está muy “polarizado” (bucles, condiciones de salida, etc.).

• Si se asocia un comportamiento individual a cada salto:% error en la predicción (DLX) prog. INT: 15% ; prog. FP: 9%

En la media: (INT) 46 instr sin errar ; (FP) 173 instr sin errar.

•El compilador indicaría la predicción en un bit del opcode. (Ej. Intel i960CA).

• IDEA BUENA, pero … PROBLEMAS:

• Realizar ejecuciones temporales en medio de la compilación• Habría doble número de tipos de saltos.

⇒ Hoy tb. se implementa esto con técnicas dinámicas

2020

1. Introducción.

2. Dependencias, riesgos y bloqueos de control.

3. Consideraciones de implementación.

4. Comportamiento de los saltos condicionales.

5. Implementaciones alternativas de saltos (técnicas estáticas)

• Saltos que apuestan.

• Saltos retrasados.

6. Conclusiones.

INDICEINDICE

2121

CONGELAR” O “VACIAR” LA CADENA

Si se predice que va a hacer ser un salto, se puede “apostar” (implementación) empezando a ejecutar la rama predicha:• APOSTAR POR NO TOMADO

• APOSTAR POR TOMADO (No en DLX; Falta PC )

TÉCNICA “CONGELAR” O “VACIAR” LA CADENA(Siempre se abortan las instr. siguientes).

1 1NT T

c.bq. CPIcontrol = 0.2 * (1) = 0.2

1 c.bq. ABORTIF ID EX MEM WB

IFIF ID EX

Salto Inst sig1

Inst válida

2222

TÉCNICA “APOSTAR” POR SALTO NT

NOTA: Implementación normal del DLX es Ap.NTEspeculación (Concepto): se empieza a ejecutar instr sig. especulando

0 1NT T

c.bq.CPIcontrol = 0.2 * (0.3*0 + 0.7*1) = 0.14no mejora mucho, favorece caso menos común

Salto NTInst sig1Inst válida (sig2)

IF ID EX MEM WBIF ID EX MEM

IF ID EX 0 c.bq.

Salto TInst sig1Inst válida (dest)

IF ID EX MEM WBIF

IF ID EX1 c.bq. ABORT

CPIcontrol = Fsaltos * Psaltos= Fsaltos * (%NT * PsaltosNT+ %T * PsaltosT)

2323

1. Introducción.

2. Dependencias, riesgos y bloqueos de control.

3. Consideraciones de implementación.

4. Comportamiento de los saltos condicionales.

5. Implementaciones alternativas de saltos.

• Saltos que apuestan.• Saltos retrasados.

6. Conclusiones.

INDICEINDICE

2424

Inst válida

CONCEPTO: SALTO RETRASADO

Instr ant1Instr ant2Instr ant3

Salto IF ID EX MEM WB IF

IF ID IF

IF

HUECO DEL SALTO (‘delay slot’)

Inst sig1Instr ant2 ID EX MEM WB

No es fácil que el compilador (planificación estática) encuentre instrucciones anteriores sin dependencia de datos para rellenar (efectividad en el rellenado). Mnemotécnicos: DBNEZ, DBEQZ•NOTA: DLX (resuelve saltos en ID) sólo una instrucción en hueco.

• IDEA: Aprovechar el tiempo que se tarda en resolver el salto (el hueco) ejecutando otras instrucciones. Instr ant1

Instr ant2Instr ant3

Salto Instr sig1

Instr ant1Instr ant3

Salto Retr.Instr ant2 Instr sig1

2525

Salto retrasado con anulación

•Si el salto es capaz de anular o cancelar instrucciones del hueco ⇒ No tantos problemas para rellenarlo con instr. de una u otra rama (Efectividad ≈ 90%)

• CBEQZ o CBNEZ (C de ‘cancelling’)• Más complejo de implementar, pero más prestaciones.• Aprovecha que los saltos están muy “polarizados”.• Compilador introduce la instrucción de la rama predicha

⇒ CBNEZ.pt y CBNEZ.pnt

2626

CBEQZ.pt (NT)Inst dest1(hueco)Inst válida(sig1)

CBEQZ.pt (T)Inst dest1(hueco)Inst válida(dest)

Cronogramas para saltos retrasados con anulación

IF ID EX MEM WBIF ID EX MEM

IF ID EX0 c.bq.

1 c.bq. CANCELIF ID EX MEM WB

IFIF ID EX

CBEQZ.pnt (T)Inst sig1

Inst válida(dest)

CBEQZ.pnt (NT)Inst sig1

Inst válida (sig2)

IF ID EX MEM WBIF ID EX MEM

IF ID EX0 c.bq.

1 c.bq. CANCELIF ID EX MEM WB

IFIF ID EX

2727

Penalidad saltos retrasados con anulación

Ej.Calcular CPIcontrol medio para programas FP e INT. Suponer la predicción se hace por ejecuciones previas (profiling) y 100% de efectividad en el relleno del hueco.

INT: CPIcontrol = Fsaltos * (%Ac * 0 + %Fall * 1) = = 0.2*(0.15 * 1) = 0.03 c.bq./instr

FP: CPIcontrol = Fsaltos * (%Ac * 0 + %Fall * 1) = = 0.1*(0.09 * 1) = 0.009 c.bq./instr

NOTA: CBEQZ.pnt ≡ BEQZ Apostar por NT (TÉCNICA 2)

0 1NT T

CBEQZ.pnt

1 0CBEQZ.pt0 1

Ac. FallCBEQZ

2828

Problemas de los saltos retrasados

• Técnica estática, prob. de compatibilidad futura (tamaño del hueco variará con la versión del procesador)

• Problemas de herencia. Nuevos procesadores llevan ya otros mecanismos ⇒ hardware tendrá que implementar tales saltos para que el software antiguo sea compatible.

• Implementar un nuevo tipo de salto (se acerca a CISC)

Hoy existe una técnica similar a CBEQZ pero dinámicamente (caché de predicción). Muy efectiva.

“Técnicas dinámicas son trasparentes al usuario (ventaja)”.

2929

CONCLUSIONES

• SALTOS SON MUY COMUNES ⇒ CPICONTROLALTO.

• IMPORTANTE ADELANTAR LA RESOLUCIÓN (PCdest y Cond)

• IMPORTANTE: CONOCIMIENTO DE SALTOS.

• SALTOS CON AYUDA DEL COMPILADOR (TÉCN. ESTÁTICA) : PROBLEMAS (herencia, etc.)

• VEREMOS LA EXTENSIÓN DE ESTAS TÉCNICAS DE FORMA DINÁMICA.

3030

EJERCICIOS (I). (Apartado 2.8)

Dibujar una gráfica con la deceleración entre el DLX y un procesador supersegmentado de 5*K etapas, si la penalidad de los saltos es de 2*K-1 ciclos, y el periodo obedece a la fórmula 9/K+1 ns. Poner K en abscisas y deceleración en ordenadas. Suponer % saltos tomados=70%

Ejemplo: intentaraumentar el rendimientopor supersegmen...

Dibujar una gráfica con la deceleración introducida por los saltos en un programa entero para un procesador de N etapas (respecto del procesador con CPI=1), si la penalidad de los saltos tomados es de N-3 ciclos, y la de los No tomados, de 0. Poner N en abscisas y deceleración en ordenadas. Suponer % saltos tomados=70%

Mejorar aún más el rendimiento

Calcular la deceleración típica producida por los saltos en un programa entero (respecto del DLX ideal), donde la penalidad de los saltos tomados es de 1 ciclos, y la de los No tomados, de 0 (Suponer % saltos tomados=70%).

CPIcontrol tras el adelantamiento

Dibujar los cronogramas de los ejemplos. Dibujar un esquemático con los bypasses nuevos para los saltos resueltos en ID.Consideraciones de la nueva implementación

Si el tiempo de propagación de los siguientes circuitos es de 1 ns, calcular el incremento del periodo de un DLX que lee en el segundo semiciclo los registros fuente, y en el cual todas las fases duraban exactamente lo mismo antes de adelantar los saltos:comparador con cero, MUX, Sumador, escritura en un registro

DLX con saltosadelantados

¿Por qué no se puede resolver un salto en la fase IF en un DLX?SOLUCIÓN: AdelantarResolución

Calcular la deceleración típica producida por los saltos en un programa FP respecto del DLX ideal.Idem para un programa entero, donde la penalidad de los saltos tomados es de 3 ciclos, y la de los No tomados, de 0. Suponer % saltos tomados=70%¿Aumenta la penalidad de control si todos los saltos van precedidos de un dependencia de datos que bloquea 1 ciclo el DLX?

Riesgo � Bloqueo de Control ¿Cómo afecta al rendimiento ?

Pensar que debe hacerse en el DLX para resolver un salto tipo JR y otro tipo JALEjemplo de ejecución de instr. salto

• Escribir en ensamblador del DLX una estructura condicional tipo: if-then ó if (cond) { ... } (necesita un único Salto Cond.)• Idem para: if-then-else ó if (cond) { ... } else { ... } (necesita Salto Cond. + Salto incond. )• Idem para estruct. iterativa: for (… ; cond ;… ) { ... } , while (cond) { ... } (necesita Salto cond+Salto incondicional)• Idem para estruct. iterativa: do { ... } while (cond); (necesita sólo un Salto cond)• Qué tiene un porcentaje de saltos mayor: una traza de ejecución o el código estático.

Tipos de instruccionesde control

CUESTIONESTRANSPARENCIA

3131

EJERCICIOS (II). (Apartado 2.8)CUESTIONESTRANSPARENCIA

El código generado por un compilador para un DLX (de 5 etapas), usando saltos retrasados con anulación, es compatible con un DLXsupersegmentado de 10 etapas? ¿Por qué?Problemas de los saltos

retrasados

Para programas FP en el DLX que resuelve completamente los saltos en MEM, calcular el CPIcontrol, si la efectividad en encontrar tres instrucciones para el hueco es del 80%, y tiene saltos retrasados con anulación y normales (apuestan por NT). En caso de no encontrar instrucción para el hueco, usa el salto normal. Usar los porcentajes de acierto en predicción de esta transparencia. %Tomados=70%

Penalidad saltosretrasados con anulación

Rescribir el siguiente programa usando un salto CBEQZ.pt: BUCLE: LW R1, (R3)0

ADDI R3, R3, 4BEQZ R1, BUCLE

Salto retrasado con anulación

Para el DLX que resuelve completamente los saltos en ID, calcular el CPIcontrol, si la efectividad en encontrar una instrucción es del 60%, y el DLX solo tiene saltos retrasados (en caso de no encontrar instrucción para el hueco, inserta un bloqueo software, NOP) .Idem si el DLX tiene saltos retrasados y no retrasados (apuestan por NT).Para el DLX que resuelve completamente los saltos en fase MEM, calcular el tamaño del hueco y la probabilidad de rellenarlo completamente, si la efectividad en encontrar una instrucción es del 60%.

CONCEPTO: SALTO RETRASADO

Para el DLX que resuelve completamente los saltos en fase MEM, calcular el CPIcontrol con esta técnica para programas enteros.Para un hipotético DLX que apostara por salto tomado (y las penalidades fueran las contrarias de apostar por NT), calcular la aceleración con la técnica anterior.

TÉCNICA “APOSTAR” POR SALTO NT

Idem para programas enteros y también para programas FP, si la penalidad en los saltos donde se acierta en la predicción es de 0 ciclos, y 2 ciclos para aquellos donde se yerra en la predicción .¿Cuántos saltos habría en un DLX , donde el opcode debe llevar un bit indicando la predicción hecha por el compilador?

Comportamientoindividualizado de lossaltos (“profiling”)

Calcular la deceleración típica producida por los saltos en un programa entero (respecto del DLX ideal), donde la penalidad de los saltos hacia atrás es de 2 ciclos, y la de los saltos hacia delante de 1 ciclo

Comportamiento mediode los saltoscondicionales

¿Qué tendrá menos CPI de control, un bucle for () o un bucle do...while (), según la traducción propuesta anteriormente?Principales solucionespara mejorar aún más el rendimiento