Интерфейсы ПК

       

А.3. Аппаратные прерывания


А.3. Аппаратные прерывания

Аппаратные прерывания обеспечивают реакцию процессора на события, происходящие асинхронно по отношению к ис- полняемому программному коду. Процессоры х86 поддер- живают таблицу, содержащую определения до 256 процедур обслуживания прерываний. Немаскируемые прерывания NMI обрабатываются процессором независимо от состояния флага разрешения прерывания IF. К ним относятся прерывания, приходящие по линии NMI, а для процессоров, поддержива- ющих режим системного управления, еще и по линии SMI#.

Сигнал на линию NMI приходит от схем контроля паритета памяти, от линии 10СНК шины ISA или SERR# шины PCI. В машинах класса AT сигнал NMI блокируется до входа про- цессора установкой бита 7 порта 070h в 1, отдельные источ- ники - битами 2, 3 порта 061h. Идентифицировать источник NMI позволяют биты 6, 7 регистра 061h.

В XT NMI вызывается и математическим сопроцессором при возникновении исключения. Запретить NMI позволяет об- нуление бита 7 порта OAOh; отдельные источники блокиру- ются битами 4, 5 регистра 061h; биты 6, 7 регистра 062h идентифицируют источник.

Обработка маскируемых прерываний может запрещаться ин- струкцией DI и разрешаться - Е1 (или другим способом воз- действия на флаг процессора /F). Эти прерывания обслужи- ваются контроллером, программно-совместимым с 8259А. Он имеет 8 входов запросов прерываний IRQx от внешних ис- точников. При обработке запроса контроллер передает по шине данных 8-битный вектор прерывания, соответствующий номеру запроса. Этот вектор является индексом, по которо- му ссылка на процедуру обработки прерывания хранится в таблице прерываний.

В машинах класса AT используются два контроллера пре- рываний. Ведущий (первичный) контроллер 8259А#1 обслу- живает запросы О, 1, 3-7. К его входу 2 подключен ведомый (вторичный) контроллер 8259А#2, который обслуживает за- просы 8-15. При этом используется вложенность приорите- тов - запросы 8-15 со своим рядом убывающих приорите-

тон вклиниваются между запросами 1 и 3 ведущего контрол- лера, приоритеты запросов которого также убывают с рос- том номера.
В XT один контроллер 8259А обслуживал все 8 линий запросов.

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



Имя (номер)

Вектор

Назначение

NMI

02h

Контроль канала, паритет (в XT - сопроцессор)

0

08h

Таймер (канал 0 8253/8254)

1

09h

Клавиатура

IRQ2

OAh

XT - произвольно, AT - каскад IRQ8-IRQ15

8

70h

CMOS RTC - часы реального времени

IRQ9

71h

Произвольно

IRQ10

72h

Произвольно

IRQ11

73h

Произвольно

IRQ12

74h

PS/2-Mouse или произвольно

13

75h

Математический сопроцессор

IRQ14

76h

HDC - контроллер НЖМД

IRQ15

77h

Произвольно

IRQ3

OBh

COM2, COM4

IRQ4

OCh

СОМ1, COM3

IRQ5

ODh

XT - HDC, AT - LPT2, Sound (произвольно)

IRQ6

OEh

FDC - контроллер НГМД

IRQ7

OFh

LPT1 - принтер

Назначение номеров прерываний - процесс двухсторонний:

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


По- скольку традиционный контроллер позволяет задавать чув- ствительность - уровень (Level) или перепад (Edge) - толь- ко для всех входов одновременно, разделяемые прерывания на шине ISA неработоспособны. Тем не менее, некоторые чип- сеты, реализующие контроллеры прерываний, допускают индивидуальное управление чувствительностью каждого вхо- да. Тогда при соответствующих возможностях BIOS Setup и адаптеров разделяемые прерывания технически реализуемы.

При чувствительности к уровню сигнал запроса аппаратно- го прерывания IRQx должен удерживаться генерирующей схемой по крайней мерю до цикла подтверждения прерыва- ния процессором. В противном случае источник прерыва- ния не будет правильно идентифицирован. Обычно адапте- ры строят так, что сигнал запроса сбрасывается при обращении программы обслуживания прерывания к соот- ветствующим регистрам адаптера.

Для запросов прерывания с шины PCI используются 4 ли- нии, которые обозначают как INTR А, В, С, D. Возможно их разделяемое использование. Линии циклически сдвигаются в слотах (Рисунок А.1) и независимо коммутируются на доступные IRQx с помощью конфигурационных регистров чипсета. Линии IRQx, используемые шиной PCI, недоступны для шины ISA. "Дележку" линий между шинами, а также управление

чувствительностью отдельных линий вьшолняют настройки BIOS Setup, а также система РпР. В опциях настройки ISA или Legacy подразумевают использование линий IRQx тради- ционными адаптерами шины ISA (статическое распределение), a PCI/PnP - адаптерами шины PCI или адаптерами РпР для шины ISA (динамическое распределение).


Содержание раздела