IRQ(アイアールキュー)
英語表記: Interrupt Request
概要
IRQ(Interrupt Request)は、周辺機器(I/Oデバイス)が中央処理装置(CPU)に対して、処理を要求するために送る電気信号、またはその信号線自体を指します。これは、コンピュータの構成要素の中でも、特に制御装置がプログラムの実行順序を効率的に操作するための、基本的な制御フロー管理メカニズムの一つです。IRQの存在により、CPUは低速なデバイスの応答を待つことなく、他のタスクを並行して実行できるため、システム全体の処理効率が飛躍的に向上します。
詳細解説
IRQは、CPUの貴重な処理時間を最大限に活用するために設計された、プッシュ型の通知システムです。もしこの仕組みがなければ、CPUはすべてのデバイスが処理を終えるまで、定期的に状態を尋ねる(ポーリング)必要があり、その間に多くの時間を無駄にしてしまいます。
制御フロー管理におけるIRQの役割
IRQの核心的な役割は、制御フロー管理を非同期的に行う点にあります。
通常のプログラム実行では、命令は順序立てて実行されます。しかし、外部からの緊急事態や、処理完了の通知があった場合、その通常の流れを一時的に中断し、外部の要求を優先的に処理しなければなりません。この「中断と切り替え」を実現するのが割り込み処理であり、IRQはそのトリガーとなる信号なのです。
制御装置であるCPUは、このIRQ信号を受け取ると、以下の手順で制御フローを切り替えます。
- 信号の発生と収集: I/Oデバイス(キーボード、ディスク、ネットワークなど)が、データ転送の完了やエラー発生など、CPUによる対応が必要な事態が起こった際にIRQ信号を発生させます。
- 優先度の決定: 複数のIRQ信号が同時に発生した場合に備え、「割り込みコントローラ(PIC)」という専用のハードウェアが信号を受け付け、あらかじめ設定された優先度に基づいて、CPUに通知する要求を決定します。このPICは、制御装置の効率的な動作を支える重要な補助役です。
- CPUの応答: CPUはPICから割り込み要求を受け取ると、現在実行中の命令を完了させた後、直ちに割り込みに対応します。この際、元の処理に戻れるように、レジスタの内容など現在の実行状態をメモリに退避(保存)します。
- サービスルーチンの実行: CPUはPICから割り込み番号(割り込みベクタ)を受け取り、その番号に対応する「割り込みサービスルーチン(ISR)」のアドレスを特定し、処理を開始します。このISRが、デバイスからの要求を具体的に処理するプログラムです。
- 制御フローの復帰: ISRの処理が完了すると、CPUは退避しておいた状態を復元し、中断していた元のプログラムの実行を再開します。
この一連の動作により、制御装置は、緊急性の高いタスクと通常のタスクを巧みに切り替えながら、システム全体としての応答性と効率性を高めているのです。これは、マルチタスク環境において、システムが安定して動作するための土台となる仕組みであり、非常に洗練されていると感じます。
ハードウェアとしてのIRQ
かつてのPC/AT互換機では、IRQは物理的な信号線として定義されており、通常はIRQ0からIRQ15までの16本が用意されていました。各信号線には、タイマー(IRQ0)、キーボード(IRQ1)、フロッピーディスク(IRQ6)といった具合に、特定のデバイスが割り当てられていました。
現代のシステムでは、PCIやPCI Expressといったバス技術の進化により、IRQの管理はより柔軟な方式(メッセージシグナル割り込みなど)に移行していますが、根本的な「割り込み要求」という概念と、それを制御装置が管理するという仕組みは変わっていません。
具体例・活用シーン
具体例:マウスの動き
私たちがマウスを動かすとき、その動作は一瞬で終わりますが、その裏側ではIRQが活用されています。マウスが動いたという情報は、マウスコントローラ(デバイス)によって検出され、直ちにCPUに対してIRQ信号として送信されます。
もしIRQがなければ、CPUは「マウスが動いたかどうか?」を何万回も繰り返し確認しなければなりません。しかし、IRQのおかげで、CPUは「マウスが動いたときにだけ」その処理に集中すればよく、他の重要なアプリケーションの処理を妨げずに済みます。
アナロジー:病院の緊急コール(メタファー)
IRQの仕組みは、大規模な病院における「緊急コールシステム」に例えると、その重要性がよく理解できます。
CPUは「病院の外科医(または専門医)」だと考えてください。外科医は、メインの重要な手術(通常のプログラム実行)に集中しています。
I/Oデバイスは「各病棟や検査室」です。
緊急コールボタン(IRQ)は、各病棟に設置されています。
- ある病棟(例えば、ネットワークカード)で「患者の容態が急変した」(データ受信完了)という事態が発生すると、直ちに緊急コールボタン(IRQ)が押されます。
- このコールは、中央の「受付・司令塔」(割り込みコントローラ:PIC)に集まります。
- 司令塔は、他のコール(例えば、血液検査室からの結果報告)と比べて、どのコールが最も緊急性が高いかを判断します。
- 司令塔は外科医(CPU)に「緊急事態が発生しました」と通知します。
- 外科医は、現在の手術を一時中断し、現在の状況(手術の進行状況)を記録(状態の退避)します。
- 司令塔から「〇号室(割り込みベクタ)で心