IRQ【Interrupt Request】割り込み要求
概要

CPUは通常、プログラムの命令を順番に実行しているが、IRQを受け取ると現在の処理を一時中断し、その機器に対応した処理を実行する。完了後は中断していた処理を再開する。この仕組みを「割り込み」(interrupt)と呼び、CPUが周辺機器の状態を常時監視することなく、必要なタイミングで処理を開始できる。
割り込み処理への対応はあらかじめ登録された「割り込みハンドラ」(割り込みサービスルーチン)が行う。CPUは割り込みコントローラから通知されたIRQ番号を参照し、対応するハンドラへ制御を移す仕組みになっている。
PC/AT互換機のIRQ
いわゆるPC/AT互換機では、0~15の16種類のIRQ番号が用意されていた。タイマーやキーボード、シリアルポートなどの内部装置にはそれぞれ固有の番号が固定的に割り当てられており、拡張カードが利用できる番号はごくわずかしか残らなかった。複数の機器が同じ番号を要求するIRQ競合が発生すると、機器が正常に動作しなくなることがあり、利用者がBIOS設定画面やスイッチを操作して手動で番号を変更する必要もあった。
PCIバスの導入により複数の拡張カードでIRQ番号を共有できるようになり、装置間の番号の競合の問題は緩和された。さらに、プラグアンドプレイ機能の普及でオペレーティングシステム(OS)による自動割り当てが標準となり、利用者が番号を意識する場面はほとんどなくなった。
PCIバス後継のPCI Expressでは「メッセージシグナル割り込み」(MSI:Message Signaled Interrupts)と呼ばれる方式が導入され、物理的な信号線ではなくバス上のメッセージによって割り込みを通知する。現代のシステムではAPIC(Advanced Programmable Interrupt Controller)により多数の割り込みを処理し、複数のCPUコアへ振り分けることも可能となっている。