割り込みコントローラとは、プロセッサに設けられた一つのIRQ端子を複数のIRQ端子に拡張するための論理回路のことです。
割り込みコントローラは、プロセッサのペリフェラルです。
割り込みコントローラを使うことにより、複数のハードウェア割り込みを効率的に処理することができます。
割り込みコントローラは、あるIRQ端子でIRQが発生すると、プロセッサのIRQ端子にハードウェア割り込みを掛けます。
その割り込み処理の中で、割り込みコントローラに割り当てられたI/Oアドレスに対するIN命令を使って、IRQが発生したIRQ端子の番号を読み出します。この番号を指定して、ソフトウェア割り込み命令を実行します。
この番号に対応した割り込み処理は、割り込みベクタで指定できるので、割り込みコントローラで発生したそれぞれのIRQに対して、任意の割り込み処理を実行できます。
一般的な割り込みコントローラは、以下の設定が可能です。
・IRQの有効と無効の設定
・IRQの優先度の設定
・IRQの受付再開の設定
これらは、OUT命令を使って設定します。詳細は、プロセッサのペリフェラルを確認してください。
これは、割り込みコントローラが拡張した複数のIRQ端子のそれぞれIRQの有効と無効の設定です。
あるIRQを無効設定にすると、プロセッサにそのIRQが発行されなくなります。
これは、割り込みコントローラで同時に複数のIRQが発生したり、あるIRQの処理中に別のIRQが発生したりした場合に、どういう優先度でプロセッサにIRQを発行するかの設定です。
詳細は、利用する割り込みコントローラの仕様を確認してください。
IRQ端子でIRQが発生すると、そのIRQ端子で新たにIRQが発生しても割り込みコントローラは、それを無視します。
そのIRQ端子でのIRQの受付を再開させるには、OUT命令を使って、そのIRQ端子に対して、受付再開の設定をする必要があります。