Информационные технологииStfw.Ru 🔍
🕛

Прямой доступ к памяти — DMA

Прямой доступ к памяти (Direct Memory Access, DMA) позволяет выполнять пересылку данных между регистрами устройств и памятью, минуя центральный процессор. Для устройств, использующих DMA, ра
Прямой доступ к памяти (Direct Memory Access, DMA) позволяет выполнять пересылку данных между регистрами устройств и памятью, минуя центральный процессор. Для устройств, использующих DMA, различают два типа доступа.
- Пассивный доступ, он же Slave DMA, - устройство пользуется общим контроллером DMA, расположенным на системной плате.
- Активный доступ, он же Bus Master DMA, - устройство само является ведущим на своей шине и способно генерировать обращение к памяти (как правило, системной). Реализация активного DMA зависит от типа шины расширения, к которой подключается устройство (см. главу 6). Примером устройств с активным DMA являются контроллеры АТА, расположенные на современных системных платах.
Процессор при обмене по DMA занят только инициализацией контроллера, которая сводится к записи в его регистры нескольких байт, задающих начальный адрес и размер пересылаемого блока памяти, направление и режим обмена. В самом обмене данных занят только контроллер DMA, память, к которой он обращается, и связующие их шины. Во время операций DMA процессор может продолжать работу, если выбранный режим обмена не занимает всей пропускной способности шин, используемых процессором в данный момент (шины памяти, шины PCI, через которые подключается ISA в современных компьютерах). Контроллер DMA можно считать простейшим сопроцессором ввода-вывода, разгружающим центральный процессор от рутинных операций обмена.
Обмен по DMA не всегда дает выигрыш в скорости обмена, в ряде случаев быстрее работает программированный ввод-вывод (РЮ). Однако РЮ занимает процессор полностью, а во время DMA процессор может заниматься полезной работой. Поскольку для инициализации контроллера DMA требуется выполнение ряда инструкций ввода-вывода, передача коротких блоков по каналу DMA нецелесообразна. Пассивный DMA реализуется стандартизованным контроллером, который первоначально был ориентирован на шину ISA. Для интерфейса ПУ каждый канал 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* О1 1 2 3 42 5 6 7
Стандартное XT MRFR - FDD HDD Отсутствуют
назначение дт - FDD - Каскад - -
Разрядность, байт 1 • 2 с четного адреса
Макс, размер блока 64Кбайта 128 Кбайт, четный
Граница блока Кратна 10OOh Кратна 2000h
Регистр страниц 8битА16-А23 7битА17-А23
Адреса регистров:
- страниц 087 083 081 082 08F 08В 089 087
- адреса 000 002 004 006 ОСО ОС4 ОС8 осе
- счетчика 001 003 005 007 ОС2 ОС6 ОСА ОСЕ
' Канал 0 в XT использовался для регенерации памяти (MRFR). 2 Канал 4 доступен только в PS/2 МСА.

16-битные каналы DMA 5-7 могут быть использованы интеллектуальными устройствами для прямого управления шиной ISA (bus mastering), при этом контроллер DMA фактически лишь играет роль арбитра шины.
Устройства, использующие стандартные каналы DMA, могут располагаться лишь в слотах ISA/EISA или на системной плате (контроллер НГМД, LPT-порт в режиме ECP wjm Fast Centonics, аудиокодек). Если эти устройства системной платы используют каналы DMA, то данные каналы становятся недоступными для абонентов шины ISA.
На время переходного периода, связанного с «изживанием» шины ISA, потребовалась возможность эмуляции каналов DMA для устройств шины PCI. Существует два механизма эмуляции каналов DMA: PC/PCI и DDMA. Механизм PC/PCI (см. п. 6.2.7) был разработан фирмой Intel для обеспечения возможности использования слотов ISA блокнотными ПК, подключаемыми к док-станции по шине PCI. Альтернативное решение - механизм DDMA (Distributed DMA - распределенный DMA) позволяет «расчленить» стандартный контроллер и отдельные его каналы эмулировать средствами карт PCI. Оба этих механизма реализуемы толь-ко как часть моста между первичной шиной PCI и шиной ISA, поэтому их поддержка может обеспечиваться (или не обеспечиваться) только на системной плате и разрешаться в CMOS Setup.

Также по теме:
Новые программы для Windows, Linux и Android.