Методы управления вводом/выводом 4 0 1
манду В/ВЫВ, а затем продолжает делать другую полезную работу. Когда ВУ го­тово к обмену данными, оно через МВБ извещает об этом процессор с помощью запроса на прерывание. ЦП осуществляет передачу очередного элемента данных, после чего возобновляет выполнение прерванной программы.
Обсудим процесс ввода блока данных с использованием В/БЫВ по прерыва­ниям (рис. 8,7)." Оставим без внимания такие подробности, как сохранение и вос­становления контекста, действия, выполняемые при завершении пересылки бло­ка данных, а также в случае возникновения ошибок.
Процедура ввода блока данных по прерываниям реализуется следующим обра­зом. ЦП выдает команду чтения, а затем продолжает выполнение других заданий, например другой программы. Получив команду, МВБ приступает к вводу элемен­та данных с ВУ. Когда считанное слово оказывается в регистре данных модуля, МВБ формирует на управляющей линии сигнал прерывания ЦП. Выставив зап­рос, МВБ помещает введенную информацию на шину данных, после чего он готов к следующей операции В/ВЫВ. ЦП в конце каждого цикла команды проверяет наличие запросов прерывания. Когда от МВБ приходит такой сигнал, ЦП сохра­няет контекст текущей программы и обрабатывает прерывание. В рассматривае­мом случае ЦП читает слово из модуля, записывает его в память и выдает модулю команду на считывание очередного слова. Далее ЦП восстанавливает контекст прерванной программы и возобновляет ее выполнение.
Этот метод эффективнее программно управляемого В/ВЫВ, поскольку устра­няет ненужные ожидания, однако обработка прерывания занимает достаточно много времени ЦП. Кроме того, каждое слово, пересылаемое из памяти в модуль В/ВЫВ или в противоположном направлении, как и при программно управляе­мом В/ВЫВ, проходит через ЦП.
4 0 2 Глава 8. Системы ввода/вывода
Реализация ввода/вывода по прерываниям
При .реализации ввода/вывода по прерываниям необходимо дать ответы на два вопроса. Во-первых, определить, каким образом ЦП может выяснить, какой из МВБ и какое из подключенных к этому модулю внешних устройств выставили запрос. Во-вторых, при множественных прерываниях требуется решить, какое из них дол­жно быть обслужено в первую очередь.
Сначала рассмотрим вопрос идентификации устройства. Здесь возможны три основных метода:
-  множественные линии прерывания;
-   программная идентификация;
-   векторное прерывание.
Наиболее простой подход к решению проблемы определения источника запро­са — пртлененнемножественныхлиний прерывания между ЦП и модулями вво­да/вывода, хотя вьщеление слишком большого количества управляющих линий для этих целей нерационально. Более того, даже если присутствует несколько ли­ний прерывания, желательно, чтобы каждая линия использовалась всеми МВБ, при этом для каждой линии действует один из двух остальных методов идентифи­кации устройства.
При программной идентификации, обнаружив запрос прерывания, ЦП перехо­дит к общей программе обработки прерывания, задачей которой является опрос всех МВБ с целью определения источника запроса. Для этого может быть выделе­на специальная командная линия опроса. ЦП помещает на адресную шину адрес опрашиваемого МВБ и формирует на этой линии сигнал опроса. Реакция модуля зависит от того, выставлял он запрос или нет. Возможен и иной вариант, когда каждый МВБ включает в себя адресуемый регистр состояния. Тогда ЦП считыва­ет содержимое PC каждого модуля, после чего выясняет источник прерывания. Когда источник прерывания установлен, ЦП переходит к программе обработки прерывания, соответствующей этому источнику. Недостаток метода программной идентификации заключается в больших временных потерях.
Наиболее эффективную процедуру идентификации источника прерывания обеспечивают аппаратурные методы, в основе которыхлежит идея векторного пре­рывания. В этом случае, получив подтверждение прерывания от процессора, выс­тавившее запрос устройство выдает на шину данных специальное слово, называе­мое вектором прерывания. Слово содержит либо адрес МВБ, либо какой-нибудь другой уникальный идентификатор, который ЦП интерпретирует как указатель на соответствующую программу обработки прерывания. Такой подход устраняет необходимость в предварительных действиях с целью определения источника за­проса прерывания. Реализуется он с помощью хранящейся в ОП таблицы векто­ров прерывания (рис. 8.8), где содержатся адреса программ обработки прерываний. Входом в таблицу служит вектор прерывания. Начальный адрес таблицы (база) обычно задается неявно, то есть под таблицу отводится вполне определенная об­ласть памяти.
Наиболее распространены два варианта векторной идентификации источника запроса прерывания: цепочечный опрос и арбитраж шины.
При цепочечном методе для передачи запроса прерывания модули ввода/выво­да совместно используют одну общую линию. Линия подтверждения прерывания последовательно проходит через все МВБ. Когда ЦП обнаруживает запрос преры­вания, он посылает сигнал по линии подтверждения прерывания. Этот сигнал двих жется через цепочку модулей, пока не достигнет того, который выставил запрос. Запросивший модуль реагирует путем выдачи на шину данных своего вектора пре­рывания.
В варианте арбитража шины МВБ, прежде чем выставить запрос налинии за­проса прерывания, должен получить право на управление шиной. Таким образом, в каждый момент времени активизировать линию запроса прерывания может толь­ко один из модулей. Когда ЦП обнаруживает прерывание, он отвечает по линии подтверждения. После этого запросивший модуль помешает на шину данных свой вектор прерывания.
Перечисленные методы служат не только для идентификации запросившего МВБ, но и для назначения приоритетор, когда прерывание запрашивают несколь­ко устройств. При множественных линиях запроса ЦП начинает с линии, имею­щей наивысший приоритет. В варианте программной идентификации приоритет модулей определяется очередностью их проверки. Для цепочечного метода прио­ритет модулей определяется порядком их следования в цепочке. Порядок задания приоритетов при арбитраже был рассмотрен ранее в главе 4.
Прямой доступ к памяти
Хотя ввод/вывод по прерываниям эффективнее программно управляемого, оба этих метода страдают двумя недостатками:
- темп передачи при вводе/выводе ограничен скоростью, с которой ЦП в состоя­нии опросить и обслужить устройство;
Hosted by uCoz