Таблица векторов прерываний ( IVT ) — это структура данных , которая связывает список обработчиков прерываний со списком запросов прерываний в таблице векторов прерываний. Каждая запись таблицы векторов прерываний, называемая вектором прерываний, является адресом обработчика прерываний (также известного как ISR ). Хотя эта концепция является общей для всех архитектур процессоров, IVT могут быть реализованы в архитектурно-специфических модах. Например, таблица диспетчеризации — это один из методов реализации таблицы векторов прерываний.
Большинство процессоров имеют таблицу векторов прерываний, включая чипы Intel , AMD , Infineon , Microchip [1], Atmel , [2], NXP, ARM [3] [4] и т. д.
Таблица векторов прерываний используется в трех наиболее популярных методах нахождения начального адреса процедуры обработки прерываний:
Метод «предопределенный» загружает счетчик программ (PC) непосредственно адресом некоторой записи внутри таблицы векторов прерываний. Сама таблица переходов содержит исполняемый код. Хотя в принципе чрезвычайно короткий обработчик прерываний может храниться полностью внутри таблицы векторов прерываний, на практике код в каждой записи представляет собой одну инструкцию перехода, которая переходит к полной процедуре обработки прерываний (ISR) для этого прерывания. Intel 8080 , [5] Atmel AVR [6] [7] и все микроконтроллеры 8051 и Microchip [8] используют предопределенный подход.
Метод «fetch» загружает ПК косвенно, используя адрес некоторой записи внутри таблицы векторов прерываний, чтобы извлечь адрес из этой таблицы, а затем загружая ПК с этим адресом. [8] Каждая запись IVT является адресом процедуры обслуживания прерывания. Все микроконтроллеры Motorola/Freescale используют метод fetch. [8]
Для метода "подтверждения прерывания" внешнее устройство дает процессору номер обработчика прерывания. Метод подтверждения прерывания используется Intel Pentium и многими старыми микропроцессорами. [8]
Когда на ЦП воздействует прерывание , он ищет обработчик прерываний в таблице векторов прерываний и передает ему управление.