La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

SEGMENTACIÓN DEL CAUCE

Presentaciones similares


Presentación del tema: "SEGMENTACIÓN DEL CAUCE"— Transcripción de la presentación:

1 SEGMENTACIÓN DEL CAUCE

2 SEGMENTACIÓN DEL CAUCE
Conceptos básicos Etapas del MIPS64 Riesgos Operaciones muticiclo

3 SEGMENTACIÓN DEL CAUCE
Conceptos básicos 3 3

4 Conceptos básicos Ciclo de Instrucción Segmentación
Acceso a Memoria (PC) Actualización PC (+4) Extracción de la instrucción Lectura de operandos (registros) Comprobación de saltos Decodificación / Lectura Registros Cálculo dirección efectiva Operación aritmética Extensión de signo Ejecución Acceso a Memoria Lectura o escritura Escritura del resultado (registro) Escritura de Registros Segmentación 4

5 Conceptos básicos Ciclo de Instrucción
Alternativas de implementación: UN ÚNICO CICLO Todas las instrucciones utilizan para su ejecución un único ciclo de reloj CPI (Clocks Per Instruction) = 1 La duración del ciclo de reloj viene determinada por la instrucción más compleja de ejecutar Aunque es un alternativa correcta es ineficiente Instrucción 1 Instrucción 2 Instrucción 3 Ciclo Segmentación 5

6 Conceptos básicos Ciclo de Instrucción
Alternativas de implementación: VARIOS CICLOS No todas las instrucciones pasan por todas las fases El ciclo de reloj se ajusta a la duración de la fase más larga CPI (Clocks Per Instruction) depende de las instrucciones y de su frecuencia de aparición en los programas Cada tipo de instrucción tiene asociada una duración (nº ciclos) Por ejemplo (suponiendo que cada fase dura 1 ciclo): La instrucción branch requiere 2 ciclos (F y D) load 5 ciclos (F, D, E, M, y W) Store 4 ciclos (F, D, E,y M) Instrucción 1 Instrucción 2 Instrucción 3 Ciclo Segmentación 6

7 Conceptos básicos Ciclo de Instrucción
Determinar el CPI de una arquitectura Instrucción Nº Ciclos Frecuencia load 5 20% store 4 10% branch 2 25% aritméticas 45% CPI = 5*0,2 + 4*0,1 + 2*0,25 + 4*0,45 = 3,7 Segmentación

8 ¿Cómo podemos aumentar las prestaciones
Conceptos básicos ¿Cómo podemos aumentar las prestaciones de los procesadores? Reduciendo el ciclo de reloj Reduciendo el CPI En arquitecturas con más de un ciclo de reloj por instrucción El CPI ya es igual a 1 en arquitecturas de un único ciclo O … reduciendo ambos ¿Alternativas? Circuitos más rápidos, pero ¿precio? ¿limites físicos? … Explotar la concurrencia a nivel del procesador: Arquitecturas Paralelas Explotar el paralelismo a nivel de las instrucciones: SEGMENTACIÓN Segmentación

9 Conceptos básicos SEGMENTACIÓN Segmentación
Técnica que permite solapar en el tiempo la ejecución de varias instrucciones La idea está tomada del concepto “cadena de montaje” La ejecución de la instrucción se divide en etapas de igual duración (ciclo de reloj) La duración del ciclo de reloj lo fija la etapa más “lenta” Cada etapa dispone de recursos (hardware) para realizar su cometido No visible al programador Todas las instrucciones pasan por todas las etapas ciclo F D E M W Instrucción 1 Instrucción 2 Instrucción 3 Instrucción 4 Tiempo Segmentación

10 Conceptos básicos SEGMENTACIÓN Mejoras obtenidas Segmentación
Productividad: nº de instrucciones finalizadas por unidad de tiempo T instrucción: Duración de la ejecución de la instrucción Ciclo Reloj: Lo fijan la duración de las etapas, generalmente toma el valor 1 Segmentación

11 Conceptos básicos Rendimiento SpeedUp = Segmentación
Tiempo Medio SIN segmentación Tiempo Medio CON segmentación = Nº Etapas Rendimiento En condiciones ideales CPI = 1 En cada ciclo de reloj finaliza una instrucción (cadena de montaje) En ejecución tantas instrucciones como nº de etapas Rendimiento: Ejemplo Procesador NO SEGMENTADO Ciclo Reloj = 1 ns. Inst. aritm. 4 ciclos Inst salto y mem. 5 ciclos Programa formado por: 40% inst. aritm. 20 % inst. Salto 40 % inst. mem. Procesador SEGMENTADO 5 etapas Añadir 0,2 ns. por etapa Tiempo Medio Ejecución NO SEGMENTADO = (0,4+0,2)*5 + 0,4*4)= 4,6 ns Tiempo Medio Ejecución SEGMENTADO = 1 ns + 0,2 ns (retardo por etapa) = 1,2 ns SpeedUp = 4,6 / 1.2 = 3,83 veces Segmentación

12 SEGMENTACIÓN DEL CAUCE
Etapas del MIPS64 12 12

13 Etapas del MIPS64 Cauce de 5 etapas (F, D, E, M y W)
Únicamente para datos enteros 1 ciclo de reloj por etapa Saltos no optimizados Extracción / Fetch (F) IR ← MEM [PC] NPC ← PC + 4 # El tamaño de la instrucción es 4 octetos Decodificación (D) A ← Registros [rs] B ← Registros [rt] # Revisar el formato de las instr. Inm ← extensión_signo (campo Inm 16 bits) Segmentación

14 Etapas del MIPS64 Segmentación Ejecución (E) Write-Back(W)
Referencia a memoria (tipo I) ALUoutput ← A + Inm Instrucción aritmética tipo R Registros[rd] ← ALUoutput Instrucción aritmética tipo R ALUoutput ← A op B Instrucción aritmética tipo I Registros[rt] ← ALUoutput Instrucción aritmética tipo I ALUoutput ← A op Inm Acceso a memoria (load) Registros[rt] ← LMD Salto (tipo J) ALUoutput ← NPC + Inm * 4 Cond ← ( A = 0) # boolean Memoria (M) Acceso a memoria LMD ← MEM [ALUoutput] # load MEM [ALUoutput] ← B # store Salto If (Cond) then PC ← ALUoutput Segmentación

15 Memoria de Instrucciones
Etapas del MIPS64 Memoria de Instrucciones Registros Memoria de Datos PC Inm LMD ALU output A B NPC IR Zero? Cond MUX EXT Signo Add 4 Extracción (F) Decodificación (D) Ejecución (E) Memoria (M) Write (W) 16 32 Segmentación 15

16 Características de la implementación
Etapas del MIPS64 Características de la implementación En condiciones ideales CPI = 1 La duración de las instrucciones es 5 ciclos Dispone de 2 memorias (instrucciones y datos) Cada etapa tiene dos subciclos Lectura registros en el 2º de la etapa D Escritura de registros en el 1º de la etapa W En las instrucciones de salto la actualización de PC se hace en M Necesita mejorarse este esquema Cada etapa tiene una serie de registros para comunicarse información (F/D, D/E, E/M y M/W) Faltan las señales del control del cauce Segmentación 16

17 SEGMENTACIÓN DEL CAUCE
Riesgos 17 17

18 ¿Por qué el CPI es mayor que 1?
Riesgos ¿Por qué el CPI es mayor que 1? Riesgos (detienen el cauce) Estructurales De datos De control Segmentación 18

19 Riesgos Estructurales
Casos Típicos Falta de recursos en el procesador: accesos a una única memoria o ALU Unidades funcionales no segmentadas Las instrucciones se detienen más de 1 ciclo en ellas Acceso simultáneo a memoria Instrucción 1 F D E M W Instrucción 2 F D E M W Instrucción 3 F D E M W Instrucción 4 F D E M W Acceso simultáneo a la ALU Segmentación 19

20 Riesgos Estructurales
Casos Típicos Falta de recursos en el procesador: acceso al banco de registros de una sola puerta Instrucción 1 F D1 D2 E M W1 W2 Instrucción 2 F D1 D2 E M W1 W2 Instrucción 3 F D1 D2 D1 D2 E M W1 W2 Instrucción 4 F D1 D2 E M W1 W2 Escritura 1º subciclo Lectura 2º subciclo Segmentación 20

21 Riesgos Estructurales
Casos Típicos Falta de recursos en el procesador: Acceso a memoria: ejecución instrucciones multiciclo Dos unidades funcionales Multiplicación: 3 ciclos Suma: 2 ciclos mul.d F3,F2,F1 add.d F3,F4,F5 F D E* E* E* M W F D E+ E+ M W add.d F3,F4,F5 F D E+ E+ E+ M W La instrucción de mayor latencia pasa primero a la etapa de memoria (M) Segmentación 21

22 Se lee un valor de R1 incorrecto
Riesgos de Datos De dos tipos Introducidos por la lógica del programa Debidos al funcionamiento del procesador Read After Write (RAW) Escritura de R1 daddi R1,R0,10 daddi R2,R1,20 daddi R3,R1,30 F D E M W F D E M W F D E M W Se lee un valor de R1 incorrecto Lectura de R1 Read After Read (RAR) No es un riesgo daddi R1,R0,10 daddi R2,R0,20 daddi R3,R0,30 F D E M W F D E M W F D E M W Segmentación 22

23 Se da con ejecución fuera de orden (planificación dinámica)
Riesgos de Datos De dos tipos Introducidos por la lógica del programa Debidos al funcionamiento del procesador Write After Read (WAR) daddi R2,R1,10 dsub R1,R3,R5 and R3,R4,R6 dsub R1,R3,R5 daddi R2,R1,10 and R3,R4,R6 Ejecución Orden CORRECTO: Lec. R1, Esc. R2, Lec. R3, Lec. R5, Esc. R1 Orden INCORRECTO: Lec. R3, Lec. R5, Esc. R1, Lec. R1, Esc. R2 Se da con ejecución fuera de orden (planificación dinámica) Segmentación 23

24 Riesgos de Datos Segmentación Incorrecto
De dos tipos Introducidos por la lógica del programa Debidos al funcionamiento del procesador Incorrecto Write After Write(WAW) mul.d F3,F2,F1 add.d F3,F4,F5 F D E* E* E* E* M W F D E+ E+ M W Dos unidades funcionales Multiplicación: 4 ciclos Suma: 2 ciclos Se da con ejecución fuera de orden (planificación dinámica) y en instrucciones multiciclo Segmentación 24

25 Soluciones Riesgos RAW
Riesgos de datos Soluciones Riesgos RAW Software Hardware Detección y parada del cauce Detección, parada del cauce y anticipación Reordenación de código Inserción de NOP’s MIPS64 MIPS64 Segmentación 25

26 Soluciones Riesgos RAW
Riesgos de datos Soluciones Riesgos RAW SOFTWARE HARDWARE La implementa el compilador, sin intervención del procesador Retrasar la etapa D (lectura) de la instrucción con el riesgo Reordenación No siempre es posible una reordenación de código and R6,R8,R9 daddi R1,R0,10 daddi R2,R1,20 dsub R3,R4,R5 Opción 1 Reordenación Nuevo R1 daddi R1,R0,10 and R6,R8,R9 dsub R3,R4,R5 daddi R2,R1,20 F D E M W Segmentación 26

27 Soluciones Riesgos RAW
Riesgos de datos Soluciones Riesgos RAW SOFTWARE HARDWARE Inserción de NOPs Nuevo R1 daddi R1,R0,10 nop daddi R2,R1,20 F D E M W F D E M W Opción 2 F D E M W F D E M W Con instrucciones multiciclo es necesario insertar más NOP Problemas: Tamaño código Ineficiente Segmentación 27

28 Soluciones Riesgos RAW
Riesgos de datos Soluciones Riesgos RAW SOFTWARE HARDWARE La implementa el procesador (más complicado) Para la instrucción (riesgo) en la etapa D (lectura) del cauce Detección y parada de cauce MIPS64 daddi R1,R0,10 daddi R2,R1,20 dsub R5,R5,R6 F D E M W F D D D E M W F F F D E M W El tiempo de ejecución es idéntico al de la solución con inserción de NOPs Segmentación 28

29 Soluciones Riesgos RAW
Riesgos de datos Soluciones Riesgos RAW SOFTWARE HARDWARE Detección y anticipación MIPS64 Técnica para pasar información entre diferentes etapas daddi R1,R0,10 daddi R2,R1,20 dsub R5,R2,R6 F D E M W nuevo R1 F D E M W nuevo R2 F D E M W Lectura incorrecta de registros Elimina las paradas. ¿Pero que ocurre con load? Segmentación 29

30 Soluciones Riesgos RAW
Riesgos de datos Soluciones Riesgos RAW SOFTWARE HARDWARE Detección y anticipación MIPS64 Anticipación con instrucciones load (lectura de memoria) ld R1,0(R0) daddi R2,R1,20 dsub R5,R2,R6 F D E M W nuevo R1 F D D E M W nuevo R2 F F D E M W Con instrucciones load no se eliminan por completo las paradas Segmentación 30

31 Soluciones Riesgos RAW
Riesgos de datos Soluciones Riesgos RAW SOFTWARE HARDWARE Tipos de adelantamiento MIPS64 1 E 2 E 3 E M D E daddi R1,R2,10 beq R1,R0,ETIQ daddi R1,R0,10 daddi R2,R1,20 daddi R1,R0,10 sd R1,0(R15) 4 M 5 M 6 M M D E ld R1,10(R8) beq R1,R0,ETIQ ld R1,10(R8) daddi R2,R1,5 ld R1,0(R10) sd R1,10(R8) Segmentación 31

32 El problema Riesgos de control
Salto NO TOMADO beq R1,R0,ETIQ daddi R2,R2,20 ld R8,10(R0) ETIQ: dsub R5,R5,R6 F D E M W F D E o F D E Salto TOMADO Ante un salto hay que parar hasta conocer la dirección destino Provocan paradas del cauce (3 ciclos) Degradan el rendimiento entre un 10% y 30% dependiendo de la frecuencia de los saltos Se puede reducir la penalización a 1 ciclo Segmentación 32

33 Memoria de Instrucciones
Riesgos de control Una Mejora: Hacer efectivos los saltos en D 4 Add Add MUX Zero? Registros MUX A ALU output IR ALU PC Memoria de Instrucciones B LMD MUX Memoria de Datos MUX EXT Signo 32 Inm 16 Extracción (F) Decodificación (D) Ejecución (E) Memoria (M) Write (W) Segmentación 33

34 ¿Es posible reducir todavía más la penalización?
Riesgos de control Una Mejora: Hacer efectivos los saltos en D Salto NO TOMADO beq R1,R0,ETIQ daddi R2,R2,20 ld R8,10(R0) ETIQ: dsub R5,R5,R6 F D E M W F D E o F D E Salto TOMADO Se reduce la penalización a 1 ciclo (parada) ¿Es posible reducir todavía más la penalización? Segmentación 34

35 Riesgos de control Una Mejora más: Predecir el sentido del salto
Cada vez que aparezca un salto evitar la parada Utilizar un mecanismo de predicción de salto: estático: Tomar el salto o no estático + compilador: predicción en el código de operación (1 bit) dinámico: el procesador tiene en cuenta la “historia” del salto Predicción estática NO TOMAR EL SALTO MIPS64 R1 ≠ R0 → ACIERTO beq R1,R0,ETIQ daddi R2,R2,20 ld R8,10(R0) ETIQ: dsub R5,R5,R6 F D E M W F D E M W F D E M W Continua con la instrucción siguiente Segmentación 35

36 Riesgos de control Predicción estática NO TOMAR EL SALTO R1 = R0 → FALLO Abortar la instrucción. Penalización de 1 ciclo beq R1,R0,ETIQ daddi R2,R2,20 ld R8,10(R0) ETIQ: dsub R5,R5,R6 and R10,R11,R12 F D E M W F F D E M W F D E M W En MIPS 64 no tiene sentido predecir “Tomar el salto” R1 = R0 → ACIERTO beq R1,R0,ETIQ daddi R2,R2,20 ld R8,10(R0) ETIQ: dsub R5,R5,R6 and R10,R11,R12 F D E M W La dirección del salto se conoce al final de D F D E M W F D E M W Segmentación 36

37 Riesgos de control Implementado por:
SALTO RETARDADO MIPS64 Implementado por: el procesador retardando el efecto del salto y el compilador insertando instrucciones que se ejecutan siempre R1 ≠ R0 → ACIERTO beq R1,R0,ETIQ daddi r0,r0,0 daddi R2,R2,20 ETIQ: dsub R5,R5,R6 F D E M W F D E M W F D E M W R1 = R0 → FALLO beq R1,R0,ETIQ daddi r0,r0,0 daddi R2,R2,20 ETIQ: dsub R5,R5,R6 F D E M W F D E M W F D E M W Segmentación 37

38 Riesgos de control En MIPS64 el salto retardado es de 1 hueco
Si el cálculo de la dirección efectiva se realizase en la etapa M, los huecos serían 3. Cuándo no se encuentran instrucciones para los huecos se insertan NOP´s Ejemplos de reordenación de código dadd R1,R2,R3 IF R1 = 0 Hueco or R7,R8,R9 ENDIF sub R4,R5,R6 dadd R1,R2,R3 IF R2 = 0 Hueco ENDIF dsub R4,R5,R6 dadd R1,R2,R3 IF R1 = 0 Hueco ENDIF Reordenación (compilador) dadd R1,R2,R3 IF R1 = 0 sub R4,R5,R6 or R7,R8,R9 ENDIF dadd R1,R2,R3 IF R1 = 0 dsub R4,R5,R6 ENDIF IF R2 = 0 dadd R1,R2,R3 ENDIF Segmentación 38

39 Operaciones multiciclo
SEGMENTACIÓN DEL CAUCE Operaciones multiciclo 39 39

40 Operaciones multiciclo
Instrucciones en coma flotante Nuestro cauce no soporta operaciones en coma flotante Sumas, multiplicaciones y divisiones es imposible que terminen en 1 o 2 ciclos Las instrucciones en coma flotante pueden ir desde una negación (un par de ciclos) hasta una raíz cuadrada (más de un centenar) Soluciones Adaptar el ciclo de reloj a la instrucción más lenta Repetir la etapa EX tantas veces como sea necesario Añadir nuevas unidades funcionales (segmentadas o no) Las dos primeras soluciones no son prácticas (rendimiento) Segmentación 40

41 Operaciones multiciclo
Nuevo cauce con soporte en coma flotante E Unidad de enteros ADD Unidad de suma FP F D M W MUL Unidad de multiplicación FP/Integer DIV Unidad de división FP/Integer NO SEGMENTADA Segmentación 41

42 Operaciones multiciclo
Operaciones enteras con ALU, Load, Store y Saltos E ADD Sumas, Restas y Conversiones en FP MUL Multiplicación de Enteros y FP DIV División de Enteros y FP Segmentación 42

43 Operaciones multiciclo
Riesgos Estructurales Acceso a la U.F. de división: div.d F1,F2,F3 div.d F4,F5,F6 F D /0 /1 /2 /22 /23 M W F D /0 /1 /2 /22 /23 M W Solución: Parar en ID. div.d F1,F2,F3 div.d F4,F5,F6 F D /0 /1 /2 /22 /23 M W F D D D D D /0 /1 /2 Segmentación 43

44 Operaciones multiciclo
Riesgos Estructurales Acceso a memoria o al banco de registros: add.d F1,F2,F3 daddi R1,R2,5 ld R3,10(R0) ld R4,20(R0) F D +0 +1 +2 +3 M W F D E M W F D E M W F D E M W Segmentación 44

45 Operaciones multiciclo
Riesgos Estructurales Soluciones: Detectar el problema al intentar entrar en MEM o WB y detener a la instrucción de menor latencia. add.d F1,F2,F3 daddi R1,R2,5 ld R3,10(R0) ld R4,20(R0) F D +0 M W +1 +2 E +3 Detectar y detener en ID. add.d F1,F2,F3 daddi R1,R2,5 ld R3,10(R0) ld R4,20(R0) F D +0 M W +1 +2 E +3 La solución adoptada por MIPS64 es la última Segmentación 45

46 Operaciones multiciclo
Riesgos RAW ¡Se dan con mayor frecuencia! Sin multiciclo... dadd R1,R2,R3 nop sd R1,10(R4) F D E M W Sin problemas F D E M W F D E M W F D E M W Con multiciclo... add.d F1,F2,F3 nop s.d F1,10(R4) F D +0 +1 +2 +3 M W F D E M W Hay problemas F D E M W F D E M W La solución adoptada por MIPS64 es parar en ID Segmentación 46

47 Operaciones multiciclo
Riesgos WAW mul.d F1,F2,F3 add.d F1,F4,F5 F D *0 *1 *2 *3 *4 *5 *6 M W F D +0 +1 +2 +3 M W Si hay una lectura del registro entre ambas instrucciones, desaparece el riesgo. mul.d F1,F2,F3 sub.d F6,F7,F1 add.d F1,F4,F5 F D *0 *1 *2 *3 *4 *5 *6 M W F D D D D D D D -0 -1 -2 -3 M W F F F F F F F D +0 +1 +2 +3 M W Segmentación 47

48 Operaciones multiciclo
Riesgos WAW Soluciones: La primera instrucción no escribe el resultado. mul.d F1,F2,F3 add.d F1,F4,F5 F D *0 M W *1 *2 *3 +0 +1 +2 +3 *4 *5 *6 Detención en ID hasta que la anterior entre en MEM. mul.d F1,F2,F3 add.d F1,F4,F5 F D *0 M W *1 *2 *3 +0 +1 +2 +3 *4 *5 *6 La solución adoptada por MIPS64 es la última Segmentación 48

49 Operaciones multiciclo
Riesgos WAR ¡ No se producen ! Los registros se leen en ID mul.d F1,F2,F3 add.d F3,F4,F5 F D *0 *1 *2 *3 *4 *5 *6 M W F D +0 +1 +2 +3 M W Segmentación 49

50 Operaciones multiciclo
Riesgos de Control Se presentan los mismos casos, pero hay que tener en cuenta que, si se usa salto retardado, no tiene sentido rellenar el hueco con una instrucción multiciclo. Interrupciones ¡ Se complica su tratamiento ! Segmentación 50


Descargar ppt "SEGMENTACIÓN DEL CAUCE"

Presentaciones similares


Anuncios Google