割り込みの解説:種類、メカニズム、現代コンピューティングでの応用
現代PCは割り込み要求(IRQ)に依存してハードウェア機能を調整。概念は1953年のUNIVAC 1103に遡り、IBM 650が1954年に割り込みマスキングを導入。個々のデバイスに固有のIRQラインを割り当てることは効率的動作に不可欠。キーボードやマウスなどのペリフェラルがCPUの注意を必要とするとき、割り込みを生成し、対応する割り込みサービスルーチン(ISR)をトリガー。ISRは時間クリティカルなタスク、データ転送、エラー処理、ウォッチドッグタイマー、トラップに不可欠です。
割り込みとは
定義: 割り込みは、ハードウェアとソフトウェアイベントの中で最高優先度を持つ、プロセッサの即時注意を要求する入力信号です。初期コンピューティングでは、プロセッサがすべてのペリフェラルとプログラムをポーリングして信号を確認する必要があり、クロックサイクルを浪費しパフォーマンスを低下させました。割り込みメカニズムはこのモデルを逆転:ペリフェラルまたはソフトウェアモジュールがCPUに信号を送り、CPUは現在のタスクを中断、状態を保存、適切なISRを実行。ISR完了後、CPUは前の状態を復元し実行を継続。
割り込みの種類
割り込みは大きく2カテゴリに分類されます。
ハードウェア割り込み
外部デバイスからCPUに送られる電子信号で、即時サービスを要求。キーボード入力、マウス移動、センサーアラートが典型例。ハードウェア割り込みは非同期で、命令実行中の任意の時点で到着。
ハードウェア割り込みはさらに細分:
- マスク可能割り込み – プロセッサの割り込みマスクレジスタが特定の割り込みソースを有効/無効化制御。レジスタの各ビットが特定のIRQラインに対応;ビットセットで割り込みサービス許可、クリアでブロック。
- 非マスク可能割り込み(NMI) – 最高優先度でプロセッサでは無効化不可。ウォッチドッグタイマー期限切れやハードウェア障害などクリティカルイベントで使用。
ソフトウェア割り込み
CPU自体が特殊命令実行時やプログラム実行中の例外条件発生時に割り込みを生成。ソフトウェア割り込みはシステムコール、例外処理、トラップルーチンを可能にします。
トリガー方式
割り込みラインはロジックレベルまたは信号エッジでトリガー可能。これら2アプローチはソースがCPUに信号を送る方法で異なります。
レベルトリガー割り込み
このモードでは、ソースがサービスを必要とする限り割り込みラインがアサートされたまま。ISR実行中にソースがアクティブなままなら、完了後にCPUがハンドラを再呼び出し。レベルトリガー入力は信号が長期間アサートされ続けると問題になり得ます。
エッジトリガー割り込み
エッジトリガー割り込みは、信号がロー→ハイまたはハイ→ローに遷移した瞬間に発火。CPUは信号レベルでなく遷移のみに依存するため、高速なワンショットイベントに適しています。
システム実装
割り込みは専用制御ラインとしてハードウェアに配線されるか、メモリサブシステム内に埋め込まれます。プログラマブル割り込みコントローラー(PIC)実装時、複数ソースが単一CPUピンを共有し、配線簡素化と優先度仲裁を可能にします。
共有割り込み要求(IRQ)
エッジトリガー割り込みでは、プルアップ/プルダウン抵抗がラインを既知状態に維持。各デバイスのパルスが共有ラインを伝播し、CPUがトレーリングエッジでラインをサンプリングしてパルスを見逃さない。古いISAボードは共有IRQに依存し競合を引き起こす可能性;現代のPCIアーキテクチャは専用コントローラーと動的割り当てでこれを緩和。
ハイブリッド
ハイブリッドシステムはエッジトリガーとレベル検証を組み合わせ、アクティブ信号が無視されないよう確保。非マスク可能入力で一般的、誤検知を低減。
メッセージシグナル割り込み
専用ラインの代わりに、デバイスがPCI Expressなどのバス経由でメッセージを送信しCPUに通知。物理ピンを排除し高スループットをサポート。
ドアベル
ドアベル割り込みはソフトウェア駆動信号で、デバイスが共有メモリ領域にデータを書き込み、その後割り込みをトリガーし、CPUが準備完了データを処理。
マルチプロセッサIPI
マルチコアシステムでは、1プロセッサが別プロセッサにプロセッサ間割り込み(IPI)を送信し、コア間でタスク調整やイベント通知。
典型的用途/応用
- ハードウェアタイマー処理とキーボード/マウス入力処理。
- 時間クリティカルまたはリアルタイムイベントへの応答。
- ペリフェラルデバイスとのデータ転送管理。
- 電源断要求、トラップ、ウォッチドッグタイマーなど高優先度信号処理。
- 異常CPUイベント報告。
- 外部電源喪失時の秩序ある電源断。
- 絶対時刻管理用周期割り込み生成。
FAQ
1. なぜ割り込みが使用される?
割り込みはCPUの焦点を緊急ハードウェア/ソフトウェアタスクに向け、常時ポーリングなしでタイムリーな応答を可能にする。
2. NMIとは?
NMIはNon-Maskable Interruptの略で、プロセッサで無効化できない信号、クリティカルイベント専用。
3. 割り込み確認ラインの機能は?
CPUが割り込み受信準備完了をデバイスに通知、デバイスがバスにISRアドレスを配置可能にする。
4. ハードウェア割り込みを説明。例を挙げよ。
ハードウェア割り込みは外部デバイス(キーボード押下、マウスクリック、センサー出力)により生成され、即時CPUサービスを要求。
5. ソフトウェア割り込みを説明。
ソフトウェア割り込みはプロセッサが特殊命令(システムコール、例外処理ルーチン)で呼び出し。
6. 最高優先度の割り込みは?
- 非マスク可能割り込み(NMI)とトラップが最高優先度。
7. 割り込みの用途をいくつか挙げよ。
- リアルタイムイベントへの迅速応答。
- ペリフェラルデバイスとのデータ転送。
- 電源断、ウォッチドッグタイマーなどクリティカルタスク処理。
- 異常CPUイベント報告。
8. ハイブリッドタイプのシステム実装とは?
ハイブリッドシステムはエッジトリガーとレベル検証信号を両用し、真のイベントを取得しながら誤トリガーを低減。
この記事では、割り込みの重要性、種類、システム統合、実用応用を詳述。
埋め込み