Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porRamona Toro Modificado hace 9 años
1
Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow
2
Clases anteriores: Procesador segmentado adelanta la ejecución. Dependencias inherentes al solapamiento. Riesgos por dependencias: Estructurales Datos Control
4
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
5
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
6
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 - Ejemplo para 20% instrucciones de salto: r = 0.2( + 3 ) + 0.8 1.6
7
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
8
Adelantar la definición del salto a ALU. 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 - - r = 0.2( + 2 ) + 0.8 1.4
9
Adelantar la definición del salto a D/L. Requerimientos estructurales: Sumador en D/L, Comparador a D/L, quizas sea mayor. if (cond) pc = pc + d BRx ir = Mi(pc) pc = pc + 4 decodificar if = (Rf1 cmp 0) pc = pc + d - - - r = 0.2( + ) + 0.8 1.2
10
Garantizar el bloqueo para evitar inconsistencias (Interlock Hardware)
11
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
12
Los cambios estructurales de Diseño crean nuevas dependencias de datos en Brx. Instrucciones Involucradas EscenarioTratamiento 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)
13
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
14
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.
15
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)
16
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
17
Ejemplo: … 1) MUL R1, R2, R9 2) ADD R7, R1, R9 3) DIV R7, R1, R9 4) SUB R4, R4, R6 5) BRx R4, d (i) 6) MUL R5, R13, R13 (i+1) 7) SUB R12, R7, R8 8) SUB R12, R5, R6 … 9 ) SUB R12, R7, R1 (k) 10) ADD R13, R12, R5 11) ADD R6, R5, R6 … Bloque básico Bloque de ContinuaciónBloque 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.
18
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
19
Predicción del Salto: En tiempo de ejecución. Requiere soporte Hardware Basado en el comportamiento de los saltos anteriores. Varias versiones
20
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
21
Predictor de salto de 2 bits: 4 Estados posibles. Permite mejor acierto cuando cambia mucho el comportamiento de los saltos
22
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
23
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)
24
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.