240 likes | 372 Views
Organización del Computador I Verano Excepciones Basado en el capítulo 6 del libro de Patterson y Hennessy. Verano 2004. Profesora Borensztejn. Definiciones. Excepción : cambio inesperado en el flujo de control proveniente de una causa interna o externa.
E N D
Organización del Computador I VeranoExcepcionesBasado en el capítulo 6 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn
Definiciones • Excepción: cambio inesperado en el flujo de control proveniente de una causa interna o externa. • Interrupción: cambio inesperado en el flujo de control proveniente de una causa externa. • El hardware debe ser capaz de salvar el estado completo de la máquina, incluyendo la causa de la interrupción y el PC causante antes de pasar el control a la subrutina de servicio. • Dificultad: cuando la excepción ocurre en el medio de una instrucción, y la instrucción requiere que el hardware restaure el estado existente antes de producirse el evento. Unidad 2
Continuar: pedido E/S, breakpoint, trace. Entre instrucciones Excepciones Continuar: Fallo Página En el medio de la instrucción Terminar: Overflow Instrucción Indefinida Definiciones • Una computadora se denomina recuperable si es capaz de salvar el estado existente antes de que se produzca el evento Unidad 2
Ejemplos: excepciones en máquinas no segmentadas • VAX, primera computadora reiniciable: instrucciones de longitud variable, de hasta 6 operandos que podían estar en memoria y además, almacenados de forma desalineada, de forma que la mitad de un operando podía estar en memoria y la mitad en disco!!! Cuando el procesador descubre que el siguiente byte de la instrucción NO está en memoria, tendrá que reiniciar una instrucción cuyo PC deberá apuntar 50 bytes más arriba!! Unidad 2
Excepciones en la máquina no segmentada multiciclo • Dos tipos de excepciones: • ejecución de una instrucción indefinida (0) • desbordamiento aritmético (1) • Acciones: • Guardar la dirección de la instrucción causante en el registro EPC (Exception Program Counter)(32 bits) • Pasarle información al S.O sobre el tipo de excepción en un registro de estado llamado Cause (32 bits en MIPS) • Transferir el control a una dirección predeterminada: supongamos 40000000H Unidad 2
Camino de Datos con excepciones EPCW Pcsrc Al PC DstW PC +4 PC-4 EPC MUX Dst CauseW 40000040h IntCause 00000000h Cause 00000001h Unidad 2
Control para excepciones • Cuando se detectan? • Instrucción Indefinida: cuando no está definido el valor del estado siguiente a partir del estado 1 • Desbordamiento: debe detectarlo la ALU al final del estado de resultado para tipo R. Unidad 2
Grafo de Estados IR<--MEM[PC]; PC<-PC+4 A<-----R[rs]; B<-----R[rt]; DST<---PC+(signext(inm16)<<2) Op=otro Al estado 10 Z<---AopB si (Z) PC<--DST S<---AopB S<---A+ signext(inm16) Desbordamiento Al estado 11 MEM[S]<--B dato<---MEM[S] R[rt]<---dato R[rd]<---S Unidad 2
Control para excepciones Cause<--0 CauseW=1 Cause<--1 CauseW=1 ALUselA=0 ALUselB=01 Aluop=01 EPCW=1 PCW=1 PCsrc=11 Unidad 2
Excepciones en la máquina segmentada lineal ciclos 1 2 3 4 5 6 7 8 Add $1, $2, $1 M M Reg Reg Eliminadas !! M Slt $15, $6, $7 Reg M Lw $16, 50($2) Reg M M Reg Sw $25, 1000($0) Reg Sw $26, 1000($0) M M Reg Reg Unidad 2
Detección de la excepción de desbordamiento y cancelar • La lógica está en EX. • Hay una instrucción en IF, otra en ID, y otra en EX que hay que cancelar ===> señales IFFlush, IDFlush y EXFlush. • Ecuaciones del Control para cancelar: • Si (V=1 ) IF.Flush=1; ID.Flush=1; EX.Flush=1; • Control para salvar el PC en EPC Unidad 2
Problemas • Las más difíciles de tratar son las excepciones que se producen en el medio de la ejecución de una instrucción y tienen que ver con la instrucción. Son las llamadas excepciones síncronas, y deben ser recuperables • Hay cinco instrucciones ejecutándose cuando se produce una excepción. Es importante identificar la instrucción que la produjo para saber qué instrucciones eliminar, qué PC guardar.... • Los distintos tipos de excepciones se producen en distintas etapas: por ejemplo código de op. Inválido se detecta en ID. • Sin embargo, puede suceder que las excepciones se produzcan a la vez. Prioridades. Unidad 2
Tipos de Excepciones • Búsqueda • Fallo de página • Fallo de alineamiento en memoria • Error de protección • Dec/Lectura • Código de operación ilegal • ALU • excepción arimética • Memoria • Fallo de página • Fallo de alineamiento en memoria • Error de protección Unidad 2
Excepciones precisas • La utilización de una arquitectura secuencial y una implementación segmentada entran en conflicto cuando se produce una excepción. • Dada una instrucción que produce una excepción, ésta es precisa si: • El procesador puede pararse de forma que las instrucciones : anteriores FINALICEN las posteriores PUEDAN REINICIARSE Unidad 2
Excepciones precisas • DIFICULTAD CON: • Instrucciones que modifican el estado del procesador antes de que se garantice que finalizarán • ALTERNATIVA • No actualizar el estado hasta que exista garantía de que la instrucción finalizará. • INFLUENCIA : • Debido a que hay dependencias entre instrucciones la no actualización del estado del procesador es perjudicial si se quieren mantener todos los segmentos ocupados y no bloquear
Procesadores segmentados lineales • Pasos para recuperarse de una excepción síncrona: • (a) Modificar el secuenciamiento • (b) Inhibir las escrituras • (c) Sistema Operativo • (d) Restaurar el estado
IF ID EX MEM WB (a) Modificar el secuenciamiento • Forzar una instrucción de trap en el próximo ciclo Fallo de Página IF ID EX MEM WB i add i+1 lw i+2 add i+ 3 sw i+ 4 sub primera instrucción del SO IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM
(b) Inhibir escrituras • Previene cualquier cambio de estado antes de gestionar la excepción. (insertar burbuja) Fallo de Página IF ID EX MEM WB i add i+1 lw i+2 add i+3 sw i+4 sub primera instrucción del SO IF ID EX MEM IF ID EX IF ID EX IF ID EX IF ID EX MEM
(c) Sistema Operativo • Salvar PC de la instrucción en curso Fallo de Página IF ID EX MEM WB i add i+1 lw i+2 add i+3 sw i+ 4 sub primera instrucción del SO IF ID EX MEM IF ID EX IF ID EX IF ID EX IF ID EX MEM
Sistema Operativo • Código rutina (para MIPS R-2000) • $a0..$a3 corresponden a los registros $4..$7 y se utilizan para pasar parámetros • $13 es el Registro Cause del Coprocesador 0 • $k0 es el registro $26 del procesador, es reservado para el ensamblador y sistema operativo • $14 es el Registro EPC del coprocesador • $k1 es el registro $27 del procesador, es reservado para el ensamblador y sistema operativo • la instrucción rfe restaura los bits correspondientes en el registro de estado.
Sistema Operativo .ktext 0x80000080 sw $a0, save0; salva para luego pasar parámetros sw $a1, save1; mfc0 $k0, $13; transfiere causa de interrupción mfc0 $k1, $14; transfiere EPC tratamiento lw $a0, save0; restaura sw $a1, save1; rfe jr $k1; reejecuta instrucción
(d) Restaurar Estado • Saltos indexados efectivos al final de la etapa de búsqueda IF ID EX MEM WB k S.O k+1 jr $27 (i+1) IF ID EX MEM IF IF ID EX i+1 lw i+2 add IF ID EX IF ID EX
Orden entre excepciones Fallo de Página IF ID EX MEM WB IF ID EX MEM • Pueden presentarse de manera desordenada IF ID EX MEM IF ID EX MEM IF ID EX • No tratar una excepción hasta que se tiene garantía que las instrucciones anteriores finalizarán sin excepciones • Tratar excepciones en orden.