DEPENDENCIAS Y BLOQUEOS DE CONTROL …icaro.eii.us.es/descargas/2.8 instr_control2006.pdf · •...
Transcript of DEPENDENCIAS Y BLOQUEOS DE CONTROL …icaro.eii.us.es/descargas/2.8 instr_control2006.pdf · •...
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