МПС

Контроллеры прямого доступа к памяти (Тема)

 

Прямой доступ к памяти (ПДП) – создание прямого тракта передач данных от внешних устройств к памяти или от памяти к внешним устройствам. В английской терминологии это DMA Direct Memory Access. При обычном обмене передачи между ВУ и памятью требуют вначале принять данные от источника в процессор, а затем выдать их из процессора приемнику, т.е. реализуются за два командных цикла. При ПДП данные не проходят через процессор, и передача слова производится за один цикл. Для реализации ПДП разработаны специальные аппаратные средства, выпускаются БИС КПДП, способные благодаря программированию обслуживать ПДП с учетом конкретных требований различных систем.

Взаимодействие блоков микропроцессорной системы при ПДП показано на рисунке 48. Микропроцессор выполняет операцию программирования КПДП, настраивая его на определенный режим работы, и может читать состояние контроллера. Соответствующие связи показаны штриховой линией. При осуществлении ПДП микропроцессор отключен, а контроллер вырабатывает сигналы управления обменом для ВУ и ОЗУ. Тракт передачи данных связывает ВУ с ОЗУ непосредственно.

Возможны два вида ПДП - с блочными или одиночными передачами.

 

Рис. Схема взаимодействия блоков микропроцессорной системы при прямом доступе к памяти

 

 

В первом работа процессора останавливается на все время передачи блока данных, во втором передачи слов в режиме ПДП перемежаются с выполнением программы, и для передач ПДП выделяются отдельные такты машинных циклов, в которых процессор не использует системные шины. Каждый командный цикл начинается с машинного цикла Ml - выборки команды. В этом машинном цикле есть такт декодирования принятой процессором команды, в котором системные шины не используются. На это время системные шины можно отдать для ПДП и передать одно слово. Производительность системы может возрасти из-за параллелизма процессов обмена и обработки данных, благодаря тому, что ПДП будет для процессора "невидимым". Сам обмен с ПДП будет не быстрым, темп обмена нерегулярен, т.к. длительности циклов различных команд различны, и, кроме того, ПДП может и замедлить выполнение программы, если цикл ПДП не уложится в интервал, соответствующий такту процессора.

При непрерывной передаче массива данных скорость обмена ограничивается длительностью циклов ЗУ, быстродействием самого контроллера и скоростью выдачи/приема данных внешним устройством.

В отличие от процессов прерывания при ПДП, обмен выполняется без участия программы, поэтому содержимое рабочих регистров МП не нарушается и на вхождение в режим ПДП не требуется затрат времени (нет передачи в стек на хранение содержимого рабочих регистров МП). ПДП предоставляется по завершении текущего машинного цикла.

Структура и функции КПДП. Примером КПДП может служить БИС Intel 8237A (К580ВТ57), основные блоки которой показаны ниже.

 

 

Рис. Структура контроллера прямого доступа к памяти

 

Действия, выполняемые КПДП при блочных передачах, состоят в следующем:

-     прием сведений об области памяти, отведенной для блока данных, подлежащих передаче (начальный адрес и размер блока);

-     трансляция запроса на ПДП, исходящего от ВУ, в запрос ПДП для процессора с учетом маскирования и приоритетности запросов, поступающих на КПДП. Прием сигнала подтверждения ПДП, свидетельствующего о том, что процессор отключился от системных шин;

-     генерация адресов для ЗУ и сигналов управления для ЗУ и ВУ;

-     фиксация завершенности ПДП;

-     снятие запроса ПДП с соответствующего входа процессора и возвращение управления основной программе.

Возможности КПДП позволяют организовать обмен типа "память-память", т.е. решать задачу перемещения блока данных в адресном пространстве системы.

КПДП 8237А работает на частоте 3МГц, его модификации 8237А-4 и 8237А-5 на частотах 4 и 5МГц соответственно. Контроллер имеет 4 независимых канала и возможность каскадирования схем до любого числа каналов. В каждом из каналов контроллера размещено по пять регистров, а именно: два регистра адреса (базовый РCiб и текущий PCiт, где i - номер канала), два регистра счета слов (базовый РCiб и текущий PCiт) и регистр режима PPi. Адресные регистры и регистры счета слов шестнадцатиразрядные, следовательно, начальный адрес блока данных может располагаться в любом месте адресного пространства емкостью 64К, а максимальный размер блока также составляет 64Кбайт.

При программировании в оба адресных регистра загружается одно и то же значение адреса, а в оба регистра счета слов - одно и то же значение размера блока. При ПДП меняются состояния текущих регистров адреса и счета слов. Оба они работают в режиме счетчиков и при передаче очередного слова регистр адреса инкрементируется или декрементируется (в зависимости от программирования контроллера), а регистр счета слов декрементируется. Когда регистр-счетчик PCiт дойдет до нулевого состояния (перейдет от состояния 0000Н к состоянию FFFFH), выработается сигнал конца счета (т.е. в качестве начального значения в PCiт следует загружать число, на единицу меньшее размера блока). Этим заканчивается режим блочного обмена с ПДП.

Базовые регистры адреса и счета слов позволяют реализовать режим автоинициализации канала. В них начальные адреса и размеры блоков сохраняются неизменными и, если в конце ПДП вновь загрузить текущие регистры теми же кодами, то можно вновь повторить вывод того же блока данных, что и в предыдущем ПДП. Такой режим нужен, например, при управлении дисплеем, который для поддержания на экране какого-либо изображения нуждается в повторении блока данных с частотой в несколько десятков герц.