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