Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpora_OMSU.docx
Скачиваний:
43
Добавлен:
19.09.2019
Размер:
419.12 Кб
Скачать

46.Программный полинг флажков готовности при прерываниях. Программный полинг

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

1. Управление возвращается в основную программу без проверки готовности

остальных ПУ. Здесь гарантируется обязательная проверка в каждом цикле полинга ПУ с

высоким приоритетом, так как обслуживание их блокирует обслуживание устройств с

меньшим приоритетом.

2. Управление возвращается к программе полинга, т.е. в точку проверки прерывания

следующего ПУ (на рис.3.4 это показано цифрой). Этот способ гарантирует проверку в

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

47.Одноуровневая и многоуровневая система прерываний. Внутренние сигналы прерываний. Одноуровневые прерывания.

Данная система прерываний реализована таким образом, что при возникновении прерывания процессор аппаратно переходит к подпрограмме обработки прерываний, расположенной по некоторому фиксированному адресу. Чтобы упростить аппаратную часть системы прерываний, этот адрес обычно располагается либо в начале, либо в конце адресного пространства программной памяти. Поскольку для обработки ВСЕХ прерываний используется только ОДНА точка входа, то такая система прерываний получила название одноуровневой. В такой системе выявление источника прерываний путем опроса состояния флажков признаков прерываний в начале программы обработки прерываний. При обнаружении установленного флажка происходит переход к соответствующему участку процедуры. Чем больше возможных источников прерываний, тем больше времени необходимо для обнаружения источника прерывания. Такой метод обнаружения источника прерывания называется программным опросом  или поллингом (polling). Его недостатком является довольно большое время, затрачиваемое на поиск источника прерывания и, как следствие, замедленная реакция системы на внешние события. Его достоинство – простота реализации системы прерываний. Многоуровневая система прерываний. Запрещение прерываний во время обслуживания запросов периферийных устройств, может привести к потере запросов прерываний запоминающих устройств, которые появляются в этом интервале времени. Чтобы исключить такую ситуацию, необходимо разрешать прерывание прерывающей программы, при приходе запроса с большим приоритетом. Система прерываний называется многоуровневой, если подпрограмма обслуживания одного уровня, могу прерываться запросом на другом уровне. В большинстве случаев система прерывания реагирует на внешние запросы от периферийных устройств, как и на внутренний сигнал прерывания. Инициируемые в процессе выполнения программы в случае возникновения особой ситуации(понижение напряжения питания, сигнал от таймера и т.д.). в такой системе может быть несколько источников прерывания(внутренний и внешний). Внутренние источники прерываний, подключенные к выходам встроенных периферийных модулей, могут быть запрограммированы на срабатывание, как по уровню, так и по изменению уровня. Значения активных уровней внутренних прерываний для пользователя не имеют значения.

Рис. 24-4. Внутренняя структура источника внутренних прерываний

48.Сравнение алгоритмов программ ввода-вывода с опросом флажков готовности, ввод-вывод по прерыванию. Данный режим характеризуется тем, что все действия по вводу-выводу реализуются

командами прикладной программы. Инициатива проведения операций ввода-вывода в этом способе исходит от микропроцессора. Для большинства ПУ до выполнения операций ввода-вывода необходимо убедиться в их готовности, после чего непосредственно осуществляется обмен данными. Таким образом, ввод-вывод является асинхронным. Для определенной категории ПУ (например, индикаторы на светодиодах) отсутствует необходимость проверки готовности к операциям ввода-вывода, в этом случае в соответствующих местах программы используются команды ввода IN или вывода OUT. Такая передача данных называется синхронным или безусловным вводом –выводом. Общее состояние ПУ в этом режиме ввода–вывода характеризуется флагом готовности READY, называемым также флажком готовности/занятости (READY/BUSY). Иногда состояния готовности и занятости идентифицируются отдельными флажками READY и BUSY, входящими в слово состояния устройства. Интерпретация флажка READY в устройствах ввода и устройствах вывода различна. Для устройств ввода обычно принимается следующая интерпретация флажка READY и выполняемых с ним операциям:- состояние READY=0 означает отсутствие входных данных в регистре ввода; - состояние READY=1 определяет наличие входных данных в регистре ввода; - подпрограмма инициализации сбрасывает флажок READY;

- при загрузке входных данных ПУ в регистр ввода флажок READY автоматически устанавливается;

- при вводе данных (считывании) микропроцессором флажок READY сбрасывается. Для устройств вывода соответствующие состояния и действия имеют другой смысл: - состояние READY=0 означает недоступность регистра вывода для приема данных от микропроцессора; - состояние READY=1 сигнализирует о доступности регистра вывода; - подпрограмма инициализации устанавливает флажок READY; - при выводе (записи) данных микропроцессором флажок READY сбрасывается;

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

нескольких слов данных. Когда же флажок сброшен, микропроцессор выполняет цикл из 2-3 команд с повторной проверкой флажка READY до тех пор, пока устройство не будет готово к операциям ввода-вывода. Данный цикл называется циклом ожидания и реализуется в различных микропроцессорах по-разному. Основной недостаток программного ввода-вывода связан с непроизводительными потерями времени микропроцессора в циклах ожидания. Для некоторых ПУ основное время микропроцессора приходиться на бесполезные циклы ожидания, в которых он не выполняет какой-либо полезной работы. К достоинству программного ВВ относят простоту его реализации, не требующих дополнительных аппаратных средств. Ввод-вывод по прерываниям. Основным недостатком программно-управляемого ввода-вывода является нерациональное использование машинного времени микропроцессора. Оно, в основном, тратится на циклы ожидания изменений во входном коде при поддержке портов безусловного ввода или на циклы ожидания готовности порта при поддержке портов условного ввода-вывода. Число циклов ожидания может быть очень большим из-за низкой скорости работы большинства внешних устройств. Полностью исключить циклы ожидания и связанные с ними потери машинного времени позволяет ввод-вывод по прерываниям. Порты, использующие этот вид обмена, не имеют средств для пересылки в микропроцессор сигнала готовности по шине данных. На основе сигналов готовности они формируют запросы на обслуживание IRQ. Функциональная схема включения таких портов в микропроцессорную систему с учебным микропроцессором представлена на рис.4.17. Эта схема реализует так называемую одноуровневую векторную систему прерываний. Она включает в себя порты 1…N, реализующие асинхронный ввод-вывод на внешнем участке обмена, элемент «ИЛИ», приоритетный шифратор и порт ввода вектора прерывания. Пусть в исходном состоянии все запросы на обслуживания IRQ1…IRQN равны нулю, то есть отсутствуют. Пусть далее появляется запрос от порта ввода No1 IRQ = 1. Этот запрос через элемент «ИЛИ» передается на вход запроса прерываний INT процессора. Процессор, реагируя на этот запрос, выполняет следующие действия:

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

программы;

2. запрещает прерывания;

3. завершает выполнение текущей команды;

4. переходит в режим приема кода операции с шины данных;

5. блокирует с помощью системного контроллера выдачу сигнала MEMR шины управления и формирует на отдельной линии этой шины сигнал INTA – «подтвеждение прерывания»;

6. принимает с шины данных код команды рестарта RST 1;

7. выполняет эту команду, то есть записывает в стек адрес следующей по порядку команды основной программы и передает управление по адресу 0008H, с которого должна начинаться программа ввода из порта 1;

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]