Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspect.doc
Скачиваний:
2
Добавлен:
03.05.2019
Размер:
530.94 Кб
Скачать

7. Организация прерываний в эвм

Прерывания – это способ передачи процессору сообщений об асинхронном событии. Прерывание выражается во временном прекращении выполнения текущей программы и переходе на выполнение программы обработчика прерывания, после завершения которой осуществляется возврат к выполнению прерванной программы.

В зависимости от источника, прерывания подразделяются на 2 типа:

  1. непосредственно прерывания, если прерывания вызваны внешним устройством.

  2. Исключения (особые случаи), если прерывание вызвано командой int, выполняемой CPU.

Наличие запросов прерывания проверяется после завершения выполнения текущей команды. В зависимости от источника прерывания могут быть внешними и внутренними. Внешними называют прерывания, инициируемые периферийными устройствами. Внутренние прерывания инициируются аппаратурой контроля работы CPU или командой прерывания (int). Например, при делении на 0 формируется сигнал запроса (требования) прерывания. Запрос поступает на специальный вход CPU.

Каждый поступающий запрос прерывания можно замаскировать (то есть игнорировать). Можно замаскировать все требования от внешних устройств. Для этой цели используется флаг IF (interrupt flag). Для немаскируемых запросов прерывания используется специальный вход (NMI). На вход NMI запрос подается, например, при отказе блока питания, при ошибке функционирования ОЗУ. Маскирование запроса прерывания осуществляется с помощью логической схемы, приведенной ниже.

Д

S

R

TR

&

S

R

TM

ля хранения запроса

I RQ Вход CPU

Д ля хранения маски

IM

Рис. 12. Формирование сигнала прерывания для CPU

7.1. Программируемый контроллер прерываний

Обычно логическая схема обработки прерывания реализуется в виде программируемого контроллера прерываний (PIC), который располагается на кристалле вместе с CPU.

№ запроса

Рис. 13. Схема взаимодействия PIC и CPU

АВП – адрес вектора прерываний.

Все регистры контроллера имеют адреса (либо четные, например 20h, либо нечетные – 21h). Кроме регистров, изображенных на рисунке, в состав контроллера входят дополнительные управляющие регистры. Запрос от ВУ «защелкивается» (размещается) на регистре запросов прерывания (IRR). Наиболее приоритетным является IR0 запрос. На регистре IRR размещаются одновременно несколько запросов. Для выбора запроса (на IRR) с максимальным приоритетом используется логическая схема маскирования и выделения приоритета. Выбранный запрос идентифицируется в виде номера запроса, задаваемого с помощью трех младших разрядов регистра типа прерывания. Старшие разряды регистра типа прерывания устанавливаются при инициализации контроллера таким образом, чтобы величина (N), содержащаяся в данном регистре, соответствовала адресу вектора прерывания для выбранного запроса. Для выбранного запроса устанавливается бит в регистре ISR обслуживания прерывания, а сам запрос в IRR сбрасывается. Это свидетельствует о начале обслуживания прерывания.

Логическая схема маскирования и выделения приоритета формирует сигнал INT, поступающий на специальный вход процессора INTR (запрос прерывания). Если в CPU флаг прерывания IF установлен в 1, что означает отсутствие маскирования внешних запросов прерывания, то CPU выдает сигнал INTA (подтверждение прерывания), предоставляя возможность контроллеру сформировать АВП.

По сигналу INTA все запросы на IRR, имеющие приоритет равный или меньший приоритета выбранного для обслуживания запроса, маскируются до тек пор, пока не будет сброшен (обнулен) бит в регистре ISR для обслуживаемого прерывания. Этот сброс осуществляется программой обслуживания прерывания. Для сброса необходимо в программе обслуживания прерывания выполнить команду OUT, в которой задан известный адрес регистра ISR.

После появления сигнала INTA контроллер формирует на регистре типа прерывания АВП, который подается на младшие разряды D0-D7 шины данных CPU.

АВП используется для указания адреса первой из двух ячеек памяти (ОЗУ), в которых хранится адрес (CS:IP) начала программы обработки запроса прерывания. Предполагается 256 типов прерываний и каждому типу соответствует пара ячеек (вектор), в которых хранится адрес начала обработчика. АВП представляет собой величину 4N, где N – тип прерывания.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]