Tema 6: Unidades de instrucción segmentadas Arquitectura de Computadores y Sistemas Operativos I 4º Curso Plan 96 Escuela Técnica Superior Ingenieros Telecomunicaciones DISCA Tema 6: Unidades de instrucción segmentadas 1 La ruta de datos del DLX 2 Segmentación del ciclo de instrucción 3 Riesgos estructurales 4 Riesgos de datos. 5 Riesgos de control. 6 Excepciones. 1 La ruta de datos del DLX – IF (Instruction Fetch): Fase de búsqueda. – ID (instruction Decode): Decodificación de instrucción y lectura de registros. – EX (Excution): Ejecución/Cálculo de la dirección efectiva – MEM (Memory access): Acceso a memoria/Finalización satos condicionales – WB (Write-back): Escritura en registros DISCA-3 • Subconjunto del DLX, con la instrucciones aritméticas de enteros (reg-reg y reg-inm), load-store y saltos condicionales (branch) • 5 Ciclos por instrucción: DISCA-4 1 La ruta de datos del DLX (2) 2 Segmentación del ciclo de instrucción • Iniciamos una instrucción cada ciclo de reloj • Cada uno de los 5 ciclos se convierte en una etapa 1 Ins i Ins i+1 Ins i+2 Ins i+3 3 4 5 6 7 8 ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM 9 WB DISCA-5 Ins i+4 IF 2 2 Segmentación del ciclo de instrucción DISCA-6 - Requisitos hardware 2 Segmentación del ciclo de instrucción DISCA-7 - La ruta de datos segmentada NPC NPC IR A B Imm Etapa IF ID Para todas las instrucciones IF/ID.IR ← Mem[PC]; IF/ID.NPC, PC ← (if EX/MEM.cond {EX/MEM.ALUOutput} else {PC+4}); ID/EX.A ← Regs[IF/ID.IR6..10]; ID/EX.B ← Regs[IF/ID.IR11..15]; ID/EX.NPC ← IF/ID.NPC; ID/EX.IR ← IF/ID.IR; ID/EX.Imm ← (IR16)16##IR16..31; DISCA-8 IR NPC NPC cond IR A ALUoutput B B Imm EX IR Instrucción ALU Load/Store Branch EX/MEM.IR ← ID/EX.IR; EX/MEM.ALUOutput ← (ID/EX.A func ID/EX.B o ID/EX.A op ID/EX.Imm); EX/MEM.cond ← 0; EX/MEM.IR ← ID/EX.IR; EX/MEM.ALUOutput ← ID/EX.A + ID/EX.Imm EX/MEM.ALUOutput ← ID/EX.NPC + ID/EX.Imm EX/MEM.cond ← 0; EX/MEM.B ← ID/EX.B; EX/MEM.cond ← (ID/EX.A op 0); NPC DISCA-9 IR NPC cond IR A ALUoutput B LMD B Imm MEM IR Instrucción ALU Load/Store MEM/WB.IR ← EX/MEM.IR; MEM/WB.ALUOutput ← EX/MEM.ALUOutput MEM/WB.IR ← EX/MEM.IR; (MEM/WB.LMD ← Mem[EX/MEM.ALUOutput]; o Mem[EX/MEM.ALUOutput] ← EX/MEM.B;) ALUoutput IR Branch DISCA-10 IR NPC NPC cond IR A ALUoutput B LMD B Imm WB Instrucción ALU Load/Store (Regs[MEM/WB.IR16..20] ← MEM/WB.ALUOutput; o Regs[MEM/ WB.IR11..15] ← MEM/WB.ALUOutput;) Regs[MEM/ WB.IR11..15] ← MEM/WB.LMD; IR ALUoutput IR Branch DISCA-11 IR 2 Segmentación del ciclo de instrucción • Riesgo (hazard): situación en la que no se puede continuar con la ejecución de una instrucción en la unidad segmentada. • Los riesgos se producen entre dos o más instrucciones que están presentes de forma simultánea en la unidad de instrucción segmentada. – DLX: Si dos instrucciones están distanciadas a 5 ó más ciclos no pueden producir riesgos. DISCA-12 - Riesgos 2 Segmentación del ciclo de instrucción - Riesgos (2) • Clasificación: – Estructurales – Datos – Control : Utilización del HW : Utilización de resultados previos : Instrucciones de salto • Soluciones: – Impedir que aparezca el problema evitando la generación de ciertas secuencias de instrucciones – Impedir el avance de la instrucción que origina el conflicto y de todas las que le siguen. – Modificar el hardware para resolverlos dinámicamente DISCA-13 → Modificar el compilador para insertar NOP → No puede resolver algunos riesgos estructurales 3 Riesgos estructurales • El hardware no permite todas las combinaciones posibles de las instrucciones presentes en la unidad: – Un recurso no ha sido replicado suficientemente – Procesador con antememorias únicas de instrucciones y datos. Colisión de la fase MEM de las instrucciones load/store con la IF de la instrucción a 3 de distancia. DISCA-14 • Ejemplo: DISCA-15 3 Riesgos estructurales (2) 3 Riesgos estructurales (3) • Soluciones: – Replicar el recurso para que sea posible esa combinación: • Aumento del coste • Ejemplo: Arquitectura Harvard, que utiliza antememorias de instrucciones y datos separadas. – Retrasar una de las operaciones que causa el conflicto: – La solución a elegir dependerán del porcentaje de aparición de las combinaciones que originen los riesgos estructurales DISCA-16 • Stall: Pérdida de prestaciones DISCA-17 3 Riesgos estructurales (4) DISCA-18 4 Riesgos de datos DISCA-19 4 Riesgos de datos: cortocircuito 4 Riesgos de datos: DISCA-20 cortocircuito (2) 4 Riesgos de datos: DISCA-21 cortocircuito + ciclos de espera 4 Riesgos de datos: DISCA-22 cortocircuito + ciclos de espera (2) 4 Riesgos de datos: Técnicas de compilación • Inserción de instrucciones NOP • Reorganización: Código convencional Código reorganizado LW Rb,b LW Rc,c ADD Ra,Rb,Rc LW Re,e LW Rf,f SUB Rd,Re,Rf SW a,Ra SW d,Rd LW Rb,b LW Rc,c LW Re,e ADD Ra,Rb,Rc LW Rf,f SW a,Ra SUB Rd,Re,Rf SW d,Rd DISCA-23 – Paso adicional al de la compilación estándar que garantiza que después de instrucciones Load no hayan instrucciones que lean el registro cargado. – Ejemplo: a = b+c; d = e-f; 4 Riesgos de datos: DISCA-24 Porcentaje de loads con ciclos de espera 4 Riesgos de datos: DISCA-25 Modificación de la ruta de datos 4 Riesgos de datos: Generalización de los riesgos de datos • Read After Write (RAW) – Inst-1: Escribe x – Inst-2: Lee x W R • Write After Write (WAW) – Inst-1: Escribe x – Inst-2: Escribe x IF ID EX M M WB IF ID EX WB • Write After Read (WAR) R W DISCA-26 – Inst-1: Lee x – Inst-2: Escribe x DISCA-27 5 Riesgos de control 5 Riesgos de control: Inserción de ciclos de parada • Insertamos tres ciclos de parada – Pérdida de prestaciones Salto Ins i+1 Ins i+2 Ins i+3 Ins i+4 IF 2 3 4 5 ID EX MEM WB IF stall stall IF 6 7 8 9 ID EX MEM WB IF ID EX MEM IF ID EX IF ID DISCA-28 1 5 Riesgos de control: DISCA-29 Porcentaje de instrucciones de salto 5 Riesgos de control: Predicción • Predict-not taken: – Suponer que no se salta, las tres instrucciones siguientes se toman como válidas. – Si realmente se salta: abortar las tres instrucciones – Suponer que se salta, cuando se conoce la dirección de salto se buscan las nuevas instrucciones. – Si finalmente el salto no es efectivo, se abortan. – Sólo es útil si se conoce la dirección de salto antes que la condición de salto: inútil en el DLX DISCA-30 • Predict-taken: 5 Riesgos de control: DISCA-31 Porcentaje de saltos realizados 5 Riesgos de control: Anticipación del cálculo de la dirección destino • Objetivo: – Reducir el número de ciclos comprendidos entre la IF de la instrucción de salto y la IF del destino del salto. • Modificaciones de la ruta de datos: – Trasladar el cálculo de la dirección efectiva de EX a ID: • Hace falta un sumador adicional – Trasladar la evaluación de la condición de EX a ID: • Necesitamos leer registro en primer semiciclo • Número de ciclos = 1 DISCA-32 – Actualizar el PC en la fase ID 5 Riesgos de control: Etapa IF ID Para todas las instrucciones IF/ID.IR ← Mem[PC]; IF/ID.NPC, PC ← (if (Regs[IF/ID.IR6..10] op 0) { IF/ID.NPC + (IR16)16##IR16..31} else {PC+4}); ID/EX.A ← Regs[IF/ID.IR6..10]; ID/EX.B ← Regs[IF/ID.IR11..15]; ID/EX.IR ← IF/ID.IR; ID/EX.Imm ← (IR16)16##IR16..31; DISCA-33 Anticipación del cálculo de la dirección destino 5 Riesgos de control: Salto retardado • Compilador: – Coloca tras el salto instrucciones que sean válidas tanto si se salta como si no. – Si no es posible: NOPs • Branch Delay Slot: • En el peor de los casos los mismos resultados que insertar ciclos de parada, pero sin circuitería. DISCA-34 – Número de instrucciones que hay que colocar detrás del salto. – En el DLX modificado es 1. 5 Riesgos de control: DISCA-35 Estrategias de compilación 5 Riesgos de control: Salto retardado con cancelación • Objetivo: – Eliminar las restricciones impuestas a las instrucciones que ocupan el delay slot. • Funcionamiento: – La instrucción de salto incluye también el sentido del salto elegido por el compilador – Si el salto se comporta como se predijo, simplemente se ejecutan las instrucciones del delay slot. – En caso contrario se abortan convirtiéndolas en NOP. DISCA-36 • Se utiliza un bit del formato o se añaden nuevos códigos de operación. 5 Riesgos de control: DISCA-37 Porcentaje de delay slots desperdiciados 6 Excepciones – Síncrona (la excepción ocurre siempre en el mismo lugar cada vez que se ejecuta el programa) o asíncrona (E/S). – A petición del usuario o forzada. – Enmascarable por el usuario o no. – A mitad instrucción o entre instrucciones. – Continuar o terminar el programa. DISCA-38 • Excepción, interrupción, fallo. • Clasificación: 6 Excepciones: Etapa Excepciones IF ID Fallo de página de instrucción. Acceso desalineado. Violación de protección. E/S Instrucción Ilegal. E/S EX Excepción aritmética. E/S MEM Fallo de página de datos. Acceso desalineado. Violación de protección. E/S E/S WB DISCA-39 Excepciones posibles en el DLX 6 Excepciones: Excepciones precisas – Las instrucciones anteriores a la que origina la excepción terminan correctamente – La instrucción que origina la excepción y todas las siguientes son abortadas – Tras completar la rutina de servicio se puede relanzar el programa comenzando por la instrucción que provocó la excepción • Comportamiento idéntico a no segmentado DISCA-40 • Un computador segmentado soporta excepciones precisas si: 6 Excepciones: – Forzar instrucción TRAP en el ciclo siguiente, en la etapa IF. – Impedir escritura (Mem y Regs) de la instrucción que provoca la excepción y de las posteriores (convertir en NOPs) – Guardar el PC de la instrucción que origina la excepción en un registro especial – Cuando finaliza la rutina de servicio restaurar el PC de la instrucción que originó la excepción. DISCA-41 Excepciones precisas en el DLX 6 Excepciones: Problemas con el salto retardado • Problema: – Una instrucción en el delay slot origina una excepción y el salto es efectivo. – Si guardamos el PC de esta instrucción y la abortamos junto con el resto, al volver no será efectivo el salto. – Hay que guardar dos PCs, el de la instrucción delay slot y el de la siguiente. DISCA-42 • Solución: 6 Excepciones: Excepciones múltiples • Problema: – Se pueden producir dos excepciones en el mismo ciclo de reloj en distintas unidades (MEM y EX) • Solución: DISCA-43 – Atender a la que se origina en etapa más avanzada. El resto se repetirán al devolver el contol. 6 Excepciones: Excepciones múltiples (2) • Problema: – Se pueden producir dos excepciones en el distintos ciclos de reloj, siendo primero la de la instrucción más moderna (IF y MEM) – Cuando se produce una excepción se activa un bit y se convierte en NOP la instrucción. – Cuando se llega a la última etapa, se verifica el bit y si está activo se anulan todas las instrucciones y se lanza la trap. DISCA-44 • Solución: