Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Маскируемые прерывания



Маскируемые прерывания используются для сигнализации о событиях в уст­ройствах. Реакция процессора на маскируемые прерывания может быть задер­жана сбросом его внутреннего флага IF (инструкция CLI запрещает прерывания, STI — разрешает). По возникновении события, требующего реакции, адаптер (контроллер) устройства формирует запрос прерывания, который поступает на вход контроллера прерываний. Задача контроллера прерываний — довести до процессора запрос прерывания и сообщить вектор, по которому выбирается программная процедура обработки прерываний. В IBM PC-совместимых ком­пьютерах применяется два основных типа контроллеров прерываний:

Периферийный контроллер прерываний (Peripheral Interrupt Controller, PIC)
программно совместим с традиционным контроллером 8259А, использовав­
шимся еще в первых моделях IBM PC. Co времен IBM PC/AT применяется
связка из пары каскадно соединенных контроллеров PIC, позволяющая об­
служивать до 15 линий запросов прерываний.

Усовершенствованный периферийный контроллер прерываний (Advanced Pe­
ripheral Interrupt Controller, APIC) введен в компьютеры для поддержки
мультипроцессорных систем на базе процессоров 4-5-го поколений (486 и Pen­
tium) и используется поныне для более поздних моделей процессоров. По­
мимо поддержки мультипроцессорных конфигураций, современный кон­
троллер APIC позволяет увеличивать число доступных линий прерываний
и обрабатывать запросы прерываний от устройств PCI, посылаемые через
механизм сообщений (MSI). Компьютер, рснащенный контроллером APIC,
обязательно имеет возможность функционировать и в режиме, совместимом
со стандартной связкой пары PIC. Этот режим включается по аппаратному сбросу (и включению питания), что позволяет использовать старые ОС и при­ложения MS-DOS, «не знающие» APIC и мультипроцессирования.

Традиционная схема формирования запросов прерываний с использованием пары контроллеров PIC изображена на рис. 4.4.

На входы контроллеров прерываний поступают запросы от стандартных уст­ройств (клавиатура, системный таймер, CMOS-таймер, сопроцессор), перифе­рийных контроллеров системной платы и от карт расширения. Традиционно все линии запросов, не занятые перечисленными устройствами, присутствуют на всех слотах шины ISA/EISA. Эти линии обозначаются как IRQx и имеют об­щепринятое назначение (см. далее). Часть этих линий отдается в распоряжение шины PCI.

Традиционные (не РпР) устройства ISA используют запрос по положительному перепаду сигнала IRQx, что делает невозможным их совместное (разделяемое) применение несколькими устройствами. Устройства ISA, поддерживающие ме­ханизм РпР, позволяют настраиваться на прерывание по низкому уровню сигна­ла; устройства PCI работают только по низкому уровню. Это дает возможность задействовать линии запросов в режиме разделения, что порождает определен­ные проблемы (см. далее). Линии IRQx, используемые шиной PCI, становятся недоступными для шины ISA. «Дележку» линий между шинами, а также управ­ление чувствительностью (к перепаду или уровню) отдельных линий обеспечи­вают параметры CMOS Setup, а также механизм РпР. В параметрах CMOS Setup название «ISA» или «Legacy» подразумевает использование линий IRQx традиционными адаптерами шины ISA (статическое распределение), а назва­ние «PCI/PnP» — адаптерами шины PCI или адаптерами РпР для шины ISA (динамическое распределение).Для запросов прерывания с шины PCI (см. 14.5) задействуют 4 линии запросов прерывания, которые обозначают как INTR А, В, С, D.Эти линии работают по низкому уровню, что дает возможность их совместного (разделяемого) исполь­зования. Линии циклически сдвигаются в слотах и независимо коммутируются на доступные линии IRQxс помощью конфигурационных регистров чипсета.

В табл. 4.2 запросы расположены в порядке убывания приоритета. Номера век­торов, соответствующих линиям запросов контроллеров, система приоритетов и некоторые другие параметры задаются программно при инициализации кон­троллеров PIC или APIC. Эти основные настройки остаются традиционными для совместимости с программным обеспечением, но различаются для ОС ре­ального и защищенного режимов. Так, например, в ОС Windows базовые векто­ры для ведущего и ведомого контроллеров — 50h и 58h соответственно.

Каждому устройству, для поддержки работы которого требуются прерывания, должен быть назначен свой номер прерывания. Назначения номеров прерыва­ний выполняются с двух сторон: во-первых, адаптер, нуждающийся в прерываниях, должен быть сконфигурирован на использование конкретной линии шины (джамперами или программно); во-вторых, программное обеспечение, поддер­живающее данный адаптер, должно быть проинформировано о номере приме­няемого вектора. В процессе назначения прерываний может участвовать систе­ма РпР для шин ISA и PCI; для распределения линий запросов между шинами служат специальные параметры CMOS Setup. Современные ОС имеют возмож­ность изменить назначение запросов относительно распределения, сделанного через CMOS Setup.

После того как конфигурирование системы прерываний произведено (проини-циализирован контроллер прерываний, устройствам назначены линии запросов и установлены указатели на процедуры обработки), отработка маскируемых ап­паратных прерываний происходит следующим образом:

1. Устройство по событию прерывания возбуждает назначенную ему линию
запроса прерывания.

2. Контроллер принимает сигналы запросов от источников прерываний (сигна­
лы IRQx) и при наличии незамаскированного запроса подает сигнал общего
запроса прерывания
(сигнал INTR) процессору х86.

3. Процессор, реагируя на запрос (когда прерывания флагом IF разрешены),
сохраняет в стеке содержимое регистра флагов и адрес возврата, после чего
формирует шинный цикл INTA (Interrupt Acknowledge — подтверждение пре­
рывания), который доводится до контроллера прерываний.

4. В момент получения сигнала INTA контроллер прерываний фиксирует со­
стояние своих входов запросов — к этому моменту их состояние могло изме­
ниться: например, появились новые запросы или пропал запрос от «нетер­
пеливого» устройства. Контроллер анализирует поступившие запросы в соот­
ветствии с запрограммированной схемой приоритетов и посылает процессо­
ру вектор прерывания, соответствующий самому приоритетному незамаскиро­
ванному запросу, присутствующему на входе контроллера в момент подачи
шинной команды INTA. При этом контроллер выполняет и некоторые действия
в соответствии с установленной приоритетной политикой, учитывающие, ка­
кой именно вектор был послан (какой из запросов пошел на обслуживание).

5. Получив вектор прерывания, процессор по его номеру вызывает соответ­
ствующую процедуру обработки прерывания. Если данный вектор прерыва­
ния используется не только для аппаратных прерываний, но и для исключе­
ний и/или программных прерываний, то процедура в первую очередь
должна определить, к какому из этих типов относится данное событие. Для
этого процедура может обратиться к контроллеру PIC (прочитать регистр
ISR) и проанализировать состояние регистров процессора.

Дальнейшие шаги описывают случай аппаратного прерывания.

6._________________________________________________________________ Процедура обработки прерывания идентифицирует источник прерывания —
определяет устройство, его вызвавшее. При разделяемом использовании не­
сколькими устройствами данного номера запроса (следовательно, и вектора)
идентифицировать источник прерывания можно только последовательными
обращениями к регистрам каждого из этих устройств. При этом следует учитывать возможность поступления запросов от нескольких устройств одно­временно или в процессе обработки прерывания от одного из них.

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

Если обработка прерывания занимает значительное время, в течение кото­рого требуется реакция системы на более приоритетные запросы, то после критической секции в обработчик включают инструкцию STI, устанавливаю­щую флаг разрешения прерываний (IF) в процессоре. С этого момента воз­можны вложенные прерывания, прерывающие работу данного обработчика при поступлении другого, более приоритетного прерывания.

8. Процедура обработки прерывания посылает контроллеру команду EOI (End
Of Interrupt — завершение обработки прерывания), по которой контроллер
разрешает последующий прием сигнала с обслуженного входа и менее при­
оритетных. Это должно быть сделано после снятия сигнала прерывания от
обслуженных устройств, иначе контроллер после EOI пошлет повторный за­
прос. Обработчик прерывания, для которого запрос поступил от ведомого
контроллера, должен послать EOI как ведомому, так и ведущему контролле­
ру. Фрагмент обработчика от инструкции подачи команды EOI до заверше­
ния (инструкции IRET) должен быть непрерываемым, то есть являться кри­
тической секцией.
Если обработчик разрешал вложенные прерывания, то перед
инструкцией подачей команды EOI должна присутствовать инструкция CLI,
запрещающая прерывания.

9. Завершается обработка прерывания инструкцией IRET, по которой процессор
возвращается к выполнению прерванного Потока инструкций, предваритель­
но извлекая из стека содержимое регистра флагов (с установленным IF), и аппа­
ратные прерывания снова оказываются разрешенными.

Эта последовательность описана применительно к обычному контроллеру пре­рываний (PIC), в системах с APIC меняется способ доставки вектора прерыва­ния от контроллера к процессору, а в прерываниях MSI меняется способ доставки сигнала от устройства к контроллеру APIC. Эти нюансы описаны в последующих разделах.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.