unidad 2: segmentación
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/1.jpg)
Unidad 2: Segmentación
Dependencias de Control
Docente: ing. José Díaz Chow
![Page 2: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/2.jpg)
PreámbuloClases anteriores:• Procesador segmentado adelanta la
ejecución.• Dependencias inherentes al
solapamiento.• Riesgos por dependencias:
Estructurales Datos Control
![Page 3: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/3.jpg)
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.
![Page 4: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/4.jpg)
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
![Page 5: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/5.jpg)
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
![Page 6: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/6.jpg)
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
![Page 7: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/7.jpg)
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
![Page 8: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/8.jpg)
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
![Page 9: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/9.jpg)
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
![Page 10: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/10.jpg)
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
![Page 11: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/11.jpg)
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
![Page 12: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/12.jpg)
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)
![Page 13: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/13.jpg)
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
![Page 14: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/14.jpg)
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.
![Page 15: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/15.jpg)
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)
![Page 16: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/16.jpg)
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
![Page 17: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/17.jpg)
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.
![Page 18: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/18.jpg)
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
![Page 19: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/19.jpg)
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
![Page 20: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/20.jpg)
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
![Page 21: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/21.jpg)
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
![Page 22: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/22.jpg)
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
![Page 23: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/23.jpg)
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)
![Page 24: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/24.jpg)
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
![Page 25: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/25.jpg)
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
![Page 26: Unidad 2: Segmentación](https://reader036.vdocuments.co/reader036/viewer/2022062810/56815cc8550346895dcad1ff/html5/thumbnails/26.jpg)
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