logo
Архитектура средств ВТ / Литература / Цилькер / Организация ЭВМ и систем / глава 8

Реализация ввода/вывода по прерываниям

При реализации ввода/вывода по прерываниям необходимо дать ответы два вопроса. Во-первых, определить, каким образом ЦП может выяснить, какой из МВВ и какое из подключенных к этому модулю внешних устройств выставили запрос. Во-вторых, при множественных прерываниях требуется решить, какое из них должно быть обслужено в первую очередь.

Сначала рассмотрим вопрос идентификации устройства. Здесь возможны три основных метода:

■ множественные линии прерывания;

■ программная идентификация;

■ векторное прерывание.

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

При программной идентификации, обнаружив запрос прерывания, ЦП переходит к общей программе обработки прерывания, задачей которой является опрос всех МВБ с целью определения источника запроса. Для этого может быть выделена специальная командная линия опроса. ЦП помещает на адресную шину адрес опрашиваемого МВБ и формирует на этой линии сигнал опроса. Реакция модуля зависит от того, выставлял он запрос пли нет. Возможен и иной вариант, когда каждый МВВ включает в себя адресуемый регистр состояния. Тогда ЦП считывает содержимое PC каждого модуля, после чего выясняет источник прерываний. Когда источник прерывания установлен, ЦП переходит к программе обработки прерывания, соответствующей этому источнику. Недостаток метода программной идентификации заключается в больших временных потерях.

Наиболее эффективную процедуру идентификации источника прерывания обеспечивают аппаратурные методы, в основе которых лежит идея векторного прерывания. В этом случае, получив подтверждение прерывания от процессора, выставившее запрос устройство выдает на шину данных специальное слово, называемое вектором прерывания. Слово содержит либо адрес МВВ, либо какой-нибудь другой уникальный идентификатор, который ЦП интерпретирует как указатель на соответствующую программу обработки прерывания. Такой подход устраняет необходимость в предварительных действиях с целью определения источника запроса прерывания. Реализуется он с помощью хранящейся в ОП таблицы векторов прерывания (рис. 8.8), где содержатся адреса программ обработки прерываний. Входом в таблицу служит вектор прерывания, Начальный адрес таблицы (опю) обычно задается неявно, то есть под таблицу отводится вполне определенная часть памяти.

Наиболее распространены два варианта векторной идентификации источник запроса прерывания: цепочечный опрос и арбитраж шины.

Рис. 8.8. Идентификация запроса с помощью вектора прерывания

При цепочечном методе для передачи запроса прерывания модули ввода/вывода совместно используют одну общую линию. Линия подтверждения прерывания последовательно проходит через все МВВ. Когда ЦП обнаруживает запрос прерывания, он посылает сигнал по линии подтверждения прерывания. Этот сигнал движется через цепочку модулей, пока не достигнет того, который выставил запрос. Запросивший модуль реагирует путем выдачи на шину данных своего вектора прерывания.

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

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