最終更新:2016-09-16 (金) 16:20:33 (3103d)
割り込み
Top / 割り込み
あらかじめ用意したサブルーチンを,外部からの信号によって起動する仕組み
概要
- CPUは、割り込み信号を受けとると現在実行中のプログラムを一時中断し て、「割り込みハンドラ」や「割り込みサービスルーチン(ISR)」と呼ばれるプログラムに制御を移す。
- 割り込みハンドラでは、入力処理や次の出力処理を行う。
- 割込処理を実行するために、どこの場所(アドレス)に飛べば良いかを示す情報は、割り込みベクタテーブルに書かれている
動作
割り込みコントローラ側
- 周辺機器がPIC(割り込みコントローラ)に信号を送る(IRxをhighに)と、PICがMPUに割り込みベクタ番号を送る(INTをhighに&D0~D7を使う)
CPU側
- もし割り込み要求?がきていたら,命令の実行が終わった後に次の命令を取り出さず,あらかじめ用意した割り込みハンドラを呼び出す
- 割り込み番号から割り込みベクタテーブルを参照し、割り込みベクタテーブルに書かれた番地に制御を移す
x86
割り込みベクタ番号
- 例外と割り込みを処理しやすいように、IA-32 アーキテクチャで定義されている、プロセッサの特殊な処理を必要とする各例外条件および割り込み条件には、ベクタと呼ばれる個別の識別番号が割り当てられている。
割り込みのテーブル
割り込みベクタテーブル (IVT?)
- リアルモード、ARM
- マイコンには多数の割り込み要因があり,それぞれに対して割り込みサービス・ルーチンを用意する
- 割り込み要因を特定するために,各要因に固有の番号(割り込みベクタ番号)を割り当てる。
- 割り込みベクタと,それに対応する割り込みサービスルーチン?の先頭アドレスを一覧表にまとめたものを、割り込みベクタテーブルと呼ぶ
割り込みディスクリプタテーブル (IDT)
ハードウェア割り込み (外部割り込み)
分類 - マスクの可否
ノンマスカブル割り込み (Non-Maskable Interrupt, NMI)
- いつでも割込みを受け付ける
- デバッグやハードウェアエラーなどの特殊な用途に使われる
マスカブル割り込み (狭義のIRQ)
- 割り込み処理を許可、禁止が自由に選択できる割り込み
- 実行中のプログラムが割込み受け付け許可を指定したときだけ受け付ける。
- 通常のペリフェラルからの割り込み要求はマスカブル割り込み(以下IRQ)に接続して用いる
割り込みの方式
割り込みコントローラ
Intel 8259
- 8259は、単体で8つのデバイスからの割り込みをCPUにマルチプレクスし、割り込みベクタ番号を出力する。
APIC
- Advanced Programmable Interrupt Controller