Еще одно различие между памятью и некоторыми программируемыми высокоскоростными устройствами ввода/вывода состоит в том, что устройство ввода/вывода может самостоятельно выполнять передачу данных (операции считывания и записи). Такой тип функционирования называется прямым доступом к памяти (direct memory access, DMA). В основном, DMA связан с тем, что высокоскоростное устройство ввода/вывода захватывает системные шины для выполнения операций считывания и записи в первичной памяти без вмешательства микропроцессора системы.
Когда у периферийного устройства имеются готовые к передаче данные, оно посылает сигнал запроса DMA (DREQ) специальному устройству, называемому контроллером DMA, которое, в свою очередь, отправляет сигнал получения входного сигнала микропроцессору. Микропроцессор прекращает выполнение текущей инструкции и переводит свои контакты адресов и данных в состояние высокого импеданса (состояние холостого хода), по существу отключаясь от шин. В этот момент микропроцессор посылает контроллеру DMA сигнал доступности шин (buses available, ВА) или подтверждения получения (hold acknowledge, HLDA). В свою очередь, контроллер DMA посылает подтверждение DMA (DACK) периферийному устройству и требуемые сигналы чтения/записи и активизации, необходимые для начала передачи данных. Основная особенность операция DMA заключается в том, что контроллер DMA предназначен специально для передачи байтов данных быстрее, чем это мог бы сделать микропроцессор.
PC-совместимая подсистема DMA предоставляет АТ-совместимому компьютеру PC 4 канала для 8-разрядных передач DMA (DMA1) и 3 канала для 16-разрядных передач DMA (DMA2). Каналы DMA1 используются для выполнения передач DMA между 8-разрядными адаптерами устройств и 8- или 16-разрядными ячейками памяти. Эти 8-разрядные передачи выполняются блоками по 64 Кб и могут работать со всем адресным пространством системы. Каналы DMA2 (каналы 5, 6 и 7) используются только с 16-разрядными устройствами и могут передавать слова только блоками по 128 Кб. Первый 16-разрядный канал DMA (4 канал DMA) используется внутри системы для каскадного соединения двух контроллеров DMA.