устройствами внешней памяти и ОЗУ разработан специальный метод переда-
чи данных без участия процессора, получившего название прямого дос-
тупа к памяти (Direct Memory Access, DMA). Аппаратные средства реализа-
ции канала ПДП называются контроллером прямого доступа к памяти
(КПДП).
DMA-контроллер содержит несколько регистров, доступных центрально-
му процессору для чтения и записи. Обычно эти регистры задают порт (или
канал), который должен быть использован; направление переноса данных
(чтение/запись); единицу переноса (побайтно/пословно); число байтов, кото-
рое следует перенести; адрес.
Необходимо отметить, что контроллер ПДП используется не только
для передачи данных между ПУ и памятью, но и из памяти в память, и из ПУ
в ПУ.
В
идеальном случае режим ПДП совершенно не должен влиять на
действия процессора, но для этого потребуется сложный и дорогой
тракт в основную память вычислительной системы. Поэтому в большин-
стве систем используется временное разделение (мультиплексирование)
общей системной шины между процессором и КПДП.
Разработано две разновидности ПДП: режим без пропусков тактов
микропроцессора и режим с пропуском тактов микропроцессора.
В
первом режиме реализации прямой доступ осуществляется без участия
процессора (параллельно микропроцессору). Для этого используются те
интервалы машинных циклов, в течение которых микропроцессор не
обращается к основной памяти. Процессор (или дополнительная схема)
идентифицирует эти интервалы для КПДП специальным сигналом,
означающим доступность системной шины. Производительность процессора
в этом режиме не уменьшается, но для каждого типа процессора потре-
буется свой контроллер ПДП. С
другой стороны, сами передачи будут
носить нерегулярный характер ввиду отсутствия у некоторых команд этих
интервалов, что приведет к уменьшению скорости передачи данных в режи-
ме ПДП.
Во втором способе реализации КПДП полностью ″захватывает″ систем-
ную шину на время передачи, при этом процессор отключается от системной
шины и переходит в
режим холостого хода. Таким образом, передачи
ПДП осуществляются путем пропуска тактов процессора в выполняемой
программе. При выполнении передач ПДП содержимое внутренних регист-
ров процессора не модифицируются, поэтому его не нужно запоминать в
памяти, а затем восстанавливать, как при обработке прерываний. Выпол-
нение программы осуществляется сразу после окончания ПДП. Тем не
менее, в условиях интенсивных передач ПДП эффективная производи-
тельность процессора уменьшается.
Обычно блоками ПДП снабжаются сравнительно мощные модели
микроконтроллеров. В
основном ПДП используется для взаимодействия па-
мяти с устройствами ввода-вывода, которые могут создать большой поток
данных: сетевыми контроллерами, UART, ЦАП и АЦП.
Как правило, блок ПДП программисты встроенных систем, особенно
начинающие, стараются обходить стороной, считая его излишне сложным.
На самом деле, использование ПДП не является более сложным, чем,
например, использование системы прерываний, а эффект от применения
ПДП может разгрузить центральный процессор и увеличить производи-
тельность контроллера.
4.9 Средства понижения энергопотребления
Практически все современные микроконтроллеры имеют встроенные
средства понижения энергопотребления, позволяющие отключать не
используемые в данный момент блоки, понижать тактовую частоту процес-
сора и переходить в различные режимы сна.