コンピューティングにおいて、プログラマブル割り込みコントローラ( PIC )は、マイクロプロセッサ(またはCPU)が、同時に発生する可能性のある複数の異なるソース(外部I/Oデバイスなど)からの割り込み要求(IRQ)を処理するのに役立つ集積回路です。 [ 1 ] PICはIRQの優先順位付けを支援し、ICがIRQの相対的な優先順位を評価した後、CPUが最も適切な割り込みハンドラ(ISR)に実行を切り替えます。割り込み優先順位の一般的なモードには、ハード優先順位、ローテーション優先順位、カスケード優先順位などがあります。PIC は多くの場合、構成可能な方法で入力を出力にマッピングできます。PCアーキテクチャでは、PICは通常、チップセットベンダーの標準によって内部アーキテクチャが定義されているサウスブリッジチップに組み込まれています。
PIC(プロセス集積回路)は通常、割り込み要求レジスタ(IRR)、インサービスレジスタ(ISR)、割り込みマスクレジスタ(IMR)という共通のレジスタセットを備えています。IRRは、応答待ちの割り込みを指定するレジスタで、通常は直接アクセスできないシンボリックレジスタです。ISRレジスタは、応答済みだが割り込み終了(EOI)を待っている割り込みを指定します。IMRは、無視して応答しない割り込みを指定します。このようなシンプルなレジスタ構成では、応答待ちとEOI待ちの2つの割り込み要求を同時に処理できます。
PIC(プロセス情報センター)には、ハードプライオリティ、特定プライオリティ、ローテーションプライオリティなど、いくつかの一般的な優先順位付け方式が存在する。
割り込みは、エッジトリガーまたはレベルトリガーのいずれかになります。
EOIが発行された際に、割り込みが完了したことを確認する一般的な方法はいくつかあります。これには、どの割り込みが完了したかを指定する方法、完了したとみなされる割り込み(通常はISRで保留中の最も優先度の高い割り込み)を使用する方法、および割り込み確認をEOIとして扱う方法などがあります。
最もよく知られているPICの1つである8259Aは、 x86 PCに搭載されていました。現代では、これはx86 PCに独立したチップとして搭載されるのではなく、マザーボードのサウスブリッジチップセットの一部として搭載されています。[ 2 ]他のケースでは、より多くの割り込み出力とより柔軟な優先順位スキームをサポートする新しいAdvanced Programmable Interrupt Controllerに置き換えられています。