Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС-лекции.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
437.76 Кб
Скачать

Подпрограмма обслуживания

Прерывания

Основная

программа

работы МП

Возврат

управления

Прерывание от УВВ

Основная

программа

работы МП

Передача

управления

Рис. 17. Обслуживание прерывания в МП-системе

Для повышения производительности системы необходимо освободить процессор от опроса готовности ВУ к обмену. Эту функцию берет на себя контроллер прерываний ВУ. Получив команду ввода-вывода, контроллер передает ее ВУ и следит за временем ее выполнения. По окончании действий в ВУ (печати, перфорации и т. п.) контроллер посылает в процессор сигнал требования прерывания, получает очередную команду ввода-вывода, и действия повторяются. Процессор в этом случае, передав в контроллер очередную команду ввода-вывода, может выполнять другие операции основной программы до получения сигнала требования прерывания. Получив его, он обслуживает это прерывание, то есть формирует и выдает в контроллер очередную команду ввода-вывода, а затем возвращается к выполнению прерванной основной программы.

Ввод-вывод по прерываниям, однако, требует усложнения аппаратных средств – создания системы прерываний.

Структура таблицы векторов прерываний для ип от Intel имеет вид

Обращение к элементам таблицы осуществляется по 8-разрядному коду - типу прерывания

.

Тип прерывания

Источник прерывания

0

Деление на 0

1

Пошаговый режим выполнения программы

2

Запрос по входу NMI

· · ·

8

Запрос по входу IRQ0 (системный таймер)

9

Запрос по входу IRQ1 (контроллер клавиатуры)

· · ·

11

Отсутствие сегмента в оперативной памяти

· · ·

255

Пользовательское прерывание

На уровне электроники внешние прерывания организованы следующим образом. Имеется контроллер прерываний (микро­схема i8259А), выполняющий несколько важных функций: по­лучение сигналов на прерывания от внешних устройств, маски­ровка (т. е. запрещение обработки) некоторых прерываний, ар­битраж приоритетов прерываний и формирование очереди за­просов на прерывание. Контроллер имеет три 8-разрядных ре­гистра и 8 входов от внешних устройств, называемых IRQ0, IRQ1, ...IRQ7 (Interrupt ReQuest), выход INT на процессор (со­единяемый со входом процессора INTR) и вход обратной связи от процессора INTA, по которому процессор подтверждает на­чало обработки прерывания.

Запрос на прерывание, поступающий на некоторый вход IRQ, устанавливает в 1 соответствующий бит 8-разрядного регистра фиксации запросов прерываний (IRR). Если соответствующее прерывание не замаскировано 8-разрядным регистром маски (IMR может программироваться) и если процессор не занят об­работкой прерывания высшего или равного приоритета (что определяется 8-разрядным регистром ISR), запрос на прерыва­ние поступает с выхода INT на вход прерываний процессора INTR, и процессор подтверждает по линии INTA.

Один контроллер прерываний имеет 8 входов (IRQ), чего явно недостаточно для обслуживания внешних устройств современ­ного компьютера (таймер, часы реального времени, клавиату­ра, гибкий и жесткий диски, мышь, последовательные и парал­лельные порты и проч.).

Однако несколько контроллеров прерываний могут быть вклю­чены последовательно. На современных компьютерах (начиная с 286) один (ведущий) контроллер прерываний подключен непо­средственно к процессору, а второй (ведомый) своим выходом INT подключен ко входу IRQ2 ведущего контроллера. Итого получается 15 входов прерываний от IRQ0 до IRQ 15 (IRQ2 не может быть использован).

При подаче сигнала на прерывание от контроллера к процессо­ру по линии INTR-INT, одновременно по линиям данных из контроллера прерываний в процессор поступает номер вектора прерывания, который образуется путем сложения IRQ с некото­рым базовым номером, который присваивается ВIOSом кон­троллеру в процессе загрузки (значения по умолчанию 08h для ведущего контроллера и 70h для ведомого). Таким образом, например, номер вектора прерывания для клавиатуры будет 08+1=9h, для жесткого диска 70h+6=76h.

Контроллер прерываний допускает перепрограммирование для установки различных режимов формирования очереди запро­сов, изменения приоритетов прерываний, изменения базовых номеров контроллеров. Такое перепрограммирование осущест­вляется через два байтовых порта 20h и 21h. По умолчанию IRQ отдельного контроллера имеют приоритеты в соответствии с их номерами (IRQ0 – наивысший, IRQ7 – наинизший).

Структура контроллера приоритетных прерываний имеет вид

Пример каскадного включения двух контроллеров прямого доступа к памяти