|
В начало
Контроллеры прямого доступа к памяти
(Тема)
Прямой доступ к памяти (ПДП) – создание прямого тракта передач данных от внешних
устройств к памяти или от памяти к внешним устройствам. В английской
терминологии это 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т следует загружать число, на
единицу меньшее размера блока). Этим заканчивается режим блочного обмена с ПДП. Базовые регистры адреса и
счета слов позволяют реализовать режим
автоинициализации канала. В них начальные адреса и размеры блоков
сохраняются неизменными и, если в конце ПДП вновь загрузить текущие регистры
теми же кодами, то можно вновь повторить вывод того же блока данных, что и в
предыдущем ПДП. Такой режим нужен, например, при управлении дисплеем, который
для поддержания на экране какого-либо изображения нуждается в повторении блока
данных с частотой в несколько десятков герц. |
|