1 / 50

SEGMENTACIÓN DEL CAUCE

SEGMENTACIÓN DEL CAUCE. SEGMENTACIÓN DEL CAUCE. Conceptos básicos Etapas del MIPS64 Riesgos Operaciones muticiclo. SEGMENTACIÓN DEL CAUCE. Conceptos básicos. 3. Conceptos básicos. Ciclo de Instrucción. Acceso a Memoria (PC) Actualización PC (+4). Extracción de la instrucción.

lan
Download Presentation

SEGMENTACIÓN DEL CAUCE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  4. Conceptos básicos Ciclo de Instrucció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 • Lectura o escritura Acceso a Memoria • Escritura del resultado (registro) Escritura de Registros 4 Segmentación

  5. Conceptos básicos 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 Ciclo Ciclo Ciclo Instrucción 1 Instrucción 2 Instrucción 3 Ciclo de Instrucción Alternativas de implementación: UN ÚNICO CICLO 5 Segmentación

  6. Conceptos básicos 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) Ciclo Instrucción 1 Instrucción 2 Instrucción 3 Ciclo de Instrucción Alternativas de implementación: VARIOS CICLOS 6 Segmentación

  7. Conceptos básicos Ciclo de Instrucción Determinar el CPI de una arquitectura CPI = 5*0,2 + 4*0,1 + 2*0,25 + 4*0,45 = 3,7 Segmentación

  8. Conceptos básicos ¿Cómo podemos aumentar las prestaciones de los procesadores? ¿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 • 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 Segmentación

  9. Conceptos básicos E E E E W W W W M M M M D D D D SEGMENTACIÓN ciclo Instrucción 1 Instrucción 2 F F F F Instrucción 3 Instrucción 4 Tiempo 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 Segmentación

  10. Conceptos básicos SEGMENTACIÓN Mejoras obtenidas 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 Tiempo Medio SIN segmentación SpeedUp = = Nº Etapas Tiempo Medio CON segmentación 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 • Programa formado por: • 40% inst. aritm. • 20 % inst. Salto • 40 % inst. mem. • Procesador NO SEGMENTADO • Ciclo Reloj = 1 ns. • Inst. aritm. 4 ciclos • Inst salto y mem. 5 ciclos • 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

  13. Etapas del MIPS64 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) • Cauce de 5 etapas (F, D, E, M y W) • Únicamente para datos enteros • 1 ciclo de reloj por etapa • Saltos no optimizados Segmentación

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

  16. 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 16 Segmentación

  17. SEGMENTACIÓN DEL CAUCE • Riesgos 17

  18. Riesgos ¿Por qué el CPI es mayor que 1? 18 Segmentación

  19. Riesgos Estructurales E E E E W W W W M M M M D D D D Casos Típicos Acceso simultáneo a memoria Instrucción 1 Instrucción 2 Instrucción 3 Instrucción 4 F F F F Acceso simultáneo a la ALU • 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 19 Segmentación

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

  21. Riesgos Estructurales E* E* E* E+ E+ E+ E+ E+ W W W M M M D D D 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 F add.d F3,F4,F5 F La instrucción de mayor latencia pasa primero a la etapa de memoria (M) 21 Segmentación

  22. Riesgos de Datos E E E E E E W W W W W W M M M M M M D D D D D D Read After Write (RAW) Escritura de R1 daddi R1,R0,10 daddi R2,R1,20 daddi R3,R1,30 Se lee un valor de R1 incorrecto Lectura de R1 F F F F F F Read After Read (RAR) No es un riesgo daddi R1,R0,10 daddi R2,R0,20 daddi R3,R0,30 22 Segmentación

  23. Riesgos de Datos Write After Read (WAR) dsub R1,R3,R5 daddi R2,R1,10 and R3,R4,R6 daddi R2,R1,10 dsub R1,R3,R5 and R3,R4,R6 Ejecución • Orden INCORRECTO: • Lec. R3, • Lec. R5, • Esc. R1, • Lec. R1, • Esc. R2 • Orden CORRECTO: • Lec. R1, • Esc. R2, • Lec. R3, • Lec. R5, • Esc. R1 Se da con ejecución fuera de orden (planificación dinámica) 23 Segmentación

  24. Riesgos de Datos E* E* E* E* E+ E+ W W M M D D Incorrecto Write After Write(WAW) mul.d F3,F2,F1 add.d F3,F4,F5 F F • 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 24 Segmentación

  25. Riesgos de datos MIPS64 MIPS64 25 Segmentación

  26. Riesgos de datos E E E E W W W W M M M M D D D D • 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 F F F F Opción 1 Reordenación Nuevo R1 daddi R1,R0,10 and R6,R8,R9 dsub R3,R4,R5 daddi R2,R1,20 26 Segmentación

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

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

  29. Riesgos de datos E E E W W W M M M D D D 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 nuevo R1 nuevo R2 F F F Lectura incorrecta de registros Elimina las paradas. ¿Pero que ocurre con load? 29 Segmentación

  30. Riesgos de datos E E E W W W M M M D D D D 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 nuevo R1 F nuevo R2 F F F Con instrucciones load no se eliminan por completo las paradas 30 Segmentación

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

  32. Riesgos de control E E E W M D D D El problema Salto NO TOMADO beq R1,R0,ETIQ daddi R2,R2,20 ld R8,10(R0) ETIQ: dsub R5,R5,R6 F o F Salto TOMADO F 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 32 Segmentación

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

  34. Riesgos de control E E E W M D D D 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 o F Salto TOMADO F ¿Es posible reducir todavía más la penalización? Se reduce la penalización a 1 ciclo (parada) 34 Segmentación

  35. Riesgos de control E E E W W W M M M D D D F F F Una Mejora más: Predecir el sentido 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 Continua con la instrucción siguiente • 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 35 Segmentación

  36. Riesgos de control E E E E E E W W W W W W M M M M M M D D D D D D F F F F F 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 R1 = R0 → ACIERTO beq R1,R0,ETIQ daddi R2,R2,20 ld R8,10(R0) ETIQ: dsub R5,R5,R6 and R10,R11,R12 La dirección del salto se conoce al final de D F En MIPS 64 no tiene sentido predecir “Tomar el salto” 36 Segmentación

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

  38. Riesgos de control SALTO RETARDADO MIPS64 Ejemplos de reordenación de código dadd R1,R2,R3IF R1 = 0 Hueco or R7,R8,R9 ENDIF sub R4,R5,R6 dsub R4,R5,R6 dadd R1,R2,R3 IF R1 = 0 Hueco ENDIF dadd R1,R2,R3 IF R2 = 0 Hueco ENDIF Reordenación (compilador) dadd R1,R2,R3IF R1 = 0 sub R4,R5,R6 or R7,R8,R9 ENDIF dadd R1,R2,R3 IF R1 = 0 dsub R4,R5,R6ENDIF IF R2 = 0 dadd R1,R2,R3 ENDIF 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 38 Segmentación

  39. SEGMENTACIÓN DEL CAUCE • Operaciones multiciclo 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) 40 Segmentación

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

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

  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 43 Segmentación

  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 44 Segmentación

  45. Operaciones multiciclo 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 E W M 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 W D M Riesgos Estructurales Soluciones: Detectar el problema al intentar entrar en MEM o WB y detener a la instrucción de menor latencia. Detectar y detener en ID. La solución adoptada por MIPS64 es la última 45 Segmentación

  46. Operaciones multiciclo Riesgos RAW ¡Se dan con mayor frecuencia! Sin multiciclo... dadd R1,R2,R3 nop 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 nop s.d F1,10(R4) F D +0 +1 +2 +3 M W Hay problemas F D E M W F D E M W F D E M W La solución adoptada por MIPS64 es parar en ID 46 Segmentación

  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 47 Segmentación

  48. Operaciones multiciclo Detención en ID hasta que la anterior entre en MEM. mul.d F1,F2,F3 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 La primera instrucción no escribe el resultado. 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 Riesgos WAW Soluciones: La solución adoptada por MIPS64 es la última 48 Segmentación

  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 49 Segmentación

  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 ! 50 Segmentación

More Related