520 likes | 779 Views
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.
E N D
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 • 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
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
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
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
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
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
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
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
SEGMENTACIÓN DEL CAUCE • Etapas del MIPS64 12
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
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
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
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
SEGMENTACIÓN DEL CAUCE • Riesgos 17
Riesgos ¿Por qué el CPI es mayor que 1? 18 Segmentación
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
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
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
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
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
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
Riesgos de datos MIPS64 MIPS64 25 Segmentación
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
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
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
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
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
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
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
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
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
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
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
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
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
SEGMENTACIÓN DEL CAUCE • Operaciones multiciclo 39
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
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
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
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
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
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
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
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
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
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
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