CPU 如何知道何时发生中断?

CPU 如何知道何时发生中断?

我正在编写一个模拟器,但似乎找不到这方面的信息。我所知道的是设备会在 IRQ 线上触发脉冲。但网上的解释不包括 CPU 如何处理这个问题。中断真的会导致 CPU 放弃一切并处理它吗?还是 CPU 在每个周期都会检查 IRQ 的状态?此外,还有其他处理中断的方法吗?例如,任天堂 Game Boy 显然使用内存中的保留位置作为中断标志,它告诉 CPU 在哪里调用子例程来处理该中断(我最好的猜测是这个标志是由 DMA 写入的)。这在旧系统上是常见的还是标准的?

答案1

我知道的是设备在 IRQ 线上触发脉冲。

可能是脉冲,但更常见的是电平。
只有在确认中断后,请求线才会被取消。

中断是否真的会导致 CPU 放弃一切并处理它?

实际上是的,以有序的方式。这就是为什么它被称为“中断”。

或者 CPU 在每个周期都会检查 IRQ 的状态?

不,CPU 确实被中断了(在完成一条指令时)。
但是如果你深入了解一下,即 CPU 本身是如何工作的,就会发现有一个状态机在检查 IRQ 线。

例如,任天堂 Game Boy 显然使用内存中的保留位置作为中断标志,它告诉 CPU 在哪里调用子例程来处理该中断

这听起来有点像中断向量,它在许多 CPU 架构中使用。但它不用作“中断标志”。

您的问题似乎表明您对 CPU 外部和内部的理解不够深入。例如,CPU 执行从内存中获取的机器指令。CPU 内部有一个指令解码器。如果您将此内部操作描述为“CPU 解码指令”,那么您就无法区分外部和内部(低级)操作。

相关内容