¿Cómo sabe la CPU cuando ocurre una interrupción?

0

Estoy escribiendo un emulador y parece que no puedo encontrar información sobre esto. Lo que sé es que los dispositivos activan un pulso en el cable IRQ. Pero las explicaciones en línea no incluyen cómo la CPU se ocupa de eso. ¿Una interrupción literalmente hace que la CPU deje todo y se encargue de eso? ¿O la CPU verifica el estado de la IRQ durante cada ciclo? Además, ¿qué pasa con otras formas de manejar las interrupciones? Por ejemplo, Nintendo Game Boy aparentemente usa una ubicación reservada en la memoria como un indicador de interrupción, que le dice a la CPU dónde llamar a una subrutina para manejar esa interrupción (mi mejor conjetura es que DMA escribe en este indicador). ¿Es esto común o estándar en los sistemas más antiguos?

IamCarbonMan
fuente

Respuestas:

1

Lo que sé es que los dispositivos activan un pulso en el cable IRQ.

Tal vez un pulso, pero se afirma un nivel más común.
Solo después de que se reconoce la interrupción, la línea de solicitud se anula.

¿Una interrupción literalmente hace que la CPU deje todo y se encargue de eso?

Efectivamente sí, de manera ordenada. Por eso se llama "interrupción".

¿O la CPU verifica el estado de la IRQ durante cada ciclo?

No, la CPU se interrumpe literalmente (al finalizar una instrucción).
Pero si miras más a fondo, es decir, cómo funciona la CPU, entonces hay una máquina de estado que examina la línea IRQ.

Por ejemplo, la Nintendo Game Boy aparentemente usa una ubicación reservada en la memoria como un indicador de interrupción, que le dice a la CPU dónde llamar a una subrutina para manejar esa interrupción

Eso suena vagamente como un vector de interrupción , que se utiliza en muchas arquitecturas de CPU. Pero no se usa como una "bandera de interrupción".

Sus preguntas parecen indicar que tiene una comprensión débil de lo que es externo a una CPU y lo que es interno a una CPU. Por ejemplo, la CPU ejecuta instrucciones de la máquina obtenidas de la memoria. Interna a la CPU hay un decodificador de instrucciones. Si describe esta operación interna como "la CPU decodifica la instrucción", entonces ha creado un problema que diferencia las operaciones externas frente a las internas (de bajo nivel).

serrín
fuente