
IBM PC互換コンピュータでは、割り込み要求(IRQ)は、実行中のプログラムを一時的に停止させ、代わりに割り込みハンドラと呼ばれる特別なプログラムを実行させるためにプロセッサに送信されるハードウェア信号です。ハードウェア割り込みは、モデムやネットワークカードからのデータ受信、キー入力、マウス操作などのイベントを処理するために使用されます。
割り込みラインは、 IRQの後に番号が続く形式のインデックスで識別されることがよくあります。たとえば、Intel 8259ファミリのプログラマブル割り込みコントローラ(PIC) には、 IRQ0からIRQ7と呼ばれる 8 つの割り込み入力があります。これらのPIC を2 つ使用するx86ベースのコンピュータ システムでは、ラインの組み合わせはIRQ0からIRQ15と呼ばれます。技術的には、これらのラインはIR0からIR7と名付けられ、歴史的にそれらが接続されていたISAバス上のラインはIRQ0からIRQ15と名付けられています(ただし、歴史的には、ハードウェア デバイスの数が増えるにつれて、割り込みの総数は、1 つの IRQ 番号を別の番号付き IRQ のセットにカスケード接続し、1 つ以上の後続コントローラで処理することで、カスケード要求によって増加しました)。
最新のx86システムには、Intel APICアーキテクチャに準拠したAdvanced Programmable Interrupt Controller(APIC)が統合されています。各ローカルAPICは通常最大255のIRQラインをサポートし、各I/O APICは通常最大24のIRQラインをサポートします。[ 1 ]
パーソナルコンピューティングの初期の頃は、IRQ管理はしばしばユーザーの懸念事項でした。プラグアンドプレイデバイスの導入により、自動構成によってこの問題は軽減されました。[ 2 ]
パーソナルコンピュータのハードウェアを操作する際、デバイスのインストールや取り外しを行う際、システムは割り込み要求に依存します。システムBIOSにはデフォルト設定が設定されており、オペレーティングシステムによって認識されます。これらのデフォルト設定は、上級ユーザーであれば変更できます。最新のプラグアンドプレイ技術は、これらの設定を気にする必要性を減らせただけでなく、手動設定をほぼ完全に排除しました。
Intel 8086/8088プロセッサを搭載した初期のPCはPICが1つしか搭載されていなかったため、割り込み数は8つに制限されていた。286ベースのPCの登場により、PICは2つに拡張された。
通常、 Intel 8259 PICを使用するシステムでは、16個のIRQが使用されます。IRQ 0~7は1つのIntel 8259 PICによって管理され、IRQ 8~15は2つ目のIntel 8259 PICによって管理されます。最初のPIC(マスター)は、CPUに直接信号を送る唯一のPICです。2つ目のPIC(スレーブ)は、IRQ 2ラインでマスターに信号を送り、マスターはその信号をCPUに渡します。したがって、ハードウェアで使用できる割り込み要求ラインは15本のみとなります。
IOAPICシステムを搭載した APIC では、通常 24 個の IRQ が使用可能で、追加の 8 個の IRQ は PCI 割り込みのルーティングに使用され、動的に構成された PCI 割り込みと静的に構成された ISA 割り込みの間の競合を回避します。 16 個の IRQ しかない、または Intel 8259 割り込みコントローラしかない初期の APIC システムでは、BIOS に統合された PIR (PCI 割り込みルーティング) テーブルを使用して、PCI 割り込みラインが 16 個の IRQ にルーティングされました。Windows 95 OSR2などのオペレーティングシステムは、PCI IRQ ステアリングを処理するために PIR テーブルを使用する場合があります。[ 3 ] [ 4 ]その後、PIR テーブルはACPI _PRT (PCI ルーティングテーブル) プロトコルに置き換えられました。 MSIシステムを搭載した APIC では、通常 224 個の割り込みが使用可能です。[ 5 ]
Windowsでこの情報を確認する最も簡単な方法は、デバイスマネージャーまたはシステム情報(msinfo32.exe)を使用することです。Linuxではcat /proc/interrupts、IRQマッピングはユーティリティを実行するか使用することで確認できますprocinfo。
初期のIBM互換パーソナルコンピュータでは、IRQ競合はかつてよく見られたハードウェアエラーで、2つのデバイスが同じ割り込み要求(IRQ)を使用してプログラマブル割り込みコントローラ(PIC)に割り込みを通知しようとしたときに発生しました。PICは1回線につき1つのデバイスからの割り込み要求のみを想定しているため、同じ回線で複数のデバイスがIRQ信号を送信すると、一般的にIRQ競合が発生し、コンピュータがフリーズする可能性があります。
例えば、モデム拡張カードをシステムに追加して、従来シリアルポート 1 に割り当てられていた IRQ4 に割り当てると、IRQ の競合が発生する可能性が高くなります。当初、サウンド カード の使用には IRQ 7 がよく使われていましたが、 IRQ 7 がプリンタ ポート( LPT1 ) と干渉することがわかったため、後に IRQ 5 が使われるようになりました。シリアル ポートは、他のデバイス用に IRQ ラインを解放するために、頻繁に無効化されます。IRQ 2/9 は、MPU-401 MIDI ポートの従来の割り込みラインですが、これはACPIシステム制御割り込み (SCI は Intel チップセットでは IRQ9 にハードワイヤードされています) と競合します。[ 6 ]これは、ハードワイヤード IRQ 2/9 を持つISA MPU-401カード、およびハードコード IRQ 2/9 を持つ MPU-401 デバイス ドライバは、ACPI が有効になっているシステムでは割り込み駆動モードで使用できないことを意味します。
特定の条件下では、2つのISAデバイスが同時に使用されない限り、同じIRQを共有することが可能でした。この問題を解決するため、後継のPCIバスではIRQの共有が可能になりました。PCI Expressには物理的な割り込み線がなく、利用可能な場合はメッセージシグナル割り込み(MSI)を使用してオペレーティングシステムに割り込みを送信します。