IRQ(アイアールキュー)

IRQ(アイアールキュー)

IRQ(アイアールキュー)

英語表記: Interrupt Request

概要

IRQ(Interrupt Request)は、周辺機器(I/Oデバイス)が中央処理装置(CPU)に対して、処理を要求するために送る電気信号、またはその信号線自体を指します。これは、コンピュータの構成要素の中でも、特に制御装置がプログラムの実行順序を効率的に操作するための、基本的な制御フロー管理メカニズムの一つです。IRQの存在により、CPUは低速なデバイスの応答を待つことなく、他のタスクを並行して実行できるため、システム全体の処理効率が飛躍的に向上します。

詳細解説

IRQは、CPUの貴重な処理時間を最大限に活用するために設計された、プッシュ型の通知システムです。もしこの仕組みがなければ、CPUはすべてのデバイスが処理を終えるまで、定期的に状態を尋ねる(ポーリング)必要があり、その間に多くの時間を無駄にしてしまいます。

制御フロー管理におけるIRQの役割

IRQの核心的な役割は、制御フロー管理を非同期的に行う点にあります。

通常のプログラム実行では、命令は順序立てて実行されます。しかし、外部からの緊急事態や、処理完了の通知があった場合、その通常の流れを一時的に中断し、外部の要求を優先的に処理しなければなりません。この「中断と切り替え」を実現するのが割り込み処理であり、IRQはそのトリガーとなる信号なのです。

制御装置であるCPUは、このIRQ信号を受け取ると、以下の手順で制御フローを切り替えます。

  1. 信号の発生と収集: I/Oデバイス(キーボード、ディスク、ネットワークなど)が、データ転送の完了やエラー発生など、CPUによる対応が必要な事態が起こった際にIRQ信号を発生させます。
  2. 優先度の決定: 複数のIRQ信号が同時に発生した場合に備え、「割り込みコントローラ(PIC)」という専用のハードウェアが信号を受け付け、あらかじめ設定された優先度に基づいて、CPUに通知する要求を決定します。このPICは、制御装置の効率的な動作を支える重要な補助役です。
  3. CPUの応答: CPUはPICから割り込み要求を受け取ると、現在実行中の命令を完了させた後、直ちに割り込みに対応します。この際、元の処理に戻れるように、レジスタの内容など現在の実行状態をメモリに退避(保存)します。
  4. サービスルーチンの実行: CPUはPICから割り込み番号(割り込みベクタ)を受け取り、その番号に対応する「割り込みサービスルーチン(ISR)」のアドレスを特定し、処理を開始します。このISRが、デバイスからの要求を具体的に処理するプログラムです。
  5. 制御フローの復帰: 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)は、各病棟に設置されています。

  1. ある病棟(例えば、ネットワークカード)で「患者の容態が急変した」(データ受信完了)という事態が発生すると、直ちに緊急コールボタン(IRQ)が押されます。
  2. このコールは、中央の「受付・司令塔」(割り込みコントローラ:PIC)に集まります。
  3. 司令塔は、他のコール(例えば、血液検査室からの結果報告)と比べて、どのコールが最も緊急性が高いかを判断します。
  4. 司令塔は外科医(CPU)に「緊急事態が発生しました」と通知します。
  5. 外科医は、現在の手術を一時中断し、現在の状況(手術の進行状況)を記録(状態の退避)します。
  6. 司令塔から「〇号室(割り込みベクタ)で心
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

両親の影響を受け、幼少期からロボットやエンジニアリングに親しみ、国公立大学で電気系の修士号を取得。現在はITエンジニアとして、開発から設計まで幅広く活躍している。

目次