В ходе выполнения МП системой рабочей программы нередко возникает необходимость обмена информацией между периферийными устройствами и ОЗУ. Такой обмен может осуществляться при посредничестве МП, который, прервав выполнение рабочей программы, в течение одного цикла принимает информацию от периферийного устройства (от ОЗУ), а в течение следующего цикла передает информацию в ОЗУ (в периферийное устройство).
Внутренние регистры команд, адресов и данных МП в этом случае выполняют роль промежуточного звена, на обмен с которым затрачивается время, равное, по крайней мере, двум циклам на каждое передаваемое слово. При передаче больших объемов информации это время существенно задерживает выполнение основной программы. Возможность исключить участие МП из процесса обмена между периферийными устройствами и ОЗУ позволяет сократить время обмена.
Такая возможность обеспечивается специальным устройством — контроллером прямого доступа к памяти (ПДП), который может быть реализован как в том же кристалле, что и МП, так и вне МП с помощью добавочных ИС, ряда специальных команд и небольшого количества дополнительных ячеек ОЗУ.
Периферийное устройство (ПУ), готовое к выводу информации (таким может быть, например, внешнее магнитное ЗУ), посылает сигнал запроса прерывания (ЗП) в контроллер ПДП, который по этому сигналу выбирает подпрограмму обслуживания прерываний и, остановив работу МП (сигнал ОСТ), подключает информационную Д и адресную А магистрали ко входу ОЗУ и выходу ПУ, разрешая ПУ обмен с ОЗУ (сигнал РО). За каждый цикл ОЗУ адресуется информационное слово с разрядностью, равной разрядности магистрали данных МП. Режим записи, соответствующий переносу данных из ПУ в ОЗУ, определяется сигналом записи 3.
Контроллер ПДП может, как правило, обслуживать обмен информацией с ОЗУ нескольких ПУ, сигналам ЗП которых присвоен различный по старшинству приоритет. Основными функциями контроллера ПДП, таким образом, следует считать:
- определение приоритета сигнала ЗП;
- прерывание рабочей программы, выполняемой МП;
- прерывание подпрограммы обслуживания обмена информацией ПУ с младшим приоритетом;
- выработка сигнала РО и адресация ПУ;
- определение режима записи/считывания;
- восстановление хода выполнения рабочей программы по окончании обмена.
Преимущества ПДП особенно существенны при выполнении программ, связанных с обработкой больших объемов информации по относительно коротким алгоритмам, когда время, затрачиваемое на обмен между ПУ и ОЗУ, велико по сравнению со временем обработки данных микропроцессором. В то же время в ряде случаев необходимости в ПДП практически нет, однако стремление разработчиков удовлетворить требованию универсальности использования привело к реализации ПДП у большинства МП второго и третьего поколений.