割り込み処理の調査
割り込みは例外処理の1つである。割り込みのステップを次に示す。
- 検出
- ステータスレジスタの内容をCPU内で内部的にコピーしスーパバイザ状態に移行する。
トレースビットを0にしてトレースを禁止する。
ステータスレジスタの割り込みプライオリティマスクが更新され、現在受け付けている割り込みのレベルにセットされる。
- ベクタの発生
- 割り込み処理を要求している外部でデバイスが割り込みベクタ番号を出力するか、またはオートベクタ割り込みによってCPU内部で割り込みベクタを発生する。
- CPU実行状態の待避
- プログラムカウンタの値とステータスレジスタの内容がスーパバイザスタックに待避される。
- 例外処理の実行
- 例外処理プログラムの先頭アドレスをプログラムカウンタにセットし、処理プログラムを実行する。
例外処理プログラムが終了そたらCPUはステータスレジスタのSビットを”0”にし、スーパバイザスタックから例外処理以前のプログラムカウンタの値とステータスレジスタの値を復帰する。
*2の補足:割り込みの要求
割り込みでは、割り込みを発生したデバイスが割り込みベクタをデータバス上に出力することにより、割り込みベクタ番号をCPUに知らせる必要がある。
- オートベクタ割り込み
- オートベクタ割り込みのレベルに応じてCPU自身によって割り込みベクタ番号を発生する方法である。
- I/Oからの割り込みベクタ
- 割り込みベクタを周辺LSIから読み込もうとすると、割り込み制御回路は割り込みレベルを知る必要がある。オートベクタでない割り込みの場合には、割り込みレベルに応じて割り込みを発生したデバイスが割り込みベクタを出力する。
- 複数のレベルの割り込み源から割り込み要求がだされる場合のために、割り込みレベルをアドレスバスのA1〜A3るに割り込みレベルを出力する。
-
割り込みレベル
68000の割り込みレベルは、1〜7まであり、優先度は数が大きいほど高くなっている。割り込み処理をしている時に割り込みがきたら図1のように処理する。
目次に戻る