Процессор при обмене по DMA занят только инициализацией контроллера, которая сводится к записи в его регистры нескольких байт, задающих начальный адрес и размер пересылаемого блока памяти, направление и режим обмена. В самом обмене данных занят только контроллер DMA, память, к которой он обращается, и связующие их шины. Во время операций DMA процессор может продолжать работу, если выбранный режим обмена не занимает всей пропускной способности шин, используемых процессором в данный момент (шины памяти, шины PCI, через которые подключается ISA в современных компьютерах). Контроллер DMA можно считать простейшим сопроцессором ввода-вывода, разгружающим центральный процессор от рутинных операций обмена.
Обмен по DMA не всегда дает выигрыш в скорости обмена, в ряде случаев быстрее работает программированный ввод-вывод (PIO). Однако PIO занимает процессор полностью, а во время DMA процессор может заниматься полезной работой. Поскольку для инициализации контроллера DMA требуется выполнение ряда инструкций ввода-вывода, передача коротких блоков по каналу DMA нецелесообразна.
DRQx
и подтверждение обмена — DACKx#
. В PC/AT доступны 7 каналов DMA — четыре 8-битных (номера 0–3) и три 16-битных (5–7), — подключенные к первичному и вторичному контроллерам соответственно. Канал 4 используется для каскадирования (соединения контроллеров). В PC/XT были только три 8-битных канала, канал 0 использовался для регенерации памяти. Контроллеры DMA программно совместимы с системами i8237, применяемыми в первых моделях PC/XT и AT. Стандартные каналы и адреса регистров приведены в табл. 12.3.Таблица 12.3
. Стандартные каналы прямого доступа к памятиНомер канала DMA# | 0¹ | 1 | 2 | 3 | 4² | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|---|
Стандартное назначение | XT | MRFR | - | FDD | HDD | Отсутствуют | |||
AT | - | - | FDD | - | Каскад | - | - | - | |
Разрядность, байт | 1 | 2 с четного адреса | |||||||
Макс, размер блока | 64 Кбайта | 128 Кбайт, четный | |||||||
Граница блока | Кратна 1000h | Кратна 2000h | |||||||
Регистр страниц | 8 бит A16-A23 | 7 бит A17-A23 | |||||||
Адреса регистров: | |||||||||
— страниц | 087 | 083 | 081 | 082 | 08F | 08В | 089 | 087 | |
— адреса | 000 | 002 | 004 | 006 | 0C0 | 0C4 | 0C8 | 0CE | |
— счетчика | 001 | 003 | 005 | 007 | 0C2 | 0C6 | 0СА | 0СЕ |
¹ Канал 0 в XT использовался для регенерации памяти (MRFR).
² Канал 4 доступен только в PC/2 MCA.
16-битные каналы DMA 5–7 могут быть использованы интеллектуальными устройствами для
Устройства, использующие стандартные каналы DMA, могут располагаться лишь в слотах ISA/EISA или на системной плате (контроллер НГМД, LPT-порт в режиме
На время переходного периода, связанного с «изживанием» шины ISA, потребовалась возможность эмуляции каналов DMA для устройств шины PCI. Существует два механизма эмуляции каналов DMA: PC/PCI и DDMA.
12.4.1. Контроллер прямого доступа 8237A