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

7.2.1. Аппаратное обеспечение для поддержки прерываний

Как уже было сказано, устройства ввода-вывода запрашивают прерывания путем активизации линии шины, называемой линией запроса прерывания. В большин­стве компьютеров прерывания могут запрашиваться несколькими устройствами ввода-вывода. Но и в этом случае для обслуживания прерываний может исполь­зоваться одна линия (рис. 7.6). Каждое из устройств подсоединяется к этой ли­нии с помощью ключа, соединенного с «землей». Для того чтобы запросить преры­вание, устройство замыкает этот ключ. Таким образом, если ни один из сигналов запроса прерывания от intr1 до INTRn не активен, то есть если все ключи откры­ты, напряжение на линии запроса прерывания равно Vdd. Это неактивное состоя­ние линии. Когда устройство запрашивает прерывание, замыкая свой ключ, на­пряжение на линии падает до 0, в результате чего процессор получает сигнал запроса прерывания INTR, равный 1. Поскольку замыкание одного или несколь­ких ключей приводит к падению напряжения на линии до 0, значение INTR явля­ется логической суммой (ИЛИ) запросов отдельных устройств:

INTR = INTR1 + ... + INTRn

Для обозначения сигнала запроса прерывания часто используют форму до­полнения , поскольку сигнал активен, когда напряжение на линии равно 0.

В электронной реализации схемы, показанной на рис. 7.6, для управления ли­нией используются специальные вентили, называемыевентилями с откры­тым коллектором (для двухполюсных схем) или вентилями с открытым стоком (для схем МОП). Такие вентили эквивалентны ключу, соединяющему линию с «землей»: когда ключ открыт, значением на выходе вентиля является 0, а когда закрыт — 1. Уровень напряжения, а также логическое состояние выхода вентиля в соответствии с приведенным выше равенством зависят от сигналов, поданных на все соединенные с шиной вентили. Резистор R называется повышающим рези­стором, поскольку при открытых ключах он позволяет поднять напряжение на линии до уровня, соответствующего состоянию высокого напряжения.

Рис. 7.6. Архитектура шины с открытым стоком, используемая при реализации типичной линии запроса прерывания

7.2.2. Запрет и разрешение прерываний

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

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

Рассмотрим простой пример обработки запроса на прерывание, поступающего от одного устройства. Когда устройство активизирует сигнал запроса прерыва­ния, оно поддерживает этот сигнал активным до тех пор, пока не узнает, что про­цессор принял запрос. Это означает, что сигнал запроса прерывания будет акти­вен еще какое-то время спустя после вызова программы обработки прерывания — до тех пор, пока не будет выполнена команда обращения к данному устройству. Важно, чтобы этот активный сигнал не привел к следующему прерыванию и та­ким образом не заставил систему войти в бесконечный цикл, из которого она не сможет выйти. Существует несколько механизмов решения этой проблемы.

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

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

  2. Второй механизм в большей мере подходит для простого процессора с единст­венной линией запроса прерывания. Он заключается в том, что процессор сам за­прещает прерывания перед началом выполнения программы обработки прерыва­ний и разрешает таковые по ее завершении. После сохранения в стеке регистра PC и регистра состояния процессора FX процессор выполняет действия, эквива­лентные команде запрета прерываний. Очень часто для запрета и разрешения прерываний используется один разряд в регистре FX, называемый флагом разре­шения прерываний (interrupt-enable). Если прерывания разрешены, этот разряд со­держит 1, а если запрещены — 0. После сохранения в стеке регистра FX, в котором разряд разрешения прерываний установлен в 1, процессор очищает этот разряд в своем регистре FX, запрещая тем самым дальнейшие прерывания. При выполне­нии команды возврата из прерывания содержимое регистра FX восстанавливается из стека и флаг разрешения прерываний снова становится равным 1. Это значит, что прерывания разрешены.

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

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

1. Устройство генерирует запрос прерывания.

2. Процессор прерывает текущую выполняемую программу.

3. Последующие прерывания запрещаются, для чего изменяются управляю­щие биты в регистре FX (за исключением схем, в которых линия запроса прерывания управляется фронтом сигнала).

4. Устройство информируется о том, что его запрос распознан, и в ответ сбра­сывает сигнал запроса на прерывание.

5. Запрошенное прерыванием действие выполняется программой обработки прерывания.

6. Прерывания разрешаются, выполнение программы возобновляется.

Соседние файлы в папке Архитектура компьютеров