Unidad 2: Segmentación
description
Transcript of Unidad 2: Segmentación
Unidad 2: Segmentación
Dependencias de Control
Docente: ing. José Díaz Chow
PreámbuloClases 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ónC15 - 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ónContenido:
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/LBRx i
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ónContenido:
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ónContenido:
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ónContenido:
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