Прямой доступ к памяти ПДП (по английской терминологии DMA – Direct Memory Access) – это создание прямого тракта передачи данных от внешних устройств ВУ к памяти или от памяти к ВУ. При обычном обмене требуется в начале данные принять от источника в процессор, а затем выдать их из процессора приёмнику, что выполняется за два командных цикла. При ПДП данные не проходят через микропроцессор, и передача их осуществляется за один цикл. ПДП особенно удобен при передаче данных в высоком темпе, например, при обмене между внешней памятью и ОЗУ. В режиме ПДП процессор отключается от системных шин и передаёт управлении ими контроллеру прямого доступа к памяти. КПДП выпускаются в виде БИС.
Взаимодействие блоков МПС показано на рисунке 4.3.1.
Рисунок 4.3.1 – Схема взаимодействия блоков МПС при ПДП
МП программирует КПДП, настраивая его на определённый режим работы и может читать его состояние. Соответствующие связи показаны штриховой линией. При ПДП МП отключен, а КПДП вырабатывает сигналы управления обменом для ОЗУ и внешними устройствами ВУ. ОЗУ и ВУ связаны непосредственно.
При ПДП обмен осуществляется без участия программы и на вхождение в режим ПДП, не требуется дополнительных затрат времени, таких как при прерываниях (передачи в стек на хранение содержимого рабочих регистров МП). Содержимое рабочих регистров МП при этом не нарушается, ПДП предоставляется по завершении текущего машинного цикла.
Возможны два вида прямого доступа к памяти.
При ПДП с блочными передачами работа МП на всё время передачи блока дан-ных останавливается. При этом скорость обмена ограничивается длительностью ИК-лов ЗУ, быстродействием КПДП и скоростью приёма/выдачи данных ВУ.
КПДП при блочных передачах выполняет следующие действия:
-принимает начальный адрес памяти для размещения блока данных и его размер;
-транслирует запрос, исходящий от ВУ на ПДП, в запрос КПДП для МП с учётом маскирования и приоритетности запросов, поступающих на КПДП;
-принимает сигнал подтверждения ПДП, то есть сигнала о том, что МП отключился системных шин;
-вырабатывает сигналы управления для ЗУ и ВУ и адреса для ЗУ;
-фиксирует завершение ПДП;
-снимает запрос с соответствующего входа МП.
В этом режиме КПДП позволяет организовать режим память-память и тем самым решить задачу перемещения блоков данных в адресном пространстве.
При ПДП с одиночными передачами передача данных перемежается выполнением
программы, а для передач ПДП выделяются отдельные такты машинных циклов,
в которых в процессор не использует системные шины СШ. Каждый командный
цикл начинается с машинного цикла М1 – выборки команды. В этом машинном цикле есть такт декодирования принятой в МП команды, в котором СШ не используются. На это время СШ можно отдать для ПДП и передать одно слово.
Производительность МПС может возрасти в следствие параллелизма процессов обмена и обработки данных. Обмен не будет быстрым, темп обмена не будет регулярным, а ПДП может и замедлить выполнение программы, если цикл ПДП не уложится в тактовый интервал процессора.
Структурная схема ИС КПДП К580ВТ57 приведена на рисунке 4.3.2
КПДП работает на частоте 3 МГц, имеет четыре независимых канала и возможность каскадирования схем до любого числа каналов.
В каждом из каналов КПДП размещено по пять регистров: два регистра адреса (базовый Раiб и текущий Раiт, где I – номер канала), два регистра счёта слов (базовый Рсiб и текущий Рсiт) и регистр режима Ррi. Адресные регистры и регистры счёта слов – 16-разрядные, следовательно начальный адрес блока данных может располагаться в любом месте адресного пространства 64 К, а максимальный размер блока может составлять 64 Кбайт.
При программировании в оба адресных регистра загружается одно и то же значение адреса, а в оба регистра счёта слов – одно и то же значение размера блока.
При ПДП регистры Раiт и Рсiт работают в режиме счётчиков, их состояния меняются и при передаче очередного слова содержимое регистра адреса уменьшается или увеличивается на 1 (в зависимости от программирования КПДП), содержимое реги-2
стра счёта слов уменьшается на 1. Когда регистр-счётчик слов обнулится, вырабатывается сигнал конца счёта и режим блочного обмена закончится.
Базовые регистры адреса и счёта слов позволяют реализовать режим автоинициализацииканала. В них начальные адреса и размеры блоков сохраняются неизменными и, если в конце ПДП вновь загрузить текущие регистры теми же кодами, то можно повторить вывод того же блока данных, что и в предыдущем ПДП.
Такой режим нужен, например, при управлении монитором, который для поддержания на экране какого-либо изображения нуждается в повторении блока данных с частотой несколько десятков герц.