Programmable Interrupt Controller
プログラム可能割り込みコントローラ(PIC)詳解
プログラム可能割り込みコントローラ(PIC)は、複数の周辺機器からの割り込み要求を管理し、処理する重要なデバイスです。本稿では、PICの仕組み、機能、および代表的なPICについて解説します。
PICの機能と優先順位制御
PICは、複数の割り込み出力に対して優先順位を割り当てることができます。複数のデバイスから同時に割り込み要求があった場合、PICは設定された優先順位に従って割り込みを処理します。
PICには、主に以下の3種類の優先順位制御モードが存在します。
ハード優先順位 (Hard Priority): 割り込みごとに固定の優先順位が割り当てられます。
ローテーション優先順位 (Rotating Priority): 割り込みが処理されるたびに、優先順位が巡回的に変更されます。
カスケード優先順位 (Cascading Priority): 複数のPICを接続し、階層的な優先順位制御を実現します。上位のPICが下位のPICの割り込み要求を仲介します。
多くのPICでは、複数のPICをカスケード接続することで、より多くの割り込みを管理することが可能です。
PICの共通レジスタ
PICは、一般的に以下の共通レジスタセットを持ちます。
割り込み要求レジスタ (Interrupt Request Register, IRR): 処理待ちの割り込み要求を示します。通常、直接アクセスできません。
サービス中レジスタ (In-Service Register, ISR): 処理中の割り込み要求を示します。
割り込みマスクレジスタ (Interrupt Mask Register, IMR): 無視する割り込み要求を指定します。
これらのレジスタを用いることで、複数の割り込み要求を効率的に管理し、重要な割り込みを優先的に処理することができます。例えば、同時に2つの割り込み要求があった場合、一つは処理待ち(IRR)、もう一つは処理中(ISR)として管理することで、処理の順番を制御します。
割り込みの種類とEOI
PICは、通常、エッジトリガ方式とレベルトリガ方式のいずれかの割り込みをサポートします。
割り込み処理が完了したことをPICに通知するには、EOI(End of Interrupt)信号を送信します。EOIの処理方法はPICによって異なりますが、完了した割り込みを明示的に指定する方法や、ISRレジスタに保持されている最も優先度の高い割り込みを暗黙的に完了とする方法などがあります。
代表的なPIC: 8259Aとその後の発展
最も有名なPICの一つに、8259Aがあります。これはかつてx86アーキテクチャのPCで広く利用されていましたが、現代のPCではマザーボードのサウスブリッジにその機能が統合されています。
近年では、8259Aよりも多くの割り込み出力と高度な優先順位制御機能を備えた、より高度なプログラマブル割り込みコントローラ(APICなど)が使用されています。これらの高度なPICは、マルチプロセッサシステムや複雑な割り込み処理を必要とするシステムに適しています。
まとめ
PICは、コンピュータシステムにおいて、複数の周辺機器からの割り込み要求を効率的に管理する上で重要な役割を果たしています。本稿で解説したPICの機能、レジスタ、優先順位制御、そして代表的なPICである8259Aとその後の発展を理解することで、システム設計や開発において、より高度な割り込み処理設計が可能になります。