Excepciones e interrupciones Pipelining Excepciones e interrupciones
Excepciones e interrupciones Son eventos, que no son branches ni jumps, que cambian el flujo normal de ejecución de las instrucciones. Fueron creadas para manejar eventos inesperados dentro de la CPU. Algunas arquitecturas no distinguen entre excepciones e interrupciones Universidad de Sonora Arquitectura de Computadoras
Excepciones e interrupciones En MIPS (y otras arquitecturas): Se llama excepción si la causa del evento es interna. Se llama interrupción si la causa del evento es externa. Ejemplos: Fuente: COD 5, p. 326. Universidad de Sonora Arquitectura de Computadoras
Excepciones e interrupciones Para no estar escribiendo “excepciones e interrupciones” en el resto de esta presentación se habla solo de “excepciones.” Universidad de Sonora Arquitectura de Computadoras
Excepciones en MIPS Cuando se produce una excepción: Se guarda la dirección de la instrucción actual en el registro EPC (Exception Program Counter). Se transfiere en control al sistema operativo en alguna dirección específica. El sistema operativo maneja la excepción. El sistema operativo puede: Abortar el programa. Continuar la ejecución usando el EPC para regresar. Universidad de Sonora Arquitectura de Computadoras
Manejo de excepciones En el paso 3 “El sistema operativo maneja la excepción.” El sistema operativo debe saber cuál fue la excepción. Hay dos formas de saber: Usar un registro de status. Usar interrupciones vectorizadas (vectored interrupts). Universidad de Sonora Arquitectura de Computadoras
Registro de status El registro de status tiene un campo que indica la razón de la excepción. En MIPS se llama “registro Causa” (Cause register). La rutina de manejo de excepciones tiene una dirección. El sistema operativo brinca a esa dirección y analiza el registro Causa para saber la razón de la excepción. Universidad de Sonora Arquitectura de Computadoras
Interrupciones vectorizadas Cada interrupción tiene su propio manejador (handler). Las direcciones se guardan en una tabla. Por ejemplo: Tipo de excepción Dirección (hex) Instrucción no definida 0x80000000 Overflow 0x80000180 Etc. Universidad de Sonora Arquitectura de Computadoras
Interrupciones vectorizadas El sistema operativo sabe la causa de la excepción por la dirección. Como parte del manejo de la excepción, el sistema operativo guarda en alguna parte la causa de la excepción. Universidad de Sonora Arquitectura de Computadoras
Implementación Se supone que la rutina que maneja excepciones está en la dirección 0x80000180. Se necesitan agregar dos registros: EPC. Registro de 32 bits para guardar la dirección donde se produjo la excepción. Causa. Registro de 32 bits que registra la causa de la excepción en un campo de 5 bits. Suponer que 10 representa una instrucción indefinida y 12 un overflow. Una excepción se trata igual que un brinco mal adividado. Universidad de Sonora Arquitectura de Computadoras
Implementación Se hacen dos cosas: Eliminar (flush) las instrucciones que sigan a la instrucción que provocó la excepción. Empezar a sacar instrucciones de la dirección de la rutina de manejo de excepciones (0x80000180 en el ejemplo). El pipeline se limpia poniendo a ceros las señales de control. Universidad de Sonora Arquitectura de Computadoras
Implementación Se agregan dos señales de control: ID.Flush para eliminar la instrucción en la etapa ID. EX.Flush para eliminar la instrucción en la etapa EX. Se debe evitar que la instrucción que provocó la excepción escriba en WB. Por último, se guarda la dirección de la instrucción que provocó la excepción en el registro EPC. Se muestra el datapath para manejar excepciones. Universidad de Sonora Arquitectura de Computadoras
Datapath Fuente: COD 5, p. 329. Universidad de Sonora Arquitectura de Computadoras
Explicación La dirección 0x80000180 entra al mux que controla lo que se guarda en el PC. Si se genera una excepción, se comienza a sacar instrucciones de la dirección 0x80000180. El registro Causa registra la causa de la excepción. El registro EPC guarda la dirección de la instrucción que provocó la excepción. Universidad de Sonora Arquitectura de Computadoras
Ejemplo Dado el siguiente código 0x40 sub $11, $2, $4 0x44 and $12, $2, $5 0x48 or $13, $2, $6 0x4C add $1, $2, $1 0x50 slt $15, $6, $7 0x54 lw $16, 50($7) … Universidad de Sonora Arquitectura de Computadoras
Ejemplo Suponer que la rutina de manejo de excepciones comienza con: 0x80000180 sw $26, 1000($0) 0x80000184 sw $27, 1004($0) … Mostrar que pasa si la instrucción add produce un overflow. Universidad de Sonora Arquitectura de Computadoras
Antes Antes. Fuente: COD 5, p. 330. Universidad de Sonora Arquitectura de Computadoras
Después Después. Fuente: COD 5, p. 330. Universidad de Sonora Arquitectura de Computadoras
Temas avanzados Manejo de excepciones múltiples. Excepciones imprecisas. Universidad de Sonora Arquitectura de Computadoras