Работа микроЭВМ в режиме прерываний

Страницы работы

Содержание работы

РАБОТА  МИКРОЭВМ  В  РЕЖИМЕ  ПРЕРЫВАНИЙ

До этого мы рассматривали обмен информацией в режиме ожидания (или в режиме программного опроса), который характеризуется тем, что постоянно происходит программный опрос регистров, в которых должны устанавливаться различные признаки готовности того или иного устройства. При обмене данными в режиме прерываний готовность того или иного устройства определяется не программно, а аппаратно. При работе в режиме программного опроса ЭВМ занимается только тем, что проверяет признак готовности того или иного устройства. Используя режим прерываний, работу ЭВМ можно построить следующим образом. ЭВМ исполняет какую-то программу (назовём её основной), не связанную с обменом. Когда внешнее устройство окажется готовым к приёму или выдаче информации, оно посылает в ЭВМ сигнал своей готовности (сигнал «требования прерывания» или «запрос на прерывание»), который воспринимается специальным блоком – контроллером прерываний (сам микропроцессор не имеет возможности управлять прерываниями, то есть разрешать или запрещать прерывания для различных внешних устройств). Контроллер прерываний приостанавливает (прерывает) исполнение основной программы (если он сам разрешил это прерывание) и передаёт управление подпрограмме, организующей обмен данными. Когда обмен данными завершается, возобновляется выполнение основной, временно прерванной программы.

Можно привести более простое разъяснение разницы между режимом программного опроса и режима прерываний. Например, Вы поставили на плиту чайник с водой с целью её вскипятить. Допустим, Вы не знаете точно, через какое время вода закипит. Режим программного опроса означает, что Вы должны периодически, хотя бы, например, раз в минуту смотреть на воду в чайнике. Если увидите, что вода закипела, то чайник снимаете с плиты. Режим прерываний означает, что Вы вначале должны «снабдить» чайник, например, свистком. После того, как Вы поставили чайник с водой, Вы можете идти по своим делам, а когда вода закипит, то Вы услышите свист и прервёте другие свои дела с той целью, чтобы снять чайник с плиты.

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

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

·  программный опрос регистров состояния (разряд готовности внешнего устройства) контроллеров всех внешних устройств;

·  использование векторов прерывания.

Организация прерываний с программным опросом готовности

Организация прерываний с программным опросом готовности предполагает наличие в памяти микроЭВМ единой подпрограммы обслуживания прерываний от всех внешних устройств. Обслуживание внешнего устройства с помощью единой подпрограммы обработки прерываний производится следующим образом (рисунок 8.13, с. 186). То есть эта подпрограмма является одной или общей для всех внешних устройств; в ней закладываются блоки команд, предназначенные для каждого внешнего устройства, в том порядке, в котором производится опрос внешних устройств. В конце выполнения очередной команды в основной программе процессор проверяет наличие требования прерывания от любого из внешних устройств. Если такой сигнал появился и прерывание разрешено, то происходит запоминание «места», на котором прерывается основная программа, и процессор переключается на выполнение подпрограмм, вызванных прерыванием. В первую очередь начинается последовательный опрос регистров состояния контроллеров всех внешних устройств. Как только подпрограмма обнаружит готовность одного из устройств, сразу выполняются команды, связанные с этим устройством. После обслуживания этого устройства, проверяется готовность следующего устройства и т.д. То есть, производится проверка готовности всех внешних устройств по очереди. После опроса последнего устройства и его обслуживания процессор возобновляет выполнение основной (прерванной программы).

Приоритет внешних устройств (т.е. какое устройство должно обслуживаться в первую очередь, какое – во вторую) определяется порядком их опроса в подпрограмме обработки прерываний. Чем раньше опрашивается внешнее устройство, выше его приоритет, а значит, меньше время реакции на его запрос. Необходимость проверки готовности всех внешних устройств существенно увеличивает время обслуживание тех устройств, которые обладают низким приоритетом (т.е. опрашиваются последними), в том случае, если устройства с высоким приоритетом не требуют прерывания. Поэтому обслуживание прерываний с опросом готовности всех внешних устройств применяется только в тех случаях, когда отсутствуют жёсткие требования на время обработки сигналов прерывания внешних устройств.

Организация прерываний с использованием векторов прерываний

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

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

Похожие материалы

Информация о работе