Como a CPU sabe quando ocorre uma interrupção?

0

Estou escrevendo um emulador e não consigo encontrar informações sobre isso. O que eu sei é que os dispositivos acionam um pulso no fio do IRQ. Mas as explicações online não incluem como a CPU lida com isso. Uma interrupção literalmente faz com que a CPU derrube tudo e cuide dela? Ou a CPU verifica o estado do IRQ durante cada ciclo? Além disso, e sobre outras formas de lidar com interrupções? Por exemplo, o Nintendo Game Boy aparentemente usa um local reservado na memória como um sinalizador de interrupção, que diz à CPU onde chamar uma sub-rotina para lidar com essa interrupção (meu melhor palpite é que esse sinalizador é gravado por DMA). Isso é comum ou padrão em sistemas mais antigos?

    
por IamCarbonMan 11.02.2016 / 05:23

1 resposta

1

What I know is that devices trigger a pulse on the IRQ wire.

Talvez um pulso, mas um nível mais comum seja declarado.
Somente após a interrupção ser confirmada, a linha de solicitação é desativada.

Does an interrupt literally cause the CPU to drop everything and take care of it?

Efetivamente sim, de maneira ordenada. É por isso que é chamado de "interrupção".

Or does the CPU check the state of the IRQ during each cycle?

Nenhuma CPU é literalmente interrompida (no final de uma instrução).
Mas se você olhar mais fundo, ou seja, como a própria CPU funciona, então há uma máquina de estado que examina a linha de IRQ.

For example, the Nintendo Game Boy apparently uses a reserved location in memory as an interrupt flag, which tells the CPU where to call a subroutine for handling that interrupt

Isso soa vagamente como um vetor de interrupção , que é usado em muitas arquiteturas de CPU. Mas não é usado como um "sinalizador de interrupção".

Suas perguntas parecem indicar que você tem uma compreensão fraca do que é externo a uma CPU e o que é interno a uma CPU. Por exemplo, a CPU executa instruções de máquina obtidas da memória. Interno para a CPU há um decodificador de instruções. Se você descrever essa operação interna como "a CPU decodifica a instrução", você criou um problema que diferencia as operações externas versus internas (nível baixo).

    
por 11.02.2016 / 08:40