¿Por qué las ranuras de retardo son problemáticas al implementar interrupciones en un procesador canalizado?

1

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?

    
pregunta cr1901

1 respuesta

1

La interrupción golpea después de la bifurcación (es decir, con el puntero de instrucción en la nueva ubicación) pero antes de que se haya ejecutado la instrucción de intervalo de demora.

¿Cómo sabes de dónde te bifurcaste?

Ahí es donde necesitas recuperar las instrucciones de la ranura de retardo.

Consulte: COMEFROM .

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas