Unidad 2: Segmentación
Dependencias de Control
Docente: ing. José Díaz Chow
Preámbulo
Clases anteriores:
• Procesador segmentado adelanta la ejecución.
• Dependencias inherentes al solapamiento.
• Riesgos por dependencias:
Estructurales
Datos
Control
Objetivos Explicar qué son las dependencias de control
en la ejecución de programas en CPUs Segmentados.
Analizar los riesgos asociados a las dependencias de control en la ejecución y la importancia de eliminarlos.
Proponer alternativas de diseño para minimizar las latencias por Dependencias de control y para evitar cambios en el estado de la máquina por parte de instrucciones ejecutándose ilícitamente.
Explicar las técnicas de tratamiento empleadas para reducir el impacto de las latencias por dependencias de control.
Unidad 2: Segmentación
C15 - Contenido:
2.8 Dependencias de Control• Dependencias y Riesgos de Control
• Mejoras a nivel de Diseño
• DD en Brx tras adelantamiento
• Tratamiento de Latencias
• Datapath del DLX sin Dependencias de Control
Dependencias y Riesgos
• Las instrucciones de saltos generan dependencias de control cuando éste es efectivo.• Riesgos:
• Incoherencias: Cambio del estado del CPU
Bloqueo imprescindible
• Latencias: Reducción de la eficiencia.
Técnicas de Mejoramiento por Diseño
Dependencias y Riesgos de Control.
• Latencias Generadas y baja del desempeño:
if (cond)pc = pc + d
BRx
ir = Mi(pc) pc = pc + 4
decodificar A = pc B = d A’ = rf1
mar = A + B cond = (A’ cmp 0)
if (cond) pc = mar
-
MEMBRx i
k
PC
Ejemplo para 20% instrucciones de salto:
tr = 0.2( t + 3t) + 0.8 = t 1.6 t
Unidad 2: Segmentación
Contenido:
2.8 Dependencias de Control• Dependencias y Riesgos de Control
• Mejoras a nivel de Diseño
• DD en Brx tras adelantamiento
• Tratamiento de Latencias
• Datapath del DLX sin Dependencias de Control
Mejoras a nivel de Diseño (1/3)
• Adelantar la definición del salto a ALU.
ALUBRx i
k
PC
if (cond)pc = pc + d
BRx
ir = Mi(pc) pc = pc + 4
decodificar A = pc B = d A’ = rf1
mar = A + B if = (A’ cmp 0) pc = A + B
-
-
tr = 0.2( t + 2t) + 0.8 = t 1.4 t
Mejoras a nivel de Diseño (2/3)
• Adelantar la definición del salto a D/L.
D/LBRxi
k
PC
• Requerimientos estructurales: Sumador
en D/L, Comparador a D/L, quizas t sea mayor.if (cond)
pc = pc + d
BRx
ir = Mi(pc) pc = pc + 4
decodificarif = (Rf1 cmp 0) pc = pc + d
-
-
-
tr = 0.2( t + t) + 0.8 = t 1.2 t
Mejoras a nivel de Diseño (3/3)
• Garantizar el bloqueo para evitar inconsistencias
(Interlock Hardware)
D/LBRx i
k
PC
i+1
If (Rf1 cmp 0) : PC = @Salto else: PC = PC + 4
PC
IR
iCache
Inst
@Inst
4
R/W
Reloj
@Salto
NOP
Unidad 2: Segmentación
Contenido:
2.8 Dependencias de Control• Dependencias y Riesgos de Control
• Mejoras a nivel de Diseño
• DD en Brx tras adelantamiento
• Tratamiento de Latencias
• Datapath del DLX sin Dependencias de Control
Dependencias de Datos en Brx tras adelantamiento
• Los cambios estructurales de Diseño crean nuevas dependencias de datos en Brx.
Instrucciones Involucradas
Escenario Tratamiento
OP - BRx OP(i) – BRx(i+1) S(ALU) E(Cmp) Debe estudiarse si queda tiempo para que se dé, caso contrario, parar.
OP(i) – BRx (i+2) S(MAR) E(Cmp)
OP(i) – BRx (i+3) S(MDRin) E(Cmp)
LOAD - BRx LOAD(i) – BRx(i+1) Parar el cauce:IR=BRx y IR2=LOAD y IR2(Rd)= IR(Rf1)
LOAD(i) – BRx (i+2) S(Md) E(Cmp) Debe estudiarse si queda tiempo para que se dé, caso contrario, parar.
LOAD(i) – BRx (i+3) S(MDRin) E(Cmp)
Unidad 2: Segmentación
Contenido:
2.8 Dependencias de Control• Dependencias y Riesgos de Control
• Mejoras a nivel de Diseño
• DD en Brx tras adelantamiento
• Tratamiento de Latencias
• Datapath del DLX sin Dependencias de Control
Tratamiento de las latencias (1)
• No todos los segmentados adelantan el salto ni implementan interlock.
• El Programador y compilador tienen la responsabilidad de introducir NOPs por Sw.
• No todos los saltos son efectivos y por tanto se pierden ciclos inutilmente.
• Algunos CPUs tratan de “especular” sobre el destino del salto para minimizar pérdidas.
Tratamiento de las latencias (2)
• Tres técnicas más comunes:
• Salto Retardado (Método Software)• Apuesta por una rama (Sw + Hw)
• Apuesta por ambas ramas (Hardware BTB)
• Predicción del Salto (Hardware Predictor)
Tratamiento de las latencias (3)
• Salto Retardado:
• En tiempo de compilación.
• Se introducen instrucciones de relleno (Delay Slots o ranuras de retardo) que pueden ser útiles o al menos válidas.
• Selección de rellenos no es trivial (dd específicas)
• Rellenos del Bloque básico, salto o continuación
• En caso de no encontrar rellenos, usa NOPs
Tratamiento de las latencias (4)
• Ejemplo:
…1) MUL R1, R2, R92) ADD R7, R1, R93) DIV R7, R1, R94) SUB R4, R4, R65) BRx R4, d (i)
6) MUL R5, R13, R13 (i+1)7) SUB R12, R7, R88) SUB R12, R5, R6…
9 ) SUB R12, R7, R1 (k)10) ADD R13, R12, R511) ADD R6, R5, R6…
Bloque básico
Bloque de Continuación
Bloque del salto
• Podemos usar la inst 3 pero no 1 ni 4 (R-D) ni 2 (R-R con 3). No dd con siguientes del bloque.
• Solo 7 es elegible (6 –10,11; 8 - 6 tienen R-D y 8 – 7 tienen R-R). No dd con anteriores del bloque ni R-D con salto.
• Solo 9 es apropiada (10-9 y11-8 tienen R-D). No dd con anteriores del bloque ni R-D con continuación.
Tratamiento de las latencias (5)
• Apuesta por una rama:
• Mejora del simple interlock. Se apuesta por una rama y se emite NOP o bloquean escrituras en caso de fallo
• Si se apuesta Continuación. CU debe:
Si IR2 = BRx y (Rf1 cmp 0) IR = NOP
• Si se apuesta Salto, Compilador inserta relleno y modifica d para que el salto sea a k+1. CU verifica:
Si IR2 = BRx y !(Rf1 cmp 0) IR = NOP
Tratamiento de las latencias (6)
• Predicción del Salto:
• En tiempo de ejecución.
• Requiere soporte Hardware
• Basado en el comportamiento de los saltos anteriores.
• Varias versiones
Tratamiento de las latencias (7)
• Predictor de salto de 1 bit:
• Se tiene 1 bit indicando si el salto se tomó o no en la ocasión anterior.
• Si la predicción no se cumple se cambia el estado del bit
• Pobre desempeño cuando se cambia mucho el comportamiento de los saltos
Tratamiento de las latencias (8)
• Predictor de salto de 2 bits:• 4 Estados
posibles.
• Permite mejor acierto cuando cambia mucho el comportamiento de los saltos
Tratamiento de las latencias (9)
• Apuesta por ambas ramas (BTB):
• Apuesta al caracter repetitivo de los saltos.
• Se emplea un Branch Target Buffer asociativo (BTB). Tag es la dirección de la instrucción.
• BTB almacena instrucciones de los últimos destinos de salto (k).
• En caso de instrucción de salto en D/L, se busca dirección @(k) en el BTB
Tratamiento de las latencias (9)
• Apuesta por ambas ramas (BTB):
• Si el salto se había tomado anteriormente y instrucción destino k se encuentra en BTB, entonces tenemos un acierto (hit)
• BTB hit IR = BTB(@k) mediante un MUX y
PC = @k + 4 para cargar la siguiente.
• BTB miss IR = NOP, PC = @k, cuando se trae k, se almacena: BTB (@k, k)
• Si el salto no se había tomado anteriormente, k no se encuentra en BTB, entonces tenemos un fallo (miss)
Unidad 2: Segmentación
Contenido:
2.8 Dependencias de Control• Dependencias y Riesgos de Control
• Mejoras a nivel de Diseño
• DD en Brx tras adelantamiento
• Tratamiento de Latencias
• Datapath del DLX sin DC
Datapath del DLX Corregido
ALU
MDR
PC
MAR
IR
iCache
MDRIN
BR
Rf2 RRf1 R
A B
Inst
@Inst
Comp
0
4
MDROUT
BR
Rd Write
IR2
IR3
IR4
(offset d)
DLX Datapath - Dependencias de Control resueltas
dCache
BUS
D/L
ALU
MEM
ESC
R/W
Reloj
Reloj
Reloj
RelojReloj
Reloj Reloj
@datos
datos_out
datos_in
RelojReloj
R/W
ICache:R/W
BR:@Rf1(IR), ReadBR:@Rf2(IR), ReadCmp(IR); @Salto(IR)MuxCmp(IR, (IR3, IR3, IR4))MuxA (IR, (IR3, IR3, IR4))MuxB (IR, (IR3, IR3, IR4))MuxMDR(IR, (IR3, IR3, IR4))Ld_PC(IR, IR2)Ld_IR(IR, IR2)MuxIR(IR)MuxIR2(IR, IR2)
ALUsel(IR2)MuxMDRout(IR2, IR3)
dCache:R/W(IR3)MuxMDRin(IR3)
BR:@Rd(IR4), Write
Señales de ControlSistema de MemoriaReloj
(a, b, c)
(a, b, c)
(a, b, c) NOP
(a)
(b)
(c)
(b)
Ld_PC
Ld_IR
@salto
NOP
Nota: Los cambios respecto al DataPath con Dep. de Datos resueltas se muestran en azul fuerte
@Salto
PC d
@Salto
PC + 4
Cond
Enlaces útiles o interesantes:
Intel :. Técnicas de Predicción: http://software.intel.com/en-us/articles/branch-and-loop-reorganization-to-prevent-mispredicts/
Ejemplo real :. Caso de mala predicción: http://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array#11227902
Tesis de Juan Carlos Moure :. Mejora de prestaciones de la predicción: http://www.tdx.cat/bitstream/handle/10803/5763/jcml1de1.pdf;jsessionid=3BD18B0B782FFEE4D14DD4D1D4D6A70C.tdx2?sequence=1