
割り込みベクタテーブル(IVT)は、割り込みベクタのテーブル内で、割り込みハンドラのリストと割り込み要求のリストを関連付けるデータ構造です。割り込みベクタテーブルの各エントリは、割り込みベクタと呼ばれ、割り込みハンドラ( ISRとも呼ばれる)のアドレスを表します。この概念はプロセッサアーキテクチャ間で共通していますが、IVTの実装方法はアーキテクチャ固有の場合があります。例えば、ディスパッチテーブルは、割り込みベクタテーブルを実装する1つの方法です。
ほとんどのプロセッサには割り込みベクタテーブルがあり、Intel、AMD、Infineon、Microchip [ 1 ] Atmel [ 2 ] NXP、ARM [ 3 ] [ 4 ]などのチップが含まれます。
割り込みベクタテーブルは、割り込みサービスルーチンの開始アドレスを見つけるための最も一般的な3つの方法で使用されます。
「事前定義」方式では、プログラムカウンタ(PC)に割り込みベクタテーブル内のエントリのアドレスを直接ロードします。ジャンプテーブル自体には実行可能コードが含まれています。原理的には非常に短い割り込みハンドラを割り込みベクタテーブル内に完全に格納できますが、実際には各エントリのコードは、その割り込みの完全な割り込みサービスルーチン(ISR)にジャンプする単一のジャンプ命令です。Intel 8080 [ 5 ]、Atmel AVR [ 6 ] [ 7 ]、およびすべての 8051 および Microchip マイクロコントローラ[ 8 ]は、事前定義方式を使用しています。
「フェッチ」方式は、割り込みベクタテーブル内のエントリのアドレスを使用してテーブルからアドレスを取り出し、そのアドレスを PC にロードすることで、間接的に PC をロードします。[ 8 ] IVT の各エントリは、割り込みサービスルーチンのアドレスです。すべての Motorola/Freescale マイクロコントローラはフェッチ方式を使用します。[ 8 ]
「割り込み承認」方式では、外部デバイスがCPUに割り込みハンドラ番号を付与します。割り込み承認方式は、Intel Pentiumや多くの旧型マイクロプロセッサで使用されています。[ 8 ]
CPUが割り込みの影響を受けると、割り込みベクタテーブルから割り込みハンドラを検索し、そこに制御を移します。