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.