Абсолютные приоритеты

Запрос, имеющий абсолютный приоритет, прерывает выполняемую программу и инициирует выполнение соответствующей прерывающей программы.

Абсолютные приоритеты - student2.ru

Рис. 6.2 Иллюстрация абсолютного приоритета

Относительные приоритеты.

Запрос с относительным приоритетом является первым кандидатом на обслуживание после завершения выполнения текущей программы.

Абсолютные приоритеты - student2.ru

Рис. 6.3 Иллюстрация относительных приоритетов

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

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

Идентификация прерывающего устройства.

Когда в ЭВМ имеется несколько периферийных устройств, работаю­щих в режиме прерываний, сигналы их запросов на обслу­живание объединяются по схеме ИЛИ и подаются на вход INT процессора. Следовательно, при наличии активного сигнала INT= 1 без дополнительных действий и аппаратных средств невозможно определить, какое устройство должен обслуживать процессор, тем более, что запросы на обслу­живание могут формироваться одновременно несколькими устройствами. Другими словами, возникает проблема иден­тификации прерывающего устройства, т. е. однозначного перехода к определенной подпрограмме обслуживания. Разработано несколько способов решения этой проблемы, различающихся скоростью реакции процессора и объемом дополнительных аппаратных средств. При реализации лю­бого способа необходимо назначить устройствам определен­ные приоритеты и учитывать их таким образом, чтобы про­цессор, реагируя на сигнал прерывания, выбирал для обслуживания запрашивающее устройство с максимальным приоритетом.

Программный полинг.

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

На рис. 6.4 приведен типичный вариант программного полинга.

Абсолютные приоритеты - student2.ru

Рис. 6.4 Программный полинг

Первым проверяется флажок готовности устрой­ства У1 с наибольшим приоритетом. Если оно не запраши­вало обслуживания, опрашивается следующее устройство и т. д. Когда встречается первое устройство, готовое к опе­рациям ВВ, управление передается подпрограмме обслуживания этого устройства, которая определяет необходи­мые операции ВВ. По завершении обслуживания в полинге может быть запрограммировано одно из следующих дей­ствий:

1. Управление возвращается в основную программу без проверки готовности остальных устройств. Здесь гаранти­руется обязательная проверка в каждом цикле полинга устройств с высоким приоритетом, так как обслуживание их блокирует обслуживание устройств с меньшими приори­тетами.

2. Управление возвращается к программе полинга, т. е. в точку проверки прерывания следующего устройства (на рис. 6.4 показано штриховыми линиями). Этот способ га­рантирует проверку в каждом цикле полинга всех устройств.

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

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

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

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

Аппаратный полинг.

В аппаратном полинге (синонимы: дейзи-цепь, приоритетная цепочка, гирляндное или каскад­ное включение устройств) процессор и все периферийные устройства соединяются таким образом, что процессор мо­жет осуществить автоматический опрос с целью идентифи­кации прерывающего устройства (рис. 6.5).

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

Абсолютные приоритеты - student2.ru

Рис. 6.5 Схема аппаратного полинга

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

Адрес, возвращаемый прерывающим устройством, обыч­но встраивается в интерфейсную плату, и его с помощью перемычек или переключателей может изменять пользова­тель. Приоритет устройства определяется размещением его интерфейсной платы в разъеме, занимающем фиксирован­ное положение в схеме.

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

Наши рекомендации