プログラマブル割り込みコントローラをバイパスするマスク不可能な割り込み用の別の通信バスはありますか?
それとも、PIC はすべての割り込みを管理しますが、規則に従ってすべてのマスク不可能なものを渡しますか?
これはアーキテクチャに依存していますか、それとも一般的にどちらかを優先する特定の理由がありますか?
プログラマブル割り込みコントローラをバイパスするマスク不可能な割り込み用の別の通信バスはありますか?
それとも、PIC はすべての割り込みを管理しますが、規則に従ってすべてのマスク不可能なものを渡しますか?
これはアーキテクチャに依存していますか、それとも一般的にどちらかを優先する特定の理由がありますか?
私の答えは、遥か昔に遠い銀河系でコンピューターを設計しているときに得たハードウェアの経験から得たものです。SO hereを熟読していると、 Intelのia32 64ビットシステムのソフトウェア開発マニュアルをダウンロードできる場所を発見しました。
最初の質問に対する答えは、NMI は、PIC で構成されたマスク可能な割り込みから分離されたプロセッサのピンであるということです。
2 番目の質問に対する答えは、PIC は NMI とは何の関係もないということです。ただし、APIC または Advanced Programmable Interrupt Controller を使用している場合は、マニュアルに記載されているように NMI を生成できます。
プロセッサは、配信モード NMI を使用して、システム バス (Pentium 4、Intel Core Duo、Intel Core 2、Intel Atom、および Intel Xeon プロセッサ) または APIC シリアル バス (P6 ファミリおよび Pentium プロセッサ) でメッセージを受信します。
3 番目の質問への回答は、2 番目の質問への回答で確認できます。つまり、ハードウェアに APIC (PIC だけでなく) がある場合です。APIC が NMI を送信する方法についてさらに詳しく知りたい場合は、私が提供した SO リンクを参照してください。APIC ではなく、「低い」PIC について尋ねていたので、ここでは詳細には触れませんでした。しかし、念のため、SO リンクで多くの情報を見つけることができると思います。それで十分でない場合は、先に進んで Intel のマニュアルをダウンロードしてください。
これでいくつかのことが明確になることを願っています。乾杯!
PIC (プログラマブル割り込みコントローラー) は、x86 の NMI (マスク不可能な割り込み) を管理しません。NMI はプロセッサに直接送信されるか、別のコントローラを介して送信されます。ISP。OSDev: マスク不可能な割り込みを参照してください。
ただし、リンクによると、次の方法で NMI を無効にすることができます。
/* enable the NMI */
void NMI_enable(void)
{
outb(0x70, inb(0x70)&0x7F);
}
/* disable the NMI */
void NMI_disable(void)
{
outb(0x70, inb(0x70)|=0x80);
}