Ввод-вывод в режиме прямого доступа к памяти

Два рассмотренных выше способа обмена – программный и по прерываниям – имеют малую скорость обмена данными. Для передачи одного слова данных процессор должен выполнить несколько команд, среди них вспомогательные – изменение адреса памяти, изменение и анализ содержимого счетчика слов. В некоторых микропроцессорах (МП с архитектурой x86) невозможно в одной команде передать данные из ВУ в память. Сначала необходимо их принять в процессор, а затем из процессора передать в память. Однако во многих случаях требуется передавать большие массивы информации между памятью и внешним устройством (например, накопители на магнитных дисках). В этом случае процессор выступает в роли “лишнего звена”, транзитом пропуская через себя информацию.

В то же время память ПЭВМ обычно позволяет выполнять чтение-запись данных со скоростью нескольких Мбайт в секунду. Нередко и ВУ позволяют вводить или выводить данные с такими скоростями. Очевидно, что процессор, участвуя в таком обмене, становится “узким местом”, снижает возможные скорости обмена. Связь с такими устройствами удобно реализовать в режиме прямого доступа к памяти (ПДП, DMA – Direct Memory Access). В этом режиме на время передачи действия МП приостанавливаются, и он отключается от шины адреса и данных. Инициирование и управление обменом информации между периферийными устройствами и системой памяти осуществляется контроллером прямого доступа к памяти (КПДП). Контроллер ПДП позволяет быстродействующим периферийным устройствам обращаться к ОЗУ непосредственно. Межмодульный обмен осуществляется с помощью магистрали в режиме ПДП. Во время цикла обмена МП приостанавливает работу (находится в режиме ожидания), это несколько снижает его производительность.

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

Типовой микропроцессор имеет возможность работать в каждом из вышеописанных режимов обмена. Структура интерфейса МП-системы для каждого из режимов приведена на рис. 18.

Рис. 18. Структура интерфейса МП-системы:

а) программно-управляемый ВВ, ввод-вывод по прерываниям (ИВВ – интерфейс ввода-вывода, ОШ – общая шина);

б) режим ПДП (КПДП – контроллер прямого доступа к памяти)

Функции контроллера интерфейса чаще всего выполняет сам МП.

 

 

Рис.ХХХ. Подробная схема реализации ПДП

Контроллер ПДП – сложное устройство. В случае необходимости обмена контроллер сообщает об этом процессору сигналом “Запрос на захват шины” (HOLD-) или “Требование прямого доступа”. Освободив шины, процессор отвечает сигналом “Подтверждение захвата”(“Подтверждение прямого доступа”, HLDA-Hold Acknoledge), и с этого момента контроллер ПДП получает шины интерфейса в свое распоряжение.

Метод ПДП позволяет периферийным устройствам обмениваться данными с памятью минуя процессор, который в это время может обрабатывать команды, которые в него уже загружены, до тех пор, пока не потребуется выполнить обмен данными с ОЗУ. Существуют усовершенствованные методы ПДП (Enhanced DMA), которые позволяют выполнять блочные передачи в скоростном режиме.

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

Обмен по ПДП на шинах ISA, EISA и PCI имеет существенные отличия. Так, например, стандартный обмен при частоте 8 МГц на 16-разрядной шине ISA позволяет обмениваться данными с устройствами ввода-вывода со скоростью 0,1 Мбайт/с, а на шине EISA при частоте 8,33 МГц достигать скорости ввода/вывода до 4,17 Мбайт/с в стандартном режиме. В режиме групповой передачи на 32-разрядной шине EISA возможна скорость обмена до 33,33 Мбайт/с. На локальной шине PCI могут быть организованы режимы ускоренной передачи по ПДП (Multiword DMA) со скоростью 13,3 Мбайт/с или Ultra DMA со скоростью до 133 Мбайт/с при частоте 33 МГц на 32-разрядной шине (для обмена данными с УВП EIDE).

Примечания: в системе имеются каскады, т.е. объединения нескольких контроллеров прерываний и ПДП для расширения числа входных или выходных линий линии DMA разделены на 8- и 16-разрядные подгруппы; на линиях РМА шин EISA и PCI могут быть организованы передачи по 32-разрядным шинам данных в скоростных режимах.

Типичным примером использования DMA являются контроллеры дисководов и винчестера. В системах IBM PC XT/AT используется контроллер DMA Intel 8237A (, обеспечивающий четыре 8-битных канала DMA. В IBM PC AT применяется каскадное включение двух контроллеров DMA (: 8237A, обеспечивающего четыре 8-битных канала, и 8237A-5, обеспечивающего четыре 16-битных канала (см..)

Таблица Стандартное распределение каналов DMA

 

DMA Функция Разрядность Наличие слота Доступ
Регенерация DRAM - - -
Резерв +
Контроллер НГМД +
Контроллер НЖМД +
Резерв +
Звуковая карта 8/16 +
Контроллер НГМД 8/16 +
Резерв 8/16 +
Каскад для первого контроллера - -
Звуковая карта +
Резерв +
Резерв +