unidad 2: segmentación dependencias de control docente: ing. josé díaz chow

26
Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow

Upload: ramona-toro

Post on 23-Jan-2016

221 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow

Unidad 2: Segmentación

Dependencias de Control

Docente: ing. José Díaz Chow

Page 2: 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

Page 3: Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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

Page 5: Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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

Page 8: Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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

Page 10: Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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

Page 12: Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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

Page 14: Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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

Page 25: Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow

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 Dependencias de Control Docente: ing. José Díaz Chow

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