Прямой доступ к памяти (ПДП или DMA – Direct Memory Access) представляет собой высокоскоростной способ обмена информацией между ПУ и ОП, например, при загрузке данных в ОП с внешнего носителя.
Обмен ПДП осуществляется автономно от ЦП. В этом режиме скорость передачи данных определяется только внешними устройствами и благодаря этому компьютер может выполнять ввод-вывод с максимальной скоростью самих внешних устройств. Переход в режим ПДП выполняется по запросу ПУ подобно тому, как обрабатываются запросы прерываний. Однако в отличие от запросов прерываний, при обработке которых процессор продолжает управлять шиной, в режиме ПДП управление передается другому(внешнему) устройству.
В современных ПК для ПДП-пересылок используют либо специализированные сопроцессоры ввода-вывода, либо специальные контроллеры DMA.
Сопроцессор ввода-вывода – это вспомогательный процессор, работающий в паре с ЦП и имеющий собственную систему команд, которая ориентирована на операции ввода-вывода. При наличии сопроцессора ввода-вывода все действия по организации передач ввода-вывода, включая настройку внешнего устройства, программный ввод-вывод и операции ПДП, реализуются без участия ЦП. Сопроцессор может реализовывать арифметические и логические операции, переходы, поиск и преобразования данных. Сопроцессор ввода-вывода – сложное устройство. При его использовании для организации ПДП часто применяют раздельные шины доступа к ОЗУ со стороны ЦП и ПУ.
Контроллер DMA – более простое устройство. При использовании контроллера DMA раздельные шины доступа к ОЗУ обычно не применяют. В большинстве архитектур предусмотрен очень похожий на ПДП режим, который называют захватом шины или прямым управлением шиной(Bus Mastering). Переход в такой режим начинается по запросу от периферийного устройства, но в отличие от ПДП управление шиной получает не контроллер DMA, а контроллер ПУ, который и берет на себя полную ответственность за обмен. При этом обмен может осуществляться не только между ПУ и ОЗУ, но и между двумя ПУ.
Контроллер DMA реализуется в виде СБИС (сверхбольших интегральных схем), управляющей работой нескольких независимых каналов ПДП. В современных ПК он входит в состав СБИС чипсета.
Типичный контроллер DMA i8237 поддерживает работу четырех независимых каналов обмена, каждый из которых обслуживает одно ПУ. При одновременном поступлении запросов ПДП каналы конкурируют на СШ согласно заданным приоритетам.
Основная задача канала заключается в
¾ генерации адресов ОП и
¾ необходимых управляющих сигналов, обслуживающих передачу данных.
Адреса, устанавливаемые контроллером на шине адреса, относятся к памяти, а не к ПУ.
Адрес ПУ задавать не требуется, т.к. обмен осуществляется с устройством, запросившим ПДП.
Контроллер DMA подключен к СШ через двунаправленные буферы адреса и данных. При программировании контроллера DMA обеспечивают его настройку на определенный тип передачи, задают адреса памяти и размер передаваемого массива данных.
Каждый канал содержит регистр адреса, счетчик байтов и регистр режима канала. Режимов 3 вида:
Одиночной передачи
Блочной передачи(циклы чтения(записи) повторяются заранее установленное число раз)
Передачи по требованию(циклы повторяются, пока присутствует сигнал запроса от ПУ)
В СШ для каждого канала DMA выделяется пара сигналов: DRQ(запрос на передачу) и DACK(разрешение(подтверждение) работы канала DMA). Запросы ПУ на обслуживание принимаются по линиям DRQ. Контроллер формирует сигнал подтверждения запроса по линии DACK соответствующего канала.
Передача массива данных состоит из последовательных циклов,
каждый из которых представляет собой комбинацию одновременно выполняемых
¾ команды обращения к памяти
¾ и команды обращения к порту УВВ.
Устройство управления контроллера содержит:
¾ схему реализации приоритетов
¾ регистр режима(позволяет маскировать запросы в каналах, назначать разные способы обработки запросов(фиксированный или круговой) и модифицировать функции контроллера)
3 – ЦП завершает текущий внешний обмен и отключается от СШ
3 – сигнал разрешения прямого доступа
4 – сигнал Address Enable для оповещения остальных устройств, что на СШ выполняется цикл ПДП
5 – по завершению передачи блока данных контроллер снимает(1) и (4) и управление шиной передается ЦП.
Отличие от простого адресного обмена состоит в том, что контроллер DMA формирует одновременно два строба: строб чтения источника информации и строб записи в приемник информации. Кроме того, он модифицирует адреса памяти для повторения цикла обмена при передаче массива байтов или слов. В процессе обмена после каждого обращения к ОЗУ содержимое счетчика канала уменьшается на 1. Циклы обмена повторяются до нулевого значения счетчика или до тех пор, пока ПУ сохраняет (1запрос на передачу).