tизд =tз + tв. -
Глубина прерывания – максимальное число программ, которые могут прерывать друг друга. На рис. 2.32 показаны процессы прерыва- ния в системах с различной глубиной прерывания (предполагается, что приоритет каждого последующего запроса выше предыдущего). Если после перехода к прерывающей программе и вплоть до ее окончания прием запросов прекращается, то говорят, что система имеет глубину прерывания, равную 1 (относительная дисциплина обслуживания).
Запросы
прерывания
Выполнение
прерывающих программ
с
n =
1
Выполнение
прерывающих1 2 3
1
2 3
3
tОтносительная
t дисциплина
обслуживания
программ с 2
n = 3
1
2
Абсолютная
1 дисциплина
t обслуживания
Рис. 2.32. Процессы прерывания с различной глубиной прерывания и дисциплиной обслуживания
Глубина равна n, если допускается последовательное прерывание до n прерывающих программ (абсолютная дисциплина обслуживания). Глубина прерывания обычно совпадает с числом уровней приоритета в системе прерывания. Система с большим значением глубины преры- вания обеспечивает более быструю реакцию на срочные запросы.
Если запрос окажется не обслуженным к моменту прихода нового запроса от того же источника, то возникает так называемое насыщение системы прерывания. В этом случае предыдущий запрос от данного источника будет машинально утерян, что недопустимо. Существуют специальные методы борьбы с этой ситуацией.
Программно-управляемый приоритет прерывающих программ
Относительная степень важности программ, их частота повторения,
относительная степень срочности в ходе вычислительного процесса мо-
гут
меняться,
требуя
установления
новых
приоритетных
отношений.
Поэтому во многих случаях приоритет между прерывающими програм-
мами не может быть зафиксирован раз и навсегда. Необходимо иметь
возможность изменять, по мере необходимости, приоритетные соотно-
шения
программным
путем.
Приоритет
между
прерывающими
про-
граммами
должен
быть
динамичным,
т.е.
программно управляемым.
В
ЭВМ
широко
применяется
способ
маскирования
прерываний.
Существуюбт два специальных
внешних
сигнала среди входных
сигналов процессора, при помощи которых можно прервать выполнение
текущей
программы
и
тем
самым
переключить
работу
центрального
процессора. Это сигналы NMI (Non Mascable Interrupt, немаскируемое
прерывание)
INTR
(INTerrupt Request,
запрос
на
прерывание).
Соответственно внешние прерывания подразделяются на два вида:
немаскируемые
и маскируемые.
Маска прерывания представляет собой двоичный код, разряды
которого поставлены в соответствие запросам или классам (уровням)
прерывания. Маска загружается командой программы в регистр маски
(рис.
2.33).
Запросы
прерываний
РгЗП
&
&
&
.
.
INTR
Схема выделения незамаски- рованного запроса
с высшим приоритетом
Код приоритет- ного запроса
РгМ
Код
маски
Рис.
2.33.
Маскирование
прерываний
Состояние
1
в
данном разряде
регистра
маски (РгМ) разрешает, а состояние 0 запрещает (маскирует) прерывание текущей программы от соответствующего запроса в регистре запросов прерываний (РгЗП). Таким образом, программа, изменяя маску в регистре маски, может устанавливать произвольные приоритетные соотношения между про- граммами без перекоммутации линий, по которым поступают запросы прерывания. Каждая прерывающая программа может установить свою маску. При формировании маски 1 устанавливаются в разряды, соответ- ствующие запросам (прерывающим программам) с более высоким, чем у данной программы, приоритетом. Схемы И выделяют поступившие незамаскированные запросы прерывания, из которых специальная схема выделяет наиболее приоритетный запрос, формирует код его номера и вырабатывает основной сигнал прерывания (INTR).
С замаскированным запросом, в зависимости от причины прерыва- ния, поступают двояким образом: или он игнорируется, или запомина- ется, с тем, чтобы осуществить затребованные действия, когда запрет будет снят. Например, если прерывание вызвано окончанием операции в ПУ, то его следует, как правило, запомнить, так как иначе ЭВМ оста- нется неосведомленной о том, что ПУ освободилось.
Возможность прерывания программ – важное архитектурное свой- ство ЭВМ, позволяющее эффективно использовать производительность процессора при наличии нескольких процессов, протекающих парал- лельно во времени, требующих в произвольные моменты времени управ- ления и обслуживания со стороны процессора.
Чтобы ЭВМ могла, не требуя больших усилий от программиста, реализовывать с высоким быстродействием прерывания программ, ма- шине необходимо придать соответствующие аппаратурные и программ- ные средства, совокупность которых получила название системы пре- рывания программ. В качестве аппаратных средств используется кон- троллер
прерывания (блок прерывания).
Основными
функциями
системы
прерывания
являются:
-
запоминание состояния прерываемой программы и осуществление перехода к прерывающей программе;
-
восстановление состояния прерванной программы и возврат к ней.
При наличии нескольких источников запросов прерывания между
ними должны быть установлены
приоритетные соотношения, опреде-
ляющие, какой из нескольких поступивших запросов подлежит обра-
ботке
в
первую
очередь,
и
устанавливающие:
имеет
право
или
нет
данный
запрос
(прерывающая
программа)
прерывать
ту
или
иную
про-
грамму.
Структура аппаратных средств системы прерывания
В процессе эволюции компьютеров на базе Intel, эволюционирова-
ла и архитектура обработки прерываний. Изначально контроллер пре-
рываний
PIC (Programmable Interrupt Controller) состоял из одной
микросхемы Intel 8259 c 8-ю входными линиями от устройств и двумя
выходными сигнальными линиями к процессору — INT и NMI. Кроме
того контроллер прерываний связан с процессором через шину. Кон-
троллер вызывает внимание процессора выставлением сигнала INT или
NMI, а номер возникшего прерывания передает через шину. Кроме того,
через шину процессор может осуществлять управление контроллером.
На физическом уровне различают даже несколько шин, через которые
связаны
контроллер
с
процессором.
Восемь входных линий контроллера прерываний позволяли назна-
чать устройствам 8 разных аппаратных прерываний. Позже этого оказа-
лось не достаточно. Чтобы расширить количество входных линий в IRQ
два одинаковых контроллера связали каскадно. Выходная сигнальная
линия дополнительного контроллера завязывалась на входную линию
главного контроллера с номером 2. Таким образом, для устройств в та-
кой
совместной схеме
осталось
15
входных линий.
С появлением многоядерных систем потребовались дополнитель-
ные контроллеры прерываний. Интелу потребовалось решать две зада-
чи. Во-первых, снова появилась нехватка входных линий прерываний.
Во-вторых, потребовался механизм межпроцессорной синхронизации в
многопроцессорных
системах.
На
смену
PIC,
Intel
разработал
APIC.
APIC (Advanced Programmable Interrupt Controller) —
улуч-
шенный
программируемый
контроллер
прерываний.
Преимущества
расширенного
контроллера
прерываний:
-
возможность реализации межпроцессорных прерываний — сигналов от одного процессора другому;
-
поддержка до 256 входов IRQ, в отличие от 1 5 в классической архи- тектуре;
-
крайне быстрый доступ к регистрам текущего приоритета прерыва- ния и подтверждения прерывания.
APIC поддерживался в ОС Windows, начиная с Windows NT 4.0.
APIC
состоит
из
двух
модулей:
-
LOCAL APIC — располагается в ядре процессора, если система мно- гоядерна - в каждом ядре;
-
I/O APIC — контроллер, расположенный на системной плате, обыч- но как часть микросхем обрамления.
На примере структуры соединения контроллеров прерывания (рис.
2.34) внутрь каждого ядра процессора поместили контроллер с именем
Local APIC, а в дополнение к 2-м контроллерам 8259, добавили IOAPIC.
Появилась
дополнительная
шина
APIC,
связывающая
между
собой
IOAPIC
и
LocalAPIC.
Появились
линии
синхронизации
процессоров.
Шина
APIС
Шина
синхронизации
Рис.
2.34.
Пример
структуры
соединия
контроллеров
прерывания
В настоящий момент наблюдается тенденция к отказу от IO APIC,
как
и
проводников
IRQ,
и
переходу
на
Message Signaled Interrupts.