Организация вычислительных систем


Обработка прерываний на основе контроллера 8259A


Контроллер прерываний 8259A представляет собой устройство, реализующее до восьми уровней запросов на прерывания, с возможностью программного маскирования и изменения порядка обслуживания прерываний.

Контроллер прерываний (рис. 13.3) состоит из следующих блоков:

  • RGI - регистр запретов прерываний; хранит все уровни, на которые поступают запросы IRQx.
  • PRB - схема принятия решений по приоритетам; схема идентифицирует приоритет запросов и выбирает запрос с наивысшим приоритетом.
  • ISR - регистр обслуживаемых прерываний; сохраняет уровни запросов прерываний, находящиеся на обслуживании контроллера прерываний.
  • RGM - регистр маскирования прерываний; обеспечивает запрещение одной или нескольких линий запросов прерывания.
  • BD - буфер данных; предназначен для сопряжения с системной шиной данных.
  • RWCU - блок управления записью/чтением; принимает управляющие сигналы от микропроцессора и задает режим функционирования контроллера прерываний.
  • CMP - схема каскадного буфера-компаратора; используется для включения в систему нескольких контроллеров.
  • CU - схема управления; вырабатывает сигналы прерывания и формирует трехбайтовую команду CALL для выдачи на шину данных.


увеличить изображение
Рис. 13.3.  Структура контроллера прерываний 8259А

Один контроллер 8259A способен обслуживать прерывания от 8 источников. Для обслуживания большего количества устройств используется каскадное включение контроллеров (рис. 13.4). В системах IBM PC AT каскадное включение позволяет до 15 устройствам сигнализировать о прерывании (табл. 13.1).


увеличить изображение
Рис. 13.4.  Каскадное включение контроллеров прерываний

Таблица 13.1. Источники аппаратных прерываний в IBM PC AT

ЗапросИсточникПриоритетНомер вектора
NMIОшибка памяти или другая неисправимая ошибка в системе02h
IRQ0Системный таймер108h
IRQ1Клавиатура209h
IRQ8Часы реального времени370h
IRQ9Устройство на шине ISA471h
IRQ10Устройство на шине ISA572h
IRQ11Устройство на шине ISA673h
IRQ12Устройство на шине ISA774h
IRQ13Ошибка сопроцессора975h
IRQ14IDE контроллер976h
IRQ15Устройство на шине ISA1077h
IRQ3Последовательный порт (COM2 или COM4)110Bh
IRQ4Последовательный порт (COM1 или COM3)120Ch
IRQ5Параллельный порт (LPT2) или IDE контроллер (вторичный)130Dh
IRQ6Контроллер дисковода140Eh
IRQ7Параллельный порт (LPT1)150Fh


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

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

Контроллер допускает маскирование отдельных запросов прерываний, что позволяет устройствам с более низким приоритетом получить возможность генерировать прерывания. Режим специального маскирования разрешает прерывания всех уровней, кроме уровней, обслуживаемых в данный момент.

Кроме того, для каскадного включения возможен специальный режим полного вложения. Этот режим программируется любым ведущим контроллером при инициализации. В данном режиме игнорируются запросы с приоритетом более низким, чем приоритет обрабатываемого в данный момент запроса, и обслуживаются все запросы с равным или более высоким приоритетом.


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