
割り込みベクター テーブル( 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 が割り込みの影響を受けると、割り込みベクター テーブル内の割り込みハンドラを検索し、それに制御を渡します。
参照
- 割り込み記述子テーブル(x86 アーキテクチャ実装)
参考文献
- ^ 「dsPIC33F ファミリー リファレンス マニュアル」セクション 29.1.1 割り込みベクター テーブル
- ^ 「AVR Libc ユーザーマニュアル」セクション: avr-libc の割り込み処理の概要
- ^ 「ドキュメント – Arm Developer」。developer.arm.com 。 2020年7月26日閲覧。
- ^ 「ドキュメント – Arm Developer – AArch64 例外ベクターテーブル」。developer.arm.com 。2020年7月26日閲覧。
- ^ Intel 8080 マイクロコンピュータ システム ユーザーズ マニュアル。Intel Corporation。1975 年 9 月。pp. 2 ~ 11 割り込みシーケンス。OCLC 2058546。OL 24210843M 。
- ^ Roger L. Traylor. 「割り込み: AVR 割り込みサービス」
- ^ Gary Hill. 「Atmel AVR 割り込みおよびタイミング サブシステム: ATMEGA328P 割り込みベクター テーブル」
- ^ abcd Huang, Han-Wat (2005). Pic マイクロコントローラ: ソフトウェアとハードウェアのインターフェイス入門. Cengage Learning. p. 247. ISBN 978-1-4018-3967-3. 2013年4月22日閲覧。
外部リンク
- Intel® アーキテクチャー・ソフトウェア開発者マニュアル、第 3 巻: システム・プログラミング・ガイド 2009 年 2 月 16 日にWayback Machineにアーカイブされました
- Intel 64 および IA-32 アーキテクチャ ソフトウェア デベロッパーズ マニュアル、第 3A 巻:システム プログラミング ガイド、パート 1 (第 6 章「割り込みと例外の処理」および第 10 章「高度なプログラマブル割り込みコントローラ」を参照)]
- Wayback Machineの Motorola M68000 例外およびベクトル テーブル(2016 年 3 月 4 日アーカイブ)
