最終更新:2016-09-16 (金) 16:20:33 (2771d)  

割り込み
Top / 割り込み

あらかじめ用意したサブルーチンを,外部からの信号によって起動する仕組み

概要

  • CPUは、割り込み信号を受けとると現在実行中のプログラムを一時中断し て、「割り込みハンドラ」や「割り込みサービスルーチン(ISR)」と呼ばれるプログラムに制御を移す。
  • 割り込みハンドラでは、入力処理や次の出力処理を行う。
  • 割込処理を実行するために、どこの場所(アドレス)に飛べば良いかを示す情報は、割り込みベクタテーブルに書かれている

動作

割り込みコントローラ側

CPU側

x86

  • CPUはEFLAGSIF?(割り込みフラグ)をチェック
    • IF?が1の場合:INTA?ピンにパルスを出力して割り込みを受け付けることをPICに通知
  • 通知を受け取ったPICはD0-D7データバスに割り込みベクタ番号を出力します
  • PICは続けてD0-D7データバスにIRQ番号を出力

割り込みベクタ番号

  • 例外と割り込みを処理しやすいように、IA-32 アーキテクチャで定義されている、プロセッサの特殊な処理を必要とする各例外条件および割り込み条件には、ベクタと呼ばれる個別の識別番号が割り当てられている。

割り込みのテーブル

割り込みベクタテーブル (IVT?)

  • リアルモード、ARM
  • マイコンには多数の割り込み要因があり,それぞれに対して割り込みサービス・ルーチンを用意する
  • 割り込み要因を特定するために,各要因に固有の番号(割り込みベクタ番号)を割り当てる。
  • 割り込みベクタと,それに対応する割り込みサービスルーチン?の先頭アドレスを一覧表にまとめたものを、割り込みベクタテーブルと呼ぶ

割り込みディスクリプタテーブル (IDT)

ハードウェア割り込み (外部割り込み)

  • 割り込み要求端子の変化によりCPU外部から発生
    • CPUの割り込み要求 (Interrupt ReQuest?, IRQ) 端子をアサートする(例えば端子の電圧をHIからLOWにする)場合に発生

分類 - マスクの可否

  • ここで言うマスク - 割り込みを禁止することができるかどうか
  • NMIIRQ(INTR)の2種類の端子を備えている場合が多い

ノンマスカブル割り込み (Non-Maskable Interrupt, NMI)

  • いつでも割込みを受け付ける
  • デバッグやハードウェアエラーなどの特殊な用途に使われる

マスカブル割り込み (狭義のIRQ)

  • 割り込み処理を許可、禁止が自由に選択できる割り込み
  • 実行中のプログラムが割込み受け付け許可を指定したときだけ受け付ける。
  • 通常のペリフェラルからの割り込み要求はマスカブル割り込み(以下IRQ)に接続して用いる

割り込みの方式

割り込みコントローラ

  • CPUIRQ端子を外部で拡張し、制御する

Intel 8259

  • 8259は、単体で8つのデバイスからの割り込みをCPUにマルチプレクスし、割り込みベクタ番号を出力する。

APIC

  • Advanced Programmable Interrupt Controller

ソフトウェア割り込み (内部割り込み?)

  • プログラムの実行に起因して発生する割り込み
  • INT命令 (IA-32)

内部割り込み?

リセット?

レジスタ

x86

8259

関連

参考