Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

IRQ(アイアールキュー)とは | 意味や読み方など丁寧でわかりやすい用語解説

IRQ(アイアールキュー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

割り込み要求 (ワリコミヨウキュウ)

英語表記

IRQ (アイアールキュー)

用語解説

IRQは、Interrupt Requestの略称であり、日本語では「割り込み要求」と訳される。これは、コンピュータのハードウェアデバイスが、CPUに対して何らかの処理を実行してほしいと要求するために使用する信号である。コンピュータシステムにおいて、CPUは計算や命令実行の中心的な役割を担うが、キーボード、マウス、ネットワークカード、ディスクコントローラといった多数の周辺デバイスも同時に動作している。これらのデバイスが自身の処理を必要とするタイミングで、CPUにその旨を効率的に伝えるための仕組みがIRQである。もしIRQの仕組みがなければ、CPUは定期的にすべてのデバイスの状態を一つずつ確認し、何か要求がないかを常に監視し続けなければならない。この方式はポーリングと呼ばれ、CPUのリソースを大量に消費する非常に非効率な方法である。IRQは、デバイス側から能動的にCPUに通知することで、CPUが本来の計算処理に集中し、必要な時だけデバイスの要求に対応できるようにするための重要な基盤技術となっている。例えば、ユーザーがキーボードのキーを押すと、キーボードコントローラがIRQ信号を発生させ、CPUに文字入力があったことを通知する。CPUはこの信号を受け取ると、現在実行中のタスクを一時的に中断し、キー入力の処理を行った後、元のタスクに復帰する。

IRQの具体的な処理の流れは、割り込みコントローラと呼ばれる専用のハードウェアを介して行われる。デバイスが処理を要求すると、まずデバイスに接続されたIRQラインと呼ばれる物理的な信号線を通じて、割り込みコントローラに信号が送られる。割り込みコントローラは、複数のデバイスからのIRQを一つにまとめ、優先順位を判断した上でCPUに割り込みを通知する。CPUは割り込み信号を受け取ると、現在実行しているプログラムのどの部分まで処理したかという情報(プログラムカウンタやレジスタの値など)をメモリ上のスタックと呼ばれる領域に一時的に保存する。これをコンテキストの保存と呼ぶ。次にCPUは、どのデバイスからの割り込み要求なのかを識別し、その割り込みに対応するために予めOSによって用意された専用のプログラムを呼び出す。このプログラムは割り込みハンドラ、または割り込みサービスルーチン(ISR)と呼ばれる。割り込みハンドラが実行され、デバイスからの要求(データの読み書きなど)が完了すると、CPUは先ほどスタックに保存したコンテキストを復元し、中断していた元のプログラムの処理を何事もなかったかのように再開する。

各IRQラインには、IRQ番号という一意の番号が割り当てられており、これによってどのデバイスからの要求なのかを区別することができる。初期のPCアーキテクチャでは、利用できるIRQ番号の数が8個、後に16個と限られていた。さらに、原則として一つのIRQ番号を複数のデバイスで共有することができなかったため、新しいデバイスを増設する際に空いているIRQ番号を探し、手動で設定する必要があった。これが原因で、異なるデバイスが同じIRQ番号を使用しようとして競合(コンフリクト)を起こし、システムが不安定になるという問題が頻発した。しかし、PCIバスの登場以降、IRQ共有の仕組みが導入され、さらにPlug and Play(PnP)技術によってOSが自動的にIRQ番号を各デバイスに割り当てるようになったため、手動設定の必要性はなくなり、リソースコンフリクトの問題は大幅に減少した。現代のシステムでは、APIC(Advanced Programmable Interrupt Controller)という、より高性能な割り込みコントローラが標準的に用いられている。APICは、従来のコントローラよりも多くのIRQを管理でき、マルチコアCPU環境において、特定のCPUコアに割り込みを振り分けるなど、より高度で効率的な割り込み制御を可能にしている。さらに近年では、MSI(Message Signaled Interrupts)やMSI-Xという新しい割り込み方式が主流となっている。これは、物理的なIRQラインを使わずに、メモリへの書き込み処理によって割り込みを通知する仕組みである。これにより、IRQ番号の物理的な制約から完全に解放され、仮想化環境など、より複雑なシステムにおいても柔軟かつ高性能な割り込み管理が実現されている。システムエンジニアは、システムのパフォーマンス分析やトラブルシューティングにおいてIRQを意識することがある。特定のデバイスからの割り込みが異常に多発してCPU負荷を増大させている場合、ドライバの設定を見直したり、ハードウェアの構成を変更したりする必要がある。Linuxシステムでは/proc/interruptsファイルを確認することで、各CPUコアがどのデバイスからどれだけの割り込みを受け取っているかを監視でき、問題の特定に役立てることができる。このようにIRQは、コンピュータの応答性と効率性を支える根幹的な技術であり、その仕組みと進化を理解することは、システムの動作原理を深く知る上で不可欠である。

関連コンテンツ