Describa brevemente el manejo de interrupciones anormales por parte de ARM.
1.
Solicitar una interrupción
Cuando una fuente de interrupción requiere que la CPU realice un servicio de interrupción, se emite una señal de solicitud de interrupción, de modo que la Sistema de control de interrupciones El flip-flop de solicitud de interrupción está configurado para solicitar una interrupción desde la CPU. El sistema requiere que la señal de solicitud de interrupción se mantenga hasta que la CPU responda a su interrupción.
2.
Respuesta a la interrupción
La CPU debe responder a la solicitud de interrupción planteada por la fuente de interrupción interna del sistema y obtener automáticamente la dirección de entrada de la interrupción. subrutina de servicio y ejecutarla Interrumpir la rutina de servicio. Para interrupciones externas, la CPU consulta el pin INTR en el último ciclo de reloj de ejecución de la instrucción actual. Si se determina que la señal de solicitud de interrupción es válida y el sistema activa la interrupción (es decir, IF = 1), la CPU envía una interrupción. Solicitud al dispositivo externo que emitió la solicitud de interrupción. Suponga que se envía una señal de respuesta de interrupción de bajo nivel como respuesta a la solicitud de interrupción INTR, y el sistema ingresa automáticamente al ciclo de respuesta de interrupción.
3.
Apagar interrupciones
Después de que la CPU responde a la interrupción, genera la señal de respuesta a la interrupción, automáticamente empuja el contenido del registro de indicador de estado FR o EFR a la pila para protección. y luego borra la interrupción en FR o EFR. El bit de indicador IF y el bit de indicador de trampa TF se borran para desactivar automáticamente la interrupción de hardware externo. Debido a que la CPU tiene que proteger la escena cuando ingresa por primera vez a la interrupción, que involucra principalmente operaciones de pila, ya no puede responder a la interrupción en este momento, de lo contrario causará un caos en el sistema.
4.
Punto de interrupción protegido
El punto de interrupción protegido consiste en insertar el contenido actual de CS e IP/EIP en la pila para que, después de procesar la interrupción, se pueda devolver el programa interrumpido original para continuar. ejecución. Este proceso también lo completa automáticamente la CPU.
5.
Identificación de la fuente de interrupción
Cuando hay múltiples fuentes de interrupción en el sistema, una vez que hay una solicitud de interrupción, la CPU debe determinar qué fuente de interrupción realizó la solicitud de interrupción y el controlador de interrupciones Proporcionará la dirección de entrada de la subrutina del servicio de interrupción y cargará los registros CS e IP/EIP. La CPU transfiere a la subrutina de servicio de interrupción correspondiente para iniciar la ejecución.
6.
Proteger la escena
Tanto el programa principal como la subrutina del servicio de interrupción utilizan recursos como los registros internos de la CPU para evitar que el controlador de interrupciones destruya el contenido de los registros en el. programa principal, el controlador de interrupciones primero debe ser El contenido de cada registro en este punto se inserta en la pila para protección y luego se ingresa el procesamiento de interrupciones. El usuario implementa la protección en el sitio mediante el comando PUSH.
7.
Servicio de interrupción
El servicio de interrupción es la parte principal de la ejecución de interrupciones. Las diferentes solicitudes de interrupción tienen diferentes contenidos del servicio de interrupción. Es necesario escribir las funciones correspondientes con anticipación de acuerdo con las funciones que se van a ejecutar. completada por la fuente de interrupción, la subrutina del servicio de interrupción se almacena en la memoria y se llama para su ejecución después de esperar a que se responda a la solicitud de interrupción.
8.
Restaurar la escena
Después de procesar la interrupción, el usuario extrae el contenido de cada registro guardado en la pila a través de la instrucción POP, que es decir, restaura el valor original del registro principal en el punto de interrupción del programa.
9.
Retorno de interrupción
Al final de la subrutina del servicio de interrupción, se debe organizar una instrucción de retorno de interrupción IRET. Cuando se ejecuta esta instrucción, el El sistema guardará automáticamente el contenido en la pila. Los valores IP/EIP y CS aparecerán, restaurando así el valor de la dirección en el punto de interrupción del programa principal. Al mismo tiempo, también restaurará automáticamente el contenido del registro de bandera. FR o EFR, permitiendo a la CPU ir al programa interrumpido para continuar la ejecución.