知識ベース

割り込みベクタテーブル

データ構造

割り込みベクターテーブル」 (IVT)は、割り込みハンドラーのリストを割り込みベクターのテーブル内の割り込み要求のリストに関連付けるデータ構造です。割り込みベクターと呼ばれる割り込みベクターテーブルの各エントリは、割り込みハンドラーのアドレスです。この概念はプロセッサアーキテクチャ全体で共通ですが、IVTはアーキテクチャ固有の方法で実装できます。たとえば、ディスパッチテーブルは、割り込みベクターテーブルを実装する1つの方法です。

バックグラウンド

Intel、AMD、Infineon、Microchip Atmel、NXPなどのチップを含むほとんどのプロセッサには、割り込みベクターテーブルがあります。

割り込みハンドラー

取り扱い方法

割り込みベクトルテーブルは、割り込みサービスルーチンの開始アドレスを見つける最も一般的な3つの方法で使用されます。

「事前定義」

「事前定義」メソッドは、割り込みベクトルテーブル内のエントリのアドレスでプログラムカウンタ(PC)を直接ロードします。ジャンプテーブル自体には実行可能コードが含まれています。原則として、非常に短い割り込みハンドラーを割り込みベクトルテーブル内に完全に格納できますが、実際には、各エントリのコードは、その割り込みの完全な割り込みサービスルーチン(ISR)にジャンプする単一のジャンプ命令です。 Intel 8080、Atmel AVR、すべての8051およびMicrochipマイクロコントローラーは、事前定義されたアプローチを使用します。

"フェッチ"

「フェッチ」メソッドは、割り込みベクターテーブル内のエントリのアドレスを使用してPCを間接的にロードし、そのテーブルからアドレスを引き出し、そのアドレスでPCをロードします。 IVTのすべてのエントリは、割り込みサービスルーチンのアドレスです。モトローラ/フリースケールのすべてのマイクロコントローラはフェッチメソッドを使用します。

「割り込み確認」

「割り込み確認」方式の場合、外部デバイスはCPUに割り込みハンドラー番号を提供します。割り込み確認方法は、Intel Pentiumおよび多くの古いマイクロプロセッサで使用されています。

CPUが割り込みの影響を受けると、CPUは割り込みベクトルテーブルで割り込みハンドラを検索し、制御を転送します。