He estado refrescando mi memoria en procesadores segmentados por diversión. Actualmente, estoy revisando las implementaciones de interrupciones en CPU segmentadas (en orden) y varias complicaciones que surgen. He encontrado este PDF para ser útil, pero Deja algunas preguntas como ejercicios para el lector.
Una de estas preguntas es:
¿Qué hace que las interrupciones precisas sean difíciles? Las ramas retrasadas causan un problema. ¿Qué es?
Mi suposición es que "si se produce una excepción o una interrupción de E / S en una ranura de demora, el estado del procesador que tiene una rama pendiente- exclusivo de las ranuras de demora - no se tiene en cuenta al reiniciar la instrucción.
Mi solución sería crear un estado que indique que estamos dentro de una ranura de retardo, junto con información sobre el resultado de la rama. Esto debería funcionar porque si el retraso de la ranura falla, la rama se completará de modo que la ejecución secuencial de las instrucciones coincida con la ejecución canalizada.
Sin embargo, no confío en que mi solución sea correcta. ¿Hay algún otro estado o explicación que pueda faltar?