web-dev-qa-db-ja.com

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

私はIRQについてたくさん読んでいますが、矛盾した古い情報があるようです。その一部はWindows95にまでさかのぼります。これが私が混乱していることです。

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

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

  3. PCI Expressができたので、PCIモードIRQを使用しますか(存在する場合)、どのように機能しますか(割り込みに関して)。

編集4.この写真を見ると、多くのIRQがあり、それらがメモリにマップされているように見えます。これの意味は何ですか? 16を超えるIRQがあります。 APICでさらに多くのことが可能になることは知っていますが、これだけですか?

enter image description here

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

2
rubixibuc

異なるモードはなく、古いISAバスとPCIバスには異なるハードウェアがあります。ISAバスは、バス上に16本のIRQラインを提供しました。プログラム可能な割り込みコントローラー(実際にはカスケード接続された8259Aチップのペア)は、これらのラインに優先順位を付け、アクティブなときにCPUにシグナルを送ることで、これらのラインに応答しました。これにより、CPUは割り込みサービスルーチンを呼び出しました。IRQ0 -7はint8-Fをトリガーし、IRQ8-15はint70-77をトリガーしました。割り込みはソフトウェアint命令を介してトリガーすることもでき、CPUは割り込みベクトルテーブルの対応するスロットが指すルーチンを呼び出します。

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

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

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

2
psusi