DMA (Direct Memory Access - "прямой доступ к памяти", или ПДП). Это способ (механизм, технология) обмена данными между внешним устройством и памятью без участия процессора, что может заметно снизить нагрузку на процессор и повысить общую производительность системы. Необходимо сказать, что "прямой доступ к памяти" существовал в электронной вычислительной технике задолго до появления первых ПК. Он осуществляется через DMA-контроллер - специальный чип, получающий первоначальную команду на перенос данных от центрального процессора. Каналы DMA предназначены для передачи массивов информации по 8- или 16-битным шинам одновременно. В отличие от портов ввода/вывода каналы DMA непосредственно не сообщаются с центральным процессором, они работают напрямую с системной памятью. Всего каналов DMA - 8 (от 0 до 7).
Первоначально DMA-контроллер задумывался, прежде всего, для разгрузки CPU от тривиальных задач, например, контроля флоппи- дисководов или жестких дисков (на PC/XT DMA-каналов было 4). Начиная с компьютеров PC/AT передача данных от жестких дисков и к ним стала осуществляться уже не через каналы DMA, а через программируемый ввод/вывод.
Начиная с Intel 80386, процессоры располагают собственным устройством управления памятью (MMU - Memory Management Unit), которое пересчитывает логические адреса в физические. DMA-контроллеры "ничего не знают" о разрядности адресов. Поэтому, чтобы иметь возможность применять DMA вместе с управлением виртуальной памятью, нужно зарезервировать в качестве DMA-буфера какую-то область памяти в первом мегабайте адресного пространства, где логические и физические адреса совпадают. В эту область DMA-контроллер записывает данные, прежде чем они будут скопированы процессором из этого буфера. Эта технология, называемая двойной буферизацией, неэффективна.
Основными "потребителями" каналов DMA являются звуковые карты, CD-ROM-дисководы более ранних выпусков. В обоих случаях скорость передачи не превышает 500 Кб/с. Максимально возможная скорость передачи данных по DMA-каналам (около 2 Мб/с) значительно перекрывает потребности 8-битной звуковой карты. Если же необходимо осуществить быстрый обмен информацией, то в этом случае DMA не используется - процессор берет на себя управление процессом переноса информации, перекрывая все допустимые способности DMA-каналов.
Еще одно замечание. Возможность использования одного IRQ несколькими картами расширения требует поддержки со стороны драйверов и реализуется на уровне конкретного программного продукта. Использование разными картами (или устройствами) одного канала DMA в принципе возможно, но связано со множеством проблем и поэтому не рекомендуется. Простейший пример! При одновременном использовании DMA-канала звуковой картой и портом принтера может возникнуть треск в динамиках или "зависание" воспроизведения звука.
Небольшое уточнение. Цикл DMA начинается с запроса DMA от исполнителя, желающего произвести обмен. После освобождения шины текущим задатчиком (например, процессором) контроллер DMA формирует соответствующий сигнал - "DACK" (DMA Acknowledge - подтверждение ПДП), говорящий о предоставлении канала DMA запросившему его устройству.
DMA-канал
Разрядность
Назначение |
0
8
свободен (ранее использовался в PC/XT для обновления памяти |
1
8
обычно задействуется под звуковые или сетевые карты |
2
8
контроллер floppy-дисководов |
3
8
свободен (в PC/XT обеспечивал передачу данных от HD), иногда используется EPP-функцией параллельного порта |
4
16
каскадирование для 8-разрядного контроллера (координация между "старым" и "новым" чипами DMA) |
5
16
свободен (часто задействуется под 16-разрядные звуковые карты) |
6
16
свободен |
7
16
свободен
|