Прерывание в микрокомпьютерной технике
Дизайн микрокомпьтерных систем требует, чтобы обмен
таких устройств как клавиатура, дисплеи, датчики и др.
компоненты обслуживались эффективным образом и большинство
общих системных задач могло выполняться компьютером с
небольшой или несущественной остановкой.
Наиболее общий метод обслуживании таких устройств -
опросный. При этом процессор должен проверять каждое
устройство последовательно и реализует его запрос при
необходимости обслуживания. Нетрудно заметить, что большая
часть главной программы бесконечно зациклена на непрерывном
опросе и что такой метод имел бы серьезный detrimental
-альный эффект в системной производительности, ограничивая
задачи, которые мог бы выполнять компьютер и уменьшая
стоимостную эффективность использования таких систем.
Более желательным был бы метод, при котором
компьютеру позволялось выполнять его главную программу и
останавливать ее для обслуживания периферийных устройств
только, когда устройства говорят об этом. Эффективен метод
обеспечивавший бы внешний асинхронный ввод, который
информировал бы процессор, что он должен завершить
выполнение текущей инструкции и перейти к новой программе,
которая обслужит запрашиваеющее устройство. Однако, по
завершению обслуживания процессор вспомнил бы точно, где он
прервался.
Такой метод называется прерывание. Легко видеть, что
системная производительность резко возрастает и,
следовательно компьютер может выполнять больше задач,
увеличивая свою стоимостную эффективность.
Функцией Программируемого Контроллера Прерываний (
ПКП / PIC ) является общее управление всем оборудованием
систем с прерываниями. Он принимает запросы от периферии,
различает какое из входных требований более важное
(приоритетное), устанавливает выше ли приоритет входного
запроса значения текущего обслуживаемого уровня и выдает
прерывание в ЦПУ основываясь на этом определении.
Каждое периферийное устройство или структура обычно
имеет специальную программу или "рутину", которая
ассоциируется с их специфичными функциональными или
операционными требованиями; это обычно называется
"программой обслуживания". ПКП после выдачи прерывания в
ЦПУ, должно как-то ввести информацию в ЦПУ, которая
разместит счетчик команд на сервисную программу связанную с
запрашивающим устройством. Этот указатель является адресом в
таблице векторов, и в этом документе часто будет называться
векторными данными.
8259A
8259A является устройством, специально разработанным
для микрокомпьютерных систем с прерываниями. Он управляет
восьмью уровнями или запросами и имеет встроенные средства
расширения другими 8259A (до 64 уровней). Он программируется
системным матобеспечением как устройство обмена. Доступный
программисту выбор приоритетных режимов таков, что порядок,
по которому запросы обрабатываются 8259А может
конфигурироваться в соответствие с системными требованиями.
Приоритетные режимы могут изменяться или
переконфигурироваться динамически в любое время в главной
программе. Это означает, что полные струтуры прерываний
могут определятся в соответствие с требованиями, основываясь
на общем системном оборудовании.
Регистр Запросов на Прерывание (IRR) и Регистр Занятости (ISR).
Прерывания с входных линий IR обрабатываются двумя
каскадированными регистрами, регистром запросов на
прерывание и регистром занятости. IRR используется для
хранения прерываний всех уровней, которые запросили
обслуживание, а ISR хранит все уровни прерываний, которые
обслуживаются.
Арбитраж приоритетов.
Этот блок определяет приоритеты битов, установленных
в IRR. Высший приоритет выбирается и стробируется в
соответствующий бит ISR по сигналу INTA
Регистр масок прерываний (IMR)
В IMR хранятся биты, которые отмечают маскируемые
линии прерываний. IMR оперирует на IRR. Маскирование входа
с более высоким приоритетом не влияет на прерывания линий
запросов с более низкими приоритетами.
INT ( Прерывания )
Этот выход идет непосредственно на вход прерывания
ЦПУ. Уровень Vон этой линии полностью совместим с входными
уровнями 8080A, 8085A и 8086.
____
INTA ( Запрос на прерывания )
Импульс INTA вызывает выдачу из 8259A на шину данных
векторной информации. Формат этих данных зависит от режима
системы (мPM) 8259A.
Буфер шины данных
Высокоимпедансный двунаправленный 8-битовый буфер
используется для согласования с системной шиной данных.
Управляющие слова и информация о состоянии передаются череэ
буфер данных.
Логика управления обменом ( чтением/записью)
В функции этого блока входит прием команд OUT из
ЦПУ. Он состоит из регистров командных слов инициализации
(ICW) и командных слов операции (OCW), которое хранят
различные форматы управления операциями устройств. Этот
функциональный блок также позволяет передавать статус 8259A
на шину данных.
__
CS ( выбор схемы - chip select)
Низкий уровень данного входа разрешает работу 8259A.
Пока не схема не выбрана, невозможно ничего ни прочитать ни
записать на нее.
__
WR (запись)
низкий уровень данного сигнала разрешает ЦПУ запись
управляющих слов (ICW и OCW) в 8259A.
__
RD (чтение)
Низкий уровень данного сигнала позволяет 8259A
посылать состояние регистра запросов на прерывания IRR,
регистра обслуживания ISR, регистр масок прерывания IMR или
уровень прерывания на шину данных.
A0 __ __
Этот входной сигнал используется вместе с WR и RD
для записи команд в различные командные регистры, а также
для считывания различных регистров состояния микросхемы. Эта
линия может подключаться непосредсвенно к одной из адресных
линий.
Каскадный буфер/компаратор
Этот функциональный блок хранит и сравнивает
идентификаторы всех 8259A используемых в системе.
Соответствующие три ножки (CAS0-2) являются выходами, когда
8259A используется как ведущая, и входами, когда 8259A -
ведомая. Ведущая 8259A посылает идентифмкатор ведомого
устройства на линии CAS0-2. Выбранное таким образом ведомая
схема выдает запрограммированный адрес подпрограммы на шину
данных во время одного или двух последующих импульсов INTA (
см пункт "Каскадирование 8259A")
Последовательность прерывания
Мощным средством 8259A для микрокомпьютерных систем
является его программируемость и возможность адресации рутин
прерывания. Последнее позволяет непосредственно или косвенно
переходить на указанную рутину обслуживания прерывания безо
всякого опроса прерывающих устройств. Обычная
последовательность событий при прерывании зависит от типа
используемого ЦПУ.
В системах MCS-80/85 порядок событий следующий:
1. Одна или несколько линий запросов на прерывание (IR0-7)
становятся высокими устанавливая соответствующие биты
IRR.
2. 8259A оценивает эти запросы и посылает INT в ЦПУ, если
это требуется.
3. ЦПУ подтверждает INT, отвечая импульсом INTA.
4. Получив от ЦПУ INTA, в ISR установливается бит с высшим
приоритетом, а в IRR соответствующий бит сбрасывается.
8259A также выдает код инструкции CALL (11001101) на
8-битовую шину данных на ее линии D7-0.
5. Данная инструкция CALL вызовет еще два импульса INTA,
посылаемых на 8259A от ЦПУ.
6. Эти два импульса INTA разрешают 8259A выдать
запрограммированные адреса подпрограмм на шину данных.
Вначале выходят младшие 8 битов адреса, а затем по
второму импульсу INTA старшие 8 бит.
7. Это завершает 3-байтную инструкцию CALL генерируемую
8259A. В режиме AEOI бит ISR сбрасывается по концу
третьего импульса INTA. В противном случае бит ISR
остается установленным пока соответствующая команда EOI
не выдаст конец последовательности прерывания.
В системе iAPX-86 порядок до шага 4 тот же.
4. Получив от ЦПУ INTA, в ISR установливается бит с высшим
приоритетом, а в IRR соответствующий бит сбрасывается.
8259A ничего не выдает на шину данных в течение этого
цикла.
5. iAPX-86/10 инициирует второй импульс INTA. В течение
этого импульса 8259A выдает на шину данных 8-битовый
указатель, откуда он считывается ЦПУ.
6. Это завершает цикл прерывания. В режиме AEOI бит ISR
сбрасывается по концу второго импульса INTA. В противном
случае бит ISR остается установленным пока
соответствующая команда EOI не выдаст конец
последовательности прерывания.
Если запросы на прерывание на шаге 4 любой из
последовательностей отсутствовали, (т.е. длительность
запроса была слишком короткой), 8259A выдаст прерывание
уровня 7. И векторные данные, и каскадные линии будут такими
же как и при запросе на прерывание с уровнем 7.