Шинная организация микропроцессорных систем- с одной шиной, с дв. Программа для эвм это упорядоченная последовательность команд, подлежащая обработке
Скачать 1.97 Mb.
|
29.Радиальная система прерываний.Физический интерфейс простейшей системы прерываний может быть представлен единственной линией запроса на прерывание IRQ (Interrupt ReQuest). Для программиста такая система прерываний представляется в виде отдельной точки входа в процедуру обслуживания. Формирование запросов на прерывание – запросов ПУ на обслуживание – происходит в контроллерах соответствующих ПУ (рис. 39). Рисунок 39 – Формирование запроса прерывания в контроллере ПУ В простейших случаях в качестве сигнала запроса прерывания может использоваться сигналготовностиПУ, поступающий из контроллера ПУ с выхода соответствующего разряда регистра состояния. Однако такое простое решение обладает существенным недостатком – процессор не имеет возможности управлять прерываниями, т.е. разрешать или запрещать их для отдельных ПУ. В результате организация обмена данными в режиме прерывания с несколькими ПУ существенно усложняется. Поэтому регистр состояния контроллера ПУ дополняют еще одним разрядом – разрешениепрерывания. Запись 1 или 0 в этот разряд регистра состояния производится программным путем (прямой вывод) по одной из линий шины данных системной магистрали. Управляющий сигнал запроспрерыванияот ПУ формируется с помощью схемы совпадения только при наличии единиц в разрядахготовностьПУ и разрешениепрерываниярегистра состояния контроллера ПУ. При необходимости обслуживания нескольких ПУ в такой системе сигналы запросов на прерывание от всех ПУ поступают на один вход процессора, при этом запросы объединяются по схеме «монтажное ИЛИ». В этом случае возникает проблема идентификации ПУ, запросившего обслуживания. Данная проблема решается с помощью специальной процедуры, называемой поллингом. Функция поллинга состоит в последовательном опросе состояния всех ПУ и выявлении готовых к обслуживанию. В данном случае поллинг реализуется программнымспособомпутем анализа разряда готовности регистров состояния контроллеров ПУ. Организация прерываний с программным опросом готовности предполагает наличие в памяти микропроцессорной системы единойподпрограммыобслуживанияпрерыванийотвсехПУ. Обслуживание ПУ с помощью единой подпрограммы обработки прерываний производится следующим образом. После выполнения очередной команды основной программы процессор проверяет наличие запроса на прерывание от ПУ. Если запрос прерывания есть и в процессоре прерывание разрешено, то МП переключается на выполнение подпрограммы обработки прерываний. После сохранения содержимого регистров процессора, используемых в подпрограмме, начинается последовательный опрос регистров состояния контроллеров всех ПУ, работающих в режиме прерывания. Как только подпрограмма обнаружит готовое к обмену ПУ, сразу выполняются действия по его обслуживанию. Завершается подпрограмма обработки прерывания после опроса готовности всех ПУ восстановлением содержимого регистров процессора. Приоритет ПУ в системе с программным опросом готовности ПУ однозначно определяется порядком их опроса в подпрограмме обработки прерывания. Чем раньше в подпрограмме опрашивается готовность ПУ, тем меньше время реакции на его запрос и выше приоритет. Приоритетзапросаотражает важность и срочность его обслуживания. При назначении приоритетов учитываются частота появления запроса, длительность процесса обслуживания, последствия задержки обслуживания и др. Необходимость проверки готовности всех ПУ существенно увеличивает время обслуживания тех ПУ, которые опрашиваются последними. Это является основным недостатком рассматриваемого способа организации прерываний. Поэтому обслуживание прерываний с программным опросом готовности ПУ используется только в тех случаях, когда отсутствуют жесткие требования на время обработки запросов прерываний ПУ. Для увеличения числа одновременно обслуживаемых источников прерываний в процессоре вводится несколько линий с фиксированными стартовыми адресами подпрограмм обслуживания. Такие линии называются радиальными, а система прерываний – радиальнойсистемойпрерываний. В радиальной системе прерываний проблема идентификации ПУ решается путем выделения каждому ПУ своей линии для передачи запроса на прерывание. В зависимости от того, по какой линии приходит запрос на прерывание, управление передается подпрограмме обслуживания соответствующего ПУ. Обычно часть радиальных линий отводится для приема внутренних прерываний процессора, отражающих его критические состояния и требующих немедленного обслуживания. Остальные отводятся для приема внешних (по отношению к процессору) запросов. В зависимости от числа запросов, одновременно находящихся на обслуживании, различают одно- и многоуровневые системы прерываний. В одноуровневойсистеме прерываний в каждый момент времени допускается только один подтвержденный запрос, т.е. на обслуживании одновременно находится только один запрос. При этом обработка всех других запросов откладывается до окончания текущего обслуживания. Если несколько устройств одновременно запросили обслуживание, процессор выбирает только одно из них на основании приоритета каждого из запросов. Наиболее практичной и естественной является система прерываний с фиксированнымилинейноупорядоченнымиприоритетами. В такой системе все приоритеты строго упорядочены, что обеспечивает однозначный выбор одного из них. Приоритеты запросов могут динамически изменяться по заданномуалгоритму (аппаратно или программно), однако в каждый момент времени все приоритеты остаются строго упорядоченными. Широко применяемым алгоритмом изменения приоритетов является циклический. В соответствии с ним после каждого очередного обслуживания запроса происходит циклический сдвиг приоритетов с присвоением минимального приоритета только что обработанному запросу. Такая схема приводит к равномерному распределению внимания процессора между всеми запросами. Она может быть использована при обслуживании группы одинаковых устройств, когда выделение какого либо из них нежелательно или их нельзя однозначно упорядочить по приоритетам. Многоуровневаясистема разрешает многократные (по числу уровней) прерывания одних процедур обслуживания другими. Каждый уровень связывается с определенной радиальной линией и строго упорядоченным приоритетом. Процедура обслуживания некоторого уровня может быть прервана только запросами более высокого уровня. Фоновую работу процессора связывают с минимальным приоритетом, ее может прервать любой запрос. Для работы многоуровневой системы прерываний необходимо знать приоритеттекущейпроцедуры. Для этого вводится понятие приоритет процессора. Приоритетпроцессоравсегда равен приоритету текущей выполняемой процедуры: при выполнении фоновой задачи процессор имеет минимальный приоритет, при выполнении процедуры обслуживания запроса некоторого уровня приоритет процессора принимает значение, равное приоритету этого уровня. При поступлении запроса на прерывание его приоритет сравнивается с приоритетом процессора и, если приоритет запроса выше, то такой запрос прерывает работу процессора. При этом приоритет процессора повышается, принимая значение, равное приоритету запроса. Каждая внешняя радиальная линия с фиксированным адресом подпрограммы обработки прерывания может использоваться для приема запросов от нескольких источников прерываний. В этом случае линии запросов на прерывание от ПУ объединяются по схеме «монтажное ИЛИ» и подключаются к некоторой радиальной линии процессора. В этом случае после принятия общего запроса к обслуживанию возникает задача идентификации источника, выставившего запрос, и передачи управления соответствующей процедуре обслуживания. Эта задача решается программным способом с помощью процедуры поллинга, как это было рассмотрено ранее |