IRQ と割り込みベクターテーブル

IRQ と割り込みベクターテーブル

IRQ についていろいろ読んできましたが、矛盾した古い情報があるようです。その一部は Windows 95 にまで遡ります。私が混乱しているのは次の点です。

  1. ソフトウェア割り込みとハードウェア割り込みは両方とも割り込みベクター テーブルによって管理およびディスパッチされますか。そうでない場合は、どのように異なる方法で制御されますか。

  2. PCI モード IRQ と ISA モード IRQ には違いがあると読みましたが、これは本当ですか? もし本当なら、モードをどのように設定し、どのように機能が異なるのですか?

  3. PCI Express が利用可能になりましたが、PCI モード IRQ (存在する場合) は使用されますか。また、どのように動作しますか (割り込みに関して)。

編集 4。この図を見ると、多くの IRQ があり、それらがメモリにマップされているように見えます。これは何を意味しますか? 16 個よりはるかに多い IRQ があります。APIC ではもっと多くの IRQ が許可されていることは知っていますが、これほど多いのでしょうか?

ここに画像の説明を入力してください

前もって感謝します :-)

答え1

異なるモードがあるわけではなく、古い ISA バスと PCI バスには異なるハードウェアがあるだけです。ISA バスは、デバイスが注意を促すために使用できる 16 本の IRQ ラインをバス上に提供しました。プログラマブル割り込みコントローラ (実際にはカスケード接続された 8259A チップのペア) は、これらのラインに優先順位を付け、1 つがアクティブになると CPU に信号を送信することで、これらのラインに応答しました。これにより、CPU は割り込みサービス ルーチンを呼び出しました。IRQ 0-7 は int 8-F をトリガーし、IRQ 8-15 は int 70-77 をトリガーしました。割り込みはソフトウェアの int 命令によってトリガーすることもでき、これにより CPU は割り込みベクター テーブル内の対応するスロットが指すルーチンを呼び出しました。

バス上のすべてのデバイスで共有される 16 本の IRQ ラインの代わりに、PCI はバス上の各スロットに INTA-INTD という名前の 4 本の異なる IRQ ラインを提供し、各デバイスが独自に使用できるように最大 4 本の異なる IRQ を持つことができました。実際には、デバイスは INTA のみを使用し、ハードウェアがそれを特定の IRQ にルーティングします。

画像に表示されている数字はメモリ アドレスではなく、単に IRQ 番号の 16 進表現です。

APIC は 256 個の割り込みベクターをサポートします。

関連情報