Одним із способів обміну даними з ВУ є обмін в режимі прямого доступу до пам'яті (ПДП). В цьому режимі обмін даними між ВУ і основною пам'яттю мікроЕОМ відбувається без участі процесора. Обміном в режимі ПДП керує не програма, яка виконується процесором, а електронні схеми, зовнішні по відношенню до процесора. Зазвичай схеми, що керують обміном в режимі ПДП, розміщуються в спеціальному контролері, який називається контролером прямого доступу до пам'яті.
Обмін даними в режимі ПДП дозволяє використовувати в мікроЕОМ швидкодіючі зовнішні запам'ятовуючі пристрої, такі, наприклад, як накопичувачі на жорстких магнітних дисках, оскільки ПДП може забезпечити час обміну одним байтом даних між пам'яттю і ВЗУ, рівне циклу звернення до пам'яті.
Існують два різновиди прямого доступу до пам'яті з "захопленням циклу". Найбільш простий спосіб організації ПДП полягає в тому, що для обміну використовуються ті машинні цикли процесора, в яких він не обмінюється даними з пам'яттю. У такі цикли контролер ПДП може обмінюватися даними з пам'яттю, не заважаючи роботі процесора. Однак виникає необхідність виділення таких циклів, щоб не сталося тимчасового перекриття обміну ПДП з операціями обміну, ініційованими процесором. У деяких процесорах формується спеціальний керуючий сигнал, який вказує цикли, в яких процесор не звертається до системного інтерфейсу. При використанні інших процесорів для виділення таких циклів необхідне застосування в контролерах ПДП спеціальних селектірующіх схем, що ускладнює їх конструкцію. Застосування розглянутого способу організації ПДП не знижує продуктивності мікроЕОМ, але при цьому обмін в режимі ПДП можливий лише у випадкові моменти часу одиночними байтами або словами.
Найбільш поширеним є ПДП з "захопленням циклу" і примусовим відключенням процесора від шин системного інтерфейсу. Для реалізації такого режиму ПДП системний інтерфейс мікроЕОМ доповнюється двома лініями для передачі керуючих сигналів "Вимога прямого доступу до пам'яті" (ТПДП) і "Надання прямого доступу до пам'яті" (ППДП).
Керуючий сигнал ТПДП формується контролером прямого доступу до пам'яті. Процесор, отримавши цей сигнал, припиняє виконання чергової команди, перш ніж вона закінчиться, видає на системний інтерфейс управляючий сигнал ППДП і відключається від шин системного інтерфейсу. З цього моменту всі шини системного інтерфейсу управляються контролером ПДП. Контролер ПДП, використовуючи шини системного інтерфейсу, здійснює обмін одним байтом або словом даних з пам'яттю мікроЕОМ і потім, знявши сигнал ТПДП, повертає управління системним інтерфейсом процесору. Як тільки контролер ПДП буде готовий до обміну наступним байтом, він знову "захоплює" цикл процесора і т. Д. У проміжках між сигналами ТПДП процесор продовжує виконувати команди програми. Тим самим виконання програми сповільнюється, але в меншій мірі, ніж при обміні в режимі переривань.
Блок-схема простого контролера ПДП, що забезпечує введення даних в пам'ять мікроЕОМ з ініціативи ВУ в режимі ПДП "Захоплення циклу", наведена на рис. 3.17.
Мал. 3.17. Контролер ПДП для введення даних з ВУ в режимі "Захоплення циклу" і відключенням процесора від шин системного інтерфейсу
На прикладі простого контролера ПДП ми розглянули тільки процес підготовки контролера і безпосередньо передачу даних в режимі ПДП. На практиці будь-який сеанс обміну даними з ВУ в режимі ПДП завжди ініціюється програмою, виконуваної процесором, і включає два наступних етапи.
1. На етапі підготовки ВУ до чергового сеансу обміну процесор в режимі програмно-керованого обміну опитує стан ВУ (перевіряє його готовність до обміну) і посилає в ВУ команди, що забезпечують підготовку ВУ до обміну. Така підготовка може зводитися, наприклад, до переміщення головок на необхідну доріжку в накопичувачі на жорсткому диску. Потім виконується завантаження регістрів контролера ПДП. На цьому підготовка до обміну в режимі ПДП завершується і процесор перемикається на виконання іншої програми.
2. Обмін даними в режимі ПДП починається після завершення підготовчих операцій в ВУ з ініціативи або ВУ, як це було розглянуто вище, або процесора. У цьому випадку контролер ПДП необхідно доповнити регістром стану і управління, вміст якого буде визначати режим роботи контролера ПДП. Один з розрядів цього регістра буде ініціювати обмін даними з ВУ. Завантаження інформації в регістр стану і управління контролера ПДП проводиться програмним шляхом.
Найбільш поширеним є обмін в режимі прямого доступу до пам'яті з блокуванням процесора. Він відрізняється від ПДП з "захопленням циклу" тим, що управління системним інтерфейсом передається контролеру ПДП нема на час обміну одним байтом, а на час обміну блоком даних. Такий режим ПДП використовується в тих випадках, коли час обміну одним байтом з ВУ можна порівняти з циклом системної шини.
У мікроЕОМ можна використовувати кілька ВУ, що працюють в режимі ПДП. Надання таким ВУ шин системного інтерфейсу для обміну даними проводиться на пріоритетній основі. Пріоритети ВУ реалізуються так само, як і при обміні даними в режимі переривання, але замість керуючих сигналів "Вимога переривання" і "Надання переривання" (рис. 18 Організація переривань в мікроЕОМ) використовуються сигнали "Вимога прямого доступу" і "Надання прямого доступу" , відповідно.