Manejo Avanzado de Interrupciones en Procesadores Segmentados
Clasificado en Informática
Escrito el en español con un tamaño de 3,25 KB
Desafíos en la Implementación de la Segmentación de Procesadores
- Las **interrupciones** son más difíciles de manejar en una máquina segmentada, porque el **solapamiento de las instrucciones** hace más complejo determinar si una instrucción puede cambiar, sin peligro, el estado de la máquina.
- En una máquina segmentada, una instrucción se ejecuta parte por parte y tarda varios **ciclos de reloj** en completarse.
- Incluso durante el proceso de ejecución, puede ser necesario **actualizar el estado de la máquina**.
- Mientras tanto, una interrupción puede forzar a la máquina a **abortar la ejecución** de la instrucción antes de que esta se complete.
Al igual que en las implementaciones no segmentadas, las interrupciones más complejas poseen dos propiedades:
- Se presentan durante la ejecución de las instrucciones.
- Deben ser **recomenzables**.
- En nuestro procesador segmentado **DLX**, por ejemplo, un **fallo de página de memoria virtual** resultante de una búsqueda de datos no puede presentarse hasta el **ciclo MEM** de la instrucción.
- En el instante en que se detecta el fallo, otras instrucciones ya se estarán ejecutando.
- Dado que un **fallo de página** debe ser **recomenzable** y requiere la intervención de otro proceso, como el **sistema operativo**, es necesario detener las instrucciones en curso y **guardar el estado** para que la instrucción pueda reiniciarse en el estado correcto. Esto, habitualmente, se implementa guardando el **Contador de Programa (PC)** de la instrucción para su reinicio.
Manejo de Interrupciones y Restauración del Estado del Procesador
- Si la instrucción reiniciada no es un salto, entonces continuará la búsqueda de los sucesores secuenciales y comenzará su ejecución de forma normal. Si la instrucción reiniciada es un **salto**, se evaluará la condición de salto y la búsqueda comenzará a partir del destino o del camino secuencial.
- Cuando se presenta una interrupción, se pueden realizar los siguientes pasos para **guardar de forma segura el estado del procesador**:
- Forzar una **instrucción de trap** en el siguiente ciclo **IF**.
- Hasta que el trap sea efectivo, eliminar todas las escrituras para la instrucción que causó el fallo y para las siguientes instrucciones. Esto previene cualquier cambio de estado para las instrucciones que no se hayan completado antes de que la interrupción sea tratada.
- Después de que la rutina de tratamiento de interrupciones del sistema operativo reciba el control, se guarda inmediatamente el **Contador de Programa (PC)** de la instrucción que causó el fallo. Este valor se utilizará al retornar de la interrupción.
- Cuando se utilizan **saltos retardados**, no es posible restablecer el estado de la máquina con un solo PC, porque las instrucciones en curso pueden no estar relacionadas secuencialmente.
- En particular, cuando la instrucción que provoca la interrupción es un **hueco de retardo de salto**, y el salto fue efectivo, entonces las instrucciones para recomenzar son las del hueco más la instrucción del destino del salto. El salto ha completado su ejecución y no se reinicia.