Введение

Структура данных
общая концепция

Таблица векторов прерываний (IVT) — это структура данных, которая связывает список обработчиков прерываний со списком запросов прерываний в таблице векторов прерываний. Каждая запись в таблице векторов прерываний, называемая вектором прерывания, является адресом обработчика прерывания (также известного как ISR). Хотя эта концепция распространена во всех архитектурах процессоров, IVT могут быть реализованы различными способами, зависящими от конкретной архитектуры. Например, таблица диспетчеризации является одним из методов реализации таблицы векторов прерываний.

Предыстория

Большинство процессоров имеют таблицу векторов прерываний, включая чипы от Intel, AMD, Infineon, Microchip Atmel, NXP, ARM и других производителей.

"Предназначенный"

"Предварительно заданный" метод загружает счетчик команд (PC) непосредственно адресом некоторой записи внутри таблицы векторов прерываний. Сама таблица содержит исполняемый код. Хотя теоретически чрезвычайно короткий обработчик прерывания может быть полностью сохранен в таблице векторов прерываний, на практике код в каждой записи представляет собой единственную инструкцию перехода, которая перенаправляет управление в полноценную подпрограмму обработки прерывания (ISR) для данного прерывания. Intel 8080, Atmel AVR и все микроконтроллеры 8051 и Microchip используют предварительно заданный подход.

"Получить"

Метод "fetch" загружает программный счетчик (PC) косвенно, используя адрес определенной записи в таблице векторов прерываний для извлечения адреса из этой таблицы, а затем загружая программный счетчик этим адресом. Каждая запись в таблице векторов прерываний (IVT) содержит адрес подпрограммы обработки прерывания. Все микроконтроллеры Motorola/Freescale используют метод "fetch".

"Прекращение подтверждения"

Для метода "признания прерывания" внешнее устройство предоставляет процессору номер обработчика прерывания. Метод признания прерывания используется в процессорах Intel Pentium и многих более ранних микропроцессорах. Когда процессор получает прерывание, он находит соответствующий обработчик в таблице векторов прерываний и передает ему управление.