コンピュータサイエンスにおいて、ベクタ割り込みとは、割り込みデバイスがプロセッサを適切な割り込みサービスルーチンに指示する処理技術である。これは、単一の割り込みサービスルーチンがすべての潜在的な割り込みソースをチェックして割り込みソースを特定する必要があるポーリング割り込みシステムとは対照的である。ポーリング割り込みシステムは、各割り込みデバイスに通常4~8ビットの長さの固有のコードを割り当てることによって実現される。[ 1 ]デバイスの割り込みが確認されると、デバイスはデータバスを介してプロセッサに固有のコードを送信し、プロセッサにどの割り込みサービスルーチンを実行するかを指示する。
マイクロプロセッサでは、ベクタ割り込みがよく実装されています。1971年に発売された最初の商用8ビットマイクロプロセッサであるIntel 8008でさえ、少なくとも7つのベクタをサポートしていましたが、不思議なことに、割り込み中に状態を保存する機能はありませんでした。以下に、マイクロプロセッサで実装されたベクタ割り込みの例をいくつか示します。

1974年製のIntel 8080は、わずかなハードウェアで7つのベクトルをサポートでき、 Intel 8259を使用すれば最大64のベクトルをサポートできます。
最小限のハードウェア方式では、外部ハードウェアが割り込みデバイスに関連付けられた1バイトRST(再起動)命令をバスにジャムする必要があります。再起動命令は、0、8、16、24、32、40、48、56の8つの場所のいずれかを呼び出すもので、7つの直接アクセス可能な割り込みサービスルーチンを可能にします。(場所0はリセットと共有されているため使用できない場合があります。)[ 2 ]
Intel 8259を使用する場合、割り込みをメモリ内の任意の場所に送信できるようにするCALL代わりに、命令を発行できますRST。最大9個の8259をカスケード接続して、最大64個のベクタを使用できます。[ 3 ]
1976 年製のZilog Z80 は、8080 の割り込み方式をサポートし、独自の方式もいくつか追加しています。モード 2 では、Z80 は 128 個のベクタをサポートします。Z80 の I レジスタは、128 エントリのサービス ルーチン アドレス テーブルの最上位バイトを提供します。割り込みデバイスは、その特定のテーブル エントリの最下位バイトを提供します。Z80 はプログラム カウンタ (PC) をプッシュし、これらの 2 バイトを使用してアドレスを形成し、割り込みサービス ルーチン アドレスを PC にロードしてジャンプを実行します。[ 4 ]
1976 年製のWD16は16 個の割り込みベクタをサポートしています。ベクタ割り込みを受信すると、プロセッサの状態とプログラムカウンタ (PC) がプッシュされます。割り込み応答中、WD16 は割り込みデバイスから提供される 4 ビットの割り込み番号を受け取ります。割り込みベクタテーブルのアドレスはメモリ位置 0x0028 からフェッチされ、割り込み番号が加算されて、テーブル内の 16 ワードのいずれかを指します。テーブルからワードオフセットがフェッチされ、そのテーブルアドレスに加算されます。結果が PC にロードされ、割り込みサービスルーチンにジャンプします。[ 5 ]

1978 年製のIntel 8086 は256 個の割り込みベクタをサポートしています。割り込みはプロセッサの状態も保存する長い呼び出しです。すべての割り込みには 8 ビットの割り込み番号が関連付けられています。この番号は、アドレス 0~0x3FF に格納されている 256 要素の割り込みベクタ テーブルでセグメント:オフセットを検索するために使用されます。いずれかのタイプの割り込みが発生すると、プロセッサの状態がプッシュされ、CS と IP がプッシュされ、割り込み番号が 4 倍されて新しい実行アドレスがインデックス付けされ、ベクタ テーブルからロードされます。割り込みルーチンは通常、IRET命令で終了します。[ 6 ] [ 3 ]