我们有I/O
中断值来对任务进行优先排序,以便在计算机上做出更好的响应,但是我们为计算机上的哪个模块保留了Non-Maskable interrupts
中断值,以及它是什么Non-Maskable interrupts
?
答案1
NMI 的一个例子是嵌入式系统。考虑一下静电放电导致处理器失灵的可能性,处理器可能会陷入循环。
如果在常规中断关闭时发生此循环,则系统无法从错误模式中恢复。由于 NMI 不可屏蔽,即永远无法禁用,因此 NMI 上的信号可以使处理器恢复工作状态。该信号可能来自看门狗定时器、协处理器或人为激活的按钮
复位线类似于 NMI,只不过它不是中断。如果中断处理程序判定不是真正发生的故障,则无法恢复后台任务。NMI 中断处理程序有此选项。
考虑一下热事件等情况,需要采取措施防止损坏,或者电源故障,需要在电源完全断电之前将数据备份到非易失性存储器中。这些是经常使用 NMI 的事件。
答案2
通常,可以将 CPU 设置为忽略正常中断 (IRQ),并为此提供“中断禁用”或“中断屏蔽”寄存器或位。这是理想的,因为您通常不希望在处理 IRQ 时“再次被中断”。
NMI 是一种非复位中断,不能被 CPU 屏蔽或忽略 - 没有禁用或屏蔽寄存器。
生成 NMI 的硬件通常可以被告知不要生成它们,因此它们通常可以间接禁用。例如,在 8 位 NES 上,显示芯片将在绘制帧结束时生成 NMI,但您可以在某个寄存器上设置某个位来告诉显示芯片不要这样做。连接到 CPU 的 NMI 引脚的其他硬件仍然可能导致 NMI。
x86 硬件通常使用 NMI 来指示芯片组发生的致命硬件错误。Windows 将在收到 NMI 时立即停止(例子您不能在 x86 硬件上将 NMI 用于其他任何用途(编辑:我可能错了,请阅读下面的链接),并且可以通过写入特定 I/O 端口来告诉芯片组(或某些芯片组)不要发送 NMI。
我认为 ECC RAM 中无法纠正的错误会触发这种情况。现代 x86 CPU 提供了一种称为“机器检查异常”的机制,该机制也会在硬件相关问题上触发,因此较新的芯片组可能会做不同的事情。阅读这以获得进一步的见解。