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:

  1. Se presentan durante la ejecución de las instrucciones.
  2. 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**:
  1. Forzar una **instrucción de trap** en el siguiente ciclo **IF**.
  2. 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.
  3. 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.

Entradas relacionadas: