При цепочечном методе для передачи запроса прерывания модули ввода/выво­да совместно используют одну общую линию. Линия подтверждения прерывания последовательно проходит через все МВБ. Когда ЦП обнаруживает запрос преры­вания, он посылает сигнал по линии подтверждения прерывания. Этот сигнал двих жется через цепочку модулей, пока не достигнет того, который выставил запрос. Запросивший модуль реагирует путем выдачи на шину данных своего вектора пре­рывания.
В варианте арбитража шины МВБ, прежде чем выставить запрос налинии за­проса прерывания, должен получить право на управление шиной. Таким образом, в каждый момент времени активизировать линию запроса прерывания может толь­ко один из модулей. Когда ЦП обнаруживает прерывание, он отвечает по линии подтверждения. После этого запросивший модуль помешает на шину данных свой вектор прерывания.
Перечисленные методы служат не только для идентификации запросившего МВБ, но и для назначения приоритетор, когда прерывание запрашивают несколь­ко устройств. При множественных линиях запроса ЦП начинает с линии, имею­щей наивысший приоритет. В варианте программной идентификации приоритет модулей определяется очередностью их проверки. Для цепочечного метода прио­ритет модулей определяется порядком их следования в цепочке. Порядок задания приоритетов при арбитраже был рассмотрен ранее в главе 4.
Прямой доступ к памяти
Хотя ввод/вывод по прерываниям эффективнее программно управляемого, оба этих метода страдают двумя недостатками:
- темп передачи при вводе/выводе ограничен скоростью, с которой ЦП в состоя­нии опросить и обслужить устройство;
4 0 4 Глава 8. Системы ввода/вывода
* ЦП вовлечен в управление передачей, для каждой пересылки он должен вы­полнить определенное количество команд.
Когда пересылаются большие объемы данных, требуется более эффективный способ ввода/вывода — прямой доступ к памяти (ПДП). ПДП предполагает на­личие на системной шине дополнительного модуля — контроллера прямого дос­тупа к памяти (КПДП), способного брать на себя функции ЦП по управлению системной шиной и обеспечивать прямую пересылку информации между ОП и ВУ, без участия центрального процессора. В сущности, КПДП — это и есть модуль вво­да/вывода, реализующий режим прямого доступа к памяти.
Если ЦП желает прочитать или записать блок данных, он прежде всего должен поместить в КПДП (рис. 8.9) информацию, характеризующую предстоящее дей­ствие. Этот процесс называется инициализацией КПДП и включает в себя занесе­ние в контроллер следующих четырех параметров:
-   вида запроса (чтение или запись);
-   адреса устройства ввода/вывода;
-  адреса начальной ячейки блока памяти, откуда будет извлекаться или куда бу-
дет вводиться информация;
-  количества слов, подлежащих чтению или записи.
Методы управления вводом/выводом 4 0 5
Первый параметр определяет направление пересылки данных: из ОП в ВУ или наоборот. За исходную точку обычно принимается память, поэтому под чтением понимают считывание данных из ОП и выдачу их на устройство вывода, а под записью — прием данных из устройства ввода и запись в ОП. Вид запроса запоми­нается в схеме логики управления контроллера.
К КПДП обычно могут быть подключены несколько ВУ, а адрес УВВ конкре­тизирует, какое из них должно участвовать в предстоящем обмене данными. Этот адрес запоминается в логике управления КПДП.
Третий параметр — адрес начальной ячейки — хранится в регистре адреса (РА) контроллера. После передачи каждого слова содержимое РА автоматически уве­личивается на единицу, то есть в нем формируется адрес следующей ячейки ОП.
Размер блока в словах заносится в счетчик данных (СД) контроллера. После передачи каждого слова содержимое СД автоматически уменьшается на единицу. Нулевое состояние СД свидетельствует о том, что пересылка блока данных завер­шена
После инициализации процесс пересылки информации может быть начат в лю­бой момент. Инициаторами обмена вправе выступать как ЦП, так и ВУ. Устрой­ство, желающее начать В/ВЫВ, извещает об этом контроллер подачей соответ­ствующего сигнала. Получив такой сигнал, КПДП выдает в ЦП сигнал «Запрос ПДПк В ответ ЦП освобождает шины адреса и.данных, а также те линии шины управления, по которым передаются сигналы, управляющие операциями на шине адреса (ША) и шине данных (ШД). К таким, прежде всего, относятся линии ЧгЗУ, ЗпЗУ, Вью, Вв и линия выдачи адреса на ША Далее ЦП отвечает контроллеру сиг­налом «Подтверждение ПДП», который для последнего означает, что ему делеги­рованы права на управление системной шиной и можно приступать к пересылке данных.
Процесс пересылки каждого слова блока состоит из двух этапов.
При выполнении операции чтения (ОП -> ВУ) на первом этапе КПДП выстав­ляет на шину адреса содержимое РА (адрес текущей ячейки ОП) и формирует сигнал ЧгЗУ. Считанное из ячейки ОП слово помещается на шину данных. На вто­ром этапе КПДП выставляет на Ш А адрес устройства вывода и формирует сигнал Выв, который обеспечивает передачу слова с шины данных в ВУ.
При выполнении операции записи (ВУ —»ОП) КПДП сначала выдает на шину данных адрес устройства ввода и формирует сигнал Вв, по которому введенные данные поступают на шину данных. На втором этапе КПДП помещает на ША ад­рес ячейки ОП, куда должны быть занесены данные, и выдает сигнал ЗпЗУ. Этим сигналом информация с ШД записывается в ячейку ОП.
Как при чтении, так и при записи происходит буферизация пересылаемого сло­ва в регистре данных (РД) контроллера. Это необходимо для компенсации разли­чий в скорости работы ОП и ВУ, в силу чего сигналы Выв и Вв формируются кон­троллером лишь при получении от ВУ подтверждения о готовности. Буферизация сводится к тому, что после первого этапа слово с ШД заносится в РД, а перед вто­рым — возвращается,из РД на шину данных.
После пересылки каждого слова логика управления прибавляет единицу к со­держимому РА (формирует адрес следующей ячейки ОП) и уменьшает на едини­цу содержимое СД (ведет подсчет переданных слов).
406 Глава6. Системы ввода/вывода
Когда пересылка завершена (при нулевом значении в СД), КПДП снимает сиг­нал «Запрос ПДП», в ответ на что ЦП снимает сигнал «Подтверждение ПДП» и вновь берет на себя управление системной шиной, то есть ЦП вовлечен в про­цесс ввода/вывода только в начале и конце передачи.
Эффективность ПДП зависит оттого, каким образом реализовано распределе­ние системной шины между ЦП и КПДП в процессе пересылки блока. Здесь мо­жет применяться один из трех режимов:
-   блочная пересылка;
-   пропуск цикла;
-   прозрачный режим.
При блочной пересылке КПДП полностью захватывает системную шину с мо­мента начала пересылки и до момента завершения передачи всего блока. На весь этот период ЦП не имеет доступа к шине.
В режиме пропуска цикла КПДП после передачи каждого слова на один цикл шины освобождает системную шину, предоставляя ее на это время процессору. Поскольку КПДП все равно должен ждать готовности ПУ, это позволяет ЦП эф­фективно распорядиться данным обстоятельством,
В прозрачном режиме КПДП имеет доступ к системной шине только в тех цик­лах, когда ЦП в ней не нуждается. Это обеспечивает наиболее эффективную рабо­ту процессора, но может существенно замедлять операцию пересылки блока дан­ных. Здесь многое зависит от решаемой задачи, поскольку именно она определяет интенсивность использования шины процессором.
В отличие от обычного прерывания в пределах цикла команды имеется несколь­ко точек, где КПДП вправе захватить шину (рис 8.10). Отметим, что это не преры­вание: процессору не нужно запоминать контекст задачи.
Рис. 8.10, Точки возможного вмешательства в цикл команды при прямомдоступе кпамяти и при обычном прерывании
Механизм ПДП может быть реализован различными путями. Некоторые воз­можности показаны нарис. 8.11.
В первом примере (см. рис. 8.11, а) все ВУ совместно используют общую сис­темную шину. КПДП работает как заменитель ЦП и обмен данными между памя­тью и ВУ через КПДП производит через программно управляемый ввод/вывод. Хотя этот вариант может быть достаточно дешевым, эффективность его невысока. Как и в случае программно управляемого ввода/вывода, осуществляемого проце-сором, каждая пересылка требует двух циклов шины.
Рис. 8.11, возможные конфигурации систем прямого доступа к памяти
Число необходимых циклов шины может быть уменьшено при объединении функций КПДП и ВУ. Как видно из рис. 8.11,6, это означает, что между КПДП и одним или несколькими ВУ есть другой тракт, не включающий системную шину. Логика ПДП может быть частью ВУ, либо это может быть отдельный КПДП, уп­равляющий одним или несколькими внешними устройствами. Допустим и еще один шаг в том же направлении (см. рис, 8.11, в) — соединение КПДП с ВУ посредством шины ввода/вывода. Это уменьшает число интерфейсов В/ВЫВ в КПДП и делает такую конфигурацию легко расширяемой. В двух последних ва­риантах системная шина задействуется КПДП только для обмена данными с па­мятью. Обмен данными между КПДП и ВУ реализуется минуя системную шину.
Каналы и процессоры ввода/вывода
По мере развития систем В/ВЫВ юс функции усложняются. Главная цель такого усложнения — максимальное высвобождение ЦП от управления процессами вво­да/вывода. Некоторые пути решения этой задачи уже были рассмотрены. Следу­ющими шагами в преодолении проблемы могут быть:
1.   Расширение возможностей МВБ и предоставление ему прав процессора со специализированным набором команд, ориентированных на операции ввода/ вывода. ЦП дает указание такому процессору В/ВЫВ выполнить хранящуюся в памяти ВМ программу ввода/вывода. Процессор В/ВЫВ извлекает и испол­няет команды этой программы без участия центрального процессора и преры­вает ЦП только после завершения всей программы ввода/вывода.
2.   Рассмотренному в пункте 1 процессору ввода/вывода придается собственная локальная память, при этом возможно управление множеством устройств В/ ВЫВ с минимальным привлечением ЦП.
В первом случае МВБ называют каналом ввода/вывода (КВВ), а во втором — процессором ввода/вывода. В принципе различие между каналом и процессором ввода/вывода достаточно условно, поэтому в дальнейшем будем пользоваться тер­мином "канал".
Концепция системы ввода/вывода с КВВ характерна для больших универсаль­ных вычислительных машин (мэйнфреймов), где проблема эффективной органи-
Hosted by uCoz