Ввод-вывод в режиме прямого доступа к памяти
Два рассмотренных выше способа обмена – программный и по прерываниям – имеют малую скорость обмена данными. Для передачи одного слова данных процессор должен выполнить несколько команд, среди них вспомогательные – изменение адреса памяти, изменение и анализ содержимого счетчика слов. В некоторых микропроцессорах (МП с архитектурой 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 | + | ||
Каскад для первого контроллера | - | - | ||
Звуковая карта | + | |||
Резерв | + | |||
Резерв | + |