A Arquitectura it t de d Computadores C t d Tema 3 S Segmentación ió (Pipelining) ( i li i ) 1 Índice Segmentación Riesgos (Hazards) Forwarding Implementación del pipelining Tratamiento de las interrupciones Complicaciones del Repertorio de Instrucciones E Extensiones i para M Multiciclo li i l 1. 2. 3. 4. 5 5. 6. 7. 2 Pipelining Técnica de implementación por la que varias i instrucciones i se superponen en ejecución j ió Se aprovecha el paralelismo inherente en la instrucción E la Es l técnica é i más á importante i en la l actualidad lid d para mejorar el rendimiento de un procesador Consiste en dividir la ruta de datos en etapas Operan en paralelo Cada etapa ejecuta una instrucción Pipe stage Pipe segment Etapa Segmento 3 Rendimiento de un pipe-line pipe line ¿Cuanto tarda una instrucción en recorrer el pipe? Nº de Etapas Ciclo del procesador Ci l d Ciclo dell procesador d Tiempo que tarda una instrucción en pasar de una etapa a otra Normalmente un ciclo A veces dos ciclos Raramente + de 2 ciclos (Sin operaciones segmentadas) El diseñador debe buscar el equilibrio entre la longitud de las etapas Rendimiento Ideal 4 Tiempo p ppor instrucción (p (pipeline)=Tiempo p ) p ppor instrucción/(Nº ( Etapas p ppipeline) p ) Ventajas Reducción de CPI Se pasa por las mismas etapas La ejecución de la siguiente instrucción comienza antes No ideal Paradas Ri Riesgos Reducción del ciclo de Reloj Equilibrio E ilib i en lla d duración ió Mayor posibilidad de optimización de cada etapa N es visible No i ibl all programador d 5 Instrucciones RISC Características básicas de un ISA RISC Todas T d las l operaciones i de d datos d t operan entre t registros it Reducción de las operaciones intermedias por no acceder a la memoria Solo Load/Store acceden a memoria Pocas instrucciones Pocos formatos MIPS64 32 Registros g de propósito p p general g 3 clases de instrucciones 6 R0 = 0 ALU Load / Store Branch and Jump Fases de la Instrucción IF 1. Instruction Fetch: Búsqueda de la Instrucción • (PC)Adress Mem(Mem (PC))RI ID 2. Intruction Decoding: Decodificación de la Instrucción • Lectura de Registros EX 3. Execution: Ejecución de la instrucción • ALU Cálculo de la dirección efectiva Operaciones p Regg – Regg Opereciones Reg – Inmediato MEM 4. Memoryy Access: Acceso de Memoria • WB 5. Write Back : Escritura • Escritura de resultados 7 CPI CPI: Ciclos por Instrucción Branch Store / Load 2 ciclos Frecuencia 12 % 4 ciclos Frecuencia 10% Resto 5 ciclos Frecuencia 78 % CPI = 4.5 = 2*0.12 + 4*0.10 + 5*0.78 8 Ciclos promedio por instrucción Pipelining Idea: Comenzar una instrucción en cada ciclo Nº Instr 1 2 3 4 5 i IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM i+1 i+2 Ciclo de Reloj i+3 i+4 6 9 Aspectos a considerar Que pasa en cada ciclo Está ocupado el camino de datos? Está ocupada la parte que quiero usar? Hay recursos? Ocupación de los buses? Soluciones básicas + Hardware Modificaciones al control Incremento de registros 10 Información del pipeline 7 8 9 WB Aspectos p básicos del Rendimiento Pipe M j Mejora ell Rendimiento R di i Reduce el tiempo de ejecución total Tiempo de cpu de cada instrucción no se modifica Problemas Desequilibrio entre etapas e instrucciones Clock Skew Sobrecarga Ejemplo sin pipe Tciclo CPI Speed-up con pipe 1 ns 1.2 ns 4.5 1 (ideal) 4.5/1.2 = 3.75 11 Índice 1. 2. 3. 4. 5 5. 6. 7. Segmentación Riesgos (Hazards) Forwarding Implementación del pipelining Tratamiento de las interrupciones Complicaciones del Repertorio de Instrucciones E Extensiones i para M Multiciclo li i l 12 Riesgos (Hazards) El mayor problema de la segmentación 3 tipos i Estructurales Datos Dependencia con instrucciones anteriores Control Conflicto de Recursos Decisión en los saltos y bifurcaciones Hazard: Situación que impide la ejecución de la siguiente instrucción Provoca una parada en el pipe Se ejecuta lo que quedaba Se elimina lo posterior Degrada el Rendimiento 13 Degradación g del Rendimiento Rdto del Pipe con Paradas (Stalls) Speed Up TPI sin pipe TPI con pipe CPI Tciclo TPI TPI p CPI p Tciclo p CPI p CPI ideal CPPI CPI ideal 1 CPPI Ciclos de Parada del Pipe por Instrucción Suponiendo Equilibrio Completo y sobrecarga nula Speed Up CPI 1 CPPI Si CPI = nº de etapas del pipe (segmentos) para todas las instrucciones Speed Up 14 N º Segmentos 1 CPPI Degradación del Rendimiento Speed Up T CPI Tciclo 1 ciclo CPI p Tciclo p 1 CPPI Tciclo p Speed Up 1 N º Etapas pipe 1 CPPI 1 15 Hazars estructurales Una combinación de instrucciones no se puede ejecutar por un conflicto de recursos Hardware Implica la parada de la instrucción Se crea una “burbuja” Se crea un hueco en el pipe Ejemplo con memoria única de datos e instrucciones STOP Nº Instr 1 2 3 4 5 i IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB STOP STOP STOP IF i+1 i+2 i+3 i+4 16 Ci l de Ciclo d Reloj R l j 6 7 8 9 10 ID EX MEM Riesgos estructurales Ejemplo Memoria única i+1 3 Reg Mem i+2 4 5 6 Mem Reg Reg Mem Mem Reg Mem Reg Mem Reg i+3 i+4 7 8 9 10 Reg Mem Reg Mem Reg ALU Mem 2 A ALU 1 AL LU i Ciclo de Reloj ALU Nº Instr ALU Mem Reg 7 8 9 17 Riesgos estructurales Ejemplo Memoria única i+3 3 Reg Mem 4 5 Mem Reg Reg Mem Mem Reg 6 Reg Mem Reg Mem Reg Mem Reg i+4 18 10 Mem R ALU A i+2 Mem 2 ALU A i+1 1 AL LU i Ciclo de Reloj ALU Nº Instr ALU M CC2 CC3 CC4 CC5 DADD R1,R2, R3 Mem Reg Mem Reg DSUB R4,R1, R5 Mem Reg ALU U Mem Reg AL LU Mem Reg g OR R8,R1, R9 Mem CC7 CC8 CC9 CC10 Re g Mem Reg ALU A , , R7 AND R6,R1, CC6 XOR R10,R1, R11 Mem Mem Reg g Re g ALU CC1 ALU Hazards de datos Mem 19 Hazards de Control Si un salto cambia el PC Salto tomado (taken branch) PC no cambia hasta después de la fase de ID Solución Básica: Repetir IF de la instrucción siguiente al BRANCH Es una parada pero evita la propagación Nº Instr 1 2 3 4 5 i IF ID EX MEM WB IF ID EX MEM WB IF IF ID IF BRANCH i+2 i+3 i+4 20 Ci l de Ciclo d Reloj R l j 6 7 8 9 EX MEM WB ID EX MEM WB IF ID EX MEM 10 WB Reg Reducción de las penalizaciones por salto Soluciones simples en tiempo de compilación 1. FLUSH or FREEZE Repetir o borrar cualquier instrucción después del salto hasta c n cer el destino conocer destin del mism mismo 2. Simple a nivel HW y SW ALL NOT TAKEN Tratar todos los saltos como no tomados Se continúa la ejecución y si se toma se ignoran las fases correspondientes Algo más complejo 21 ALL NOT TAKEN Nº Instr Salto no Tomado ( i ) Ciclo de Reloj 1 2 3 4 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF i+1 i 2 i+2 i+3 6 7 8 9 ID EX MEM WB i+4 IF ID EX MEM WB Nº Instr Ciclo de Reloj 6 7 8 9 Salto Tomado ( i ) i+1 Branch Target Branch Target + 1 Branch Target + 2 22 5 1 2 3 4 IF ID EX IF IDLE ID IDLE EX IF MEM 5 WB IDLE MEM IDLE WB ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB Reducción de las penalizaciones por salto 3. ALL TAKEN 4 4. Tratar todos los saltos como tomados No tiene sentido para este pipeline BRANCH DELAY SLOT Se retarda una instrucción el salto El compilador debe buscar que el sucesor secuencial sea siempre válido Branch instruction Sucesor secuencial 1 Objetivo si el salto es tomado 23 Salto Retardado Nº Instr Salto no Tomado ( i ) Ciclo de Reloj 1 2 3 4 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF Branch Delay (i+1) i 2 i+2 i+3 6 7 8 9 ID EX MEM WB i+4 IF ID EX MEM WB Nº Instr Ciclo de Reloj 6 7 8 9 Salto Tomado ( i ) Branch Delay (i+1) Branch Target Branch Target + 1 Branch Target + 2 24 5 1 2 3 4 5 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB Efectos en el Rendimiento Aspectos a considerar Frecuencia de los Saltos Penalización por saltos Tipo de saltos Condicionales N condicionales No di i l Los más frecuentes Speed Up pipeline l Nº Etapas 1 Ciclos de parada por saltos Nº Etapas p 1 frecsaltos Penalsaltos 25 Índice 1. 2. 3. 4. 5 5. 6. 7. Segmentación Riesgos (Hazards) Forwarding Implementación del pipelining Tratamiento de las interrupciones Complicaciones del Repertorio de Instrucciones E Extensiones i para M Multiciclo li i l 26 Forwarding El resultado estás disponible después de EXE CC 2 CC 3 Mem Reg DSUB R4,R1, R5 Mem AND R6,R1, R6 R1 R7 Reg Mem CC 4 CC 5 Mem Re g Mem Reg Mem Reg CC 6 CC 7 CC 8 CC 9 CC10 Aquí se necesita Re g Mem ALU OR R8,R1, R9 XOR R10,R1, R11 Re g Mem Reg Mem ALU DADD R1,R2, R3 CC 1 Aquí se produce ALU U Podemos adelantar el resultado Bypassing o cortocircuito ALU ALU Reg Mem Reg 27 CC1 CC2 CC3 CC4 CC5 DADD R1,R2, R3 Mem Reg ALU Mem Reg DSUB R4,R1, R5 Mem Reg ALU U Mem Reg AL LU Mem Reg g ALU A Mem Mem Re g ALU Forwarding , , R7 AND R6,R1, OR R8,R1, R9 XOR R10,R1, R11 28 Mem CC6 CC7 CC8 CC9 Re g Mem Reg Reg g Mem Reg CC10 CC1 CC2 CC3 CC4 CC5 DADD R1,R2, , , R3 Mem Reg g A ALU Mem Reg g LD R4,0(R1) Mem Reg ALU Forwarding Mem Reg Mem Re g ALU SD R4, 12 (R1) CC6 Mem Reg 29 OR R8,R1, R9 30 CC4 CC5 Mem Reg Mem Reg Mem Reg Mem Reg Mem Mem Reg ALU AND R6,R1, R7 CC3 ALU DSUB R4,R1, R5 CC2 ALU LD R1,0(R2) , ( ) CC1 A ALU Algunos Riesgos no se solucionan Mem CC6 Re g Reg Mem Reg Índice 1. 2. 3. 4. Segmentación Riesgos (Hazards) Forwarding Implementación del pipelining 1. 2. 3. 4 4. 5. 6 6. 7. Modificaciones al cauce no segmentado Implementación del control Implementación del forwarding Dificultades Tratamiento de las interrupciones Complicaciones del Repertorio de Instrucciones Extensiones para Multiciclo 31 Implementación del Pipelining Se parte de la implementación del MIPS 32 Registros entre etapas Implementación del Pipelining 33 Eventos en cada etapa del pipe 34 Implementación del control Detección y resolución de riesgos Comparación de registros 35 Implementación del control Detección y resolución de riesgos 36 Comparación de registros Implementación Detección de las paradas por Load en ID Requiere 3 comparaciones 31 p R: Tipo Tipo I: 31 Tipo J: 6 bits 26 op con memoria salto condicional salto incondicional 26 op aritmético-lógicas 31 6 bits 26 op 6 bits 21 rs 5 bits 21 rs 5 bits 16 rt 5 bits 16 11 rd 5 bits 6 shamt 5 bits 0 funct 6 bits 0 inmediato rt 5 bits 16 bits 0 dirección 26 bits 37 Implementación del Forwarding 38 Implementación del Forwarding 39 Diseño del control Ejecución de instrucciones: diagrama RT IR <- Mem[PC]; PC <– PC+4; A <- R[rs]; B<– R[rt] Tipo R S <– A funct B; R[rd] <– S; Lw S <– A + SigExt( Inme); M <– Mem[S] [ ] R[rd] <– M; Sw Beq S <– A + SigExt( Inme); Mem[S] [ ] <- B • If Cond PC < <– PCSalto Recordatorio 40 Evaluar E l Cond C d PCSalto <– PC+SX rs = Ins[25-21] I [25 21] rt = Ins[20-16] rd = Ins[15-11] Inme = Ins[15-0] Ins[15 0] Diseño del control Las instruciones: Load (lw) y tipo-R Load. Tiene 5 fases y cada una utiliza una de las etapas Ciclo 1 Ciclo2 Ciclo 3 Ciclo4 Ciclo5 Clock lw Ifetch Reg/Dec Ejecu Mem Escri lw Ifetch Reg/Dec Ejecu Mem Escri Tipo-R. p Tiene 4 fases y no usa la memoria de datos Ciclo 1 Ciclo2 Ciclo 3 Ciclo4 Clock Tipo-R Ifetch Conflicto Reg/Dec Ciclo 1 Ciclo2 Ifetch Ejecu Escri Ciclo 3 Ciclo4 Ciclo5 Reg/Dec Ejecu Mem Escri Ifetch Reg/Dec Ejecu Escri Clock lw Tipo-R Solo una puerta en el bloque de registros 41 Diseño del control Importante. ¿ como evitarlo ? Cada etapa p del pprocesador ppuede usarse en cada ciclo ppor una sola instrucción. Cada instrucción debe usar cada etapa del procesador en la misma fase de ejecución. Solución. I t d i una etapa Introducir t (Mem) (M ) que no hace h nada. d Ciclo 1 Ciclo2 Ciclo 3 Ciclo4 Ifetch Ciclo5 Reg/Dec Ejecu Mem Escri Ifetch Reg/Dec Ejecu Mem Ciclo6 Clock lw Tipo-R Escri • Store 4 etapas con actividad. Branch cuatro etapas activas Ciclo 1 Ciclo2 Ifetch Reg/Dec Ciclo 3 Ciclo4 Ciclo5 Ejecu Mem Escri Sw Beq Clock Sw, Beq 42 Diseño del control Ejecución de instrucciones: Diagrama RT modificado IR <- Mem[PC]; PC <– PC+4; A <- R[rs]; B<– R[rt] Tipo R Lw Sw S <– A + SigExt( Inme); S <– A funct B; M <– S M <– Mem[S] R[rd] <– M; R[rd] <– M; Beq Evaluar Cond PCSalto <– PC+SX S <– A + SigExt( Inme); If Cond PC <– PCSalto Mem[S] <- B 43 Ruta de d d datos d dell DLX con llas ordenes d d de controll necesarias i MU UX 0 PcSrc ID/EX Reg Write EX/MEM Branch MemWrite Zero AluScr 0 busW ADDR ALUctr 1 DR Ins. [20-16] Ins. [15-11] Control C ALU Ins. [15-0] 6 MUX El Pc y los diferentes registros g de desacoplo p (IF/ID ..) se deben cargar en cada ciclo, por tanto no necesitan orden especifica Ex xtensión de e signo DW 3 MemRead ALUop Reg Dst 44 0 MUX busB Me emoria datos d RW MUX M DR MentoReg busA ALU RB Banco d de registros s Memoria es instruccione PC RA ADDR MEM/WB <<2 Sum mador +4 IF/ID Sumador S 1 1 Señales de control RegWrite MemtoRe eg 000000 (tipo-R) Branch 100000 (add) 100010 ((sub) b) 100100 (and) 100101 (or) 101010 (slt) op MemWrite e XXXXXX ALUctr 010 010 110 010 110 000 001 111 MemRead d ALUop 00 00 01 10 10 10 10 10 ALUop funct ALUSrc op 100011 (lw) (l ) 101011 (sw) 000100 (beq) RegDst Control principal Control de la ALU 100011 (lw) (l ) 101011 (sw) 000100 (beq) 000000 (tipo-R) 0 X X 1 1 1 0 0 00 00 01 10 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 X X 1 Control princ cipal WB EX M WB WB Escrribe Reg M MEM: Ac cceso a Memoria WB instrucción EX: Ejecución/ e Dir Calculo de El control de la alu se determina por ALUop que depende del tipo de Instrucción y el campo de función en las instrucciones de tipo-R Control segmentado estacionario en los datos IF/ID ID/EX MEM/WB EX/MEM 45 Ruta de datos del DLX con las ordenes de control y control estacionario en los datos Control principal MEM/WB <<2 Reg Write Sumado or Branch MemWrite Zero RW AluScr busB 0 busW ADDR MUX M DR busA ALU RB Banco de e registros s ADDR Memoria instruccione es PC RA DR Me emoria datos d Sum mador IF/ID EX/MEM 1 Ins. [20-16] Ins. [15-11] Control C ALU 6 ALUop MUX Ins. [15-0] Ex xtensión de e signo DW Reg Dst 46 MentoReg +4 PcSrc ID/EX 1 MemRead 0 MUX MU UX 0 1 Diseño del control ¿Qué facilita el control segmentado? Todas T d llas iinstrucciones i con igual i ld duración ió Pocos formatos diferentes de instrucción Accesos a memoria solo en load y store ¿Qué dificulta el control segmentado? Riesgos estructurales. Conflictos de recursos Riesgos de datos. Solo LDE Riesgos de control El diseño di ñ anterior t i no ttenía í en cuenta t llos riesgos i d de datos d t y los l riesgos de control las eliminaba con saltos retardados Implementación p del cortocircuito Caso del load Mejora en el comportamiento de los saltos. 47 Diseño del control con riesgos Riesgos de datos R( i ) D( i+? ) LDE (RAW). C Cortocircuito. i i Enviar E i ell dato d a llas etapas que llo necesitan, i cuanto esta listo li Tiempo(ciclos) r4, r1 ,r3 i+2 and r6, r1 ,r7 i+3 Lw r1 ,0 (r2) i+4 sub r4, r1 ,r3 Dm Im Reg Im Reg Im Reg Reg Dm Im Reg Dm Reg Dm Reg ALU sub Reg ALU U i+1 Im ALU r1 ,r2,r3 ALU U add ALU i Reg Dm Dos caminos de datos: Desde salida ALU (EX/MEM) a entrada ALU Desde la salida de la memoria (MEM/WB) a entrada ALU Información necesaria: Registro a escribir en ultima etapa ( Rd en Tipo-R y Rt en Lw) Registros que se leen en segunda etapa ( Rs y Rt ) 48 Reg Diseñando el control con riesgos LDE: Implementación del cortocircuito Cortocircuitos de datos nformac ón de control del cortoc cortocircuito rcu to Información ID/EX EX/MEM M EX: Ejecución/ Calculo de Dir RB RW busW Ex.IR[15:0] B busB WB Corto A 1 ADDR DR 0 1 DW Corto B Rd MEM/WB Rd EX/MEM Rd MU UX Rt Unidad Cortocircuito 49 Diseño del control con riesgos Riesgos de datos LDE: Caso del load Tiempo(ciclos) sub r4 r1 r3 r4,r1,r3 Im Reg Im Dm Reg g AL LU r1,0(r2) ALU lw Reg Dm Reg g • Se debe esperar un ciclo a pesar del cortocircuito Tiempo(ciclos) r1,0(r2) sub r4,r1,r3 Im Reg Im Reg Dm Burbuja Reg ALU lw ALU 50 0 Rs Rt WB Escribe Reg AluScr MUX UX Banco de reg gistros busA MEM: Acceso a Memoria MUX A M ALU RA MUX UX EX ID: Decodificación/ Lectura de Reg MEM/WB WB MUX Instrucción Me emoria datos d Co ontrol WB Indica si se escribe Reg Dm Reg Diseño del control con Riesgos LDE: Caso del load • Solución SW : – Anticipar el Load en la planificación de instrucciones que hace el compilador Antes: LW LW ADD SW LW LW SUB SW a := b + c d := e - f Despues: Rb,b Rc,c Ra,Rb,Rc a,Ra Re,e Rf f Rf,f Rd,Re,Rf d,Rd sin planificar LW LW LW ADD LW SW SUB SW planificado Rb,b Rc,c Re,e Ra,Rb,Rc Rf f Rf,f a,Ra Rd,Re,Rf d,Rd 25 tex 65 14 spice 42 23 gcc 54 0 20 40 60 80 51 Solución HW: Detección de riesgos y parada del procesador un n ciclo Detector de riesgos Debe actuar en ID impidiendo la carga y lectura de una nueva instrucción Condiciones : Que la instrucción en EX sea un load Detector de riesgos Registros fuentes de la instrucción siguiente Rs y Rt Registro destino del load Rt ID/EX WB busW AluScr 1 MUX RW bus A busB 0 Rs Rt Rt Rd MU UX RB Banco o de registros RA MUX ID: Decodificación/ Lectura de Reg M Unidad Cortocircuito 52 MEM/WB MEM: Acceso a Memoria ADDR Mem moria dattos EX: Ejecución/ Calculo de Dir DW DR WB WB Escribe Reg 0 MUX M ALU 0 EX/MEM MU UX Instrucción MUX Control WB E X Memoria de instrucciones PC No cargar No cargar Rt 1 Diseño del control con riesgos Riesgos de control Solución: Desplazar el calculo de la dirección y la evaluación de la condición a la etapa anterior Ti Tiempo (ciclos) ( i l ) r1, loop Reg Im Reg ALU Beq Im ALU Add r1,r2,r3 Genera la condición Burbuja Burbuja Parada Mem Mem Reg Burbuja Burbuja Reg Im Burbuja ALU Solo se espera un ciclo para la instrucción que sigue al salto (Branch delay slot) Reg Mem Reg 53 Diseño del control con riesgos Mejora del comportamiento de los saltos. Solo un ciclo de parada Calculo de la dirección. Operandos disponibles ( Pc y desplazamiento) Calculo de la condición. Unidad de detección de cero IF:Busqueda de instrucción ID: Decodificación/ Lectura de Reg EX: Ejecución/ Calculo de Dir MEM: Acceso a Memoria WB Escribe Reg MUX 0 Sumador MEM/WB Zero busW 0 ADDR Extensión de signo D W Memoria datos busB ALU RW bus A MUX DR Banco d de registro os RB 1 54 EX/MEM <<2 ID/EX RA ADDR Memoria instruccione es +4 IF/ID Sumado or Mover bloque HW 1 D R 0 MUX PC 1 Reducción de las paradas por Riesgos de control Mover el cálculo de la condición de salto a la etapa anterior 55 Reducción de las paradas por Riesgos de control Mover el cálculo de la condición de salto a la etapa anterior 56 Dificultades en la implementación de pipelines Tratar de las excepciones Paradas de la ejecución Reinicio tras las paradas p Complicaciones del repertorio de instrucciones 57 Índice 1. 2. 3. 4. 5 5. 6. 7. Segmentación Riesgos (Hazards) Forwarding Implementación del pipelining Tratamiento de las interrupciones Complicaciones del Repertorio de Instrucciones E Extensiones i para M Multiciclo li i l 58 Tratamiento de Interrupciones Situaciones en las que se cambia el orden natural de la ejecución Tipos de Excepciones Peticiones de dispositivos de E/S Solicitud de utilización del SO Realización de trazas Breakpoints O f Overflows de las unidades ffuncionales de enteros Situaciones anómalas de punto flotante Fallo de página p g Desalinamiento de memoria Violación de la protección de memoria I Instrucciones i no d definidas fi id Problema de Hardware Problema de p potencia 59 Caracterización de las Excepciones Por su solicitud Quién las solicita Solicitadas por el usuario Forzadas Por su prioridad Síncronas Asíncronas Enmascarables o no Cuando se producen p 60 Dentro o fuera de la ejecución de una instrucción Al final o dentro de un programa Clasificación Tipo de Excepción Síncronas o Asíncronas Usuario o Forzada Enmascarable? Dentro o entre Instrucciones Reinicio o Finalización Petición E/S Asíncronas Forzada No Entre Reinicio Solicitud SO Síncronas Usuario No Entre Reinicio Trazas Síncronas Usuario Sí Entre Reinicio Breakpoints Síncronas Usuario Sí Entre Reinicio Overflows INT Síncronas Forzada Sí Dentro Reinicio PF Síncronas Forzada Sí Dentro Reinicio Fallo de página Síncronas Forzada No Dentro Reinicio Desalinamiento Síncronas Forzada Sí Dentro Reinicio Protección Mem. Síncronas Forzada No Dentro Reinicio I. no definidas Síncronas Forzada No Dentro Finalización Problema de Hw Asíncronas Forzada No Dentro Finalización Problema Pot. Asíncronas Forzada No Dentro Finalización 61 Parada y reinicio de la ejecución Las excepciones más difíciles ocurren dentro de las instrucciones (fases EX o MEM) Deben ser reiniciables Ejemplo: j p Fallo de página virtual Debe ser reiniciable Requiere la intervención de otro proceso (SO) Salvar el PC Branch: reevaluación de la condición No Branch: Normal Que puede hacer el control del pipe 62 Hacer IF trap a la instrucción Apagar escrituras para la instrucción que provoca la excepción y las siguientes Salvar el PC Utilización de saltos retardados No se puede recrear el estado del procesador con un único PC Excepciones precisas Las instrucciones en el pipe pueden no estar relacionadas secuencialmente Podemos necesitar tantos PC´s como longitud del salto +1 SSe puede d parar ell pipe Las instrucciones justo antes se terminan Continuan las siguientes desde el principio Excepciones en PF A veces escriben el resultado antes de que aparezca la excepción Eliminar operandos Finalización fuera de orden 63 Interrupciones Precisas 2 Modos de funcionamiento Precisas No precisas Asegurar siempre aunque sea por Software 64 Fácil en Integer Difícil en FP Excepciones en el MIPS Pueden ocurrir fuera de orden V t d Vector de estado t d Se chequea después de MEM S manejan Se j en orden d de d ejecución j ió Deshabilitación de las escrituras Etapa Problema IF Fallo de Página en Instrucción, desaliniamiento, violación de protección ID O Opcode d no definido d fi id o ilegal il l EX Excepción aritmética MEM Fallo de Página en Datos, Datos desaliniamiento, desaliniamiento violación de protección WB Ninguna 65 Índice 1. 2. 3. 4. 5 5. 6. 7. Segmentación Riesgos (Hazards) Forwarding Implementación del pipelining Tratamiento de las interrupciones Complicaciones del Repertorio de Instrucciones E Extensiones i para M Multiciclo li i l 66 Complicaciones del Repertorio de Instrucciones Algunos procesos pueden ocasionar excepciones entre medias de una instrucción Autoincremento de la dirección en un IA-32 puede actualizar l registros los i en medio di de d la l ejecución j ió Hace falta Hardware para gestionarlos A Actualización li ió d de lla memoria i d durante lla ejecución j ió VAX; IBM360 S puede Se d solucionar l i Se pueden utilizar bancos de registros temporales, para guardar trabajos parcialmente completados Se añaden bits de estado para saber si está completado o no 67 Complicaciones del Repertorio de Instrucciones Códigos de condición incluídos en la instrucción Dificultades de planificación de retardos del pipeline Decidir cuando es fija la condción de salto Operaciones Multi-ciclo MOVL R1, R2 ; ADDL3 42(R1),56(R1) 42(R1),56(R1)+,@(R1); ,@(R1); SUBL2 R2,R3 ; MOVC3 @R1[R2],74(R2), R3; 68 Movimiento entre registros Suma posiciones de memoria Resta entre registros Mover un carácter Solución : Hacer pipelining a nivel de microinstrucción Índice 1. 2. 3. 4. 5 5. 6. 7. Segmentación Riesgos (Hazards) Forwarding Implementación del pipelining Tratamiento de las interrupciones Complicaciones del Repertorio de Instrucciones E Extensiones i para M Multiciclo li i l 69 Operaciones Multi-ciclo Multi ciclo Operaciones de un solo ciclo Mucho Hardware Reloj muy lento Operaciones en Punto Flotante Las fases de ejecución se puede repetir tantas veces como sea necesario Puede haber varias unidades funcionales E Ejemplo l con 4 unidades d d funcionales f l 70 Enteros: ALU, Branches, LD y Store Multiplicación: Entera y FP Sumador FP División: Entera y PF Operaciones Multi-ciclo Multi ciclo Permitir un pipe similar al hecho con MIPS Latencia de las Ufs Intervalo de inicialización Nº de ciclos que hay que esperar para poder utilizar el resultado Nº ciclos que hay que dejar pasar para lanzar dos intrucciones del mismo tipo Ejemplo UF Latencia I. Incialización IALU 0 1 Dmem 1 1 FP add 3 1 FP MUL 6 1 FP DIV 24 EL resultado de IALU se ppuede usar en25el siguiente g ciclo Sol: Reducir Lógica Aumenta el nº de etapas II Relojes + rápidos Aumento de la latencia 71 Operaciones Multi-ciclo Multi ciclo 72 Solo puede haber activa una operación Mayor Latencia => riesgos de LDE y sus paradas Nuevos registros entre etapas y modificaciones a la conexión Información de control solo con una etapa Hazards y Forwarding para pipelines de latencia mayores Aspectos a considerar Riesgos estructurales Número de escrituras en Registros No se alcanza al etapa de WB en orden Terminación fuera de orden Puede ser mayor que 1 en un ciclo Riesgos g de Escritura después p de Escritura La división no está totalmente segmentada No Riesgos N Ri de d Escritura E i después d é de d lectura l La lectura de registros se realiza siempre en ID Incremento de la latencia Puede provocar paradas por Riesgos de Lectura después de escritura RAW / LDE 73 RAW y Escrituras simultaneas 74 Operaciones Multi-ciclo Multi ciclo 2 soluciones Registro de desplazamiento + Stall Parada de las instrucciones en conflicto después de EXE Realizar la comprobación en ID Necesidad de Prioridades de Accesso Lógica de Chequeo Paso a atrás de memoria Dejar j ppasar la de mayor y latencia Riesgos WAW Si el load va un ciclo antes Useless instruction 75 Implementación Lógica de Riesgos y lanzamiento para el pipeline FP Suponemos que se realiza la detección en ID Mismos conceptos que en MIPS Forwarding en: EX/MEM A4/MEM M7/MEM D/MEM MEM/WB Necesitamos 3 comprobaciones p Riesgos estructurales 1. • • Esperar hasta que la UF necesaria esté libre Asegurarse g de que q el puerto p de escritura esté libre RAW 2. • Esperar hasta que los registros fuente estén disponibles WAW 3 3. • 76 Determinar si alguna instrucción en A1,...,A4, D y M1,.....,M7 tienen el mismo registro de destino Influencia en las Excepciones Mantenimiento de las excepciones precisas DIV.D F0,F2,F4 ADD.D F10,F10,F8 SUB.D F12,F12,F14 No hay dependencias pero DIV acabará + tarde Terminamos fuera de orden Problema excepción en medio de DIV Si ha terminado ADD puede no recuperarse porque F10 se destruye y no podemos volver atrás Aproximaciones Ignorarlos (Problema con la MV) Dos modos de ejecución (Impreciso y preciso). 1operación de PF cada vez Almacenar Resultados Parciales 60’s y 70’s 21064, 21164, Power1, Power2, MIPS R8000 Comparadores y MUX Registros de Historia Registro de futuro Permitir algunas condiciones de imprecisión 77 Influencia en las Excepciones Ejemplo IInstrucción ió 11; Causa la interrupción Instrucción 2; No completada .................. No completada Instrucción n-1; No completada Instrucción n; Completada Se almacena el PC para I2 a In-1 y luego se continúa con In Variación ejecutar j solo las instrucciones en PF qque haya y entre I2 e In-1 Técnicas Híbridas 78 Permitir P iti ell lanzamiento l i t para continuar ti Solo en caso de que se hayan terminado las anteriores sin excepciones Paradas por operaciones en PF 79 Ejemplo: MIPS R4000 Pipeline 8 etapas Incremento en el Forwardingg Incremento de retardos por load y branch MI está activa en la etapa RF para comprobación de etiquetas 80 IF: PRIMERA PARTE DEL FETCH IS: SEGUNDA PARTE DEL FETCH RF: DECODIFICACIÓN Ó Y FETCH DE REGISTROS EX: EJECUCIÓN DF: DATA FETCH PRIMERA PARTE DS: DATA FETCH SEGUNDA PARTE TC: COMPARACIÓN DE ETIQUETAS WB: ESCRITURA MIPS R4000 Pipeline IF: PRIMERA PARTE DEL FETCH IS: SEGUNDA PARTE DEL FETCH Finalización del acceso a la caché de datos TC: COMPARACIÓN DE ETIQUETAS Primera parte del acceso a la cachéé de datos DS: DATA FETCH SEGUNDA PARTE Cálculo de la Dirección efectiva Operaciones Aritmético Lógica Evaluación de la condición de salto Cálculo de la dirección de salto DF: DATA FETCH PRIMERA PARTE Decodificación de la instrucción Comprobación de Riesgos Detección de acierto en acceso a la Cache de Instrucciones EX: EJECUCIÓN Finalización del acceso a la Cache de instrucciones RF: DECODIFICACIÓN Y FETCH DE REGISTROS Selección del PC Inicio del acceso a la cache de Instrucciones Comprobación C b ió de d etiquetas ti t Detección de acierto en acceso a la Cache de Datos WB: ESCRITURA Escritura de resultados para operaciones de Load y ALU 81 Incremento en la penalización 82 Operaciones en PF Existen 3 unidades funcionales en PF División Di i ió en PF Multiplicación en PF Suma en PF También se utiliza al final de las operaciones de mul y div Duración desde 2 ciclos a 112 Segmentado en 8 etapas Combinadas en diferente orden A: +FP suma de mantisa D %FP Et D: Etapa d de di división i ió E: *FP Chequeo de excepciones M: *FP Primera etapa de Mul N: *FP Segunda Etapa de Mul R: +FP Redondeo S: +FP Desplazamientp U: Desempaquetado de números en PF 83 Latencias e Intervalos de Inicialización Instrucción Fases que utiliza Lat II Suma y Resta U S+A A+R R+S Multiplicación U E+M M M M N N+A R División ó U A R D28 D+A D+R D+A D+R Raíz cuadrada U E (A+R) A R N Negación ió U Valor absoluto Comparación FP 84 4 3 8 4 36 35 112 111 S 2 1 U S 2 1 U A 3 2 108 R A R Conflictos entre operaciones en PF MUL, ADD Oper Lanzar/Parar 0 1 2 3 4 5 6 7 Mul Lanzar U E+M M M M N N+A R Add Lanzar U S+A A+R R+S U S+A A+R R+S U S+A A+R R+S U S+A A+R R+S U S+A A+R R+S U S+A A+R Lanzar Parar Parar Lanzar Lanzar 8 9 R+S 85 Conflictos entre operaciones en PF ADD , MUL Oper Lanzar/Parar 0 1 2 3 Add Lanzar U S+A A+R R+S Mul Lanzar U E+M U Lanzar 86 4 5 6 7 8 M M M N N+A R E+M M M M N N+A 9 R Conflictos entre operaciones en PF Ejercicio DIV, ADD 87 Solución Oper p Lanzar/Parar / 25 DIV Lanzar Add dd Lanzar a a Lanzar Parar Parar Parar Parar Parar Lanzar 88 D 26 27 28 29 30 31 32 33 34 35 D D D D D+A D+R D+A D+R A R U S+A A+R R+S U S+A A+R R+S U S+A A+R R+S U S+A A+R R+S U S+A A+R R+S U S+A A+R R+S U S+A A+R R+S U S+A A+R 36 R+S Ejemplo Rendimiento R4000 89 Bibliografía Apéndice A de [HePa06] Standard Performance Evaluation Corporation. MIPS R4000 Microprocessor User’s Manual http://www.spec.org cag.csail.mit.edu/raw/documents/R4400_Uman_book_Ed2.pdf g _ _ _ p Simulador WinDLX 90 http://cs.uns.edu.ar/~jechaiz/arquitectura/windlx/windlx.html p j q